diff -Nru cairo-1.14.6/aclocal.m4 cairo-1.15.10/aclocal.m4 --- cairo-1.14.6/aclocal.m4 2015-12-09 20:41:42.000000000 +0000 +++ cairo-1.15.10/aclocal.m4 2017-12-11 21:03:09.000000000 +0000 @@ -1,6 +1,6 @@ -# generated automatically by aclocal 1.14.1 -*- Autoconf -*- +# generated automatically by aclocal 1.15 -*- Autoconf -*- -# Copyright (C) 1996-2013 Free Software Foundation, Inc. +# Copyright (C) 1996-2014 Free Software Foundation, Inc. # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -20,7 +20,7 @@ If you have problems, you may need to regenerate the build system entirely. To do so, use the procedure documented by the package, typically 'autoreconf'.])]) -# Copyright (C) 2002-2013 Free Software Foundation, Inc. +# Copyright (C) 2002-2014 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -32,10 +32,10 @@ # generated from the m4 files accompanying Automake X.Y. # (This private macro should not be called outside this file.) AC_DEFUN([AM_AUTOMAKE_VERSION], -[am__api_version='1.14' +[am__api_version='1.15' dnl Some users find AM_AUTOMAKE_VERSION and mistake it for a way to dnl require some minimum version. Point them to the right macro. -m4_if([$1], [1.14.1], [], +m4_if([$1], [1.15], [], [AC_FATAL([Do not call $0, use AM_INIT_AUTOMAKE([$1]).])])dnl ]) @@ -51,12 +51,12 @@ # Call AM_AUTOMAKE_VERSION and AM_AUTOMAKE_VERSION so they can be traced. # This function is AC_REQUIREd by AM_INIT_AUTOMAKE. AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION], -[AM_AUTOMAKE_VERSION([1.14.1])dnl +[AM_AUTOMAKE_VERSION([1.15])dnl m4_ifndef([AC_AUTOCONF_VERSION], [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. +# Copyright (C) 2011-2014 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -118,7 +118,7 @@ # AM_AUX_DIR_EXPAND -*- Autoconf -*- -# Copyright (C) 2001-2013 Free Software Foundation, Inc. +# Copyright (C) 2001-2014 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -163,15 +163,14 @@ # configured tree to be moved without reconfiguration. AC_DEFUN([AM_AUX_DIR_EXPAND], -[dnl Rely on autoconf to set up CDPATH properly. -AC_PREREQ([2.50])dnl -# expand $ac_aux_dir to an absolute path -am_aux_dir=`cd $ac_aux_dir && pwd` +[AC_REQUIRE([AC_CONFIG_AUX_DIR_DEFAULT])dnl +# Expand $ac_aux_dir to an absolute path. +am_aux_dir=`cd "$ac_aux_dir" && pwd` ]) # AM_CONDITIONAL -*- Autoconf -*- -# Copyright (C) 1997-2013 Free Software Foundation, Inc. +# Copyright (C) 1997-2014 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -202,7 +201,7 @@ Usually this means the macro was only invoked conditionally.]]) fi])]) -# Copyright (C) 1999-2013 Free Software Foundation, Inc. +# Copyright (C) 1999-2014 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -393,7 +392,7 @@ # Generate code to set up dependency tracking. -*- Autoconf -*- -# Copyright (C) 1999-2013 Free Software Foundation, Inc. +# Copyright (C) 1999-2014 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -469,7 +468,7 @@ # Do all the work for Automake. -*- Autoconf -*- -# Copyright (C) 1996-2013 Free Software Foundation, Inc. +# Copyright (C) 1996-2014 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -559,8 +558,8 @@ # # AC_SUBST([mkdir_p], ['$(MKDIR_P)']) -# We need awk for the "check" target. The system "awk" is bad on -# some platforms. +# We need awk for the "check" target (and possibly the TAP driver). The +# system "awk" is bad on some platforms. AC_REQUIRE([AC_PROG_AWK])dnl AC_REQUIRE([AC_PROG_MAKE_SET])dnl AC_REQUIRE([AM_SET_LEADING_DOT])dnl @@ -633,7 +632,11 @@ END AC_MSG_ERROR([Your 'rm' program is bad, sorry.]) fi -fi]) +fi +dnl The trailing newline in this macro's definition is deliberate, for +dnl backward compatibility and to allow trailing 'dnl'-style comments +dnl after the AM_INIT_AUTOMAKE invocation. See automake bug#16841. +]) dnl Hook into '_AC_COMPILER_EXEEXT' early to learn its expansion. Do not dnl add the conditional right here, as _AC_COMPILER_EXEEXT may be further @@ -662,7 +665,7 @@ done echo "timestamp for $_am_arg" >`AS_DIRNAME(["$_am_arg"])`/stamp-h[]$_am_stamp_count]) -# Copyright (C) 2001-2013 Free Software Foundation, Inc. +# Copyright (C) 2001-2014 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -673,7 +676,7 @@ # Define $install_sh. AC_DEFUN([AM_PROG_INSTALL_SH], [AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl -if test x"${install_sh}" != xset; then +if test x"${install_sh+set}" != xset; then case $am_aux_dir in *\ * | *\ *) install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;; @@ -683,7 +686,7 @@ fi AC_SUBST([install_sh])]) -# Copyright (C) 2003-2013 Free Software Foundation, Inc. +# Copyright (C) 2003-2014 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -704,7 +707,7 @@ # Check to see how 'make' treats includes. -*- Autoconf -*- -# Copyright (C) 2001-2013 Free Software Foundation, Inc. +# Copyright (C) 2001-2014 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -754,7 +757,7 @@ # Fake the existence of programs that GNU maintainers use. -*- Autoconf -*- -# Copyright (C) 1997-2013 Free Software Foundation, Inc. +# Copyright (C) 1997-2014 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -793,7 +796,7 @@ # Helper functions for option handling. -*- Autoconf -*- -# Copyright (C) 2001-2013 Free Software Foundation, Inc. +# Copyright (C) 2001-2014 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -822,7 +825,7 @@ AC_DEFUN([_AM_IF_OPTION], [m4_ifset(_AM_MANGLE_OPTION([$1]), [$2], [$3])]) -# Copyright (C) 1999-2013 Free Software Foundation, Inc. +# Copyright (C) 1999-2014 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -869,7 +872,7 @@ # For backward compatibility. AC_DEFUN_ONCE([AM_PROG_CC_C_O], [AC_REQUIRE([AC_PROG_CC])]) -# Copyright (C) 2001-2013 Free Software Foundation, Inc. +# Copyright (C) 2001-2014 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -888,7 +891,7 @@ # Check to make sure that the build environment is sane. -*- Autoconf -*- -# Copyright (C) 1996-2013 Free Software Foundation, Inc. +# Copyright (C) 1996-2014 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -969,7 +972,7 @@ rm -f conftest.file ]) -# Copyright (C) 2009-2013 Free Software Foundation, Inc. +# Copyright (C) 2009-2014 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -1029,7 +1032,7 @@ _AM_SUBST_NOTMAKE([AM_BACKSLASH])dnl ]) -# Copyright (C) 2001-2013 Free Software Foundation, Inc. +# Copyright (C) 2001-2014 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -1057,7 +1060,7 @@ INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s" AC_SUBST([INSTALL_STRIP_PROGRAM])]) -# Copyright (C) 2006-2013 Free Software Foundation, Inc. +# Copyright (C) 2006-2014 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -1076,7 +1079,7 @@ # Check how to create a tarball. -*- Autoconf -*- -# Copyright (C) 2004-2013 Free Software Foundation, Inc. +# Copyright (C) 2004-2014 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, diff -Nru cairo-1.14.6/autogen.sh cairo-1.15.10/autogen.sh --- cairo-1.14.6/autogen.sh 2015-10-27 21:04:21.000000000 +0000 +++ cairo-1.15.10/autogen.sh 2017-12-07 02:13:45.000000000 +0000 @@ -9,7 +9,7 @@ AUTORECONF=`which autoreconf` if test -z $AUTORECONF; then - echo "*** No autoreconf found, please intall it ***" + echo "*** No autoreconf found, please install it ***" exit 1 fi diff -Nru cairo-1.14.6/boilerplate/cairo-boilerplate.c cairo-1.15.10/boilerplate/cairo-boilerplate.c --- cairo-1.14.6/boilerplate/cairo-boilerplate.c 2015-10-27 21:04:22.000000000 +0000 +++ cairo-1.15.10/boilerplate/cairo-boilerplate.c 2017-12-07 02:14:36.000000000 +0000 @@ -42,6 +42,7 @@ #undef CAIRO_VERSION_H #include "../cairo-version.h" +#include #include #include #include @@ -976,7 +977,8 @@ cairo_boilerplate_image_surface_create_from_ppm_stream (FILE *file) { char format; - int width, height, stride; + int width, height; + ptrdiff_t stride; int x, y; unsigned char *data; cairo_surface_t *image = NULL; diff -Nru cairo-1.14.6/boilerplate/cairo-boilerplate-egl.c cairo-1.15.10/boilerplate/cairo-boilerplate-egl.c --- cairo-1.14.6/boilerplate/cairo-boilerplate-egl.c 2015-10-27 21:04:22.000000000 +0000 +++ cairo-1.15.10/boilerplate/cairo-boilerplate-egl.c 2017-12-07 02:14:36.000000000 +0000 @@ -33,10 +33,13 @@ #include "cairo-boilerplate-private.h" #include -#if CAIRO_HAS_GL_SURFACE -#include +#if CAIRO_HAS_GLESV3_SURFACE +#include +#include #elif CAIRO_HAS_GLESV2_SURFACE #include +#elif CAIRO_HAS_GL_SURFACE +#include #endif static const cairo_user_data_key_t gl_closure_key; @@ -85,15 +88,19 @@ 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, +#if CAIRO_HAS_GLESV3_SURFACE + EGL_RENDERABLE_TYPE, EGL_OPENGL_ES3_BIT_KHR, #elif CAIRO_HAS_GLESV2_SURFACE EGL_RENDERABLE_TYPE, EGL_OPENGL_ES2_BIT, +#elif CAIRO_HAS_GL_SURFACE + EGL_RENDERABLE_TYPE, EGL_OPENGL_BIT, #endif EGL_NONE }; const EGLint ctx_attribs[] = { -#if CAIRO_HAS_GLESV2_SURFACE +#if CAIRO_HAS_GLESV3_SURFACE + EGL_CONTEXT_CLIENT_VERSION, 3, +#elif CAIRO_HAS_GLESV2_SURFACE EGL_CONTEXT_CLIENT_VERSION, 2, #endif EGL_NONE @@ -110,15 +117,22 @@ } eglChooseConfig (gltc->dpy, config_attribs, &config, 1, &numConfigs); +#if CAIRO_HAS_GLESV3_SURFACE && CAIRO_HAS_GLESV2_SURFACE + if (numConfigs == 0) { + /* retry with ES2_BIT */ + config_attribs[11] = ES2_BIT; /* FIXME: Ick */ + eglChooseConfig (gltc->dpy, config_attribs, &config, 1, &numConfigs); + } +#endif if (numConfigs == 0) { free (gltc); return NULL; } -#if CAIRO_HAS_GL_SURFACE - eglBindAPI (EGL_OPENGL_API); -#elif CAIRO_HAS_GLESV2_SURFACE +#if CAIRO_HAS_GLESV3_SURFACE || CAIRO_HAS_GLESV2_SURFACE eglBindAPI (EGL_OPENGL_ES_API); +#elif CAIRO_HAS_GL_SURFACE + eglBindAPI (EGL_OPENGL_API); #endif gltc->ctx = eglCreateContext (gltc->dpy, config, EGL_NO_CONTEXT, diff -Nru cairo-1.14.6/boilerplate/cairo-boilerplate-pdf.c cairo-1.15.10/boilerplate/cairo-boilerplate-pdf.c --- cairo-1.14.6/boilerplate/cairo-boilerplate-pdf.c 2015-10-27 21:04:22.000000000 +0000 +++ cairo-1.15.10/boilerplate/cairo-boilerplate-pdf.c 2017-12-07 02:14:36.000000000 +0000 @@ -84,6 +84,7 @@ if (cairo_surface_status (surface)) goto CLEANUP_FILENAME; + cairo_pdf_surface_set_metadata (surface, CAIRO_PDF_METADATA_CREATE_DATE, NULL); cairo_surface_set_fallback_resolution (surface, 72., 72.); if (content == CAIRO_CONTENT_COLOR) { diff -Nru cairo-1.14.6/boilerplate/cairo-boilerplate-win32.c cairo-1.15.10/boilerplate/cairo-boilerplate-win32.c --- cairo-1.14.6/boilerplate/cairo-boilerplate-win32.c 2015-12-09 19:02:43.000000000 +0000 +++ cairo-1.15.10/boilerplate/cairo-boilerplate-win32.c 2017-12-07 02:14:36.000000000 +0000 @@ -28,15 +28,194 @@ #include +#include +#include + +static const cairo_user_data_key_t win32_closure_key; + +typedef struct _win32_target_closure { + HWND wnd; + HDC dc; + ATOM bpl_atom; + cairo_surface_t *surface; +} win32_target_closure_t; + +static void +_cairo_boilerplate_win32_cleanup_window_surface (void *closure) +{ + win32_target_closure_t *win32tc = closure; + + if (win32tc != NULL) + { + if (win32tc->wnd != NULL && + ReleaseDC (win32tc->wnd, win32tc->dc) != 1) + fprintf (stderr, + "Failed to release DC of a test window when cleaning up.\n"); + if (win32tc->wnd != NULL && + DestroyWindow (win32tc->wnd) == 0) + fprintf (stderr, + "Failed to destroy a test window when cleaning up, GLE is %lu.\n", + GetLastError ()); + if (win32tc->bpl_atom != 0 && + UnregisterClassA ((LPCSTR) MAKELPARAM (win32tc->bpl_atom, 0), GetModuleHandle (NULL)) == 0 && + GetLastError () != ERROR_CLASS_DOES_NOT_EXIST) + fprintf (stderr, + "Failed to unregister boilerplate window class, GLE is %lu.\n", + GetLastError ()); + + free (win32tc); + } +} + +static win32_target_closure_t * +_cairo_boilerplate_win32_create_window (int width, + int height) +{ + WNDCLASSEXA wincl; + win32_target_closure_t *win32tc; + LPCSTR window_class_name; + + ZeroMemory (&wincl, sizeof (WNDCLASSEXA)); + wincl.cbSize = sizeof (WNDCLASSEXA); + wincl.hInstance = GetModuleHandle (0); + wincl.lpszClassName = "cairo_boilerplate_win32_dummy"; + wincl.lpfnWndProc = DefWindowProcA; + wincl.style = CS_OWNDC; + + win32tc = calloc (1, sizeof (win32_target_closure_t)); + + if (win32tc == NULL) + { + int error = errno; + fprintf (stderr, "Ran out of memory: %d.\n", error); + return NULL; + } + + ZeroMemory (win32tc, sizeof (win32_target_closure_t)); + + win32tc->bpl_atom = RegisterClassExA (&wincl); + + if (win32tc->bpl_atom == 0 && GetLastError () != ERROR_CLASS_ALREADY_EXISTS) + { + fprintf (stderr, + "Failed to register a boilerplate window class, GLE is %lu.\n", + GetLastError ()); + _cairo_boilerplate_win32_cleanup_window_surface (win32tc); + return NULL; + } + + if (win32tc->bpl_atom == 0) + window_class_name = wincl.lpszClassName; + else + window_class_name = (LPCSTR) MAKELPARAM (win32tc->bpl_atom, 0); + + win32tc->wnd = CreateWindowExA (WS_EX_TOOLWINDOW, + window_class_name, + 0, + WS_POPUP, + 0, + 0, + width, + height, + 0, + 0, + 0, + 0); + + if (win32tc->wnd == NULL) + { + fprintf (stderr, + "Failed to create a test window, GLE is %lu.\n", + GetLastError ()); + _cairo_boilerplate_win32_cleanup_window_surface (win32tc); + return NULL; + } + + win32tc->dc = GetDC (win32tc->wnd); + + if (win32tc->dc == NULL) + { + fprintf (stderr, "Failed to get test window DC.\n"); + _cairo_boilerplate_win32_cleanup_window_surface (win32tc); + return NULL; + } + + SetWindowPos (win32tc->wnd, + HWND_BOTTOM, + INT_MIN, + INT_MIN, + width, + height, + SWP_NOACTIVATE | SWP_SHOWWINDOW); + + return win32tc; +} + +static cairo_surface_t * +_cairo_boilerplate_win32_create_window_surface (const char *name, + cairo_content_t content, + double width, + double height, + double max_width, + double max_height, + cairo_boilerplate_mode_t mode, + void **closure) +{ + win32_target_closure_t *win32tc; + cairo_surface_t *surface; + cairo_format_t format; + cairo_status_t status; + + win32tc = _cairo_boilerplate_win32_create_window (width, height); + + if (win32tc == NULL) + return NULL; + + format = cairo_boilerplate_format_from_content (content); + + surface = cairo_win32_surface_create_with_format (win32tc->dc, format); + + win32tc->surface = surface; + + status = cairo_surface_status (surface); + + if (status != CAIRO_STATUS_SUCCESS) + { + fprintf (stderr, + "Failed to create the test surface: %s [%d].\n", + cairo_status_to_string (status), status); + _cairo_boilerplate_win32_cleanup_window_surface (win32tc); + return NULL; + } + + status = cairo_surface_set_user_data (surface, &win32_closure_key, win32tc, NULL); + + if (status != CAIRO_STATUS_SUCCESS) + { + fprintf (stderr, + "Failed to set surface userdata: %s [%d].\n", + cairo_status_to_string (status), status); + + cairo_surface_destroy (surface); + _cairo_boilerplate_win32_cleanup_window_surface (win32tc); + + return NULL; + } + + *closure = win32tc; + + return surface; +} + static cairo_surface_t * -_cairo_boilerplate_win32_create_surface (const char *name, - cairo_content_t content, - double width, - double height, - double max_width, - double max_height, - cairo_boilerplate_mode_t mode, - void **closure) +_cairo_boilerplate_win32_create_dib_surface (const char *name, + cairo_content_t content, + double width, + double height, + double max_width, + double max_height, + cairo_boilerplate_mode_t mode, + void **closure) { cairo_format_t format; @@ -52,12 +231,16 @@ "win32", "win32", NULL, NULL, CAIRO_SURFACE_TYPE_WIN32, CAIRO_CONTENT_COLOR, 0, "cairo_win32_surface_create_with_dib", - _cairo_boilerplate_win32_create_surface, + _cairo_boilerplate_win32_create_dib_surface, cairo_surface_create_similar, - NULL, NULL, + NULL, + NULL, _cairo_boilerplate_get_image_surface, cairo_surface_write_to_png, - NULL, NULL, NULL, TRUE, FALSE, FALSE + NULL, + NULL, + NULL, + TRUE, FALSE, FALSE }, /* Testing the win32 surface isn't interesting, since for * ARGB images it just chains to the image backend @@ -66,12 +249,46 @@ "win32", "win32", NULL, NULL, CAIRO_SURFACE_TYPE_WIN32, CAIRO_CONTENT_COLOR_ALPHA, 0, "cairo_win32_surface_create_with_dib", - _cairo_boilerplate_win32_create_surface, + _cairo_boilerplate_win32_create_dib_surface, + cairo_surface_create_similar, + NULL, + NULL, + _cairo_boilerplate_get_image_surface, + cairo_surface_write_to_png, + NULL, + NULL, + NULL, + FALSE, FALSE, FALSE + }, + { + "win32-window-color", "win32", NULL, NULL, + CAIRO_SURFACE_TYPE_WIN32, CAIRO_CONTENT_COLOR, 1, + "cairo_win32_surface_create", + _cairo_boilerplate_win32_create_window_surface, + cairo_surface_create_similar, + NULL, + NULL, + _cairo_boilerplate_get_image_surface, + cairo_surface_write_to_png, + _cairo_boilerplate_win32_cleanup_window_surface, + NULL, + NULL, + FALSE, FALSE, FALSE + }, + { + "win32-window-coloralpha", "win32", NULL, NULL, + CAIRO_SURFACE_TYPE_WIN32, CAIRO_CONTENT_COLOR_ALPHA, 1, + "cairo_win32_surface_create_with_format", + _cairo_boilerplate_win32_create_window_surface, cairo_surface_create_similar, - NULL, NULL, + NULL, + NULL, _cairo_boilerplate_get_image_surface, cairo_surface_write_to_png, - NULL, NULL, NULL, FALSE, FALSE, FALSE + _cairo_boilerplate_win32_cleanup_window_surface, + NULL, + NULL, + FALSE, FALSE, FALSE }, }; CAIRO_BOILERPLATE (win32, targets) diff -Nru cairo-1.14.6/boilerplate/Makefile.am.features cairo-1.15.10/boilerplate/Makefile.am.features --- cairo-1.14.6/boilerplate/Makefile.am.features 2015-12-09 19:05:26.000000000 +0000 +++ cairo-1.15.10/boilerplate/Makefile.am.features 2017-12-07 02:15:43.000000000 +0000 @@ -243,6 +243,18 @@ enabled_cairo_boilerplate_sources += $(cairo_boilerplate_glesv2_sources) endif +unsupported_cairo_boilerplate_headers += $(cairo_boilerplate_glesv3_headers) +all_cairo_boilerplate_headers += $(cairo_boilerplate_glesv3_headers) +all_cairo_boilerplate_private += $(cairo_boilerplate_glesv3_private) +all_cairo_boilerplate_cxx_sources += $(cairo_boilerplate_glesv3_cxx_sources) +all_cairo_boilerplate_sources += $(cairo_boilerplate_glesv3_sources) +if CAIRO_HAS_GLESV3_SURFACE +enabled_cairo_boilerplate_headers += $(cairo_boilerplate_glesv3_headers) +enabled_cairo_boilerplate_private += $(cairo_boilerplate_glesv3_private) +enabled_cairo_boilerplate_cxx_sources += $(cairo_boilerplate_glesv3_cxx_sources) +enabled_cairo_boilerplate_sources += $(cairo_boilerplate_glesv3_sources) +endif + unsupported_cairo_boilerplate_headers += $(cairo_boilerplate_cogl_headers) all_cairo_boilerplate_headers += $(cairo_boilerplate_cogl_headers) all_cairo_boilerplate_private += $(cairo_boilerplate_cogl_private) diff -Nru cairo-1.14.6/boilerplate/Makefile.in cairo-1.15.10/boilerplate/Makefile.in --- cairo-1.14.6/boilerplate/Makefile.in 2015-12-09 20:41:43.000000000 +0000 +++ cairo-1.15.10/boilerplate/Makefile.in 2017-12-11 21:03:10.000000000 +0000 @@ -1,7 +1,7 @@ -# Makefile.in generated by automake 1.14.1 from Makefile.am. +# Makefile.in generated by automake 1.15 from Makefile.am. # @configure_input@ -# Copyright (C) 1994-2013 Free Software Foundation, Inc. +# Copyright (C) 1994-2014 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -24,7 +24,17 @@ # but for boilerplate. Unlike that file, there are no special headers. # VPATH = @srcdir@ -am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' +am__is_gnu_make = { \ + if test -z '$(MAKELEVEL)'; then \ + false; \ + elif test -n '$(MAKE_HOST)'; then \ + true; \ + elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ + true; \ + else \ + false; \ + fi; \ +} am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ @@ -87,12 +97,6 @@ POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ -DIST_COMMON = $(top_srcdir)/build/Makefile.am.common \ - $(srcdir)/Makefile.am.features \ - $(top_srcdir)/boilerplate/Makefile.sources \ - $(srcdir)/Makefile.in $(srcdir)/Makefile.am \ - $(top_srcdir)/build/depcomp $(top_srcdir)/build/test-driver \ - README EXTRA_PROGRAMS = check_PROGRAMS = check-link$(EXEEXT) @CAIRO_HAS_XLIB_SURFACE_TRUE@am__append_1 = $(cairo_boilerplate_xlib_headers) @@ -171,84 +175,88 @@ @CAIRO_HAS_GLESV2_SURFACE_TRUE@am__append_74 = $(cairo_boilerplate_glesv2_private) @CAIRO_HAS_GLESV2_SURFACE_TRUE@am__append_75 = $(cairo_boilerplate_glesv2_cxx_sources) @CAIRO_HAS_GLESV2_SURFACE_TRUE@am__append_76 = $(cairo_boilerplate_glesv2_sources) -@CAIRO_HAS_COGL_SURFACE_TRUE@am__append_77 = $(cairo_boilerplate_cogl_headers) -@CAIRO_HAS_COGL_SURFACE_TRUE@am__append_78 = $(cairo_boilerplate_cogl_private) -@CAIRO_HAS_COGL_SURFACE_TRUE@am__append_79 = $(cairo_boilerplate_cogl_cxx_sources) -@CAIRO_HAS_COGL_SURFACE_TRUE@am__append_80 = $(cairo_boilerplate_cogl_sources) -@CAIRO_HAS_DIRECTFB_SURFACE_TRUE@am__append_81 = $(cairo_boilerplate_directfb_headers) -@CAIRO_HAS_DIRECTFB_SURFACE_TRUE@am__append_82 = $(cairo_boilerplate_directfb_private) -@CAIRO_HAS_DIRECTFB_SURFACE_TRUE@am__append_83 = $(cairo_boilerplate_directfb_cxx_sources) -@CAIRO_HAS_DIRECTFB_SURFACE_TRUE@am__append_84 = $(cairo_boilerplate_directfb_sources) -@CAIRO_HAS_VG_SURFACE_TRUE@am__append_85 = $(cairo_boilerplate_vg_headers) -@CAIRO_HAS_VG_SURFACE_TRUE@am__append_86 = $(cairo_boilerplate_vg_private) -@CAIRO_HAS_VG_SURFACE_TRUE@am__append_87 = $(cairo_boilerplate_vg_cxx_sources) -@CAIRO_HAS_VG_SURFACE_TRUE@am__append_88 = $(cairo_boilerplate_vg_sources) -@CAIRO_HAS_EGL_FUNCTIONS_TRUE@am__append_89 = $(cairo_boilerplate_egl_headers) -@CAIRO_HAS_EGL_FUNCTIONS_TRUE@am__append_90 = $(cairo_boilerplate_egl_private) -@CAIRO_HAS_EGL_FUNCTIONS_TRUE@am__append_91 = $(cairo_boilerplate_egl_cxx_sources) -@CAIRO_HAS_EGL_FUNCTIONS_TRUE@am__append_92 = $(cairo_boilerplate_egl_sources) -@CAIRO_HAS_GLX_FUNCTIONS_TRUE@am__append_93 = $(cairo_boilerplate_glx_headers) -@CAIRO_HAS_GLX_FUNCTIONS_TRUE@am__append_94 = $(cairo_boilerplate_glx_private) -@CAIRO_HAS_GLX_FUNCTIONS_TRUE@am__append_95 = $(cairo_boilerplate_glx_cxx_sources) -@CAIRO_HAS_GLX_FUNCTIONS_TRUE@am__append_96 = $(cairo_boilerplate_glx_sources) -@CAIRO_HAS_WGL_FUNCTIONS_TRUE@am__append_97 = $(cairo_boilerplate_wgl_headers) -@CAIRO_HAS_WGL_FUNCTIONS_TRUE@am__append_98 = $(cairo_boilerplate_wgl_private) -@CAIRO_HAS_WGL_FUNCTIONS_TRUE@am__append_99 = $(cairo_boilerplate_wgl_cxx_sources) -@CAIRO_HAS_WGL_FUNCTIONS_TRUE@am__append_100 = $(cairo_boilerplate_wgl_sources) -@CAIRO_HAS_SCRIPT_SURFACE_TRUE@am__append_101 = $(cairo_boilerplate_script_headers) -@CAIRO_HAS_SCRIPT_SURFACE_TRUE@am__append_102 = $(cairo_boilerplate_script_private) -@CAIRO_HAS_SCRIPT_SURFACE_TRUE@am__append_103 = $(cairo_boilerplate_script_cxx_sources) -@CAIRO_HAS_SCRIPT_SURFACE_TRUE@am__append_104 = $(cairo_boilerplate_script_sources) -@CAIRO_HAS_FT_FONT_TRUE@am__append_105 = $(cairo_boilerplate_ft_headers) -@CAIRO_HAS_FT_FONT_TRUE@am__append_106 = $(cairo_boilerplate_ft_private) -@CAIRO_HAS_FT_FONT_TRUE@am__append_107 = $(cairo_boilerplate_ft_cxx_sources) -@CAIRO_HAS_FT_FONT_TRUE@am__append_108 = $(cairo_boilerplate_ft_sources) -@CAIRO_HAS_FC_FONT_TRUE@am__append_109 = $(cairo_boilerplate_fc_headers) -@CAIRO_HAS_FC_FONT_TRUE@am__append_110 = $(cairo_boilerplate_fc_private) -@CAIRO_HAS_FC_FONT_TRUE@am__append_111 = $(cairo_boilerplate_fc_cxx_sources) -@CAIRO_HAS_FC_FONT_TRUE@am__append_112 = $(cairo_boilerplate_fc_sources) -@CAIRO_HAS_PS_SURFACE_TRUE@am__append_113 = $(cairo_boilerplate_ps_headers) -@CAIRO_HAS_PS_SURFACE_TRUE@am__append_114 = $(cairo_boilerplate_ps_private) -@CAIRO_HAS_PS_SURFACE_TRUE@am__append_115 = $(cairo_boilerplate_ps_cxx_sources) -@CAIRO_HAS_PS_SURFACE_TRUE@am__append_116 = $(cairo_boilerplate_ps_sources) -@CAIRO_HAS_PDF_SURFACE_TRUE@am__append_117 = $(cairo_boilerplate_pdf_headers) -@CAIRO_HAS_PDF_SURFACE_TRUE@am__append_118 = $(cairo_boilerplate_pdf_private) -@CAIRO_HAS_PDF_SURFACE_TRUE@am__append_119 = $(cairo_boilerplate_pdf_cxx_sources) -@CAIRO_HAS_PDF_SURFACE_TRUE@am__append_120 = $(cairo_boilerplate_pdf_sources) -@CAIRO_HAS_SVG_SURFACE_TRUE@am__append_121 = $(cairo_boilerplate_svg_headers) -@CAIRO_HAS_SVG_SURFACE_TRUE@am__append_122 = $(cairo_boilerplate_svg_private) -@CAIRO_HAS_SVG_SURFACE_TRUE@am__append_123 = $(cairo_boilerplate_svg_cxx_sources) -@CAIRO_HAS_SVG_SURFACE_TRUE@am__append_124 = $(cairo_boilerplate_svg_sources) -@CAIRO_HAS_TEST_SURFACES_TRUE@am__append_125 = $(cairo_boilerplate_test_surfaces_private) $(cairo_boilerplate_test_surfaces_headers) -@CAIRO_HAS_TEST_SURFACES_TRUE@am__append_126 = $(cairo_boilerplate_test_surfaces_cxx_sources) -@CAIRO_HAS_TEST_SURFACES_TRUE@am__append_127 = $(cairo_boilerplate_test_surfaces_sources) -@CAIRO_HAS_TEE_SURFACE_TRUE@am__append_128 = $(cairo_boilerplate_tee_headers) -@CAIRO_HAS_TEE_SURFACE_TRUE@am__append_129 = $(cairo_boilerplate_tee_private) -@CAIRO_HAS_TEE_SURFACE_TRUE@am__append_130 = $(cairo_boilerplate_tee_cxx_sources) -@CAIRO_HAS_TEE_SURFACE_TRUE@am__append_131 = $(cairo_boilerplate_tee_sources) -@CAIRO_HAS_XML_SURFACE_TRUE@am__append_132 = $(cairo_boilerplate_xml_headers) -@CAIRO_HAS_XML_SURFACE_TRUE@am__append_133 = $(cairo_boilerplate_xml_private) -@CAIRO_HAS_XML_SURFACE_TRUE@am__append_134 = $(cairo_boilerplate_xml_cxx_sources) -@CAIRO_HAS_XML_SURFACE_TRUE@am__append_135 = $(cairo_boilerplate_xml_sources) -@CAIRO_HAS_PTHREAD_TRUE@am__append_136 = $(cairo_boilerplate_pthread_private) $(cairo_boilerplate_pthread_headers) -@CAIRO_HAS_PTHREAD_TRUE@am__append_137 = $(cairo_boilerplate_pthread_cxx_sources) -@CAIRO_HAS_PTHREAD_TRUE@am__append_138 = $(cairo_boilerplate_pthread_sources) -@CAIRO_HAS_GOBJECT_FUNCTIONS_TRUE@am__append_139 = $(cairo_boilerplate_gobject_headers) -@CAIRO_HAS_GOBJECT_FUNCTIONS_TRUE@am__append_140 = $(cairo_boilerplate_gobject_private) -@CAIRO_HAS_GOBJECT_FUNCTIONS_TRUE@am__append_141 = $(cairo_boilerplate_gobject_cxx_sources) -@CAIRO_HAS_GOBJECT_FUNCTIONS_TRUE@am__append_142 = $(cairo_boilerplate_gobject_sources) -@CAIRO_HAS_TRACE_TRUE@am__append_143 = $(cairo_boilerplate_trace_private) $(cairo_boilerplate_trace_headers) -@CAIRO_HAS_TRACE_TRUE@am__append_144 = $(cairo_boilerplate_trace_cxx_sources) -@CAIRO_HAS_TRACE_TRUE@am__append_145 = $(cairo_boilerplate_trace_sources) -@CAIRO_HAS_INTERPRETER_TRUE@am__append_146 = $(cairo_boilerplate_interpreter_private) $(cairo_boilerplate_interpreter_headers) -@CAIRO_HAS_INTERPRETER_TRUE@am__append_147 = $(cairo_boilerplate_interpreter_cxx_sources) -@CAIRO_HAS_INTERPRETER_TRUE@am__append_148 = $(cairo_boilerplate_interpreter_sources) -@CAIRO_HAS_SYMBOL_LOOKUP_TRUE@am__append_149 = $(cairo_boilerplate_symbol_lookup_private) $(cairo_boilerplate_symbol_lookup_headers) -@CAIRO_HAS_SYMBOL_LOOKUP_TRUE@am__append_150 = $(cairo_boilerplate_symbol_lookup_cxx_sources) -@CAIRO_HAS_SYMBOL_LOOKUP_TRUE@am__append_151 = $(cairo_boilerplate_symbol_lookup_sources) -@CAIRO_HAS_DL_TRUE@am__append_152 = -ldl -@CAIRO_HAS_WIN32_SURFACE_TRUE@am__append_153 = -lwinspool -@CROSS_COMPILING_FALSE@am__append_154 = check-link$(EXEEXT) +@CAIRO_HAS_GLESV3_SURFACE_TRUE@am__append_77 = $(cairo_boilerplate_glesv3_headers) +@CAIRO_HAS_GLESV3_SURFACE_TRUE@am__append_78 = $(cairo_boilerplate_glesv3_private) +@CAIRO_HAS_GLESV3_SURFACE_TRUE@am__append_79 = $(cairo_boilerplate_glesv3_cxx_sources) +@CAIRO_HAS_GLESV3_SURFACE_TRUE@am__append_80 = $(cairo_boilerplate_glesv3_sources) +@CAIRO_HAS_COGL_SURFACE_TRUE@am__append_81 = $(cairo_boilerplate_cogl_headers) +@CAIRO_HAS_COGL_SURFACE_TRUE@am__append_82 = $(cairo_boilerplate_cogl_private) +@CAIRO_HAS_COGL_SURFACE_TRUE@am__append_83 = $(cairo_boilerplate_cogl_cxx_sources) +@CAIRO_HAS_COGL_SURFACE_TRUE@am__append_84 = $(cairo_boilerplate_cogl_sources) +@CAIRO_HAS_DIRECTFB_SURFACE_TRUE@am__append_85 = $(cairo_boilerplate_directfb_headers) +@CAIRO_HAS_DIRECTFB_SURFACE_TRUE@am__append_86 = $(cairo_boilerplate_directfb_private) +@CAIRO_HAS_DIRECTFB_SURFACE_TRUE@am__append_87 = $(cairo_boilerplate_directfb_cxx_sources) +@CAIRO_HAS_DIRECTFB_SURFACE_TRUE@am__append_88 = $(cairo_boilerplate_directfb_sources) +@CAIRO_HAS_VG_SURFACE_TRUE@am__append_89 = $(cairo_boilerplate_vg_headers) +@CAIRO_HAS_VG_SURFACE_TRUE@am__append_90 = $(cairo_boilerplate_vg_private) +@CAIRO_HAS_VG_SURFACE_TRUE@am__append_91 = $(cairo_boilerplate_vg_cxx_sources) +@CAIRO_HAS_VG_SURFACE_TRUE@am__append_92 = $(cairo_boilerplate_vg_sources) +@CAIRO_HAS_EGL_FUNCTIONS_TRUE@am__append_93 = $(cairo_boilerplate_egl_headers) +@CAIRO_HAS_EGL_FUNCTIONS_TRUE@am__append_94 = $(cairo_boilerplate_egl_private) +@CAIRO_HAS_EGL_FUNCTIONS_TRUE@am__append_95 = $(cairo_boilerplate_egl_cxx_sources) +@CAIRO_HAS_EGL_FUNCTIONS_TRUE@am__append_96 = $(cairo_boilerplate_egl_sources) +@CAIRO_HAS_GLX_FUNCTIONS_TRUE@am__append_97 = $(cairo_boilerplate_glx_headers) +@CAIRO_HAS_GLX_FUNCTIONS_TRUE@am__append_98 = $(cairo_boilerplate_glx_private) +@CAIRO_HAS_GLX_FUNCTIONS_TRUE@am__append_99 = $(cairo_boilerplate_glx_cxx_sources) +@CAIRO_HAS_GLX_FUNCTIONS_TRUE@am__append_100 = $(cairo_boilerplate_glx_sources) +@CAIRO_HAS_WGL_FUNCTIONS_TRUE@am__append_101 = $(cairo_boilerplate_wgl_headers) +@CAIRO_HAS_WGL_FUNCTIONS_TRUE@am__append_102 = $(cairo_boilerplate_wgl_private) +@CAIRO_HAS_WGL_FUNCTIONS_TRUE@am__append_103 = $(cairo_boilerplate_wgl_cxx_sources) +@CAIRO_HAS_WGL_FUNCTIONS_TRUE@am__append_104 = $(cairo_boilerplate_wgl_sources) +@CAIRO_HAS_SCRIPT_SURFACE_TRUE@am__append_105 = $(cairo_boilerplate_script_headers) +@CAIRO_HAS_SCRIPT_SURFACE_TRUE@am__append_106 = $(cairo_boilerplate_script_private) +@CAIRO_HAS_SCRIPT_SURFACE_TRUE@am__append_107 = $(cairo_boilerplate_script_cxx_sources) +@CAIRO_HAS_SCRIPT_SURFACE_TRUE@am__append_108 = $(cairo_boilerplate_script_sources) +@CAIRO_HAS_FT_FONT_TRUE@am__append_109 = $(cairo_boilerplate_ft_headers) +@CAIRO_HAS_FT_FONT_TRUE@am__append_110 = $(cairo_boilerplate_ft_private) +@CAIRO_HAS_FT_FONT_TRUE@am__append_111 = $(cairo_boilerplate_ft_cxx_sources) +@CAIRO_HAS_FT_FONT_TRUE@am__append_112 = $(cairo_boilerplate_ft_sources) +@CAIRO_HAS_FC_FONT_TRUE@am__append_113 = $(cairo_boilerplate_fc_headers) +@CAIRO_HAS_FC_FONT_TRUE@am__append_114 = $(cairo_boilerplate_fc_private) +@CAIRO_HAS_FC_FONT_TRUE@am__append_115 = $(cairo_boilerplate_fc_cxx_sources) +@CAIRO_HAS_FC_FONT_TRUE@am__append_116 = $(cairo_boilerplate_fc_sources) +@CAIRO_HAS_PS_SURFACE_TRUE@am__append_117 = $(cairo_boilerplate_ps_headers) +@CAIRO_HAS_PS_SURFACE_TRUE@am__append_118 = $(cairo_boilerplate_ps_private) +@CAIRO_HAS_PS_SURFACE_TRUE@am__append_119 = $(cairo_boilerplate_ps_cxx_sources) +@CAIRO_HAS_PS_SURFACE_TRUE@am__append_120 = $(cairo_boilerplate_ps_sources) +@CAIRO_HAS_PDF_SURFACE_TRUE@am__append_121 = $(cairo_boilerplate_pdf_headers) +@CAIRO_HAS_PDF_SURFACE_TRUE@am__append_122 = $(cairo_boilerplate_pdf_private) +@CAIRO_HAS_PDF_SURFACE_TRUE@am__append_123 = $(cairo_boilerplate_pdf_cxx_sources) +@CAIRO_HAS_PDF_SURFACE_TRUE@am__append_124 = $(cairo_boilerplate_pdf_sources) +@CAIRO_HAS_SVG_SURFACE_TRUE@am__append_125 = $(cairo_boilerplate_svg_headers) +@CAIRO_HAS_SVG_SURFACE_TRUE@am__append_126 = $(cairo_boilerplate_svg_private) +@CAIRO_HAS_SVG_SURFACE_TRUE@am__append_127 = $(cairo_boilerplate_svg_cxx_sources) +@CAIRO_HAS_SVG_SURFACE_TRUE@am__append_128 = $(cairo_boilerplate_svg_sources) +@CAIRO_HAS_TEST_SURFACES_TRUE@am__append_129 = $(cairo_boilerplate_test_surfaces_private) $(cairo_boilerplate_test_surfaces_headers) +@CAIRO_HAS_TEST_SURFACES_TRUE@am__append_130 = $(cairo_boilerplate_test_surfaces_cxx_sources) +@CAIRO_HAS_TEST_SURFACES_TRUE@am__append_131 = $(cairo_boilerplate_test_surfaces_sources) +@CAIRO_HAS_TEE_SURFACE_TRUE@am__append_132 = $(cairo_boilerplate_tee_headers) +@CAIRO_HAS_TEE_SURFACE_TRUE@am__append_133 = $(cairo_boilerplate_tee_private) +@CAIRO_HAS_TEE_SURFACE_TRUE@am__append_134 = $(cairo_boilerplate_tee_cxx_sources) +@CAIRO_HAS_TEE_SURFACE_TRUE@am__append_135 = $(cairo_boilerplate_tee_sources) +@CAIRO_HAS_XML_SURFACE_TRUE@am__append_136 = $(cairo_boilerplate_xml_headers) +@CAIRO_HAS_XML_SURFACE_TRUE@am__append_137 = $(cairo_boilerplate_xml_private) +@CAIRO_HAS_XML_SURFACE_TRUE@am__append_138 = $(cairo_boilerplate_xml_cxx_sources) +@CAIRO_HAS_XML_SURFACE_TRUE@am__append_139 = $(cairo_boilerplate_xml_sources) +@CAIRO_HAS_PTHREAD_TRUE@am__append_140 = $(cairo_boilerplate_pthread_private) $(cairo_boilerplate_pthread_headers) +@CAIRO_HAS_PTHREAD_TRUE@am__append_141 = $(cairo_boilerplate_pthread_cxx_sources) +@CAIRO_HAS_PTHREAD_TRUE@am__append_142 = $(cairo_boilerplate_pthread_sources) +@CAIRO_HAS_GOBJECT_FUNCTIONS_TRUE@am__append_143 = $(cairo_boilerplate_gobject_headers) +@CAIRO_HAS_GOBJECT_FUNCTIONS_TRUE@am__append_144 = $(cairo_boilerplate_gobject_private) +@CAIRO_HAS_GOBJECT_FUNCTIONS_TRUE@am__append_145 = $(cairo_boilerplate_gobject_cxx_sources) +@CAIRO_HAS_GOBJECT_FUNCTIONS_TRUE@am__append_146 = $(cairo_boilerplate_gobject_sources) +@CAIRO_HAS_TRACE_TRUE@am__append_147 = $(cairo_boilerplate_trace_private) $(cairo_boilerplate_trace_headers) +@CAIRO_HAS_TRACE_TRUE@am__append_148 = $(cairo_boilerplate_trace_cxx_sources) +@CAIRO_HAS_TRACE_TRUE@am__append_149 = $(cairo_boilerplate_trace_sources) +@CAIRO_HAS_INTERPRETER_TRUE@am__append_150 = $(cairo_boilerplate_interpreter_private) $(cairo_boilerplate_interpreter_headers) +@CAIRO_HAS_INTERPRETER_TRUE@am__append_151 = $(cairo_boilerplate_interpreter_cxx_sources) +@CAIRO_HAS_INTERPRETER_TRUE@am__append_152 = $(cairo_boilerplate_interpreter_sources) +@CAIRO_HAS_SYMBOL_LOOKUP_TRUE@am__append_153 = $(cairo_boilerplate_symbol_lookup_private) $(cairo_boilerplate_symbol_lookup_headers) +@CAIRO_HAS_SYMBOL_LOOKUP_TRUE@am__append_154 = $(cairo_boilerplate_symbol_lookup_cxx_sources) +@CAIRO_HAS_SYMBOL_LOOKUP_TRUE@am__append_155 = $(cairo_boilerplate_symbol_lookup_sources) +@CAIRO_HAS_DL_TRUE@am__append_156 = -ldl +@CAIRO_HAS_WIN32_SURFACE_TRUE@am__append_157 = -lwinspool +@CROSS_COMPILING_FALSE@am__append_158 = check-link$(EXEEXT) subdir = boilerplate ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/build/aclocal.cairo.m4 \ @@ -274,6 +282,7 @@ $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) +DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = @@ -308,7 +317,7 @@ $(am__objects_1) $(am__objects_1) $(am__objects_1) \ $(am__objects_1) $(am__objects_1) $(am__objects_1) \ $(am__objects_1) $(am__objects_1) $(am__objects_1) \ - $(am__objects_1) $(am__objects_1) + $(am__objects_1) $(am__objects_1) $(am__objects_1) am__objects_4 = $(am__objects_1) $(am__objects_1) $(am__objects_1) \ $(am__objects_1) $(am__objects_1) $(am__objects_1) \ $(am__objects_1) $(am__objects_1) $(am__objects_1) \ @@ -322,7 +331,7 @@ $(am__objects_1) $(am__objects_1) $(am__objects_1) \ $(am__objects_1) $(am__objects_1) $(am__objects_1) \ $(am__objects_1) $(am__objects_1) $(am__objects_1) \ - $(am__objects_1) + $(am__objects_1) $(am__objects_1) am__objects_5 = cairo-boilerplate-getopt.lo \ cairo-boilerplate-system.lo cairo-boilerplate.lo am__objects_6 = cairo-boilerplate-xlib.lo @@ -366,14 +375,14 @@ $(am__objects_1) $(am__objects_13) $(am__objects_1) \ $(am__objects_15) $(am__objects_1) $(am__objects_1) \ $(am__objects_17) $(am__objects_1) $(am__objects_1) \ - $(am__objects_1) $(am__objects_1) $(am__objects_19) \ - $(am__objects_21) $(am__objects_23) $(am__objects_25) \ - $(am__objects_27) $(am__objects_29) $(am__objects_31) \ - $(am__objects_1) $(am__objects_1) $(am__objects_33) \ - $(am__objects_35) $(am__objects_37) $(am__objects_39) \ $(am__objects_1) $(am__objects_1) $(am__objects_1) \ + $(am__objects_19) $(am__objects_21) $(am__objects_23) \ + $(am__objects_25) $(am__objects_27) $(am__objects_29) \ + $(am__objects_31) $(am__objects_1) $(am__objects_1) \ + $(am__objects_33) $(am__objects_35) $(am__objects_37) \ + $(am__objects_39) $(am__objects_1) $(am__objects_1) \ $(am__objects_1) $(am__objects_1) $(am__objects_1) \ - $(am__objects_1) + $(am__objects_1) $(am__objects_1) am_libcairoboilerplate_la_OBJECTS = $(am__objects_3) $(am__objects_4) \ $(am__objects_40) cairo-boilerplate-constructors.lo libcairoboilerplate_la_OBJECTS = $(am_libcairoboilerplate_la_OBJECTS) @@ -402,7 +411,8 @@ $(am__objects_1) $(am__objects_1) $(am__objects_1) \ $(am__objects_1) $(am__objects_1) $(am__objects_1) \ $(am__objects_1) $(am__objects_1) $(am__objects_1) \ - $(am__objects_1) $(am__objects_1) $(am__objects_1) + $(am__objects_1) $(am__objects_1) $(am__objects_1) \ + $(am__objects_1) am_libcairoboilerplate_cxx_la_OBJECTS = $(am__objects_45) libcairoboilerplate_cxx_la_OBJECTS = \ $(am_libcairoboilerplate_cxx_la_OBJECTS) @@ -698,6 +708,11 @@ TEST_LOG_DRIVER = $(SHELL) $(top_srcdir)/build/test-driver TEST_LOG_COMPILE = $(TEST_LOG_COMPILER) $(AM_TEST_LOG_FLAGS) \ $(TEST_LOG_FLAGS) +am__DIST_COMMON = $(srcdir)/Makefile.am.features $(srcdir)/Makefile.in \ + $(top_srcdir)/boilerplate/Makefile.sources \ + $(top_srcdir)/build/Makefile.am.common \ + $(top_srcdir)/build/depcomp $(top_srcdir)/build/test-driver \ + README DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ @@ -782,6 +797,7 @@ LTLIBOBJS = @LTLIBOBJS@ LTP = @LTP@ LTP_GENHTML = @LTP_GENHTML@ +LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MKDIR_P = @MKDIR_P@ @@ -858,6 +874,8 @@ gl_LIBS = @gl_LIBS@ glesv2_CFLAGS = @glesv2_CFLAGS@ glesv2_LIBS = @glesv2_LIBS@ +glesv3_CFLAGS = @glesv3_CFLAGS@ +glesv3_LIBS = @glesv3_LIBS@ glib_CFLAGS = @glib_CFLAGS@ glib_LIBS = @glib_LIBS@ gtk_CFLAGS = @gtk_CFLAGS@ @@ -895,6 +913,7 @@ qt_LIBS = @qt_LIBS@ real_pthread_CFLAGS = @real_pthread_CFLAGS@ real_pthread_LIBS = @real_pthread_LIBS@ +runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ shm_LIBS = @shm_LIBS@ @@ -923,7 +942,7 @@ make-cairo-boilerplate-constructors.sh EXTRA_LTLIBRARIES = libcairoboilerplate.la $(cxx_boilerplate_lib) MAINTAINERCLEANFILES = Makefile.in -TESTS = $(am__append_154) +TESTS = $(am__append_158) cairo_boilerplate_headers = \ cairo-boilerplate-getopt.h \ cairo-boilerplate-scaled-font.h \ @@ -997,6 +1016,7 @@ $(cairo_boilerplate_gallium_headers) \ $(cairo_boilerplate_gl_headers) \ $(cairo_boilerplate_glesv2_headers) \ + $(cairo_boilerplate_glesv3_headers) \ $(cairo_boilerplate_cogl_headers) \ $(cairo_boilerplate_directfb_headers) \ $(cairo_boilerplate_vg_headers) \ @@ -1022,6 +1042,7 @@ $(cairo_boilerplate_png_headers) \ $(cairo_boilerplate_gl_headers) \ $(cairo_boilerplate_glesv2_headers) \ + $(cairo_boilerplate_glesv3_headers) \ $(cairo_boilerplate_cogl_headers) \ $(cairo_boilerplate_directfb_headers) \ $(cairo_boilerplate_vg_headers) \ @@ -1062,6 +1083,7 @@ $(cairo_boilerplate_png_private) \ $(cairo_boilerplate_gl_private) \ $(cairo_boilerplate_glesv2_private) \ + $(cairo_boilerplate_glesv3_private) \ $(cairo_boilerplate_cogl_private) \ $(cairo_boilerplate_directfb_private) \ $(cairo_boilerplate_vg_private) \ @@ -1112,6 +1134,7 @@ $(cairo_boilerplate_png_cxx_sources) \ $(cairo_boilerplate_gl_cxx_sources) \ $(cairo_boilerplate_glesv2_cxx_sources) \ + $(cairo_boilerplate_glesv3_cxx_sources) \ $(cairo_boilerplate_cogl_cxx_sources) \ $(cairo_boilerplate_directfb_cxx_sources) \ $(cairo_boilerplate_vg_cxx_sources) \ @@ -1157,6 +1180,7 @@ $(cairo_boilerplate_png_sources) \ $(cairo_boilerplate_gl_sources) \ $(cairo_boilerplate_glesv2_sources) \ + $(cairo_boilerplate_glesv3_sources) \ $(cairo_boilerplate_cogl_sources) \ $(cairo_boilerplate_directfb_sources) \ $(cairo_boilerplate_vg_sources) \ @@ -1193,12 +1217,13 @@ $(am__append_85) $(am__append_89) $(am__append_93) \ $(am__append_97) $(am__append_101) $(am__append_105) \ $(am__append_109) $(am__append_113) $(am__append_117) \ - $(am__append_121) $(cairo_boilerplate_image_headers) \ + $(am__append_121) $(am__append_125) \ + $(cairo_boilerplate_image_headers) \ $(cairo_boilerplate_mime_headers) \ $(cairo_boilerplate_recording_headers) \ - $(cairo_boilerplate_observer_headers) $(am__append_128) \ - $(am__append_132) $(cairo_boilerplate_user_headers) \ - $(am__append_139) + $(cairo_boilerplate_observer_headers) $(am__append_132) \ + $(am__append_136) $(cairo_boilerplate_user_headers) \ + $(am__append_143) enabled_cairo_boilerplate_private = $(cairo_boilerplate_private) \ $(am__append_2) $(am__append_6) $(am__append_10) \ $(am__append_14) $(am__append_18) $(am__append_22) \ @@ -1210,14 +1235,14 @@ $(am__append_86) $(am__append_90) $(am__append_94) \ $(am__append_98) $(am__append_102) $(am__append_106) \ $(am__append_110) $(am__append_114) $(am__append_118) \ - $(am__append_122) $(am__append_125) \ + $(am__append_122) $(am__append_126) $(am__append_129) \ $(cairo_boilerplate_image_private) \ $(cairo_boilerplate_mime_private) \ $(cairo_boilerplate_recording_private) \ - $(cairo_boilerplate_observer_private) $(am__append_129) \ - $(am__append_133) $(cairo_boilerplate_user_private) \ - $(am__append_136) $(am__append_140) $(am__append_143) \ - $(am__append_146) $(am__append_149) + $(cairo_boilerplate_observer_private) $(am__append_133) \ + $(am__append_137) $(cairo_boilerplate_user_private) \ + $(am__append_140) $(am__append_144) $(am__append_147) \ + $(am__append_150) $(am__append_153) enabled_cairo_boilerplate_cxx_sources = \ $(cairo_boilerplate_cxx_sources) $(am__append_3) \ $(am__append_7) $(am__append_11) $(am__append_15) \ @@ -1230,13 +1255,14 @@ $(am__append_91) $(am__append_95) $(am__append_99) \ $(am__append_103) $(am__append_107) $(am__append_111) \ $(am__append_115) $(am__append_119) $(am__append_123) \ - $(am__append_126) $(cairo_boilerplate_image_cxx_sources) \ + $(am__append_127) $(am__append_130) \ + $(cairo_boilerplate_image_cxx_sources) \ $(cairo_boilerplate_mime_cxx_sources) \ $(cairo_boilerplate_recording_cxx_sources) \ - $(cairo_boilerplate_observer_cxx_sources) $(am__append_130) \ - $(am__append_134) $(cairo_boilerplate_user_cxx_sources) \ - $(am__append_137) $(am__append_141) $(am__append_144) \ - $(am__append_147) $(am__append_150) + $(cairo_boilerplate_observer_cxx_sources) $(am__append_134) \ + $(am__append_138) $(cairo_boilerplate_user_cxx_sources) \ + $(am__append_141) $(am__append_145) $(am__append_148) \ + $(am__append_151) $(am__append_154) enabled_cairo_boilerplate_sources = $(cairo_boilerplate_sources) \ $(am__append_4) $(am__append_8) $(am__append_12) \ $(am__append_16) $(am__append_20) $(am__append_24) \ @@ -1248,14 +1274,14 @@ $(am__append_88) $(am__append_92) $(am__append_96) \ $(am__append_100) $(am__append_104) $(am__append_108) \ $(am__append_112) $(am__append_116) $(am__append_120) \ - $(am__append_124) $(am__append_127) \ + $(am__append_124) $(am__append_128) $(am__append_131) \ $(cairo_boilerplate_image_sources) \ $(cairo_boilerplate_mime_sources) \ $(cairo_boilerplate_recording_sources) \ - $(cairo_boilerplate_observer_sources) $(am__append_131) \ - $(am__append_135) $(cairo_boilerplate_user_sources) \ - $(am__append_138) $(am__append_142) $(am__append_145) \ - $(am__append_148) $(am__append_151) + $(cairo_boilerplate_observer_sources) $(am__append_135) \ + $(am__append_139) $(cairo_boilerplate_user_sources) \ + $(am__append_142) $(am__append_146) $(am__append_149) \ + $(am__append_152) $(am__append_155) #MAINTAINERCLEANFILES += $(srcdir)/Makefile.win32.features AM_CPPFLAGS = \ -I$(srcdir) \ @@ -1280,7 +1306,7 @@ libcairoboilerplate_la_LIBADD = $(top_builddir)/src/libcairo.la \ $(cxx_boilerplate_lib) $(CAIRO_LIBS) $(CAIROBOILERPLATE_LIBS) \ - $(NULL) $(am__append_152) $(am__append_153) + $(NULL) $(am__append_156) $(am__append_157) libcairoboilerplate_cxx_la_LIBADD = $(top_builddir)/src/libcairo.la \ $(CAIRO_LIBS) \ $(CAIROBOILERPLATE_LIBS) \ @@ -1311,7 +1337,6 @@ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign boilerplate/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --foreign boilerplate/Makefile -.PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ @@ -1320,7 +1345,7 @@ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; -$(top_srcdir)/build/Makefile.am.common $(srcdir)/Makefile.am.features $(top_srcdir)/boilerplate/Makefile.sources: +$(top_srcdir)/build/Makefile.am.common $(srcdir)/Makefile.am.features $(top_srcdir)/boilerplate/Makefile.sources $(am__empty): $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh @@ -1526,7 +1551,7 @@ if test -n "$$am__remaking_logs"; then \ echo "fatal: making $(TEST_SUITE_LOG): possible infinite" \ "recursion detected" >&2; \ - else \ + elif test -n "$$redo_logs"; then \ am__remaking_logs=yes $(MAKE) $(AM_MAKEFLAGS) $$redo_logs; \ fi; \ if $(am__make_dryrun); then :; else \ @@ -1821,6 +1846,8 @@ mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ recheck tags tags-am uninstall uninstall-am +.PRECIOUS: Makefile + cairo-boilerplate-constructors.c: Makefile $(enabled_cairo_boilerplate_sources) $(enabled_cairo_boilerplate_cxx_sources) make-cairo-boilerplate-constructors.sh (cd $(srcdir) && sh ./make-cairo-boilerplate-constructors.sh $(enabled_cairo_boilerplate_sources) $(enabled_cairo_boilerplate_cxx_sources)) > $@ diff -Nru cairo-1.14.6/boilerplate/Makefile.win32.features cairo-1.15.10/boilerplate/Makefile.win32.features --- cairo-1.14.6/boilerplate/Makefile.win32.features 2015-10-27 21:04:22.000000000 +0000 +++ cairo-1.15.10/boilerplate/Makefile.win32.features 2017-12-07 02:14:36.000000000 +0000 @@ -247,6 +247,18 @@ enabled_cairo_boilerplate_sources += $(cairo_boilerplate_glesv2_sources) endif +unsupported_cairo_boilerplate_headers += $(cairo_boilerplate_glesv3_headers) +all_cairo_boilerplate_headers += $(cairo_boilerplate_glesv3_headers) +all_cairo_boilerplate_private += $(cairo_boilerplate_glesv3_private) +all_cairo_boilerplate_cxx_sources += $(cairo_boilerplate_glesv3_cxx_sources) +all_cairo_boilerplate_sources += $(cairo_boilerplate_glesv3_sources) +ifeq ($(CAIRO_HAS_GLESV3_SURFACE),1) +enabled_cairo_boilerplate_headers += $(cairo_boilerplate_glesv3_headers) +enabled_cairo_boilerplate_private += $(cairo_boilerplate_glesv3_private) +enabled_cairo_boilerplate_cxx_sources += $(cairo_boilerplate_glesv3_cxx_sources) +enabled_cairo_boilerplate_sources += $(cairo_boilerplate_glesv3_sources) +endif + unsupported_cairo_boilerplate_headers += $(cairo_boilerplate_cogl_headers) all_cairo_boilerplate_headers += $(cairo_boilerplate_cogl_headers) all_cairo_boilerplate_private += $(cairo_boilerplate_cogl_private) diff -Nru cairo-1.14.6/build/aclocal.cairo.m4 cairo-1.15.10/build/aclocal.cairo.m4 --- cairo-1.14.6/build/aclocal.cairo.m4 2015-10-27 21:04:30.000000000 +0000 +++ cairo-1.15.10/build/aclocal.cairo.m4 2017-12-07 02:14:36.000000000 +0000 @@ -165,7 +165,7 @@ int atomic_add(int i) { return __sync_fetch_and_add (&i, 1); } int atomic_cmpxchg(int i, int j, int k) { return __sync_val_compare_and_swap (&i, j, k); } ], [], - cairo_cv_atomic_primitives="Intel" + cairo_cv_atomic_primitives="gcc-legacy" ) AC_TRY_LINK([ @@ -190,9 +190,9 @@ [Enable if your compiler supports the GCC __atomic_* atomic primitives]) fi - if test "x$cairo_cv_atomic_primitives" = xIntel; then - AC_DEFINE(HAVE_INTEL_ATOMIC_PRIMITIVES, 1, - [Enable if your compiler supports the Intel __sync_* atomic primitives]) + if test "x$cairo_cv_atomic_primitives" = xgcc-legacy; then + AC_DEFINE(HAVE_GCC_LEGACY_ATOMICS, 1, + [Enable if your compiler supports the legacy GCC __sync_* atomic primitives]) fi if test "x$cairo_cv_atomic_primitives" = "xlibatomic-ops"; then @@ -215,7 +215,7 @@ case $host_cpu in i?86) cairo_cv_atomic_op_needs_memory_barrier="no" ;; x86_64) cairo_cv_atomic_op_needs_memory_barrier="no" ;; - arm*) cairo_cv_atomic_op_needs_memory_barrier="no" ;; + arm*) cairo_cv_atomic_op_needs_memory_barrier="yes" ;; *) cairo_cv_atomic_op_needs_memory_barrier="yes" ;; esac ]) diff -Nru cairo-1.14.6/build/aclocal.float.m4 cairo-1.15.10/build/aclocal.float.m4 --- cairo-1.14.6/build/aclocal.float.m4 2015-10-27 21:04:21.000000000 +0000 +++ cairo-1.15.10/build/aclocal.float.m4 2017-12-07 02:13:45.000000000 +0000 @@ -31,10 +31,10 @@ ]])], [ -if strings - conftest$ac_exeext | grep noonsees >/dev/null ; then +if strings -a conftest$ac_exeext | grep noonsees >/dev/null ; then ax_cv_c_float_words_bigendian=yes fi -if strings - conftest$ac_exeext | grep seesnoon >/dev/null ; then +if strings -a 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.14.6/build/ar-lib cairo-1.15.10/build/ar-lib --- cairo-1.14.6/build/ar-lib 2015-10-27 21:04:21.000000000 +0000 +++ cairo-1.15.10/build/ar-lib 2017-12-07 02:13:45.000000000 +0000 @@ -4,7 +4,7 @@ me=ar-lib scriptversion=2012-03-01.08; # UTC -# Copyright (C) 2010-2013 Free Software Foundation, Inc. +# Copyright (C) 2010-2014 Free Software Foundation, Inc. # Written by Peter Rosin . # # This program is free software; you can redistribute it and/or modify diff -Nru cairo-1.14.6/build/compile cairo-1.15.10/build/compile --- cairo-1.14.6/build/compile 2015-10-27 21:04:21.000000000 +0000 +++ cairo-1.15.10/build/compile 2017-12-07 02:13:45.000000000 +0000 @@ -3,7 +3,7 @@ scriptversion=2012-10-14.11; # UTC -# Copyright (C) 1999-2013 Free Software Foundation, Inc. +# Copyright (C) 1999-2014 Free Software Foundation, Inc. # Written by Tom Tromey . # # This program is free software; you can redistribute it and/or modify diff -Nru cairo-1.14.6/build/config.guess cairo-1.15.10/build/config.guess --- cairo-1.14.6/build/config.guess 2015-10-27 21:04:21.000000000 +0000 +++ cairo-1.15.10/build/config.guess 2017-12-07 02:13:45.000000000 +0000 @@ -1,8 +1,8 @@ #! /bin/sh # Attempt to guess a canonical system name. -# Copyright 1992-2013 Free Software Foundation, Inc. +# Copyright 1992-2015 Free Software Foundation, Inc. -timestamp='2013-06-10' +timestamp='2015-08-20' # This file is free software; you can redistribute it and/or modify it # under the terms of the GNU General Public License as published by @@ -24,12 +24,12 @@ # program. This Exception is an additional permission under section 7 # of the GNU General Public License, version 3 ("GPLv3"). # -# Originally written by Per Bothner. +# Originally written by Per Bothner; maintained since 2000 by Ben Elliston. # # You can get the latest version of this script from: # http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess;hb=HEAD # -# Please send patches with a ChangeLog entry to config-patches@gnu.org. +# Please send patches to . me=`echo "$0" | sed -e 's,.*/,,'` @@ -50,7 +50,7 @@ GNU config.guess ($timestamp) Originally written by Per Bothner. -Copyright 1992-2013 Free Software Foundation, Inc. +Copyright 1992-2015 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." @@ -149,7 +149,7 @@ LIBC=gnu #endif EOF - eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^LIBC'` + eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^LIBC' | sed 's, ,,g'` ;; esac @@ -168,20 +168,27 @@ # Note: NetBSD doesn't particularly care about the vendor # portion of the name. We always set it to "unknown". sysctl="sysctl -n hw.machine_arch" - UNAME_MACHINE_ARCH=`(/sbin/$sysctl 2>/dev/null || \ - /usr/sbin/$sysctl 2>/dev/null || echo unknown)` + UNAME_MACHINE_ARCH=`(uname -p 2>/dev/null || \ + /sbin/$sysctl 2>/dev/null || \ + /usr/sbin/$sysctl 2>/dev/null || \ + echo unknown)` case "${UNAME_MACHINE_ARCH}" in armeb) machine=armeb-unknown ;; arm*) machine=arm-unknown ;; sh3el) machine=shl-unknown ;; sh3eb) machine=sh-unknown ;; sh5el) machine=sh5le-unknown ;; + earmv*) + arch=`echo ${UNAME_MACHINE_ARCH} | sed -e 's,^e\(armv[0-9]\).*$,\1,'` + endian=`echo ${UNAME_MACHINE_ARCH} | sed -ne 's,^.*\(eb\)$,\1,p'` + machine=${arch}${endian}-unknown + ;; *) machine=${UNAME_MACHINE_ARCH}-unknown ;; esac # The Operating System including object format, if it has switched # to ELF recently, or will in the future. case "${UNAME_MACHINE_ARCH}" in - arm*|i386|m68k|ns32k|sh3*|sparc|vax) + arm*|earm*|i386|m68k|ns32k|sh3*|sparc|vax) eval $set_cc_for_build if echo __ELF__ | $CC_FOR_BUILD -E - 2>/dev/null \ | grep -q __ELF__ @@ -197,6 +204,13 @@ os=netbsd ;; esac + # Determine ABI tags. + case "${UNAME_MACHINE_ARCH}" in + earm*) + expr='s/^earmv[0-9]/-eabi/;s/eb$//' + abi=`echo ${UNAME_MACHINE_ARCH} | sed -e "$expr"` + ;; + esac # The OS release # Debian GNU/NetBSD machines have a different userland, and # thus, need a distinct triplet. However, they do not need @@ -207,13 +221,13 @@ release='-gnu' ;; *) - release=`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'` + release=`echo ${UNAME_RELEASE} | sed -e 's/[-_].*//' | cut -d. -f1,2` ;; esac # Since CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM: # contains redundant information, the shorter form: # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used. - echo "${machine}-${os}${release}" + echo "${machine}-${os}${release}${abi}" exit ;; *:Bitrig:*:*) UNAME_MACHINE_ARCH=`arch | sed 's/Bitrig.//'` @@ -235,6 +249,9 @@ *:MirBSD:*:*) echo ${UNAME_MACHINE}-unknown-mirbsd${UNAME_RELEASE} exit ;; + *:Sortix:*:*) + echo ${UNAME_MACHINE}-unknown-sortix + exit ;; alpha:OSF1:*:*) case $UNAME_RELEASE in *4.0) @@ -579,8 +596,9 @@ else IBM_ARCH=powerpc fi - if [ -x /usr/bin/oslevel ] ; then - IBM_REV=`/usr/bin/oslevel` + if [ -x /usr/bin/lslpp ] ; then + IBM_REV=`/usr/bin/lslpp -Lqc bos.rte.libc | + awk -F: '{ print $3 }' | sed s/[0-9]*$/0/` else IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE} fi @@ -826,7 +844,7 @@ *:MINGW*:*) echo ${UNAME_MACHINE}-pc-mingw32 exit ;; - i*:MSYS*:*) + *:MSYS*:*) echo ${UNAME_MACHINE}-pc-msys exit ;; i*:windows32*:*) @@ -932,6 +950,9 @@ crisv32:Linux:*:*) echo ${UNAME_MACHINE}-axis-linux-${LIBC} exit ;; + e2k:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + exit ;; frv:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; @@ -969,10 +990,10 @@ eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^CPU'` test x"${CPU}" != x && { echo "${CPU}-unknown-linux-${LIBC}"; exit; } ;; - or1k:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + openrisc*:Linux:*:*) + echo or1k-unknown-linux-${LIBC} exit ;; - or32:Linux:*:*) + or32:Linux:*:* | or1k*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; padre:Linux:*:*) @@ -1020,7 +1041,7 @@ echo ${UNAME_MACHINE}-dec-linux-${LIBC} exit ;; x86_64:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + echo ${UNAME_MACHINE}-pc-linux-${LIBC} exit ;; xtensa*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} @@ -1260,16 +1281,26 @@ if test "$UNAME_PROCESSOR" = unknown ; then UNAME_PROCESSOR=powerpc fi - if [ "$CC_FOR_BUILD" != 'no_compiler_found' ]; then - if (echo '#ifdef __LP64__'; echo IS_64BIT_ARCH; echo '#endif') | \ - (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | \ - grep IS_64BIT_ARCH >/dev/null - then - case $UNAME_PROCESSOR in - i386) UNAME_PROCESSOR=x86_64 ;; - powerpc) UNAME_PROCESSOR=powerpc64 ;; - esac + if test `echo "$UNAME_RELEASE" | sed -e 's/\..*//'` -le 10 ; then + if [ "$CC_FOR_BUILD" != 'no_compiler_found' ]; then + if (echo '#ifdef __LP64__'; echo IS_64BIT_ARCH; echo '#endif') | \ + (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | \ + grep IS_64BIT_ARCH >/dev/null + then + case $UNAME_PROCESSOR in + i386) UNAME_PROCESSOR=x86_64 ;; + powerpc) UNAME_PROCESSOR=powerpc64 ;; + esac + fi fi + elif test "$UNAME_PROCESSOR" = i386 ; then + # Avoid executing cc on OS X 10.9, as it ships with a stub + # that puts up a graphical alert prompting to install + # developer tools. Any system running Mac OS X 10.7 or + # later (Darwin 11 and later) is required to have a 64-bit + # processor. This is not true of the ARM version of Darwin + # that Apple uses in portable devices. + UNAME_PROCESSOR=x86_64 fi echo ${UNAME_PROCESSOR}-apple-darwin${UNAME_RELEASE} exit ;; @@ -1361,154 +1392,6 @@ exit ;; esac -eval $set_cc_for_build -cat >$dummy.c < -# include -#endif -main () -{ -#if defined (sony) -#if defined (MIPSEB) - /* BFD wants "bsd" instead of "newsos". Perhaps BFD should be changed, - I don't know.... */ - printf ("mips-sony-bsd\n"); exit (0); -#else -#include - printf ("m68k-sony-newsos%s\n", -#ifdef NEWSOS4 - "4" -#else - "" -#endif - ); exit (0); -#endif -#endif - -#if defined (__arm) && defined (__acorn) && defined (__unix) - printf ("arm-acorn-riscix\n"); exit (0); -#endif - -#if defined (hp300) && !defined (hpux) - printf ("m68k-hp-bsd\n"); exit (0); -#endif - -#if defined (NeXT) -#if !defined (__ARCHITECTURE__) -#define __ARCHITECTURE__ "m68k" -#endif - int version; - version=`(hostinfo | sed -n 's/.*NeXT Mach \([0-9]*\).*/\1/p') 2>/dev/null`; - if (version < 4) - printf ("%s-next-nextstep%d\n", __ARCHITECTURE__, version); - else - printf ("%s-next-openstep%d\n", __ARCHITECTURE__, version); - exit (0); -#endif - -#if defined (MULTIMAX) || defined (n16) -#if defined (UMAXV) - printf ("ns32k-encore-sysv\n"); exit (0); -#else -#if defined (CMU) - printf ("ns32k-encore-mach\n"); exit (0); -#else - printf ("ns32k-encore-bsd\n"); exit (0); -#endif -#endif -#endif - -#if defined (__386BSD__) - printf ("i386-pc-bsd\n"); exit (0); -#endif - -#if defined (sequent) -#if defined (i386) - printf ("i386-sequent-dynix\n"); exit (0); -#endif -#if defined (ns32000) - printf ("ns32k-sequent-dynix\n"); exit (0); -#endif -#endif - -#if defined (_SEQUENT_) - struct utsname un; - - uname(&un); - - if (strncmp(un.version, "V2", 2) == 0) { - printf ("i386-sequent-ptx2\n"); exit (0); - } - if (strncmp(un.version, "V1", 2) == 0) { /* XXX is V1 correct? */ - printf ("i386-sequent-ptx1\n"); exit (0); - } - printf ("i386-sequent-ptx\n"); exit (0); - -#endif - -#if defined (vax) -# if !defined (ultrix) -# include -# if defined (BSD) -# if BSD == 43 - printf ("vax-dec-bsd4.3\n"); exit (0); -# else -# if BSD == 199006 - printf ("vax-dec-bsd4.3reno\n"); exit (0); -# else - printf ("vax-dec-bsd\n"); exit (0); -# endif -# endif -# else - printf ("vax-dec-bsd\n"); exit (0); -# endif -# else - printf ("vax-dec-ultrix\n"); exit (0); -# endif -#endif - -#if defined (alliant) && defined (i860) - printf ("i860-alliant-bsd\n"); exit (0); -#endif - - exit (1); -} -EOF - -$CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null && SYSTEM_NAME=`$dummy` && - { echo "$SYSTEM_NAME"; exit; } - -# Apollos put the system type in the environment. - -test -d /usr/apollo && { echo ${ISP}-apollo-${SYSTYPE}; exit; } - -# Convex versions that predate uname can use getsysinfo(1) - -if [ -x /usr/convex/getsysinfo ] -then - case `getsysinfo -f cpu_type` in - c1*) - echo c1-convex-bsd - exit ;; - c2*) - if getsysinfo -f scalar_acc - then echo c32-convex-bsd - else echo c2-convex-bsd - fi - exit ;; - c34*) - echo c34-convex-bsd - exit ;; - c38*) - echo c38-convex-bsd - exit ;; - c4*) - echo c4-convex-bsd - exit ;; - esac -fi - cat >&2 <. # # Configuration subroutine to validate and canonicalize a configuration type. # Supply the specified configuration type as an argument. @@ -68,7 +68,7 @@ version="\ GNU config.sub ($timestamp) -Copyright 1992-2013 Free Software Foundation, Inc. +Copyright 1992-2015 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." @@ -117,7 +117,7 @@ case $maybe_os in nto-qnx* | linux-gnu* | linux-android* | linux-dietlibc | linux-newlib* | \ linux-musl* | linux-uclibc* | uclinux-uclibc* | uclinux-gnu* | kfreebsd*-gnu* | \ - knetbsd*-gnu* | netbsd*-gnu* | \ + knetbsd*-gnu* | netbsd*-gnu* | netbsd*-eabi* | \ kopensolaris*-gnu* | \ storm-chaos* | os2-emx* | rtmk-nova*) os=-$maybe_os @@ -255,16 +255,18 @@ | arc | arceb \ | arm | arm[bl]e | arme[lb] | armv[2-8] | armv[3-8][lb] | armv7[arm] \ | avr | avr32 \ + | ba \ | be32 | be64 \ | bfin \ | c4x | c8051 | clipper \ | d10v | d30v | dlx | dsp16xx \ - | epiphany \ - | fido | fr30 | frv \ + | e2k | epiphany \ + | fido | fr30 | frv | ft32 \ | h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \ | hexagon \ | i370 | i860 | i960 | ia64 \ | ip2k | iq2000 \ + | k1om \ | le32 | le64 \ | lm32 \ | m32c | m32r | m32rle | m68000 | m68k | m88k \ @@ -282,8 +284,10 @@ | mips64vr5900 | mips64vr5900el \ | mipsisa32 | mipsisa32el \ | mipsisa32r2 | mipsisa32r2el \ + | mipsisa32r6 | mipsisa32r6el \ | mipsisa64 | mipsisa64el \ | mipsisa64r2 | mipsisa64r2el \ + | mipsisa64r6 | mipsisa64r6el \ | mipsisa64sb1 | mipsisa64sb1el \ | mipsisa64sr71k | mipsisa64sr71kel \ | mipsr5900 | mipsr5900el \ @@ -295,14 +299,14 @@ | nds32 | nds32le | nds32be \ | nios | nios2 | nios2eb | nios2el \ | ns16k | ns32k \ - | open8 \ - | or1k | or32 \ + | open8 | or1k | or1knd | or32 \ | pdp10 | pdp11 | pj | pjl \ | powerpc | powerpc64 | powerpc64le | powerpcle \ | pyramid \ + | riscv32 | riscv64 \ | rl78 | rx \ | score \ - | sh | sh[1234] | sh[24]a | sh[24]aeb | sh[23]e | sh[34]eb | sheb | shbe | shle | sh[1234]le | sh3ele \ + | sh | sh[1234] | sh[24]a | sh[24]aeb | sh[23]e | sh[234]eb | sheb | shbe | shle | sh[1234]le | sh3ele \ | sh64 | sh64le \ | sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet | sparclite \ | sparcv8 | sparcv9 | sparcv9b | sparcv9v \ @@ -310,6 +314,7 @@ | tahoe | tic4x | tic54x | tic55x | tic6x | tic80 | tron \ | ubicom32 \ | v850 | v850e | v850e1 | v850e2 | v850es | v850e2v3 \ + | visium \ | we32k \ | x86 | xc16x | xstormy16 | xtensa \ | z8k | z80) @@ -324,7 +329,10 @@ c6x) basic_machine=tic6x-unknown ;; - m6811 | m68hc11 | m6812 | m68hc12 | m68hcs12x | picochip) + leon|leon[3-9]) + basic_machine=sparc-$basic_machine + ;; + m6811 | m68hc11 | m6812 | m68hc12 | m68hcs12x | nvptx | picochip) basic_machine=$basic_machine-unknown os=-none ;; @@ -369,18 +377,20 @@ | alphapca5[67]-* | alpha64pca5[67]-* | arc-* | arceb-* \ | arm-* | armbe-* | armle-* | armeb-* | armv*-* \ | avr-* | avr32-* \ + | ba-* \ | be32-* | be64-* \ | bfin-* | bs2000-* \ | c[123]* | c30-* | [cjt]90-* | c4x-* \ | c8051-* | clipper-* | craynv-* | cydra-* \ | d10v-* | d30v-* | dlx-* \ - | elxsi-* \ + | e2k-* | elxsi-* \ | f30[01]-* | f700-* | fido-* | fr30-* | frv-* | fx80-* \ | h8300-* | h8500-* \ | hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \ | hexagon-* \ | i*86-* | i860-* | i960-* | ia64-* \ | ip2k-* | iq2000-* \ + | k1om-* \ | le32-* | le64-* \ | lm32-* \ | m32c-* | m32r-* | m32rle-* \ @@ -400,8 +410,10 @@ | mips64vr5900-* | mips64vr5900el-* \ | mipsisa32-* | mipsisa32el-* \ | mipsisa32r2-* | mipsisa32r2el-* \ + | mipsisa32r6-* | mipsisa32r6el-* \ | mipsisa64-* | mipsisa64el-* \ | mipsisa64r2-* | mipsisa64r2el-* \ + | mipsisa64r6-* | mipsisa64r6el-* \ | mipsisa64sb1-* | mipsisa64sb1el-* \ | mipsisa64sr71k-* | mipsisa64sr71kel-* \ | mipsr5900-* | mipsr5900el-* \ @@ -413,16 +425,18 @@ | nios-* | nios2-* | nios2eb-* | nios2el-* \ | none-* | np1-* | ns16k-* | ns32k-* \ | open8-* \ + | or1k*-* \ | orion-* \ | pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \ | powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* \ | pyramid-* \ + | riscv32-* | riscv64-* \ | rl78-* | romp-* | rs6000-* | rx-* \ | sh-* | sh[1234]-* | sh[24]a-* | sh[24]aeb-* | sh[23]e-* | sh[34]eb-* | sheb-* | shbe-* \ | shle-* | sh[1234]le-* | sh3ele-* | sh64-* | sh64le-* \ | sparc-* | sparc64-* | sparc64b-* | sparc64v-* | sparc86x-* | sparclet-* \ | sparclite-* \ - | sparcv8-* | sparcv9-* | sparcv9b-* | sparcv9v-* | sv1-* | sx?-* \ + | sparcv8-* | sparcv9-* | sparcv9b-* | sparcv9v-* | sv1-* | sx*-* \ | tahoe-* \ | tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* \ | tile*-* \ @@ -430,6 +444,7 @@ | ubicom32-* \ | v850-* | v850e-* | v850e1-* | v850es-* | v850e2-* | v850e2v3-* \ | vax-* \ + | visium-* \ | we32k-* \ | x86-* | x86_64-* | xc16x-* | xps100-* \ | xstormy16-* | xtensa*-* \ @@ -506,6 +521,9 @@ basic_machine=i386-pc os=-aros ;; + asmjs) + basic_machine=asmjs-unknown + ;; aux) basic_machine=m68k-apple os=-aux @@ -767,6 +785,9 @@ basic_machine=m68k-isi os=-sysv ;; + leon-*|leon[3-9]-*) + basic_machine=sparc-`echo $basic_machine | sed 's/-.*//'` + ;; m68knommu) basic_machine=m68k-unknown os=-linux @@ -822,6 +843,10 @@ basic_machine=powerpc-unknown os=-morphos ;; + moxiebox) + basic_machine=moxie-unknown + os=-moxiebox + ;; msdos) basic_machine=i386-pc os=-msdos @@ -1354,7 +1379,7 @@ | -hpux* | -unos* | -osf* | -luna* | -dgux* | -auroraux* | -solaris* \ | -sym* | -kopensolaris* | -plan9* \ | -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \ - | -aos* | -aros* \ + | -aos* | -aros* | -cloudabi* | -sortix* \ | -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \ | -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \ | -hiux* | -386bsd* | -knetbsd* | -mirbsd* | -netbsd* \ @@ -1367,14 +1392,14 @@ | -cygwin* | -msys* | -pe* | -psos* | -moss* | -proelf* | -rtems* \ | -mingw32* | -mingw64* | -linux-gnu* | -linux-android* \ | -linux-newlib* | -linux-musl* | -linux-uclibc* \ - | -uxpv* | -beos* | -mpeix* | -udk* \ + | -uxpv* | -beos* | -mpeix* | -udk* | -moxiebox* \ | -interix* | -uwin* | -mks* | -rhapsody* | -darwin* | -opened* \ | -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \ | -storm-chaos* | -tops10* | -tenex* | -tops20* | -its* \ | -os2* | -vos* | -palmos* | -uclinux* | -nucleus* \ | -morphos* | -superux* | -rtmk* | -rtmk-nova* | -windiss* \ | -powermax* | -dnix* | -nx6 | -nx7 | -sei* | -dragonfly* \ - | -skyos* | -haiku* | -rdos* | -toppers* | -drops* | -es*) + | -skyos* | -haiku* | -rdos* | -toppers* | -drops* | -es* | -tirtos*) # Remember, each alternative MUST END IN *, to match a version number. ;; -qnx*) @@ -1592,9 +1617,6 @@ mips*-*) os=-elf ;; - or1k-*) - os=-elf - ;; or32-*) os=-coff ;; diff -Nru cairo-1.14.6/build/configure.ac.features cairo-1.15.10/build/configure.ac.features --- cairo-1.14.6/build/configure.ac.features 2015-10-27 21:04:21.000000000 +0000 +++ cairo-1.15.10/build/configure.ac.features 2017-12-07 02:14:36.000000000 +0000 @@ -384,6 +384,7 @@ echo " SVG: $use_svg" echo " OpenGL: $use_gl" echo " OpenGL ES 2.0: $use_glesv2" + echo " OpenGL ES 3.0: $use_glesv3" echo " BeOS: $use_beos" echo " DirectFB: $use_directfb" echo " OpenVG: $use_vg" diff -Nru cairo-1.14.6/build/configure.ac.system cairo-1.15.10/build/configure.ac.system --- cairo-1.14.6/build/configure.ac.system 2015-10-27 21:04:21.000000000 +0000 +++ cairo-1.15.10/build/configure.ac.system 2017-12-07 02:14:36.000000000 +0000 @@ -108,11 +108,13 @@ dnl check for misc headers and functions AC_CHECK_HEADERS([libgen.h byteswap.h signal.h setjmp.h fenv.h sys/wait.h]) -AC_CHECK_FUNCS([ctime_r drand48 flockfile funlockfile getline link strndup]) - -dnl check for win32 headers (this detects mingw as well) -AC_CHECK_HEADERS([windows.h], have_windows=yes, have_windows=no) +AC_CHECK_FUNCS([ctime_r localtime_r gmtime_r drand48 flockfile funlockfile getline link strndup]) +dnl Check if the runtime platform is a native Win32 host. +AC_COMPILE_IFELSE([[ +#ifdef _WIN32 + choke me +#endif]], [have_windows=no], [have_windows=yes]) dnl Possible headers for mkdir AC_CHECK_HEADERS([sys/stat.h io.h]) diff -Nru cairo-1.14.6/build/depcomp cairo-1.15.10/build/depcomp --- cairo-1.14.6/build/depcomp 2015-10-27 21:04:21.000000000 +0000 +++ cairo-1.15.10/build/depcomp 2017-12-07 02:13:45.000000000 +0000 @@ -3,7 +3,7 @@ scriptversion=2013-05-30.07; # UTC -# Copyright (C) 1999-2013 Free Software Foundation, Inc. +# Copyright (C) 1999-2014 Free Software Foundation, Inc. # 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 diff -Nru cairo-1.14.6/build/install-sh cairo-1.15.10/build/install-sh --- cairo-1.14.6/build/install-sh 2015-10-27 21:04:21.000000000 +0000 +++ cairo-1.15.10/build/install-sh 2017-12-07 02:13:45.000000000 +0000 @@ -1,7 +1,7 @@ #!/bin/sh # install - install a program, script, or datafile -scriptversion=2011-11-20.07; # UTC +scriptversion=2014-09-12.12; # UTC # This originates from X11R5 (mit/util/scripts/install.sh), which was # later released in X11R6 (xc/config/util/install.sh) with the @@ -41,19 +41,15 @@ # This script is compatible with the BSD install script, but was written # from scratch. +tab=' ' nl=' ' -IFS=" "" $nl" +IFS=" $tab$nl" -# set DOITPROG to echo to test this script +# Set DOITPROG to "echo" to test this script. -# Don't use :- since 4.3BSD and earlier shells don't like it. doit=${DOITPROG-} -if test -z "$doit"; then - doit_exec=exec -else - doit_exec=$doit -fi +doit_exec=${doit:-exec} # Put in absolute file names if you don't have them in your path; # or use environment vars. @@ -68,17 +64,6 @@ rmprog=${RMPROG-rm} stripprog=${STRIPPROG-strip} -posix_glob='?' -initialize_posix_glob=' - test "$posix_glob" != "?" || { - if (set -f) 2>/dev/null; then - posix_glob= - else - posix_glob=: - fi - } -' - posix_mkdir= # Desired mode of installed file. @@ -97,7 +82,7 @@ dst_arg= copy_on_change=false -no_target_directory= +is_target_a_directory=possibly usage="\ Usage: $0 [OPTION]... [-T] SRCFILE DSTFILE @@ -137,46 +122,57 @@ -d) dir_arg=true;; -g) chgrpcmd="$chgrpprog $2" - shift;; + shift;; --help) echo "$usage"; exit $?;; -m) mode=$2 - case $mode in - *' '* | *' '* | *' -'* | *'*'* | *'?'* | *'['*) - echo "$0: invalid mode: $mode" >&2 - exit 1;; - esac - shift;; + case $mode in + *' '* | *"$tab"* | *"$nl"* | *'*'* | *'?'* | *'['*) + echo "$0: invalid mode: $mode" >&2 + exit 1;; + esac + shift;; -o) chowncmd="$chownprog $2" - shift;; + shift;; -s) stripcmd=$stripprog;; - -t) dst_arg=$2 - # Protect names problematic for 'test' and other utilities. - case $dst_arg in - -* | [=\(\)!]) dst_arg=./$dst_arg;; - esac - shift;; + -t) + is_target_a_directory=always + dst_arg=$2 + # Protect names problematic for 'test' and other utilities. + case $dst_arg in + -* | [=\(\)!]) dst_arg=./$dst_arg;; + esac + shift;; - -T) no_target_directory=true;; + -T) is_target_a_directory=never;; --version) echo "$0 $scriptversion"; exit $?;; - --) shift - break;; + --) shift + break;; - -*) echo "$0: invalid option: $1" >&2 - exit 1;; + -*) echo "$0: invalid option: $1" >&2 + exit 1;; *) break;; esac shift done +# We allow the use of options -d and -T together, by making -d +# take the precedence; this is for compatibility with GNU install. + +if test -n "$dir_arg"; then + if test -n "$dst_arg"; then + echo "$0: target directory not allowed when installing a directory." >&2 + exit 1 + fi +fi + if test $# -ne 0 && test -z "$dir_arg$dst_arg"; then # When -d is used, all remaining arguments are directories to create. # When -t is used, the destination is already specified. @@ -208,6 +204,15 @@ fi if test -z "$dir_arg"; then + if test $# -gt 1 || test "$is_target_a_directory" = always; then + if test ! -d "$dst_arg"; then + echo "$0: $dst_arg: Is not a directory." >&2 + exit 1 + fi + fi +fi + +if test -z "$dir_arg"; then do_exit='(exit $ret); exit $ret' trap "ret=129; $do_exit" 1 trap "ret=130; $do_exit" 2 @@ -223,16 +228,16 @@ *[0-7]) if test -z "$stripcmd"; then - u_plus_rw= + u_plus_rw= else - u_plus_rw='% 200' + u_plus_rw='% 200' fi cp_umask=`expr '(' 777 - $mode % 1000 ')' $u_plus_rw`;; *) if test -z "$stripcmd"; then - u_plus_rw= + u_plus_rw= else - u_plus_rw=,u+rw + u_plus_rw=,u+rw fi cp_umask=$mode$u_plus_rw;; esac @@ -269,41 +274,15 @@ # If destination is a directory, append the input filename; won't work # if double slashes aren't ignored. if test -d "$dst"; then - if test -n "$no_target_directory"; then - echo "$0: $dst_arg: Is a directory" >&2 - exit 1 + if test "$is_target_a_directory" = never; then + echo "$0: $dst_arg: Is a directory" >&2 + exit 1 fi dstdir=$dst dst=$dstdir/`basename "$src"` dstdir_status=0 else - # Prefer dirname, but fall back on a substitute if dirname fails. - dstdir=` - (dirname "$dst") 2>/dev/null || - expr X"$dst" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X"$dst" : 'X\(//\)[^/]' \| \ - X"$dst" : 'X\(//\)$' \| \ - X"$dst" : 'X\(/\)' \| . 2>/dev/null || - echo X"$dst" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ - s//\1/ - q - } - /^X\(\/\/\)[^/].*/{ - s//\1/ - q - } - /^X\(\/\/\)$/{ - s//\1/ - q - } - /^X\(\/\).*/{ - s//\1/ - q - } - s/.*/./; q' - ` - + dstdir=`dirname "$dst"` test -d "$dstdir" dstdir_status=$? fi @@ -314,74 +293,81 @@ if test $dstdir_status != 0; then case $posix_mkdir in '') - # Create intermediate dirs using mode 755 as modified by the umask. - # This is like FreeBSD 'install' as of 1997-10-28. - umask=`umask` - case $stripcmd.$umask in - # Optimize common cases. - *[2367][2367]) mkdir_umask=$umask;; - .*0[02][02] | .[02][02] | .[02]) mkdir_umask=22;; - - *[0-7]) - mkdir_umask=`expr $umask + 22 \ - - $umask % 100 % 40 + $umask % 20 \ - - $umask % 10 % 4 + $umask % 2 - `;; - *) mkdir_umask=$umask,go-w;; - esac - - # With -d, create the new directory with the user-specified mode. - # Otherwise, rely on $mkdir_umask. - if test -n "$dir_arg"; then - mkdir_mode=-m$mode - else - mkdir_mode= - fi - - posix_mkdir=false - case $umask in - *[123567][0-7][0-7]) - # POSIX mkdir -p sets u+wx bits regardless of umask, which - # is incompatible with FreeBSD 'install' when (umask & 300) != 0. - ;; - *) - tmpdir=${TMPDIR-/tmp}/ins$RANDOM-$$ - trap 'ret=$?; rmdir "$tmpdir/d" "$tmpdir" 2>/dev/null; exit $ret' 0 - - if (umask $mkdir_umask && - exec $mkdirprog $mkdir_mode -p -- "$tmpdir/d") >/dev/null 2>&1 - then - if test -z "$dir_arg" || { - # Check for POSIX incompatibilities with -m. - # HP-UX 11.23 and IRIX 6.5 mkdir -m -p sets group- or - # other-writable bit of parent directory when it shouldn't. - # FreeBSD 6.1 mkdir -m -p sets mode of existing directory. - ls_ld_tmpdir=`ls -ld "$tmpdir"` - case $ls_ld_tmpdir in - d????-?r-*) different_mode=700;; - d????-?--*) different_mode=755;; - *) false;; - esac && - $mkdirprog -m$different_mode -p -- "$tmpdir" && { - ls_ld_tmpdir_1=`ls -ld "$tmpdir"` - test "$ls_ld_tmpdir" = "$ls_ld_tmpdir_1" - } - } - then posix_mkdir=: - fi - rmdir "$tmpdir/d" "$tmpdir" - else - # Remove any dirs left behind by ancient mkdir implementations. - rmdir ./$mkdir_mode ./-p ./-- 2>/dev/null - fi - trap '' 0;; - esac;; + # Create intermediate dirs using mode 755 as modified by the umask. + # This is like FreeBSD 'install' as of 1997-10-28. + umask=`umask` + case $stripcmd.$umask in + # Optimize common cases. + *[2367][2367]) mkdir_umask=$umask;; + .*0[02][02] | .[02][02] | .[02]) mkdir_umask=22;; + + *[0-7]) + mkdir_umask=`expr $umask + 22 \ + - $umask % 100 % 40 + $umask % 20 \ + - $umask % 10 % 4 + $umask % 2 + `;; + *) mkdir_umask=$umask,go-w;; + esac + + # With -d, create the new directory with the user-specified mode. + # Otherwise, rely on $mkdir_umask. + if test -n "$dir_arg"; then + mkdir_mode=-m$mode + else + mkdir_mode= + fi + + posix_mkdir=false + case $umask in + *[123567][0-7][0-7]) + # POSIX mkdir -p sets u+wx bits regardless of umask, which + # is incompatible with FreeBSD 'install' when (umask & 300) != 0. + ;; + *) + # $RANDOM is not portable (e.g. dash); use it when possible to + # lower collision chance + tmpdir=${TMPDIR-/tmp}/ins$RANDOM-$$ + trap 'ret=$?; rmdir "$tmpdir/a/b" "$tmpdir/a" "$tmpdir" 2>/dev/null; exit $ret' 0 + + # As "mkdir -p" follows symlinks and we work in /tmp possibly; so + # create the $tmpdir first (and fail if unsuccessful) to make sure + # that nobody tries to guess the $tmpdir name. + if (umask $mkdir_umask && + $mkdirprog $mkdir_mode "$tmpdir" && + exec $mkdirprog $mkdir_mode -p -- "$tmpdir/a/b") >/dev/null 2>&1 + then + if test -z "$dir_arg" || { + # Check for POSIX incompatibilities with -m. + # HP-UX 11.23 and IRIX 6.5 mkdir -m -p sets group- or + # other-writable bit of parent directory when it shouldn't. + # FreeBSD 6.1 mkdir -m -p sets mode of existing directory. + test_tmpdir="$tmpdir/a" + ls_ld_tmpdir=`ls -ld "$test_tmpdir"` + case $ls_ld_tmpdir in + d????-?r-*) different_mode=700;; + d????-?--*) different_mode=755;; + *) false;; + esac && + $mkdirprog -m$different_mode -p -- "$test_tmpdir" && { + ls_ld_tmpdir_1=`ls -ld "$test_tmpdir"` + test "$ls_ld_tmpdir" = "$ls_ld_tmpdir_1" + } + } + then posix_mkdir=: + fi + rmdir "$tmpdir/a/b" "$tmpdir/a" "$tmpdir" + else + # Remove any dirs left behind by ancient mkdir implementations. + rmdir ./$mkdir_mode ./-p ./-- "$tmpdir" 2>/dev/null + fi + trap '' 0;; + esac;; esac if $posix_mkdir && ( - umask $mkdir_umask && - $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir" + umask $mkdir_umask && + $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir" ) then : else @@ -391,53 +377,51 @@ # directory the slow way, step by step, checking for races as we go. case $dstdir in - /*) prefix='/';; - [-=\(\)!]*) prefix='./';; - *) prefix='';; + /*) prefix='/';; + [-=\(\)!]*) prefix='./';; + *) prefix='';; esac - eval "$initialize_posix_glob" - oIFS=$IFS IFS=/ - $posix_glob set -f + set -f set fnord $dstdir shift - $posix_glob set +f + set +f IFS=$oIFS prefixes= for d do - test X"$d" = X && continue + test X"$d" = X && continue - prefix=$prefix$d - if test -d "$prefix"; then - prefixes= - else - if $posix_mkdir; then - (umask=$mkdir_umask && - $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir") && break - # Don't fail if two instances are running concurrently. - test -d "$prefix" || exit 1 - else - case $prefix in - *\'*) qprefix=`echo "$prefix" | sed "s/'/'\\\\\\\\''/g"`;; - *) qprefix=$prefix;; - esac - prefixes="$prefixes '$qprefix'" - fi - fi - prefix=$prefix/ + prefix=$prefix$d + if test -d "$prefix"; then + prefixes= + else + if $posix_mkdir; then + (umask=$mkdir_umask && + $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir") && break + # Don't fail if two instances are running concurrently. + test -d "$prefix" || exit 1 + else + case $prefix in + *\'*) qprefix=`echo "$prefix" | sed "s/'/'\\\\\\\\''/g"`;; + *) qprefix=$prefix;; + esac + prefixes="$prefixes '$qprefix'" + fi + fi + prefix=$prefix/ done if test -n "$prefixes"; then - # Don't fail if two instances are running concurrently. - (umask $mkdir_umask && - eval "\$doit_exec \$mkdirprog $prefixes") || - test -d "$dstdir" || exit 1 - obsolete_mkdir_used=true + # Don't fail if two instances are running concurrently. + (umask $mkdir_umask && + eval "\$doit_exec \$mkdirprog $prefixes") || + test -d "$dstdir" || exit 1 + obsolete_mkdir_used=true fi fi fi @@ -472,15 +456,12 @@ # If -C, don't bother to copy if it wouldn't change the file. if $copy_on_change && - old=`LC_ALL=C ls -dlL "$dst" 2>/dev/null` && - new=`LC_ALL=C ls -dlL "$dsttmp" 2>/dev/null` && - - eval "$initialize_posix_glob" && - $posix_glob set -f && + old=`LC_ALL=C ls -dlL "$dst" 2>/dev/null` && + new=`LC_ALL=C ls -dlL "$dsttmp" 2>/dev/null` && + set -f && set X $old && old=:$2:$4:$5:$6 && set X $new && new=:$2:$4:$5:$6 && - $posix_glob set +f && - + set +f && test "$old" = "$new" && $cmpprog "$dst" "$dsttmp" >/dev/null 2>&1 then @@ -493,24 +474,24 @@ # to itself, or perhaps because mv is so ancient that it does not # support -f. { - # Now remove or move aside any old file at destination location. - # We try this two ways since rm can't unlink itself on some - # systems and the destination file might be busy for other - # reasons. In this case, the final cleanup might fail but the new - # file should still install successfully. - { - test ! -f "$dst" || - $doit $rmcmd -f "$dst" 2>/dev/null || - { $doit $mvcmd -f "$dst" "$rmtmp" 2>/dev/null && - { $doit $rmcmd -f "$rmtmp" 2>/dev/null; :; } - } || - { echo "$0: cannot unlink or rename $dst" >&2 - (exit 1); exit 1 - } - } && + # Now remove or move aside any old file at destination location. + # We try this two ways since rm can't unlink itself on some + # systems and the destination file might be busy for other + # reasons. In this case, the final cleanup might fail but the new + # file should still install successfully. + { + test ! -f "$dst" || + $doit $rmcmd -f "$dst" 2>/dev/null || + { $doit $mvcmd -f "$dst" "$rmtmp" 2>/dev/null && + { $doit $rmcmd -f "$rmtmp" 2>/dev/null; :; } + } || + { echo "$0: cannot unlink or rename $dst" >&2 + (exit 1); exit 1 + } + } && - # Now rename the file to the real destination. - $doit $mvcmd "$dsttmp" "$dst" + # Now rename the file to the real destination. + $doit $mvcmd "$dsttmp" "$dst" } fi || exit 1 diff -Nru cairo-1.14.6/build/libtool.m4 cairo-1.15.10/build/libtool.m4 --- cairo-1.14.6/build/libtool.m4 2015-10-27 21:04:21.000000000 +0000 +++ cairo-1.15.10/build/libtool.m4 2017-12-07 02:13:45.000000000 +0000 @@ -1,8 +1,6 @@ # libtool.m4 - Configure libtool for the host system. -*-Autoconf-*- # -# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, -# 2006, 2007, 2008, 2009, 2010, 2011 Free Software -# Foundation, Inc. +# Copyright (C) 1996-2001, 2003-2015 Free Software Foundation, Inc. # Written by Gordon Matzigkeit, 1996 # # This file is free software; the Free Software Foundation gives @@ -10,36 +8,30 @@ # modifications, as long as this notice is preserved. m4_define([_LT_COPYING], [dnl -# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, -# 2006, 2007, 2008, 2009, 2010, 2011 Free Software -# Foundation, Inc. -# Written by Gordon Matzigkeit, 1996 -# -# This file is part of GNU Libtool. -# -# GNU Libtool 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 of -# the License, or (at your option) any later version. +# Copyright (C) 2014 Free Software Foundation, Inc. +# This is free software; see the source for copying conditions. There is NO +# warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + +# GNU Libtool 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 of of the License, or +# (at your option) any later version. # -# As a special exception to the GNU General Public License, -# if you distribute this file as part of a program or library that -# is built using GNU Libtool, you may include this file under the -# same distribution terms that you use for the rest of that program. +# As a special exception to the GNU General Public License, if you +# distribute this file as part of a program or library that is built +# using GNU Libtool, you may include this file under the same +# distribution terms that you use for the rest of that program. # -# GNU Libtool is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of +# GNU Libtool 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 GNU Libtool; see the file COPYING. If not, a copy -# can be downloaded from http://www.gnu.org/licenses/gpl.html, or -# obtained by writing to the Free Software Foundation, Inc., -# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +# along with this program. If not, see . ]) -# serial 57 LT_INIT +# serial 58 LT_INIT # LT_PREREQ(VERSION) @@ -67,7 +59,7 @@ # LT_INIT([OPTIONS]) # ------------------ AC_DEFUN([LT_INIT], -[AC_PREREQ([2.58])dnl We use AC_INCLUDES_DEFAULT +[AC_PREREQ([2.62])dnl We use AC_PATH_PROGS_FEATURE_CHECK AC_REQUIRE([AC_CONFIG_AUX_DIR_DEFAULT])dnl AC_BEFORE([$0], [LT_LANG])dnl AC_BEFORE([$0], [LT_OUTPUT])dnl @@ -91,7 +83,7 @@ _LT_SET_OPTIONS([$0], [$1]) # This can be used to rebuild libtool when needed -LIBTOOL_DEPS="$ltmain" +LIBTOOL_DEPS=$ltmain # Always use our own libtool. LIBTOOL='$(SHELL) $(top_builddir)/libtool' @@ -111,26 +103,43 @@ dnl AC_DEFUN([AM_PROG_LIBTOOL], []) +# _LT_PREPARE_CC_BASENAME +# ----------------------- +m4_defun([_LT_PREPARE_CC_BASENAME], [ +# Calculate cc_basename. Skip known compiler wrappers and cross-prefix. +func_cc_basename () +{ + for cc_temp in @S|@*""; do + case $cc_temp in + compile | *[[\\/]]compile | ccache | *[[\\/]]ccache ) ;; + distcc | *[[\\/]]distcc | purify | *[[\\/]]purify ) ;; + \-*) ;; + *) break;; + esac + done + func_cc_basename_result=`$ECHO "$cc_temp" | $SED "s%.*/%%; s%^$host_alias-%%"` +} +])# _LT_PREPARE_CC_BASENAME + + # _LT_CC_BASENAME(CC) # ------------------- -# Calculate cc_basename. Skip known compiler wrappers and cross-prefix. +# It would be clearer to call AC_REQUIREs from _LT_PREPARE_CC_BASENAME, +# but that macro is also expanded into generated libtool script, which +# arranges for $SED and $ECHO to be set by different means. m4_defun([_LT_CC_BASENAME], -[for cc_temp in $1""; do - case $cc_temp in - compile | *[[\\/]]compile | ccache | *[[\\/]]ccache ) ;; - distcc | *[[\\/]]distcc | purify | *[[\\/]]purify ) ;; - \-*) ;; - *) break;; - esac -done -cc_basename=`$ECHO "$cc_temp" | $SED "s%.*/%%; s%^$host_alias-%%"` +[m4_require([_LT_PREPARE_CC_BASENAME])dnl +AC_REQUIRE([_LT_DECL_SED])dnl +AC_REQUIRE([_LT_PROG_ECHO_BACKSLASH])dnl +func_cc_basename $1 +cc_basename=$func_cc_basename_result ]) # _LT_FILEUTILS_DEFAULTS # ---------------------- # It is okay to use these file commands and assume they have been set -# sensibly after `m4_require([_LT_FILEUTILS_DEFAULTS])'. +# sensibly after 'm4_require([_LT_FILEUTILS_DEFAULTS])'. m4_defun([_LT_FILEUTILS_DEFAULTS], [: ${CP="cp -f"} : ${MV="mv -f"} @@ -177,15 +186,16 @@ m4_require([_LT_CMD_OLD_ARCHIVE])dnl m4_require([_LT_CMD_GLOBAL_SYMBOLS])dnl m4_require([_LT_WITH_SYSROOT])dnl +m4_require([_LT_CMD_TRUNCATE])dnl _LT_CONFIG_LIBTOOL_INIT([ -# See if we are running on zsh, and set the options which allow our +# See if we are running on zsh, and set the options that allow our # commands through without removal of \ escapes INIT. -if test -n "\${ZSH_VERSION+set}" ; then +if test -n "\${ZSH_VERSION+set}"; then setopt NO_GLOB_SUBST fi ]) -if test -n "${ZSH_VERSION+set}" ; then +if test -n "${ZSH_VERSION+set}"; then setopt NO_GLOB_SUBST fi @@ -198,7 +208,7 @@ # AIX sometimes has problems with the GCC collect2 program. For some # reason, if we set the COLLECT_NAMES environment variable, the problems # vanish in a puff of smoke. - if test "X${COLLECT_NAMES+set}" != Xset; then + if test set != "${COLLECT_NAMES+set}"; then COLLECT_NAMES= export COLLECT_NAMES fi @@ -209,14 +219,14 @@ ofile=libtool can_build_shared=yes -# All known linkers require a `.a' archive for static linking (except MSVC, +# All known linkers require a '.a' archive for static linking (except MSVC, # which needs '.lib'). libext=a -with_gnu_ld="$lt_cv_prog_gnu_ld" +with_gnu_ld=$lt_cv_prog_gnu_ld -old_CC="$CC" -old_CFLAGS="$CFLAGS" +old_CC=$CC +old_CFLAGS=$CFLAGS # Set sane defaults for various variables test -z "$CC" && CC=cc @@ -269,14 +279,14 @@ # _LT_PROG_LTMAIN # --------------- -# Note that this code is called both from `configure', and `config.status' +# Note that this code is called both from 'configure', and 'config.status' # now that we use AC_CONFIG_COMMANDS to generate libtool. Notably, -# `config.status' has no value for ac_aux_dir unless we are using Automake, +# 'config.status' has no value for ac_aux_dir unless we are using Automake, # so we pass a copy along to make sure it has a sensible value anyway. m4_defun([_LT_PROG_LTMAIN], [m4_ifdef([AC_REQUIRE_AUX_FILE], [AC_REQUIRE_AUX_FILE([ltmain.sh])])dnl _LT_CONFIG_LIBTOOL_INIT([ac_aux_dir='$ac_aux_dir']) -ltmain="$ac_aux_dir/ltmain.sh" +ltmain=$ac_aux_dir/ltmain.sh ])# _LT_PROG_LTMAIN @@ -286,7 +296,7 @@ # So that we can recreate a full libtool script including additional # tags, we accumulate the chunks of code to send to AC_CONFIG_COMMANDS -# in macros and then make a single call at the end using the `libtool' +# in macros and then make a single call at the end using the 'libtool' # label. @@ -421,8 +431,8 @@ # _LT_CONFIG_STATUS_DECLARE([VARNAME]) # ------------------------------------ -# Quote a variable value, and forward it to `config.status' so that its -# declaration there will have the same value as in `configure'. VARNAME +# Quote a variable value, and forward it to 'config.status' so that its +# declaration there will have the same value as in 'configure'. VARNAME # must have a single quote delimited value for this to work. m4_define([_LT_CONFIG_STATUS_DECLARE], [$1='`$ECHO "$][$1" | $SED "$delay_single_quote_subst"`']) @@ -446,7 +456,7 @@ # Output comment and list of tags supported by the script m4_defun([_LT_LIBTOOL_TAGS], [_LT_FORMAT_COMMENT([The names of the tagged configurations supported by this script])dnl -available_tags="_LT_TAGS"dnl +available_tags='_LT_TAGS'dnl ]) @@ -474,7 +484,7 @@ # _LT_LIBTOOL_CONFIG_VARS # ----------------------- # Produce commented declarations of non-tagged libtool config variables -# suitable for insertion in the LIBTOOL CONFIG section of the `libtool' +# suitable for insertion in the LIBTOOL CONFIG section of the 'libtool' # script. Tagged libtool config variables (even for the LIBTOOL CONFIG # section) are produced by _LT_LIBTOOL_TAG_VARS. m4_defun([_LT_LIBTOOL_CONFIG_VARS], @@ -500,8 +510,8 @@ # Send accumulated output to $CONFIG_STATUS. Thanks to the lists of # variables for single and double quote escaping we saved from calls # to _LT_DECL, we can put quote escaped variables declarations -# into `config.status', and then the shell code to quote escape them in -# for loops in `config.status'. Finally, any additional code accumulated +# into 'config.status', and then the shell code to quote escape them in +# for loops in 'config.status'. Finally, any additional code accumulated # from calls to _LT_CONFIG_LIBTOOL_INIT is expanded. m4_defun([_LT_CONFIG_COMMANDS], [AC_PROVIDE_IFELSE([LT_OUTPUT], @@ -547,7 +557,7 @@ ]], lt_decl_quote_varnames); do case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in *[[\\\\\\\`\\"\\\$]]*) - eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED \\"\\\$sed_quote_subst\\"\\\`\\\\\\"" + eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED \\"\\\$sed_quote_subst\\"\\\`\\\\\\"" ## exclude from sc_prohibit_nested_quotes ;; *) eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\"" @@ -560,7 +570,7 @@ ]], lt_decl_dquote_varnames); do case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in *[[\\\\\\\`\\"\\\$]]*) - eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED -e \\"\\\$double_quote_subst\\" -e \\"\\\$sed_quote_subst\\" -e \\"\\\$delay_variable_subst\\"\\\`\\\\\\"" + eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED -e \\"\\\$double_quote_subst\\" -e \\"\\\$sed_quote_subst\\" -e \\"\\\$delay_variable_subst\\"\\\`\\\\\\"" ## exclude from sc_prohibit_nested_quotes ;; *) eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\"" @@ -576,7 +586,7 @@ # Generate a child script FILE with all initialization necessary to # reuse the environment learned by the parent script, and make the # file executable. If COMMENT is supplied, it is inserted after the -# `#!' sequence but before initialization text begins. After this +# '#!' sequence but before initialization text begins. After this # macro, additional text can be appended to FILE to form the body of # the child script. The macro ends with non-zero status if the # file could not be fully written (such as if the disk is full). @@ -598,7 +608,7 @@ _AS_PREPARE exec AS_MESSAGE_FD>&1 _ASEOF -test $lt_write_fail = 0 && chmod +x $1[]dnl +test 0 = "$lt_write_fail" && chmod +x $1[]dnl m4_popdef([AS_MESSAGE_LOG_FD])])])# _LT_GENERATED_FILE_INIT # LT_OUTPUT @@ -621,7 +631,7 @@ } >&AS_MESSAGE_LOG_FD lt_cl_help="\ -\`$as_me' creates a local libtool stub from the current configuration, +'$as_me' creates a local libtool stub from the current configuration, for use in further configure time tests before the real libtool is generated. @@ -643,7 +653,7 @@ This config.lt script is free software; the Free Software Foundation gives unlimited permision to copy, distribute and modify it." -while test $[#] != 0 +while test 0 != $[#] do case $[1] in --version | --v* | -V ) @@ -656,10 +666,10 @@ lt_cl_silent=: ;; -*) AC_MSG_ERROR([unrecognized option: $[1] -Try \`$[0] --help' for more information.]) ;; +Try '$[0] --help' for more information.]) ;; *) AC_MSG_ERROR([unrecognized argument: $[1] -Try \`$[0] --help' for more information.]) ;; +Try '$[0] --help' for more information.]) ;; esac shift done @@ -685,7 +695,7 @@ # open by configure. Here we exec the FD to /dev/null, effectively closing # config.log, so it can be properly (re)opened and appended to by config.lt. lt_cl_success=: -test "$silent" = yes && +test yes = "$silent" && lt_config_lt_args="$lt_config_lt_args --quiet" exec AS_MESSAGE_LOG_FD>/dev/null $SHELL "$CONFIG_LT" $lt_config_lt_args || lt_cl_success=false @@ -705,27 +715,31 @@ _LT_CONFIG_SAVE_COMMANDS([ m4_define([_LT_TAG], m4_if([$1], [], [C], [$1]))dnl m4_if(_LT_TAG, [C], [ - # See if we are running on zsh, and set the options which allow our + # See if we are running on zsh, and set the options that allow our # commands through without removal of \ escapes. - if test -n "${ZSH_VERSION+set}" ; then + if test -n "${ZSH_VERSION+set}"; then setopt NO_GLOB_SUBST fi - cfgfile="${ofile}T" + cfgfile=${ofile}T trap "$RM \"$cfgfile\"; exit 1" 1 2 15 $RM "$cfgfile" cat <<_LT_EOF >> "$cfgfile" #! $SHELL - -# `$ECHO "$ofile" | sed 's%^.*/%%'` - Provide generalized library-building support services. -# Generated automatically by $as_me ($PACKAGE$TIMESTAMP) $VERSION +# Generated automatically by $as_me ($PACKAGE) $VERSION # Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`: # NOTE: Changes made to this file will be lost: look at ltmain.sh. -# + +# Provide generalized library-building support services. +# Written by Gordon Matzigkeit, 1996 + _LT_COPYING _LT_LIBTOOL_TAGS +# Configured defaults for sys_lib_dlsearch_path munging. +: \${LT_SYS_LIBRARY_PATH="$configure_time_lt_sys_library_path"} + # ### BEGIN LIBTOOL CONFIG _LT_LIBTOOL_CONFIG_VARS _LT_LIBTOOL_TAG_VARS @@ -733,13 +747,24 @@ _LT_EOF + cat <<'_LT_EOF' >> "$cfgfile" + +# ### BEGIN FUNCTIONS SHARED WITH CONFIGURE + +_LT_PREPARE_MUNGE_PATH_LIST +_LT_PREPARE_CC_BASENAME + +# ### END FUNCTIONS SHARED WITH CONFIGURE + +_LT_EOF + case $host_os in aix3*) cat <<\_LT_EOF >> "$cfgfile" # AIX sometimes has problems with the GCC collect2 program. For some # reason, if we set the COLLECT_NAMES environment variable, the problems # vanish in a puff of smoke. -if test "X${COLLECT_NAMES+set}" != Xset; then +if test set != "${COLLECT_NAMES+set}"; then COLLECT_NAMES= export COLLECT_NAMES fi @@ -756,8 +781,6 @@ sed '$q' "$ltmain" >> "$cfgfile" \ || (rm -f "$cfgfile"; exit 1) - _LT_PROG_REPLACE_SHELLFNS - mv -f "$cfgfile" "$ofile" || (rm -f "$ofile" && cp "$cfgfile" "$ofile" && rm -f "$cfgfile") chmod +x "$ofile" @@ -775,7 +798,6 @@ [m4_if([$1], [], [ PACKAGE='$PACKAGE' VERSION='$VERSION' - TIMESTAMP='$TIMESTAMP' RM='$RM' ofile='$ofile'], []) ])dnl /_LT_CONFIG_SAVE_COMMANDS @@ -974,7 +996,7 @@ AC_CACHE_CHECK([for -single_module linker flag],[lt_cv_apple_cc_single_mod], [lt_cv_apple_cc_single_mod=no - if test -z "${LT_MULTI_MODULE}"; then + if test -z "$LT_MULTI_MODULE"; then # By default we will add the -single_module flag. You can override # by either setting the environment variable LT_MULTI_MODULE # non-empty at configure time, or by adding -multi_module to the @@ -992,7 +1014,7 @@ cat conftest.err >&AS_MESSAGE_LOG_FD # Otherwise, if the output was created with a 0 exit code from # the compiler, it worked. - elif test -f libconftest.dylib && test $_lt_result -eq 0; then + elif test -f libconftest.dylib && test 0 = "$_lt_result"; then lt_cv_apple_cc_single_mod=yes else cat conftest.err >&AS_MESSAGE_LOG_FD @@ -1010,7 +1032,7 @@ AC_LINK_IFELSE([AC_LANG_PROGRAM([],[])], [lt_cv_ld_exported_symbols_list=yes], [lt_cv_ld_exported_symbols_list=no]) - LDFLAGS="$save_LDFLAGS" + LDFLAGS=$save_LDFLAGS ]) AC_CACHE_CHECK([for -force_load linker flag],[lt_cv_ld_force_load], @@ -1032,7 +1054,7 @@ _lt_result=$? if test -s conftest.err && $GREP force_load conftest.err; then cat conftest.err >&AS_MESSAGE_LOG_FD - elif test -f conftest && test $_lt_result -eq 0 && $GREP forced_load conftest >/dev/null 2>&1 ; then + elif test -f conftest && test 0 = "$_lt_result" && $GREP forced_load conftest >/dev/null 2>&1; then lt_cv_ld_force_load=yes else cat conftest.err >&AS_MESSAGE_LOG_FD @@ -1042,32 +1064,32 @@ ]) case $host_os in rhapsody* | darwin1.[[012]]) - _lt_dar_allow_undefined='${wl}-undefined ${wl}suppress' ;; + _lt_dar_allow_undefined='$wl-undefined ${wl}suppress' ;; darwin1.*) - _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;; + _lt_dar_allow_undefined='$wl-flat_namespace $wl-undefined ${wl}suppress' ;; darwin*) # darwin 5.x on # if running on 10.5 or later, the deployment target defaults # to the OS version, if on x86, and 10.4, the deployment # target defaults to 10.4. Don't you love it? case ${MACOSX_DEPLOYMENT_TARGET-10.0},$host in 10.0,*86*-darwin8*|10.0,*-darwin[[91]]*) - _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;; - 10.[[012]]*) - _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;; + _lt_dar_allow_undefined='$wl-undefined ${wl}dynamic_lookup' ;; + 10.[[012]][[,.]]*) + _lt_dar_allow_undefined='$wl-flat_namespace $wl-undefined ${wl}suppress' ;; 10.*) - _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;; + _lt_dar_allow_undefined='$wl-undefined ${wl}dynamic_lookup' ;; esac ;; esac - if test "$lt_cv_apple_cc_single_mod" = "yes"; then + if test yes = "$lt_cv_apple_cc_single_mod"; then _lt_dar_single_mod='$single_module' fi - if test "$lt_cv_ld_exported_symbols_list" = "yes"; then - _lt_dar_export_syms=' ${wl}-exported_symbols_list,$output_objdir/${libname}-symbols.expsym' + if test yes = "$lt_cv_ld_exported_symbols_list"; then + _lt_dar_export_syms=' $wl-exported_symbols_list,$output_objdir/$libname-symbols.expsym' else - _lt_dar_export_syms='~$NMEDIT -s $output_objdir/${libname}-symbols.expsym ${lib}' + _lt_dar_export_syms='~$NMEDIT -s $output_objdir/$libname-symbols.expsym $lib' fi - if test "$DSYMUTIL" != ":" && test "$lt_cv_ld_force_load" = "no"; then + if test : != "$DSYMUTIL" && test no = "$lt_cv_ld_force_load"; then _lt_dsymutil='~$DSYMUTIL $lib || :' else _lt_dsymutil= @@ -1087,29 +1109,29 @@ _LT_TAGVAR(hardcode_direct, $1)=no _LT_TAGVAR(hardcode_automatic, $1)=yes _LT_TAGVAR(hardcode_shlibpath_var, $1)=unsupported - if test "$lt_cv_ld_force_load" = "yes"; then - _LT_TAGVAR(whole_archive_flag_spec, $1)='`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience ${wl}-force_load,$conv\"; done; func_echo_all \"$new_convenience\"`' + if test yes = "$lt_cv_ld_force_load"; then + _LT_TAGVAR(whole_archive_flag_spec, $1)='`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience $wl-force_load,$conv\"; done; func_echo_all \"$new_convenience\"`' m4_case([$1], [F77], [_LT_TAGVAR(compiler_needs_object, $1)=yes], [FC], [_LT_TAGVAR(compiler_needs_object, $1)=yes]) else _LT_TAGVAR(whole_archive_flag_spec, $1)='' fi _LT_TAGVAR(link_all_deplibs, $1)=yes - _LT_TAGVAR(allow_undefined_flag, $1)="$_lt_dar_allow_undefined" + _LT_TAGVAR(allow_undefined_flag, $1)=$_lt_dar_allow_undefined case $cc_basename in - ifort*) _lt_dar_can_shared=yes ;; + ifort*|nagfor*) _lt_dar_can_shared=yes ;; *) _lt_dar_can_shared=$GCC ;; esac - if test "$_lt_dar_can_shared" = "yes"; then + if test yes = "$_lt_dar_can_shared"; then output_verbose_link_cmd=func_echo_all - _LT_TAGVAR(archive_cmds, $1)="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod${_lt_dsymutil}" - _LT_TAGVAR(module_cmds, $1)="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dsymutil}" - _LT_TAGVAR(archive_expsym_cmds, $1)="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring ${_lt_dar_single_mod}${_lt_dar_export_syms}${_lt_dsymutil}" - _LT_TAGVAR(module_expsym_cmds, $1)="sed -e 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dar_export_syms}${_lt_dsymutil}" + _LT_TAGVAR(archive_cmds, $1)="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod$_lt_dsymutil" + _LT_TAGVAR(module_cmds, $1)="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags$_lt_dsymutil" + _LT_TAGVAR(archive_expsym_cmds, $1)="sed 's|^|_|' < \$export_symbols > \$output_objdir/\$libname-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod$_lt_dar_export_syms$_lt_dsymutil" + _LT_TAGVAR(module_expsym_cmds, $1)="sed -e 's|^|_|' < \$export_symbols > \$output_objdir/\$libname-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags$_lt_dar_export_syms$_lt_dsymutil" m4_if([$1], [CXX], -[ if test "$lt_cv_apple_cc_single_mod" != "yes"; then - _LT_TAGVAR(archive_cmds, $1)="\$CC -r -keep_private_externs -nostdlib -o \${lib}-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \${lib}-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring${_lt_dsymutil}" - _LT_TAGVAR(archive_expsym_cmds, $1)="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -r -keep_private_externs -nostdlib -o \${lib}-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \${lib}-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring${_lt_dar_export_syms}${_lt_dsymutil}" +[ if test yes != "$lt_cv_apple_cc_single_mod"; then + _LT_TAGVAR(archive_cmds, $1)="\$CC -r -keep_private_externs -nostdlib -o \$lib-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$lib-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring$_lt_dsymutil" + _LT_TAGVAR(archive_expsym_cmds, $1)="sed 's|^|_|' < \$export_symbols > \$output_objdir/\$libname-symbols.expsym~\$CC -r -keep_private_externs -nostdlib -o \$lib-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$lib-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring$_lt_dar_export_syms$_lt_dsymutil" fi ],[]) else @@ -1129,7 +1151,7 @@ # Allow to override them for all tags through lt_cv_aix_libpath. m4_defun([_LT_SYS_MODULE_PATH_AIX], [m4_require([_LT_DECL_SED])dnl -if test "${lt_cv_aix_libpath+set}" = set; then +if test set = "${lt_cv_aix_libpath+set}"; then aix_libpath=$lt_cv_aix_libpath else AC_CACHE_VAL([_LT_TAGVAR([lt_cv_aix_libpath_], [$1])], @@ -1147,7 +1169,7 @@ _LT_TAGVAR([lt_cv_aix_libpath_], [$1])=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` fi],[]) if test -z "$_LT_TAGVAR([lt_cv_aix_libpath_], [$1])"; then - _LT_TAGVAR([lt_cv_aix_libpath_], [$1])="/usr/lib:/lib" + _LT_TAGVAR([lt_cv_aix_libpath_], [$1])=/usr/lib:/lib fi ]) aix_libpath=$_LT_TAGVAR([lt_cv_aix_libpath_], [$1]) @@ -1167,8 +1189,8 @@ # ----------------------- # Find how we can fake an echo command that does not interpret backslash. # In particular, with Autoconf 2.60 or later we add some code to the start -# of the generated configure script which will find a shell with a builtin -# printf (which we can use as an echo command). +# of the generated configure script that will find a shell with a builtin +# printf (that we can use as an echo command). m4_defun([_LT_PROG_ECHO_BACKSLASH], [ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO @@ -1196,10 +1218,10 @@ # Invoke $ECHO with all args, space-separated. func_echo_all () { - $ECHO "$*" + $ECHO "$*" } -case "$ECHO" in +case $ECHO in printf*) AC_MSG_RESULT([printf]) ;; print*) AC_MSG_RESULT([print -r]) ;; *) AC_MSG_RESULT([cat]) ;; @@ -1225,16 +1247,17 @@ AC_DEFUN([_LT_WITH_SYSROOT], [AC_MSG_CHECKING([for sysroot]) AC_ARG_WITH([sysroot], -[ --with-sysroot[=DIR] Search for dependent libraries within DIR - (or the compiler's sysroot if not specified).], +[AS_HELP_STRING([--with-sysroot@<:@=DIR@:>@], + [Search for dependent libraries within DIR (or the compiler's sysroot + if not specified).])], [], [with_sysroot=no]) dnl lt_sysroot will always be passed unquoted. We quote it here dnl in case the user passed a directory name. lt_sysroot= -case ${with_sysroot} in #( +case $with_sysroot in #( yes) - if test "$GCC" = yes; then + if test yes = "$GCC"; then lt_sysroot=`$CC --print-sysroot 2>/dev/null` fi ;; #( @@ -1244,14 +1267,14 @@ no|'') ;; #( *) - AC_MSG_RESULT([${with_sysroot}]) + AC_MSG_RESULT([$with_sysroot]) AC_MSG_ERROR([The sysroot must be an absolute path.]) ;; esac AC_MSG_RESULT([${lt_sysroot:-no}]) _LT_DECL([], [lt_sysroot], [0], [The root where to search for ]dnl -[dependent libraries, and in which our libraries should be installed.])]) +[dependent libraries, and where our libraries should be installed.])]) # _LT_ENABLE_LOCK # --------------- @@ -1259,31 +1282,33 @@ [AC_ARG_ENABLE([libtool-lock], [AS_HELP_STRING([--disable-libtool-lock], [avoid locking (might break parallel builds)])]) -test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes +test no = "$enable_libtool_lock" || enable_libtool_lock=yes # Some flags need to be propagated to the compiler or linker for good # libtool support. case $host in ia64-*-hpux*) - # Find out which ABI we are using. + # Find out what ABI is being produced by ac_compile, and set mode + # options accordingly. echo 'int i;' > conftest.$ac_ext if AC_TRY_EVAL(ac_compile); then case `/usr/bin/file conftest.$ac_objext` in *ELF-32*) - HPUX_IA64_MODE="32" + HPUX_IA64_MODE=32 ;; *ELF-64*) - HPUX_IA64_MODE="64" + HPUX_IA64_MODE=64 ;; esac fi rm -rf conftest* ;; *-*-irix6*) - # Find out which ABI we are using. + # Find out what ABI is being produced by ac_compile, and set linker + # options accordingly. echo '[#]line '$LINENO' "configure"' > conftest.$ac_ext if AC_TRY_EVAL(ac_compile); then - if test "$lt_cv_prog_gnu_ld" = yes; then + if test yes = "$lt_cv_prog_gnu_ld"; then case `/usr/bin/file conftest.$ac_objext` in *32-bit*) LD="${LD-ld} -melf32bsmip" @@ -1312,9 +1337,46 @@ rm -rf conftest* ;; +mips64*-*linux*) + # Find out what ABI is being produced by ac_compile, and set linker + # options accordingly. + echo '[#]line '$LINENO' "configure"' > conftest.$ac_ext + if AC_TRY_EVAL(ac_compile); then + emul=elf + case `/usr/bin/file conftest.$ac_objext` in + *32-bit*) + emul="${emul}32" + ;; + *64-bit*) + emul="${emul}64" + ;; + esac + case `/usr/bin/file conftest.$ac_objext` in + *MSB*) + emul="${emul}btsmip" + ;; + *LSB*) + emul="${emul}ltsmip" + ;; + esac + case `/usr/bin/file conftest.$ac_objext` in + *N32*) + emul="${emul}n32" + ;; + esac + LD="${LD-ld} -m $emul" + fi + rm -rf conftest* + ;; + x86_64-*kfreebsd*-gnu|x86_64-*linux*|powerpc*-*linux*| \ s390*-*linux*|s390*-*tpf*|sparc*-*linux*) - # Find out which ABI we are using. + # Find out what ABI is being produced by ac_compile, and set linker + # options accordingly. Note that the listed cases only cover the + # situations where additional linker options are needed (such as when + # doing 32-bit compilation for a host where ld defaults to 64-bit, or + # vice versa); the common cases where no linker options are needed do + # not appear in the list. echo 'int i;' > conftest.$ac_ext if AC_TRY_EVAL(ac_compile); then case `/usr/bin/file conftest.o` in @@ -1333,10 +1395,10 @@ ;; esac ;; - powerpc64le-*) + powerpc64le-*linux*) LD="${LD-ld} -m elf32lppclinux" ;; - powerpc64-*) + powerpc64-*linux*) LD="${LD-ld} -m elf32ppclinux" ;; s390x-*linux*) @@ -1355,10 +1417,10 @@ x86_64-*linux*) LD="${LD-ld} -m elf_x86_64" ;; - powerpcle-*) + powerpcle-*linux*) LD="${LD-ld} -m elf64lppc" ;; - powerpc-*) + powerpc-*linux*) LD="${LD-ld} -m elf64ppc" ;; s390*-*linux*|s390*-*tpf*) @@ -1376,19 +1438,20 @@ *-*-sco3.2v5*) # On SCO OpenServer 5, we need -belf to get full-featured binaries. - SAVE_CFLAGS="$CFLAGS" + SAVE_CFLAGS=$CFLAGS CFLAGS="$CFLAGS -belf" AC_CACHE_CHECK([whether the C compiler needs -belf], lt_cv_cc_needs_belf, [AC_LANG_PUSH(C) AC_LINK_IFELSE([AC_LANG_PROGRAM([[]],[[]])],[lt_cv_cc_needs_belf=yes],[lt_cv_cc_needs_belf=no]) AC_LANG_POP]) - if test x"$lt_cv_cc_needs_belf" != x"yes"; then + if test yes != "$lt_cv_cc_needs_belf"; then # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf - CFLAGS="$SAVE_CFLAGS" + CFLAGS=$SAVE_CFLAGS fi ;; *-*solaris*) - # Find out which ABI we are using. + # Find out what ABI is being produced by ac_compile, and set linker + # options accordingly. echo 'int i;' > conftest.$ac_ext if AC_TRY_EVAL(ac_compile); then case `/usr/bin/file conftest.o` in @@ -1396,7 +1459,7 @@ case $lt_cv_prog_gnu_ld in yes*) case $host in - i?86-*-solaris*) + i?86-*-solaris*|x86_64-*-solaris*) LD="${LD-ld} -m elf_x86_64" ;; sparc*-*-solaris*) @@ -1405,7 +1468,7 @@ esac # GNU ld 2.21 introduced _sol2 emulations. Use them if available. if ${LD-ld} -V | grep _sol2 >/dev/null 2>&1; then - LD="${LD-ld}_sol2" + LD=${LD-ld}_sol2 fi ;; *) @@ -1421,7 +1484,7 @@ ;; esac -need_locks="$enable_libtool_lock" +need_locks=$enable_libtool_lock ])# _LT_ENABLE_LOCK @@ -1440,11 +1503,11 @@ [echo conftest.$ac_objext > conftest.lst lt_ar_try='$AR $AR_FLAGS libconftest.a @conftest.lst >&AS_MESSAGE_LOG_FD' AC_TRY_EVAL([lt_ar_try]) - if test "$ac_status" -eq 0; then + if test 0 -eq "$ac_status"; then # Ensure the archiver fails upon bogus file names. rm -f conftest.$ac_objext libconftest.a AC_TRY_EVAL([lt_ar_try]) - if test "$ac_status" -ne 0; then + if test 0 -ne "$ac_status"; then lt_cv_ar_at_file=@ fi fi @@ -1452,7 +1515,7 @@ ]) ]) -if test "x$lt_cv_ar_at_file" = xno; then +if test no = "$lt_cv_ar_at_file"; then archiver_list_spec= else archiver_list_spec=$lt_cv_ar_at_file @@ -1483,7 +1546,7 @@ if test -n "$RANLIB"; then case $host_os in - openbsd*) + bitrig* | openbsd*) old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB -t \$tool_oldlib" ;; *) @@ -1519,7 +1582,7 @@ [$2=no m4_if([$4], , [ac_outfile=conftest.$ac_objext], [ac_outfile=$4]) echo "$lt_simple_compile_test_code" > conftest.$ac_ext - lt_compiler_flag="$3" + lt_compiler_flag="$3" ## exclude from sc_useless_quotes_in_assignment # Insert the option either (1) after the last *FLAGS variable, or # (2) before a word containing "conftest.", or (3) at the end. # Note that $ac_compile itself does not contain backslashes and begins @@ -1546,7 +1609,7 @@ $RM conftest* ]) -if test x"[$]$2" = xyes; then +if test yes = "[$]$2"; then m4_if([$5], , :, [$5]) else m4_if([$6], , :, [$6]) @@ -1568,7 +1631,7 @@ m4_require([_LT_DECL_SED])dnl AC_CACHE_CHECK([$1], [$2], [$2=no - save_LDFLAGS="$LDFLAGS" + save_LDFLAGS=$LDFLAGS LDFLAGS="$LDFLAGS $3" echo "$lt_simple_link_test_code" > conftest.$ac_ext if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then @@ -1587,10 +1650,10 @@ fi fi $RM -r conftest* - LDFLAGS="$save_LDFLAGS" + LDFLAGS=$save_LDFLAGS ]) -if test x"[$]$2" = xyes; then +if test yes = "[$]$2"; then m4_if([$4], , :, [$4]) else m4_if([$5], , :, [$5]) @@ -1611,7 +1674,7 @@ AC_MSG_CHECKING([the maximum length of command line arguments]) AC_CACHE_VAL([lt_cv_sys_max_cmd_len], [dnl i=0 - teststring="ABCD" + teststring=ABCD case $build_os in msdosdjgpp*) @@ -1651,7 +1714,7 @@ lt_cv_sys_max_cmd_len=8192; ;; - netbsd* | freebsd* | openbsd* | darwin* | dragonfly*) + bitrig* | darwin* | dragonfly* | freebsd* | netbsd* | openbsd*) # This has been around since 386BSD, at least. Likely further. if test -x /sbin/sysctl; then lt_cv_sys_max_cmd_len=`/sbin/sysctl -n kern.argmax` @@ -1702,22 +1765,22 @@ *) lt_cv_sys_max_cmd_len=`(getconf ARG_MAX) 2> /dev/null` if test -n "$lt_cv_sys_max_cmd_len" && \ - test undefined != "$lt_cv_sys_max_cmd_len"; then + test undefined != "$lt_cv_sys_max_cmd_len"; then lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` else # Make teststring a little bigger before we do anything with it. # a 1K string should be a reasonable start. - for i in 1 2 3 4 5 6 7 8 ; do + for i in 1 2 3 4 5 6 7 8; do teststring=$teststring$teststring done SHELL=${SHELL-${CONFIG_SHELL-/bin/sh}} # If test is not a shell built-in, we'll probably end up computing a # maximum length that is only half of the actual maximum length, but # we can't tell. - while { test "X"`env echo "$teststring$teststring" 2>/dev/null` \ + while { test X`env echo "$teststring$teststring" 2>/dev/null` \ = "X$teststring$teststring"; } >/dev/null 2>&1 && - test $i != 17 # 1/2 MB should be enough + test 17 != "$i" # 1/2 MB should be enough do i=`expr $i + 1` teststring=$teststring$teststring @@ -1733,7 +1796,7 @@ ;; esac ]) -if test -n $lt_cv_sys_max_cmd_len ; then +if test -n "$lt_cv_sys_max_cmd_len"; then AC_MSG_RESULT($lt_cv_sys_max_cmd_len) else AC_MSG_RESULT(none) @@ -1761,7 +1824,7 @@ # ---------------------------------------------------------------- m4_defun([_LT_TRY_DLOPEN_SELF], [m4_require([_LT_HEADER_DLFCN])dnl -if test "$cross_compiling" = yes; then : +if test yes = "$cross_compiling"; then : [$4] else lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 @@ -1808,9 +1871,9 @@ # endif #endif -/* When -fvisbility=hidden is used, assume the code has been annotated +/* When -fvisibility=hidden is used, assume the code has been annotated correspondingly for the symbols needed. */ -#if defined(__GNUC__) && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3)) +#if defined __GNUC__ && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3)) int fnord () __attribute__((visibility("default"))); #endif @@ -1836,7 +1899,7 @@ return status; }] _LT_EOF - if AC_TRY_EVAL(ac_link) && test -s conftest${ac_exeext} 2>/dev/null; then + if AC_TRY_EVAL(ac_link) && test -s "conftest$ac_exeext" 2>/dev/null; then (./conftest; exit; ) >&AS_MESSAGE_LOG_FD 2>/dev/null lt_status=$? case x$lt_status in @@ -1857,7 +1920,7 @@ # ------------------ AC_DEFUN([LT_SYS_DLOPEN_SELF], [m4_require([_LT_HEADER_DLFCN])dnl -if test "x$enable_dlopen" != xyes; then +if test yes != "$enable_dlopen"; then enable_dlopen=unknown enable_dlopen_self=unknown enable_dlopen_self_static=unknown @@ -1867,44 +1930,52 @@ case $host_os in beos*) - lt_cv_dlopen="load_add_on" + lt_cv_dlopen=load_add_on lt_cv_dlopen_libs= lt_cv_dlopen_self=yes ;; mingw* | pw32* | cegcc*) - lt_cv_dlopen="LoadLibrary" + lt_cv_dlopen=LoadLibrary lt_cv_dlopen_libs= ;; cygwin*) - lt_cv_dlopen="dlopen" + lt_cv_dlopen=dlopen lt_cv_dlopen_libs= ;; darwin*) - # if libdl is installed we need to link against it + # if libdl is installed we need to link against it AC_CHECK_LIB([dl], [dlopen], - [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"],[ - lt_cv_dlopen="dyld" + [lt_cv_dlopen=dlopen lt_cv_dlopen_libs=-ldl],[ + lt_cv_dlopen=dyld lt_cv_dlopen_libs= lt_cv_dlopen_self=yes ]) ;; + tpf*) + # Don't try to run any link tests for TPF. We know it's impossible + # because TPF is a cross-compiler, and we know how we open DSOs. + lt_cv_dlopen=dlopen + lt_cv_dlopen_libs= + lt_cv_dlopen_self=no + ;; + *) AC_CHECK_FUNC([shl_load], - [lt_cv_dlopen="shl_load"], + [lt_cv_dlopen=shl_load], [AC_CHECK_LIB([dld], [shl_load], - [lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-ldld"], + [lt_cv_dlopen=shl_load lt_cv_dlopen_libs=-ldld], [AC_CHECK_FUNC([dlopen], - [lt_cv_dlopen="dlopen"], + [lt_cv_dlopen=dlopen], [AC_CHECK_LIB([dl], [dlopen], - [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"], + [lt_cv_dlopen=dlopen lt_cv_dlopen_libs=-ldl], [AC_CHECK_LIB([svld], [dlopen], - [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld"], + [lt_cv_dlopen=dlopen lt_cv_dlopen_libs=-lsvld], [AC_CHECK_LIB([dld], [dld_link], - [lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-ldld"]) + [lt_cv_dlopen=dld_link lt_cv_dlopen_libs=-ldld]) ]) ]) ]) @@ -1913,21 +1984,21 @@ ;; esac - if test "x$lt_cv_dlopen" != xno; then - enable_dlopen=yes - else + if test no = "$lt_cv_dlopen"; then enable_dlopen=no + else + enable_dlopen=yes fi case $lt_cv_dlopen in dlopen) - save_CPPFLAGS="$CPPFLAGS" - test "x$ac_cv_header_dlfcn_h" = xyes && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H" + save_CPPFLAGS=$CPPFLAGS + test yes = "$ac_cv_header_dlfcn_h" && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H" - save_LDFLAGS="$LDFLAGS" + save_LDFLAGS=$LDFLAGS wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\" - save_LIBS="$LIBS" + save_LIBS=$LIBS LIBS="$lt_cv_dlopen_libs $LIBS" AC_CACHE_CHECK([whether a program can dlopen itself], @@ -1937,7 +2008,7 @@ lt_cv_dlopen_self=no, lt_cv_dlopen_self=cross) ]) - if test "x$lt_cv_dlopen_self" = xyes; then + if test yes = "$lt_cv_dlopen_self"; then wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $lt_prog_compiler_static\" AC_CACHE_CHECK([whether a statically linked program can dlopen itself], lt_cv_dlopen_self_static, [dnl @@ -1947,9 +2018,9 @@ ]) fi - CPPFLAGS="$save_CPPFLAGS" - LDFLAGS="$save_LDFLAGS" - LIBS="$save_LIBS" + CPPFLAGS=$save_CPPFLAGS + LDFLAGS=$save_LDFLAGS + LIBS=$save_LIBS ;; esac @@ -2041,8 +2112,8 @@ m4_require([_LT_FILEUTILS_DEFAULTS])dnl _LT_COMPILER_C_O([$1]) -hard_links="nottested" -if test "$_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)" = no && test "$need_locks" != no; then +hard_links=nottested +if test no = "$_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)" && test no != "$need_locks"; then # do not overwrite the value of need_locks provided by the user AC_MSG_CHECKING([if we can lock with hard links]) hard_links=yes @@ -2052,8 +2123,8 @@ ln conftest.a conftest.b 2>&5 || hard_links=no ln conftest.a conftest.b 2>/dev/null && hard_links=no AC_MSG_RESULT([$hard_links]) - if test "$hard_links" = no; then - AC_MSG_WARN([`$CC' does not support `-c -o', so `make -j' may be unsafe]) + if test no = "$hard_links"; then + AC_MSG_WARN(['$CC' does not support '-c -o', so 'make -j' may be unsafe]) need_locks=warn fi else @@ -2080,8 +2151,8 @@ _LT_DECL([], [objdir], [0], [The name of the directory that contains temporary libtool files])dnl m4_pattern_allow([LT_OBJDIR])dnl -AC_DEFINE_UNQUOTED(LT_OBJDIR, "$lt_cv_objdir/", - [Define to the sub-directory in which libtool stores uninstalled libraries.]) +AC_DEFINE_UNQUOTED([LT_OBJDIR], "$lt_cv_objdir/", + [Define to the sub-directory where libtool stores uninstalled libraries.]) ])# _LT_CHECK_OBJDIR @@ -2093,15 +2164,15 @@ _LT_TAGVAR(hardcode_action, $1)= if test -n "$_LT_TAGVAR(hardcode_libdir_flag_spec, $1)" || test -n "$_LT_TAGVAR(runpath_var, $1)" || - test "X$_LT_TAGVAR(hardcode_automatic, $1)" = "Xyes" ; then + test yes = "$_LT_TAGVAR(hardcode_automatic, $1)"; then # We can hardcode non-existent directories. - if test "$_LT_TAGVAR(hardcode_direct, $1)" != no && + if test no != "$_LT_TAGVAR(hardcode_direct, $1)" && # If the only mechanism to avoid hardcoding is shlibpath_var, we # have to relink, otherwise we might link with an installed library # when we should be linking with a yet-to-be-installed one - ## test "$_LT_TAGVAR(hardcode_shlibpath_var, $1)" != no && - test "$_LT_TAGVAR(hardcode_minus_L, $1)" != no; then + ## test no != "$_LT_TAGVAR(hardcode_shlibpath_var, $1)" && + test no != "$_LT_TAGVAR(hardcode_minus_L, $1)"; then # Linking always hardcodes the temporary library directory. _LT_TAGVAR(hardcode_action, $1)=relink else @@ -2115,12 +2186,12 @@ fi AC_MSG_RESULT([$_LT_TAGVAR(hardcode_action, $1)]) -if test "$_LT_TAGVAR(hardcode_action, $1)" = relink || - test "$_LT_TAGVAR(inherit_rpath, $1)" = yes; then +if test relink = "$_LT_TAGVAR(hardcode_action, $1)" || + test yes = "$_LT_TAGVAR(inherit_rpath, $1)"; then # Fast installation is not supported enable_fast_install=no -elif test "$shlibpath_overrides_runpath" = yes || - test "$enable_shared" = no; then +elif test yes = "$shlibpath_overrides_runpath" || + test no = "$enable_shared"; then # Fast installation is not necessary enable_fast_install=needless fi @@ -2144,7 +2215,7 @@ # FIXME - insert some real tests, host_os isn't really good enough case $host_os in darwin*) - if test -n "$STRIP" ; then + if test -n "$STRIP"; then striplib="$STRIP -x" old_striplib="$STRIP -S" AC_MSG_RESULT([yes]) @@ -2162,6 +2233,47 @@ ])# _LT_CMD_STRIPLIB +# _LT_PREPARE_MUNGE_PATH_LIST +# --------------------------- +# Make sure func_munge_path_list() is defined correctly. +m4_defun([_LT_PREPARE_MUNGE_PATH_LIST], +[[# func_munge_path_list VARIABLE PATH +# ----------------------------------- +# VARIABLE is name of variable containing _space_ separated list of +# directories to be munged by the contents of PATH, which is string +# having a format: +# "DIR[:DIR]:" +# string "DIR[ DIR]" will be prepended to VARIABLE +# ":DIR[:DIR]" +# string "DIR[ DIR]" will be appended to VARIABLE +# "DIRP[:DIRP]::[DIRA:]DIRA" +# string "DIRP[ DIRP]" will be prepended to VARIABLE and string +# "DIRA[ DIRA]" will be appended to VARIABLE +# "DIR[:DIR]" +# VARIABLE will be replaced by "DIR[ DIR]" +func_munge_path_list () +{ + case x@S|@2 in + x) + ;; + *:) + eval @S|@1=\"`$ECHO @S|@2 | $SED 's/:/ /g'` \@S|@@S|@1\" + ;; + x:*) + eval @S|@1=\"\@S|@@S|@1 `$ECHO @S|@2 | $SED 's/:/ /g'`\" + ;; + *::*) + eval @S|@1=\"\@S|@@S|@1\ `$ECHO @S|@2 | $SED -e 's/.*:://' -e 's/:/ /g'`\" + eval @S|@1=\"`$ECHO @S|@2 | $SED -e 's/::.*//' -e 's/:/ /g'`\ \@S|@@S|@1\" + ;; + *) + eval @S|@1=\"`$ECHO @S|@2 | $SED 's/:/ /g'`\" + ;; + esac +} +]])# _LT_PREPARE_PATH_LIST + + # _LT_SYS_DYNAMIC_LINKER([TAG]) # ----------------------------- # PORTME Fill in your ld.so characteristics @@ -2172,17 +2284,18 @@ m4_require([_LT_DECL_OBJDUMP])dnl m4_require([_LT_DECL_SED])dnl m4_require([_LT_CHECK_SHELL_FEATURES])dnl +m4_require([_LT_PREPARE_MUNGE_PATH_LIST])dnl AC_MSG_CHECKING([dynamic linker characteristics]) m4_if([$1], [], [ -if test "$GCC" = yes; then +if test yes = "$GCC"; then case $host_os in - darwin*) lt_awk_arg="/^libraries:/,/LR/" ;; - *) lt_awk_arg="/^libraries:/" ;; + darwin*) lt_awk_arg='/^libraries:/,/LR/' ;; + *) lt_awk_arg='/^libraries:/' ;; esac case $host_os in - mingw* | cegcc*) lt_sed_strip_eq="s,=\([[A-Za-z]]:\),\1,g" ;; - *) lt_sed_strip_eq="s,=/,/,g" ;; + mingw* | cegcc*) lt_sed_strip_eq='s|=\([[A-Za-z]]:\)|\1|g' ;; + *) lt_sed_strip_eq='s|=/|/|g' ;; esac lt_search_path_spec=`$CC -print-search-dirs | awk $lt_awk_arg | $SED -e "s/^libraries://" -e $lt_sed_strip_eq` case $lt_search_path_spec in @@ -2198,28 +2311,35 @@ ;; esac # Ok, now we have the path, separated by spaces, we can step through it - # and add multilib dir if necessary. + # and add multilib dir if necessary... lt_tmp_lt_search_path_spec= - lt_multi_os_dir=`$CC $CPPFLAGS $CFLAGS $LDFLAGS -print-multi-os-directory 2>/dev/null` + lt_multi_os_dir=/`$CC $CPPFLAGS $CFLAGS $LDFLAGS -print-multi-os-directory 2>/dev/null` + # ...but if some path component already ends with the multilib dir we assume + # that all is fine and trust -print-search-dirs as is (GCC 4.2? or newer). + case "$lt_multi_os_dir; $lt_search_path_spec " in + "/; "* | "/.; "* | "/./; "* | *"$lt_multi_os_dir "* | *"$lt_multi_os_dir/ "*) + lt_multi_os_dir= + ;; + esac for lt_sys_path in $lt_search_path_spec; do - if test -d "$lt_sys_path/$lt_multi_os_dir"; then - lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path/$lt_multi_os_dir" - else + if test -d "$lt_sys_path$lt_multi_os_dir"; then + lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path$lt_multi_os_dir" + elif test -n "$lt_multi_os_dir"; then test -d "$lt_sys_path" && \ lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path" fi done lt_search_path_spec=`$ECHO "$lt_tmp_lt_search_path_spec" | awk ' -BEGIN {RS=" "; FS="/|\n";} { - lt_foo=""; - lt_count=0; +BEGIN {RS = " "; FS = "/|\n";} { + lt_foo = ""; + lt_count = 0; for (lt_i = NF; lt_i > 0; lt_i--) { if ($lt_i != "" && $lt_i != ".") { if ($lt_i == "..") { lt_count++; } else { if (lt_count == 0) { - lt_foo="/" $lt_i lt_foo; + lt_foo = "/" $lt_i lt_foo; } else { lt_count--; } @@ -2233,7 +2353,7 @@ # for these hosts. case $host_os in mingw* | cegcc*) lt_search_path_spec=`$ECHO "$lt_search_path_spec" |\ - $SED 's,/\([[A-Za-z]]:\),\1,g'` ;; + $SED 's|/\([[A-Za-z]]:\)|\1|g'` ;; esac sys_lib_search_path_spec=`$ECHO "$lt_search_path_spec" | $lt_NL2SP` else @@ -2242,7 +2362,7 @@ library_names_spec= libname_spec='lib$name' soname_spec= -shrext_cmds=".so" +shrext_cmds=.so postinstall_cmds= postuninstall_cmds= finish_cmds= @@ -2259,14 +2379,17 @@ # flags to be left without arguments need_version=unknown +AC_ARG_VAR([LT_SYS_LIBRARY_PATH], +[User-defined run-time library search path.]) + case $host_os in aix3*) version_type=linux # correct to gnu/linux during the next big refactor - library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a' + library_names_spec='$libname$release$shared_ext$versuffix $libname.a' shlibpath_var=LIBPATH # AIX 3 has no versioning support, so we append a major version to the name. - soname_spec='${libname}${release}${shared_ext}$major' + soname_spec='$libname$release$shared_ext$major' ;; aix[[4-9]]*) @@ -2274,41 +2397,91 @@ need_lib_prefix=no need_version=no hardcode_into_libs=yes - if test "$host_cpu" = ia64; then + if test ia64 = "$host_cpu"; then # AIX 5 supports IA64 - library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}' + library_names_spec='$libname$release$shared_ext$major $libname$release$shared_ext$versuffix $libname$shared_ext' shlibpath_var=LD_LIBRARY_PATH else # With GCC up to 2.95.x, collect2 would create an import file # for dependence libraries. The import file would start with - # the line `#! .'. This would cause the generated library to - # depend on `.', always an invalid library. This was fixed in + # the line '#! .'. This would cause the generated library to + # depend on '.', always an invalid library. This was fixed in # development snapshots of GCC prior to 3.0. case $host_os in aix4 | aix4.[[01]] | aix4.[[01]].*) if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)' echo ' yes ' - echo '#endif'; } | ${CC} -E - | $GREP yes > /dev/null; then + echo '#endif'; } | $CC -E - | $GREP yes > /dev/null; then : else can_build_shared=no fi ;; esac - # AIX (on Power*) has no versioning support, so currently we can not hardcode correct + # Using Import Files as archive members, it is possible to support + # filename-based versioning of shared library archives on AIX. While + # this would work for both with and without runtime linking, it will + # prevent static linking of such archives. So we do filename-based + # shared library versioning with .so extension only, which is used + # when both runtime linking and shared linking is enabled. + # Unfortunately, runtime linking may impact performance, so we do + # not want this to be the default eventually. Also, we use the + # versioned .so libs for executables only if there is the -brtl + # linker flag in LDFLAGS as well, or --with-aix-soname=svr4 only. + # To allow for filename-based versioning support, we need to create + # libNAME.so.V as an archive file, containing: + # *) an Import File, referring to the versioned filename of the + # archive as well as the shared archive member, telling the + # bitwidth (32 or 64) of that shared object, and providing the + # list of exported symbols of that shared object, eventually + # decorated with the 'weak' keyword + # *) the shared object with the F_LOADONLY flag set, to really avoid + # it being seen by the linker. + # At run time we better use the real file rather than another symlink, + # but for link time we create the symlink libNAME.so -> libNAME.so.V + + case $with_aix_soname,$aix_use_runtimelinking in + # AIX (on Power*) has no versioning support, so currently we cannot hardcode correct # soname into executable. Probably we can add versioning support to # collect2, so additional links can be useful in future. - if test "$aix_use_runtimelinking" = yes; then + aix,yes) # traditional libtool + dynamic_linker='AIX unversionable lib.so' # If using run time linking (on AIX 4.2 or later) use lib.so # instead of lib.a to let people know that these are not # typical AIX shared libraries. - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - else + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + ;; + aix,no) # traditional AIX only + dynamic_linker='AIX lib.a[(]lib.so.V[)]' # We preserve .a as extension for shared libraries through AIX4.2 # and later when we are not doing run time linking. - library_names_spec='${libname}${release}.a $libname.a' - soname_spec='${libname}${release}${shared_ext}$major' - fi + library_names_spec='$libname$release.a $libname.a' + soname_spec='$libname$release$shared_ext$major' + ;; + svr4,*) # full svr4 only + dynamic_linker="AIX lib.so.V[(]$shared_archive_member_spec.o[)]" + library_names_spec='$libname$release$shared_ext$major $libname$shared_ext' + # We do not specify a path in Import Files, so LIBPATH fires. + shlibpath_overrides_runpath=yes + ;; + *,yes) # both, prefer svr4 + dynamic_linker="AIX lib.so.V[(]$shared_archive_member_spec.o[)], lib.a[(]lib.so.V[)]" + library_names_spec='$libname$release$shared_ext$major $libname$shared_ext' + # unpreferred sharedlib libNAME.a needs extra handling + postinstall_cmds='test -n "$linkname" || linkname="$realname"~func_stripname "" ".so" "$linkname"~$install_shared_prog "$dir/$func_stripname_result.$libext" "$destdir/$func_stripname_result.$libext"~test -z "$tstripme" || test -z "$striplib" || $striplib "$destdir/$func_stripname_result.$libext"' + postuninstall_cmds='for n in $library_names $old_library; do :; done~func_stripname "" ".so" "$n"~test "$func_stripname_result" = "$n" || func_append rmfiles " $odir/$func_stripname_result.$libext"' + # We do not specify a path in Import Files, so LIBPATH fires. + shlibpath_overrides_runpath=yes + ;; + *,no) # both, prefer aix + dynamic_linker="AIX lib.a[(]lib.so.V[)], lib.so.V[(]$shared_archive_member_spec.o[)]" + library_names_spec='$libname$release.a $libname.a' + soname_spec='$libname$release$shared_ext$major' + # unpreferred sharedlib libNAME.so.V and symlink libNAME.so need extra handling + postinstall_cmds='test -z "$dlname" || $install_shared_prog $dir/$dlname $destdir/$dlname~test -z "$tstripme" || test -z "$striplib" || $striplib $destdir/$dlname~test -n "$linkname" || linkname=$realname~func_stripname "" ".a" "$linkname"~(cd "$destdir" && $LN_S -f $dlname $func_stripname_result.so)' + postuninstall_cmds='test -z "$dlname" || func_append rmfiles " $odir/$dlname"~for n in $old_library $library_names; do :; done~func_stripname "" ".a" "$n"~func_append rmfiles " $odir/$func_stripname_result.so"' + ;; + esac shlibpath_var=LIBPATH fi ;; @@ -2318,18 +2491,18 @@ powerpc) # Since July 2007 AmigaOS4 officially supports .so libraries. # When compiling the executable, add -use-dynld -Lsobjs: to the compileline. - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' ;; m68k) library_names_spec='$libname.ixlibrary $libname.a' # Create ${libname}_ixlibrary.a entries in /sys/libs. - finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`func_echo_all "$lib" | $SED '\''s%^.*/\([[^/]]*\)\.ixlibrary$%\1%'\''`; test $RM /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done' + finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`func_echo_all "$lib" | $SED '\''s%^.*/\([[^/]]*\)\.ixlibrary$%\1%'\''`; $RM /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done' ;; esac ;; beos*) - library_names_spec='${libname}${shared_ext}' + library_names_spec='$libname$shared_ext' dynamic_linker="$host_os ld.so" shlibpath_var=LIBRARY_PATH ;; @@ -2337,8 +2510,8 @@ bsdi[[45]]*) version_type=linux # correct to gnu/linux during the next big refactor need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir' shlibpath_var=LD_LIBRARY_PATH sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib" @@ -2350,7 +2523,7 @@ cygwin* | mingw* | pw32* | cegcc*) version_type=windows - shrext_cmds=".dll" + shrext_cmds=.dll need_version=no need_lib_prefix=no @@ -2359,8 +2532,8 @@ # gcc library_names_spec='$libname.dll.a' # DLL is installed to $(libdir)/../bin by postinstall_cmds - postinstall_cmds='base_file=`basename \${file}`~ - dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i; echo \$dlname'\''`~ + postinstall_cmds='base_file=`basename \$file`~ + dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\$base_file'\''i; echo \$dlname'\''`~ dldir=$destdir/`dirname \$dlpath`~ test -d \$dldir || mkdir -p \$dldir~ $install_prog $dir/$dlname \$dldir/$dlname~ @@ -2376,17 +2549,17 @@ case $host_os in cygwin*) # Cygwin DLLs use 'cyg' prefix rather than 'lib' - soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}' + soname_spec='`echo $libname | sed -e 's/^lib/cyg/'``echo $release | $SED -e 's/[[.]]/-/g'`$versuffix$shared_ext' m4_if([$1], [],[ sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/lib/w32api"]) ;; mingw* | cegcc*) # MinGW DLLs use traditional 'lib' prefix - soname_spec='${libname}`echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}' + soname_spec='$libname`echo $release | $SED -e 's/[[.]]/-/g'`$versuffix$shared_ext' ;; pw32*) # pw32 DLLs use 'pw' prefix rather than 'lib' - library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}' + library_names_spec='`echo $libname | sed -e 's/^lib/pw/'``echo $release | $SED -e 's/[[.]]/-/g'`$versuffix$shared_ext' ;; esac dynamic_linker='Win32 ld.exe' @@ -2395,8 +2568,8 @@ *,cl*) # Native MSVC libname_spec='$name' - soname_spec='${libname}`echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}' - library_names_spec='${libname}.dll.lib' + soname_spec='$libname`echo $release | $SED -e 's/[[.]]/-/g'`$versuffix$shared_ext' + library_names_spec='$libname.dll.lib' case $build_os in mingw*) @@ -2423,7 +2596,7 @@ sys_lib_search_path_spec=`cygpath --path --unix "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` ;; *) - sys_lib_search_path_spec="$LIB" + sys_lib_search_path_spec=$LIB if $ECHO "$sys_lib_search_path_spec" | [$GREP ';[c-zC-Z]:/' >/dev/null]; then # It is most probably a Windows format PATH. sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` @@ -2436,8 +2609,8 @@ esac # DLL is installed to $(libdir)/../bin by postinstall_cmds - postinstall_cmds='base_file=`basename \${file}`~ - dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i; echo \$dlname'\''`~ + postinstall_cmds='base_file=`basename \$file`~ + dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\$base_file'\''i; echo \$dlname'\''`~ dldir=$destdir/`dirname \$dlpath`~ test -d \$dldir || mkdir -p \$dldir~ $install_prog $dir/$dlname \$dldir/$dlname' @@ -2450,7 +2623,7 @@ *) # Assume MSVC wrapper - library_names_spec='${libname}`echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext} $libname.lib' + library_names_spec='$libname`echo $release | $SED -e 's/[[.]]/-/g'`$versuffix$shared_ext $libname.lib' dynamic_linker='Win32 ld.exe' ;; esac @@ -2463,8 +2636,8 @@ version_type=darwin need_lib_prefix=no need_version=no - library_names_spec='${libname}${release}${major}$shared_ext ${libname}$shared_ext' - soname_spec='${libname}${release}${major}$shared_ext' + library_names_spec='$libname$release$major$shared_ext $libname$shared_ext' + soname_spec='$libname$release$major$shared_ext' shlibpath_overrides_runpath=yes shlibpath_var=DYLD_LIBRARY_PATH shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`' @@ -2477,8 +2650,8 @@ version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext' - soname_spec='${libname}${release}${shared_ext}$major' + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' shlibpath_var=LD_LIBRARY_PATH ;; @@ -2496,12 +2669,13 @@ version_type=freebsd-$objformat case $version_type in freebsd-elf*) - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' need_version=no need_lib_prefix=no ;; freebsd-*) - library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix' + library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix' need_version=yes ;; esac @@ -2531,10 +2705,10 @@ need_lib_prefix=no need_version=no dynamic_linker="$host_os runtime_loader" - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' shlibpath_var=LIBRARY_PATH - shlibpath_overrides_runpath=yes + shlibpath_overrides_runpath=no sys_lib_dlsearch_path_spec='/boot/home/config/lib /boot/common/lib /boot/system/lib' hardcode_into_libs=yes ;; @@ -2552,14 +2726,15 @@ dynamic_linker="$host_os dld.so" shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - if test "X$HPUX_IA64_MODE" = X32; then + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + if test 32 = "$HPUX_IA64_MODE"; then sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib" + sys_lib_dlsearch_path_spec=/usr/lib/hpux32 else sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64" + sys_lib_dlsearch_path_spec=/usr/lib/hpux64 fi - sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec ;; hppa*64*) shrext_cmds='.sl' @@ -2567,8 +2742,8 @@ dynamic_linker="$host_os dld.sl" shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64" sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec ;; @@ -2577,8 +2752,8 @@ dynamic_linker="$host_os dld.sl" shlibpath_var=SHLIB_PATH shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' ;; esac # HP-UX runs *really* slowly unless shared libraries are mode 555, ... @@ -2591,8 +2766,8 @@ version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no @@ -2603,7 +2778,7 @@ case $host_os in nonstopux*) version_type=nonstopux ;; *) - if test "$lt_cv_prog_gnu_ld" = yes; then + if test yes = "$lt_cv_prog_gnu_ld"; then version_type=linux # correct to gnu/linux during the next big refactor else version_type=irix @@ -2611,8 +2786,8 @@ esac need_lib_prefix=no need_version=no - soname_spec='${libname}${release}${shared_ext}$major' - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}' + soname_spec='$libname$release$shared_ext$major' + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$release$shared_ext $libname$shared_ext' case $host_os in irix5* | nonstopux*) libsuff= shlibsuff= @@ -2631,8 +2806,8 @@ esac shlibpath_var=LD_LIBRARY${shlibsuff}_PATH shlibpath_overrides_runpath=no - sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}" - sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}" + sys_lib_search_path_spec="/usr/lib$libsuff /lib$libsuff /usr/local/lib$libsuff" + sys_lib_dlsearch_path_spec="/usr/lib$libsuff /lib$libsuff" hardcode_into_libs=yes ;; @@ -2641,13 +2816,33 @@ dynamic_linker=no ;; +linux*android*) + version_type=none # Android doesn't support versioned libraries. + need_lib_prefix=no + need_version=no + library_names_spec='$libname$release$shared_ext' + soname_spec='$libname$release$shared_ext' + finish_cmds= + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + + # This implies no fast_install, which is unacceptable. + # Some rework will be needed to allow for fast_install + # before this can be enabled. + hardcode_into_libs=yes + + dynamic_linker='Android linker' + # Don't embed -rpath directories since the linker doesn't support them. + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + ;; + # This must be glibc/ELF. linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no @@ -2672,7 +2867,12 @@ # before this can be enabled. hardcode_into_libs=yes - # Append ld.so.conf contents to the search path + # Ideally, we could use ldconfig to report *all* directores which are + # searched for libraries, however this is still not possible. Aside from not + # being certain /sbin/ldconfig is available, command + # 'ldconfig -N -X -v | grep ^/' on 64bit Fedora does not report /usr/lib64, + # even though it is searched at run-time. Try to do the best guess by + # appending ld.so.conf contents (and includes) to the search path. if test -f /etc/ld.so.conf; then lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \[$]2)); skip = 1; } { if (!skip) print \[$]0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[ ]*hwcap[ ]/d;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;s/"//g;/^$/d' | tr '\n' ' '` sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra" @@ -2704,12 +2904,12 @@ need_lib_prefix=no need_version=no if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' + library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix' finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' dynamic_linker='NetBSD (a.out) ld.so' else - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' dynamic_linker='NetBSD ld.elf_so' fi shlibpath_var=LD_LIBRARY_PATH @@ -2719,7 +2919,7 @@ newsos6) version_type=linux # correct to gnu/linux during the next big refactor - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes ;; @@ -2728,58 +2928,68 @@ version_type=qnx need_lib_prefix=no need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes dynamic_linker='ldqnx.so' ;; -openbsd*) +openbsd* | bitrig*) version_type=sunos - sys_lib_dlsearch_path_spec="/usr/lib" + sys_lib_dlsearch_path_spec=/usr/lib need_lib_prefix=no - # Some older versions of OpenBSD (3.3 at least) *do* need versioned libs. - case $host_os in - openbsd3.3 | openbsd3.3.*) need_version=yes ;; - *) need_version=no ;; - esac - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' - finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' - shlibpath_var=LD_LIBRARY_PATH - if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then - case $host_os in - openbsd2.[[89]] | openbsd2.[[89]].*) - shlibpath_overrides_runpath=no - ;; - *) - shlibpath_overrides_runpath=yes - ;; - esac + if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`"; then + need_version=no else - shlibpath_overrides_runpath=yes + need_version=yes fi + library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes ;; os2*) libname_spec='$name' - shrext_cmds=".dll" + version_type=windows + shrext_cmds=.dll + need_version=no need_lib_prefix=no - library_names_spec='$libname${shared_ext} $libname.a' + # OS/2 can only load a DLL with a base name of 8 characters or less. + soname_spec='`test -n "$os2dllname" && libname="$os2dllname"; + v=$($ECHO $release$versuffix | tr -d .-); + n=$($ECHO $libname | cut -b -$((8 - ${#v})) | tr . _); + $ECHO $n$v`$shared_ext' + library_names_spec='${libname}_dll.$libext' dynamic_linker='OS/2 ld.exe' - shlibpath_var=LIBPATH + shlibpath_var=BEGINLIBPATH + sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" + sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec + postinstall_cmds='base_file=`basename \$file`~ + dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\$base_file'\''i; $ECHO \$dlname'\''`~ + dldir=$destdir/`dirname \$dlpath`~ + test -d \$dldir || mkdir -p \$dldir~ + $install_prog $dir/$dlname \$dldir/$dlname~ + chmod a+x \$dldir/$dlname~ + if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then + eval '\''$striplib \$dldir/$dlname'\'' || exit \$?; + fi' + postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; $ECHO \$dlname'\''`~ + dlpath=$dir/\$dldll~ + $RM \$dlpath' ;; osf3* | osf4* | osf5*) version_type=osf need_lib_prefix=no need_version=no - soname_spec='${libname}${release}${shared_ext}$major' - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='$libname$release$shared_ext$major' + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' shlibpath_var=LD_LIBRARY_PATH sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib" - sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec" + sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec ;; rdos*) @@ -2790,8 +3000,8 @@ version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes hardcode_into_libs=yes @@ -2801,11 +3011,11 @@ sunos4*) version_type=sunos - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' + library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix' finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes - if test "$with_gnu_ld" = yes; then + if test yes = "$with_gnu_ld"; then need_lib_prefix=no fi need_version=yes @@ -2813,8 +3023,8 @@ sysv4 | sysv4.3*) version_type=linux # correct to gnu/linux during the next big refactor - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' shlibpath_var=LD_LIBRARY_PATH case $host_vendor in sni) @@ -2835,24 +3045,24 @@ ;; sysv4*MP*) - if test -d /usr/nec ;then + if test -d /usr/nec; then version_type=linux # correct to gnu/linux during the next big refactor - library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}' - soname_spec='$libname${shared_ext}.$major' + library_names_spec='$libname$shared_ext.$versuffix $libname$shared_ext.$major $libname$shared_ext' + soname_spec='$libname$shared_ext.$major' shlibpath_var=LD_LIBRARY_PATH fi ;; sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) - version_type=freebsd-elf + version_type=sco need_lib_prefix=no need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes hardcode_into_libs=yes - if test "$with_gnu_ld" = yes; then + if test yes = "$with_gnu_ld"; then sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib' else sys_lib_search_path_spec='/usr/ccs/lib /usr/lib' @@ -2870,7 +3080,7 @@ version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes @@ -2878,8 +3088,8 @@ uts4*) version_type=linux # correct to gnu/linux during the next big refactor - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' shlibpath_var=LD_LIBRARY_PATH ;; @@ -2888,20 +3098,30 @@ ;; esac AC_MSG_RESULT([$dynamic_linker]) -test "$dynamic_linker" = no && can_build_shared=no +test no = "$dynamic_linker" && can_build_shared=no variables_saved_for_relink="PATH $shlibpath_var $runpath_var" -if test "$GCC" = yes; then +if test yes = "$GCC"; then variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" fi -if test "${lt_cv_sys_lib_search_path_spec+set}" = set; then - sys_lib_search_path_spec="$lt_cv_sys_lib_search_path_spec" +if test set = "${lt_cv_sys_lib_search_path_spec+set}"; then + sys_lib_search_path_spec=$lt_cv_sys_lib_search_path_spec fi -if test "${lt_cv_sys_lib_dlsearch_path_spec+set}" = set; then - sys_lib_dlsearch_path_spec="$lt_cv_sys_lib_dlsearch_path_spec" + +if test set = "${lt_cv_sys_lib_dlsearch_path_spec+set}"; then + sys_lib_dlsearch_path_spec=$lt_cv_sys_lib_dlsearch_path_spec fi +# remember unaugmented sys_lib_dlsearch_path content for libtool script decls... +configure_time_dlsearch_path=$sys_lib_dlsearch_path_spec + +# ... but it needs LT_SYS_LIBRARY_PATH munging for other configure-time code +func_munge_path_list sys_lib_dlsearch_path_spec "$LT_SYS_LIBRARY_PATH" + +# to be used as default LT_SYS_LIBRARY_PATH value in generated libtool +configure_time_lt_sys_library_path=$LT_SYS_LIBRARY_PATH + _LT_DECL([], [variables_saved_for_relink], [1], [Variables whose values should be saved in libtool wrapper scripts and restored at link time]) @@ -2934,39 +3154,41 @@ [Whether we should hardcode library paths into libraries]) _LT_DECL([], [sys_lib_search_path_spec], [2], [Compile-time system search path for libraries]) -_LT_DECL([], [sys_lib_dlsearch_path_spec], [2], - [Run-time system search path for libraries]) +_LT_DECL([sys_lib_dlsearch_path_spec], [configure_time_dlsearch_path], [2], + [Detected run-time system search path for libraries]) +_LT_DECL([], [configure_time_lt_sys_library_path], [2], + [Explicit LT_SYS_LIBRARY_PATH set during ./configure time]) ])# _LT_SYS_DYNAMIC_LINKER # _LT_PATH_TOOL_PREFIX(TOOL) # -------------------------- -# find a file program which can recognize shared library +# find a file program that can recognize shared library AC_DEFUN([_LT_PATH_TOOL_PREFIX], [m4_require([_LT_DECL_EGREP])dnl AC_MSG_CHECKING([for $1]) AC_CACHE_VAL(lt_cv_path_MAGIC_CMD, [case $MAGIC_CMD in [[\\/*] | ?:[\\/]*]) - lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path. + lt_cv_path_MAGIC_CMD=$MAGIC_CMD # Let the user override the test with a path. ;; *) - lt_save_MAGIC_CMD="$MAGIC_CMD" - lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR + lt_save_MAGIC_CMD=$MAGIC_CMD + lt_save_ifs=$IFS; IFS=$PATH_SEPARATOR dnl $ac_dummy forces splitting on constant user-supplied paths. dnl POSIX.2 word splitting is done only on the output of word expansions, dnl not every word. This closes a longstanding sh security hole. ac_dummy="m4_if([$2], , $PATH, [$2])" for ac_dir in $ac_dummy; do - IFS="$lt_save_ifs" + IFS=$lt_save_ifs test -z "$ac_dir" && ac_dir=. - if test -f $ac_dir/$1; then - lt_cv_path_MAGIC_CMD="$ac_dir/$1" + if test -f "$ac_dir/$1"; then + lt_cv_path_MAGIC_CMD=$ac_dir/"$1" if test -n "$file_magic_test_file"; then case $deplibs_check_method in "file_magic "*) file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"` - MAGIC_CMD="$lt_cv_path_MAGIC_CMD" + MAGIC_CMD=$lt_cv_path_MAGIC_CMD if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | $EGREP "$file_magic_regex" > /dev/null; then : @@ -2989,11 +3211,11 @@ break fi done - IFS="$lt_save_ifs" - MAGIC_CMD="$lt_save_MAGIC_CMD" + IFS=$lt_save_ifs + MAGIC_CMD=$lt_save_MAGIC_CMD ;; esac]) -MAGIC_CMD="$lt_cv_path_MAGIC_CMD" +MAGIC_CMD=$lt_cv_path_MAGIC_CMD if test -n "$MAGIC_CMD"; then AC_MSG_RESULT($MAGIC_CMD) else @@ -3011,7 +3233,7 @@ # _LT_PATH_MAGIC # -------------- -# find a file program which can recognize a shared library +# find a file program that can recognize a shared library m4_defun([_LT_PATH_MAGIC], [_LT_PATH_TOOL_PREFIX(${ac_tool_prefix}file, /usr/bin$PATH_SEPARATOR$PATH) if test -z "$lt_cv_path_MAGIC_CMD"; then @@ -3038,16 +3260,16 @@ AC_ARG_WITH([gnu-ld], [AS_HELP_STRING([--with-gnu-ld], [assume the C compiler uses GNU ld @<:@default=no@:>@])], - [test "$withval" = no || with_gnu_ld=yes], + [test no = "$withval" || with_gnu_ld=yes], [with_gnu_ld=no])dnl ac_prog=ld -if test "$GCC" = yes; then +if test yes = "$GCC"; then # Check if gcc -print-prog-name=ld gives a path. AC_MSG_CHECKING([for ld used by $CC]) case $host in *-*-mingw*) - # gcc leaves a trailing carriage return which upsets mingw + # gcc leaves a trailing carriage return, which upsets mingw ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; *) ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; @@ -3061,7 +3283,7 @@ while $ECHO "$ac_prog" | $GREP "$re_direlt" > /dev/null 2>&1; do ac_prog=`$ECHO $ac_prog| $SED "s%$re_direlt%/%"` done - test -z "$LD" && LD="$ac_prog" + test -z "$LD" && LD=$ac_prog ;; "") # If it fails, then pretend we aren't using GCC. @@ -3072,37 +3294,37 @@ with_gnu_ld=unknown ;; esac -elif test "$with_gnu_ld" = yes; then +elif test yes = "$with_gnu_ld"; then AC_MSG_CHECKING([for GNU ld]) else AC_MSG_CHECKING([for non-GNU ld]) fi AC_CACHE_VAL(lt_cv_path_LD, [if test -z "$LD"; then - lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR + lt_save_ifs=$IFS; IFS=$PATH_SEPARATOR for ac_dir in $PATH; do - IFS="$lt_save_ifs" + IFS=$lt_save_ifs test -z "$ac_dir" && ac_dir=. if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then - lt_cv_path_LD="$ac_dir/$ac_prog" + lt_cv_path_LD=$ac_dir/$ac_prog # Check to see if the program is GNU ld. I'd rather use --version, # but apparently some variants of GNU ld only accept -v. # Break only if it was the GNU/non-GNU ld that we prefer. case `"$lt_cv_path_LD" -v 2>&1 conftest.i +cat conftest.i conftest.i >conftest2.i +: ${lt_DD:=$DD} +AC_PATH_PROGS_FEATURE_CHECK([lt_DD], [dd], +[if "$ac_path_lt_DD" bs=32 count=1 conftest.out 2>/dev/null; then + cmp -s conftest.i conftest.out \ + && ac_cv_path_lt_DD="$ac_path_lt_DD" ac_path_lt_DD_found=: +fi]) +rm -f conftest.i conftest2.i conftest.out]) +])# _LT_PATH_DD + + +# _LT_CMD_TRUNCATE +# ---------------- +# find command to truncate a binary pipe +m4_defun([_LT_CMD_TRUNCATE], +[m4_require([_LT_PATH_DD]) +AC_CACHE_CHECK([how to truncate binary pipes], [lt_cv_truncate_bin], +[printf 0123456789abcdef0123456789abcdef >conftest.i +cat conftest.i conftest.i >conftest2.i +lt_cv_truncate_bin= +if "$ac_cv_path_lt_DD" bs=32 count=1 conftest.out 2>/dev/null; then + cmp -s conftest.i conftest.out \ + && lt_cv_truncate_bin="$ac_cv_path_lt_DD bs=4096 count=1" +fi +rm -f conftest.i conftest2.i conftest.out +test -z "$lt_cv_truncate_bin" && lt_cv_truncate_bin="$SED -e 4q"]) +_LT_DECL([lt_truncate_bin], [lt_cv_truncate_bin], [1], + [Command to truncate a binary pipe]) +])# _LT_CMD_TRUNCATE + + # _LT_CHECK_MAGIC_METHOD # ---------------------- # how to check for library dependencies @@ -3188,13 +3447,13 @@ # Need to set the preceding variable on all platforms that support # interlibrary dependencies. # 'none' -- dependencies not supported. -# `unknown' -- same as none, but documents that we really don't know. +# 'unknown' -- same as none, but documents that we really don't know. # 'pass_all' -- all dependencies passed with no checks. # 'test_compile' -- check by making test program. # 'file_magic [[regex]]' -- check by looking for files in library path -# which responds to the $file_magic_cmd with a given extended regex. -# If you have `file' or equivalent on your system and you're not sure -# whether `pass_all' will *always* work, you probably want this one. +# that responds to the $file_magic_cmd with a given extended regex. +# If you have 'file' or equivalent on your system and you're not sure +# whether 'pass_all' will *always* work, you probably want this one. case $host_os in aix[[4-9]]*) @@ -3221,8 +3480,7 @@ # Base MSYS/MinGW do not provide the 'file' command needed by # func_win32_libid shell function, so use a weaker test based on 'objdump', # unless we find 'file', for example because we are cross-compiling. - # func_win32_libid assumes BSD nm, so disallow it if using MS dumpbin. - if ( test "$lt_cv_nm_interface" = "BSD nm" && file / ) >/dev/null 2>&1; then + if ( file / ) >/dev/null 2>&1; then lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL' lt_cv_file_magic_cmd='func_win32_libid' else @@ -3318,8 +3576,8 @@ lt_cv_deplibs_check_method=pass_all ;; -openbsd*) - if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then +openbsd* | bitrig*) + if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`"; then lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|\.so|_pic\.a)$' else lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|_pic\.a)$' @@ -3372,6 +3630,9 @@ tpf*) lt_cv_deplibs_check_method=pass_all ;; +os2*) + lt_cv_deplibs_check_method=pass_all + ;; esac ]) @@ -3412,33 +3673,38 @@ AC_CACHE_CHECK([for BSD- or MS-compatible name lister (nm)], lt_cv_path_NM, [if test -n "$NM"; then # Let the user override the test. - lt_cv_path_NM="$NM" + lt_cv_path_NM=$NM else - lt_nm_to_check="${ac_tool_prefix}nm" + lt_nm_to_check=${ac_tool_prefix}nm if test -n "$ac_tool_prefix" && test "$build" = "$host"; then lt_nm_to_check="$lt_nm_to_check nm" fi for lt_tmp_nm in $lt_nm_to_check; do - lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR + lt_save_ifs=$IFS; IFS=$PATH_SEPARATOR for ac_dir in $PATH /usr/ccs/bin/elf /usr/ccs/bin /usr/ucb /bin; do - IFS="$lt_save_ifs" + IFS=$lt_save_ifs test -z "$ac_dir" && ac_dir=. - tmp_nm="$ac_dir/$lt_tmp_nm" - if test -f "$tmp_nm" || test -f "$tmp_nm$ac_exeext" ; then + tmp_nm=$ac_dir/$lt_tmp_nm + if test -f "$tmp_nm" || test -f "$tmp_nm$ac_exeext"; then # Check to see if the nm accepts a BSD-compat flag. - # Adding the `sed 1q' prevents false positives on HP-UX, which says: + # Adding the 'sed 1q' prevents false positives on HP-UX, which says: # nm: unknown option "B" ignored # Tru64's nm complains that /dev/null is an invalid object file - case `"$tmp_nm" -B /dev/null 2>&1 | sed '1q'` in - */dev/null* | *'Invalid file or object type'*) + # MSYS converts /dev/null to NUL, MinGW nm treats NUL as empty + case $build_os in + mingw*) lt_bad_file=conftest.nm/nofile ;; + *) lt_bad_file=/dev/null ;; + esac + case `"$tmp_nm" -B $lt_bad_file 2>&1 | sed '1q'` in + *$lt_bad_file* | *'Invalid file or object type'*) lt_cv_path_NM="$tmp_nm -B" - break + break 2 ;; *) case `"$tmp_nm" -p /dev/null 2>&1 | sed '1q'` in */dev/null*) lt_cv_path_NM="$tmp_nm -p" - break + break 2 ;; *) lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but @@ -3449,21 +3715,21 @@ esac fi done - IFS="$lt_save_ifs" + IFS=$lt_save_ifs done : ${lt_cv_path_NM=no} fi]) -if test "$lt_cv_path_NM" != "no"; then - NM="$lt_cv_path_NM" +if test no != "$lt_cv_path_NM"; then + NM=$lt_cv_path_NM else # Didn't find any BSD compatible name lister, look for dumpbin. if test -n "$DUMPBIN"; then : # Let the user override the test. else AC_CHECK_TOOLS(DUMPBIN, [dumpbin "link -dump"], :) - case `$DUMPBIN -symbols /dev/null 2>&1 | sed '1q'` in + case `$DUMPBIN -symbols -headers /dev/null 2>&1 | sed '1q'` in *COFF*) - DUMPBIN="$DUMPBIN -symbols" + DUMPBIN="$DUMPBIN -symbols -headers" ;; *) DUMPBIN=: @@ -3471,8 +3737,8 @@ esac fi AC_SUBST([DUMPBIN]) - if test "$DUMPBIN" != ":"; then - NM="$DUMPBIN" + if test : != "$DUMPBIN"; then + NM=$DUMPBIN fi fi test -z "$NM" && NM=nm @@ -3518,8 +3784,8 @@ case $host_os in cygwin* | mingw* | pw32* | cegcc*) - # two different shell functions defined in ltmain.sh - # decide which to use based on capabilities of $DLLTOOL + # two different shell functions defined in ltmain.sh; + # decide which one to use based on capabilities of $DLLTOOL case `$DLLTOOL --help 2>&1` in *--identify-strict*) lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib @@ -3531,7 +3797,7 @@ ;; *) # fallback: assume linklib IS sharedlib - lt_cv_sharedlib_from_linklib_cmd="$ECHO" + lt_cv_sharedlib_from_linklib_cmd=$ECHO ;; esac ]) @@ -3558,13 +3824,28 @@ lt_cv_path_mainfest_tool=yes fi rm -f conftest*]) -if test "x$lt_cv_path_mainfest_tool" != xyes; then +if test yes != "$lt_cv_path_mainfest_tool"; then MANIFEST_TOOL=: fi _LT_DECL([], [MANIFEST_TOOL], [1], [Manifest tool])dnl ])# _LT_PATH_MANIFEST_TOOL +# _LT_DLL_DEF_P([FILE]) +# --------------------- +# True iff FILE is a Windows DLL '.def' file. +# Keep in sync with func_dll_def_p in the libtool script +AC_DEFUN([_LT_DLL_DEF_P], +[dnl + test DEF = "`$SED -n dnl + -e '\''s/^[[ ]]*//'\'' dnl Strip leading whitespace + -e '\''/^\(;.*\)*$/d'\'' dnl Delete empty lines and comments + -e '\''s/^\(EXPORTS\|LIBRARY\)\([[ ]].*\)*$/DEF/p'\'' dnl + -e q dnl Only consider the first "real" line + $1`" dnl +])# _LT_DLL_DEF_P + + # LT_LIB_M # -------- # check for math library @@ -3576,11 +3857,11 @@ # These system don't have libm, or don't need it ;; *-ncr-sysv4.3*) - AC_CHECK_LIB(mw, _mwvalidcheckl, LIBM="-lmw") + AC_CHECK_LIB(mw, _mwvalidcheckl, LIBM=-lmw) AC_CHECK_LIB(m, cos, LIBM="$LIBM -lm") ;; *) - AC_CHECK_LIB(m, cos, LIBM="-lm") + AC_CHECK_LIB(m, cos, LIBM=-lm) ;; esac AC_SUBST([LIBM]) @@ -3599,7 +3880,7 @@ _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)= -if test "$GCC" = yes; then +if test yes = "$GCC"; then case $cc_basename in nvcc*) _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -Xcompiler -fno-builtin' ;; @@ -3651,7 +3932,7 @@ symcode='[[ABCDGISTW]]' ;; hpux*) - if test "$host_cpu" = ia64; then + if test ia64 = "$host_cpu"; then symcode='[[ABCDEGRST]]' fi ;; @@ -3684,14 +3965,44 @@ symcode='[[ABCDGIRSTW]]' ;; esac +if test "$lt_cv_nm_interface" = "MS dumpbin"; then + # Gets list of data symbols to import. + lt_cv_sys_global_symbol_to_import="sed -n -e 's/^I .* \(.*\)$/\1/p'" + # Adjust the below global symbol transforms to fixup imported variables. + lt_cdecl_hook=" -e 's/^I .* \(.*\)$/extern __declspec(dllimport) char \1;/p'" + lt_c_name_hook=" -e 's/^I .* \(.*\)$/ {\"\1\", (void *) 0},/p'" + lt_c_name_lib_hook="\ + -e 's/^I .* \(lib.*\)$/ {\"\1\", (void *) 0},/p'\ + -e 's/^I .* \(.*\)$/ {\"lib\1\", (void *) 0},/p'" +else + # Disable hooks by default. + lt_cv_sys_global_symbol_to_import= + lt_cdecl_hook= + lt_c_name_hook= + lt_c_name_lib_hook= +fi + # Transform an extracted symbol line into a proper C declaration. # Some systems (esp. on ia64) link data and code symbols differently, # so use this general approach. -lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'" +lt_cv_sys_global_symbol_to_cdecl="sed -n"\ +$lt_cdecl_hook\ +" -e 's/^T .* \(.*\)$/extern int \1();/p'"\ +" -e 's/^$symcode$symcode* .* \(.*\)$/extern char \1;/p'" # Transform an extracted symbol line into symbol name and symbol address -lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([[^ ]]*\)[[ ]]*$/ {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([[^ ]]*\) \([[^ ]]*\)$/ {\"\2\", (void *) \&\2},/p'" -lt_cv_sys_global_symbol_to_c_name_address_lib_prefix="sed -n -e 's/^: \([[^ ]]*\)[[ ]]*$/ {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([[^ ]]*\) \(lib[[^ ]]*\)$/ {\"\2\", (void *) \&\2},/p' -e 's/^$symcode* \([[^ ]]*\) \([[^ ]]*\)$/ {\"lib\2\", (void *) \&\2},/p'" +lt_cv_sys_global_symbol_to_c_name_address="sed -n"\ +$lt_c_name_hook\ +" -e 's/^: \(.*\) .*$/ {\"\1\", (void *) 0},/p'"\ +" -e 's/^$symcode$symcode* .* \(.*\)$/ {\"\1\", (void *) \&\1},/p'" + +# Transform an extracted symbol line into symbol name with lib prefix and +# symbol address. +lt_cv_sys_global_symbol_to_c_name_address_lib_prefix="sed -n"\ +$lt_c_name_lib_hook\ +" -e 's/^: \(.*\) .*$/ {\"\1\", (void *) 0},/p'"\ +" -e 's/^$symcode$symcode* .* \(lib.*\)$/ {\"\1\", (void *) \&\1},/p'"\ +" -e 's/^$symcode$symcode* .* \(.*\)$/ {\"lib\1\", (void *) \&\1},/p'" # Handle CRLF in mingw tool chain opt_cr= @@ -3709,21 +4020,24 @@ # Write the raw and C identifiers. if test "$lt_cv_nm_interface" = "MS dumpbin"; then - # Fake it for dumpbin and say T for any non-static function - # and D for any global variable. + # Fake it for dumpbin and say T for any non-static function, + # D for any global variable and I for any imported variable. # Also find C++ and __fastcall symbols from MSVC++, # which start with @ or ?. lt_cv_sys_global_symbol_pipe="$AWK ['"\ " {last_section=section; section=\$ 3};"\ " /^COFF SYMBOL TABLE/{for(i in hide) delete hide[i]};"\ " /Section length .*#relocs.*(pick any)/{hide[last_section]=1};"\ +" /^ *Symbol name *: /{split(\$ 0,sn,\":\"); si=substr(sn[2],2)};"\ +" /^ *Type *: code/{print \"T\",si,substr(si,length(prfx))};"\ +" /^ *Type *: data/{print \"I\",si,substr(si,length(prfx))};"\ " \$ 0!~/External *\|/{next};"\ " / 0+ UNDEF /{next}; / UNDEF \([^|]\)*()/{next};"\ " {if(hide[section]) next};"\ -" {f=0}; \$ 0~/\(\).*\|/{f=1}; {printf f ? \"T \" : \"D \"};"\ -" {split(\$ 0, a, /\||\r/); split(a[2], s)};"\ -" s[1]~/^[@?]/{print s[1], s[1]; next};"\ -" s[1]~prfx {split(s[1],t,\"@\"); print t[1], substr(t[1],length(prfx))}"\ +" {f=\"D\"}; \$ 0~/\(\).*\|/{f=\"T\"};"\ +" {split(\$ 0,a,/\||\r/); split(a[2],s)};"\ +" s[1]~/^[@?]/{print f,s[1],s[1]; next};"\ +" s[1]~prfx {split(s[1],t,\"@\"); print f,t[1],substr(t[1],length(prfx))}"\ " ' prfx=^$ac_symprfx]" else lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[[ ]]\($symcode$symcode*\)[[ ]][[ ]]*$ac_symprfx$sympat$opt_cr$/$symxfrm/p'" @@ -3763,11 +4077,11 @@ if $GREP ' nm_test_func$' "$nlist" >/dev/null; then cat <<_LT_EOF > conftest.$ac_ext /* Keep this code in sync between libtool.m4, ltmain, lt_system.h, and tests. */ -#if defined(_WIN32) || defined(__CYGWIN__) || defined(_WIN32_WCE) -/* DATA imports from DLLs on WIN32 con't be const, because runtime +#if defined _WIN32 || defined __CYGWIN__ || defined _WIN32_WCE +/* DATA imports from DLLs on WIN32 can't be const, because runtime relocations are performed -- see ld's documentation on pseudo-relocs. */ # define LT@&t@_DLSYM_CONST -#elif defined(__osf__) +#elif defined __osf__ /* This system does not cope well with relocations in const data. */ # define LT@&t@_DLSYM_CONST #else @@ -3793,7 +4107,7 @@ { { "@PROGRAM@", (void *) 0 }, _LT_EOF - $SED "s/^$symcode$symcode* \(.*\) \(.*\)$/ {\"\2\", (void *) \&\2},/" < "$nlist" | $GREP -v main >> conftest.$ac_ext + $SED "s/^$symcode$symcode* .* \(.*\)$/ {\"\1\", (void *) \&\1},/" < "$nlist" | $GREP -v main >> conftest.$ac_ext cat <<\_LT_EOF >> conftest.$ac_ext {0, (void *) 0} }; @@ -3813,9 +4127,9 @@ mv conftest.$ac_objext conftstm.$ac_objext lt_globsym_save_LIBS=$LIBS lt_globsym_save_CFLAGS=$CFLAGS - LIBS="conftstm.$ac_objext" + LIBS=conftstm.$ac_objext CFLAGS="$CFLAGS$_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)" - if AC_TRY_EVAL(ac_link) && test -s conftest${ac_exeext}; then + if AC_TRY_EVAL(ac_link) && test -s conftest$ac_exeext; then pipe_works=yes fi LIBS=$lt_globsym_save_LIBS @@ -3836,7 +4150,7 @@ rm -rf conftest* conftst* # Do not use the global_symbol_pipe unless it works. - if test "$pipe_works" = yes; then + if test yes = "$pipe_works"; then break else lt_cv_sys_global_symbol_pipe= @@ -3863,12 +4177,16 @@ [Take the output of nm and produce a listing of raw symbols and C names]) _LT_DECL([global_symbol_to_cdecl], [lt_cv_sys_global_symbol_to_cdecl], [1], [Transform the output of nm in a proper C declaration]) +_LT_DECL([global_symbol_to_import], [lt_cv_sys_global_symbol_to_import], [1], + [Transform the output of nm into a list of symbols to manually relocate]) _LT_DECL([global_symbol_to_c_name_address], [lt_cv_sys_global_symbol_to_c_name_address], [1], [Transform the output of nm in a C name address pair]) _LT_DECL([global_symbol_to_c_name_address_lib_prefix], [lt_cv_sys_global_symbol_to_c_name_address_lib_prefix], [1], [Transform the output of nm in a C name address pair when lib prefix is needed]) +_LT_DECL([nm_interface], [lt_cv_nm_interface], [1], + [The name lister interface]) _LT_DECL([], [nm_file_list_spec], [1], [Specify filename containing input files for $NM]) ]) # _LT_CMD_GLOBAL_SYMBOLS @@ -3884,17 +4202,18 @@ m4_if([$1], [CXX], [ # C++ specific cases for pic, static, wl, etc. - if test "$GXX" = yes; then + if test yes = "$GXX"; then _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' case $host_os in aix*) # All AIX code is PIC. - if test "$host_cpu" = ia64; then + if test ia64 = "$host_cpu"; then # AIX 5 now supports IA64 processor _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' fi + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' ;; amigaos*) @@ -3905,8 +4224,8 @@ ;; m68k) # FIXME: we need at least 68020 code to build shared libraries, but - # adding the `-m68020' flag to GCC prevents building anything better, - # like `-m68040'. + # adding the '-m68020' flag to GCC prevents building anything better, + # like '-m68040'. _LT_TAGVAR(lt_prog_compiler_pic, $1)='-m68020 -resident32 -malways-restore-a4' ;; esac @@ -3922,6 +4241,11 @@ # (--disable-auto-import) libraries m4_if([$1], [GCJ], [], [_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT']) + case $host_os in + os2*) + _LT_TAGVAR(lt_prog_compiler_static, $1)='$wl-static' + ;; + esac ;; darwin* | rhapsody*) # PIC is the default on this platform @@ -3971,7 +4295,7 @@ case $host_os in aix[[4-9]]*) # All AIX code is PIC. - if test "$host_cpu" = ia64; then + if test ia64 = "$host_cpu"; then # AIX 5 now supports IA64 processor _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' else @@ -4012,14 +4336,14 @@ case $cc_basename in CC*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_TAGVAR(lt_prog_compiler_static, $1)='${wl}-a ${wl}archive' - if test "$host_cpu" != ia64; then + _LT_TAGVAR(lt_prog_compiler_static, $1)='$wl-a ${wl}archive' + if test ia64 != "$host_cpu"; then _LT_TAGVAR(lt_prog_compiler_pic, $1)='+Z' fi ;; aCC*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_TAGVAR(lt_prog_compiler_static, $1)='${wl}-a ${wl}archive' + _LT_TAGVAR(lt_prog_compiler_static, $1)='$wl-a ${wl}archive' case $host_cpu in hppa*64*|ia64*) # +Z the default @@ -4056,7 +4380,7 @@ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' ;; ecpc* ) - # old Intel C++ for x86_64 which still supported -KPIC. + # old Intel C++ for x86_64, which still supported -KPIC. _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' @@ -4201,17 +4525,18 @@ fi ], [ - if test "$GCC" = yes; then + if test yes = "$GCC"; then _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' case $host_os in aix*) # All AIX code is PIC. - if test "$host_cpu" = ia64; then + if test ia64 = "$host_cpu"; then # AIX 5 now supports IA64 processor _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' fi + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' ;; amigaos*) @@ -4222,8 +4547,8 @@ ;; m68k) # FIXME: we need at least 68020 code to build shared libraries, but - # adding the `-m68020' flag to GCC prevents building anything better, - # like `-m68040'. + # adding the '-m68020' flag to GCC prevents building anything better, + # like '-m68040'. _LT_TAGVAR(lt_prog_compiler_pic, $1)='-m68020 -resident32 -malways-restore-a4' ;; esac @@ -4240,6 +4565,11 @@ # (--disable-auto-import) libraries m4_if([$1], [GCJ], [], [_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT']) + case $host_os in + os2*) + _LT_TAGVAR(lt_prog_compiler_static, $1)='$wl-static' + ;; + esac ;; darwin* | rhapsody*) @@ -4310,7 +4640,7 @@ case $host_os in aix*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - if test "$host_cpu" = ia64; then + if test ia64 = "$host_cpu"; then # AIX 5 now supports IA64 processor _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' else @@ -4318,11 +4648,30 @@ fi ;; + darwin* | rhapsody*) + # PIC is the default on this platform + # Common symbols not allowed in MH_DYLIB files + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fno-common' + case $cc_basename in + nagfor*) + # NAG Fortran compiler + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,-Wl,,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-PIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + ;; + esac + ;; + mingw* | cygwin* | pw32* | os2* | cegcc*) # This hack is so that the source file can tell whether it is being # built for inclusion in a dll (and should export symbols for example). m4_if([$1], [GCJ], [], [_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT']) + case $host_os in + os2*) + _LT_TAGVAR(lt_prog_compiler_static, $1)='$wl-static' + ;; + esac ;; hpux9* | hpux10* | hpux11*) @@ -4338,7 +4687,7 @@ ;; esac # Is there a better lt_prog_compiler_static that works with the bundled CC? - _LT_TAGVAR(lt_prog_compiler_static, $1)='${wl}-a ${wl}archive' + _LT_TAGVAR(lt_prog_compiler_static, $1)='$wl-a ${wl}archive' ;; irix5* | irix6* | nonstopux*) @@ -4349,7 +4698,7 @@ linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) case $cc_basename in - # old Intel for x86_64 which still supported -KPIC. + # old Intel for x86_64, which still supported -KPIC. ecc*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' @@ -4374,6 +4723,12 @@ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-PIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; + tcc*) + # Fabrice Bellard et al's Tiny C Compiler + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' + ;; pgcc* | pgf77* | pgf90* | pgf95* | pgfortran*) # Portland Group compilers (*not* the Pentium gcc compiler, # which looks to be a dead project) @@ -4471,7 +4826,7 @@ ;; sysv4*MP*) - if test -d /usr/nec ;then + if test -d /usr/nec; then _LT_TAGVAR(lt_prog_compiler_pic, $1)='-Kconform_pic' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' fi @@ -4500,7 +4855,7 @@ fi ]) case $host_os in - # For platforms which do not support PIC, -DPIC is meaningless: + # For platforms that do not support PIC, -DPIC is meaningless: *djgpp*) _LT_TAGVAR(lt_prog_compiler_pic, $1)= ;; @@ -4566,17 +4921,21 @@ case $host_os in aix[[4-9]]*) # If we're using GNU nm, then we don't want the "-C" option. - # -C means demangle to AIX nm, but means don't demangle with GNU nm - # Also, AIX nm treats weak defined symbols like other global defined - # symbols, whereas GNU nm marks them as "W". + # -C means demangle to GNU nm, but means don't demangle to AIX nm. + # Without the "-l" option, or with the "-B" option, AIX nm treats + # weak defined symbols like other global defined symbols, whereas + # GNU nm marks them as "W". + # While the 'weak' keyword is ignored in the Export File, we need + # it in the Import File for the 'aix-soname' feature, so we have + # to replace the "-B" option with "-P" for AIX nm. if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then - _LT_TAGVAR(export_symbols_cmds, $1)='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W")) && ([substr](\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' + _LT_TAGVAR(export_symbols_cmds, $1)='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W")) && ([substr](\$ 3,1,1) != ".")) { if (\$ 2 == "W") { print \$ 3 " weak" } else { print \$ 3 } } }'\'' | sort -u > $export_symbols' else - _LT_TAGVAR(export_symbols_cmds, $1)='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && ([substr](\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' + _LT_TAGVAR(export_symbols_cmds, $1)='`func_echo_all $NM | $SED -e '\''s/B\([[^B]]*\)$/P\1/'\''` -PCpgl $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W") || (\$ 2 == "V") || (\$ 2 == "Z")) && ([substr](\$ 1,1,1) != ".")) { if ((\$ 2 == "W") || (\$ 2 == "V") || (\$ 2 == "Z")) { print \$ 1 " weak" } else { print \$ 1 } } }'\'' | sort -u > $export_symbols' fi ;; pw32*) - _LT_TAGVAR(export_symbols_cmds, $1)="$ltdll_cmds" + _LT_TAGVAR(export_symbols_cmds, $1)=$ltdll_cmds ;; cygwin* | mingw* | cegcc*) case $cc_basename in @@ -4625,9 +4984,9 @@ # included in the symbol list _LT_TAGVAR(include_expsyms, $1)= # exclude_expsyms can be an extended regexp of symbols to exclude - # it will be wrapped by ` (' and `)$', so one must not match beginning or - # end of line. Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc', - # as well as any symbol that contains `d'. + # it will be wrapped by ' (' and ')$', so one must not match beginning or + # end of line. Example: 'a|bc|.*d.*' will exclude the symbols 'a' and 'bc', + # as well as any symbol that contains 'd'. _LT_TAGVAR(exclude_expsyms, $1)=['_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*'] # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out # platforms (ab)use it in PIC code, but their linkers get confused if @@ -4643,7 +5002,7 @@ # FIXME: the MSVC++ port hasn't been tested in a loooong time # When not using gcc, we currently assume that we are using # Microsoft Visual C++. - if test "$GCC" != yes; then + if test yes != "$GCC"; then with_gnu_ld=no fi ;; @@ -4651,7 +5010,7 @@ # we just hope/assume this is gcc and not c89 (= MSVC++) with_gnu_ld=yes ;; - openbsd*) + openbsd* | bitrig*) with_gnu_ld=no ;; linux* | k*bsd*-gnu | gnu*) @@ -4664,7 +5023,7 @@ # On some targets, GNU ld is compatible enough with the native linker # that we're better off using the native interface for both. lt_use_gnu_ld_interface=no - if test "$with_gnu_ld" = yes; then + if test yes = "$with_gnu_ld"; then case $host_os in aix*) # The AIX port of GNU ld has always aspired to compatibility @@ -4686,24 +5045,24 @@ esac fi - if test "$lt_use_gnu_ld_interface" = yes; then + if test yes = "$lt_use_gnu_ld_interface"; then # If archive_cmds runs LD, not CC, wlarc should be empty - wlarc='${wl}' + wlarc='$wl' # Set some defaults for GNU ld with shared library support. These # are reset later if shared libraries are not supported. Putting them # here allows them to be overridden if necessary. runpath_var=LD_RUN_PATH - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' - _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir' + _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl--export-dynamic' # ancient GNU ld didn't support --whole-archive et. al. if $LD --help 2>&1 | $GREP 'no-whole-archive' > /dev/null; then - _LT_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' + _LT_TAGVAR(whole_archive_flag_spec, $1)=$wlarc'--whole-archive$convenience '$wlarc'--no-whole-archive' else _LT_TAGVAR(whole_archive_flag_spec, $1)= fi supports_anon_versioning=no - case `$LD -v 2>&1` in + case `$LD -v | $SED -e 's/([^)]\+)\s\+//' 2>&1` in *GNU\ gold*) supports_anon_versioning=yes ;; *\ [[01]].* | *\ 2.[[0-9]].* | *\ 2.10.*) ;; # catch versions < 2.11 *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ... @@ -4716,7 +5075,7 @@ case $host_os in aix[[3-9]]*) # On AIX/PPC, the GNU linker is very broken - if test "$host_cpu" != ia64; then + if test ia64 != "$host_cpu"; then _LT_TAGVAR(ld_shlibs, $1)=no cat <<_LT_EOF 1>&2 @@ -4735,7 +5094,7 @@ case $host_cpu in powerpc) # see comment about AmigaOS4 .so support - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='' ;; m68k) @@ -4751,7 +5110,7 @@ _LT_TAGVAR(allow_undefined_flag, $1)=unsupported # Joseph Beckenbach says some releases of gcc # support --undefined. This deserves some investigation. FIXME - _LT_TAGVAR(archive_cmds, $1)='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + _LT_TAGVAR(archive_cmds, $1)='$CC -nostart $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' else _LT_TAGVAR(ld_shlibs, $1)=no fi @@ -4761,7 +5120,7 @@ # _LT_TAGVAR(hardcode_libdir_flag_spec, $1) is actually meaningless, # as there is no search path for DLLs. _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' - _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-all-symbols' + _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl--export-all-symbols' _LT_TAGVAR(allow_undefined_flag, $1)=unsupported _LT_TAGVAR(always_export_symbols, $1)=no _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes @@ -4769,61 +5128,89 @@ _LT_TAGVAR(exclude_expsyms, $1)=['[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname'] if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' - # If the export-symbols file already is a .def file (1st line - # is EXPORTS), use it as is; otherwise, prepend... - _LT_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then - cp $export_symbols $output_objdir/$soname.def; - else - echo EXPORTS > $output_objdir/$soname.def; - cat $export_symbols >> $output_objdir/$soname.def; - fi~ - $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname $wl--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' + # If the export-symbols file already is a .def file, use it as + # is; otherwise, prepend EXPORTS... + _LT_TAGVAR(archive_expsym_cmds, $1)='if _LT_DLL_DEF_P([$export_symbols]); then + cp $export_symbols $output_objdir/$soname.def; + else + echo EXPORTS > $output_objdir/$soname.def; + cat $export_symbols >> $output_objdir/$soname.def; + fi~ + $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname $wl--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' else _LT_TAGVAR(ld_shlibs, $1)=no fi ;; haiku*) - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' _LT_TAGVAR(link_all_deplibs, $1)=yes ;; + os2*) + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_TAGVAR(hardcode_minus_L, $1)=yes + _LT_TAGVAR(allow_undefined_flag, $1)=unsupported + shrext_cmds=.dll + _LT_TAGVAR(archive_cmds, $1)='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~ + $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~ + $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~ + $ECHO EXPORTS >> $output_objdir/$libname.def~ + emxexp $libobjs | $SED /"_DLL_InitTerm"/d >> $output_objdir/$libname.def~ + $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ + emximp -o $lib $output_objdir/$libname.def' + _LT_TAGVAR(archive_expsym_cmds, $1)='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~ + $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~ + $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~ + $ECHO EXPORTS >> $output_objdir/$libname.def~ + prefix_cmds="$SED"~ + if test EXPORTS = "`$SED 1q $export_symbols`"; then + prefix_cmds="$prefix_cmds -e 1d"; + fi~ + prefix_cmds="$prefix_cmds -e \"s/^\(.*\)$/_\1/g\""~ + cat $export_symbols | $prefix_cmds >> $output_objdir/$libname.def~ + $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ + emximp -o $lib $output_objdir/$libname.def' + _LT_TAGVAR(old_archive_From_new_cmds, $1)='emximp -o $output_objdir/${libname}_dll.a $output_objdir/$libname.def' + _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes + ;; + interix[[3-9]]*) _LT_TAGVAR(hardcode_direct, $1)=no _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' - _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath,$libdir' + _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-E' # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. # Instead, shared libraries are loaded at an image base (0x10000000 by # default) and relocated if they conflict, which is a slow very memory # consuming and fragmenting process. To avoid this, we pick a random, # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link # time. Moving up from 0x10000000 also allows more sbrk(2) space. - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' - _LT_TAGVAR(archive_expsym_cmds, $1)='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-h,$soname $wl--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='sed "s|^|_|" $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-h,$soname $wl--retain-symbols-file,$output_objdir/$soname.expsym $wl--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' ;; gnu* | linux* | tpf* | k*bsd*-gnu | kopensolaris*-gnu) tmp_diet=no - if test "$host_os" = linux-dietlibc; then + if test linux-dietlibc = "$host_os"; then case $cc_basename in diet\ *) tmp_diet=yes;; # linux-dietlibc with static linking (!diet-dyn) esac fi if $LD --help 2>&1 | $EGREP ': supported targets:.* elf' > /dev/null \ - && test "$tmp_diet" = no + && test no = "$tmp_diet" then tmp_addflag=' $pic_flag' tmp_sharedflag='-shared' case $cc_basename,$host_cpu in pgcc*) # Portland Group C compiler - _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' + _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' tmp_addflag=' $pic_flag' ;; pgf77* | pgf90* | pgf95* | pgfortran*) # Portland Group f77 and f90 compilers - _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' + _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' tmp_addflag=' $pic_flag -Mnomain' ;; ecc*,ia64* | icc*,ia64*) # Intel C compiler on ia64 tmp_addflag=' -i_dynamic' ;; @@ -4834,42 +5221,47 @@ lf95*) # Lahey Fortran 8.1 _LT_TAGVAR(whole_archive_flag_spec, $1)= tmp_sharedflag='--shared' ;; + nagfor*) # NAGFOR 5.3 + tmp_sharedflag='-Wl,-shared' ;; xl[[cC]]* | bgxl[[cC]]* | mpixl[[cC]]*) # IBM XL C 8.0 on PPC (deal with xlf below) tmp_sharedflag='-qmkshrobj' tmp_addflag= ;; nvcc*) # Cuda Compiler Driver 2.2 - _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' + _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' _LT_TAGVAR(compiler_needs_object, $1)=yes ;; esac case `$CC -V 2>&1 | sed 5q` in *Sun\ C*) # Sun C 5.9 - _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' + _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' _LT_TAGVAR(compiler_needs_object, $1)=yes tmp_sharedflag='-G' ;; *Sun\ F*) # Sun Fortran 8.3 tmp_sharedflag='-G' ;; esac - _LT_TAGVAR(archive_cmds, $1)='$CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + _LT_TAGVAR(archive_cmds, $1)='$CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' - if test "x$supports_anon_versioning" = xyes; then + if test yes = "$supports_anon_versioning"; then _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $output_objdir/$libname.ver~ - cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ - echo "local: *; };" >> $output_objdir/$libname.ver~ - $CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib' + cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ + echo "local: *; };" >> $output_objdir/$libname.ver~ + $CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-version-script $wl$output_objdir/$libname.ver -o $lib' fi case $cc_basename in + tcc*) + _LT_TAGVAR(export_dynamic_flag_spec, $1)='-rdynamic' + ;; xlf* | bgf* | bgxlf* | mpixlf*) # IBM XL Fortran 10.1 on PPC cannot create shared libs itself _LT_TAGVAR(whole_archive_flag_spec, $1)='--whole-archive$convenience --no-whole-archive' - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir' _LT_TAGVAR(archive_cmds, $1)='$LD -shared $libobjs $deplibs $linker_flags -soname $soname -o $lib' - if test "x$supports_anon_versioning" = xyes; then + if test yes = "$supports_anon_versioning"; then _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $output_objdir/$libname.ver~ - cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ - echo "local: *; };" >> $output_objdir/$libname.ver~ - $LD -shared $libobjs $deplibs $linker_flags -soname $soname -version-script $output_objdir/$libname.ver -o $lib' + cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ + echo "local: *; };" >> $output_objdir/$libname.ver~ + $LD -shared $libobjs $deplibs $linker_flags -soname $soname -version-script $output_objdir/$libname.ver -o $lib' fi ;; esac @@ -4883,8 +5275,8 @@ _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib' wlarc= else - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' fi ;; @@ -4902,8 +5294,8 @@ _LT_EOF elif $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' else _LT_TAGVAR(ld_shlibs, $1)=no fi @@ -4915,7 +5307,7 @@ _LT_TAGVAR(ld_shlibs, $1)=no cat <<_LT_EOF 1>&2 -*** Warning: Releases of the GNU linker prior to 2.16.91.0.3 can not +*** Warning: Releases of the GNU linker prior to 2.16.91.0.3 cannot *** reliably create shared libraries on SCO systems. Therefore, libtool *** is disabling shared libraries support. We urge you to upgrade GNU *** binutils to release 2.16.91.0.3 or newer. Another option is to modify @@ -4930,9 +5322,9 @@ # DT_RUNPATH tag from executables and libraries. But doing so # requires that you compile everything twice, which is a pain. if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir' + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' else _LT_TAGVAR(ld_shlibs, $1)=no fi @@ -4949,15 +5341,15 @@ *) if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' else _LT_TAGVAR(ld_shlibs, $1)=no fi ;; esac - if test "$_LT_TAGVAR(ld_shlibs, $1)" = no; then + if test no = "$_LT_TAGVAR(ld_shlibs, $1)"; then runpath_var= _LT_TAGVAR(hardcode_libdir_flag_spec, $1)= _LT_TAGVAR(export_dynamic_flag_spec, $1)= @@ -4973,7 +5365,7 @@ # Note: this linker hardcodes the directories in LIBPATH if there # are no directories specified by -L. _LT_TAGVAR(hardcode_minus_L, $1)=yes - if test "$GCC" = yes && test -z "$lt_prog_compiler_static"; then + if test yes = "$GCC" && test -z "$lt_prog_compiler_static"; then # Neither direct hardcoding nor static linking is supported with a # broken collect2. _LT_TAGVAR(hardcode_direct, $1)=unsupported @@ -4981,34 +5373,57 @@ ;; aix[[4-9]]*) - if test "$host_cpu" = ia64; then + if test ia64 = "$host_cpu"; then # On IA64, the linker does run time linking by default, so we don't # have to do anything special. aix_use_runtimelinking=no exp_sym_flag='-Bexport' - no_entry_flag="" + no_entry_flag= else # If we're using GNU nm, then we don't want the "-C" option. - # -C means demangle to AIX nm, but means don't demangle with GNU nm - # Also, AIX nm treats weak defined symbols like other global - # defined symbols, whereas GNU nm marks them as "W". + # -C means demangle to GNU nm, but means don't demangle to AIX nm. + # Without the "-l" option, or with the "-B" option, AIX nm treats + # weak defined symbols like other global defined symbols, whereas + # GNU nm marks them as "W". + # While the 'weak' keyword is ignored in the Export File, we need + # it in the Import File for the 'aix-soname' feature, so we have + # to replace the "-B" option with "-P" for AIX nm. if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then - _LT_TAGVAR(export_symbols_cmds, $1)='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W")) && ([substr](\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' + _LT_TAGVAR(export_symbols_cmds, $1)='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W")) && ([substr](\$ 3,1,1) != ".")) { if (\$ 2 == "W") { print \$ 3 " weak" } else { print \$ 3 } } }'\'' | sort -u > $export_symbols' else - _LT_TAGVAR(export_symbols_cmds, $1)='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && ([substr](\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' + _LT_TAGVAR(export_symbols_cmds, $1)='`func_echo_all $NM | $SED -e '\''s/B\([[^B]]*\)$/P\1/'\''` -PCpgl $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W") || (\$ 2 == "V") || (\$ 2 == "Z")) && ([substr](\$ 1,1,1) != ".")) { if ((\$ 2 == "W") || (\$ 2 == "V") || (\$ 2 == "Z")) { print \$ 1 " weak" } else { print \$ 1 } } }'\'' | sort -u > $export_symbols' fi aix_use_runtimelinking=no # Test if we are trying to use run time linking or normal # AIX style linking. If -brtl is somewhere in LDFLAGS, we - # need to do runtime linking. + # have runtime linking enabled, and use it for executables. + # For shared libraries, we enable/disable runtime linking + # depending on the kind of the shared library created - + # when "with_aix_soname,aix_use_runtimelinking" is: + # "aix,no" lib.a(lib.so.V) shared, rtl:no, for executables + # "aix,yes" lib.so shared, rtl:yes, for executables + # lib.a static archive + # "both,no" lib.so.V(shr.o) shared, rtl:yes + # lib.a(lib.so.V) shared, rtl:no, for executables + # "both,yes" lib.so.V(shr.o) shared, rtl:yes, for executables + # lib.a(lib.so.V) shared, rtl:no + # "svr4,*" lib.so.V(shr.o) shared, rtl:yes, for executables + # lib.a static archive case $host_os in aix4.[[23]]|aix4.[[23]].*|aix[[5-9]]*) for ld_flag in $LDFLAGS; do - if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then + if (test x-brtl = "x$ld_flag" || test x-Wl,-brtl = "x$ld_flag"); then aix_use_runtimelinking=yes break fi done + if test svr4,no = "$with_aix_soname,$aix_use_runtimelinking"; then + # With aix-soname=svr4, we create the lib.so.V shared archives only, + # so we don't have lib.a shared libs to link our executables. + # We have to force runtime linking in this case. + aix_use_runtimelinking=yes + LDFLAGS="$LDFLAGS -Wl,-brtl" + fi ;; esac @@ -5027,13 +5442,21 @@ _LT_TAGVAR(hardcode_direct_absolute, $1)=yes _LT_TAGVAR(hardcode_libdir_separator, $1)=':' _LT_TAGVAR(link_all_deplibs, $1)=yes - _LT_TAGVAR(file_list_spec, $1)='${wl}-f,' + _LT_TAGVAR(file_list_spec, $1)='$wl-f,' + case $with_aix_soname,$aix_use_runtimelinking in + aix,*) ;; # traditional, no import file + svr4,* | *,yes) # use import file + # The Import File defines what to hardcode. + _LT_TAGVAR(hardcode_direct, $1)=no + _LT_TAGVAR(hardcode_direct_absolute, $1)=no + ;; + esac - if test "$GCC" = yes; then + if test yes = "$GCC"; then case $host_os in aix4.[[012]]|aix4.[[012]].*) # We only want to do this on AIX 4.2 and lower, the check # below for broken collect2 doesn't work under 4.3+ - collect2name=`${CC} -print-prog-name=collect2` + collect2name=`$CC -print-prog-name=collect2` if test -f "$collect2name" && strings "$collect2name" | $GREP resolve_lib_name >/dev/null then @@ -5052,62 +5475,80 @@ ;; esac shared_flag='-shared' - if test "$aix_use_runtimelinking" = yes; then - shared_flag="$shared_flag "'${wl}-G' + if test yes = "$aix_use_runtimelinking"; then + shared_flag="$shared_flag "'$wl-G' fi - _LT_TAGVAR(link_all_deplibs, $1)=no + # Need to ensure runtime linking is disabled for the traditional + # shared library, or the linker may eventually find shared libraries + # /with/ Import File - we do not want to mix them. + shared_flag_aix='-shared' + shared_flag_svr4='-shared $wl-G' else # not using gcc - if test "$host_cpu" = ia64; then + if test ia64 = "$host_cpu"; then # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release # chokes on -Wl,-G. The following line is correct: shared_flag='-G' else - if test "$aix_use_runtimelinking" = yes; then - shared_flag='${wl}-G' + if test yes = "$aix_use_runtimelinking"; then + shared_flag='$wl-G' else - shared_flag='${wl}-bM:SRE' + shared_flag='$wl-bM:SRE' fi + shared_flag_aix='$wl-bM:SRE' + shared_flag_svr4='$wl-G' fi fi - _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-bexpall' + _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-bexpall' # It seems that -bexpall does not export symbols beginning with # underscore (_), so it is better to generate a list of symbols to export. _LT_TAGVAR(always_export_symbols, $1)=yes - if test "$aix_use_runtimelinking" = yes; then + if test aix,yes = "$with_aix_soname,$aix_use_runtimelinking"; then # Warning - without using the other runtime loading flags (-brtl), # -berok will link without error, but may produce a broken library. _LT_TAGVAR(allow_undefined_flag, $1)='-berok' # Determine the default libpath from the value encoded in an # empty executable. _LT_SYS_MODULE_PATH_AIX([$1]) - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath" - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then func_echo_all "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag" + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-blibpath:$libdir:'"$aix_libpath" + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $deplibs $wl'$no_entry_flag' $compiler_flags `if test -n "$allow_undefined_flag"; then func_echo_all "$wl$allow_undefined_flag"; else :; fi` $wl'$exp_sym_flag:\$export_symbols' '$shared_flag else - if test "$host_cpu" = ia64; then - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $libdir:/usr/lib:/lib' + if test ia64 = "$host_cpu"; then + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-R $libdir:/usr/lib:/lib' _LT_TAGVAR(allow_undefined_flag, $1)="-z nodefs" - _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols" + _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\$wl$no_entry_flag"' $compiler_flags $wl$allow_undefined_flag '"\$wl$exp_sym_flag:\$export_symbols" else # Determine the default libpath from the value encoded in an # empty executable. _LT_SYS_MODULE_PATH_AIX([$1]) - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath" + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-blibpath:$libdir:'"$aix_libpath" # Warning - without using the other run time loading flags, # -berok will link without error, but may produce a broken library. - _LT_TAGVAR(no_undefined_flag, $1)=' ${wl}-bernotok' - _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-berok' - if test "$with_gnu_ld" = yes; then + _LT_TAGVAR(no_undefined_flag, $1)=' $wl-bernotok' + _LT_TAGVAR(allow_undefined_flag, $1)=' $wl-berok' + if test yes = "$with_gnu_ld"; then # We only use this code for GNU lds that support --whole-archive. - _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive$convenience ${wl}--no-whole-archive' + _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl--whole-archive$convenience $wl--no-whole-archive' else # Exported symbols can be pulled into shared objects from archives _LT_TAGVAR(whole_archive_flag_spec, $1)='$convenience' fi _LT_TAGVAR(archive_cmds_need_lc, $1)=yes - # This is similar to how AIX traditionally builds its shared libraries. - _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' + _LT_TAGVAR(archive_expsym_cmds, $1)='$RM -r $output_objdir/$realname.d~$MKDIR $output_objdir/$realname.d' + # -brtl affects multiple linker settings, -berok does not and is overridden later + compiler_flags_filtered='`func_echo_all "$compiler_flags " | $SED -e "s%-brtl\\([[, ]]\\)%-berok\\1%g"`' + if test svr4 != "$with_aix_soname"; then + # This is similar to how AIX traditionally builds its shared libraries. + _LT_TAGVAR(archive_expsym_cmds, $1)="$_LT_TAGVAR(archive_expsym_cmds, $1)"'~$CC '$shared_flag_aix' -o $output_objdir/$realname.d/$soname $libobjs $deplibs $wl-bnoentry '$compiler_flags_filtered'$wl-bE:$export_symbols$allow_undefined_flag~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$realname.d/$soname' + fi + if test aix != "$with_aix_soname"; then + _LT_TAGVAR(archive_expsym_cmds, $1)="$_LT_TAGVAR(archive_expsym_cmds, $1)"'~$CC '$shared_flag_svr4' -o $output_objdir/$realname.d/$shared_archive_member_spec.o $libobjs $deplibs $wl-bnoentry '$compiler_flags_filtered'$wl-bE:$export_symbols$allow_undefined_flag~$STRIP -e $output_objdir/$realname.d/$shared_archive_member_spec.o~( func_echo_all "#! $soname($shared_archive_member_spec.o)"; if test shr_64 = "$shared_archive_member_spec"; then func_echo_all "# 64"; else func_echo_all "# 32"; fi; cat $export_symbols ) > $output_objdir/$realname.d/$shared_archive_member_spec.imp~$AR $AR_FLAGS $output_objdir/$soname $output_objdir/$realname.d/$shared_archive_member_spec.o $output_objdir/$realname.d/$shared_archive_member_spec.imp' + else + # used by -dlpreopen to get the symbols + _LT_TAGVAR(archive_expsym_cmds, $1)="$_LT_TAGVAR(archive_expsym_cmds, $1)"'~$MV $output_objdir/$realname.d/$soname $output_objdir' + fi + _LT_TAGVAR(archive_expsym_cmds, $1)="$_LT_TAGVAR(archive_expsym_cmds, $1)"'~$RM -r $output_objdir/$realname.d' fi fi ;; @@ -5116,7 +5557,7 @@ case $host_cpu in powerpc) # see comment about AmigaOS4 .so support - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='' ;; m68k) @@ -5146,16 +5587,17 @@ # Tell ltmain to make .lib files, not .a files. libext=lib # Tell ltmain to make .dll files, not .so files. - shrext_cmds=".dll" + shrext_cmds=.dll # FIXME: Setting linknames here is a bad hack. - _LT_TAGVAR(archive_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-dll~linknames=' - _LT_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then - sed -n -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' -e '1\\\!p' < $export_symbols > $output_objdir/$soname.exp; - else - sed -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' < $export_symbols > $output_objdir/$soname.exp; - fi~ - $CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~ - linknames=' + _LT_TAGVAR(archive_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~linknames=' + _LT_TAGVAR(archive_expsym_cmds, $1)='if _LT_DLL_DEF_P([$export_symbols]); then + cp "$export_symbols" "$output_objdir/$soname.def"; + echo "$tool_output_objdir$soname.def" > "$output_objdir/$soname.exp"; + else + $SED -e '\''s/^/-link -EXPORT:/'\'' < $export_symbols > $output_objdir/$soname.exp; + fi~ + $CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~ + linknames=' # The linker will not automatically build a static lib if we build a DLL. # _LT_TAGVAR(old_archive_from_new_cmds, $1)='true' _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes @@ -5164,18 +5606,18 @@ # Don't use ranlib _LT_TAGVAR(old_postinstall_cmds, $1)='chmod 644 $oldlib' _LT_TAGVAR(postlink_cmds, $1)='lt_outputfile="@OUTPUT@"~ - lt_tool_outputfile="@TOOL_OUTPUT@"~ - case $lt_outputfile in - *.exe|*.EXE) ;; - *) - lt_outputfile="$lt_outputfile.exe" - lt_tool_outputfile="$lt_tool_outputfile.exe" - ;; - esac~ - if test "$MANIFEST_TOOL" != ":" && test -f "$lt_outputfile.manifest"; then - $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1; - $RM "$lt_outputfile.manifest"; - fi' + lt_tool_outputfile="@TOOL_OUTPUT@"~ + case $lt_outputfile in + *.exe|*.EXE) ;; + *) + lt_outputfile=$lt_outputfile.exe + lt_tool_outputfile=$lt_tool_outputfile.exe + ;; + esac~ + if test : != "$MANIFEST_TOOL" && test -f "$lt_outputfile.manifest"; then + $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1; + $RM "$lt_outputfile.manifest"; + fi' ;; *) # Assume MSVC wrapper @@ -5184,7 +5626,7 @@ # Tell ltmain to make .lib files, not .a files. libext=lib # Tell ltmain to make .dll files, not .so files. - shrext_cmds=".dll" + shrext_cmds=.dll # FIXME: Setting linknames here is a bad hack. _LT_TAGVAR(archive_cmds, $1)='$CC -o $lib $libobjs $compiler_flags `func_echo_all "$deplibs" | $SED '\''s/ -lc$//'\''` -link -dll~linknames=' # The linker will automatically build a .lib file if we build a DLL. @@ -5234,33 +5676,33 @@ ;; hpux9*) - if test "$GCC" = yes; then - _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$CC -shared $pic_flag ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' + if test yes = "$GCC"; then + _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$CC -shared $pic_flag $wl+b $wl$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test "x$output_objdir/$soname" = "x$lib" || mv $output_objdir/$soname $lib' else - _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' + _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test "x$output_objdir/$soname" = "x$lib" || mv $output_objdir/$soname $lib' fi - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl+b $wl$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: _LT_TAGVAR(hardcode_direct, $1)=yes # hardcode_minus_L: Not really in the search PATH, # but as the default location of the library. _LT_TAGVAR(hardcode_minus_L, $1)=yes - _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' + _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-E' ;; hpux10*) - if test "$GCC" = yes && test "$with_gnu_ld" = no; then - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' + if test yes,no = "$GCC,$with_gnu_ld"; then + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $libobjs $deplibs $compiler_flags' else _LT_TAGVAR(archive_cmds, $1)='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' fi - if test "$with_gnu_ld" = no; then - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' + if test no = "$with_gnu_ld"; then + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl+b $wl$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_direct_absolute, $1)=yes - _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' + _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-E' # hardcode_minus_L: Not really in the search PATH, # but as the default location of the library. _LT_TAGVAR(hardcode_minus_L, $1)=yes @@ -5268,25 +5710,25 @@ ;; hpux11*) - if test "$GCC" = yes && test "$with_gnu_ld" = no; then + if test yes,no = "$GCC,$with_gnu_ld"; then case $host_cpu in hppa*64*) - _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $wl+h $wl$soname -o $lib $libobjs $deplibs $compiler_flags' ;; ia64*) - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $wl+h $wl$soname $wl+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' ;; *) - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $libobjs $deplibs $compiler_flags' ;; esac else case $host_cpu in hppa*64*) - _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(archive_cmds, $1)='$CC -b $wl+h $wl$soname -o $lib $libobjs $deplibs $compiler_flags' ;; ia64*) - _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(archive_cmds, $1)='$CC -b $wl+h $wl$soname $wl+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' ;; *) m4_if($1, [], [ @@ -5294,14 +5736,14 @@ # (HP92453-01 A.11.01.20 doesn't, HP92453-01 B.11.X.35175-35176.GP does) _LT_LINKER_OPTION([if $CC understands -b], _LT_TAGVAR(lt_cv_prog_compiler__b, $1), [-b], - [_LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'], + [_LT_TAGVAR(archive_cmds, $1)='$CC -b $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $libobjs $deplibs $compiler_flags'], [_LT_TAGVAR(archive_cmds, $1)='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags'])], - [_LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags']) + [_LT_TAGVAR(archive_cmds, $1)='$CC -b $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $libobjs $deplibs $compiler_flags']) ;; esac fi - if test "$with_gnu_ld" = no; then - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' + if test no = "$with_gnu_ld"; then + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl+b $wl$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: case $host_cpu in @@ -5312,7 +5754,7 @@ *) _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_direct_absolute, $1)=yes - _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' + _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-E' # hardcode_minus_L: Not really in the search PATH, # but as the default location of the library. @@ -5323,16 +5765,16 @@ ;; irix5* | irix6* | nonstopux*) - if test "$GCC" = yes; then - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + if test yes = "$GCC"; then + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib' # Try to use the -exported_symbol ld option, if it does not # work, assume that -exports_file does not work either and # implicitly export all symbols. # This should be the same for all languages, so no per-tag cache variable. AC_CACHE_CHECK([whether the $host_os linker accepts -exported_symbol], [lt_cv_irix_exported_symbol], - [save_LDFLAGS="$LDFLAGS" - LDFLAGS="$LDFLAGS -shared ${wl}-exported_symbol ${wl}foo ${wl}-update_registry ${wl}/dev/null" + [save_LDFLAGS=$LDFLAGS + LDFLAGS="$LDFLAGS -shared $wl-exported_symbol ${wl}foo $wl-update_registry $wl/dev/null" AC_LINK_IFELSE( [AC_LANG_SOURCE( [AC_LANG_CASE([C], [[int foo (void) { return 0; }]], @@ -5345,21 +5787,32 @@ end]])])], [lt_cv_irix_exported_symbol=yes], [lt_cv_irix_exported_symbol=no]) - LDFLAGS="$save_LDFLAGS"]) - if test "$lt_cv_irix_exported_symbol" = yes; then - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations ${wl}-exports_file ${wl}$export_symbols -o $lib' + LDFLAGS=$save_LDFLAGS]) + if test yes = "$lt_cv_irix_exported_symbol"; then + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations $wl-exports_file $wl$export_symbols -o $lib' fi + _LT_TAGVAR(link_all_deplibs, $1)=no else - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -exports_file $export_symbols -o $lib' + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -exports_file $export_symbols -o $lib' fi _LT_TAGVAR(archive_cmds_need_lc, $1)='no' - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: _LT_TAGVAR(inherit_rpath, $1)=yes _LT_TAGVAR(link_all_deplibs, $1)=yes ;; + linux*) + case $cc_basename in + tcc*) + # Fabrice Bellard et al's Tiny C Compiler + _LT_TAGVAR(ld_shlibs, $1)=yes + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' + ;; + esac + ;; + netbsd* | netbsdelf*-gnu) if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out @@ -5374,7 +5827,7 @@ newsos6) _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' _LT_TAGVAR(hardcode_direct, $1)=yes - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: _LT_TAGVAR(hardcode_shlibpath_var, $1)=no ;; @@ -5382,27 +5835,19 @@ *nto* | *qnx*) ;; - openbsd*) + openbsd* | bitrig*) if test -f /usr/libexec/ld.so; then _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_shlibpath_var, $1)=no _LT_TAGVAR(hardcode_direct_absolute, $1)=yes - if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then + if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`"; then _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-retain-symbols-file,$export_symbols' - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' - _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags $wl-retain-symbols-file,$export_symbols' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath,$libdir' + _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-E' else - case $host_os in - openbsd[[01]].* | openbsd2.[[0-7]] | openbsd2.[[0-7]].*) - _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' - ;; - *) - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' - ;; - esac + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath,$libdir' fi else _LT_TAGVAR(ld_shlibs, $1)=no @@ -5413,33 +5858,53 @@ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_TAGVAR(hardcode_minus_L, $1)=yes _LT_TAGVAR(allow_undefined_flag, $1)=unsupported - _LT_TAGVAR(archive_cmds, $1)='$ECHO "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~echo DATA >> $output_objdir/$libname.def~echo " SINGLE NONSHARED" >> $output_objdir/$libname.def~echo EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def' - _LT_TAGVAR(old_archive_from_new_cmds, $1)='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def' + shrext_cmds=.dll + _LT_TAGVAR(archive_cmds, $1)='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~ + $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~ + $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~ + $ECHO EXPORTS >> $output_objdir/$libname.def~ + emxexp $libobjs | $SED /"_DLL_InitTerm"/d >> $output_objdir/$libname.def~ + $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ + emximp -o $lib $output_objdir/$libname.def' + _LT_TAGVAR(archive_expsym_cmds, $1)='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~ + $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~ + $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~ + $ECHO EXPORTS >> $output_objdir/$libname.def~ + prefix_cmds="$SED"~ + if test EXPORTS = "`$SED 1q $export_symbols`"; then + prefix_cmds="$prefix_cmds -e 1d"; + fi~ + prefix_cmds="$prefix_cmds -e \"s/^\(.*\)$/_\1/g\""~ + cat $export_symbols | $prefix_cmds >> $output_objdir/$libname.def~ + $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ + emximp -o $lib $output_objdir/$libname.def' + _LT_TAGVAR(old_archive_From_new_cmds, $1)='emximp -o $output_objdir/${libname}_dll.a $output_objdir/$libname.def' + _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes ;; osf3*) - if test "$GCC" = yes; then - _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*' - _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + if test yes = "$GCC"; then + _LT_TAGVAR(allow_undefined_flag, $1)=' $wl-expect_unresolved $wl\*' + _LT_TAGVAR(archive_cmds, $1)='$CC -shared$allow_undefined_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib' else _LT_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*' - _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' + _LT_TAGVAR(archive_cmds, $1)='$CC -shared$allow_undefined_flag $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib' fi _LT_TAGVAR(archive_cmds_need_lc, $1)='no' - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: ;; osf4* | osf5*) # as osf3* with the addition of -msym flag - if test "$GCC" = yes; then - _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*' - _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $pic_flag $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' + if test yes = "$GCC"; then + _LT_TAGVAR(allow_undefined_flag, $1)=' $wl-expect_unresolved $wl\*' + _LT_TAGVAR(archive_cmds, $1)='$CC -shared$allow_undefined_flag $pic_flag $libobjs $deplibs $compiler_flags $wl-msym $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir' else _LT_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*' - _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -msym -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' + _LT_TAGVAR(archive_cmds, $1)='$CC -shared$allow_undefined_flag $libobjs $deplibs $compiler_flags -msym -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; printf "%s\\n" "-hidden">> $lib.exp~ - $CC -shared${allow_undefined_flag} ${wl}-input ${wl}$lib.exp $compiler_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && $ECHO "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib~$RM $lib.exp' + $CC -shared$allow_undefined_flag $wl-input $wl$lib.exp $compiler_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && $ECHO "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib~$RM $lib.exp' # Both c and cxx compiler support -rpath directly _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir' @@ -5450,24 +5915,24 @@ solaris*) _LT_TAGVAR(no_undefined_flag, $1)=' -z defs' - if test "$GCC" = yes; then - wlarc='${wl}' - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag ${wl}-z ${wl}text ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' + if test yes = "$GCC"; then + wlarc='$wl' + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $wl-z ${wl}text $wl-h $wl$soname -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ - $CC -shared $pic_flag ${wl}-z ${wl}text ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp' + $CC -shared $pic_flag $wl-z ${wl}text $wl-M $wl$lib.exp $wl-h $wl$soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp' else case `$CC -V 2>&1` in *"Compilers 5.0"*) wlarc='' - _LT_TAGVAR(archive_cmds, $1)='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags' + _LT_TAGVAR(archive_cmds, $1)='$LD -G$allow_undefined_flag -h $soname -o $lib $libobjs $deplibs $linker_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ - $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$RM $lib.exp' + $LD -G$allow_undefined_flag -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$RM $lib.exp' ;; *) - wlarc='${wl}' - _LT_TAGVAR(archive_cmds, $1)='$CC -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $compiler_flags' + wlarc='$wl' + _LT_TAGVAR(archive_cmds, $1)='$CC -G$allow_undefined_flag -h $soname -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ - $CC -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp' + $CC -G$allow_undefined_flag -M $lib.exp -h $soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp' ;; esac fi @@ -5477,11 +5942,11 @@ solaris2.[[0-5]] | solaris2.[[0-5]].*) ;; *) # The compiler driver will combine and reorder linker options, - # but understands `-z linker_flag'. GCC discards it without `$wl', + # but understands '-z linker_flag'. GCC discards it without '$wl', # but is careful enough not to reorder. # Supported since Solaris 2.6 (maybe 2.5.1?) - if test "$GCC" = yes; then - _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract' + if test yes = "$GCC"; then + _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl-z ${wl}allextract$convenience $wl-z ${wl}defaultextract' else _LT_TAGVAR(whole_archive_flag_spec, $1)='-z allextract$convenience -z defaultextract' fi @@ -5491,10 +5956,10 @@ ;; sunos4*) - if test "x$host_vendor" = xsequent; then + if test sequent = "$host_vendor"; then # Use $CC to link under sequent, because it throws in some extra .o # files that make .init and .fini sections work. - _LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(archive_cmds, $1)='$CC -G $wl-h $soname -o $lib $libobjs $deplibs $compiler_flags' else _LT_TAGVAR(archive_cmds, $1)='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags' fi @@ -5543,43 +6008,43 @@ ;; sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[[01]].[[10]]* | unixware7* | sco3.2v5.0.[[024]]*) - _LT_TAGVAR(no_undefined_flag, $1)='${wl}-z,text' + _LT_TAGVAR(no_undefined_flag, $1)='$wl-z,text' _LT_TAGVAR(archive_cmds_need_lc, $1)=no _LT_TAGVAR(hardcode_shlibpath_var, $1)=no runpath_var='LD_RUN_PATH' - if test "$GCC" = yes; then - _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + if test yes = "$GCC"; then + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' else - _LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(archive_cmds, $1)='$CC -G $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' fi ;; sysv5* | sco3.2v5* | sco5v6*) - # Note: We can NOT use -z defs as we might desire, because we do not + # Note: We CANNOT use -z defs as we might desire, because we do not # link with -lc, and that would cause any symbols used from libc to # always be unresolved, which means just about no library would # ever link correctly. If we're not using GNU ld we use -z text # though, which does catch some bad symbols but isn't as heavy-handed # as -z defs. - _LT_TAGVAR(no_undefined_flag, $1)='${wl}-z,text' - _LT_TAGVAR(allow_undefined_flag, $1)='${wl}-z,nodefs' + _LT_TAGVAR(no_undefined_flag, $1)='$wl-z,text' + _LT_TAGVAR(allow_undefined_flag, $1)='$wl-z,nodefs' _LT_TAGVAR(archive_cmds_need_lc, $1)=no _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R,$libdir' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-R,$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=':' _LT_TAGVAR(link_all_deplibs, $1)=yes - _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-Bexport' + _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-Bexport' runpath_var='LD_RUN_PATH' - if test "$GCC" = yes; then - _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + if test yes = "$GCC"; then + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' else - _LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(archive_cmds, $1)='$CC -G $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' fi ;; @@ -5594,17 +6059,17 @@ ;; esac - if test x$host_vendor = xsni; then + if test sni = "$host_vendor"; then case $host in sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) - _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-Blargedynsym' + _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-Blargedynsym' ;; esac fi fi ]) AC_MSG_RESULT([$_LT_TAGVAR(ld_shlibs, $1)]) -test "$_LT_TAGVAR(ld_shlibs, $1)" = no && can_build_shared=no +test no = "$_LT_TAGVAR(ld_shlibs, $1)" && can_build_shared=no _LT_TAGVAR(with_gnu_ld, $1)=$with_gnu_ld @@ -5621,7 +6086,7 @@ # Assume -lc should be added _LT_TAGVAR(archive_cmds_need_lc, $1)=yes - if test "$enable_shared" = yes && test "$GCC" = yes; then + if test yes,yes = "$GCC,$enable_shared"; then case $_LT_TAGVAR(archive_cmds, $1) in *'~'*) # FIXME: we may have to deal with multi-command sequences. @@ -5701,12 +6166,12 @@ _LT_TAGDECL([], [hardcode_libdir_separator], [1], [Whether we need a single "-rpath" flag with a separated argument]) _LT_TAGDECL([], [hardcode_direct], [0], - [Set to "yes" if using DIR/libNAME${shared_ext} during linking hardcodes + [Set to "yes" if using DIR/libNAME$shared_ext during linking hardcodes DIR into the resulting binary]) _LT_TAGDECL([], [hardcode_direct_absolute], [0], - [Set to "yes" if using DIR/libNAME${shared_ext} during linking hardcodes + [Set to "yes" if using DIR/libNAME$shared_ext during linking hardcodes DIR into the resulting binary and the resulting library dependency is - "absolute", i.e impossible to change by setting ${shlibpath_var} if the + "absolute", i.e impossible to change by setting $shlibpath_var if the library is relocated]) _LT_TAGDECL([], [hardcode_minus_L], [0], [Set to "yes" if using the -LDIR flag during linking hardcodes DIR @@ -5747,10 +6212,10 @@ # ------------------------ # Ensure that the configuration variables for a C compiler are suitably # defined. These variables are subsequently used by _LT_CONFIG to write -# the compiler configuration to `libtool'. +# the compiler configuration to 'libtool'. m4_defun([_LT_LANG_C_CONFIG], [m4_require([_LT_DECL_EGREP])dnl -lt_save_CC="$CC" +lt_save_CC=$CC AC_LANG_PUSH(C) # Source file extension for C test sources. @@ -5790,18 +6255,18 @@ LT_SYS_DLOPEN_SELF _LT_CMD_STRIPLIB - # Report which library types will actually be built + # Report what library types will actually be built AC_MSG_CHECKING([if libtool supports shared libraries]) AC_MSG_RESULT([$can_build_shared]) AC_MSG_CHECKING([whether to build shared libraries]) - test "$can_build_shared" = "no" && enable_shared=no + test no = "$can_build_shared" && enable_shared=no # On AIX, shared libraries and static libraries use the same namespace, and # are all built from PIC. case $host_os in aix3*) - test "$enable_shared" = yes && enable_static=no + test yes = "$enable_shared" && enable_static=no if test -n "$RANLIB"; then archive_cmds="$archive_cmds~\$RANLIB \$lib" postinstall_cmds='$RANLIB $lib' @@ -5809,8 +6274,12 @@ ;; aix[[4-9]]*) - if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then - test "$enable_shared" = yes && enable_static=no + if test ia64 != "$host_cpu"; then + case $enable_shared,$with_aix_soname,$aix_use_runtimelinking in + yes,aix,yes) ;; # shared object as lib.so file only + yes,svr4,*) ;; # shared object as lib.so archive member only + yes,*) enable_static=no ;; # shared object in lib.a archive as well + esac fi ;; esac @@ -5818,13 +6287,13 @@ AC_MSG_CHECKING([whether to build static libraries]) # Make sure either enable_shared or enable_static is yes. - test "$enable_shared" = yes || enable_static=yes + test yes = "$enable_shared" || enable_static=yes AC_MSG_RESULT([$enable_static]) _LT_CONFIG($1) fi AC_LANG_POP -CC="$lt_save_CC" +CC=$lt_save_CC ])# _LT_LANG_C_CONFIG @@ -5832,14 +6301,14 @@ # -------------------------- # Ensure that the configuration variables for a C++ compiler are suitably # defined. These variables are subsequently used by _LT_CONFIG to write -# the compiler configuration to `libtool'. +# the compiler configuration to 'libtool'. m4_defun([_LT_LANG_CXX_CONFIG], [m4_require([_LT_FILEUTILS_DEFAULTS])dnl m4_require([_LT_DECL_EGREP])dnl m4_require([_LT_PATH_MANIFEST_TOOL])dnl -if test -n "$CXX" && ( test "X$CXX" != "Xno" && - ( (test "X$CXX" = "Xg++" && `g++ -v >/dev/null 2>&1` ) || - (test "X$CXX" != "Xg++"))) ; then +if test -n "$CXX" && ( test no != "$CXX" && + ( (test g++ = "$CXX" && `g++ -v >/dev/null 2>&1` ) || + (test g++ != "$CXX"))); then AC_PROG_CXXCPP else _lt_caught_CXX_error=yes @@ -5881,7 +6350,7 @@ # the CXX compiler isn't working. Some variables (like enable_shared) # are currently assumed to apply to all compilers on this platform, # and will be corrupted by setting them based on a non-working compiler. -if test "$_lt_caught_CXX_error" != yes; then +if test yes != "$_lt_caught_CXX_error"; then # Code to be used in simple compile tests lt_simple_compile_test_code="int some_variable = 0;" @@ -5923,35 +6392,35 @@ if test -n "$compiler"; then # We don't want -fno-exception when compiling C++ code, so set the # no_builtin_flag separately - if test "$GXX" = yes; then + if test yes = "$GXX"; then _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -fno-builtin' else _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)= fi - if test "$GXX" = yes; then + if test yes = "$GXX"; then # Set up default GNU C++ configuration LT_PATH_LD # Check if GNU C++ uses GNU ld as the underlying linker, since the # archiving commands below assume that GNU ld is being used. - if test "$with_gnu_ld" = yes; then - _LT_TAGVAR(archive_cmds, $1)='$CC $pic_flag -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC $pic_flag -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + if test yes = "$with_gnu_ld"; then + _LT_TAGVAR(archive_cmds, $1)='$CC $pic_flag -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC $pic_flag -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' - _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir' + _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl--export-dynamic' # If archive_cmds runs LD, not CC, wlarc should be empty # XXX I think wlarc can be eliminated in ltcf-cxx, but I need to # investigate it a little bit more. (MM) - wlarc='${wl}' + wlarc='$wl' # ancient GNU ld didn't support --whole-archive et. al. if eval "`$CC -print-prog-name=ld` --help 2>&1" | $GREP 'no-whole-archive' > /dev/null; then - _LT_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' + _LT_TAGVAR(whole_archive_flag_spec, $1)=$wlarc'--whole-archive$convenience '$wlarc'--no-whole-archive' else _LT_TAGVAR(whole_archive_flag_spec, $1)= fi @@ -5987,18 +6456,30 @@ _LT_TAGVAR(ld_shlibs, $1)=no ;; aix[[4-9]]*) - if test "$host_cpu" = ia64; then + if test ia64 = "$host_cpu"; then # On IA64, the linker does run time linking by default, so we don't # have to do anything special. aix_use_runtimelinking=no exp_sym_flag='-Bexport' - no_entry_flag="" + no_entry_flag= else aix_use_runtimelinking=no # Test if we are trying to use run time linking or normal # AIX style linking. If -brtl is somewhere in LDFLAGS, we - # need to do runtime linking. + # have runtime linking enabled, and use it for executables. + # For shared libraries, we enable/disable runtime linking + # depending on the kind of the shared library created - + # when "with_aix_soname,aix_use_runtimelinking" is: + # "aix,no" lib.a(lib.so.V) shared, rtl:no, for executables + # "aix,yes" lib.so shared, rtl:yes, for executables + # lib.a static archive + # "both,no" lib.so.V(shr.o) shared, rtl:yes + # lib.a(lib.so.V) shared, rtl:no, for executables + # "both,yes" lib.so.V(shr.o) shared, rtl:yes, for executables + # lib.a(lib.so.V) shared, rtl:no + # "svr4,*" lib.so.V(shr.o) shared, rtl:yes, for executables + # lib.a static archive case $host_os in aix4.[[23]]|aix4.[[23]].*|aix[[5-9]]*) for ld_flag in $LDFLAGS; do case $ld_flag in @@ -6008,6 +6489,13 @@ ;; esac done + if test svr4,no = "$with_aix_soname,$aix_use_runtimelinking"; then + # With aix-soname=svr4, we create the lib.so.V shared archives only, + # so we don't have lib.a shared libs to link our executables. + # We have to force runtime linking in this case. + aix_use_runtimelinking=yes + LDFLAGS="$LDFLAGS -Wl,-brtl" + fi ;; esac @@ -6026,13 +6514,21 @@ _LT_TAGVAR(hardcode_direct_absolute, $1)=yes _LT_TAGVAR(hardcode_libdir_separator, $1)=':' _LT_TAGVAR(link_all_deplibs, $1)=yes - _LT_TAGVAR(file_list_spec, $1)='${wl}-f,' + _LT_TAGVAR(file_list_spec, $1)='$wl-f,' + case $with_aix_soname,$aix_use_runtimelinking in + aix,*) ;; # no import file + svr4,* | *,yes) # use import file + # The Import File defines what to hardcode. + _LT_TAGVAR(hardcode_direct, $1)=no + _LT_TAGVAR(hardcode_direct_absolute, $1)=no + ;; + esac - if test "$GXX" = yes; then + if test yes = "$GXX"; then case $host_os in aix4.[[012]]|aix4.[[012]].*) # We only want to do this on AIX 4.2 and lower, the check # below for broken collect2 doesn't work under 4.3+ - collect2name=`${CC} -print-prog-name=collect2` + collect2name=`$CC -print-prog-name=collect2` if test -f "$collect2name" && strings "$collect2name" | $GREP resolve_lib_name >/dev/null then @@ -6050,64 +6546,84 @@ fi esac shared_flag='-shared' - if test "$aix_use_runtimelinking" = yes; then - shared_flag="$shared_flag "'${wl}-G' + if test yes = "$aix_use_runtimelinking"; then + shared_flag=$shared_flag' $wl-G' fi + # Need to ensure runtime linking is disabled for the traditional + # shared library, or the linker may eventually find shared libraries + # /with/ Import File - we do not want to mix them. + shared_flag_aix='-shared' + shared_flag_svr4='-shared $wl-G' else # not using gcc - if test "$host_cpu" = ia64; then + if test ia64 = "$host_cpu"; then # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release # chokes on -Wl,-G. The following line is correct: shared_flag='-G' else - if test "$aix_use_runtimelinking" = yes; then - shared_flag='${wl}-G' + if test yes = "$aix_use_runtimelinking"; then + shared_flag='$wl-G' else - shared_flag='${wl}-bM:SRE' + shared_flag='$wl-bM:SRE' fi + shared_flag_aix='$wl-bM:SRE' + shared_flag_svr4='$wl-G' fi fi - _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-bexpall' + _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-bexpall' # It seems that -bexpall does not export symbols beginning with # underscore (_), so it is better to generate a list of symbols to # export. _LT_TAGVAR(always_export_symbols, $1)=yes - if test "$aix_use_runtimelinking" = yes; then + if test aix,yes = "$with_aix_soname,$aix_use_runtimelinking"; then # Warning - without using the other runtime loading flags (-brtl), # -berok will link without error, but may produce a broken library. - _LT_TAGVAR(allow_undefined_flag, $1)='-berok' + # The "-G" linker flag allows undefined symbols. + _LT_TAGVAR(no_undefined_flag, $1)='-bernotok' # Determine the default libpath from the value encoded in an empty # executable. _LT_SYS_MODULE_PATH_AIX([$1]) - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath" + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-blibpath:$libdir:'"$aix_libpath" - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then func_echo_all "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag" + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $deplibs $wl'$no_entry_flag' $compiler_flags `if test -n "$allow_undefined_flag"; then func_echo_all "$wl$allow_undefined_flag"; else :; fi` $wl'$exp_sym_flag:\$export_symbols' '$shared_flag else - if test "$host_cpu" = ia64; then - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $libdir:/usr/lib:/lib' + if test ia64 = "$host_cpu"; then + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-R $libdir:/usr/lib:/lib' _LT_TAGVAR(allow_undefined_flag, $1)="-z nodefs" - _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols" + _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\$wl$no_entry_flag"' $compiler_flags $wl$allow_undefined_flag '"\$wl$exp_sym_flag:\$export_symbols" else # Determine the default libpath from the value encoded in an # empty executable. _LT_SYS_MODULE_PATH_AIX([$1]) - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath" + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-blibpath:$libdir:'"$aix_libpath" # Warning - without using the other run time loading flags, # -berok will link without error, but may produce a broken library. - _LT_TAGVAR(no_undefined_flag, $1)=' ${wl}-bernotok' - _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-berok' - if test "$with_gnu_ld" = yes; then + _LT_TAGVAR(no_undefined_flag, $1)=' $wl-bernotok' + _LT_TAGVAR(allow_undefined_flag, $1)=' $wl-berok' + if test yes = "$with_gnu_ld"; then # We only use this code for GNU lds that support --whole-archive. - _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive$convenience ${wl}--no-whole-archive' + _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl--whole-archive$convenience $wl--no-whole-archive' else # Exported symbols can be pulled into shared objects from archives _LT_TAGVAR(whole_archive_flag_spec, $1)='$convenience' fi _LT_TAGVAR(archive_cmds_need_lc, $1)=yes - # This is similar to how AIX traditionally builds its shared - # libraries. - _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' + _LT_TAGVAR(archive_expsym_cmds, $1)='$RM -r $output_objdir/$realname.d~$MKDIR $output_objdir/$realname.d' + # -brtl affects multiple linker settings, -berok does not and is overridden later + compiler_flags_filtered='`func_echo_all "$compiler_flags " | $SED -e "s%-brtl\\([[, ]]\\)%-berok\\1%g"`' + if test svr4 != "$with_aix_soname"; then + # This is similar to how AIX traditionally builds its shared + # libraries. Need -bnortl late, we may have -brtl in LDFLAGS. + _LT_TAGVAR(archive_expsym_cmds, $1)="$_LT_TAGVAR(archive_expsym_cmds, $1)"'~$CC '$shared_flag_aix' -o $output_objdir/$realname.d/$soname $libobjs $deplibs $wl-bnoentry '$compiler_flags_filtered'$wl-bE:$export_symbols$allow_undefined_flag~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$realname.d/$soname' + fi + if test aix != "$with_aix_soname"; then + _LT_TAGVAR(archive_expsym_cmds, $1)="$_LT_TAGVAR(archive_expsym_cmds, $1)"'~$CC '$shared_flag_svr4' -o $output_objdir/$realname.d/$shared_archive_member_spec.o $libobjs $deplibs $wl-bnoentry '$compiler_flags_filtered'$wl-bE:$export_symbols$allow_undefined_flag~$STRIP -e $output_objdir/$realname.d/$shared_archive_member_spec.o~( func_echo_all "#! $soname($shared_archive_member_spec.o)"; if test shr_64 = "$shared_archive_member_spec"; then func_echo_all "# 64"; else func_echo_all "# 32"; fi; cat $export_symbols ) > $output_objdir/$realname.d/$shared_archive_member_spec.imp~$AR $AR_FLAGS $output_objdir/$soname $output_objdir/$realname.d/$shared_archive_member_spec.o $output_objdir/$realname.d/$shared_archive_member_spec.imp' + else + # used by -dlpreopen to get the symbols + _LT_TAGVAR(archive_expsym_cmds, $1)="$_LT_TAGVAR(archive_expsym_cmds, $1)"'~$MV $output_objdir/$realname.d/$soname $output_objdir' + fi + _LT_TAGVAR(archive_expsym_cmds, $1)="$_LT_TAGVAR(archive_expsym_cmds, $1)"'~$RM -r $output_objdir/$realname.d' fi fi ;; @@ -6117,7 +6633,7 @@ _LT_TAGVAR(allow_undefined_flag, $1)=unsupported # Joseph Beckenbach says some releases of gcc # support --undefined. This deserves some investigation. FIXME - _LT_TAGVAR(archive_cmds, $1)='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + _LT_TAGVAR(archive_cmds, $1)='$CC -nostart $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' else _LT_TAGVAR(ld_shlibs, $1)=no fi @@ -6145,57 +6661,58 @@ # Tell ltmain to make .lib files, not .a files. libext=lib # Tell ltmain to make .dll files, not .so files. - shrext_cmds=".dll" + shrext_cmds=.dll # FIXME: Setting linknames here is a bad hack. - _LT_TAGVAR(archive_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-dll~linknames=' - _LT_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then - $SED -n -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' -e '1\\\!p' < $export_symbols > $output_objdir/$soname.exp; - else - $SED -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' < $export_symbols > $output_objdir/$soname.exp; - fi~ - $CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~ - linknames=' + _LT_TAGVAR(archive_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~linknames=' + _LT_TAGVAR(archive_expsym_cmds, $1)='if _LT_DLL_DEF_P([$export_symbols]); then + cp "$export_symbols" "$output_objdir/$soname.def"; + echo "$tool_output_objdir$soname.def" > "$output_objdir/$soname.exp"; + else + $SED -e '\''s/^/-link -EXPORT:/'\'' < $export_symbols > $output_objdir/$soname.exp; + fi~ + $CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~ + linknames=' # The linker will not automatically build a static lib if we build a DLL. # _LT_TAGVAR(old_archive_from_new_cmds, $1)='true' _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes # Don't use ranlib _LT_TAGVAR(old_postinstall_cmds, $1)='chmod 644 $oldlib' _LT_TAGVAR(postlink_cmds, $1)='lt_outputfile="@OUTPUT@"~ - lt_tool_outputfile="@TOOL_OUTPUT@"~ - case $lt_outputfile in - *.exe|*.EXE) ;; - *) - lt_outputfile="$lt_outputfile.exe" - lt_tool_outputfile="$lt_tool_outputfile.exe" - ;; - esac~ - func_to_tool_file "$lt_outputfile"~ - if test "$MANIFEST_TOOL" != ":" && test -f "$lt_outputfile.manifest"; then - $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1; - $RM "$lt_outputfile.manifest"; - fi' + lt_tool_outputfile="@TOOL_OUTPUT@"~ + case $lt_outputfile in + *.exe|*.EXE) ;; + *) + lt_outputfile=$lt_outputfile.exe + lt_tool_outputfile=$lt_tool_outputfile.exe + ;; + esac~ + func_to_tool_file "$lt_outputfile"~ + if test : != "$MANIFEST_TOOL" && test -f "$lt_outputfile.manifest"; then + $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1; + $RM "$lt_outputfile.manifest"; + fi' ;; *) # g++ # _LT_TAGVAR(hardcode_libdir_flag_spec, $1) is actually meaningless, # as there is no search path for DLLs. _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' - _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-all-symbols' + _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl--export-all-symbols' _LT_TAGVAR(allow_undefined_flag, $1)=unsupported _LT_TAGVAR(always_export_symbols, $1)=no _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then - _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' - # If the export-symbols file already is a .def file (1st line - # is EXPORTS), use it as is; otherwise, prepend... - _LT_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then - cp $export_symbols $output_objdir/$soname.def; - else - echo EXPORTS > $output_objdir/$soname.def; - cat $export_symbols >> $output_objdir/$soname.def; - fi~ - $CC -shared -nostdlib $output_objdir/$soname.def $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' + _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname $wl--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' + # If the export-symbols file already is a .def file, use it as + # is; otherwise, prepend EXPORTS... + _LT_TAGVAR(archive_expsym_cmds, $1)='if _LT_DLL_DEF_P([$export_symbols]); then + cp $export_symbols $output_objdir/$soname.def; + else + echo EXPORTS > $output_objdir/$soname.def; + cat $export_symbols >> $output_objdir/$soname.def; + fi~ + $CC -shared -nostdlib $output_objdir/$soname.def $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname $wl--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' else _LT_TAGVAR(ld_shlibs, $1)=no fi @@ -6206,6 +6723,34 @@ _LT_DARWIN_LINKER_FEATURES($1) ;; + os2*) + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_TAGVAR(hardcode_minus_L, $1)=yes + _LT_TAGVAR(allow_undefined_flag, $1)=unsupported + shrext_cmds=.dll + _LT_TAGVAR(archive_cmds, $1)='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~ + $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~ + $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~ + $ECHO EXPORTS >> $output_objdir/$libname.def~ + emxexp $libobjs | $SED /"_DLL_InitTerm"/d >> $output_objdir/$libname.def~ + $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ + emximp -o $lib $output_objdir/$libname.def' + _LT_TAGVAR(archive_expsym_cmds, $1)='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~ + $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~ + $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~ + $ECHO EXPORTS >> $output_objdir/$libname.def~ + prefix_cmds="$SED"~ + if test EXPORTS = "`$SED 1q $export_symbols`"; then + prefix_cmds="$prefix_cmds -e 1d"; + fi~ + prefix_cmds="$prefix_cmds -e \"s/^\(.*\)$/_\1/g\""~ + cat $export_symbols | $prefix_cmds >> $output_objdir/$libname.def~ + $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ + emximp -o $lib $output_objdir/$libname.def' + _LT_TAGVAR(old_archive_From_new_cmds, $1)='emximp -o $output_objdir/${libname}_dll.a $output_objdir/$libname.def' + _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes + ;; + dgux*) case $cc_basename in ec++*) @@ -6241,14 +6786,14 @@ ;; haiku*) - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' _LT_TAGVAR(link_all_deplibs, $1)=yes ;; hpux9*) - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl+b $wl$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: - _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' + _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-E' _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_minus_L, $1)=yes # Not in the search PATH, # but as the default @@ -6260,7 +6805,7 @@ _LT_TAGVAR(ld_shlibs, $1)=no ;; aCC*) - _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$CC -b ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' + _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$CC -b $wl+b $wl$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test "x$output_objdir/$soname" = "x$lib" || mv $output_objdir/$soname $lib' # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. @@ -6269,11 +6814,11 @@ # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. - output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $EGREP "\-L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' + output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $EGREP "\-L"`; list= ; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' ;; *) - if test "$GXX" = yes; then - _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$CC -shared -nostdlib $pic_flag ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' + if test yes = "$GXX"; then + _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$CC -shared -nostdlib $pic_flag $wl+b $wl$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test "x$output_objdir/$soname" = "x$lib" || mv $output_objdir/$soname $lib' else # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no @@ -6283,15 +6828,15 @@ ;; hpux10*|hpux11*) - if test $with_gnu_ld = no; then - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' + if test no = "$with_gnu_ld"; then + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl+b $wl$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: case $host_cpu in hppa*64*|ia64*) ;; *) - _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' + _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-E' ;; esac fi @@ -6317,13 +6862,13 @@ aCC*) case $host_cpu in hppa*64*) - _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + _LT_TAGVAR(archive_cmds, $1)='$CC -b $wl+h $wl$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; ia64*) - _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + _LT_TAGVAR(archive_cmds, $1)='$CC -b $wl+h $wl$soname $wl+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; *) - _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + _LT_TAGVAR(archive_cmds, $1)='$CC -b $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; esac # Commands to make compiler produce verbose output that lists @@ -6334,20 +6879,20 @@ # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. - output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $GREP "\-L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' + output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $GREP "\-L"`; list= ; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' ;; *) - if test "$GXX" = yes; then - if test $with_gnu_ld = no; then + if test yes = "$GXX"; then + if test no = "$with_gnu_ld"; then case $host_cpu in hppa*64*) - _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib -fPIC $wl+h $wl$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; ia64*) - _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $pic_flag ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $pic_flag $wl+h $wl$soname $wl+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; *) - _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $pic_flag ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $pic_flag $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; esac fi @@ -6362,22 +6907,22 @@ interix[[3-9]]*) _LT_TAGVAR(hardcode_direct, $1)=no _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' - _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath,$libdir' + _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-E' # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. # Instead, shared libraries are loaded at an image base (0x10000000 by # default) and relocated if they conflict, which is a slow very memory # consuming and fragmenting process. To avoid this, we pick a random, # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link # time. Moving up from 0x10000000 also allows more sbrk(2) space. - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' - _LT_TAGVAR(archive_expsym_cmds, $1)='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-h,$soname $wl--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='sed "s|^|_|" $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-h,$soname $wl--retain-symbols-file,$output_objdir/$soname.expsym $wl--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' ;; irix5* | irix6*) case $cc_basename in CC*) # SGI C++ - _LT_TAGVAR(archive_cmds, $1)='$CC -shared -all -multigot $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' + _LT_TAGVAR(archive_cmds, $1)='$CC -shared -all -multigot $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib' # Archives containing C++ object files must be created using # "CC -ar", where "CC" is the IRIX C++ compiler. This is @@ -6386,17 +6931,17 @@ _LT_TAGVAR(old_archive_cmds, $1)='$CC -ar -WR,-u -o $oldlib $oldobjs' ;; *) - if test "$GXX" = yes; then - if test "$with_gnu_ld" = no; then - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + if test yes = "$GXX"; then + if test no = "$with_gnu_ld"; then + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib' else - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` -o $lib' + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` -o $lib' fi fi _LT_TAGVAR(link_all_deplibs, $1)=yes ;; esac - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: _LT_TAGVAR(inherit_rpath, $1)=yes ;; @@ -6409,8 +6954,8 @@ # KCC will only create a shared library if the output file # ends with ".so" (or ".sl" for HP-UX), so rename the library # to its proper name (with version) after linking. - _LT_TAGVAR(archive_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' - _LT_TAGVAR(archive_expsym_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib ${wl}-retain-symbols-file,$export_symbols; mv \$templib $lib' + _LT_TAGVAR(archive_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\$tempext\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\$tempext\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib $wl-retain-symbols-file,$export_symbols; mv \$templib $lib' # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. @@ -6419,10 +6964,10 @@ # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. - output_verbose_link_cmd='templist=`$CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 | $GREP "ld"`; rm -f libconftest$shared_ext; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' + output_verbose_link_cmd='templist=`$CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 | $GREP "ld"`; rm -f libconftest$shared_ext; list= ; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' - _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath,$libdir' + _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl--export-dynamic' # Archives containing C++ object files must be created using # "CC -Bstatic", where "CC" is the KAI C++ compiler. @@ -6436,59 +6981,59 @@ # earlier do not add the objects themselves. case `$CC -V 2>&1` in *"Version 7."*) - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' ;; *) # Version 8.0 or newer tmp_idyn= case $host_cpu in ia64*) tmp_idyn=' -i_dynamic';; esac - _LT_TAGVAR(archive_cmds, $1)='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + _LT_TAGVAR(archive_cmds, $1)='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' ;; esac _LT_TAGVAR(archive_cmds_need_lc, $1)=no - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' - _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' - _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive$convenience ${wl}--no-whole-archive' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath,$libdir' + _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl--export-dynamic' + _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl--whole-archive$convenience $wl--no-whole-archive' ;; pgCC* | pgcpp*) # Portland Group C++ compiler case `$CC -V` in *pgCC\ [[1-5]].* | *pgcpp\ [[1-5]].*) _LT_TAGVAR(prelink_cmds, $1)='tpldir=Template.dir~ - rm -rf $tpldir~ - $CC --prelink_objects --instantiation_dir $tpldir $objs $libobjs $compile_deplibs~ - compile_command="$compile_command `find $tpldir -name \*.o | sort | $NL2SP`"' + rm -rf $tpldir~ + $CC --prelink_objects --instantiation_dir $tpldir $objs $libobjs $compile_deplibs~ + compile_command="$compile_command `find $tpldir -name \*.o | sort | $NL2SP`"' _LT_TAGVAR(old_archive_cmds, $1)='tpldir=Template.dir~ - rm -rf $tpldir~ - $CC --prelink_objects --instantiation_dir $tpldir $oldobjs$old_deplibs~ - $AR $AR_FLAGS $oldlib$oldobjs$old_deplibs `find $tpldir -name \*.o | sort | $NL2SP`~ - $RANLIB $oldlib' + rm -rf $tpldir~ + $CC --prelink_objects --instantiation_dir $tpldir $oldobjs$old_deplibs~ + $AR $AR_FLAGS $oldlib$oldobjs$old_deplibs `find $tpldir -name \*.o | sort | $NL2SP`~ + $RANLIB $oldlib' _LT_TAGVAR(archive_cmds, $1)='tpldir=Template.dir~ - rm -rf $tpldir~ - $CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~ - $CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | sort | $NL2SP` $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname -o $lib' + rm -rf $tpldir~ + $CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~ + $CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | sort | $NL2SP` $postdep_objects $compiler_flags $wl-soname $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='tpldir=Template.dir~ - rm -rf $tpldir~ - $CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~ - $CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | sort | $NL2SP` $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname ${wl}-retain-symbols-file ${wl}$export_symbols -o $lib' + rm -rf $tpldir~ + $CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~ + $CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | sort | $NL2SP` $postdep_objects $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' ;; *) # Version 6 and above use weak symbols - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname -o $lib' - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname ${wl}-retain-symbols-file ${wl}$export_symbols -o $lib' + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' ;; esac - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}--rpath ${wl}$libdir' - _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' - _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl--rpath $wl$libdir' + _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl--export-dynamic' + _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' ;; cxx*) # Compaq C++ - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib ${wl}-retain-symbols-file $wl$export_symbols' + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname -o $lib $wl-retain-symbols-file $wl$export_symbols' runpath_var=LD_RUN_PATH _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir' @@ -6502,18 +7047,18 @@ # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. - output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld"`; templist=`func_echo_all "$templist" | $SED "s/\(^.*ld.*\)\( .*ld .*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "X$list" | $Xsed' + output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld"`; templist=`func_echo_all "$templist" | $SED "s/\(^.*ld.*\)\( .*ld .*$\)/\1/"`; list= ; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "X$list" | $Xsed' ;; xl* | mpixl* | bgxl*) # IBM XL 8.0 on PPC, with GNU ld - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' - _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' - _LT_TAGVAR(archive_cmds, $1)='$CC -qmkshrobj $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - if test "x$supports_anon_versioning" = xyes; then + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir' + _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl--export-dynamic' + _LT_TAGVAR(archive_cmds, $1)='$CC -qmkshrobj $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' + if test yes = "$supports_anon_versioning"; then _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $output_objdir/$libname.ver~ - cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ - echo "local: *; };" >> $output_objdir/$libname.ver~ - $CC -qmkshrobj $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib' + cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ + echo "local: *; };" >> $output_objdir/$libname.ver~ + $CC -qmkshrobj $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-version-script $wl$output_objdir/$libname.ver -o $lib' fi ;; *) @@ -6521,10 +7066,10 @@ *Sun\ C*) # Sun C++ 5.9 _LT_TAGVAR(no_undefined_flag, $1)=' -zdefs' - _LT_TAGVAR(archive_cmds, $1)='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-retain-symbols-file ${wl}$export_symbols' + _LT_TAGVAR(archive_cmds, $1)='$CC -G$allow_undefined_flag -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G$allow_undefined_flag -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-retain-symbols-file $wl$export_symbols' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' - _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' + _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' _LT_TAGVAR(compiler_needs_object, $1)=yes # Not sure whether something based on @@ -6582,22 +7127,17 @@ _LT_TAGVAR(ld_shlibs, $1)=yes ;; - openbsd2*) - # C++ shared libraries are fairly broken - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - - openbsd*) + openbsd* | bitrig*) if test -f /usr/libexec/ld.so; then _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_shlibpath_var, $1)=no _LT_TAGVAR(hardcode_direct_absolute, $1)=yes _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib' - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' - if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-retain-symbols-file,$export_symbols -o $lib' - _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' - _LT_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath,$libdir' + if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`"; then + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-retain-symbols-file,$export_symbols -o $lib' + _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-E' + _LT_TAGVAR(whole_archive_flag_spec, $1)=$wlarc'--whole-archive$convenience '$wlarc'--no-whole-archive' fi output_verbose_link_cmd=func_echo_all else @@ -6613,9 +7153,9 @@ # KCC will only create a shared library if the output file # ends with ".so" (or ".sl" for HP-UX), so rename the library # to its proper name (with version) after linking. - _LT_TAGVAR(archive_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo "$lib" | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' + _LT_TAGVAR(archive_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo "$lib" | $SED -e "s/\$tempext\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath,$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: # Archives containing C++ object files must be created using @@ -6633,17 +7173,17 @@ cxx*) case $host in osf3*) - _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*' - _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $soname `test -n "$verstring" && func_echo_all "${wl}-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' + _LT_TAGVAR(allow_undefined_flag, $1)=' $wl-expect_unresolved $wl\*' + _LT_TAGVAR(archive_cmds, $1)='$CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $soname `test -n "$verstring" && func_echo_all "$wl-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir' ;; *) _LT_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*' - _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' + _LT_TAGVAR(archive_cmds, $1)='$CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done~ - echo "-hidden">> $lib.exp~ - $CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname ${wl}-input ${wl}$lib.exp `test -n "$verstring" && $ECHO "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib~ - $RM $lib.exp' + echo "-hidden">> $lib.exp~ + $CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname $wl-input $wl$lib.exp `test -n "$verstring" && $ECHO "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib~ + $RM $lib.exp' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir' ;; esac @@ -6658,21 +7198,21 @@ # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. - output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld" | $GREP -v "ld:"`; templist=`func_echo_all "$templist" | $SED "s/\(^.*ld.*\)\( .*ld.*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' + output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld" | $GREP -v "ld:"`; templist=`func_echo_all "$templist" | $SED "s/\(^.*ld.*\)\( .*ld.*$\)/\1/"`; list= ; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' ;; *) - if test "$GXX" = yes && test "$with_gnu_ld" = no; then - _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*' + if test yes,no = "$GXX,$with_gnu_ld"; then + _LT_TAGVAR(allow_undefined_flag, $1)=' $wl-expect_unresolved $wl\*' case $host in osf3*) - _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib' ;; *) - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -nostdlib $allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-msym $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib' ;; esac - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: # Commands to make compiler produce verbose output that lists @@ -6718,9 +7258,9 @@ # Sun C++ 4.2, 5.x and Centerline C++ _LT_TAGVAR(archive_cmds_need_lc,$1)=yes _LT_TAGVAR(no_undefined_flag, $1)=' -zdefs' - _LT_TAGVAR(archive_cmds, $1)='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + _LT_TAGVAR(archive_cmds, $1)='$CC -G$allow_undefined_flag -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ - $CC -G${allow_undefined_flag} ${wl}-M ${wl}$lib.exp -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp' + $CC -G$allow_undefined_flag $wl-M $wl$lib.exp -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' _LT_TAGVAR(hardcode_shlibpath_var, $1)=no @@ -6728,7 +7268,7 @@ solaris2.[[0-5]] | solaris2.[[0-5]].*) ;; *) # The compiler driver will combine and reorder linker options, - # but understands `-z linker_flag'. + # but understands '-z linker_flag'. # Supported since Solaris 2.6 (maybe 2.5.1?) _LT_TAGVAR(whole_archive_flag_spec, $1)='-z allextract$convenience -z defaultextract' ;; @@ -6745,30 +7285,30 @@ ;; gcx*) # Green Hills C++ Compiler - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-h $wl$soname -o $lib' # The C++ compiler must be used to create the archive. _LT_TAGVAR(old_archive_cmds, $1)='$CC $LDFLAGS -archive -o $oldlib $oldobjs' ;; *) # GNU C++ compiler with Solaris linker - if test "$GXX" = yes && test "$with_gnu_ld" = no; then - _LT_TAGVAR(no_undefined_flag, $1)=' ${wl}-z ${wl}defs' + if test yes,no = "$GXX,$with_gnu_ld"; then + _LT_TAGVAR(no_undefined_flag, $1)=' $wl-z ${wl}defs' if $CC --version | $GREP -v '^2\.7' > /dev/null; then - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-h $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ - $CC -shared $pic_flag -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp' + $CC -shared $pic_flag -nostdlib $wl-M $wl$lib.exp $wl-h $wl$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp' # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' else - # g++ 2.7 appears to require `-G' NOT `-shared' on this + # g++ 2.7 appears to require '-G' NOT '-shared' on this # platform. - _LT_TAGVAR(archive_cmds, $1)='$CC -G -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' + _LT_TAGVAR(archive_cmds, $1)='$CC -G -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-h $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ - $CC -G -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp' + $CC -G -nostdlib $wl-M $wl$lib.exp $wl-h $wl$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp' # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when @@ -6776,11 +7316,11 @@ output_verbose_link_cmd='$CC -G $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' fi - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $wl$libdir' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-R $wl$libdir' case $host_os in solaris2.[[0-5]] | solaris2.[[0-5]].*) ;; *) - _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract' + _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl-z ${wl}allextract$convenience $wl-z ${wl}defaultextract' ;; esac fi @@ -6789,52 +7329,52 @@ ;; sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[[01]].[[10]]* | unixware7* | sco3.2v5.0.[[024]]*) - _LT_TAGVAR(no_undefined_flag, $1)='${wl}-z,text' + _LT_TAGVAR(no_undefined_flag, $1)='$wl-z,text' _LT_TAGVAR(archive_cmds_need_lc, $1)=no _LT_TAGVAR(hardcode_shlibpath_var, $1)=no runpath_var='LD_RUN_PATH' case $cc_basename in CC*) - _LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(archive_cmds, $1)='$CC -G $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' ;; *) - _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' ;; esac ;; sysv5* | sco3.2v5* | sco5v6*) - # Note: We can NOT use -z defs as we might desire, because we do not + # Note: We CANNOT use -z defs as we might desire, because we do not # link with -lc, and that would cause any symbols used from libc to # always be unresolved, which means just about no library would # ever link correctly. If we're not using GNU ld we use -z text # though, which does catch some bad symbols but isn't as heavy-handed # as -z defs. - _LT_TAGVAR(no_undefined_flag, $1)='${wl}-z,text' - _LT_TAGVAR(allow_undefined_flag, $1)='${wl}-z,nodefs' + _LT_TAGVAR(no_undefined_flag, $1)='$wl-z,text' + _LT_TAGVAR(allow_undefined_flag, $1)='$wl-z,nodefs' _LT_TAGVAR(archive_cmds_need_lc, $1)=no _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R,$libdir' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-R,$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=':' _LT_TAGVAR(link_all_deplibs, $1)=yes - _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-Bexport' + _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-Bexport' runpath_var='LD_RUN_PATH' case $cc_basename in CC*) - _LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(archive_cmds, $1)='$CC -G $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(old_archive_cmds, $1)='$CC -Tprelink_objects $oldobjs~ - '"$_LT_TAGVAR(old_archive_cmds, $1)" + '"$_LT_TAGVAR(old_archive_cmds, $1)" _LT_TAGVAR(reload_cmds, $1)='$CC -Tprelink_objects $reload_objs~ - '"$_LT_TAGVAR(reload_cmds, $1)" + '"$_LT_TAGVAR(reload_cmds, $1)" ;; *) - _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' ;; esac ;; @@ -6865,10 +7405,10 @@ esac AC_MSG_RESULT([$_LT_TAGVAR(ld_shlibs, $1)]) - test "$_LT_TAGVAR(ld_shlibs, $1)" = no && can_build_shared=no + test no = "$_LT_TAGVAR(ld_shlibs, $1)" && can_build_shared=no - _LT_TAGVAR(GCC, $1)="$GXX" - _LT_TAGVAR(LD, $1)="$LD" + _LT_TAGVAR(GCC, $1)=$GXX + _LT_TAGVAR(LD, $1)=$LD ## CAVEAT EMPTOR: ## There is no encapsulation within the following macros, do not change @@ -6895,7 +7435,7 @@ lt_cv_path_LD=$lt_save_path_LD lt_cv_prog_gnu_ldcxx=$lt_cv_prog_gnu_ld lt_cv_prog_gnu_ld=$lt_save_with_gnu_ld -fi # test "$_lt_caught_CXX_error" != yes +fi # test yes != "$_lt_caught_CXX_error" AC_LANG_POP ])# _LT_LANG_CXX_CONFIG @@ -6917,13 +7457,14 @@ AC_REQUIRE([_LT_PROG_ECHO_BACKSLASH]) func_stripname_cnf () { - case ${2} in - .*) func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%\\\\${2}\$%%"`;; - *) func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%${2}\$%%"`;; + case @S|@2 in + .*) func_stripname_result=`$ECHO "@S|@3" | $SED "s%^@S|@1%%; s%\\\\@S|@2\$%%"`;; + *) func_stripname_result=`$ECHO "@S|@3" | $SED "s%^@S|@1%%; s%@S|@2\$%%"`;; esac } # func_stripname_cnf ])# _LT_FUNC_STRIPNAME_CNF + # _LT_SYS_HIDDEN_LIBDEPS([TAGNAME]) # --------------------------------- # Figure out "hidden" library dependencies from verbose @@ -7007,13 +7548,13 @@ pre_test_object_deps_done=no for p in `eval "$output_verbose_link_cmd"`; do - case ${prev}${p} in + case $prev$p in -L* | -R* | -l*) # Some compilers place space between "-{L,R}" and the path. # Remove the space. - if test $p = "-L" || - test $p = "-R"; then + if test x-L = "$p" || + test x-R = "$p"; then prev=$p continue fi @@ -7029,16 +7570,16 @@ case $p in =*) func_stripname_cnf '=' '' "$p"; p=$lt_sysroot$func_stripname_result ;; esac - if test "$pre_test_object_deps_done" = no; then - case ${prev} in + if test no = "$pre_test_object_deps_done"; then + case $prev in -L | -R) # Internal compiler library paths should come after those # provided the user. The postdeps already come after the # user supplied libs so there is no need to process them. if test -z "$_LT_TAGVAR(compiler_lib_search_path, $1)"; then - _LT_TAGVAR(compiler_lib_search_path, $1)="${prev}${p}" + _LT_TAGVAR(compiler_lib_search_path, $1)=$prev$p else - _LT_TAGVAR(compiler_lib_search_path, $1)="${_LT_TAGVAR(compiler_lib_search_path, $1)} ${prev}${p}" + _LT_TAGVAR(compiler_lib_search_path, $1)="${_LT_TAGVAR(compiler_lib_search_path, $1)} $prev$p" fi ;; # The "-l" case would never come before the object being @@ -7046,9 +7587,9 @@ esac else if test -z "$_LT_TAGVAR(postdeps, $1)"; then - _LT_TAGVAR(postdeps, $1)="${prev}${p}" + _LT_TAGVAR(postdeps, $1)=$prev$p else - _LT_TAGVAR(postdeps, $1)="${_LT_TAGVAR(postdeps, $1)} ${prev}${p}" + _LT_TAGVAR(postdeps, $1)="${_LT_TAGVAR(postdeps, $1)} $prev$p" fi fi prev= @@ -7063,15 +7604,15 @@ continue fi - if test "$pre_test_object_deps_done" = no; then + if test no = "$pre_test_object_deps_done"; then if test -z "$_LT_TAGVAR(predep_objects, $1)"; then - _LT_TAGVAR(predep_objects, $1)="$p" + _LT_TAGVAR(predep_objects, $1)=$p else _LT_TAGVAR(predep_objects, $1)="$_LT_TAGVAR(predep_objects, $1) $p" fi else if test -z "$_LT_TAGVAR(postdep_objects, $1)"; then - _LT_TAGVAR(postdep_objects, $1)="$p" + _LT_TAGVAR(postdep_objects, $1)=$p else _LT_TAGVAR(postdep_objects, $1)="$_LT_TAGVAR(postdep_objects, $1) $p" fi @@ -7102,51 +7643,6 @@ _LT_TAGVAR(postdep_objects,$1)= _LT_TAGVAR(postdeps,$1)= ;; - -linux*) - case `$CC -V 2>&1 | sed 5q` in - *Sun\ C*) - # Sun C++ 5.9 - - # The more standards-conforming stlport4 library is - # incompatible with the Cstd library. Avoid specifying - # it if it's in CXXFLAGS. Ignore libCrun as - # -library=stlport4 depends on it. - case " $CXX $CXXFLAGS " in - *" -library=stlport4 "*) - solaris_use_stlport4=yes - ;; - esac - - if test "$solaris_use_stlport4" != yes; then - _LT_TAGVAR(postdeps,$1)='-library=Cstd -library=Crun' - fi - ;; - esac - ;; - -solaris*) - case $cc_basename in - CC* | sunCC*) - # The more standards-conforming stlport4 library is - # incompatible with the Cstd library. Avoid specifying - # it if it's in CXXFLAGS. Ignore libCrun as - # -library=stlport4 depends on it. - case " $CXX $CXXFLAGS " in - *" -library=stlport4 "*) - solaris_use_stlport4=yes - ;; - esac - - # Adding this requires a known-good setup of shared libraries for - # Sun compiler versions before 5.6, else PIC objects from an old - # archive will be linked into the output, leading to subtle bugs. - if test "$solaris_use_stlport4" != yes; then - _LT_TAGVAR(postdeps,$1)='-library=Cstd -library=Crun' - fi - ;; - esac - ;; esac ]) @@ -7155,7 +7651,7 @@ esac _LT_TAGVAR(compiler_lib_search_dirs, $1)= if test -n "${_LT_TAGVAR(compiler_lib_search_path, $1)}"; then - _LT_TAGVAR(compiler_lib_search_dirs, $1)=`echo " ${_LT_TAGVAR(compiler_lib_search_path, $1)}" | ${SED} -e 's! -L! !g' -e 's!^ !!'` + _LT_TAGVAR(compiler_lib_search_dirs, $1)=`echo " ${_LT_TAGVAR(compiler_lib_search_path, $1)}" | $SED -e 's! -L! !g' -e 's!^ !!'` fi _LT_TAGDECL([], [compiler_lib_search_dirs], [1], [The directories searched by this compiler when creating a shared library]) @@ -7175,10 +7671,10 @@ # -------------------------- # Ensure that the configuration variables for a Fortran 77 compiler are # suitably defined. These variables are subsequently used by _LT_CONFIG -# to write the compiler configuration to `libtool'. +# to write the compiler configuration to 'libtool'. m4_defun([_LT_LANG_F77_CONFIG], [AC_LANG_PUSH(Fortran 77) -if test -z "$F77" || test "X$F77" = "Xno"; then +if test -z "$F77" || test no = "$F77"; then _lt_disable_F77=yes fi @@ -7215,7 +7711,7 @@ # the F77 compiler isn't working. Some variables (like enable_shared) # are currently assumed to apply to all compilers on this platform, # and will be corrupted by setting them based on a non-working compiler. -if test "$_lt_disable_F77" != yes; then +if test yes != "$_lt_disable_F77"; then # Code to be used in simple compile tests lt_simple_compile_test_code="\ subroutine t @@ -7237,7 +7733,7 @@ _LT_LINKER_BOILERPLATE # Allow CC to be a program name with arguments. - lt_save_CC="$CC" + lt_save_CC=$CC lt_save_GCC=$GCC lt_save_CFLAGS=$CFLAGS CC=${F77-"f77"} @@ -7251,21 +7747,25 @@ AC_MSG_RESULT([$can_build_shared]) AC_MSG_CHECKING([whether to build shared libraries]) - test "$can_build_shared" = "no" && enable_shared=no + test no = "$can_build_shared" && enable_shared=no # On AIX, shared libraries and static libraries use the same namespace, and # are all built from PIC. case $host_os in aix3*) - test "$enable_shared" = yes && enable_static=no + test yes = "$enable_shared" && enable_static=no if test -n "$RANLIB"; then archive_cmds="$archive_cmds~\$RANLIB \$lib" postinstall_cmds='$RANLIB $lib' fi ;; aix[[4-9]]*) - if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then - test "$enable_shared" = yes && enable_static=no + if test ia64 != "$host_cpu"; then + case $enable_shared,$with_aix_soname,$aix_use_runtimelinking in + yes,aix,yes) ;; # shared object as lib.so file only + yes,svr4,*) ;; # shared object as lib.so archive member only + yes,*) enable_static=no ;; # shared object in lib.a archive as well + esac fi ;; esac @@ -7273,11 +7773,11 @@ AC_MSG_CHECKING([whether to build static libraries]) # Make sure either enable_shared or enable_static is yes. - test "$enable_shared" = yes || enable_static=yes + test yes = "$enable_shared" || enable_static=yes AC_MSG_RESULT([$enable_static]) - _LT_TAGVAR(GCC, $1)="$G77" - _LT_TAGVAR(LD, $1)="$LD" + _LT_TAGVAR(GCC, $1)=$G77 + _LT_TAGVAR(LD, $1)=$LD ## CAVEAT EMPTOR: ## There is no encapsulation within the following macros, do not change @@ -7294,9 +7794,9 @@ fi # test -n "$compiler" GCC=$lt_save_GCC - CC="$lt_save_CC" - CFLAGS="$lt_save_CFLAGS" -fi # test "$_lt_disable_F77" != yes + CC=$lt_save_CC + CFLAGS=$lt_save_CFLAGS +fi # test yes != "$_lt_disable_F77" AC_LANG_POP ])# _LT_LANG_F77_CONFIG @@ -7306,11 +7806,11 @@ # ------------------------- # Ensure that the configuration variables for a Fortran compiler are # suitably defined. These variables are subsequently used by _LT_CONFIG -# to write the compiler configuration to `libtool'. +# to write the compiler configuration to 'libtool'. m4_defun([_LT_LANG_FC_CONFIG], [AC_LANG_PUSH(Fortran) -if test -z "$FC" || test "X$FC" = "Xno"; then +if test -z "$FC" || test no = "$FC"; then _lt_disable_FC=yes fi @@ -7347,7 +7847,7 @@ # the FC compiler isn't working. Some variables (like enable_shared) # are currently assumed to apply to all compilers on this platform, # and will be corrupted by setting them based on a non-working compiler. -if test "$_lt_disable_FC" != yes; then +if test yes != "$_lt_disable_FC"; then # Code to be used in simple compile tests lt_simple_compile_test_code="\ subroutine t @@ -7369,7 +7869,7 @@ _LT_LINKER_BOILERPLATE # Allow CC to be a program name with arguments. - lt_save_CC="$CC" + lt_save_CC=$CC lt_save_GCC=$GCC lt_save_CFLAGS=$CFLAGS CC=${FC-"f95"} @@ -7385,21 +7885,25 @@ AC_MSG_RESULT([$can_build_shared]) AC_MSG_CHECKING([whether to build shared libraries]) - test "$can_build_shared" = "no" && enable_shared=no + test no = "$can_build_shared" && enable_shared=no # On AIX, shared libraries and static libraries use the same namespace, and # are all built from PIC. case $host_os in aix3*) - test "$enable_shared" = yes && enable_static=no + test yes = "$enable_shared" && enable_static=no if test -n "$RANLIB"; then archive_cmds="$archive_cmds~\$RANLIB \$lib" postinstall_cmds='$RANLIB $lib' fi ;; aix[[4-9]]*) - if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then - test "$enable_shared" = yes && enable_static=no + if test ia64 != "$host_cpu"; then + case $enable_shared,$with_aix_soname,$aix_use_runtimelinking in + yes,aix,yes) ;; # shared object as lib.so file only + yes,svr4,*) ;; # shared object as lib.so archive member only + yes,*) enable_static=no ;; # shared object in lib.a archive as well + esac fi ;; esac @@ -7407,11 +7911,11 @@ AC_MSG_CHECKING([whether to build static libraries]) # Make sure either enable_shared or enable_static is yes. - test "$enable_shared" = yes || enable_static=yes + test yes = "$enable_shared" || enable_static=yes AC_MSG_RESULT([$enable_static]) - _LT_TAGVAR(GCC, $1)="$ac_cv_fc_compiler_gnu" - _LT_TAGVAR(LD, $1)="$LD" + _LT_TAGVAR(GCC, $1)=$ac_cv_fc_compiler_gnu + _LT_TAGVAR(LD, $1)=$LD ## CAVEAT EMPTOR: ## There is no encapsulation within the following macros, do not change @@ -7431,7 +7935,7 @@ GCC=$lt_save_GCC CC=$lt_save_CC CFLAGS=$lt_save_CFLAGS -fi # test "$_lt_disable_FC" != yes +fi # test yes != "$_lt_disable_FC" AC_LANG_POP ])# _LT_LANG_FC_CONFIG @@ -7441,7 +7945,7 @@ # -------------------------- # Ensure that the configuration variables for the GNU Java Compiler compiler # are suitably defined. These variables are subsequently used by _LT_CONFIG -# to write the compiler configuration to `libtool'. +# to write the compiler configuration to 'libtool'. m4_defun([_LT_LANG_GCJ_CONFIG], [AC_REQUIRE([LT_PROG_GCJ])dnl AC_LANG_SAVE @@ -7475,7 +7979,7 @@ CFLAGS=$GCJFLAGS compiler=$CC _LT_TAGVAR(compiler, $1)=$CC -_LT_TAGVAR(LD, $1)="$LD" +_LT_TAGVAR(LD, $1)=$LD _LT_CC_BASENAME([$compiler]) # GCJ did not exist at the time GCC didn't implicitly link libc in. @@ -7512,7 +8016,7 @@ # -------------------------- # Ensure that the configuration variables for the GNU Go compiler # are suitably defined. These variables are subsequently used by _LT_CONFIG -# to write the compiler configuration to `libtool'. +# to write the compiler configuration to 'libtool'. m4_defun([_LT_LANG_GO_CONFIG], [AC_REQUIRE([LT_PROG_GO])dnl AC_LANG_SAVE @@ -7546,7 +8050,7 @@ CFLAGS=$GOFLAGS compiler=$CC _LT_TAGVAR(compiler, $1)=$CC -_LT_TAGVAR(LD, $1)="$LD" +_LT_TAGVAR(LD, $1)=$LD _LT_CC_BASENAME([$compiler]) # Go did not exist at the time GCC didn't implicitly link libc in. @@ -7583,7 +8087,7 @@ # ------------------------- # Ensure that the configuration variables for the Windows resource compiler # are suitably defined. These variables are subsequently used by _LT_CONFIG -# to write the compiler configuration to `libtool'. +# to write the compiler configuration to 'libtool'. m4_defun([_LT_LANG_RC_CONFIG], [AC_REQUIRE([LT_PROG_RC])dnl AC_LANG_SAVE @@ -7599,7 +8103,7 @@ lt_simple_compile_test_code='sample MENU { MENUITEM "&Soup", 100, CHECKED }' # Code to be used in simple link tests -lt_simple_link_test_code="$lt_simple_compile_test_code" +lt_simple_link_test_code=$lt_simple_compile_test_code # ltmain only uses $CC for tagged configurations so make sure $CC is set. _LT_TAG_COMPILER @@ -7609,7 +8113,7 @@ _LT_LINKER_BOILERPLATE # Allow CC to be a program name with arguments. -lt_save_CC="$CC" +lt_save_CC=$CC lt_save_CFLAGS=$CFLAGS lt_save_GCC=$GCC GCC= @@ -7638,7 +8142,7 @@ [m4_ifdef([AC_PROG_GCJ], [AC_PROG_GCJ], [m4_ifdef([A][M_PROG_GCJ], [A][M_PROG_GCJ], [AC_CHECK_TOOL(GCJ, gcj,) - test "x${GCJFLAGS+set}" = xset || GCJFLAGS="-g -O2" + test set = "${GCJFLAGS+set}" || GCJFLAGS="-g -O2" AC_SUBST(GCJFLAGS)])])[]dnl ]) @@ -7749,7 +8253,7 @@ # Add /usr/xpg4/bin/sed as it is typically found on Solaris # along with /bin/sed that truncates output. for lt_ac_sed in $lt_ac_sed_list /usr/xpg4/bin/sed; do - test ! -f $lt_ac_sed && continue + test ! -f "$lt_ac_sed" && continue cat /dev/null > conftest.in lt_ac_count=0 echo $ECHO_N "0123456789$ECHO_C" >conftest.in @@ -7766,9 +8270,9 @@ $lt_ac_sed -e 's/a$//' < conftest.nl >conftest.out || break cmp -s conftest.out conftest.nl || break # 10000 chars as input seems more than enough - test $lt_ac_count -gt 10 && break + test 10 -lt "$lt_ac_count" && break lt_ac_count=`expr $lt_ac_count + 1` - if test $lt_ac_count -gt $lt_ac_max; then + if test "$lt_ac_count" -gt "$lt_ac_max"; then lt_ac_max=$lt_ac_count lt_cv_path_SED=$lt_ac_sed fi @@ -7792,27 +8296,7 @@ # Find out whether the shell is Bourne or XSI compatible, # or has some other useful features. m4_defun([_LT_CHECK_SHELL_FEATURES], -[AC_MSG_CHECKING([whether the shell understands some XSI constructs]) -# Try some XSI features -xsi_shell=no -( _lt_dummy="a/b/c" - test "${_lt_dummy##*/},${_lt_dummy%/*},${_lt_dummy#??}"${_lt_dummy%"$_lt_dummy"}, \ - = c,a/b,b/c, \ - && eval 'test $(( 1 + 1 )) -eq 2 \ - && test "${#_lt_dummy}" -eq 5' ) >/dev/null 2>&1 \ - && xsi_shell=yes -AC_MSG_RESULT([$xsi_shell]) -_LT_CONFIG_LIBTOOL_INIT([xsi_shell='$xsi_shell']) - -AC_MSG_CHECKING([whether the shell understands "+="]) -lt_shell_append=no -( foo=bar; set foo baz; eval "$[1]+=\$[2]" && test "$foo" = barbaz ) \ - >/dev/null 2>&1 \ - && lt_shell_append=yes -AC_MSG_RESULT([$lt_shell_append]) -_LT_CONFIG_LIBTOOL_INIT([lt_shell_append='$lt_shell_append']) - -if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then +[if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then lt_unset=unset else lt_unset=false @@ -7836,102 +8320,9 @@ ])# _LT_CHECK_SHELL_FEATURES -# _LT_PROG_FUNCTION_REPLACE (FUNCNAME, REPLACEMENT-BODY) -# ------------------------------------------------------ -# In `$cfgfile', look for function FUNCNAME delimited by `^FUNCNAME ()$' and -# '^} FUNCNAME ', and replace its body with REPLACEMENT-BODY. -m4_defun([_LT_PROG_FUNCTION_REPLACE], -[dnl { -sed -e '/^$1 ()$/,/^} # $1 /c\ -$1 ()\ -{\ -m4_bpatsubsts([$2], [$], [\\], [^\([ ]\)], [\\\1]) -} # Extended-shell $1 implementation' "$cfgfile" > $cfgfile.tmp \ - && mv -f "$cfgfile.tmp" "$cfgfile" \ - || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") -test 0 -eq $? || _lt_function_replace_fail=: -]) - - -# _LT_PROG_REPLACE_SHELLFNS -# ------------------------- -# Replace existing portable implementations of several shell functions with -# equivalent extended shell implementations where those features are available.. -m4_defun([_LT_PROG_REPLACE_SHELLFNS], -[if test x"$xsi_shell" = xyes; then - _LT_PROG_FUNCTION_REPLACE([func_dirname], [dnl - case ${1} in - */*) func_dirname_result="${1%/*}${2}" ;; - * ) func_dirname_result="${3}" ;; - esac]) - - _LT_PROG_FUNCTION_REPLACE([func_basename], [dnl - func_basename_result="${1##*/}"]) - - _LT_PROG_FUNCTION_REPLACE([func_dirname_and_basename], [dnl - case ${1} in - */*) func_dirname_result="${1%/*}${2}" ;; - * ) func_dirname_result="${3}" ;; - esac - func_basename_result="${1##*/}"]) - - _LT_PROG_FUNCTION_REPLACE([func_stripname], [dnl - # pdksh 5.2.14 does not do ${X%$Y} correctly if both X and Y are - # positional parameters, so assign one to ordinary parameter first. - func_stripname_result=${3} - func_stripname_result=${func_stripname_result#"${1}"} - func_stripname_result=${func_stripname_result%"${2}"}]) - - _LT_PROG_FUNCTION_REPLACE([func_split_long_opt], [dnl - func_split_long_opt_name=${1%%=*} - func_split_long_opt_arg=${1#*=}]) - - _LT_PROG_FUNCTION_REPLACE([func_split_short_opt], [dnl - func_split_short_opt_arg=${1#??} - func_split_short_opt_name=${1%"$func_split_short_opt_arg"}]) - - _LT_PROG_FUNCTION_REPLACE([func_lo2o], [dnl - case ${1} in - *.lo) func_lo2o_result=${1%.lo}.${objext} ;; - *) func_lo2o_result=${1} ;; - esac]) - - _LT_PROG_FUNCTION_REPLACE([func_xform], [ func_xform_result=${1%.*}.lo]) - - _LT_PROG_FUNCTION_REPLACE([func_arith], [ func_arith_result=$(( $[*] ))]) - - _LT_PROG_FUNCTION_REPLACE([func_len], [ func_len_result=${#1}]) -fi - -if test x"$lt_shell_append" = xyes; then - _LT_PROG_FUNCTION_REPLACE([func_append], [ eval "${1}+=\\${2}"]) - - _LT_PROG_FUNCTION_REPLACE([func_append_quoted], [dnl - func_quote_for_eval "${2}" -dnl m4 expansion turns \\\\ into \\, and then the shell eval turns that into \ - eval "${1}+=\\\\ \\$func_quote_for_eval_result"]) - - # Save a `func_append' function call where possible by direct use of '+=' - sed -e 's%func_append \([[a-zA-Z_]]\{1,\}\) "%\1+="%g' $cfgfile > $cfgfile.tmp \ - && mv -f "$cfgfile.tmp" "$cfgfile" \ - || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") - test 0 -eq $? || _lt_function_replace_fail=: -else - # Save a `func_append' function call even when '+=' is not available - sed -e 's%func_append \([[a-zA-Z_]]\{1,\}\) "%\1="$\1%g' $cfgfile > $cfgfile.tmp \ - && mv -f "$cfgfile.tmp" "$cfgfile" \ - || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") - test 0 -eq $? || _lt_function_replace_fail=: -fi - -if test x"$_lt_function_replace_fail" = x":"; then - AC_MSG_WARN([Unable to substitute extended shell functions in $ofile]) -fi -]) - # _LT_PATH_CONVERSION_FUNCTIONS # ----------------------------- -# Determine which file name conversion functions should be used by +# Determine what file name conversion functions should be used by # func_to_host_file (and, implicitly, by func_to_host_path). These are needed # for certain cross-compile configurations and native mingw. m4_defun([_LT_PATH_CONVERSION_FUNCTIONS], diff -Nru cairo-1.14.6/build/ltmain.sh cairo-1.15.10/build/ltmain.sh --- cairo-1.14.6/build/ltmain.sh 2015-10-27 21:04:21.000000000 +0000 +++ cairo-1.15.10/build/ltmain.sh 2017-12-07 02:13:45.000000000 +0000 @@ -1,9 +1,12 @@ +#! /bin/sh +## DO NOT EDIT - This file generated from ./build-aux/ltmain.in +## by inline-source v2014-01-03.01 -# libtool (GNU libtool) 2.4.2 +# libtool (GNU libtool) 2.4.6 +# Provide generalized library-building support services. # Written by Gordon Matzigkeit , 1996 -# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, 2006, -# 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc. +# Copyright (C) 1996-2015 Free Software Foundation, Inc. # This is free software; see the source for copying conditions. There is NO # warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. @@ -23,881 +26,2112 @@ # General Public License for more details. # # You should have received a copy of the GNU General Public License -# along with GNU Libtool; see the file COPYING. If not, a copy -# can be downloaded from http://www.gnu.org/licenses/gpl.html, -# or obtained by writing to the Free Software Foundation, Inc., -# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +# along with this program. If not, see . -# Usage: $progname [OPTION]... [MODE-ARG]... -# -# Provide generalized library-building support services. -# -# --config show all configuration variables -# --debug enable verbose shell tracing -# -n, --dry-run display commands without modifying any files -# --features display basic configuration information and exit -# --mode=MODE use operation mode MODE -# --preserve-dup-deps don't remove duplicate dependency libraries -# --quiet, --silent don't print informational messages -# --no-quiet, --no-silent -# print informational messages (default) -# --no-warn don't display warning messages -# --tag=TAG use configuration variables from tag TAG -# -v, --verbose print more informational messages than default -# --no-verbose don't print the extra informational messages -# --version print version information -# -h, --help, --help-all print short, long, or detailed help message -# -# MODE must be one of the following: -# -# clean remove files from the build directory -# compile compile a source file into a libtool object -# execute automatically set library path, then run a program -# finish complete the installation of libtool libraries -# install install libraries or executables -# link create a library or an executable -# uninstall remove libraries from an installed directory -# -# MODE-ARGS vary depending on the MODE. When passed as first option, -# `--mode=MODE' may be abbreviated as `MODE' or a unique abbreviation of that. -# Try `$progname --help --mode=MODE' for a more detailed description of MODE. -# -# When reporting a bug, please describe a test case to reproduce it and -# include the following information: -# -# host-triplet: $host -# shell: $SHELL -# compiler: $LTCC -# compiler flags: $LTCFLAGS -# linker: $LD (gnu? $with_gnu_ld) -# $progname: (GNU libtool) 2.4.2 Debian-2.4.2-1.7ubuntu1 -# automake: $automake_version -# autoconf: $autoconf_version -# -# Report bugs to . -# GNU libtool home page: . -# General help using GNU software: . PROGRAM=libtool PACKAGE=libtool -VERSION="2.4.2 Debian-2.4.2-1.7ubuntu1" -TIMESTAMP="" -package_revision=1.3337 +VERSION="2.4.6 Debian-2.4.6-0.1" +package_revision=2.4.6 -# Be Bourne compatible -if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then + +## ------ ## +## Usage. ## +## ------ ## + +# Run './libtool --help' for help with using this script from the +# command line. + + +## ------------------------------- ## +## User overridable command paths. ## +## ------------------------------- ## + +# After configure completes, it has a better idea of some of the +# shell tools we need than the defaults used by the functions shared +# with bootstrap, so set those here where they can still be over- +# ridden by the user, but otherwise take precedence. + +: ${AUTOCONF="autoconf"} +: ${AUTOMAKE="automake"} + + +## -------------------------- ## +## Source external libraries. ## +## -------------------------- ## + +# Much of our low-level functionality needs to be sourced from external +# libraries, which are installed to $pkgauxdir. + +# Set a version string for this script. +scriptversion=2015-01-20.17; # UTC + +# General shell script boiler plate, and helper functions. +# Written by Gary V. Vaughan, 2004 + +# Copyright (C) 2004-2015 Free Software Foundation, Inc. +# This is free software; see the source for copying conditions. There is NO +# warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + +# 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 3 of the License, or +# (at your option) any later version. + +# As a special exception to the GNU General Public License, if you distribute +# this file as part of a program or library that is built using GNU Libtool, +# you may include this file under the same distribution terms that you use +# for the rest of that program. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNES 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 . + +# Please report bugs or propose patches to gary@gnu.org. + + +## ------ ## +## Usage. ## +## ------ ## + +# Evaluate this file near the top of your script to gain access to +# the functions and variables defined here: +# +# . `echo "$0" | ${SED-sed} 's|[^/]*$||'`/build-aux/funclib.sh +# +# If you need to override any of the default environment variable +# settings, do that before evaluating this file. + + +## -------------------- ## +## Shell normalisation. ## +## -------------------- ## + +# Some shells need a little help to be as Bourne compatible as possible. +# Before doing anything else, make sure all that help has been provided! + +DUALCASE=1; export DUALCASE # for MKS sh +if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then : emulate sh NULLCMD=: - # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which + # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which # is contrary to our usage. Disable this feature. alias -g '${1+"$@"}'='"$@"' setopt NO_GLOB_SUBST else - case `(set -o) 2>/dev/null` in *posix*) set -o posix;; esac + case `(set -o) 2>/dev/null` in *posix*) set -o posix ;; esac fi -BIN_SH=xpg4; export BIN_SH # for Tru64 -DUALCASE=1; export DUALCASE # for MKS sh - -# A function that is used when there is no print builtin or printf. -func_fallback_echo () -{ - eval 'cat <<_LTECHO_EOF -$1 -_LTECHO_EOF' -} -# NLS nuisances: We save the old values to restore during execute mode. -lt_user_locale= -lt_safe_locale= -for lt_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES +# NLS nuisances: We save the old values in case they are required later. +_G_user_locale= +_G_safe_locale= +for _G_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES do - eval "if test \"\${$lt_var+set}\" = set; then - save_$lt_var=\$$lt_var - $lt_var=C - export $lt_var - lt_user_locale=\"$lt_var=\\\$save_\$lt_var; \$lt_user_locale\" - lt_safe_locale=\"$lt_var=C; \$lt_safe_locale\" + eval "if test set = \"\${$_G_var+set}\"; then + save_$_G_var=\$$_G_var + $_G_var=C + export $_G_var + _G_user_locale=\"$_G_var=\\\$save_\$_G_var; \$_G_user_locale\" + _G_safe_locale=\"$_G_var=C; \$_G_safe_locale\" fi" done -LC_ALL=C -LANGUAGE=C -export LANGUAGE LC_ALL -$lt_unset CDPATH +# CDPATH. +(unset CDPATH) >/dev/null 2>&1 && unset CDPATH + +# Make sure IFS has a sensible default +sp=' ' +nl=' +' +IFS="$sp $nl" +# There are apparently some retarded systems that use ';' as a PATH separator! +if test "${PATH_SEPARATOR+set}" != set; then + PATH_SEPARATOR=: + (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { + (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || + PATH_SEPARATOR=';' + } +fi -# Work around backward compatibility issue on IRIX 6.5. On IRIX 6.4+, sh -# is ksh but when the shell is invoked as "sh" and the current value of -# the _XPG environment variable is not equal to 1 (one), the special -# positional parameter $0, within a function call, is the name of the -# function. -progpath="$0" +## ------------------------- ## +## Locate command utilities. ## +## ------------------------- ## + + +# func_executable_p FILE +# ---------------------- +# Check that FILE is an executable regular file. +func_executable_p () +{ + test -f "$1" && test -x "$1" +} + + +# func_path_progs PROGS_LIST CHECK_FUNC [PATH] +# -------------------------------------------- +# Search for either a program that responds to --version with output +# containing "GNU", or else returned by CHECK_FUNC otherwise, by +# trying all the directories in PATH with each of the elements of +# PROGS_LIST. +# +# CHECK_FUNC should accept the path to a candidate program, and +# set $func_check_prog_result if it truncates its output less than +# $_G_path_prog_max characters. +func_path_progs () +{ + _G_progs_list=$1 + _G_check_func=$2 + _G_PATH=${3-"$PATH"} + + _G_path_prog_max=0 + _G_path_prog_found=false + _G_save_IFS=$IFS; IFS=${PATH_SEPARATOR-:} + for _G_dir in $_G_PATH; do + IFS=$_G_save_IFS + test -z "$_G_dir" && _G_dir=. + for _G_prog_name in $_G_progs_list; do + for _exeext in '' .EXE; do + _G_path_prog=$_G_dir/$_G_prog_name$_exeext + func_executable_p "$_G_path_prog" || continue + case `"$_G_path_prog" --version 2>&1` in + *GNU*) func_path_progs_result=$_G_path_prog _G_path_prog_found=: ;; + *) $_G_check_func $_G_path_prog + func_path_progs_result=$func_check_prog_result + ;; + esac + $_G_path_prog_found && break 3 + done + done + done + IFS=$_G_save_IFS + test -z "$func_path_progs_result" && { + echo "no acceptable sed could be found in \$PATH" >&2 + exit 1 + } +} + + +# We want to be able to use the functions in this file before configure +# has figured out where the best binaries are kept, which means we have +# to search for them ourselves - except when the results are already set +# where we skip the searches. + +# Unless the user overrides by setting SED, search the path for either GNU +# sed, or the sed that truncates its output the least. +test -z "$SED" && { + _G_sed_script=s/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb/ + for _G_i in 1 2 3 4 5 6 7; do + _G_sed_script=$_G_sed_script$nl$_G_sed_script + done + echo "$_G_sed_script" 2>/dev/null | sed 99q >conftest.sed + _G_sed_script= + + func_check_prog_sed () + { + _G_path_prog=$1 + + _G_count=0 + printf 0123456789 >conftest.in + while : + do + cat conftest.in conftest.in >conftest.tmp + mv conftest.tmp conftest.in + cp conftest.in conftest.nl + echo '' >> conftest.nl + "$_G_path_prog" -f conftest.sed conftest.out 2>/dev/null || break + diff conftest.out conftest.nl >/dev/null 2>&1 || break + _G_count=`expr $_G_count + 1` + if test "$_G_count" -gt "$_G_path_prog_max"; then + # Best one so far, save it but keep looking for a better one + func_check_prog_result=$_G_path_prog + _G_path_prog_max=$_G_count + fi + # 10*(2^10) chars as input seems more than enough + test 10 -lt "$_G_count" && break + done + rm -f conftest.in conftest.tmp conftest.nl conftest.out + } + + func_path_progs "sed gsed" func_check_prog_sed $PATH:/usr/xpg4/bin + rm -f conftest.sed + SED=$func_path_progs_result +} + + +# Unless the user overrides by setting GREP, search the path for either GNU +# grep, or the grep that truncates its output the least. +test -z "$GREP" && { + func_check_prog_grep () + { + _G_path_prog=$1 + + _G_count=0 + _G_path_prog_max=0 + printf 0123456789 >conftest.in + while : + do + cat conftest.in conftest.in >conftest.tmp + mv conftest.tmp conftest.in + cp conftest.in conftest.nl + echo 'GREP' >> conftest.nl + "$_G_path_prog" -e 'GREP$' -e '-(cannot match)-' conftest.out 2>/dev/null || break + diff conftest.out conftest.nl >/dev/null 2>&1 || break + _G_count=`expr $_G_count + 1` + if test "$_G_count" -gt "$_G_path_prog_max"; then + # Best one so far, save it but keep looking for a better one + func_check_prog_result=$_G_path_prog + _G_path_prog_max=$_G_count + fi + # 10*(2^10) chars as input seems more than enough + test 10 -lt "$_G_count" && break + done + rm -f conftest.in conftest.tmp conftest.nl conftest.out + } + + func_path_progs "grep ggrep" func_check_prog_grep $PATH:/usr/xpg4/bin + GREP=$func_path_progs_result +} + + +## ------------------------------- ## +## User overridable command paths. ## +## ------------------------------- ## + +# All uppercase variable names are used for environment variables. These +# variables can be overridden by the user before calling a script that +# uses them if a suitable command of that name is not already available +# in the command search PATH. : ${CP="cp -f"} -test "${ECHO+set}" = set || ECHO=${as_echo-'printf %s\n'} +: ${ECHO="printf %s\n"} +: ${EGREP="$GREP -E"} +: ${FGREP="$GREP -F"} +: ${LN_S="ln -s"} : ${MAKE="make"} : ${MKDIR="mkdir"} : ${MV="mv -f"} : ${RM="rm -f"} : ${SHELL="${CONFIG_SHELL-/bin/sh}"} -: ${Xsed="$SED -e 1s/^X//"} - -# Global variables: -EXIT_SUCCESS=0 -EXIT_FAILURE=1 -EXIT_MISMATCH=63 # $? = 63 is used to indicate version mismatch to missing. -EXIT_SKIP=77 # $? = 77 is used to indicate a skipped test to automake. - -exit_status=$EXIT_SUCCESS - -# Make sure IFS has a sensible default -lt_nl=' -' -IFS=" $lt_nl" -dirname="s,/[^/]*$,," -basename="s,^.*/,," -# func_dirname file append nondir_replacement -# Compute the dirname of FILE. If nonempty, add APPEND to the result, -# otherwise set result to NONDIR_REPLACEMENT. -func_dirname () -{ - func_dirname_result=`$ECHO "${1}" | $SED "$dirname"` - if test "X$func_dirname_result" = "X${1}"; then - func_dirname_result="${3}" - else - func_dirname_result="$func_dirname_result${2}" - fi -} # func_dirname may be replaced by extended shell implementation +## -------------------- ## +## Useful sed snippets. ## +## -------------------- ## +sed_dirname='s|/[^/]*$||' +sed_basename='s|^.*/||' -# func_basename file -func_basename () -{ - func_basename_result=`$ECHO "${1}" | $SED "$basename"` -} # func_basename may be replaced by extended shell implementation +# Sed substitution that helps us do robust quoting. It backslashifies +# metacharacters that are still active within double-quoted strings. +sed_quote_subst='s|\([`"$\\]\)|\\\1|g' +# Same as above, but do not quote variable references. +sed_double_quote_subst='s/\(["`\\]\)/\\\1/g' -# func_dirname_and_basename file append nondir_replacement -# perform func_basename and func_dirname in a single function -# call: -# dirname: Compute the dirname of FILE. If nonempty, -# add APPEND to the result, otherwise set result -# to NONDIR_REPLACEMENT. -# value returned in "$func_dirname_result" -# basename: Compute filename of FILE. -# value retuned in "$func_basename_result" -# Implementation must be kept synchronized with func_dirname -# and func_basename. For efficiency, we do not delegate to -# those functions but instead duplicate the functionality here. -func_dirname_and_basename () -{ - # Extract subdirectory from the argument. - func_dirname_result=`$ECHO "${1}" | $SED -e "$dirname"` - if test "X$func_dirname_result" = "X${1}"; then - func_dirname_result="${3}" - else - func_dirname_result="$func_dirname_result${2}" - fi - func_basename_result=`$ECHO "${1}" | $SED -e "$basename"` -} # func_dirname_and_basename may be replaced by extended shell implementation +# Sed substitution that turns a string into a regex matching for the +# string literally. +sed_make_literal_regex='s|[].[^$\\*\/]|\\&|g' +# Sed substitution that converts a w32 file name or path +# that contains forward slashes, into one that contains +# (escaped) backslashes. A very naive implementation. +sed_naive_backslashify='s|\\\\*|\\|g;s|/|\\|g;s|\\|\\\\|g' -# func_stripname prefix suffix name -# strip PREFIX and SUFFIX off of NAME. -# PREFIX and SUFFIX must not contain globbing or regex special -# characters, hashes, percent signs, but SUFFIX may contain a leading -# dot (in which case that matches only a dot). -# func_strip_suffix prefix name -func_stripname () -{ - case ${2} in - .*) func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%\\\\${2}\$%%"`;; - *) func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%${2}\$%%"`;; - esac -} # func_stripname may be replaced by extended shell implementation +# Re-'\' parameter expansions in output of sed_double_quote_subst that +# were '\'-ed in input to the same. If an odd number of '\' preceded a +# '$' in input to sed_double_quote_subst, that '$' was protected from +# expansion. Since each input '\' is now two '\'s, look for any number +# of runs of four '\'s followed by two '\'s and then a '$'. '\' that '$'. +_G_bs='\\' +_G_bs2='\\\\' +_G_bs4='\\\\\\\\' +_G_dollar='\$' +sed_double_backslash="\ + s/$_G_bs4/&\\ +/g + s/^$_G_bs2$_G_dollar/$_G_bs&/ + s/\\([^$_G_bs]\\)$_G_bs2$_G_dollar/\\1$_G_bs2$_G_bs$_G_dollar/g + s/\n//g" -# These SED scripts presuppose an absolute path with a trailing slash. -pathcar='s,^/\([^/]*\).*$,\1,' -pathcdr='s,^/[^/]*,,' -removedotparts=':dotsl - s@/\./@/@g - t dotsl - s,/\.$,/,' -collapseslashes='s@/\{1,\}@/@g' -finalslash='s,/*$,/,' +## ----------------- ## +## Global variables. ## +## ----------------- ## + +# Except for the global variables explicitly listed below, the following +# functions in the '^func_' namespace, and the '^require_' namespace +# variables initialised in the 'Resource management' section, sourcing +# this file will not pollute your global namespace with anything +# else. There's no portable way to scope variables in Bourne shell +# though, so actually running these functions will sometimes place +# results into a variable named after the function, and often use +# temporary variables in the '^_G_' namespace. If you are careful to +# avoid using those namespaces casually in your sourcing script, things +# should continue to work as you expect. And, of course, you can freely +# overwrite any of the functions or variables defined here before +# calling anything to customize them. -# func_normal_abspath PATH -# Remove doubled-up and trailing slashes, "." path components, -# and cancel out any ".." path components in PATH after making -# it an absolute path. -# value returned in "$func_normal_abspath_result" -func_normal_abspath () -{ - # Start from root dir and reassemble the path. - func_normal_abspath_result= - func_normal_abspath_tpath=$1 - func_normal_abspath_altnamespace= - case $func_normal_abspath_tpath in - "") - # Empty path, that just means $cwd. - func_stripname '' '/' "`pwd`" - func_normal_abspath_result=$func_stripname_result - return - ;; - # The next three entries are used to spot a run of precisely - # two leading slashes without using negated character classes; - # we take advantage of case's first-match behaviour. - ///*) - # Unusual form of absolute path, do nothing. - ;; - //*) - # Not necessarily an ordinary path; POSIX reserves leading '//' - # and for example Cygwin uses it to access remote file shares - # over CIFS/SMB, so we conserve a leading double slash if found. - func_normal_abspath_altnamespace=/ - ;; - /*) - # Absolute path, do nothing. - ;; - *) - # Relative path, prepend $cwd. - func_normal_abspath_tpath=`pwd`/$func_normal_abspath_tpath - ;; - esac - # Cancel out all the simple stuff to save iterations. We also want - # the path to end with a slash for ease of parsing, so make sure - # there is one (and only one) here. - func_normal_abspath_tpath=`$ECHO "$func_normal_abspath_tpath" | $SED \ - -e "$removedotparts" -e "$collapseslashes" -e "$finalslash"` - while :; do - # Processed it all yet? - if test "$func_normal_abspath_tpath" = / ; then - # If we ascended to the root using ".." the result may be empty now. - if test -z "$func_normal_abspath_result" ; then - func_normal_abspath_result=/ - fi - break - fi - func_normal_abspath_tcomponent=`$ECHO "$func_normal_abspath_tpath" | $SED \ - -e "$pathcar"` - func_normal_abspath_tpath=`$ECHO "$func_normal_abspath_tpath" | $SED \ - -e "$pathcdr"` - # Figure out what to do with it - case $func_normal_abspath_tcomponent in - "") - # Trailing empty path component, ignore it. - ;; - ..) - # Parent dir; strip last assembled component from result. - func_dirname "$func_normal_abspath_result" - func_normal_abspath_result=$func_dirname_result - ;; - *) - # Actual path component, append it. - func_normal_abspath_result=$func_normal_abspath_result/$func_normal_abspath_tcomponent - ;; - esac - done - # Restore leading double-slash if one was found on entry. - func_normal_abspath_result=$func_normal_abspath_altnamespace$func_normal_abspath_result -} +EXIT_SUCCESS=0 +EXIT_FAILURE=1 +EXIT_MISMATCH=63 # $? = 63 is used to indicate version mismatch to missing. +EXIT_SKIP=77 # $? = 77 is used to indicate a skipped test to automake. -# func_relative_path SRCDIR DSTDIR -# generates a relative path from SRCDIR to DSTDIR, with a trailing -# slash if non-empty, suitable for immediately appending a filename -# without needing to append a separator. -# value returned in "$func_relative_path_result" -func_relative_path () -{ - func_relative_path_result= - func_normal_abspath "$1" - func_relative_path_tlibdir=$func_normal_abspath_result - func_normal_abspath "$2" - func_relative_path_tbindir=$func_normal_abspath_result - - # Ascend the tree starting from libdir - while :; do - # check if we have found a prefix of bindir - case $func_relative_path_tbindir in - $func_relative_path_tlibdir) - # found an exact match - func_relative_path_tcancelled= - break - ;; - $func_relative_path_tlibdir*) - # found a matching prefix - func_stripname "$func_relative_path_tlibdir" '' "$func_relative_path_tbindir" - func_relative_path_tcancelled=$func_stripname_result - if test -z "$func_relative_path_result"; then - func_relative_path_result=. - fi - break - ;; - *) - func_dirname $func_relative_path_tlibdir - func_relative_path_tlibdir=${func_dirname_result} - if test "x$func_relative_path_tlibdir" = x ; then - # Have to descend all the way to the root! - func_relative_path_result=../$func_relative_path_result - func_relative_path_tcancelled=$func_relative_path_tbindir - break - fi - func_relative_path_result=../$func_relative_path_result - ;; - esac - done +# Allow overriding, eg assuming that you follow the convention of +# putting '$debug_cmd' at the start of all your functions, you can get +# bash to show function call trace with: +# +# debug_cmd='eval echo "${FUNCNAME[0]} $*" >&2' bash your-script-name +debug_cmd=${debug_cmd-":"} +exit_cmd=: - # Now calculate path; take care to avoid doubling-up slashes. - func_stripname '' '/' "$func_relative_path_result" - func_relative_path_result=$func_stripname_result - func_stripname '/' '/' "$func_relative_path_tcancelled" - if test "x$func_stripname_result" != x ; then - func_relative_path_result=${func_relative_path_result}/${func_stripname_result} - fi +# By convention, finish your script with: +# +# exit $exit_status +# +# so that you can set exit_status to non-zero if you want to indicate +# something went wrong during execution without actually bailing out at +# the point of failure. +exit_status=$EXIT_SUCCESS - # Normalisation. If bindir is libdir, return empty string, - # else relative path ending with a slash; either way, target - # file name can be directly appended. - if test ! -z "$func_relative_path_result"; then - func_stripname './' '' "$func_relative_path_result/" - func_relative_path_result=$func_stripname_result - fi -} +# Work around backward compatibility issue on IRIX 6.5. On IRIX 6.4+, sh +# is ksh but when the shell is invoked as "sh" and the current value of +# the _XPG environment variable is not equal to 1 (one), the special +# positional parameter $0, within a function call, is the name of the +# function. +progpath=$0 -# The name of this program: -func_dirname_and_basename "$progpath" -progname=$func_basename_result +# The name of this program. +progname=`$ECHO "$progpath" |$SED "$sed_basename"` -# Make sure we have an absolute path for reexecution: +# Make sure we have an absolute progpath for reexecution: case $progpath in [\\/]*|[A-Za-z]:\\*) ;; *[\\/]*) - progdir=$func_dirname_result + progdir=`$ECHO "$progpath" |$SED "$sed_dirname"` progdir=`cd "$progdir" && pwd` - progpath="$progdir/$progname" + progpath=$progdir/$progname ;; *) - save_IFS="$IFS" + _G_IFS=$IFS IFS=${PATH_SEPARATOR-:} for progdir in $PATH; do - IFS="$save_IFS" + IFS=$_G_IFS test -x "$progdir/$progname" && break done - IFS="$save_IFS" + IFS=$_G_IFS test -n "$progdir" || progdir=`pwd` - progpath="$progdir/$progname" + progpath=$progdir/$progname ;; esac -# Sed substitution that helps us do robust quoting. It backslashifies -# metacharacters that are still active within double-quoted strings. -Xsed="${SED}"' -e 1s/^X//' -sed_quote_subst='s/\([`"$\\]\)/\\\1/g' - -# Same as above, but do not quote variable references. -double_quote_subst='s/\(["`\\]\)/\\\1/g' - -# Sed substitution that turns a string into a regex matching for the -# string literally. -sed_make_literal_regex='s,[].[^$\\*\/],\\&,g' -# Sed substitution that converts a w32 file name or path -# which contains forward slashes, into one that contains -# (escaped) backslashes. A very naive implementation. -lt_sed_naive_backslashify='s|\\\\*|\\|g;s|/|\\|g;s|\\|\\\\|g' - -# Re-`\' parameter expansions in output of double_quote_subst that were -# `\'-ed in input to the same. If an odd number of `\' preceded a '$' -# in input to double_quote_subst, that '$' was protected from expansion. -# Since each input `\' is now two `\'s, look for any number of runs of -# four `\'s followed by two `\'s and then a '$'. `\' that '$'. -bs='\\' -bs2='\\\\' -bs4='\\\\\\\\' -dollar='\$' -sed_double_backslash="\ - s/$bs4/&\\ -/g - s/^$bs2$dollar/$bs&/ - s/\\([^$bs]\\)$bs2$dollar/\\1$bs2$bs$dollar/g - s/\n//g" +## ----------------- ## +## Standard options. ## +## ----------------- ## + +# The following options affect the operation of the functions defined +# below, and should be set appropriately depending on run-time para- +# meters passed on the command line. -# Standard options: opt_dry_run=false -opt_help=false opt_quiet=false opt_verbose=false -opt_warning=: - -# func_echo arg... -# Echo program name prefixed message, along with the current mode -# name if it has been set yet. -func_echo () -{ - $ECHO "$progname: ${opt_mode+$opt_mode: }$*" -} -# func_verbose arg... -# Echo program name prefixed message in verbose mode only. -func_verbose () -{ - $opt_verbose && func_echo ${1+"$@"} +# Categories 'all' and 'none' are always available. Append any others +# you will pass as the first argument to func_warning from your own +# code. +warning_categories= + +# By default, display warnings according to 'opt_warning_types'. Set +# 'warning_func' to ':' to elide all warnings, or func_fatal_error to +# treat the next displayed warning as a fatal error. +warning_func=func_warn_and_continue + +# Set to 'all' to display all warnings, 'none' to suppress all +# warnings, or a space delimited list of some subset of +# 'warning_categories' to display only the listed warnings. +opt_warning_types=all + + +## -------------------- ## +## Resource management. ## +## -------------------- ## + +# This section contains definitions for functions that each ensure a +# particular resource (a file, or a non-empty configuration variable for +# example) is available, and if appropriate to extract default values +# from pertinent package files. Call them using their associated +# 'require_*' variable to ensure that they are executed, at most, once. +# +# It's entirely deliberate that calling these functions can set +# variables that don't obey the namespace limitations obeyed by the rest +# of this file, in order that that they be as useful as possible to +# callers. + + +# require_term_colors +# ------------------- +# Allow display of bold text on terminals that support it. +require_term_colors=func_require_term_colors +func_require_term_colors () +{ + $debug_cmd + + test -t 1 && { + # COLORTERM and USE_ANSI_COLORS environment variables take + # precedence, because most terminfo databases neglect to describe + # whether color sequences are supported. + test -n "${COLORTERM+set}" && : ${USE_ANSI_COLORS="1"} + + if test 1 = "$USE_ANSI_COLORS"; then + # Standard ANSI escape sequences + tc_reset='' + tc_bold=''; tc_standout='' + tc_red=''; tc_green='' + tc_blue=''; tc_cyan='' + else + # Otherwise trust the terminfo database after all. + test -n "`tput sgr0 2>/dev/null`" && { + tc_reset=`tput sgr0` + test -n "`tput bold 2>/dev/null`" && tc_bold=`tput bold` + tc_standout=$tc_bold + test -n "`tput smso 2>/dev/null`" && tc_standout=`tput smso` + test -n "`tput setaf 1 2>/dev/null`" && tc_red=`tput setaf 1` + test -n "`tput setaf 2 2>/dev/null`" && tc_green=`tput setaf 2` + test -n "`tput setaf 4 2>/dev/null`" && tc_blue=`tput setaf 4` + test -n "`tput setaf 5 2>/dev/null`" && tc_cyan=`tput setaf 5` + } + fi + } - # A bug in bash halts the script if the last line of a function - # fails when set -e is in force, so we need another command to - # work around that: - : + require_term_colors=: } -# func_echo_all arg... -# Invoke $ECHO with all args, space-separated. -func_echo_all () -{ - $ECHO "$*" -} -# func_error arg... -# Echo program name prefixed message to standard error. -func_error () -{ - $ECHO "$progname: ${opt_mode+$opt_mode: }"${1+"$@"} 1>&2 -} +## ----------------- ## +## Function library. ## +## ----------------- ## -# func_warning arg... -# Echo program name prefixed warning message to standard error. -func_warning () -{ - $opt_warning && $ECHO "$progname: ${opt_mode+$opt_mode: }warning: "${1+"$@"} 1>&2 +# This section contains a variety of useful functions to call in your +# scripts. Take note of the portable wrappers for features provided by +# some modern shells, which will fall back to slower equivalents on +# less featureful shells. - # bash bug again: - : -} -# func_fatal_error arg... -# Echo program name prefixed message to standard error, and exit. -func_fatal_error () -{ - func_error ${1+"$@"} - exit $EXIT_FAILURE -} +# func_append VAR VALUE +# --------------------- +# Append VALUE onto the existing contents of VAR. -# func_fatal_help arg... -# Echo program name prefixed message to standard error, followed by -# a help hint, and exit. -func_fatal_help () -{ - func_error ${1+"$@"} - func_fatal_error "$help" -} -help="Try \`$progname --help' for more information." ## default + # We should try to minimise forks, especially on Windows where they are + # unreasonably slow, so skip the feature probes when bash or zsh are + # being used: + if test set = "${BASH_VERSION+set}${ZSH_VERSION+set}"; then + : ${_G_HAVE_ARITH_OP="yes"} + : ${_G_HAVE_XSI_OPS="yes"} + # The += operator was introduced in bash 3.1 + case $BASH_VERSION in + [12].* | 3.0 | 3.0*) ;; + *) + : ${_G_HAVE_PLUSEQ_OP="yes"} + ;; + esac + fi + # _G_HAVE_PLUSEQ_OP + # Can be empty, in which case the shell is probed, "yes" if += is + # useable or anything else if it does not work. + test -z "$_G_HAVE_PLUSEQ_OP" \ + && (eval 'x=a; x+=" b"; test "a b" = "$x"') 2>/dev/null \ + && _G_HAVE_PLUSEQ_OP=yes + +if test yes = "$_G_HAVE_PLUSEQ_OP" +then + # This is an XSI compatible shell, allowing a faster implementation... + eval 'func_append () + { + $debug_cmd + + eval "$1+=\$2" + }' +else + # ...otherwise fall back to using expr, which is often a shell builtin. + func_append () + { + $debug_cmd + + eval "$1=\$$1\$2" + } +fi + + +# func_append_quoted VAR VALUE +# ---------------------------- +# Quote VALUE and append to the end of shell variable VAR, separated +# by a space. +if test yes = "$_G_HAVE_PLUSEQ_OP"; then + eval 'func_append_quoted () + { + $debug_cmd + + func_quote_for_eval "$2" + eval "$1+=\\ \$func_quote_for_eval_result" + }' +else + func_append_quoted () + { + $debug_cmd + + func_quote_for_eval "$2" + eval "$1=\$$1\\ \$func_quote_for_eval_result" + } +fi + + +# func_append_uniq VAR VALUE +# -------------------------- +# Append unique VALUE onto the existing contents of VAR, assuming +# entries are delimited by the first character of VALUE. For example: +# +# func_append_uniq options " --another-option option-argument" +# +# will only append to $options if " --another-option option-argument " +# is not already present somewhere in $options already (note spaces at +# each end implied by leading space in second argument). +func_append_uniq () +{ + $debug_cmd + + eval _G_current_value='`$ECHO $'$1'`' + _G_delim=`expr "$2" : '\(.\)'` + + case $_G_delim$_G_current_value$_G_delim in + *"$2$_G_delim"*) ;; + *) func_append "$@" ;; + esac +} + + +# func_arith TERM... +# ------------------ +# Set func_arith_result to the result of evaluating TERMs. + test -z "$_G_HAVE_ARITH_OP" \ + && (eval 'test 2 = $(( 1 + 1 ))') 2>/dev/null \ + && _G_HAVE_ARITH_OP=yes + +if test yes = "$_G_HAVE_ARITH_OP"; then + eval 'func_arith () + { + $debug_cmd + + func_arith_result=$(( $* )) + }' +else + func_arith () + { + $debug_cmd + + func_arith_result=`expr "$@"` + } +fi + + +# func_basename FILE +# ------------------ +# Set func_basename_result to FILE with everything up to and including +# the last / stripped. +if test yes = "$_G_HAVE_XSI_OPS"; then + # If this shell supports suffix pattern removal, then use it to avoid + # forking. Hide the definitions single quotes in case the shell chokes + # on unsupported syntax... + _b='func_basename_result=${1##*/}' + _d='case $1 in + */*) func_dirname_result=${1%/*}$2 ;; + * ) func_dirname_result=$3 ;; + esac' + +else + # ...otherwise fall back to using sed. + _b='func_basename_result=`$ECHO "$1" |$SED "$sed_basename"`' + _d='func_dirname_result=`$ECHO "$1" |$SED "$sed_dirname"` + if test "X$func_dirname_result" = "X$1"; then + func_dirname_result=$3 + else + func_append func_dirname_result "$2" + fi' +fi + +eval 'func_basename () +{ + $debug_cmd + + '"$_b"' +}' + + +# func_dirname FILE APPEND NONDIR_REPLACEMENT +# ------------------------------------------- +# Compute the dirname of FILE. If nonempty, add APPEND to the result, +# otherwise set result to NONDIR_REPLACEMENT. +eval 'func_dirname () +{ + $debug_cmd -# func_grep expression filename + '"$_d"' +}' + + +# func_dirname_and_basename FILE APPEND NONDIR_REPLACEMENT +# -------------------------------------------------------- +# Perform func_basename and func_dirname in a single function +# call: +# dirname: Compute the dirname of FILE. If nonempty, +# add APPEND to the result, otherwise set result +# to NONDIR_REPLACEMENT. +# value returned in "$func_dirname_result" +# basename: Compute filename of FILE. +# value retuned in "$func_basename_result" +# For efficiency, we do not delegate to the functions above but instead +# duplicate the functionality here. +eval 'func_dirname_and_basename () +{ + $debug_cmd + + '"$_b"' + '"$_d"' +}' + + +# func_echo ARG... +# ---------------- +# Echo program name prefixed message. +func_echo () +{ + $debug_cmd + + _G_message=$* + + func_echo_IFS=$IFS + IFS=$nl + for _G_line in $_G_message; do + IFS=$func_echo_IFS + $ECHO "$progname: $_G_line" + done + IFS=$func_echo_IFS +} + + +# func_echo_all ARG... +# -------------------- +# Invoke $ECHO with all args, space-separated. +func_echo_all () +{ + $ECHO "$*" +} + + +# func_echo_infix_1 INFIX ARG... +# ------------------------------ +# Echo program name, followed by INFIX on the first line, with any +# additional lines not showing INFIX. +func_echo_infix_1 () +{ + $debug_cmd + + $require_term_colors + + _G_infix=$1; shift + _G_indent=$_G_infix + _G_prefix="$progname: $_G_infix: " + _G_message=$* + + # Strip color escape sequences before counting printable length + for _G_tc in "$tc_reset" "$tc_bold" "$tc_standout" "$tc_red" "$tc_green" "$tc_blue" "$tc_cyan" + do + test -n "$_G_tc" && { + _G_esc_tc=`$ECHO "$_G_tc" | $SED "$sed_make_literal_regex"` + _G_indent=`$ECHO "$_G_indent" | $SED "s|$_G_esc_tc||g"` + } + done + _G_indent="$progname: "`echo "$_G_indent" | $SED 's|.| |g'`" " ## exclude from sc_prohibit_nested_quotes + + func_echo_infix_1_IFS=$IFS + IFS=$nl + for _G_line in $_G_message; do + IFS=$func_echo_infix_1_IFS + $ECHO "$_G_prefix$tc_bold$_G_line$tc_reset" >&2 + _G_prefix=$_G_indent + done + IFS=$func_echo_infix_1_IFS +} + + +# func_error ARG... +# ----------------- +# Echo program name prefixed message to standard error. +func_error () +{ + $debug_cmd + + $require_term_colors + + func_echo_infix_1 " $tc_standout${tc_red}error$tc_reset" "$*" >&2 +} + + +# func_fatal_error ARG... +# ----------------------- +# Echo program name prefixed message to standard error, and exit. +func_fatal_error () +{ + $debug_cmd + + func_error "$*" + exit $EXIT_FAILURE +} + + +# func_grep EXPRESSION FILENAME +# ----------------------------- # Check whether EXPRESSION matches any line of FILENAME, without output. func_grep () { + $debug_cmd + $GREP "$1" "$2" >/dev/null 2>&1 } -# func_mkdir_p directory-path +# func_len STRING +# --------------- +# Set func_len_result to the length of STRING. STRING may not +# start with a hyphen. + test -z "$_G_HAVE_XSI_OPS" \ + && (eval 'x=a/b/c; + test 5aa/bb/cc = "${#x}${x%%/*}${x%/*}${x#*/}${x##*/}"') 2>/dev/null \ + && _G_HAVE_XSI_OPS=yes + +if test yes = "$_G_HAVE_XSI_OPS"; then + eval 'func_len () + { + $debug_cmd + + func_len_result=${#1} + }' +else + func_len () + { + $debug_cmd + + func_len_result=`expr "$1" : ".*" 2>/dev/null || echo $max_cmd_len` + } +fi + + +# func_mkdir_p DIRECTORY-PATH +# --------------------------- # Make sure the entire path to DIRECTORY-PATH is available. func_mkdir_p () { - my_directory_path="$1" - my_dir_list= + $debug_cmd + + _G_directory_path=$1 + _G_dir_list= - if test -n "$my_directory_path" && test "$opt_dry_run" != ":"; then + if test -n "$_G_directory_path" && test : != "$opt_dry_run"; then - # Protect directory names starting with `-' - case $my_directory_path in - -*) my_directory_path="./$my_directory_path" ;; + # Protect directory names starting with '-' + case $_G_directory_path in + -*) _G_directory_path=./$_G_directory_path ;; esac # While some portion of DIR does not yet exist... - while test ! -d "$my_directory_path"; do + while test ! -d "$_G_directory_path"; do # ...make a list in topmost first order. Use a colon delimited # list incase some portion of path contains whitespace. - my_dir_list="$my_directory_path:$my_dir_list" + _G_dir_list=$_G_directory_path:$_G_dir_list # If the last portion added has no slash in it, the list is done - case $my_directory_path in */*) ;; *) break ;; esac + case $_G_directory_path in */*) ;; *) break ;; esac # ...otherwise throw away the child directory and loop - my_directory_path=`$ECHO "$my_directory_path" | $SED -e "$dirname"` + _G_directory_path=`$ECHO "$_G_directory_path" | $SED -e "$sed_dirname"` done - my_dir_list=`$ECHO "$my_dir_list" | $SED 's,:*$,,'` + _G_dir_list=`$ECHO "$_G_dir_list" | $SED 's|:*$||'` - save_mkdir_p_IFS="$IFS"; IFS=':' - for my_dir in $my_dir_list; do - IFS="$save_mkdir_p_IFS" - # mkdir can fail with a `File exist' error if two processes + func_mkdir_p_IFS=$IFS; IFS=: + for _G_dir in $_G_dir_list; do + IFS=$func_mkdir_p_IFS + # mkdir can fail with a 'File exist' error if two processes # try to create one of the directories concurrently. Don't # stop in that case! - $MKDIR "$my_dir" 2>/dev/null || : + $MKDIR "$_G_dir" 2>/dev/null || : done - IFS="$save_mkdir_p_IFS" + IFS=$func_mkdir_p_IFS # Bail out if we (or some other process) failed to create a directory. - test -d "$my_directory_path" || \ - func_fatal_error "Failed to create \`$1'" + test -d "$_G_directory_path" || \ + func_fatal_error "Failed to create '$1'" fi } -# func_mktempdir [string] +# func_mktempdir [BASENAME] +# ------------------------- # Make a temporary directory that won't clash with other running # libtool processes, and avoids race conditions if possible. If -# given, STRING is the basename for that directory. +# given, BASENAME is the basename for that directory. func_mktempdir () { - my_template="${TMPDIR-/tmp}/${1-$progname}" + $debug_cmd + + _G_template=${TMPDIR-/tmp}/${1-$progname} - if test "$opt_dry_run" = ":"; then + if test : = "$opt_dry_run"; then # Return a directory name, but don't create it in dry-run mode - my_tmpdir="${my_template}-$$" + _G_tmpdir=$_G_template-$$ else # If mktemp works, use that first and foremost - my_tmpdir=`mktemp -d "${my_template}-XXXXXXXX" 2>/dev/null` + _G_tmpdir=`mktemp -d "$_G_template-XXXXXXXX" 2>/dev/null` - if test ! -d "$my_tmpdir"; then + if test ! -d "$_G_tmpdir"; then # Failing that, at least try and use $RANDOM to avoid a race - my_tmpdir="${my_template}-${RANDOM-0}$$" + _G_tmpdir=$_G_template-${RANDOM-0}$$ + + func_mktempdir_umask=`umask` + umask 0077 + $MKDIR "$_G_tmpdir" + umask $func_mktempdir_umask + fi + + # If we're not in dry-run mode, bomb out on failure + test -d "$_G_tmpdir" || \ + func_fatal_error "cannot create temporary directory '$_G_tmpdir'" + fi + + $ECHO "$_G_tmpdir" +} + + +# func_normal_abspath PATH +# ------------------------ +# Remove doubled-up and trailing slashes, "." path components, +# and cancel out any ".." path components in PATH after making +# it an absolute path. +func_normal_abspath () +{ + $debug_cmd + + # These SED scripts presuppose an absolute path with a trailing slash. + _G_pathcar='s|^/\([^/]*\).*$|\1|' + _G_pathcdr='s|^/[^/]*||' + _G_removedotparts=':dotsl + s|/\./|/|g + t dotsl + s|/\.$|/|' + _G_collapseslashes='s|/\{1,\}|/|g' + _G_finalslash='s|/*$|/|' + + # Start from root dir and reassemble the path. + func_normal_abspath_result= + func_normal_abspath_tpath=$1 + func_normal_abspath_altnamespace= + case $func_normal_abspath_tpath in + "") + # Empty path, that just means $cwd. + func_stripname '' '/' "`pwd`" + func_normal_abspath_result=$func_stripname_result + return + ;; + # The next three entries are used to spot a run of precisely + # two leading slashes without using negated character classes; + # we take advantage of case's first-match behaviour. + ///*) + # Unusual form of absolute path, do nothing. + ;; + //*) + # Not necessarily an ordinary path; POSIX reserves leading '//' + # and for example Cygwin uses it to access remote file shares + # over CIFS/SMB, so we conserve a leading double slash if found. + func_normal_abspath_altnamespace=/ + ;; + /*) + # Absolute path, do nothing. + ;; + *) + # Relative path, prepend $cwd. + func_normal_abspath_tpath=`pwd`/$func_normal_abspath_tpath + ;; + esac + + # Cancel out all the simple stuff to save iterations. We also want + # the path to end with a slash for ease of parsing, so make sure + # there is one (and only one) here. + func_normal_abspath_tpath=`$ECHO "$func_normal_abspath_tpath" | $SED \ + -e "$_G_removedotparts" -e "$_G_collapseslashes" -e "$_G_finalslash"` + while :; do + # Processed it all yet? + if test / = "$func_normal_abspath_tpath"; then + # If we ascended to the root using ".." the result may be empty now. + if test -z "$func_normal_abspath_result"; then + func_normal_abspath_result=/ + fi + break + fi + func_normal_abspath_tcomponent=`$ECHO "$func_normal_abspath_tpath" | $SED \ + -e "$_G_pathcar"` + func_normal_abspath_tpath=`$ECHO "$func_normal_abspath_tpath" | $SED \ + -e "$_G_pathcdr"` + # Figure out what to do with it + case $func_normal_abspath_tcomponent in + "") + # Trailing empty path component, ignore it. + ;; + ..) + # Parent dir; strip last assembled component from result. + func_dirname "$func_normal_abspath_result" + func_normal_abspath_result=$func_dirname_result + ;; + *) + # Actual path component, append it. + func_append func_normal_abspath_result "/$func_normal_abspath_tcomponent" + ;; + esac + done + # Restore leading double-slash if one was found on entry. + func_normal_abspath_result=$func_normal_abspath_altnamespace$func_normal_abspath_result +} + + +# func_notquiet ARG... +# -------------------- +# Echo program name prefixed message only when not in quiet mode. +func_notquiet () +{ + $debug_cmd + + $opt_quiet || func_echo ${1+"$@"} + + # A bug in bash halts the script if the last line of a function + # fails when set -e is in force, so we need another command to + # work around that: + : +} + + +# func_relative_path SRCDIR DSTDIR +# -------------------------------- +# Set func_relative_path_result to the relative path from SRCDIR to DSTDIR. +func_relative_path () +{ + $debug_cmd + + func_relative_path_result= + func_normal_abspath "$1" + func_relative_path_tlibdir=$func_normal_abspath_result + func_normal_abspath "$2" + func_relative_path_tbindir=$func_normal_abspath_result + + # Ascend the tree starting from libdir + while :; do + # check if we have found a prefix of bindir + case $func_relative_path_tbindir in + $func_relative_path_tlibdir) + # found an exact match + func_relative_path_tcancelled= + break + ;; + $func_relative_path_tlibdir*) + # found a matching prefix + func_stripname "$func_relative_path_tlibdir" '' "$func_relative_path_tbindir" + func_relative_path_tcancelled=$func_stripname_result + if test -z "$func_relative_path_result"; then + func_relative_path_result=. + fi + break + ;; + *) + func_dirname $func_relative_path_tlibdir + func_relative_path_tlibdir=$func_dirname_result + if test -z "$func_relative_path_tlibdir"; then + # Have to descend all the way to the root! + func_relative_path_result=../$func_relative_path_result + func_relative_path_tcancelled=$func_relative_path_tbindir + break + fi + func_relative_path_result=../$func_relative_path_result + ;; + esac + done + + # Now calculate path; take care to avoid doubling-up slashes. + func_stripname '' '/' "$func_relative_path_result" + func_relative_path_result=$func_stripname_result + func_stripname '/' '/' "$func_relative_path_tcancelled" + if test -n "$func_stripname_result"; then + func_append func_relative_path_result "/$func_stripname_result" + fi + + # Normalisation. If bindir is libdir, return '.' else relative path. + if test -n "$func_relative_path_result"; then + func_stripname './' '' "$func_relative_path_result" + func_relative_path_result=$func_stripname_result + fi + + test -n "$func_relative_path_result" || func_relative_path_result=. + + : +} + + +# func_quote_for_eval ARG... +# -------------------------- +# Aesthetically quote ARGs to be evaled later. +# This function returns two values: +# i) func_quote_for_eval_result +# double-quoted, suitable for a subsequent eval +# ii) func_quote_for_eval_unquoted_result +# has all characters that are still active within double +# quotes backslashified. +func_quote_for_eval () +{ + $debug_cmd + + func_quote_for_eval_unquoted_result= + func_quote_for_eval_result= + while test 0 -lt $#; do + case $1 in + *[\\\`\"\$]*) + _G_unquoted_arg=`printf '%s\n' "$1" |$SED "$sed_quote_subst"` ;; + *) + _G_unquoted_arg=$1 ;; + esac + if test -n "$func_quote_for_eval_unquoted_result"; then + func_append func_quote_for_eval_unquoted_result " $_G_unquoted_arg" + else + func_append func_quote_for_eval_unquoted_result "$_G_unquoted_arg" + fi + + case $_G_unquoted_arg in + # Double-quote args containing shell metacharacters to delay + # word splitting, command substitution and variable expansion + # for a subsequent eval. + # Many Bourne shells cannot handle close brackets correctly + # in scan sets, so we specify it separately. + *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") + _G_quoted_arg=\"$_G_unquoted_arg\" + ;; + *) + _G_quoted_arg=$_G_unquoted_arg + ;; + esac + + if test -n "$func_quote_for_eval_result"; then + func_append func_quote_for_eval_result " $_G_quoted_arg" + else + func_append func_quote_for_eval_result "$_G_quoted_arg" + fi + shift + done +} + + +# func_quote_for_expand ARG +# ------------------------- +# Aesthetically quote ARG to be evaled later; same as above, +# but do not quote variable references. +func_quote_for_expand () +{ + $debug_cmd + + case $1 in + *[\\\`\"]*) + _G_arg=`$ECHO "$1" | $SED \ + -e "$sed_double_quote_subst" -e "$sed_double_backslash"` ;; + *) + _G_arg=$1 ;; + esac + + case $_G_arg in + # Double-quote args containing shell metacharacters to delay + # word splitting and command substitution for a subsequent eval. + # Many Bourne shells cannot handle close brackets correctly + # in scan sets, so we specify it separately. + *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") + _G_arg=\"$_G_arg\" + ;; + esac + + func_quote_for_expand_result=$_G_arg +} + + +# func_stripname PREFIX SUFFIX NAME +# --------------------------------- +# strip PREFIX and SUFFIX from NAME, and store in func_stripname_result. +# PREFIX and SUFFIX must not contain globbing or regex special +# characters, hashes, percent signs, but SUFFIX may contain a leading +# dot (in which case that matches only a dot). +if test yes = "$_G_HAVE_XSI_OPS"; then + eval 'func_stripname () + { + $debug_cmd + + # pdksh 5.2.14 does not do ${X%$Y} correctly if both X and Y are + # positional parameters, so assign one to ordinary variable first. + func_stripname_result=$3 + func_stripname_result=${func_stripname_result#"$1"} + func_stripname_result=${func_stripname_result%"$2"} + }' +else + func_stripname () + { + $debug_cmd + + case $2 in + .*) func_stripname_result=`$ECHO "$3" | $SED -e "s%^$1%%" -e "s%\\\\$2\$%%"`;; + *) func_stripname_result=`$ECHO "$3" | $SED -e "s%^$1%%" -e "s%$2\$%%"`;; + esac + } +fi + + +# func_show_eval CMD [FAIL_EXP] +# ----------------------------- +# Unless opt_quiet is true, then output CMD. Then, if opt_dryrun is +# not true, evaluate CMD. If the evaluation of CMD fails, and FAIL_EXP +# is given, then evaluate it. +func_show_eval () +{ + $debug_cmd + + _G_cmd=$1 + _G_fail_exp=${2-':'} + + func_quote_for_expand "$_G_cmd" + eval "func_notquiet $func_quote_for_expand_result" + + $opt_dry_run || { + eval "$_G_cmd" + _G_status=$? + if test 0 -ne "$_G_status"; then + eval "(exit $_G_status); $_G_fail_exp" + fi + } +} + + +# func_show_eval_locale CMD [FAIL_EXP] +# ------------------------------------ +# Unless opt_quiet is true, then output CMD. Then, if opt_dryrun is +# not true, evaluate CMD. If the evaluation of CMD fails, and FAIL_EXP +# is given, then evaluate it. Use the saved locale for evaluation. +func_show_eval_locale () +{ + $debug_cmd + + _G_cmd=$1 + _G_fail_exp=${2-':'} + + $opt_quiet || { + func_quote_for_expand "$_G_cmd" + eval "func_echo $func_quote_for_expand_result" + } + + $opt_dry_run || { + eval "$_G_user_locale + $_G_cmd" + _G_status=$? + eval "$_G_safe_locale" + if test 0 -ne "$_G_status"; then + eval "(exit $_G_status); $_G_fail_exp" + fi + } +} + + +# func_tr_sh +# ---------- +# Turn $1 into a string suitable for a shell variable name. +# Result is stored in $func_tr_sh_result. All characters +# not in the set a-zA-Z0-9_ are replaced with '_'. Further, +# if $1 begins with a digit, a '_' is prepended as well. +func_tr_sh () +{ + $debug_cmd + + case $1 in + [0-9]* | *[!a-zA-Z0-9_]*) + func_tr_sh_result=`$ECHO "$1" | $SED -e 's/^\([0-9]\)/_\1/' -e 's/[^a-zA-Z0-9_]/_/g'` + ;; + * ) + func_tr_sh_result=$1 + ;; + esac +} + + +# func_verbose ARG... +# ------------------- +# Echo program name prefixed message in verbose mode only. +func_verbose () +{ + $debug_cmd + + $opt_verbose && func_echo "$*" + + : +} + + +# func_warn_and_continue ARG... +# ----------------------------- +# Echo program name prefixed warning message to standard error. +func_warn_and_continue () +{ + $debug_cmd + + $require_term_colors + + func_echo_infix_1 "${tc_red}warning$tc_reset" "$*" >&2 +} + + +# func_warning CATEGORY ARG... +# ---------------------------- +# Echo program name prefixed warning message to standard error. Warning +# messages can be filtered according to CATEGORY, where this function +# elides messages where CATEGORY is not listed in the global variable +# 'opt_warning_types'. +func_warning () +{ + $debug_cmd + + # CATEGORY must be in the warning_categories list! + case " $warning_categories " in + *" $1 "*) ;; + *) func_internal_error "invalid warning category '$1'" ;; + esac + + _G_category=$1 + shift + + case " $opt_warning_types " in + *" $_G_category "*) $warning_func ${1+"$@"} ;; + esac +} + + +# func_sort_ver VER1 VER2 +# ----------------------- +# 'sort -V' is not generally available. +# Note this deviates from the version comparison in automake +# in that it treats 1.5 < 1.5.0, and treats 1.4.4a < 1.4-p3a +# but this should suffice as we won't be specifying old +# version formats or redundant trailing .0 in bootstrap.conf. +# If we did want full compatibility then we should probably +# use m4_version_compare from autoconf. +func_sort_ver () +{ + $debug_cmd + + printf '%s\n%s\n' "$1" "$2" \ + | sort -t. -k 1,1n -k 2,2n -k 3,3n -k 4,4n -k 5,5n -k 6,6n -k 7,7n -k 8,8n -k 9,9n +} + +# func_lt_ver PREV CURR +# --------------------- +# Return true if PREV and CURR are in the correct order according to +# func_sort_ver, otherwise false. Use it like this: +# +# func_lt_ver "$prev_ver" "$proposed_ver" || func_fatal_error "..." +func_lt_ver () +{ + $debug_cmd + + test "x$1" = x`func_sort_ver "$1" "$2" | $SED 1q` +} + + +# Local variables: +# mode: shell-script +# sh-indentation: 2 +# eval: (add-hook 'before-save-hook 'time-stamp) +# time-stamp-pattern: "10/scriptversion=%:y-%02m-%02d.%02H; # UTC" +# time-stamp-time-zone: "UTC" +# End: +#! /bin/sh + +# Set a version string for this script. +scriptversion=2014-01-07.03; # UTC + +# A portable, pluggable option parser for Bourne shell. +# Written by Gary V. Vaughan, 2010 + +# Copyright (C) 2010-2015 Free Software Foundation, Inc. +# This is free software; see the source for copying conditions. There is NO +# warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + +# 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 3 of the License, 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 . + +# Please report bugs or propose patches to gary@gnu.org. + + +## ------ ## +## Usage. ## +## ------ ## + +# This file is a library for parsing options in your shell scripts along +# with assorted other useful supporting features that you can make use +# of too. +# +# For the simplest scripts you might need only: +# +# #!/bin/sh +# . relative/path/to/funclib.sh +# . relative/path/to/options-parser +# scriptversion=1.0 +# func_options ${1+"$@"} +# eval set dummy "$func_options_result"; shift +# ...rest of your script... +# +# In order for the '--version' option to work, you will need to have a +# suitably formatted comment like the one at the top of this file +# starting with '# Written by ' and ending with '# warranty; '. +# +# For '-h' and '--help' to work, you will also need a one line +# description of your script's purpose in a comment directly above the +# '# Written by ' line, like the one at the top of this file. +# +# The default options also support '--debug', which will turn on shell +# execution tracing (see the comment above debug_cmd below for another +# use), and '--verbose' and the func_verbose function to allow your script +# to display verbose messages only when your user has specified +# '--verbose'. +# +# After sourcing this file, you can plug processing for additional +# options by amending the variables from the 'Configuration' section +# below, and following the instructions in the 'Option parsing' +# section further down. + +## -------------- ## +## Configuration. ## +## -------------- ## + +# You should override these variables in your script after sourcing this +# file so that they reflect the customisations you have added to the +# option parser. + +# The usage line for option parsing errors and the start of '-h' and +# '--help' output messages. You can embed shell variables for delayed +# expansion at the time the message is displayed, but you will need to +# quote other shell meta-characters carefully to prevent them being +# expanded when the contents are evaled. +usage='$progpath [OPTION]...' + +# Short help message in response to '-h' and '--help'. Add to this or +# override it after sourcing this library to reflect the full set of +# options your script accepts. +usage_message="\ + --debug enable verbose shell tracing + -W, --warnings=CATEGORY + report the warnings falling in CATEGORY [all] + -v, --verbose verbosely report processing + --version print version information and exit + -h, --help print short or long help message and exit +" + +# Additional text appended to 'usage_message' in response to '--help'. +long_help_message=" +Warning categories include: + 'all' show all warnings + 'none' turn off all the warnings + 'error' warnings are treated as fatal errors" + +# Help message printed before fatal option parsing errors. +fatal_help="Try '\$progname --help' for more information." + + + +## ------------------------- ## +## Hook function management. ## +## ------------------------- ## + +# This section contains functions for adding, removing, and running hooks +# to the main code. A hook is just a named list of of function, that can +# be run in order later on. + +# func_hookable FUNC_NAME +# ----------------------- +# Declare that FUNC_NAME will run hooks added with +# 'func_add_hook FUNC_NAME ...'. +func_hookable () +{ + $debug_cmd + + func_append hookable_fns " $1" +} + + +# func_add_hook FUNC_NAME HOOK_FUNC +# --------------------------------- +# Request that FUNC_NAME call HOOK_FUNC before it returns. FUNC_NAME must +# first have been declared "hookable" by a call to 'func_hookable'. +func_add_hook () +{ + $debug_cmd + + case " $hookable_fns " in + *" $1 "*) ;; + *) func_fatal_error "'$1' does not accept hook functions." ;; + esac + + eval func_append ${1}_hooks '" $2"' +} + + +# func_remove_hook FUNC_NAME HOOK_FUNC +# ------------------------------------ +# Remove HOOK_FUNC from the list of functions called by FUNC_NAME. +func_remove_hook () +{ + $debug_cmd + + eval ${1}_hooks='`$ECHO "\$'$1'_hooks" |$SED "s| '$2'||"`' +} + + +# func_run_hooks FUNC_NAME [ARG]... +# --------------------------------- +# Run all hook functions registered to FUNC_NAME. +# It is assumed that the list of hook functions contains nothing more +# than a whitespace-delimited list of legal shell function names, and +# no effort is wasted trying to catch shell meta-characters or preserve +# whitespace. +func_run_hooks () +{ + $debug_cmd + + case " $hookable_fns " in + *" $1 "*) ;; + *) func_fatal_error "'$1' does not support hook funcions.n" ;; + esac + + eval _G_hook_fns=\$$1_hooks; shift + + for _G_hook in $_G_hook_fns; do + eval $_G_hook '"$@"' + + # store returned options list back into positional + # parameters for next 'cmd' execution. + eval _G_hook_result=\$${_G_hook}_result + eval set dummy "$_G_hook_result"; shift + done + + func_quote_for_eval ${1+"$@"} + func_run_hooks_result=$func_quote_for_eval_result +} + + + +## --------------- ## +## Option parsing. ## +## --------------- ## + +# In order to add your own option parsing hooks, you must accept the +# full positional parameter list in your hook function, remove any +# options that you action, and then pass back the remaining unprocessed +# options in '_result', escaped suitably for +# 'eval'. Like this: +# +# my_options_prep () +# { +# $debug_cmd +# +# # Extend the existing usage message. +# usage_message=$usage_message' +# -s, --silent don'\''t print informational messages +# ' +# +# func_quote_for_eval ${1+"$@"} +# my_options_prep_result=$func_quote_for_eval_result +# } +# func_add_hook func_options_prep my_options_prep +# +# +# my_silent_option () +# { +# $debug_cmd +# +# # Note that for efficiency, we parse as many options as we can +# # recognise in a loop before passing the remainder back to the +# # caller on the first unrecognised argument we encounter. +# while test $# -gt 0; do +# opt=$1; shift +# case $opt in +# --silent|-s) opt_silent=: ;; +# # Separate non-argument short options: +# -s*) func_split_short_opt "$_G_opt" +# set dummy "$func_split_short_opt_name" \ +# "-$func_split_short_opt_arg" ${1+"$@"} +# shift +# ;; +# *) set dummy "$_G_opt" "$*"; shift; break ;; +# esac +# done +# +# func_quote_for_eval ${1+"$@"} +# my_silent_option_result=$func_quote_for_eval_result +# } +# func_add_hook func_parse_options my_silent_option +# +# +# my_option_validation () +# { +# $debug_cmd +# +# $opt_silent && $opt_verbose && func_fatal_help "\ +# '--silent' and '--verbose' options are mutually exclusive." +# +# func_quote_for_eval ${1+"$@"} +# my_option_validation_result=$func_quote_for_eval_result +# } +# func_add_hook func_validate_options my_option_validation +# +# You'll alse need to manually amend $usage_message to reflect the extra +# options you parse. It's preferable to append if you can, so that +# multiple option parsing hooks can be added safely. + + +# func_options [ARG]... +# --------------------- +# All the functions called inside func_options are hookable. See the +# individual implementations for details. +func_hookable func_options +func_options () +{ + $debug_cmd - save_mktempdir_umask=`umask` - umask 0077 - $MKDIR "$my_tmpdir" - umask $save_mktempdir_umask - fi + func_options_prep ${1+"$@"} + eval func_parse_options \ + ${func_options_prep_result+"$func_options_prep_result"} + eval func_validate_options \ + ${func_parse_options_result+"$func_parse_options_result"} - # If we're not in dry-run mode, bomb out on failure - test -d "$my_tmpdir" || \ - func_fatal_error "cannot create temporary directory \`$my_tmpdir'" - fi + eval func_run_hooks func_options \ + ${func_validate_options_result+"$func_validate_options_result"} - $ECHO "$my_tmpdir" + # save modified positional parameters for caller + func_options_result=$func_run_hooks_result } -# func_quote_for_eval arg -# Aesthetically quote ARG to be evaled later. -# This function returns two values: FUNC_QUOTE_FOR_EVAL_RESULT -# is double-quoted, suitable for a subsequent eval, whereas -# FUNC_QUOTE_FOR_EVAL_UNQUOTED_RESULT has merely all characters -# which are still active within double quotes backslashified. -func_quote_for_eval () +# func_options_prep [ARG]... +# -------------------------- +# All initialisations required before starting the option parse loop. +# Note that when calling hook functions, we pass through the list of +# positional parameters. If a hook function modifies that list, and +# needs to propogate that back to rest of this script, then the complete +# modified list must be put in 'func_run_hooks_result' before +# returning. +func_hookable func_options_prep +func_options_prep () { - case $1 in - *[\\\`\"\$]*) - func_quote_for_eval_unquoted_result=`$ECHO "$1" | $SED "$sed_quote_subst"` ;; - *) - func_quote_for_eval_unquoted_result="$1" ;; - esac + $debug_cmd - case $func_quote_for_eval_unquoted_result in - # Double-quote args containing shell metacharacters to delay - # word splitting, command substitution and and variable - # expansion for a subsequent eval. - # Many Bourne shells cannot handle close brackets correctly - # in scan sets, so we specify it separately. - *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") - func_quote_for_eval_result="\"$func_quote_for_eval_unquoted_result\"" - ;; - *) - func_quote_for_eval_result="$func_quote_for_eval_unquoted_result" - esac + # Option defaults: + opt_verbose=false + opt_warning_types= + + func_run_hooks func_options_prep ${1+"$@"} + + # save modified positional parameters for caller + func_options_prep_result=$func_run_hooks_result } -# func_quote_for_expand arg -# Aesthetically quote ARG to be evaled later; same as above, -# but do not quote variable references. -func_quote_for_expand () +# func_parse_options [ARG]... +# --------------------------- +# The main option parsing loop. +func_hookable func_parse_options +func_parse_options () { - case $1 in - *[\\\`\"]*) - my_arg=`$ECHO "$1" | $SED \ - -e "$double_quote_subst" -e "$sed_double_backslash"` ;; - *) - my_arg="$1" ;; - esac + $debug_cmd - case $my_arg in - # Double-quote args containing shell metacharacters to delay - # word splitting and command substitution for a subsequent eval. - # Many Bourne shells cannot handle close brackets correctly - # in scan sets, so we specify it separately. - *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") - my_arg="\"$my_arg\"" - ;; - esac + func_parse_options_result= - func_quote_for_expand_result="$my_arg" -} + # this just eases exit handling + while test $# -gt 0; do + # Defer to hook functions for initial option parsing, so they + # get priority in the event of reusing an option name. + func_run_hooks func_parse_options ${1+"$@"} + # Adjust func_parse_options positional parameters to match + eval set dummy "$func_run_hooks_result"; shift -# func_show_eval cmd [fail_exp] -# Unless opt_silent is true, then output CMD. Then, if opt_dryrun is -# not true, evaluate CMD. If the evaluation of CMD fails, and FAIL_EXP -# is given, then evaluate it. -func_show_eval () -{ - my_cmd="$1" - my_fail_exp="${2-:}" + # Break out of the loop if we already parsed every option. + test $# -gt 0 || break - ${opt_silent-false} || { - func_quote_for_expand "$my_cmd" - eval "func_echo $func_quote_for_expand_result" - } + _G_opt=$1 + shift + case $_G_opt in + --debug|-x) debug_cmd='set -x' + func_echo "enabling shell trace mode" + $debug_cmd + ;; + + --no-warnings|--no-warning|--no-warn) + set dummy --warnings none ${1+"$@"} + shift + ;; - if ${opt_dry_run-false}; then :; else - eval "$my_cmd" - my_status=$? - if test "$my_status" -eq 0; then :; else - eval "(exit $my_status); $my_fail_exp" - fi - fi + --warnings|--warning|-W) + test $# = 0 && func_missing_arg $_G_opt && break + case " $warning_categories $1" in + *" $1 "*) + # trailing space prevents matching last $1 above + func_append_uniq opt_warning_types " $1" + ;; + *all) + opt_warning_types=$warning_categories + ;; + *none) + opt_warning_types=none + warning_func=: + ;; + *error) + opt_warning_types=$warning_categories + warning_func=func_fatal_error + ;; + *) + func_fatal_error \ + "unsupported warning category: '$1'" + ;; + esac + shift + ;; + + --verbose|-v) opt_verbose=: ;; + --version) func_version ;; + -\?|-h) func_usage ;; + --help) func_help ;; + + # Separate optargs to long options (plugins may need this): + --*=*) func_split_equals "$_G_opt" + set dummy "$func_split_equals_lhs" \ + "$func_split_equals_rhs" ${1+"$@"} + shift + ;; + + # Separate optargs to short options: + -W*) + func_split_short_opt "$_G_opt" + set dummy "$func_split_short_opt_name" \ + "$func_split_short_opt_arg" ${1+"$@"} + shift + ;; + + # Separate non-argument short options: + -\?*|-h*|-v*|-x*) + func_split_short_opt "$_G_opt" + set dummy "$func_split_short_opt_name" \ + "-$func_split_short_opt_arg" ${1+"$@"} + shift + ;; + + --) break ;; + -*) func_fatal_help "unrecognised option: '$_G_opt'" ;; + *) set dummy "$_G_opt" ${1+"$@"}; shift; break ;; + esac + done + + # save modified positional parameters for caller + func_quote_for_eval ${1+"$@"} + func_parse_options_result=$func_quote_for_eval_result } -# func_show_eval_locale cmd [fail_exp] -# Unless opt_silent is true, then output CMD. Then, if opt_dryrun is -# not true, evaluate CMD. If the evaluation of CMD fails, and FAIL_EXP -# is given, then evaluate it. Use the saved locale for evaluation. -func_show_eval_locale () +# func_validate_options [ARG]... +# ------------------------------ +# Perform any sanity checks on option settings and/or unconsumed +# arguments. +func_hookable func_validate_options +func_validate_options () { - my_cmd="$1" - my_fail_exp="${2-:}" + $debug_cmd - ${opt_silent-false} || { - func_quote_for_expand "$my_cmd" - eval "func_echo $func_quote_for_expand_result" - } + # Display all warnings if -W was not given. + test -n "$opt_warning_types" || opt_warning_types=" $warning_categories" - if ${opt_dry_run-false}; then :; else - eval "$lt_user_locale - $my_cmd" - my_status=$? - eval "$lt_safe_locale" - if test "$my_status" -eq 0; then :; else - eval "(exit $my_status); $my_fail_exp" - fi - fi -} + func_run_hooks func_validate_options ${1+"$@"} -# func_tr_sh -# Turn $1 into a string suitable for a shell variable name. -# Result is stored in $func_tr_sh_result. All characters -# not in the set a-zA-Z0-9_ are replaced with '_'. Further, -# if $1 begins with a digit, a '_' is prepended as well. -func_tr_sh () -{ - case $1 in - [0-9]* | *[!a-zA-Z0-9_]*) - func_tr_sh_result=`$ECHO "$1" | $SED 's/^\([0-9]\)/_\1/; s/[^a-zA-Z0-9_]/_/g'` - ;; - * ) - func_tr_sh_result=$1 - ;; - esac + # Bail if the options were screwed! + $exit_cmd $EXIT_FAILURE + + # save modified positional parameters for caller + func_validate_options_result=$func_run_hooks_result } -# func_version -# Echo version message to standard output and exit. -func_version () -{ - $opt_debug - $SED -n '/(C)/!b go - :more - /\./!{ - N - s/\n# / / - b more - } - :go - /^# '$PROGRAM' (GNU /,/# warranty; / { - s/^# // - s/^# *$// - s/\((C)\)[ 0-9,-]*\( [1-9][0-9]*\)/\1\2/ - p - }' < "$progpath" - exit $? -} +## ----------------- ## +## Helper functions. ## +## ----------------- ## -# func_usage -# Echo short help message to standard output and exit. -func_usage () +# This section contains the helper functions used by the rest of the +# hookable option parser framework in ascii-betical order. + + +# func_fatal_help ARG... +# ---------------------- +# Echo program name prefixed message to standard error, followed by +# a help hint, and exit. +func_fatal_help () { - $opt_debug + $debug_cmd - $SED -n '/^# Usage:/,/^# *.*--help/ { - s/^# // - s/^# *$// - s/\$progname/'$progname'/ - p - }' < "$progpath" - echo - $ECHO "run \`$progname --help | more' for full usage" - exit $? + eval \$ECHO \""Usage: $usage"\" + eval \$ECHO \""$fatal_help"\" + func_error ${1+"$@"} + exit $EXIT_FAILURE } -# func_help [NOEXIT] -# Echo long help message to standard output and exit, -# unless 'noexit' is passed as argument. + +# func_help +# --------- +# Echo long help message to standard output and exit. func_help () { - $opt_debug + $debug_cmd - $SED -n '/^# Usage:/,/# Report bugs to/ { - :print - s/^# // - s/^# *$// - s*\$progname*'$progname'* - s*\$host*'"$host"'* - s*\$SHELL*'"$SHELL"'* - s*\$LTCC*'"$LTCC"'* - s*\$LTCFLAGS*'"$LTCFLAGS"'* - s*\$LD*'"$LD"'* - s/\$with_gnu_ld/'"$with_gnu_ld"'/ - s/\$automake_version/'"`(${AUTOMAKE-automake} --version) 2>/dev/null |$SED 1q`"'/ - s/\$autoconf_version/'"`(${AUTOCONF-autoconf} --version) 2>/dev/null |$SED 1q`"'/ - p - d - } - /^# .* home page:/b print - /^# General help using/b print - ' < "$progpath" - ret=$? - if test -z "$1"; then - exit $ret - fi + func_usage_message + $ECHO "$long_help_message" + exit 0 } -# func_missing_arg argname + +# func_missing_arg ARGNAME +# ------------------------ # Echo program name prefixed message to standard error and set global # exit_cmd. func_missing_arg () { - $opt_debug + $debug_cmd - func_error "missing argument for $1." + func_error "Missing argument for '$1'." exit_cmd=exit } -# func_split_short_opt shortopt +# func_split_equals STRING +# ------------------------ +# Set func_split_equals_lhs and func_split_equals_rhs shell variables after +# splitting STRING at the '=' sign. +test -z "$_G_HAVE_XSI_OPS" \ + && (eval 'x=a/b/c; + test 5aa/bb/cc = "${#x}${x%%/*}${x%/*}${x#*/}${x##*/}"') 2>/dev/null \ + && _G_HAVE_XSI_OPS=yes + +if test yes = "$_G_HAVE_XSI_OPS" +then + # This is an XSI compatible shell, allowing a faster implementation... + eval 'func_split_equals () + { + $debug_cmd + + func_split_equals_lhs=${1%%=*} + func_split_equals_rhs=${1#*=} + test "x$func_split_equals_lhs" = "x$1" \ + && func_split_equals_rhs= + }' +else + # ...otherwise fall back to using expr, which is often a shell builtin. + func_split_equals () + { + $debug_cmd + + func_split_equals_lhs=`expr "x$1" : 'x\([^=]*\)'` + func_split_equals_rhs= + test "x$func_split_equals_lhs" = "x$1" \ + || func_split_equals_rhs=`expr "x$1" : 'x[^=]*=\(.*\)$'` + } +fi #func_split_equals + + +# func_split_short_opt SHORTOPT +# ----------------------------- # Set func_split_short_opt_name and func_split_short_opt_arg shell # variables after splitting SHORTOPT after the 2nd character. -func_split_short_opt () +if test yes = "$_G_HAVE_XSI_OPS" +then + # This is an XSI compatible shell, allowing a faster implementation... + eval 'func_split_short_opt () + { + $debug_cmd + + func_split_short_opt_arg=${1#??} + func_split_short_opt_name=${1%"$func_split_short_opt_arg"} + }' +else + # ...otherwise fall back to using expr, which is often a shell builtin. + func_split_short_opt () + { + $debug_cmd + + func_split_short_opt_name=`expr "x$1" : 'x-\(.\)'` + func_split_short_opt_arg=`expr "x$1" : 'x-.\(.*\)$'` + } +fi #func_split_short_opt + + +# func_usage +# ---------- +# Echo short help message to standard output and exit. +func_usage () { - my_sed_short_opt='1s/^\(..\).*$/\1/;q' - my_sed_short_rest='1s/^..\(.*\)$/\1/;q' + $debug_cmd - func_split_short_opt_name=`$ECHO "$1" | $SED "$my_sed_short_opt"` - func_split_short_opt_arg=`$ECHO "$1" | $SED "$my_sed_short_rest"` -} # func_split_short_opt may be replaced by extended shell implementation + func_usage_message + $ECHO "Run '$progname --help |${PAGER-more}' for full usage" + exit 0 +} -# func_split_long_opt longopt -# Set func_split_long_opt_name and func_split_long_opt_arg shell -# variables after splitting LONGOPT at the `=' sign. -func_split_long_opt () +# func_usage_message +# ------------------ +# Echo short help message to standard output. +func_usage_message () { - my_sed_long_opt='1s/^\(--[^=]*\)=.*/\1/;q' - my_sed_long_arg='1s/^--[^=]*=//' + $debug_cmd - func_split_long_opt_name=`$ECHO "$1" | $SED "$my_sed_long_opt"` - func_split_long_opt_arg=`$ECHO "$1" | $SED "$my_sed_long_arg"` -} # func_split_long_opt may be replaced by extended shell implementation + eval \$ECHO \""Usage: $usage"\" + echo + $SED -n 's|^# || + /^Written by/{ + x;p;x + } + h + /^Written by/q' < "$progpath" + echo + eval \$ECHO \""$usage_message"\" +} -exit_cmd=: +# func_version +# ------------ +# Echo version message to standard output and exit. +func_version () +{ + $debug_cmd + printf '%s\n' "$progname $scriptversion" + $SED -n ' + /(C)/!b go + :more + /\./!{ + N + s|\n# | | + b more + } + :go + /^# Written by /,/# warranty; / { + s|^# || + s|^# *$|| + s|\((C)\)[ 0-9,-]*[ ,-]\([1-9][0-9]* \)|\1 \2| + p + } + /^# Written by / { + s|^# || + p + } + /^warranty; /q' < "$progpath" + exit $? +} -magic="%%%MAGIC variable%%%" -magic_exe="%%%MAGIC EXE variable%%%" +# Local variables: +# mode: shell-script +# sh-indentation: 2 +# eval: (add-hook 'before-save-hook 'time-stamp) +# time-stamp-pattern: "10/scriptversion=%:y-%02m-%02d.%02H; # UTC" +# time-stamp-time-zone: "UTC" +# End: -# Global variables. -nonopt= -preserve_args= -lo2o="s/\\.lo\$/.${objext}/" -o2lo="s/\\.${objext}\$/.lo/" -extracted_archives= -extracted_serial=0 +# Set a version string. +scriptversion='(GNU libtool) 2.4.6' -# If this variable is set in any of the actions, the command in it -# will be execed at the end. This prevents here-documents from being -# left over by shells. -exec_cmd= -# func_append var value -# Append VALUE to the end of shell variable VAR. -func_append () +# func_echo ARG... +# ---------------- +# Libtool also displays the current mode in messages, so override +# funclib.sh func_echo with this custom definition. +func_echo () { - eval "${1}=\$${1}\${2}" -} # func_append may be replaced by extended shell implementation + $debug_cmd -# func_append_quoted var value -# Quote VALUE and append to the end of shell variable VAR, separated -# by a space. -func_append_quoted () -{ - func_quote_for_eval "${2}" - eval "${1}=\$${1}\\ \$func_quote_for_eval_result" -} # func_append_quoted may be replaced by extended shell implementation + _G_message=$* + + func_echo_IFS=$IFS + IFS=$nl + for _G_line in $_G_message; do + IFS=$func_echo_IFS + $ECHO "$progname${opt_mode+: $opt_mode}: $_G_line" + done + IFS=$func_echo_IFS +} -# func_arith arithmetic-term... -func_arith () +# func_warning ARG... +# ------------------- +# Libtool warnings are not categorized, so override funclib.sh +# func_warning with this simpler definition. +func_warning () { - func_arith_result=`expr "${@}"` -} # func_arith may be replaced by extended shell implementation + $debug_cmd + $warning_func ${1+"$@"} +} -# func_len string -# STRING may not start with a hyphen. -func_len () -{ - func_len_result=`expr "${1}" : ".*" 2>/dev/null || echo $max_cmd_len` -} # func_len may be replaced by extended shell implementation +## ---------------- ## +## Options parsing. ## +## ---------------- ## + +# Hook in the functions to make sure our own options are parsed during +# the option parsing loop. + +usage='$progpath [OPTION]... [MODE-ARG]...' + +# Short help message in response to '-h'. +usage_message="Options: + --config show all configuration variables + --debug enable verbose shell tracing + -n, --dry-run display commands without modifying any files + --features display basic configuration information and exit + --mode=MODE use operation mode MODE + --no-warnings equivalent to '-Wnone' + --preserve-dup-deps don't remove duplicate dependency libraries + --quiet, --silent don't print informational messages + --tag=TAG use configuration variables from tag TAG + -v, --verbose print more informational messages than default + --version print version information + -W, --warnings=CATEGORY report the warnings falling in CATEGORY [all] + -h, --help, --help-all print short, long, or detailed help message +" -# func_lo2o object -func_lo2o () +# Additional text appended to 'usage_message' in response to '--help'. +func_help () { - func_lo2o_result=`$ECHO "${1}" | $SED "$lo2o"` -} # func_lo2o may be replaced by extended shell implementation + $debug_cmd + func_usage_message + $ECHO "$long_help_message -# func_xform libobj-or-source -func_xform () -{ - func_xform_result=`$ECHO "${1}" | $SED 's/\.[^.]*$/.lo/'` -} # func_xform may be replaced by extended shell implementation +MODE must be one of the following: + + clean remove files from the build directory + compile compile a source file into a libtool object + execute automatically set library path, then run a program + finish complete the installation of libtool libraries + install install libraries or executables + link create a library or an executable + uninstall remove libraries from an installed directory + +MODE-ARGS vary depending on the MODE. When passed as first option, +'--mode=MODE' may be abbreviated as 'MODE' or a unique abbreviation of that. +Try '$progname --help --mode=MODE' for a more detailed description of MODE. + +When reporting a bug, please describe a test case to reproduce it and +include the following information: + + host-triplet: $host + shell: $SHELL + compiler: $LTCC + compiler flags: $LTCFLAGS + linker: $LD (gnu? $with_gnu_ld) + version: $progname (GNU libtool) 2.4.6 + automake: `($AUTOMAKE --version) 2>/dev/null |$SED 1q` + autoconf: `($AUTOCONF --version) 2>/dev/null |$SED 1q` + +Report bugs to . +GNU libtool home page: . +General help using GNU software: ." + exit 0 +} + + +# func_lo2o OBJECT-NAME +# --------------------- +# Transform OBJECT-NAME from a '.lo' suffix to the platform specific +# object suffix. + +lo2o=s/\\.lo\$/.$objext/ +o2lo=s/\\.$objext\$/.lo/ + +if test yes = "$_G_HAVE_XSI_OPS"; then + eval 'func_lo2o () + { + case $1 in + *.lo) func_lo2o_result=${1%.lo}.$objext ;; + * ) func_lo2o_result=$1 ;; + esac + }' + + # func_xform LIBOBJ-OR-SOURCE + # --------------------------- + # Transform LIBOBJ-OR-SOURCE from a '.o' or '.c' (or otherwise) + # suffix to a '.lo' libtool-object suffix. + eval 'func_xform () + { + func_xform_result=${1%.*}.lo + }' +else + # ...otherwise fall back to using sed. + func_lo2o () + { + func_lo2o_result=`$ECHO "$1" | $SED "$lo2o"` + } + + func_xform () + { + func_xform_result=`$ECHO "$1" | $SED 's|\.[^.]*$|.lo|'` + } +fi -# func_fatal_configuration arg... +# func_fatal_configuration ARG... +# ------------------------------- # Echo program name prefixed message to standard error, followed by # a configuration failure hint, and exit. func_fatal_configuration () { - func_error ${1+"$@"} - func_error "See the $PACKAGE documentation for more information." - func_fatal_error "Fatal configuration error." + func__fatal_error ${1+"$@"} \ + "See the $PACKAGE documentation for more information." \ + "Fatal configuration error." } # func_config +# ----------- # Display the configuration for all the tags in this script. func_config () { @@ -915,17 +2149,19 @@ exit $? } + # func_features +# ------------- # Display the features supported by this script. func_features () { echo "host: $host" - if test "$build_libtool_libs" = yes; then + if test yes = "$build_libtool_libs"; then echo "enable shared libraries" else echo "disable shared libraries" fi - if test "$build_old_libs" = yes; then + if test yes = "$build_old_libs"; then echo "enable static libraries" else echo "disable static libraries" @@ -934,289 +2170,297 @@ exit $? } -# func_enable_tag tagname + +# func_enable_tag TAGNAME +# ----------------------- # Verify that TAGNAME is valid, and either flag an error and exit, or # enable the TAGNAME tag. We also add TAGNAME to the global $taglist # variable here. func_enable_tag () { - # Global variable: - tagname="$1" + # Global variable: + tagname=$1 - re_begincf="^# ### BEGIN LIBTOOL TAG CONFIG: $tagname\$" - re_endcf="^# ### END LIBTOOL TAG CONFIG: $tagname\$" - sed_extractcf="/$re_begincf/,/$re_endcf/p" - - # Validate tagname. - case $tagname in - *[!-_A-Za-z0-9,/]*) - func_fatal_error "invalid tag name: $tagname" - ;; - esac + re_begincf="^# ### BEGIN LIBTOOL TAG CONFIG: $tagname\$" + re_endcf="^# ### END LIBTOOL TAG CONFIG: $tagname\$" + sed_extractcf=/$re_begincf/,/$re_endcf/p + + # Validate tagname. + case $tagname in + *[!-_A-Za-z0-9,/]*) + func_fatal_error "invalid tag name: $tagname" + ;; + esac - # Don't test for the "default" C tag, as we know it's - # there but not specially marked. - case $tagname in - CC) ;; + # Don't test for the "default" C tag, as we know it's + # there but not specially marked. + case $tagname in + CC) ;; *) - if $GREP "$re_begincf" "$progpath" >/dev/null 2>&1; then - taglist="$taglist $tagname" + if $GREP "$re_begincf" "$progpath" >/dev/null 2>&1; then + taglist="$taglist $tagname" - # Evaluate the configuration. Be careful to quote the path - # and the sed script, to avoid splitting on whitespace, but - # also don't use non-portable quotes within backquotes within - # quotes we have to do it in 2 steps: - extractedcf=`$SED -n -e "$sed_extractcf" < "$progpath"` - eval "$extractedcf" - else - func_error "ignoring unknown tag $tagname" - fi - ;; - esac + # Evaluate the configuration. Be careful to quote the path + # and the sed script, to avoid splitting on whitespace, but + # also don't use non-portable quotes within backquotes within + # quotes we have to do it in 2 steps: + extractedcf=`$SED -n -e "$sed_extractcf" < "$progpath"` + eval "$extractedcf" + else + func_error "ignoring unknown tag $tagname" + fi + ;; + esac } + # func_check_version_match +# ------------------------ # Ensure that we are using m4 macros, and libtool script from the same # release of libtool. func_check_version_match () { - if test "$package_revision" != "$macro_revision"; then - if test "$VERSION" != "$macro_version"; then - if test -z "$macro_version"; then - cat >&2 <<_LT_EOF + if test "$package_revision" != "$macro_revision"; then + if test "$VERSION" != "$macro_version"; then + if test -z "$macro_version"; then + cat >&2 <<_LT_EOF $progname: Version mismatch error. This is $PACKAGE $VERSION, but the $progname: definition of this LT_INIT comes from an older release. $progname: You should recreate aclocal.m4 with macros from $PACKAGE $VERSION $progname: and run autoconf again. _LT_EOF - else - cat >&2 <<_LT_EOF + else + cat >&2 <<_LT_EOF $progname: Version mismatch error. This is $PACKAGE $VERSION, but the $progname: definition of this LT_INIT comes from $PACKAGE $macro_version. $progname: You should recreate aclocal.m4 with macros from $PACKAGE $VERSION $progname: and run autoconf again. _LT_EOF - fi - else - cat >&2 <<_LT_EOF + fi + else + cat >&2 <<_LT_EOF $progname: Version mismatch error. This is $PACKAGE $VERSION, revision $package_revision, $progname: but the definition of this LT_INIT comes from revision $macro_revision. $progname: You should recreate aclocal.m4 with macros from revision $package_revision $progname: of $PACKAGE $VERSION and run autoconf again. _LT_EOF - fi + fi - exit $EXIT_MISMATCH - fi + exit $EXIT_MISMATCH + fi } -# Shorthand for --mode=foo, only valid as the first argument -case $1 in -clean|clea|cle|cl) - shift; set dummy --mode clean ${1+"$@"}; shift - ;; -compile|compil|compi|comp|com|co|c) - shift; set dummy --mode compile ${1+"$@"}; shift - ;; -execute|execut|execu|exec|exe|ex|e) - shift; set dummy --mode execute ${1+"$@"}; shift - ;; -finish|finis|fini|fin|fi|f) - shift; set dummy --mode finish ${1+"$@"}; shift - ;; -install|instal|insta|inst|ins|in|i) - shift; set dummy --mode install ${1+"$@"}; shift - ;; -link|lin|li|l) - shift; set dummy --mode link ${1+"$@"}; shift - ;; -uninstall|uninstal|uninsta|uninst|unins|unin|uni|un|u) - shift; set dummy --mode uninstall ${1+"$@"}; shift - ;; -esac +# libtool_options_prep [ARG]... +# ----------------------------- +# Preparation for options parsed by libtool. +libtool_options_prep () +{ + $debug_mode + # Option defaults: + opt_config=false + opt_dlopen= + opt_dry_run=false + opt_help=false + opt_mode= + opt_preserve_dup_deps=false + opt_quiet=false + nonopt= + preserve_args= -# Option defaults: -opt_debug=: -opt_dry_run=false -opt_config=false -opt_preserve_dup_deps=false -opt_features=false -opt_finish=false -opt_help=false -opt_help_all=false -opt_silent=: -opt_warning=: -opt_verbose=: -opt_silent=false -opt_verbose=false + # Shorthand for --mode=foo, only valid as the first argument + case $1 in + clean|clea|cle|cl) + shift; set dummy --mode clean ${1+"$@"}; shift + ;; + compile|compil|compi|comp|com|co|c) + shift; set dummy --mode compile ${1+"$@"}; shift + ;; + execute|execut|execu|exec|exe|ex|e) + shift; set dummy --mode execute ${1+"$@"}; shift + ;; + finish|finis|fini|fin|fi|f) + shift; set dummy --mode finish ${1+"$@"}; shift + ;; + install|instal|insta|inst|ins|in|i) + shift; set dummy --mode install ${1+"$@"}; shift + ;; + link|lin|li|l) + shift; set dummy --mode link ${1+"$@"}; shift + ;; + uninstall|uninstal|uninsta|uninst|unins|unin|uni|un|u) + shift; set dummy --mode uninstall ${1+"$@"}; shift + ;; + esac + # Pass back the list of options. + func_quote_for_eval ${1+"$@"} + libtool_options_prep_result=$func_quote_for_eval_result +} +func_add_hook func_options_prep libtool_options_prep -# Parse options once, thoroughly. This comes as soon as possible in the -# script to make things like `--version' happen as quickly as we can. -{ - # this just eases exit handling - while test $# -gt 0; do - opt="$1" - shift - case $opt in - --debug|-x) opt_debug='set -x' - func_echo "enabling shell trace mode" - $opt_debug - ;; - --dry-run|--dryrun|-n) - opt_dry_run=: - ;; - --config) - opt_config=: -func_config - ;; - --dlopen|-dlopen) - optarg="$1" - opt_dlopen="${opt_dlopen+$opt_dlopen -}$optarg" - shift - ;; - --preserve-dup-deps) - opt_preserve_dup_deps=: - ;; - --features) - opt_features=: -func_features - ;; - --finish) - opt_finish=: -set dummy --mode finish ${1+"$@"}; shift - ;; - --help) - opt_help=: - ;; - --help-all) - opt_help_all=: -opt_help=': help-all' - ;; - --mode) - test $# = 0 && func_missing_arg $opt && break - optarg="$1" - opt_mode="$optarg" -case $optarg in - # Valid mode arguments: - clean|compile|execute|finish|install|link|relink|uninstall) ;; - - # Catch anything else as an error - *) func_error "invalid argument for $opt" - exit_cmd=exit - break - ;; -esac - shift - ;; - --no-silent|--no-quiet) - opt_silent=false -func_append preserve_args " $opt" - ;; - --no-warning|--no-warn) - opt_warning=false -func_append preserve_args " $opt" - ;; - --no-verbose) - opt_verbose=false -func_append preserve_args " $opt" - ;; - --silent|--quiet) - opt_silent=: -func_append preserve_args " $opt" - opt_verbose=false - ;; - --verbose|-v) - opt_verbose=: -func_append preserve_args " $opt" -opt_silent=false - ;; - --tag) - test $# = 0 && func_missing_arg $opt && break - optarg="$1" - opt_tag="$optarg" -func_append preserve_args " $opt $optarg" -func_enable_tag "$optarg" - shift - ;; - - -\?|-h) func_usage ;; - --help) func_help ;; - --version) func_version ;; - - # Separate optargs to long options: - --*=*) - func_split_long_opt "$opt" - set dummy "$func_split_long_opt_name" "$func_split_long_opt_arg" ${1+"$@"} - shift - ;; - - # Separate non-argument short options: - -\?*|-h*|-n*|-v*) - func_split_short_opt "$opt" - set dummy "$func_split_short_opt_name" "-$func_split_short_opt_arg" ${1+"$@"} - shift - ;; - - --) break ;; - -*) func_fatal_help "unrecognized option \`$opt'" ;; - *) set dummy "$opt" ${1+"$@"}; shift; break ;; - esac - done - # Validate options: +# libtool_parse_options [ARG]... +# --------------------------------- +# Provide handling for libtool specific options. +libtool_parse_options () +{ + $debug_cmd - # save first non-option argument - if test "$#" -gt 0; then - nonopt="$opt" - shift - fi + # Perform our own loop to consume as many options as possible in + # each iteration. + while test $# -gt 0; do + _G_opt=$1 + shift + case $_G_opt in + --dry-run|--dryrun|-n) + opt_dry_run=: + ;; + + --config) func_config ;; + + --dlopen|-dlopen) + opt_dlopen="${opt_dlopen+$opt_dlopen +}$1" + shift + ;; + + --preserve-dup-deps) + opt_preserve_dup_deps=: ;; + + --features) func_features ;; + + --finish) set dummy --mode finish ${1+"$@"}; shift ;; + + --help) opt_help=: ;; + + --help-all) opt_help=': help-all' ;; + + --mode) test $# = 0 && func_missing_arg $_G_opt && break + opt_mode=$1 + case $1 in + # Valid mode arguments: + clean|compile|execute|finish|install|link|relink|uninstall) ;; + + # Catch anything else as an error + *) func_error "invalid argument for $_G_opt" + exit_cmd=exit + break + ;; + esac + shift + ;; + + --no-silent|--no-quiet) + opt_quiet=false + func_append preserve_args " $_G_opt" + ;; + + --no-warnings|--no-warning|--no-warn) + opt_warning=false + func_append preserve_args " $_G_opt" + ;; + + --no-verbose) + opt_verbose=false + func_append preserve_args " $_G_opt" + ;; + + --silent|--quiet) + opt_quiet=: + opt_verbose=false + func_append preserve_args " $_G_opt" + ;; + + --tag) test $# = 0 && func_missing_arg $_G_opt && break + opt_tag=$1 + func_append preserve_args " $_G_opt $1" + func_enable_tag "$1" + shift + ;; + + --verbose|-v) opt_quiet=false + opt_verbose=: + func_append preserve_args " $_G_opt" + ;; - # preserve --debug - test "$opt_debug" = : || func_append preserve_args " --debug" + # An option not handled by this hook function: + *) set dummy "$_G_opt" ${1+"$@"}; shift; break ;; + esac + done - case $host in - *cygwin* | *mingw* | *pw32* | *cegcc*) - # don't eliminate duplications in $postdeps and $predeps - opt_duplicate_compiler_generated_deps=: - ;; - *) - opt_duplicate_compiler_generated_deps=$opt_preserve_dup_deps - ;; - esac - $opt_help || { - # Sanity checks first: - func_check_version_match + # save modified positional parameters for caller + func_quote_for_eval ${1+"$@"} + libtool_parse_options_result=$func_quote_for_eval_result +} +func_add_hook func_parse_options libtool_parse_options - if test "$build_libtool_libs" != yes && test "$build_old_libs" != yes; then - func_fatal_configuration "not configured to build any kind of library" - fi - # Darwin sucks - eval std_shrext=\"$shrext_cmds\" - # Only execute mode is allowed to have -dlopen flags. - if test -n "$opt_dlopen" && test "$opt_mode" != execute; then - func_error "unrecognized option \`-dlopen'" - $ECHO "$help" 1>&2 - exit $EXIT_FAILURE +# libtool_validate_options [ARG]... +# --------------------------------- +# Perform any sanity checks on option settings and/or unconsumed +# arguments. +libtool_validate_options () +{ + # save first non-option argument + if test 0 -lt $#; then + nonopt=$1 + shift fi - # Change the help message to a mode-specific one. - generic_help="$help" - help="Try \`$progname --help --mode=$opt_mode' for more information." - } + # preserve --debug + test : = "$debug_cmd" || func_append preserve_args " --debug" + + case $host in + # Solaris2 added to fix http://debbugs.gnu.org/cgi/bugreport.cgi?bug=16452 + # see also: http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59788 + *cygwin* | *mingw* | *pw32* | *cegcc* | *solaris2* | *os2*) + # don't eliminate duplications in $postdeps and $predeps + opt_duplicate_compiler_generated_deps=: + ;; + *) + opt_duplicate_compiler_generated_deps=$opt_preserve_dup_deps + ;; + esac + $opt_help || { + # Sanity checks first: + func_check_version_match + + test yes != "$build_libtool_libs" \ + && test yes != "$build_old_libs" \ + && func_fatal_configuration "not configured to build any kind of library" + + # Darwin sucks + eval std_shrext=\"$shrext_cmds\" + + # Only execute mode is allowed to have -dlopen flags. + if test -n "$opt_dlopen" && test execute != "$opt_mode"; then + func_error "unrecognized option '-dlopen'" + $ECHO "$help" 1>&2 + exit $EXIT_FAILURE + fi + + # Change the help message to a mode-specific one. + generic_help=$help + help="Try '$progname --help --mode=$opt_mode' for more information." + } - # Bail if the options were screwed - $exit_cmd $EXIT_FAILURE + # Pass back the unparsed argument list + func_quote_for_eval ${1+"$@"} + libtool_validate_options_result=$func_quote_for_eval_result } +func_add_hook func_validate_options libtool_validate_options + +# Process options as early as possible so that --help and --version +# can return quickly. +func_options ${1+"$@"} +eval set dummy "$func_options_result"; shift @@ -1224,24 +2468,52 @@ ## Main. ## ## ----------- ## +magic='%%%MAGIC variable%%%' +magic_exe='%%%MAGIC EXE variable%%%' + +# Global variables. +extracted_archives= +extracted_serial=0 + +# If this variable is set in any of the actions, the command in it +# will be execed at the end. This prevents here-documents from being +# left over by shells. +exec_cmd= + + +# A function that is used when there is no print builtin or printf. +func_fallback_echo () +{ + eval 'cat <<_LTECHO_EOF +$1 +_LTECHO_EOF' +} + +# func_generated_by_libtool +# True iff stdin has been generated by Libtool. This function is only +# a basic sanity check; it will hardly flush out determined imposters. +func_generated_by_libtool_p () +{ + $GREP "^# Generated by .*$PACKAGE" > /dev/null 2>&1 +} + # func_lalib_p file -# True iff FILE is a libtool `.la' library or `.lo' object file. +# True iff FILE is a libtool '.la' library or '.lo' object file. # This function is only a basic sanity check; it will hardly flush out # determined imposters. func_lalib_p () { test -f "$1" && - $SED -e 4q "$1" 2>/dev/null \ - | $GREP "^# Generated by .*$PACKAGE" > /dev/null 2>&1 + $SED -e 4q "$1" 2>/dev/null | func_generated_by_libtool_p } # func_lalib_unsafe_p file -# True iff FILE is a libtool `.la' library or `.lo' object file. +# True iff FILE is a libtool '.la' library or '.lo' object file. # This function implements the same check as func_lalib_p without # resorting to external programs. To this end, it redirects stdin and # closes it afterwards, without saving the original file descriptor. # As a safety measure, use it only where a negative result would be -# fatal anyway. Works if `file' does not exist. +# fatal anyway. Works if 'file' does not exist. func_lalib_unsafe_p () { lalib_p=no @@ -1249,13 +2521,13 @@ for lalib_p_l in 1 2 3 4 do read lalib_p_line - case "$lalib_p_line" in + case $lalib_p_line in \#\ Generated\ by\ *$PACKAGE* ) lalib_p=yes; break;; esac done exec 0<&5 5<&- fi - test "$lalib_p" = yes + test yes = "$lalib_p" } # func_ltwrapper_script_p file @@ -1264,7 +2536,8 @@ # determined imposters. func_ltwrapper_script_p () { - func_lalib_p "$1" + test -f "$1" && + $lt_truncate_bin < "$1" 2>/dev/null | func_generated_by_libtool_p } # func_ltwrapper_executable_p file @@ -1289,7 +2562,7 @@ { func_dirname_and_basename "$1" "" "." func_stripname '' '.exe' "$func_basename_result" - func_ltwrapper_scriptname_result="$func_dirname_result/$objdir/${func_stripname_result}_ltshwrapper" + func_ltwrapper_scriptname_result=$func_dirname_result/$objdir/${func_stripname_result}_ltshwrapper } # func_ltwrapper_p file @@ -1308,11 +2581,13 @@ # FAIL_CMD may read-access the current command in variable CMD! func_execute_cmds () { - $opt_debug + $debug_cmd + save_ifs=$IFS; IFS='~' for cmd in $1; do - IFS=$save_ifs + IFS=$sp$nl eval cmd=\"$cmd\" + IFS=$save_ifs func_show_eval "$cmd" "${2-:}" done IFS=$save_ifs @@ -1324,10 +2599,11 @@ # Note that it is not necessary on cygwin/mingw to append a dot to # FILE even if both FILE and FILE.exe exist: automatic-append-.exe # behavior happens only for exec(3), not for open(2)! Also, sourcing -# `FILE.' does not work on cygwin managed mounts. +# 'FILE.' does not work on cygwin managed mounts. func_source () { - $opt_debug + $debug_cmd + case $1 in */* | *\\*) . "$1" ;; *) . "./$1" ;; @@ -1354,10 +2630,10 @@ # store the result into func_replace_sysroot_result. func_replace_sysroot () { - case "$lt_sysroot:$1" in + case $lt_sysroot:$1 in ?*:"$lt_sysroot"*) func_stripname "$lt_sysroot" '' "$1" - func_replace_sysroot_result="=$func_stripname_result" + func_replace_sysroot_result='='$func_stripname_result ;; *) # Including no sysroot. @@ -1374,7 +2650,8 @@ # arg is usually of the form 'gcc ...' func_infer_tag () { - $opt_debug + $debug_cmd + if test -n "$available_tags" && test -z "$tagname"; then CC_quoted= for arg in $CC; do @@ -1393,7 +2670,7 @@ for z in $available_tags; do if $GREP "^# ### BEGIN LIBTOOL TAG CONFIG: $z$" < "$progpath" > /dev/null; then # Evaluate the configuration. - eval "`${SED} -n -e '/^# ### BEGIN LIBTOOL TAG CONFIG: '$z'$/,/^# ### END LIBTOOL TAG CONFIG: '$z'$/p' < $progpath`" + eval "`$SED -n -e '/^# ### BEGIN LIBTOOL TAG CONFIG: '$z'$/,/^# ### END LIBTOOL TAG CONFIG: '$z'$/p' < $progpath`" CC_quoted= for arg in $CC; do # Double-quote args containing other shell metacharacters. @@ -1418,7 +2695,7 @@ # line option must be used. if test -z "$tagname"; then func_echo "unable to infer tagged configuration" - func_fatal_error "specify a tag with \`--tag'" + func_fatal_error "specify a tag with '--tag'" # else # func_verbose "using $tagname tagged configuration" fi @@ -1434,15 +2711,15 @@ # but don't create it if we're doing a dry run. func_write_libtool_object () { - write_libobj=${1} - if test "$build_libtool_libs" = yes; then - write_lobj=\'${2}\' + write_libobj=$1 + if test yes = "$build_libtool_libs"; then + write_lobj=\'$2\' else write_lobj=none fi - if test "$build_old_libs" = yes; then - write_oldobj=\'${3}\' + if test yes = "$build_old_libs"; then + write_oldobj=\'$3\' else write_oldobj=none fi @@ -1450,7 +2727,7 @@ $opt_dry_run || { cat >${write_libobj}T </dev/null` - if test "$?" -eq 0 && test -n "${func_convert_core_file_wine_to_w32_tmp}"; then + if test "$?" -eq 0 && test -n "$func_convert_core_file_wine_to_w32_tmp"; then func_convert_core_file_wine_to_w32_result=`$ECHO "$func_convert_core_file_wine_to_w32_tmp" | - $SED -e "$lt_sed_naive_backslashify"` + $SED -e "$sed_naive_backslashify"` else func_convert_core_file_wine_to_w32_result= fi @@ -1514,18 +2792,19 @@ # are convertible, then the result may be empty. func_convert_core_path_wine_to_w32 () { - $opt_debug + $debug_cmd + # unfortunately, winepath doesn't convert paths, only file names - func_convert_core_path_wine_to_w32_result="" + func_convert_core_path_wine_to_w32_result= if test -n "$1"; then oldIFS=$IFS IFS=: for func_convert_core_path_wine_to_w32_f in $1; do IFS=$oldIFS func_convert_core_file_wine_to_w32 "$func_convert_core_path_wine_to_w32_f" - if test -n "$func_convert_core_file_wine_to_w32_result" ; then + if test -n "$func_convert_core_file_wine_to_w32_result"; then if test -z "$func_convert_core_path_wine_to_w32_result"; then - func_convert_core_path_wine_to_w32_result="$func_convert_core_file_wine_to_w32_result" + func_convert_core_path_wine_to_w32_result=$func_convert_core_file_wine_to_w32_result else func_append func_convert_core_path_wine_to_w32_result ";$func_convert_core_file_wine_to_w32_result" fi @@ -1554,7 +2833,8 @@ # environment variable; do not put it in $PATH. func_cygpath () { - $opt_debug + $debug_cmd + if test -n "$LT_CYGPATH" && test -f "$LT_CYGPATH"; then func_cygpath_result=`$LT_CYGPATH "$@" 2>/dev/null` if test "$?" -ne 0; then @@ -1563,7 +2843,7 @@ fi else func_cygpath_result= - func_error "LT_CYGPATH is empty or specifies non-existent file: \`$LT_CYGPATH'" + func_error "LT_CYGPATH is empty or specifies non-existent file: '$LT_CYGPATH'" fi } #end: func_cygpath @@ -1574,10 +2854,11 @@ # result in func_convert_core_msys_to_w32_result. func_convert_core_msys_to_w32 () { - $opt_debug + $debug_cmd + # awkward: cmd appends spaces to result func_convert_core_msys_to_w32_result=`( cmd //c echo "$1" ) 2>/dev/null | - $SED -e 's/[ ]*$//' -e "$lt_sed_naive_backslashify"` + $SED -e 's/[ ]*$//' -e "$sed_naive_backslashify"` } #end: func_convert_core_msys_to_w32 @@ -1588,13 +2869,14 @@ # func_to_host_file_result to ARG1). func_convert_file_check () { - $opt_debug - if test -z "$2" && test -n "$1" ; then + $debug_cmd + + if test -z "$2" && test -n "$1"; then func_error "Could not determine host file name corresponding to" - func_error " \`$1'" + func_error " '$1'" func_error "Continuing, but uninstalled executables may not work." # Fallback: - func_to_host_file_result="$1" + func_to_host_file_result=$1 fi } # end func_convert_file_check @@ -1606,10 +2888,11 @@ # func_to_host_file_result to a simplistic fallback value (see below). func_convert_path_check () { - $opt_debug + $debug_cmd + if test -z "$4" && test -n "$3"; then func_error "Could not determine the host path corresponding to" - func_error " \`$3'" + func_error " '$3'" func_error "Continuing, but uninstalled executables may not work." # Fallback. This is a deliberately simplistic "conversion" and # should not be "improved". See libtool.info. @@ -1618,7 +2901,7 @@ func_to_host_path_result=`echo "$3" | $SED -e "$lt_replace_pathsep_chars"` else - func_to_host_path_result="$3" + func_to_host_path_result=$3 fi fi } @@ -1630,9 +2913,10 @@ # and appending REPL if ORIG matches BACKPAT. func_convert_path_front_back_pathsep () { - $opt_debug + $debug_cmd + case $4 in - $1 ) func_to_host_path_result="$3$func_to_host_path_result" + $1 ) func_to_host_path_result=$3$func_to_host_path_result ;; esac case $4 in @@ -1646,7 +2930,7 @@ ################################################## # $build to $host FILE NAME CONVERSION FUNCTIONS # ################################################## -# invoked via `$to_host_file_cmd ARG' +# invoked via '$to_host_file_cmd ARG' # # In each case, ARG is the path to be converted from $build to $host format. # Result will be available in $func_to_host_file_result. @@ -1657,7 +2941,8 @@ # in func_to_host_file_result. func_to_host_file () { - $opt_debug + $debug_cmd + $to_host_file_cmd "$1" } # end func_to_host_file @@ -1669,7 +2954,8 @@ # in (the comma separated) LAZY, no conversion takes place. func_to_tool_file () { - $opt_debug + $debug_cmd + case ,$2, in *,"$to_tool_file_cmd",*) func_to_tool_file_result=$1 @@ -1687,7 +2973,7 @@ # Copy ARG to func_to_host_file_result. func_convert_file_noop () { - func_to_host_file_result="$1" + func_to_host_file_result=$1 } # end func_convert_file_noop @@ -1698,11 +2984,12 @@ # func_to_host_file_result. func_convert_file_msys_to_w32 () { - $opt_debug - func_to_host_file_result="$1" + $debug_cmd + + func_to_host_file_result=$1 if test -n "$1"; then func_convert_core_msys_to_w32 "$1" - func_to_host_file_result="$func_convert_core_msys_to_w32_result" + func_to_host_file_result=$func_convert_core_msys_to_w32_result fi func_convert_file_check "$1" "$func_to_host_file_result" } @@ -1714,8 +3001,9 @@ # func_to_host_file_result. func_convert_file_cygwin_to_w32 () { - $opt_debug - func_to_host_file_result="$1" + $debug_cmd + + func_to_host_file_result=$1 if test -n "$1"; then # because $build is cygwin, we call "the" cygpath in $PATH; no need to use # LT_CYGPATH in this case. @@ -1731,11 +3019,12 @@ # and a working winepath. Returns result in func_to_host_file_result. func_convert_file_nix_to_w32 () { - $opt_debug - func_to_host_file_result="$1" + $debug_cmd + + func_to_host_file_result=$1 if test -n "$1"; then func_convert_core_file_wine_to_w32 "$1" - func_to_host_file_result="$func_convert_core_file_wine_to_w32_result" + func_to_host_file_result=$func_convert_core_file_wine_to_w32_result fi func_convert_file_check "$1" "$func_to_host_file_result" } @@ -1747,12 +3036,13 @@ # Returns result in func_to_host_file_result. func_convert_file_msys_to_cygwin () { - $opt_debug - func_to_host_file_result="$1" + $debug_cmd + + func_to_host_file_result=$1 if test -n "$1"; then func_convert_core_msys_to_w32 "$1" func_cygpath -u "$func_convert_core_msys_to_w32_result" - func_to_host_file_result="$func_cygpath_result" + func_to_host_file_result=$func_cygpath_result fi func_convert_file_check "$1" "$func_to_host_file_result" } @@ -1765,13 +3055,14 @@ # in func_to_host_file_result. func_convert_file_nix_to_cygwin () { - $opt_debug - func_to_host_file_result="$1" + $debug_cmd + + func_to_host_file_result=$1 if test -n "$1"; then # convert from *nix to w32, then use cygpath to convert from w32 to cygwin. func_convert_core_file_wine_to_w32 "$1" func_cygpath -u "$func_convert_core_file_wine_to_w32_result" - func_to_host_file_result="$func_cygpath_result" + func_to_host_file_result=$func_cygpath_result fi func_convert_file_check "$1" "$func_to_host_file_result" } @@ -1781,7 +3072,7 @@ ############################################# # $build to $host PATH CONVERSION FUNCTIONS # ############################################# -# invoked via `$to_host_path_cmd ARG' +# invoked via '$to_host_path_cmd ARG' # # In each case, ARG is the path to be converted from $build to $host format. # The result will be available in $func_to_host_path_result. @@ -1805,10 +3096,11 @@ to_host_path_cmd= func_init_to_host_path_cmd () { - $opt_debug + $debug_cmd + if test -z "$to_host_path_cmd"; then func_stripname 'func_convert_file_' '' "$to_host_file_cmd" - to_host_path_cmd="func_convert_path_${func_stripname_result}" + to_host_path_cmd=func_convert_path_$func_stripname_result fi } @@ -1818,7 +3110,8 @@ # in func_to_host_path_result. func_to_host_path () { - $opt_debug + $debug_cmd + func_init_to_host_path_cmd $to_host_path_cmd "$1" } @@ -1829,7 +3122,7 @@ # Copy ARG to func_to_host_path_result. func_convert_path_noop () { - func_to_host_path_result="$1" + func_to_host_path_result=$1 } # end func_convert_path_noop @@ -1840,8 +3133,9 @@ # func_to_host_path_result. func_convert_path_msys_to_w32 () { - $opt_debug - func_to_host_path_result="$1" + $debug_cmd + + func_to_host_path_result=$1 if test -n "$1"; then # Remove leading and trailing path separator characters from ARG. MSYS # behavior is inconsistent here; cygpath turns them into '.;' and ';.'; @@ -1849,7 +3143,7 @@ func_stripname : : "$1" func_to_host_path_tmp1=$func_stripname_result func_convert_core_msys_to_w32 "$func_to_host_path_tmp1" - func_to_host_path_result="$func_convert_core_msys_to_w32_result" + func_to_host_path_result=$func_convert_core_msys_to_w32_result func_convert_path_check : ";" \ "$func_to_host_path_tmp1" "$func_to_host_path_result" func_convert_path_front_back_pathsep ":*" "*:" ";" "$1" @@ -1863,8 +3157,9 @@ # func_to_host_file_result. func_convert_path_cygwin_to_w32 () { - $opt_debug - func_to_host_path_result="$1" + $debug_cmd + + func_to_host_path_result=$1 if test -n "$1"; then # See func_convert_path_msys_to_w32: func_stripname : : "$1" @@ -1883,14 +3178,15 @@ # a working winepath. Returns result in func_to_host_file_result. func_convert_path_nix_to_w32 () { - $opt_debug - func_to_host_path_result="$1" + $debug_cmd + + func_to_host_path_result=$1 if test -n "$1"; then # See func_convert_path_msys_to_w32: func_stripname : : "$1" func_to_host_path_tmp1=$func_stripname_result func_convert_core_path_wine_to_w32 "$func_to_host_path_tmp1" - func_to_host_path_result="$func_convert_core_path_wine_to_w32_result" + func_to_host_path_result=$func_convert_core_path_wine_to_w32_result func_convert_path_check : ";" \ "$func_to_host_path_tmp1" "$func_to_host_path_result" func_convert_path_front_back_pathsep ":*" "*:" ";" "$1" @@ -1904,15 +3200,16 @@ # Returns result in func_to_host_file_result. func_convert_path_msys_to_cygwin () { - $opt_debug - func_to_host_path_result="$1" + $debug_cmd + + func_to_host_path_result=$1 if test -n "$1"; then # See func_convert_path_msys_to_w32: func_stripname : : "$1" func_to_host_path_tmp1=$func_stripname_result func_convert_core_msys_to_w32 "$func_to_host_path_tmp1" func_cygpath -u -p "$func_convert_core_msys_to_w32_result" - func_to_host_path_result="$func_cygpath_result" + func_to_host_path_result=$func_cygpath_result func_convert_path_check : : \ "$func_to_host_path_tmp1" "$func_to_host_path_result" func_convert_path_front_back_pathsep ":*" "*:" : "$1" @@ -1927,8 +3224,9 @@ # func_to_host_file_result. func_convert_path_nix_to_cygwin () { - $opt_debug - func_to_host_path_result="$1" + $debug_cmd + + func_to_host_path_result=$1 if test -n "$1"; then # Remove leading and trailing path separator characters from # ARG. msys behavior is inconsistent here, cygpath turns them @@ -1937,7 +3235,7 @@ func_to_host_path_tmp1=$func_stripname_result func_convert_core_path_wine_to_w32 "$func_to_host_path_tmp1" func_cygpath -u -p "$func_convert_core_path_wine_to_w32_result" - func_to_host_path_result="$func_cygpath_result" + func_to_host_path_result=$func_cygpath_result func_convert_path_check : : \ "$func_to_host_path_tmp1" "$func_to_host_path_result" func_convert_path_front_back_pathsep ":*" "*:" : "$1" @@ -1946,13 +3244,31 @@ # end func_convert_path_nix_to_cygwin +# func_dll_def_p FILE +# True iff FILE is a Windows DLL '.def' file. +# Keep in sync with _LT_DLL_DEF_P in libtool.m4 +func_dll_def_p () +{ + $debug_cmd + + func_dll_def_p_tmp=`$SED -n \ + -e 's/^[ ]*//' \ + -e '/^\(;.*\)*$/d' \ + -e 's/^\(EXPORTS\|LIBRARY\)\([ ].*\)*$/DEF/p' \ + -e q \ + "$1"` + test DEF = "$func_dll_def_p_tmp" +} + + # func_mode_compile arg... func_mode_compile () { - $opt_debug + $debug_cmd + # Get the compilation command and the source file. base_compile= - srcfile="$nonopt" # always keep a non-empty value in "srcfile" + srcfile=$nonopt # always keep a non-empty value in "srcfile" suppress_opt=yes suppress_output= arg_mode=normal @@ -1965,12 +3281,12 @@ case $arg_mode in arg ) # do not "continue". Instead, add this to base_compile - lastarg="$arg" + lastarg=$arg arg_mode=normal ;; target ) - libobj="$arg" + libobj=$arg arg_mode=normal continue ;; @@ -1980,7 +3296,7 @@ case $arg in -o) test -n "$libobj" && \ - func_fatal_error "you cannot specify \`-o' more than once" + func_fatal_error "you cannot specify '-o' more than once" arg_mode=target continue ;; @@ -2009,12 +3325,12 @@ func_stripname '-Wc,' '' "$arg" args=$func_stripname_result lastarg= - save_ifs="$IFS"; IFS=',' + save_ifs=$IFS; IFS=, for arg in $args; do - IFS="$save_ifs" + IFS=$save_ifs func_append_quoted lastarg "$arg" done - IFS="$save_ifs" + IFS=$save_ifs func_stripname ' ' '' "$lastarg" lastarg=$func_stripname_result @@ -2027,8 +3343,8 @@ # Accept the current argument as the source file. # The previous "srcfile" becomes the current argument. # - lastarg="$srcfile" - srcfile="$arg" + lastarg=$srcfile + srcfile=$arg ;; esac # case $arg ;; @@ -2043,13 +3359,13 @@ func_fatal_error "you must specify an argument for -Xcompile" ;; target) - func_fatal_error "you must specify a target with \`-o'" + func_fatal_error "you must specify a target with '-o'" ;; *) # Get the name of the library object. test -z "$libobj" && { func_basename "$srcfile" - libobj="$func_basename_result" + libobj=$func_basename_result } ;; esac @@ -2069,7 +3385,7 @@ case $libobj in *.lo) func_lo2o "$libobj"; obj=$func_lo2o_result ;; *) - func_fatal_error "cannot determine name of library object from \`$libobj'" + func_fatal_error "cannot determine name of library object from '$libobj'" ;; esac @@ -2078,8 +3394,8 @@ for arg in $later; do case $arg in -shared) - test "$build_libtool_libs" != yes && \ - func_fatal_configuration "can not build a shared library" + test yes = "$build_libtool_libs" \ + || func_fatal_configuration "cannot build a shared library" build_old_libs=no continue ;; @@ -2105,17 +3421,17 @@ func_quote_for_eval "$libobj" test "X$libobj" != "X$func_quote_for_eval_result" \ && $ECHO "X$libobj" | $GREP '[]~#^*{};<>?"'"'"' &()|`$[]' \ - && func_warning "libobj name \`$libobj' may not contain shell special characters." + && func_warning "libobj name '$libobj' may not contain shell special characters." func_dirname_and_basename "$obj" "/" "" - objname="$func_basename_result" - xdir="$func_dirname_result" - lobj=${xdir}$objdir/$objname + objname=$func_basename_result + xdir=$func_dirname_result + lobj=$xdir$objdir/$objname test -z "$base_compile" && \ func_fatal_help "you must specify a compilation command" # Delete any leftover library objects. - if test "$build_old_libs" = yes; then + if test yes = "$build_old_libs"; then removelist="$obj $lobj $libobj ${libobj}T" else removelist="$lobj $libobj ${libobj}T" @@ -2127,16 +3443,16 @@ pic_mode=default ;; esac - if test "$pic_mode" = no && test "$deplibs_check_method" != pass_all; then + if test no = "$pic_mode" && test pass_all != "$deplibs_check_method"; then # non-PIC code in shared libraries is not supported pic_mode=default fi # Calculate the filename of the output object if compiler does # not support -o with -c - if test "$compiler_c_o" = no; then - output_obj=`$ECHO "$srcfile" | $SED 's%^.*/%%; s%\.[^.]*$%%'`.${objext} - lockfile="$output_obj.lock" + if test no = "$compiler_c_o"; then + output_obj=`$ECHO "$srcfile" | $SED 's%^.*/%%; s%\.[^.]*$%%'`.$objext + lockfile=$output_obj.lock else output_obj= need_locks=no @@ -2145,12 +3461,12 @@ # Lock this critical section if it is needed # We use this script file to make the link, it avoids creating a new file - if test "$need_locks" = yes; then + if test yes = "$need_locks"; then until $opt_dry_run || ln "$progpath" "$lockfile" 2>/dev/null; do func_echo "Waiting for $lockfile to be removed" sleep 2 done - elif test "$need_locks" = warn; then + elif test warn = "$need_locks"; then if test -f "$lockfile"; then $ECHO "\ *** ERROR, $lockfile exists and contains: @@ -2158,7 +3474,7 @@ This indicates that another process is trying to use the same temporary object file, and libtool could not work around it because -your compiler does not support \`-c' and \`-o' together. If you +your compiler does not support '-c' and '-o' together. If you repeat this compilation, it may succeed, by chance, but you had better avoid parallel builds (make -j) in this platform, or get a better compiler." @@ -2180,11 +3496,11 @@ qsrcfile=$func_quote_for_eval_result # Only build a PIC object if we are building libtool libraries. - if test "$build_libtool_libs" = yes; then + if test yes = "$build_libtool_libs"; then # Without this assignment, base_compile gets emptied. fbsd_hideous_sh_bug=$base_compile - if test "$pic_mode" != no; then + if test no != "$pic_mode"; then command="$base_compile $qsrcfile $pic_flag" else # Don't build PIC code @@ -2201,7 +3517,7 @@ func_show_eval_locale "$command" \ 'test -n "$output_obj" && $RM $removelist; exit $EXIT_FAILURE' - if test "$need_locks" = warn && + if test warn = "$need_locks" && test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then $ECHO "\ *** ERROR, $lockfile contains: @@ -2212,7 +3528,7 @@ This indicates that another process is trying to use the same temporary object file, and libtool could not work around it because -your compiler does not support \`-c' and \`-o' together. If you +your compiler does not support '-c' and '-o' together. If you repeat this compilation, it may succeed, by chance, but you had better avoid parallel builds (make -j) in this platform, or get a better compiler." @@ -2228,20 +3544,20 @@ fi # Allow error messages only from the first compilation. - if test "$suppress_opt" = yes; then + if test yes = "$suppress_opt"; then suppress_output=' >/dev/null 2>&1' fi fi # Only build a position-dependent object if we build old libraries. - if test "$build_old_libs" = yes; then - if test "$pic_mode" != yes; then + if test yes = "$build_old_libs"; then + if test yes != "$pic_mode"; then # Don't build PIC code command="$base_compile $qsrcfile$pie_flag" else command="$base_compile $qsrcfile $pic_flag" fi - if test "$compiler_c_o" = yes; then + if test yes = "$compiler_c_o"; then func_append command " -o $obj" fi @@ -2250,7 +3566,7 @@ func_show_eval_locale "$command" \ '$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE' - if test "$need_locks" = warn && + if test warn = "$need_locks" && test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then $ECHO "\ *** ERROR, $lockfile contains: @@ -2261,7 +3577,7 @@ This indicates that another process is trying to use the same temporary object file, and libtool could not work around it because -your compiler does not support \`-c' and \`-o' together. If you +your compiler does not support '-c' and '-o' together. If you repeat this compilation, it may succeed, by chance, but you had better avoid parallel builds (make -j) in this platform, or get a better compiler." @@ -2281,7 +3597,7 @@ func_write_libtool_object "$libobj" "$objdir/$objname" "$objname" # Unlock the critical section if it was locked - if test "$need_locks" != no; then + if test no != "$need_locks"; then removelist=$lockfile $RM "$lockfile" fi @@ -2291,7 +3607,7 @@ } $opt_help || { - test "$opt_mode" = compile && func_mode_compile ${1+"$@"} + test compile = "$opt_mode" && func_mode_compile ${1+"$@"} } func_mode_help () @@ -2311,7 +3627,7 @@ Remove files from the build directory. RM is the name of the program to use to delete files associated with each FILE -(typically \`/bin/rm'). RM-OPTIONS are options (such as \`-f') to be passed +(typically '/bin/rm'). RM-OPTIONS are options (such as '-f') to be passed to RM. If FILE is a libtool library, object or program, all the files associated @@ -2330,16 +3646,16 @@ -no-suppress do not suppress compiler output for multiple passes -prefer-pic try to build PIC objects only -prefer-non-pic try to build non-PIC objects only - -shared do not build a \`.o' file suitable for static linking - -static only build a \`.o' file suitable for static linking + -shared do not build a '.o' file suitable for static linking + -static only build a '.o' file suitable for static linking -Wc,FLAG pass FLAG directly to the compiler -COMPILE-COMMAND is a command to be used in creating a \`standard' object file +COMPILE-COMMAND is a command to be used in creating a 'standard' object file from the given SOURCEFILE. The output file name is determined by removing the directory component from -SOURCEFILE, then substituting the C source code suffix \`.c' with the -library object suffix, \`.lo'." +SOURCEFILE, then substituting the C source code suffix '.c' with the +library object suffix, '.lo'." ;; execute) @@ -2352,7 +3668,7 @@ -dlopen FILE add the directory containing FILE to the library path -This mode sets the library path environment variable according to \`-dlopen' +This mode sets the library path environment variable according to '-dlopen' flags. If any of the ARGS are libtool executable wrappers, then they are translated @@ -2371,7 +3687,7 @@ Each LIBDIR is a directory that contains libtool libraries. The commands that this mode executes may require superuser privileges. Use -the \`--dry-run' option if you just want to see what would be executed." +the '--dry-run' option if you just want to see what would be executed." ;; install) @@ -2381,7 +3697,7 @@ Install executables or libraries. INSTALL-COMMAND is the installation command. The first component should be -either the \`install' or \`cp' program. +either the 'install' or 'cp' program. The following components of INSTALL-COMMAND are treated specially: @@ -2407,7 +3723,7 @@ -avoid-version do not add a version suffix if possible -bindir BINDIR specify path to binaries directory (for systems where libraries must be found in the PATH setting at runtime) - -dlopen FILE \`-dlpreopen' FILE if it cannot be dlopened at runtime + -dlopen FILE '-dlpreopen' FILE if it cannot be dlopened at runtime -dlpreopen FILE link in FILE and add its symbols to lt_preloaded_symbols -export-dynamic allow symbols from OUTPUT-FILE to be resolved with dlsym(3) -export-symbols SYMFILE @@ -2421,7 +3737,8 @@ -no-install link a not-installable executable -no-undefined declare that a library does not refer to external symbols -o OUTPUT-FILE create OUTPUT-FILE from the specified objects - -objectlist FILE Use a list of object files found in FILE to specify objects + -objectlist FILE use a list of object files found in FILE to specify objects + -os2dllname NAME force a short DLL name on OS/2 (no effect on other OSes) -precious-files-regex REGEX don't remove output files matching REGEX -release RELEASE specify package release information @@ -2441,20 +3758,20 @@ -Xlinker FLAG pass linker-specific FLAG directly to the linker -XCClinker FLAG pass link-specific FLAG to the compiler driver (CC) -All other options (arguments beginning with \`-') are ignored. +All other options (arguments beginning with '-') are ignored. -Every other argument is treated as a filename. Files ending in \`.la' are +Every other argument is treated as a filename. Files ending in '.la' are treated as uninstalled libtool libraries, other files are standard or library object files. -If the OUTPUT-FILE ends in \`.la', then a libtool library is created, -only library objects (\`.lo' files) may be specified, and \`-rpath' is +If the OUTPUT-FILE ends in '.la', then a libtool library is created, +only library objects ('.lo' files) may be specified, and '-rpath' is required, except when creating a convenience library. -If OUTPUT-FILE ends in \`.a' or \`.lib', then a standard library is created -using \`ar' and \`ranlib', or on Windows using \`lib'. +If OUTPUT-FILE ends in '.a' or '.lib', then a standard library is created +using 'ar' and 'ranlib', or on Windows using 'lib'. -If OUTPUT-FILE ends in \`.lo' or \`.${objext}', then a reloadable object file +If OUTPUT-FILE ends in '.lo' or '.$objext', then a reloadable object file is created, otherwise an executable program is created." ;; @@ -2465,7 +3782,7 @@ Remove libraries from an installation directory. RM is the name of the program to use to delete files associated with each FILE -(typically \`/bin/rm'). RM-OPTIONS are options (such as \`-f') to be passed +(typically '/bin/rm'). RM-OPTIONS are options (such as '-f') to be passed to RM. If FILE is a libtool library, all the files associated with it are deleted. @@ -2473,17 +3790,17 @@ ;; *) - func_fatal_help "invalid operation mode \`$opt_mode'" + func_fatal_help "invalid operation mode '$opt_mode'" ;; esac echo - $ECHO "Try \`$progname --help' for more information about other modes." + $ECHO "Try '$progname --help' for more information about other modes." } # Now that we've collected a possible --mode arg, show help if necessary if $opt_help; then - if test "$opt_help" = :; then + if test : = "$opt_help"; then func_mode_help else { @@ -2491,7 +3808,7 @@ for opt_mode in compile link execute install finish uninstall clean; do func_mode_help done - } | sed -n '1p; 2,$s/^Usage:/ or: /p' + } | $SED -n '1p; 2,$s/^Usage:/ or: /p' { func_help noexit for opt_mode in compile link execute install finish uninstall clean; do @@ -2499,7 +3816,7 @@ func_mode_help done } | - sed '1d + $SED '1d /^When reporting/,/^Report/{ H d @@ -2516,16 +3833,17 @@ # func_mode_execute arg... func_mode_execute () { - $opt_debug + $debug_cmd + # The first argument is the command name. - cmd="$nonopt" + cmd=$nonopt test -z "$cmd" && \ func_fatal_help "you must specify a COMMAND" # Handle -dlopen flags immediately. for file in $opt_dlopen; do test -f "$file" \ - || func_fatal_help "\`$file' is not a file" + || func_fatal_help "'$file' is not a file" dir= case $file in @@ -2535,7 +3853,7 @@ # Check to see that this really is a libtool archive. func_lalib_unsafe_p "$file" \ - || func_fatal_help "\`$lib' is not a valid libtool archive" + || func_fatal_help "'$lib' is not a valid libtool archive" # Read the libtool library. dlname= @@ -2546,18 +3864,18 @@ if test -z "$dlname"; then # Warn if it was a shared library. test -n "$library_names" && \ - func_warning "\`$file' was not linked with \`-export-dynamic'" + func_warning "'$file' was not linked with '-export-dynamic'" continue fi func_dirname "$file" "" "." - dir="$func_dirname_result" + dir=$func_dirname_result if test -f "$dir/$objdir/$dlname"; then func_append dir "/$objdir" else if test ! -f "$dir/$dlname"; then - func_fatal_error "cannot find \`$dlname' in \`$dir' or \`$dir/$objdir'" + func_fatal_error "cannot find '$dlname' in '$dir' or '$dir/$objdir'" fi fi ;; @@ -2565,18 +3883,18 @@ *.lo) # Just add the directory containing the .lo file. func_dirname "$file" "" "." - dir="$func_dirname_result" + dir=$func_dirname_result ;; *) - func_warning "\`-dlopen' is ignored for non-libtool libraries and objects" + func_warning "'-dlopen' is ignored for non-libtool libraries and objects" continue ;; esac # Get the absolute pathname. absdir=`cd "$dir" && pwd` - test -n "$absdir" && dir="$absdir" + test -n "$absdir" && dir=$absdir # Now add the directory to shlibpath_var. if eval "test -z \"\$$shlibpath_var\""; then @@ -2588,7 +3906,7 @@ # This variable tells wrapper scripts just to set shlibpath_var # rather than running their programs. - libtool_execute_magic="$magic" + libtool_execute_magic=$magic # Check if any of the arguments is a wrapper script. args= @@ -2601,12 +3919,12 @@ if func_ltwrapper_script_p "$file"; then func_source "$file" # Transform arg to wrapped name. - file="$progdir/$program" + file=$progdir/$program elif func_ltwrapper_executable_p "$file"; then func_ltwrapper_scriptname "$file" func_source "$func_ltwrapper_scriptname_result" # Transform arg to wrapped name. - file="$progdir/$program" + file=$progdir/$program fi ;; esac @@ -2614,7 +3932,15 @@ func_append_quoted args "$file" done - if test "X$opt_dry_run" = Xfalse; then + if $opt_dry_run; then + # Display what would be done. + if test -n "$shlibpath_var"; then + eval "\$ECHO \"\$shlibpath_var=\$$shlibpath_var\"" + echo "export $shlibpath_var" + fi + $ECHO "$cmd$args" + exit $EXIT_SUCCESS + else if test -n "$shlibpath_var"; then # Export the shlibpath_var. eval "export $shlibpath_var" @@ -2631,25 +3957,18 @@ done # Now prepare to actually exec the command. - exec_cmd="\$cmd$args" - else - # Display what would be done. - if test -n "$shlibpath_var"; then - eval "\$ECHO \"\$shlibpath_var=\$$shlibpath_var\"" - echo "export $shlibpath_var" - fi - $ECHO "$cmd$args" - exit $EXIT_SUCCESS + exec_cmd=\$cmd$args fi } -test "$opt_mode" = execute && func_mode_execute ${1+"$@"} +test execute = "$opt_mode" && func_mode_execute ${1+"$@"} # func_mode_finish arg... func_mode_finish () { - $opt_debug + $debug_cmd + libs= libdirs= admincmds= @@ -2663,11 +3982,11 @@ if func_lalib_unsafe_p "$opt"; then func_append libs " $opt" else - func_warning "\`$opt' is not a valid libtool archive" + func_warning "'$opt' is not a valid libtool archive" fi else - func_fatal_error "invalid argument \`$opt'" + func_fatal_error "invalid argument '$opt'" fi done @@ -2682,12 +4001,12 @@ # Remove sysroot references if $opt_dry_run; then for lib in $libs; do - echo "removing references to $lt_sysroot and \`=' prefixes from $lib" + echo "removing references to $lt_sysroot and '=' prefixes from $lib" done else tmpdir=`func_mktempdir` for lib in $libs; do - sed -e "${sysroot_cmd} s/\([ ']-[LR]\)=/\1/g; s/\([ ']\)=/\1/g" $lib \ + $SED -e "$sysroot_cmd s/\([ ']-[LR]\)=/\1/g; s/\([ ']\)=/\1/g" $lib \ > $tmpdir/tmp-la mv -f $tmpdir/tmp-la $lib done @@ -2712,7 +4031,7 @@ fi # Exit here if they wanted silent mode. - $opt_silent && exit $EXIT_SUCCESS + $opt_quiet && exit $EXIT_SUCCESS if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then echo "----------------------------------------------------------------------" @@ -2723,27 +4042,27 @@ echo echo "If you ever happen to want to link against installed libraries" echo "in a given directory, LIBDIR, you must either use libtool, and" - echo "specify the full pathname of the library, or use the \`-LLIBDIR'" + echo "specify the full pathname of the library, or use the '-LLIBDIR'" echo "flag during linking and do at least one of the following:" if test -n "$shlibpath_var"; then - echo " - add LIBDIR to the \`$shlibpath_var' environment variable" + echo " - add LIBDIR to the '$shlibpath_var' environment variable" echo " during execution" fi if test -n "$runpath_var"; then - echo " - add LIBDIR to the \`$runpath_var' environment variable" + echo " - add LIBDIR to the '$runpath_var' environment variable" echo " during linking" fi if test -n "$hardcode_libdir_flag_spec"; then libdir=LIBDIR eval flag=\"$hardcode_libdir_flag_spec\" - $ECHO " - use the \`$flag' linker flag" + $ECHO " - use the '$flag' linker flag" fi if test -n "$admincmds"; then $ECHO " - have your system administrator run these commands:$admincmds" fi if test -f /etc/ld.so.conf; then - echo " - have your system administrator add LIBDIR to \`/etc/ld.so.conf'" + echo " - have your system administrator add LIBDIR to '/etc/ld.so.conf'" fi echo @@ -2762,18 +4081,20 @@ exit $EXIT_SUCCESS } -test "$opt_mode" = finish && func_mode_finish ${1+"$@"} +test finish = "$opt_mode" && func_mode_finish ${1+"$@"} # func_mode_install arg... func_mode_install () { - $opt_debug + $debug_cmd + # There may be an optional sh(1) argument at the beginning of # install_prog (especially on Windows NT). - if test "$nonopt" = "$SHELL" || test "$nonopt" = /bin/sh || + if test "$SHELL" = "$nonopt" || test /bin/sh = "$nonopt" || # Allow the use of GNU shtool's install command. - case $nonopt in *shtool*) :;; *) false;; esac; then + case $nonopt in *shtool*) :;; *) false;; esac + then # Aesthetically quote it. func_quote_for_eval "$nonopt" install_prog="$func_quote_for_eval_result " @@ -2800,7 +4121,7 @@ opts= prev= install_type= - isdir=no + isdir=false stripme= no_mode=: for arg @@ -2813,7 +4134,7 @@ fi case $arg in - -d) isdir=yes ;; + -d) isdir=: ;; -f) if $install_cp; then :; else prev=$arg @@ -2831,7 +4152,7 @@ *) # If the previous option needed an argument, then skip it. if test -n "$prev"; then - if test "x$prev" = x-m && test -n "$install_override_mode"; then + if test X-m = "X$prev" && test -n "$install_override_mode"; then arg2=$install_override_mode no_mode=false fi @@ -2856,7 +4177,7 @@ func_fatal_help "you must specify an install program" test -n "$prev" && \ - func_fatal_help "the \`$prev' option requires an argument" + func_fatal_help "the '$prev' option requires an argument" if test -n "$install_override_mode" && $no_mode; then if $install_cp; then :; else @@ -2878,19 +4199,19 @@ dest=$func_stripname_result # Check to see that the destination is a directory. - test -d "$dest" && isdir=yes - if test "$isdir" = yes; then - destdir="$dest" + test -d "$dest" && isdir=: + if $isdir; then + destdir=$dest destname= else func_dirname_and_basename "$dest" "" "." - destdir="$func_dirname_result" - destname="$func_basename_result" + destdir=$func_dirname_result + destname=$func_basename_result # Not a directory, so check to see that there is only one file specified. set dummy $files; shift test "$#" -gt 1 && \ - func_fatal_help "\`$dest' is not a directory" + func_fatal_help "'$dest' is not a directory" fi case $destdir in [\\/]* | [A-Za-z]:[\\/]*) ;; @@ -2899,7 +4220,7 @@ case $file in *.lo) ;; *) - func_fatal_help "\`$destdir' must be an absolute directory name" + func_fatal_help "'$destdir' must be an absolute directory name" ;; esac done @@ -2908,7 +4229,7 @@ # This variable tells wrapper scripts just to set variables rather # than running their programs. - libtool_install_magic="$magic" + libtool_install_magic=$magic staticlibs= future_libdirs= @@ -2928,7 +4249,7 @@ # Check to see that this really is a libtool archive. func_lalib_unsafe_p "$file" \ - || func_fatal_help "\`$file' is not a valid libtool archive" + || func_fatal_help "'$file' is not a valid libtool archive" library_names= old_library= @@ -2950,7 +4271,7 @@ fi func_dirname "$file" "/" "" - dir="$func_dirname_result" + dir=$func_dirname_result func_append dir "$objdir" if test -n "$relink_command"; then @@ -2964,7 +4285,7 @@ # are installed into $libdir/../bin (currently, that works fine) # but it's something to keep an eye on. test "$inst_prefix_dir" = "$destdir" && \ - func_fatal_error "error: cannot install \`$file' to a directory not ending in $libdir" + func_fatal_error "error: cannot install '$file' to a directory not ending in $libdir" if test -n "$inst_prefix_dir"; then # Stick the inst_prefix_dir data into the link command. @@ -2973,29 +4294,36 @@ relink_command=`$ECHO "$relink_command" | $SED "s%@inst_prefix_dir@%%"` fi - func_warning "relinking \`$file'" + func_warning "relinking '$file'" func_show_eval "$relink_command" \ - 'func_fatal_error "error: relink \`$file'\'' with the above command before installing it"' + 'func_fatal_error "error: relink '\''$file'\'' with the above command before installing it"' fi # See the names of the shared library. set dummy $library_names; shift if test -n "$1"; then - realname="$1" + realname=$1 shift - srcname="$realname" - test -n "$relink_command" && srcname="$realname"T + srcname=$realname + test -n "$relink_command" && srcname=${realname}T # Install the shared library and build the symlinks. func_show_eval "$install_shared_prog $dir/$srcname $destdir/$realname" \ 'exit $?' - tstripme="$stripme" + tstripme=$stripme case $host_os in cygwin* | mingw* | pw32* | cegcc*) case $realname in *.dll.a) - tstripme="" + tstripme= + ;; + esac + ;; + os2*) + case $realname in + *_dll.a) + tstripme= ;; esac ;; @@ -3006,7 +4334,7 @@ if test "$#" -gt 0; then # Delete the old symlinks, and create new ones. - # Try `ln -sf' first, because the `ln' binary might depend on + # Try 'ln -sf' first, because the 'ln' binary might depend on # the symlink we replace! Solaris /bin/ln does not understand -f, # so we also need to try rm && ln -s. for linkname @@ -3017,14 +4345,14 @@ fi # Do each command in the postinstall commands. - lib="$destdir/$realname" + lib=$destdir/$realname func_execute_cmds "$postinstall_cmds" 'exit $?' fi # Install the pseudo-library for information purposes. func_basename "$file" - name="$func_basename_result" - instname="$dir/$name"i + name=$func_basename_result + instname=$dir/${name}i func_show_eval "$install_prog $instname $destdir/$name" 'exit $?' # Maybe install the static library, too. @@ -3036,11 +4364,11 @@ # Figure out destination file name, if it wasn't already specified. if test -n "$destname"; then - destfile="$destdir/$destname" + destfile=$destdir/$destname else func_basename "$file" - destfile="$func_basename_result" - destfile="$destdir/$destfile" + destfile=$func_basename_result + destfile=$destdir/$destfile fi # Deduce the name of the destination old-style object file. @@ -3050,11 +4378,11 @@ staticdest=$func_lo2o_result ;; *.$objext) - staticdest="$destfile" + staticdest=$destfile destfile= ;; *) - func_fatal_help "cannot copy a libtool object to \`$destfile'" + func_fatal_help "cannot copy a libtool object to '$destfile'" ;; esac @@ -3063,7 +4391,7 @@ func_show_eval "$install_prog $file $destfile" 'exit $?' # Install the old object if enabled. - if test "$build_old_libs" = yes; then + if test yes = "$build_old_libs"; then # Deduce the name of the old-style object file. func_lo2o "$file" staticobj=$func_lo2o_result @@ -3075,23 +4403,23 @@ *) # Figure out destination file name, if it wasn't already specified. if test -n "$destname"; then - destfile="$destdir/$destname" + destfile=$destdir/$destname else func_basename "$file" - destfile="$func_basename_result" - destfile="$destdir/$destfile" + destfile=$func_basename_result + destfile=$destdir/$destfile fi # If the file is missing, and there is a .exe on the end, strip it # because it is most likely a libtool script we actually want to # install - stripped_ext="" + stripped_ext= case $file in *.exe) if test ! -f "$file"; then func_stripname '' '.exe' "$file" file=$func_stripname_result - stripped_ext=".exe" + stripped_ext=.exe fi ;; esac @@ -3119,19 +4447,19 @@ # Check the variables that should have been set. test -z "$generated_by_libtool_version" && \ - func_fatal_error "invalid libtool wrapper script \`$wrapper'" + func_fatal_error "invalid libtool wrapper script '$wrapper'" - finalize=yes + finalize=: for lib in $notinst_deplibs; do # Check to see that each library is installed. libdir= if test -f "$lib"; then func_source "$lib" fi - libfile="$libdir/"`$ECHO "$lib" | $SED 's%^.*/%%g'` ### testsuite: skip nested quoting test + libfile=$libdir/`$ECHO "$lib" | $SED 's%^.*/%%g'` if test -n "$libdir" && test ! -f "$libfile"; then - func_warning "\`$lib' has not been installed in \`$libdir'" - finalize=no + func_warning "'$lib' has not been installed in '$libdir'" + finalize=false fi done @@ -3139,29 +4467,29 @@ func_source "$wrapper" outputname= - if test "$fast_install" = no && test -n "$relink_command"; then + if test no = "$fast_install" && test -n "$relink_command"; then $opt_dry_run || { - if test "$finalize" = yes; then + if $finalize; then tmpdir=`func_mktempdir` func_basename "$file$stripped_ext" - file="$func_basename_result" - outputname="$tmpdir/$file" + file=$func_basename_result + outputname=$tmpdir/$file # Replace the output file specification. relink_command=`$ECHO "$relink_command" | $SED 's%@OUTPUT@%'"$outputname"'%g'` - $opt_silent || { + $opt_quiet || { func_quote_for_expand "$relink_command" eval "func_echo $func_quote_for_expand_result" } if eval "$relink_command"; then : else - func_error "error: relink \`$file' with the above command before installing it" + func_error "error: relink '$file' with the above command before installing it" $opt_dry_run || ${RM}r "$tmpdir" continue fi - file="$outputname" + file=$outputname else - func_warning "cannot relink \`$file'" + func_warning "cannot relink '$file'" fi } else @@ -3198,10 +4526,10 @@ for file in $staticlibs; do func_basename "$file" - name="$func_basename_result" + name=$func_basename_result # Set up the ranlib parameters. - oldlib="$destdir/$name" + oldlib=$destdir/$name func_to_tool_file "$oldlib" func_convert_file_msys_to_w32 tool_oldlib=$func_to_tool_file_result @@ -3216,18 +4544,18 @@ done test -n "$future_libdirs" && \ - func_warning "remember to run \`$progname --finish$future_libdirs'" + func_warning "remember to run '$progname --finish$future_libdirs'" if test -n "$current_libdirs"; then # Maybe just do a dry run. $opt_dry_run && current_libdirs=" -n$current_libdirs" - exec_cmd='$SHELL $progpath $preserve_args --finish$current_libdirs' + exec_cmd='$SHELL "$progpath" $preserve_args --finish$current_libdirs' else exit $EXIT_SUCCESS fi } -test "$opt_mode" = install && func_mode_install ${1+"$@"} +test install = "$opt_mode" && func_mode_install ${1+"$@"} # func_generate_dlsyms outputname originator pic_p @@ -3235,16 +4563,17 @@ # a dlpreopen symbol table. func_generate_dlsyms () { - $opt_debug - my_outputname="$1" - my_originator="$2" - my_pic_p="${3-no}" - my_prefix=`$ECHO "$my_originator" | sed 's%[^a-zA-Z0-9]%_%g'` + $debug_cmd + + my_outputname=$1 + my_originator=$2 + my_pic_p=${3-false} + my_prefix=`$ECHO "$my_originator" | $SED 's%[^a-zA-Z0-9]%_%g'` my_dlsyms= - if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then + if test -n "$dlfiles$dlprefiles" || test no != "$dlself"; then if test -n "$NM" && test -n "$global_symbol_pipe"; then - my_dlsyms="${my_outputname}S.c" + my_dlsyms=${my_outputname}S.c else func_error "not configured to extract global symbols from dlpreopened files" fi @@ -3255,7 +4584,7 @@ "") ;; *.c) # Discover the nlist of each of the dlfiles. - nlist="$output_objdir/${my_outputname}.nm" + nlist=$output_objdir/$my_outputname.nm func_show_eval "$RM $nlist ${nlist}S ${nlist}T" @@ -3263,34 +4592,36 @@ func_verbose "creating $output_objdir/$my_dlsyms" $opt_dry_run || $ECHO > "$output_objdir/$my_dlsyms" "\ -/* $my_dlsyms - symbol resolution table for \`$my_outputname' dlsym emulation. */ -/* Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION */ +/* $my_dlsyms - symbol resolution table for '$my_outputname' dlsym emulation. */ +/* Generated by $PROGRAM (GNU $PACKAGE) $VERSION */ #ifdef __cplusplus extern \"C\" { #endif -#if defined(__GNUC__) && (((__GNUC__ == 4) && (__GNUC_MINOR__ >= 4)) || (__GNUC__ > 4)) +#if defined __GNUC__ && (((__GNUC__ == 4) && (__GNUC_MINOR__ >= 4)) || (__GNUC__ > 4)) #pragma GCC diagnostic ignored \"-Wstrict-prototypes\" #endif /* Keep this code in sync between libtool.m4, ltmain, lt_system.h, and tests. */ -#if defined(_WIN32) || defined(__CYGWIN__) || defined(_WIN32_WCE) -/* DATA imports from DLLs on WIN32 con't be const, because runtime +#if defined _WIN32 || defined __CYGWIN__ || defined _WIN32_WCE +/* DATA imports from DLLs on WIN32 can't be const, because runtime relocations are performed -- see ld's documentation on pseudo-relocs. */ # define LT_DLSYM_CONST -#elif defined(__osf__) +#elif defined __osf__ /* This system does not cope well with relocations in const data. */ # define LT_DLSYM_CONST #else # define LT_DLSYM_CONST const #endif +#define STREQ(s1, s2) (strcmp ((s1), (s2)) == 0) + /* External symbol declarations for the compiler. */\ " - if test "$dlself" = yes; then - func_verbose "generating symbol list for \`$output'" + if test yes = "$dlself"; then + func_verbose "generating symbol list for '$output'" $opt_dry_run || echo ': @PROGRAM@ ' > "$nlist" @@ -3298,7 +4629,7 @@ progfiles=`$ECHO "$objs$old_deplibs" | $SP2NL | $SED "$lo2o" | $NL2SP` for progfile in $progfiles; do func_to_tool_file "$progfile" func_convert_file_msys_to_w32 - func_verbose "extracting global C symbols from \`$func_to_tool_file_result'" + func_verbose "extracting global C symbols from '$func_to_tool_file_result'" $opt_dry_run || eval "$NM $func_to_tool_file_result | $global_symbol_pipe >> '$nlist'" done @@ -3318,10 +4649,10 @@ # Prepare the list of exported symbols if test -z "$export_symbols"; then - export_symbols="$output_objdir/$outputname.exp" + export_symbols=$output_objdir/$outputname.exp $opt_dry_run || { $RM $export_symbols - eval "${SED} -n -e '/^: @PROGRAM@ $/d' -e 's/^.* \(.*\)$/\1/p' "'< "$nlist" > "$export_symbols"' + eval "$SED -n -e '/^: @PROGRAM@ $/d' -e 's/^.* \(.*\)$/\1/p' "'< "$nlist" > "$export_symbols"' case $host in *cygwin* | *mingw* | *cegcc* ) eval "echo EXPORTS "'> "$output_objdir/$outputname.def"' @@ -3331,7 +4662,7 @@ } else $opt_dry_run || { - eval "${SED} -e 's/\([].[*^$]\)/\\\\\1/g' -e 's/^/ /' -e 's/$/$/'"' < "$export_symbols" > "$output_objdir/$outputname.exp"' + eval "$SED -e 's/\([].[*^$]\)/\\\\\1/g' -e 's/^/ /' -e 's/$/$/'"' < "$export_symbols" > "$output_objdir/$outputname.exp"' eval '$GREP -f "$output_objdir/$outputname.exp" < "$nlist" > "$nlist"T' eval '$MV "$nlist"T "$nlist"' case $host in @@ -3345,22 +4676,22 @@ fi for dlprefile in $dlprefiles; do - func_verbose "extracting global C symbols from \`$dlprefile'" + func_verbose "extracting global C symbols from '$dlprefile'" func_basename "$dlprefile" - name="$func_basename_result" + name=$func_basename_result case $host in *cygwin* | *mingw* | *cegcc* ) # if an import library, we need to obtain dlname if func_win32_import_lib_p "$dlprefile"; then func_tr_sh "$dlprefile" eval "curr_lafile=\$libfile_$func_tr_sh_result" - dlprefile_dlbasename="" + dlprefile_dlbasename= if test -n "$curr_lafile" && func_lalib_p "$curr_lafile"; then # Use subshell, to avoid clobbering current variable values dlprefile_dlname=`source "$curr_lafile" && echo "$dlname"` - if test -n "$dlprefile_dlname" ; then + if test -n "$dlprefile_dlname"; then func_basename "$dlprefile_dlname" - dlprefile_dlbasename="$func_basename_result" + dlprefile_dlbasename=$func_basename_result else # no lafile. user explicitly requested -dlpreopen . $sharedlib_from_linklib_cmd "$dlprefile" @@ -3368,7 +4699,7 @@ fi fi $opt_dry_run || { - if test -n "$dlprefile_dlbasename" ; then + if test -n "$dlprefile_dlbasename"; then eval '$ECHO ": $dlprefile_dlbasename" >> "$nlist"' else func_warning "Could not compute DLL name from $name" @@ -3424,6 +4755,11 @@ echo '/* NONE */' >> "$output_objdir/$my_dlsyms" fi + func_show_eval '$RM "${nlist}I"' + if test -n "$global_symbol_to_import"; then + eval "$global_symbol_to_import"' < "$nlist"S > "$nlist"I' + fi + echo >> "$output_objdir/$my_dlsyms" "\ /* The mapping between symbol names and symbols. */ @@ -3432,11 +4768,30 @@ void *address; } lt_dlsymlist; extern LT_DLSYM_CONST lt_dlsymlist -lt_${my_prefix}_LTX_preloaded_symbols[]; +lt_${my_prefix}_LTX_preloaded_symbols[];\ +" + + if test -s "$nlist"I; then + echo >> "$output_objdir/$my_dlsyms" "\ +static void lt_syminit(void) +{ + LT_DLSYM_CONST lt_dlsymlist *symbol = lt_${my_prefix}_LTX_preloaded_symbols; + for (; symbol->name; ++symbol) + {" + $SED 's/.*/ if (STREQ (symbol->name, \"&\")) symbol->address = (void *) \&&;/' < "$nlist"I >> "$output_objdir/$my_dlsyms" + echo >> "$output_objdir/$my_dlsyms" "\ + } +}" + fi + echo >> "$output_objdir/$my_dlsyms" "\ LT_DLSYM_CONST lt_dlsymlist lt_${my_prefix}_LTX_preloaded_symbols[] = -{\ - { \"$my_originator\", (void *) 0 }," +{ {\"$my_originator\", (void *) 0}," + + if test -s "$nlist"I; then + echo >> "$output_objdir/$my_dlsyms" "\ + {\"@INIT@\", (void *) <_syminit}," + fi case $need_lib_prefix in no) @@ -3478,9 +4833,7 @@ *-*-hpux*) pic_flag_for_symtable=" $pic_flag" ;; *) - if test "X$my_pic_p" != Xno; then - pic_flag_for_symtable=" $pic_flag" - fi + $my_pic_p && pic_flag_for_symtable=" $pic_flag" ;; esac ;; @@ -3497,10 +4850,10 @@ func_show_eval '(cd $output_objdir && $LTCC$symtab_cflags -c$no_builtin_flag$pic_flag_for_symtable "$my_dlsyms")' 'exit $?' # Clean up the generated files. - func_show_eval '$RM "$output_objdir/$my_dlsyms" "$nlist" "${nlist}S" "${nlist}T"' + func_show_eval '$RM "$output_objdir/$my_dlsyms" "$nlist" "${nlist}S" "${nlist}T" "${nlist}I"' # Transform the symbol file into the correct name. - symfileobj="$output_objdir/${my_outputname}S.$objext" + symfileobj=$output_objdir/${my_outputname}S.$objext case $host in *cygwin* | *mingw* | *cegcc* ) if test -f "$output_objdir/$my_outputname.def"; then @@ -3518,7 +4871,7 @@ esac ;; *) - func_fatal_error "unknown suffix for \`$my_dlsyms'" + func_fatal_error "unknown suffix for '$my_dlsyms'" ;; esac else @@ -3532,6 +4885,32 @@ fi } +# func_cygming_gnu_implib_p ARG +# This predicate returns with zero status (TRUE) if +# ARG is a GNU/binutils-style import library. Returns +# with nonzero status (FALSE) otherwise. +func_cygming_gnu_implib_p () +{ + $debug_cmd + + func_to_tool_file "$1" func_convert_file_msys_to_w32 + func_cygming_gnu_implib_tmp=`$NM "$func_to_tool_file_result" | eval "$global_symbol_pipe" | $EGREP ' (_head_[A-Za-z0-9_]+_[ad]l*|[A-Za-z0-9_]+_[ad]l*_iname)$'` + test -n "$func_cygming_gnu_implib_tmp" +} + +# func_cygming_ms_implib_p ARG +# This predicate returns with zero status (TRUE) if +# ARG is an MS-style import library. Returns +# with nonzero status (FALSE) otherwise. +func_cygming_ms_implib_p () +{ + $debug_cmd + + func_to_tool_file "$1" func_convert_file_msys_to_w32 + func_cygming_ms_implib_tmp=`$NM "$func_to_tool_file_result" | eval "$global_symbol_pipe" | $GREP '_NULL_IMPORT_DESCRIPTOR'` + test -n "$func_cygming_ms_implib_tmp" +} + # func_win32_libid arg # return the library type of file 'arg' # @@ -3541,8 +4920,9 @@ # Despite the name, also deal with 64 bit binaries. func_win32_libid () { - $opt_debug - win32_libid_type="unknown" + $debug_cmd + + win32_libid_type=unknown win32_fileres=`file -L $1 2>/dev/null` case $win32_fileres in *ar\ archive\ import\ library*) # definitely import @@ -3552,16 +4932,29 @@ # Keep the egrep pattern in sync with the one in _LT_CHECK_MAGIC_METHOD. if eval $OBJDUMP -f $1 | $SED -e '10q' 2>/dev/null | $EGREP 'file format (pei*-i386(.*architecture: i386)?|pe-arm-wince|pe-x86-64)' >/dev/null; then - func_to_tool_file "$1" func_convert_file_msys_to_w32 - win32_nmres=`eval $NM -f posix -A \"$func_to_tool_file_result\" | - $SED -n -e ' + case $nm_interface in + "MS dumpbin") + if func_cygming_ms_implib_p "$1" || + func_cygming_gnu_implib_p "$1" + then + win32_nmres=import + else + win32_nmres= + fi + ;; + *) + func_to_tool_file "$1" func_convert_file_msys_to_w32 + win32_nmres=`eval $NM -f posix -A \"$func_to_tool_file_result\" | + $SED -n -e ' 1,100{ / I /{ - s,.*,import, + s|.*|import| p q } }'` + ;; + esac case $win32_nmres in import*) win32_libid_type="x86 archive import";; *) win32_libid_type="x86 archive static";; @@ -3593,7 +4986,8 @@ # $sharedlib_from_linklib_result func_cygming_dll_for_implib () { - $opt_debug + $debug_cmd + sharedlib_from_linklib_result=`$DLLTOOL --identify-strict --identify "$1"` } @@ -3610,7 +5004,8 @@ # specified import library. func_cygming_dll_for_implib_fallback_core () { - $opt_debug + $debug_cmd + match_literal=`$ECHO "$1" | $SED "$sed_make_literal_regex"` $OBJDUMP -s --section "$1" "$2" 2>/dev/null | $SED '/^Contents of section '"$match_literal"':/{ @@ -3646,8 +5041,8 @@ /./p' | # we now have a list, one entry per line, of the stringified # contents of the appropriate section of all members of the - # archive which possess that section. Heuristic: eliminate - # all those which have a first or second character that is + # archive that possess that section. Heuristic: eliminate + # all those that have a first or second character that is # a '.' (that is, objdump's representation of an unprintable # character.) This should work for all archives with less than # 0x302f exports -- but will fail for DLLs whose name actually @@ -3658,30 +5053,6 @@ $SED -e '/^\./d;/^.\./d;q' } -# func_cygming_gnu_implib_p ARG -# This predicate returns with zero status (TRUE) if -# ARG is a GNU/binutils-style import library. Returns -# with nonzero status (FALSE) otherwise. -func_cygming_gnu_implib_p () -{ - $opt_debug - func_to_tool_file "$1" func_convert_file_msys_to_w32 - func_cygming_gnu_implib_tmp=`$NM "$func_to_tool_file_result" | eval "$global_symbol_pipe" | $EGREP ' (_head_[A-Za-z0-9_]+_[ad]l*|[A-Za-z0-9_]+_[ad]l*_iname)$'` - test -n "$func_cygming_gnu_implib_tmp" -} - -# func_cygming_ms_implib_p ARG -# This predicate returns with zero status (TRUE) if -# ARG is an MS-style import library. Returns -# with nonzero status (FALSE) otherwise. -func_cygming_ms_implib_p () -{ - $opt_debug - func_to_tool_file "$1" func_convert_file_msys_to_w32 - func_cygming_ms_implib_tmp=`$NM "$func_to_tool_file_result" | eval "$global_symbol_pipe" | $GREP '_NULL_IMPORT_DESCRIPTOR'` - test -n "$func_cygming_ms_implib_tmp" -} - # func_cygming_dll_for_implib_fallback ARG # Platform-specific function to extract the # name of the DLL associated with the specified @@ -3695,16 +5066,17 @@ # $sharedlib_from_linklib_result func_cygming_dll_for_implib_fallback () { - $opt_debug - if func_cygming_gnu_implib_p "$1" ; then + $debug_cmd + + if func_cygming_gnu_implib_p "$1"; then # binutils import library sharedlib_from_linklib_result=`func_cygming_dll_for_implib_fallback_core '.idata$7' "$1"` - elif func_cygming_ms_implib_p "$1" ; then + elif func_cygming_ms_implib_p "$1"; then # ms-generated import library sharedlib_from_linklib_result=`func_cygming_dll_for_implib_fallback_core '.idata$6' "$1"` else # unknown - sharedlib_from_linklib_result="" + sharedlib_from_linklib_result= fi } @@ -3712,10 +5084,11 @@ # func_extract_an_archive dir oldlib func_extract_an_archive () { - $opt_debug - f_ex_an_ar_dir="$1"; shift - f_ex_an_ar_oldlib="$1" - if test "$lock_old_archive_extraction" = yes; then + $debug_cmd + + f_ex_an_ar_dir=$1; shift + f_ex_an_ar_oldlib=$1 + if test yes = "$lock_old_archive_extraction"; then lockfile=$f_ex_an_ar_oldlib.lock until $opt_dry_run || ln "$progpath" "$lockfile" 2>/dev/null; do func_echo "Waiting for $lockfile to be removed" @@ -3724,7 +5097,7 @@ fi func_show_eval "(cd \$f_ex_an_ar_dir && $AR x \"\$f_ex_an_ar_oldlib\")" \ 'stat=$?; rm -f "$lockfile"; exit $stat' - if test "$lock_old_archive_extraction" = yes; then + if test yes = "$lock_old_archive_extraction"; then $opt_dry_run || rm -f "$lockfile" fi if ($AR t "$f_ex_an_ar_oldlib" | sort | sort -uc >/dev/null 2>&1); then @@ -3738,22 +5111,23 @@ # func_extract_archives gentop oldlib ... func_extract_archives () { - $opt_debug - my_gentop="$1"; shift + $debug_cmd + + my_gentop=$1; shift my_oldlibs=${1+"$@"} - my_oldobjs="" - my_xlib="" - my_xabs="" - my_xdir="" + my_oldobjs= + my_xlib= + my_xabs= + my_xdir= for my_xlib in $my_oldlibs; do # Extract the objects. case $my_xlib in - [\\/]* | [A-Za-z]:[\\/]*) my_xabs="$my_xlib" ;; + [\\/]* | [A-Za-z]:[\\/]*) my_xabs=$my_xlib ;; *) my_xabs=`pwd`"/$my_xlib" ;; esac func_basename "$my_xlib" - my_xlib="$func_basename_result" + my_xlib=$func_basename_result my_xlib_u=$my_xlib while :; do case " $extracted_archives " in @@ -3765,7 +5139,7 @@ esac done extracted_archives="$extracted_archives $my_xlib_u" - my_xdir="$my_gentop/$my_xlib_u" + my_xdir=$my_gentop/$my_xlib_u func_mkdir_p "$my_xdir" @@ -3778,22 +5152,23 @@ cd $my_xdir || exit $? darwin_archive=$my_xabs darwin_curdir=`pwd` - darwin_base_archive=`basename "$darwin_archive"` + func_basename "$darwin_archive" + darwin_base_archive=$func_basename_result darwin_arches=`$LIPO -info "$darwin_archive" 2>/dev/null | $GREP Architectures 2>/dev/null || true` if test -n "$darwin_arches"; then darwin_arches=`$ECHO "$darwin_arches" | $SED -e 's/.*are://'` darwin_arch= func_verbose "$darwin_base_archive has multiple architectures $darwin_arches" - for darwin_arch in $darwin_arches ; do - func_mkdir_p "unfat-$$/${darwin_base_archive}-${darwin_arch}" - $LIPO -thin $darwin_arch -output "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}" "${darwin_archive}" - cd "unfat-$$/${darwin_base_archive}-${darwin_arch}" - func_extract_an_archive "`pwd`" "${darwin_base_archive}" + for darwin_arch in $darwin_arches; do + func_mkdir_p "unfat-$$/$darwin_base_archive-$darwin_arch" + $LIPO -thin $darwin_arch -output "unfat-$$/$darwin_base_archive-$darwin_arch/$darwin_base_archive" "$darwin_archive" + cd "unfat-$$/$darwin_base_archive-$darwin_arch" + func_extract_an_archive "`pwd`" "$darwin_base_archive" cd "$darwin_curdir" - $RM "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}" + $RM "unfat-$$/$darwin_base_archive-$darwin_arch/$darwin_base_archive" done # $darwin_arches ## Okay now we've a bunch of thin objects, gotta fatten them up :) - darwin_filelist=`find unfat-$$ -type f -name \*.o -print -o -name \*.lo -print | $SED -e "$basename" | sort -u` + darwin_filelist=`find unfat-$$ -type f -name \*.o -print -o -name \*.lo -print | $SED -e "$sed_basename" | sort -u` darwin_file= darwin_files= for darwin_file in $darwin_filelist; do @@ -3815,7 +5190,7 @@ my_oldobjs="$my_oldobjs "`find $my_xdir -name \*.$objext -print -o -name \*.lo -print | sort | $NL2SP` done - func_extract_archives_result="$my_oldobjs" + func_extract_archives_result=$my_oldobjs } @@ -3830,7 +5205,7 @@ # # ARG is the value that the WRAPPER_SCRIPT_BELONGS_IN_OBJDIR # variable will take. If 'yes', then the emitted script -# will assume that the directory in which it is stored is +# will assume that the directory where it is stored is # the $objdir directory. This is a cygwin/mingw-specific # behavior. func_emit_wrapper () @@ -3841,7 +5216,7 @@ #! $SHELL # $output - temporary wrapper script for $objdir/$outputname -# Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION +# Generated by $PROGRAM (GNU $PACKAGE) $VERSION # # The $output program cannot be directly executed until all the libtool # libraries that it depends on are installed. @@ -3898,9 +5273,9 @@ # Very basic option parsing. These options are (a) specific to # the libtool wrapper, (b) are identical between the wrapper -# /script/ and the wrapper /executable/ which is used only on +# /script/ and the wrapper /executable/ that is used only on # windows platforms, and (c) all begin with the string "--lt-" -# (application programs are unlikely to have options which match +# (application programs are unlikely to have options that match # this pattern). # # There are only two supported options: --lt-debug and @@ -3933,7 +5308,7 @@ # Print the debug banner immediately: if test -n \"\$lt_option_debug\"; then - echo \"${outputname}:${output}:\${LINENO}: libtool wrapper (GNU $PACKAGE$TIMESTAMP) $VERSION\" 1>&2 + echo \"$outputname:$output:\$LINENO: libtool wrapper (GNU $PACKAGE) $VERSION\" 1>&2 fi } @@ -3944,7 +5319,7 @@ lt_dump_args_N=1; for lt_arg do - \$ECHO \"${outputname}:${output}:\${LINENO}: newargv[\$lt_dump_args_N]: \$lt_arg\" + \$ECHO \"$outputname:$output:\$LINENO: newargv[\$lt_dump_args_N]: \$lt_arg\" lt_dump_args_N=\`expr \$lt_dump_args_N + 1\` done } @@ -3958,7 +5333,7 @@ *-*-mingw | *-*-os2* | *-cegcc*) $ECHO "\ if test -n \"\$lt_option_debug\"; then - \$ECHO \"${outputname}:${output}:\${LINENO}: newargv[0]: \$progdir\\\\\$program\" 1>&2 + \$ECHO \"$outputname:$output:\$LINENO: newargv[0]: \$progdir\\\\\$program\" 1>&2 func_lt_dump_args \${1+\"\$@\"} 1>&2 fi exec \"\$progdir\\\\\$program\" \${1+\"\$@\"} @@ -3968,7 +5343,7 @@ *) $ECHO "\ if test -n \"\$lt_option_debug\"; then - \$ECHO \"${outputname}:${output}:\${LINENO}: newargv[0]: \$progdir/\$program\" 1>&2 + \$ECHO \"$outputname:$output:\$LINENO: newargv[0]: \$progdir/\$program\" 1>&2 func_lt_dump_args \${1+\"\$@\"} 1>&2 fi exec \"\$progdir/\$program\" \${1+\"\$@\"} @@ -4043,13 +5418,13 @@ test -n \"\$absdir\" && thisdir=\"\$absdir\" " - if test "$fast_install" = yes; then + if test yes = "$fast_install"; then $ECHO "\ program=lt-'$outputname'$exeext progdir=\"\$thisdir/$objdir\" if test ! -f \"\$progdir/\$program\" || - { file=\`ls -1dt \"\$progdir/\$program\" \"\$progdir/../\$program\" 2>/dev/null | ${SED} 1q\`; \\ + { file=\`ls -1dt \"\$progdir/\$program\" \"\$progdir/../\$program\" 2>/dev/null | $SED 1q\`; \\ test \"X\$file\" != \"X\$progdir/\$program\"; }; then file=\"\$\$-\$program\" @@ -4066,7 +5441,7 @@ if test -n \"\$relink_command\"; then if relink_command_output=\`eval \$relink_command 2>&1\`; then : else - $ECHO \"\$relink_command_output\" >&2 + \$ECHO \"\$relink_command_output\" >&2 $RM \"\$progdir/\$file\" exit 1 fi @@ -4101,7 +5476,7 @@ fi # Export our shlibpath_var if we have one. - if test "$shlibpath_overrides_runpath" = yes && test -n "$shlibpath_var" && test -n "$temp_rpath"; then + if test yes = "$shlibpath_overrides_runpath" && test -n "$shlibpath_var" && test -n "$temp_rpath"; then $ECHO "\ # Add our own library path to $shlibpath_var $shlibpath_var=\"$temp_rpath\$$shlibpath_var\" @@ -4121,7 +5496,7 @@ fi else # The program doesn't exist. - \$ECHO \"\$0: error: \\\`\$progdir/\$program' does not exist\" 1>&2 + \$ECHO \"\$0: error: '\$progdir/\$program' does not exist\" 1>&2 \$ECHO \"This script is just a wrapper for \$program.\" 1>&2 \$ECHO \"See the $PACKAGE documentation for more information.\" 1>&2 exit 1 @@ -4140,7 +5515,7 @@ cat < #include +#define STREQ(s1, s2) (strcmp ((s1), (s2)) == 0) + /* declarations of non-ANSI functions */ -#if defined(__MINGW32__) +#if defined __MINGW32__ # ifdef __STRICT_ANSI__ int _putenv (const char *); # endif -#elif defined(__CYGWIN__) +#elif defined __CYGWIN__ # ifdef __STRICT_ANSI__ char *realpath (const char *, char *); int putenv (char *); int setenv (const char *, const char *, int); # endif -/* #elif defined (other platforms) ... */ +/* #elif defined other_platform || defined ... */ #endif /* portability defines, excluding path handling macros */ -#if defined(_MSC_VER) +#if defined _MSC_VER # define setmode _setmode # define stat _stat # define chmod _chmod # define getcwd _getcwd # define putenv _putenv # define S_IXUSR _S_IEXEC -# ifndef _INTPTR_T_DEFINED -# define _INTPTR_T_DEFINED -# define intptr_t int -# endif -#elif defined(__MINGW32__) +#elif defined __MINGW32__ # define setmode _setmode # define stat _stat # define chmod _chmod # define getcwd _getcwd # define putenv _putenv -#elif defined(__CYGWIN__) +#elif defined __CYGWIN__ # define HAVE_SETENV # define FOPEN_WB "wb" -/* #elif defined (other platforms) ... */ +/* #elif defined other platforms ... */ #endif -#if defined(PATH_MAX) +#if defined PATH_MAX # define LT_PATHMAX PATH_MAX -#elif defined(MAXPATHLEN) +#elif defined MAXPATHLEN # define LT_PATHMAX MAXPATHLEN #else # define LT_PATHMAX 1024 @@ -4234,8 +5607,8 @@ # define PATH_SEPARATOR ':' #endif -#if defined (_WIN32) || defined (__MSDOS__) || defined (__DJGPP__) || \ - defined (__OS2__) +#if defined _WIN32 || defined __MSDOS__ || defined __DJGPP__ || \ + defined __OS2__ # define HAVE_DOS_BASED_FILE_SYSTEM # define FOPEN_WB "wb" # ifndef DIR_SEPARATOR_2 @@ -4268,10 +5641,10 @@ #define XMALLOC(type, num) ((type *) xmalloc ((num) * sizeof(type))) #define XFREE(stale) do { \ - if (stale) { free ((void *) stale); stale = 0; } \ + if (stale) { free (stale); stale = 0; } \ } while (0) -#if defined(LT_DEBUGWRAPPER) +#if defined LT_DEBUGWRAPPER static int lt_debug = 1; #else static int lt_debug = 0; @@ -4300,11 +5673,16 @@ EOF cat < 0) && IS_PATH_SEPARATOR (new_value[len-1])) + size_t len = strlen (new_value); + while ((len > 0) && IS_PATH_SEPARATOR (new_value[len-1])) { - new_value[len-1] = '\0'; + new_value[--len] = '\0'; } lt_setenv (name, new_value); XFREE (new_value); @@ -5082,27 +6460,47 @@ # True if ARG is an import lib, as indicated by $file_magic_cmd func_win32_import_lib_p () { - $opt_debug + $debug_cmd + case `eval $file_magic_cmd \"\$1\" 2>/dev/null | $SED -e 10q` in *import*) : ;; *) false ;; esac } +# func_suncc_cstd_abi +# !!ONLY CALL THIS FOR SUN CC AFTER $compile_command IS FULLY EXPANDED!! +# Several compiler flags select an ABI that is incompatible with the +# Cstd library. Avoid specifying it if any are in CXXFLAGS. +func_suncc_cstd_abi () +{ + $debug_cmd + + case " $compile_command " in + *" -compat=g "*|*\ -std=c++[0-9][0-9]\ *|*" -library=stdcxx4 "*|*" -library=stlport4 "*) + suncc_use_cstd_abi=no + ;; + *) + suncc_use_cstd_abi=yes + ;; + esac +} + # func_mode_link arg... func_mode_link () { - $opt_debug + $debug_cmd + case $host in *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*) # It is impossible to link a dll without this setting, and # we shouldn't force the makefile maintainer to figure out - # which system we are compiling for in order to pass an extra + # what system we are compiling for in order to pass an extra # flag for every libtool invocation. # allow_undefined=no # FIXME: Unfortunately, there are problems with the above when trying - # to make a dll which has undefined symbols, in which case not + # to make a dll that has undefined symbols, in which case not # even a static library is built. For now, we need to specify # -no-undefined on the libtool link line when we can be certain # that all symbols are satisfied, otherwise we get a static library. @@ -5146,10 +6544,11 @@ module=no no_install=no objs= + os2dllname= non_pic_objects= precious_files_regex= prefer_static_libs=no - preload=no + preload=false prev= prevarg= release= @@ -5161,7 +6560,7 @@ vinfo= vinfo_number=no weak_libs= - single_module="${wl}-single_module" + single_module=$wl-single_module func_infer_tag $base_compile # We need to know -static, to get the right output filenames. @@ -5169,15 +6568,15 @@ do case $arg in -shared) - test "$build_libtool_libs" != yes && \ - func_fatal_configuration "can not build a shared library" + test yes != "$build_libtool_libs" \ + && func_fatal_configuration "cannot build a shared library" build_old_libs=no break ;; -all-static | -static | -static-libtool-libs) case $arg in -all-static) - if test "$build_libtool_libs" = yes && test -z "$link_static_flag"; then + if test yes = "$build_libtool_libs" && test -z "$link_static_flag"; then func_warning "complete static linking is impossible in this configuration" fi if test -n "$link_static_flag"; then @@ -5210,7 +6609,7 @@ # Go through the arguments, transforming them on the way. while test "$#" -gt 0; do - arg="$1" + arg=$1 shift func_quote_for_eval "$arg" qarg=$func_quote_for_eval_unquoted_result @@ -5227,21 +6626,21 @@ case $prev in bindir) - bindir="$arg" + bindir=$arg prev= continue ;; dlfiles|dlprefiles) - if test "$preload" = no; then + $preload || { # Add the symbol object into the linking commands. func_append compile_command " @SYMFILE@" func_append finalize_command " @SYMFILE@" - preload=yes - fi + preload=: + } case $arg in *.la | *.lo) ;; # We handle these cases below. force) - if test "$dlself" = no; then + if test no = "$dlself"; then dlself=needless export_dynamic=yes fi @@ -5249,9 +6648,9 @@ continue ;; self) - if test "$prev" = dlprefiles; then + if test dlprefiles = "$prev"; then dlself=yes - elif test "$prev" = dlfiles && test "$dlopen_self" != yes; then + elif test dlfiles = "$prev" && test yes != "$dlopen_self"; then dlself=yes else dlself=needless @@ -5261,7 +6660,7 @@ continue ;; *) - if test "$prev" = dlfiles; then + if test dlfiles = "$prev"; then func_append dlfiles " $arg" else func_append dlprefiles " $arg" @@ -5272,14 +6671,14 @@ esac ;; expsyms) - export_symbols="$arg" + export_symbols=$arg test -f "$arg" \ - || func_fatal_error "symbol file \`$arg' does not exist" + || func_fatal_error "symbol file '$arg' does not exist" prev= continue ;; expsyms_regex) - export_symbols_regex="$arg" + export_symbols_regex=$arg prev= continue ;; @@ -5297,7 +6696,13 @@ continue ;; inst_prefix) - inst_prefix_dir="$arg" + inst_prefix_dir=$arg + prev= + continue + ;; + mllvm) + # Clang does not use LLVM to link, so we can simply discard any + # '-mllvm $arg' options when doing the link step. prev= continue ;; @@ -5321,21 +6726,21 @@ if test -z "$pic_object" || test -z "$non_pic_object" || - test "$pic_object" = none && - test "$non_pic_object" = none; then - func_fatal_error "cannot find name of object for \`$arg'" + test none = "$pic_object" && + test none = "$non_pic_object"; then + func_fatal_error "cannot find name of object for '$arg'" fi # Extract subdirectory from the argument. func_dirname "$arg" "/" "" - xdir="$func_dirname_result" + xdir=$func_dirname_result - if test "$pic_object" != none; then + if test none != "$pic_object"; then # Prepend the subdirectory the object is found in. - pic_object="$xdir$pic_object" + pic_object=$xdir$pic_object - if test "$prev" = dlfiles; then - if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then + if test dlfiles = "$prev"; then + if test yes = "$build_libtool_libs" && test yes = "$dlopen_support"; then func_append dlfiles " $pic_object" prev= continue @@ -5346,7 +6751,7 @@ fi # CHECK ME: I think I busted this. -Ossama - if test "$prev" = dlprefiles; then + if test dlprefiles = "$prev"; then # Preload the old-style object. func_append dlprefiles " $pic_object" prev= @@ -5354,23 +6759,23 @@ # A PIC object. func_append libobjs " $pic_object" - arg="$pic_object" + arg=$pic_object fi # Non-PIC object. - if test "$non_pic_object" != none; then + if test none != "$non_pic_object"; then # Prepend the subdirectory the object is found in. - non_pic_object="$xdir$non_pic_object" + non_pic_object=$xdir$non_pic_object # A standard non-PIC object func_append non_pic_objects " $non_pic_object" - if test -z "$pic_object" || test "$pic_object" = none ; then - arg="$non_pic_object" + if test -z "$pic_object" || test none = "$pic_object"; then + arg=$non_pic_object fi else # If the PIC object exists, use it instead. # $xdir was prepended to $pic_object above. - non_pic_object="$pic_object" + non_pic_object=$pic_object func_append non_pic_objects " $non_pic_object" fi else @@ -5378,7 +6783,7 @@ if $opt_dry_run; then # Extract subdirectory from the argument. func_dirname "$arg" "/" "" - xdir="$func_dirname_result" + xdir=$func_dirname_result func_lo2o "$arg" pic_object=$xdir$objdir/$func_lo2o_result @@ -5386,24 +6791,29 @@ func_append libobjs " $pic_object" func_append non_pic_objects " $non_pic_object" else - func_fatal_error "\`$arg' is not a valid libtool object" + func_fatal_error "'$arg' is not a valid libtool object" fi fi done else - func_fatal_error "link input file \`$arg' does not exist" + func_fatal_error "link input file '$arg' does not exist" fi arg=$save_arg prev= continue ;; + os2dllname) + os2dllname=$arg + prev= + continue + ;; precious_regex) - precious_files_regex="$arg" + precious_files_regex=$arg prev= continue ;; release) - release="-$arg" + release=-$arg prev= continue ;; @@ -5415,7 +6825,7 @@ func_fatal_error "only absolute run-paths are allowed" ;; esac - if test "$prev" = rpath; then + if test rpath = "$prev"; then case "$rpath " in *" $arg "*) ;; *) func_append rpath " $arg" ;; @@ -5430,7 +6840,7 @@ continue ;; shrext) - shrext_cmds="$arg" + shrext_cmds=$arg prev= continue ;; @@ -5470,7 +6880,7 @@ esac fi # test -n "$prev" - prevarg="$arg" + prevarg=$arg case $arg in -all-static) @@ -5484,7 +6894,7 @@ -allow-undefined) # FIXME: remove this flag sometime in the future. - func_fatal_error "\`-allow-undefined' must not be used because it is the default" + func_fatal_error "'-allow-undefined' must not be used because it is the default" ;; -avoid-version) @@ -5516,7 +6926,7 @@ if test -n "$export_symbols" || test -n "$export_symbols_regex"; then func_fatal_error "more than one -exported-symbols argument is not allowed" fi - if test "X$arg" = "X-export-symbols"; then + if test X-export-symbols = "X$arg"; then prev=expsyms else prev=expsyms_regex @@ -5550,9 +6960,9 @@ func_stripname "-L" '' "$arg" if test -z "$func_stripname_result"; then if test "$#" -gt 0; then - func_fatal_error "require no space between \`-L' and \`$1'" + func_fatal_error "require no space between '-L' and '$1'" else - func_fatal_error "need path for \`-L' option" + func_fatal_error "need path for '-L' option" fi fi func_resolve_sysroot "$func_stripname_result" @@ -5563,8 +6973,8 @@ *) absdir=`cd "$dir" && pwd` test -z "$absdir" && \ - func_fatal_error "cannot determine absolute directory name of \`$dir'" - dir="$absdir" + func_fatal_error "cannot determine absolute directory name of '$dir'" + dir=$absdir ;; esac case "$deplibs " in @@ -5599,7 +7009,7 @@ ;; -l*) - if test "X$arg" = "X-lc" || test "X$arg" = "X-lm"; then + if test X-lc = "X$arg" || test X-lm = "X$arg"; then case $host in *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-beos* | *-cegcc* | *-*-haiku*) # These systems don't actually have a C or math library (as such) @@ -5607,11 +7017,11 @@ ;; *-*-os2*) # These systems don't actually have a C library (as such) - test "X$arg" = "X-lc" && continue + test X-lc = "X$arg" && continue ;; - *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*) + *-*-openbsd* | *-*-freebsd* | *-*-dragonfly* | *-*-bitrig*) # Do not include libc due to us having libc/libc_r. - test "X$arg" = "X-lc" && continue + test X-lc = "X$arg" && continue ;; *-*-rhapsody* | *-*-darwin1.[012]) # Rhapsody C and math libraries are in the System framework @@ -5620,16 +7030,16 @@ ;; *-*-sco3.2v5* | *-*-sco5v6*) # Causes problems with __ctype - test "X$arg" = "X-lc" && continue + test X-lc = "X$arg" && continue ;; *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*) # Compiler inserts libc in the correct place for threads to work - test "X$arg" = "X-lc" && continue + test X-lc = "X$arg" && continue ;; esac - elif test "X$arg" = "X-lc_r"; then + elif test X-lc_r = "X$arg"; then case $host in - *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*) + *-*-openbsd* | *-*-freebsd* | *-*-dragonfly* | *-*-bitrig*) # Do not include libc_r directly, use -pthread flag. continue ;; @@ -5639,6 +7049,11 @@ continue ;; + -mllvm) + prev=mllvm + continue + ;; + -module) module=yes continue @@ -5668,7 +7083,7 @@ ;; -multi_module) - single_module="${wl}-multi_module" + single_module=$wl-multi_module continue ;; @@ -5682,8 +7097,8 @@ *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-darwin* | *-cegcc*) # The PATH hackery in wrapper scripts is required on Windows # and Darwin in order for the loader to find any dlls it needs. - func_warning "\`-no-install' is ignored for $host" - func_warning "assuming \`-no-fast-install' instead" + func_warning "'-no-install' is ignored for $host" + func_warning "assuming '-no-fast-install' instead" fast_install=no ;; *) no_install=yes ;; @@ -5701,6 +7116,11 @@ continue ;; + -os2dllname) + prev=os2dllname + continue + ;; + -o) prev=output ;; -precious-files-regex) @@ -5788,14 +7208,14 @@ func_stripname '-Wc,' '' "$arg" args=$func_stripname_result arg= - save_ifs="$IFS"; IFS=',' + save_ifs=$IFS; IFS=, for flag in $args; do - IFS="$save_ifs" + IFS=$save_ifs func_quote_for_eval "$flag" func_append arg " $func_quote_for_eval_result" func_append compiler_flags " $func_quote_for_eval_result" done - IFS="$save_ifs" + IFS=$save_ifs func_stripname ' ' '' "$arg" arg=$func_stripname_result ;; @@ -5804,15 +7224,15 @@ func_stripname '-Wl,' '' "$arg" args=$func_stripname_result arg= - save_ifs="$IFS"; IFS=',' + save_ifs=$IFS; IFS=, for flag in $args; do - IFS="$save_ifs" + IFS=$save_ifs func_quote_for_eval "$flag" func_append arg " $wl$func_quote_for_eval_result" func_append compiler_flags " $wl$func_quote_for_eval_result" func_append linker_flags " $func_quote_for_eval_result" done - IFS="$save_ifs" + IFS=$save_ifs func_stripname ' ' '' "$arg" arg=$func_stripname_result ;; @@ -5835,7 +7255,7 @@ # -msg_* for osf cc -msg_*) func_quote_for_eval "$arg" - arg="$func_quote_for_eval_result" + arg=$func_quote_for_eval_result ;; # Flags to be passed through unchanged, with rationale: @@ -5847,25 +7267,49 @@ # -m*, -t[45]*, -txscale* architecture-specific flags for GCC # -F/path path to uninstalled frameworks, gcc on darwin # -p, -pg, --coverage, -fprofile-* profiling flags for GCC + # -fstack-protector* stack protector flags for GCC # @file GCC response files # -tp=* Portland pgcc target processor selection # --sysroot=* for sysroot support - # -O*, -flto*, -fwhopr*, -fuse-linker-plugin GCC link-time optimization + # -O*, -g*, -flto*, -fwhopr*, -fuse-linker-plugin GCC link-time optimization + # -specs=* GCC specs files + # -stdlib=* select c++ std lib with clang + # -fsanitize=* Clang/GCC memory and address sanitizer -64|-mips[0-9]|-r[0-9][0-9]*|-xarch=*|-xtarget=*|+DA*|+DD*|-q*|-m*| \ -t[45]*|-txscale*|-p|-pg|--coverage|-fprofile-*|-F*|@*|-tp=*|--sysroot=*| \ - -O*|-flto*|-fwhopr*|-fuse-linker-plugin) + -O*|-g*|-flto*|-fwhopr*|-fuse-linker-plugin|-fstack-protector*|-stdlib=*| \ + -specs=*|-fsanitize=*) func_quote_for_eval "$arg" - arg="$func_quote_for_eval_result" + arg=$func_quote_for_eval_result func_append compile_command " $arg" func_append finalize_command " $arg" func_append compiler_flags " $arg" continue ;; + -Z*) + if test os2 = "`expr $host : '.*\(os2\)'`"; then + # OS/2 uses -Zxxx to specify OS/2-specific options + compiler_flags="$compiler_flags $arg" + func_append compile_command " $arg" + func_append finalize_command " $arg" + case $arg in + -Zlinker | -Zstack) + prev=xcompiler + ;; + esac + continue + else + # Otherwise treat like 'Some other compiler flag' below + func_quote_for_eval "$arg" + arg=$func_quote_for_eval_result + fi + ;; + # Some other compiler flag. -* | +*) func_quote_for_eval "$arg" - arg="$func_quote_for_eval_result" + arg=$func_quote_for_eval_result ;; *.$objext) @@ -5886,21 +7330,21 @@ if test -z "$pic_object" || test -z "$non_pic_object" || - test "$pic_object" = none && - test "$non_pic_object" = none; then - func_fatal_error "cannot find name of object for \`$arg'" + test none = "$pic_object" && + test none = "$non_pic_object"; then + func_fatal_error "cannot find name of object for '$arg'" fi # Extract subdirectory from the argument. func_dirname "$arg" "/" "" - xdir="$func_dirname_result" + xdir=$func_dirname_result - if test "$pic_object" != none; then + test none = "$pic_object" || { # Prepend the subdirectory the object is found in. - pic_object="$xdir$pic_object" + pic_object=$xdir$pic_object - if test "$prev" = dlfiles; then - if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then + if test dlfiles = "$prev"; then + if test yes = "$build_libtool_libs" && test yes = "$dlopen_support"; then func_append dlfiles " $pic_object" prev= continue @@ -5911,7 +7355,7 @@ fi # CHECK ME: I think I busted this. -Ossama - if test "$prev" = dlprefiles; then + if test dlprefiles = "$prev"; then # Preload the old-style object. func_append dlprefiles " $pic_object" prev= @@ -5919,23 +7363,23 @@ # A PIC object. func_append libobjs " $pic_object" - arg="$pic_object" - fi + arg=$pic_object + } # Non-PIC object. - if test "$non_pic_object" != none; then + if test none != "$non_pic_object"; then # Prepend the subdirectory the object is found in. - non_pic_object="$xdir$non_pic_object" + non_pic_object=$xdir$non_pic_object # A standard non-PIC object func_append non_pic_objects " $non_pic_object" - if test -z "$pic_object" || test "$pic_object" = none ; then - arg="$non_pic_object" + if test -z "$pic_object" || test none = "$pic_object"; then + arg=$non_pic_object fi else # If the PIC object exists, use it instead. # $xdir was prepended to $pic_object above. - non_pic_object="$pic_object" + non_pic_object=$pic_object func_append non_pic_objects " $non_pic_object" fi else @@ -5943,7 +7387,7 @@ if $opt_dry_run; then # Extract subdirectory from the argument. func_dirname "$arg" "/" "" - xdir="$func_dirname_result" + xdir=$func_dirname_result func_lo2o "$arg" pic_object=$xdir$objdir/$func_lo2o_result @@ -5951,7 +7395,7 @@ func_append libobjs " $pic_object" func_append non_pic_objects " $non_pic_object" else - func_fatal_error "\`$arg' is not a valid libtool object" + func_fatal_error "'$arg' is not a valid libtool object" fi fi ;; @@ -5967,11 +7411,11 @@ # A libtool-controlled library. func_resolve_sysroot "$arg" - if test "$prev" = dlfiles; then + if test dlfiles = "$prev"; then # This library was specified with -dlopen. func_append dlfiles " $func_resolve_sysroot_result" prev= - elif test "$prev" = dlprefiles; then + elif test dlprefiles = "$prev"; then # The library was specified with -dlpreopen. func_append dlprefiles " $func_resolve_sysroot_result" prev= @@ -5986,7 +7430,7 @@ # Unknown arguments in both finalize_command and compile_command need # to be aesthetically quoted because they are evaled later. func_quote_for_eval "$arg" - arg="$func_quote_for_eval_result" + arg=$func_quote_for_eval_result ;; esac # arg @@ -5998,9 +7442,9 @@ done # argument parsing loop test -n "$prev" && \ - func_fatal_help "the \`$prevarg' option requires an argument" + func_fatal_help "the '$prevarg' option requires an argument" - if test "$export_dynamic" = yes && test -n "$export_dynamic_flag_spec"; then + if test yes = "$export_dynamic" && test -n "$export_dynamic_flag_spec"; then eval arg=\"$export_dynamic_flag_spec\" func_append compile_command " $arg" func_append finalize_command " $arg" @@ -6009,20 +7453,23 @@ oldlibs= # calculate the name of the file, without its directory func_basename "$output" - outputname="$func_basename_result" - libobjs_save="$libobjs" + outputname=$func_basename_result + libobjs_save=$libobjs if test -n "$shlibpath_var"; then # get the directories listed in $shlibpath_var - eval shlib_search_path=\`\$ECHO \"\${$shlibpath_var}\" \| \$SED \'s/:/ /g\'\` + eval shlib_search_path=\`\$ECHO \"\$$shlibpath_var\" \| \$SED \'s/:/ /g\'\` else shlib_search_path= fi eval sys_lib_search_path=\"$sys_lib_search_path_spec\" eval sys_lib_dlsearch_path=\"$sys_lib_dlsearch_path_spec\" + # Definition is injected by LT_CONFIG during libtool generation. + func_munge_path_list sys_lib_dlsearch_path "$LT_SYS_LIBRARY_PATH" + func_dirname "$output" "/" "" - output_objdir="$func_dirname_result$objdir" + output_objdir=$func_dirname_result$objdir func_to_tool_file "$output_objdir/" tool_output_objdir=$func_to_tool_file_result # Create the object directory. @@ -6045,7 +7492,7 @@ # Find all interdependent deplibs by searching for libraries # that are linked more than once (e.g. -la -lb -la) for deplib in $deplibs; do - if $opt_preserve_dup_deps ; then + if $opt_preserve_dup_deps; then case "$libs " in *" $deplib "*) func_append specialdeplibs " $deplib" ;; esac @@ -6053,7 +7500,7 @@ func_append libs " $deplib" done - if test "$linkmode" = lib; then + if test lib = "$linkmode"; then libs="$predeps $libs $compiler_lib_search_path $postdeps" # Compute libraries that are listed more than once in $predeps @@ -6085,7 +7532,7 @@ case $file in *.la) ;; *) - func_fatal_help "libraries can \`-dlopen' only libtool libraries: $file" + func_fatal_help "libraries can '-dlopen' only libtool libraries: $file" ;; esac done @@ -6093,7 +7540,7 @@ prog) compile_deplibs= finalize_deplibs= - alldeplibs=no + alldeplibs=false newdlfiles= newdlprefiles= passes="conv scan dlopen dlpreopen link" @@ -6105,32 +7552,32 @@ for pass in $passes; do # The preopen pass in lib mode reverses $deplibs; put it back here # so that -L comes before libs that need it for instance... - if test "$linkmode,$pass" = "lib,link"; then + if test lib,link = "$linkmode,$pass"; then ## FIXME: Find the place where the list is rebuilt in the wrong ## order, and fix it there properly tmp_deplibs= for deplib in $deplibs; do tmp_deplibs="$deplib $tmp_deplibs" done - deplibs="$tmp_deplibs" + deplibs=$tmp_deplibs fi - if test "$linkmode,$pass" = "lib,link" || - test "$linkmode,$pass" = "prog,scan"; then - libs="$deplibs" + if test lib,link = "$linkmode,$pass" || + test prog,scan = "$linkmode,$pass"; then + libs=$deplibs deplibs= fi - if test "$linkmode" = prog; then + if test prog = "$linkmode"; then case $pass in - dlopen) libs="$dlfiles" ;; - dlpreopen) libs="$dlprefiles" ;; + dlopen) libs=$dlfiles ;; + dlpreopen) libs=$dlprefiles ;; link) libs="$deplibs %DEPLIBS%" test "X$link_all_deplibs" != Xno && libs="$libs $dependency_libs" ;; esac fi - if test "$linkmode,$pass" = "lib,dlpreopen"; then + if test lib,dlpreopen = "$linkmode,$pass"; then # Collect and forward deplibs of preopened libtool libs for lib in $dlprefiles; do # Ignore non-libtool-libs @@ -6151,26 +7598,26 @@ esac done done - libs="$dlprefiles" + libs=$dlprefiles fi - if test "$pass" = dlopen; then + if test dlopen = "$pass"; then # Collect dlpreopened libraries - save_deplibs="$deplibs" + save_deplibs=$deplibs deplibs= fi for deplib in $libs; do lib= - found=no + found=false case $deplib in -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe \ |-threads|-fopenmp|-openmp|-mp|-xopenmp|-omp|-qsmp=*) - if test "$linkmode,$pass" = "prog,link"; then + if test prog,link = "$linkmode,$pass"; then compile_deplibs="$deplib $compile_deplibs" finalize_deplibs="$deplib $finalize_deplibs" else func_append compiler_flags " $deplib" - if test "$linkmode" = lib ; then + if test lib = "$linkmode"; then case "$new_inherited_linker_flags " in *" $deplib "*) ;; * ) func_append new_inherited_linker_flags " $deplib" ;; @@ -6180,13 +7627,13 @@ continue ;; -l*) - if test "$linkmode" != lib && test "$linkmode" != prog; then - func_warning "\`-l' is ignored for archives/objects" + if test lib != "$linkmode" && test prog != "$linkmode"; then + func_warning "'-l' is ignored for archives/objects" continue fi func_stripname '-l' '' "$deplib" name=$func_stripname_result - if test "$linkmode" = lib; then + if test lib = "$linkmode"; then searchdirs="$newlib_search_path $lib_search_path $compiler_lib_search_dirs $sys_lib_search_path $shlib_search_path" else searchdirs="$newlib_search_path $lib_search_path $sys_lib_search_path $shlib_search_path" @@ -6194,31 +7641,22 @@ for searchdir in $searchdirs; do for search_ext in .la $std_shrext .so .a; do # Search the libtool library - lib="$searchdir/lib${name}${search_ext}" + lib=$searchdir/lib$name$search_ext if test -f "$lib"; then - if test "$search_ext" = ".la"; then - found=yes + if test .la = "$search_ext"; then + found=: else - found=no + found=false fi break 2 fi done done - if test "$found" != yes; then - # deplib doesn't seem to be a libtool library - if test "$linkmode,$pass" = "prog,link"; then - compile_deplibs="$deplib $compile_deplibs" - finalize_deplibs="$deplib $finalize_deplibs" - else - deplibs="$deplib $deplibs" - test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs" - fi - continue - else # deplib is a libtool library + if $found; then + # deplib is a libtool library # If $allow_libtool_libs_with_static_runtimes && $deplib is a stdlib, # We need to do some special things here, and not later. - if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then + if test yes = "$allow_libtool_libs_with_static_runtimes"; then case " $predeps $postdeps " in *" $deplib "*) if func_lalib_p "$lib"; then @@ -6226,19 +7664,19 @@ old_library= func_source "$lib" for l in $old_library $library_names; do - ll="$l" + ll=$l done - if test "X$ll" = "X$old_library" ; then # only static version available - found=no + if test "X$ll" = "X$old_library"; then # only static version available + found=false func_dirname "$lib" "" "." - ladir="$func_dirname_result" + ladir=$func_dirname_result lib=$ladir/$old_library - if test "$linkmode,$pass" = "prog,link"; then + if test prog,link = "$linkmode,$pass"; then compile_deplibs="$deplib $compile_deplibs" finalize_deplibs="$deplib $finalize_deplibs" else deplibs="$deplib $deplibs" - test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs" + test lib = "$linkmode" && newdependency_libs="$deplib $newdependency_libs" fi continue fi @@ -6247,15 +7685,25 @@ *) ;; esac fi + else + # deplib doesn't seem to be a libtool library + if test prog,link = "$linkmode,$pass"; then + compile_deplibs="$deplib $compile_deplibs" + finalize_deplibs="$deplib $finalize_deplibs" + else + deplibs="$deplib $deplibs" + test lib = "$linkmode" && newdependency_libs="$deplib $newdependency_libs" + fi + continue fi ;; # -l *.ltframework) - if test "$linkmode,$pass" = "prog,link"; then + if test prog,link = "$linkmode,$pass"; then compile_deplibs="$deplib $compile_deplibs" finalize_deplibs="$deplib $finalize_deplibs" else deplibs="$deplib $deplibs" - if test "$linkmode" = lib ; then + if test lib = "$linkmode"; then case "$new_inherited_linker_flags " in *" $deplib "*) ;; * ) func_append new_inherited_linker_flags " $deplib" ;; @@ -6268,18 +7716,18 @@ case $linkmode in lib) deplibs="$deplib $deplibs" - test "$pass" = conv && continue + test conv = "$pass" && continue newdependency_libs="$deplib $newdependency_libs" func_stripname '-L' '' "$deplib" func_resolve_sysroot "$func_stripname_result" func_append newlib_search_path " $func_resolve_sysroot_result" ;; prog) - if test "$pass" = conv; then + if test conv = "$pass"; then deplibs="$deplib $deplibs" continue fi - if test "$pass" = scan; then + if test scan = "$pass"; then deplibs="$deplib $deplibs" else compile_deplibs="$deplib $compile_deplibs" @@ -6290,13 +7738,13 @@ func_append newlib_search_path " $func_resolve_sysroot_result" ;; *) - func_warning "\`-L' is ignored for archives/objects" + func_warning "'-L' is ignored for archives/objects" ;; esac # linkmode continue ;; # -L -R*) - if test "$pass" = link; then + if test link = "$pass"; then func_stripname '-R' '' "$deplib" func_resolve_sysroot "$func_stripname_result" dir=$func_resolve_sysroot_result @@ -6314,7 +7762,7 @@ lib=$func_resolve_sysroot_result ;; *.$libext) - if test "$pass" = conv; then + if test conv = "$pass"; then deplibs="$deplib $deplibs" continue fi @@ -6325,21 +7773,26 @@ case " $dlpreconveniencelibs " in *" $deplib "*) ;; *) - valid_a_lib=no + valid_a_lib=false case $deplibs_check_method in match_pattern*) set dummy $deplibs_check_method; shift match_pattern_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"` if eval "\$ECHO \"$deplib\"" 2>/dev/null | $SED 10q \ | $EGREP "$match_pattern_regex" > /dev/null; then - valid_a_lib=yes + valid_a_lib=: fi ;; pass_all) - valid_a_lib=yes + valid_a_lib=: ;; esac - if test "$valid_a_lib" != yes; then + if $valid_a_lib; then + echo + $ECHO "*** Warning: Linking the shared library $output against the" + $ECHO "*** static library $deplib is not portable!" + deplibs="$deplib $deplibs" + else echo $ECHO "*** Warning: Trying to link with static lib archive $deplib." echo "*** I have the capability to make that library automatically link in when" @@ -6347,18 +7800,13 @@ echo "*** shared version of the library, which you do not appear to have" echo "*** because the file extensions .$libext of this argument makes me believe" echo "*** that it is just a static archive that I should not use here." - else - echo - $ECHO "*** Warning: Linking the shared library $output against the" - $ECHO "*** static library $deplib is not portable!" - deplibs="$deplib $deplibs" fi ;; esac continue ;; prog) - if test "$pass" != link; then + if test link != "$pass"; then deplibs="$deplib $deplibs" else compile_deplibs="$deplib $compile_deplibs" @@ -6369,10 +7817,10 @@ esac # linkmode ;; # *.$libext *.lo | *.$objext) - if test "$pass" = conv; then + if test conv = "$pass"; then deplibs="$deplib $deplibs" - elif test "$linkmode" = prog; then - if test "$pass" = dlpreopen || test "$dlopen_support" != yes || test "$build_libtool_libs" = no; then + elif test prog = "$linkmode"; then + if test dlpreopen = "$pass" || test yes != "$dlopen_support" || test no = "$build_libtool_libs"; then # If there is no dlopen support or we're linking statically, # we need to preload. func_append newdlprefiles " $deplib" @@ -6385,22 +7833,20 @@ continue ;; %DEPLIBS%) - alldeplibs=yes + alldeplibs=: continue ;; esac # case $deplib - if test "$found" = yes || test -f "$lib"; then : - else - func_fatal_error "cannot find the library \`$lib' or unhandled argument \`$deplib'" - fi + $found || test -f "$lib" \ + || func_fatal_error "cannot find the library '$lib' or unhandled argument '$deplib'" # Check to see that this really is a libtool archive. func_lalib_unsafe_p "$lib" \ - || func_fatal_error "\`$lib' is not a valid libtool archive" + || func_fatal_error "'$lib' is not a valid libtool archive" func_dirname "$lib" "" "." - ladir="$func_dirname_result" + ladir=$func_dirname_result dlname= dlopen= @@ -6430,19 +7876,19 @@ done fi dependency_libs=`$ECHO " $dependency_libs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` - if test "$linkmode,$pass" = "lib,link" || - test "$linkmode,$pass" = "prog,scan" || - { test "$linkmode" != prog && test "$linkmode" != lib; }; then + if test lib,link = "$linkmode,$pass" || + test prog,scan = "$linkmode,$pass" || + { test prog != "$linkmode" && test lib != "$linkmode"; }; then test -n "$dlopen" && func_append dlfiles " $dlopen" test -n "$dlpreopen" && func_append dlprefiles " $dlpreopen" fi - if test "$pass" = conv; then + if test conv = "$pass"; then # Only check for convenience libraries deplibs="$lib $deplibs" if test -z "$libdir"; then if test -z "$old_library"; then - func_fatal_error "cannot find name of link library for \`$lib'" + func_fatal_error "cannot find name of link library for '$lib'" fi # It is a libtool convenience library, so add in its objects. func_append convenience " $ladir/$objdir/$old_library" @@ -6450,15 +7896,15 @@ tmp_libs= for deplib in $dependency_libs; do deplibs="$deplib $deplibs" - if $opt_preserve_dup_deps ; then + if $opt_preserve_dup_deps; then case "$tmp_libs " in *" $deplib "*) func_append specialdeplibs " $deplib" ;; esac fi func_append tmp_libs " $deplib" done - elif test "$linkmode" != prog && test "$linkmode" != lib; then - func_fatal_error "\`$lib' is not a convenience library" + elif test prog != "$linkmode" && test lib != "$linkmode"; then + func_fatal_error "'$lib' is not a convenience library" fi continue fi # $pass = conv @@ -6467,26 +7913,26 @@ # Get the name of the library we link against. linklib= if test -n "$old_library" && - { test "$prefer_static_libs" = yes || - test "$prefer_static_libs,$installed" = "built,no"; }; then + { test yes = "$prefer_static_libs" || + test built,no = "$prefer_static_libs,$installed"; }; then linklib=$old_library else for l in $old_library $library_names; do - linklib="$l" + linklib=$l done fi if test -z "$linklib"; then - func_fatal_error "cannot find name of link library for \`$lib'" + func_fatal_error "cannot find name of link library for '$lib'" fi # This library was specified with -dlopen. - if test "$pass" = dlopen; then - if test -z "$libdir"; then - func_fatal_error "cannot -dlopen a convenience library: \`$lib'" - fi + if test dlopen = "$pass"; then + test -z "$libdir" \ + && func_fatal_error "cannot -dlopen a convenience library: '$lib'" if test -z "$dlname" || - test "$dlopen_support" != yes || - test "$build_libtool_libs" = no; then + test yes != "$dlopen_support" || + test no = "$build_libtool_libs" + then # If there is no dlname, no dlopen support or we're linking # statically, we need to preload. We also need to preload any # dependent libraries so libltdl's deplib preloader doesn't @@ -6500,40 +7946,40 @@ # We need an absolute path. case $ladir in - [\\/]* | [A-Za-z]:[\\/]*) abs_ladir="$ladir" ;; + [\\/]* | [A-Za-z]:[\\/]*) abs_ladir=$ladir ;; *) abs_ladir=`cd "$ladir" && pwd` if test -z "$abs_ladir"; then - func_warning "cannot determine absolute directory name of \`$ladir'" + func_warning "cannot determine absolute directory name of '$ladir'" func_warning "passing it literally to the linker, although it might fail" - abs_ladir="$ladir" + abs_ladir=$ladir fi ;; esac func_basename "$lib" - laname="$func_basename_result" + laname=$func_basename_result # Find the relevant object directory and library name. - if test "X$installed" = Xyes; then + if test yes = "$installed"; then if test ! -f "$lt_sysroot$libdir/$linklib" && test -f "$abs_ladir/$linklib"; then - func_warning "library \`$lib' was moved." - dir="$ladir" - absdir="$abs_ladir" - libdir="$abs_ladir" + func_warning "library '$lib' was moved." + dir=$ladir + absdir=$abs_ladir + libdir=$abs_ladir else - dir="$lt_sysroot$libdir" - absdir="$lt_sysroot$libdir" + dir=$lt_sysroot$libdir + absdir=$lt_sysroot$libdir fi - test "X$hardcode_automatic" = Xyes && avoidtemprpath=yes + test yes = "$hardcode_automatic" && avoidtemprpath=yes else if test ! -f "$ladir/$objdir/$linklib" && test -f "$abs_ladir/$linklib"; then - dir="$ladir" - absdir="$abs_ladir" + dir=$ladir + absdir=$abs_ladir # Remove this search path later func_append notinst_path " $abs_ladir" else - dir="$ladir/$objdir" - absdir="$abs_ladir/$objdir" + dir=$ladir/$objdir + absdir=$abs_ladir/$objdir # Remove this search path later func_append notinst_path " $abs_ladir" fi @@ -6542,11 +7988,11 @@ name=$func_stripname_result # This library was specified with -dlpreopen. - if test "$pass" = dlpreopen; then - if test -z "$libdir" && test "$linkmode" = prog; then - func_fatal_error "only libraries may -dlpreopen a convenience library: \`$lib'" + if test dlpreopen = "$pass"; then + if test -z "$libdir" && test prog = "$linkmode"; then + func_fatal_error "only libraries may -dlpreopen a convenience library: '$lib'" fi - case "$host" in + case $host in # special handling for platforms with PE-DLLs. *cygwin* | *mingw* | *cegcc* ) # Linker will automatically link against shared library if both @@ -6590,9 +8036,9 @@ if test -z "$libdir"; then # Link the convenience library - if test "$linkmode" = lib; then + if test lib = "$linkmode"; then deplibs="$dir/$old_library $deplibs" - elif test "$linkmode,$pass" = "prog,link"; then + elif test prog,link = "$linkmode,$pass"; then compile_deplibs="$dir/$old_library $compile_deplibs" finalize_deplibs="$dir/$old_library $finalize_deplibs" else @@ -6602,14 +8048,14 @@ fi - if test "$linkmode" = prog && test "$pass" != link; then + if test prog = "$linkmode" && test link != "$pass"; then func_append newlib_search_path " $ladir" deplibs="$lib $deplibs" - linkalldeplibs=no - if test "$link_all_deplibs" != no || test -z "$library_names" || - test "$build_libtool_libs" = no; then - linkalldeplibs=yes + linkalldeplibs=false + if test no != "$link_all_deplibs" || test -z "$library_names" || + test no = "$build_libtool_libs"; then + linkalldeplibs=: fi tmp_libs= @@ -6621,14 +8067,14 @@ ;; esac # Need to link against all dependency_libs? - if test "$linkalldeplibs" = yes; then + if $linkalldeplibs; then deplibs="$deplib $deplibs" else # Need to hardcode shared library paths # or/and link against static libraries newdependency_libs="$deplib $newdependency_libs" fi - if $opt_preserve_dup_deps ; then + if $opt_preserve_dup_deps; then case "$tmp_libs " in *" $deplib "*) func_append specialdeplibs " $deplib" ;; esac @@ -6638,15 +8084,15 @@ continue fi # $linkmode = prog... - if test "$linkmode,$pass" = "prog,link"; then + if test prog,link = "$linkmode,$pass"; then if test -n "$library_names" && - { { test "$prefer_static_libs" = no || - test "$prefer_static_libs,$installed" = "built,yes"; } || + { { test no = "$prefer_static_libs" || + test built,yes = "$prefer_static_libs,$installed"; } || test -z "$old_library"; }; then # We need to hardcode the library path - if test -n "$shlibpath_var" && test -z "$avoidtemprpath" ; then + if test -n "$shlibpath_var" && test -z "$avoidtemprpath"; then # Make sure the rpath contains only unique directories. - case "$temp_rpath:" in + case $temp_rpath: in *"$absdir:"*) ;; *) func_append temp_rpath "$absdir:" ;; esac @@ -6675,9 +8121,9 @@ esac fi # $linkmode,$pass = prog,link... - if test "$alldeplibs" = yes && - { test "$deplibs_check_method" = pass_all || - { test "$build_libtool_libs" = yes && + if $alldeplibs && + { test pass_all = "$deplibs_check_method" || + { test yes = "$build_libtool_libs" && test -n "$library_names"; }; }; then # We only need to search for static libraries continue @@ -6686,19 +8132,19 @@ link_static=no # Whether the deplib will be linked statically use_static_libs=$prefer_static_libs - if test "$use_static_libs" = built && test "$installed" = yes; then + if test built = "$use_static_libs" && test yes = "$installed"; then use_static_libs=no fi if test -n "$library_names" && - { test "$use_static_libs" = no || test -z "$old_library"; }; then + { test no = "$use_static_libs" || test -z "$old_library"; }; then case $host in - *cygwin* | *mingw* | *cegcc*) + *cygwin* | *mingw* | *cegcc* | *os2*) # No point in relinking DLLs because paths are not encoded func_append notinst_deplibs " $lib" need_relink=no ;; *) - if test "$installed" = no; then + if test no = "$installed"; then func_append notinst_deplibs " $lib" need_relink=yes fi @@ -6708,24 +8154,24 @@ # Warn about portability, can't link against -module's on some # systems (darwin). Don't bleat about dlopened modules though! - dlopenmodule="" + dlopenmodule= for dlpremoduletest in $dlprefiles; do if test "X$dlpremoduletest" = "X$lib"; then - dlopenmodule="$dlpremoduletest" + dlopenmodule=$dlpremoduletest break fi done - if test -z "$dlopenmodule" && test "$shouldnotlink" = yes && test "$pass" = link; then + if test -z "$dlopenmodule" && test yes = "$shouldnotlink" && test link = "$pass"; then echo - if test "$linkmode" = prog; then + if test prog = "$linkmode"; then $ECHO "*** Warning: Linking the executable $output against the loadable module" else $ECHO "*** Warning: Linking the shared library $output against the loadable module" fi $ECHO "*** $linklib is not portable!" fi - if test "$linkmode" = lib && - test "$hardcode_into_libs" = yes; then + if test lib = "$linkmode" && + test yes = "$hardcode_into_libs"; then # Hardcode the library path. # Skip directories that are in the system default run-time # search path. @@ -6753,43 +8199,43 @@ # figure out the soname set dummy $library_names shift - realname="$1" + realname=$1 shift libname=`eval "\\$ECHO \"$libname_spec\""` # use dlname if we got it. it's perfectly good, no? if test -n "$dlname"; then - soname="$dlname" + soname=$dlname elif test -n "$soname_spec"; then # bleh windows case $host in - *cygwin* | mingw* | *cegcc*) + *cygwin* | mingw* | *cegcc* | *os2*) func_arith $current - $age major=$func_arith_result - versuffix="-$major" + versuffix=-$major ;; esac eval soname=\"$soname_spec\" else - soname="$realname" + soname=$realname fi # Make a new name for the extract_expsyms_cmds to use - soroot="$soname" + soroot=$soname func_basename "$soroot" - soname="$func_basename_result" + soname=$func_basename_result func_stripname 'lib' '.dll' "$soname" newlib=libimp-$func_stripname_result.a # If the library has no export list, then create one now if test -f "$output_objdir/$soname-def"; then : else - func_verbose "extracting exported symbol list from \`$soname'" + func_verbose "extracting exported symbol list from '$soname'" func_execute_cmds "$extract_expsyms_cmds" 'exit $?' fi # Create $newlib if test -f "$output_objdir/$newlib"; then :; else - func_verbose "generating import library for \`$soname'" + func_verbose "generating import library for '$soname'" func_execute_cmds "$old_archive_from_expsyms_cmds" 'exit $?' fi # make sure the library variables are pointing to the new library @@ -6797,58 +8243,58 @@ linklib=$newlib fi # test -n "$old_archive_from_expsyms_cmds" - if test "$linkmode" = prog || test "$opt_mode" != relink; then + if test prog = "$linkmode" || test relink != "$opt_mode"; then add_shlibpath= add_dir= add= lib_linked=yes case $hardcode_action in immediate | unsupported) - if test "$hardcode_direct" = no; then - add="$dir/$linklib" + if test no = "$hardcode_direct"; then + add=$dir/$linklib case $host in - *-*-sco3.2v5.0.[024]*) add_dir="-L$dir" ;; - *-*-sysv4*uw2*) add_dir="-L$dir" ;; + *-*-sco3.2v5.0.[024]*) add_dir=-L$dir ;; + *-*-sysv4*uw2*) add_dir=-L$dir ;; *-*-sysv5OpenUNIX* | *-*-sysv5UnixWare7.[01].[10]* | \ - *-*-unixware7*) add_dir="-L$dir" ;; + *-*-unixware7*) add_dir=-L$dir ;; *-*-darwin* ) - # if the lib is a (non-dlopened) module then we can not + # if the lib is a (non-dlopened) module then we cannot # link against it, someone is ignoring the earlier warnings if /usr/bin/file -L $add 2> /dev/null | - $GREP ": [^:]* bundle" >/dev/null ; then + $GREP ": [^:]* bundle" >/dev/null; then if test "X$dlopenmodule" != "X$lib"; then $ECHO "*** Warning: lib $linklib is a module, not a shared library" - if test -z "$old_library" ; then + if test -z "$old_library"; then echo echo "*** And there doesn't seem to be a static archive available" echo "*** The link will probably fail, sorry" else - add="$dir/$old_library" + add=$dir/$old_library fi elif test -n "$old_library"; then - add="$dir/$old_library" + add=$dir/$old_library fi fi esac - elif test "$hardcode_minus_L" = no; then + elif test no = "$hardcode_minus_L"; then case $host in - *-*-sunos*) add_shlibpath="$dir" ;; + *-*-sunos*) add_shlibpath=$dir ;; esac - add_dir="-L$dir" - add="-l$name" - elif test "$hardcode_shlibpath_var" = no; then - add_shlibpath="$dir" - add="-l$name" + add_dir=-L$dir + add=-l$name + elif test no = "$hardcode_shlibpath_var"; then + add_shlibpath=$dir + add=-l$name else lib_linked=no fi ;; relink) - if test "$hardcode_direct" = yes && - test "$hardcode_direct_absolute" = no; then - add="$dir/$linklib" - elif test "$hardcode_minus_L" = yes; then - add_dir="-L$absdir" + if test yes = "$hardcode_direct" && + test no = "$hardcode_direct_absolute"; then + add=$dir/$linklib + elif test yes = "$hardcode_minus_L"; then + add_dir=-L$absdir # Try looking first in the location we're being installed to. if test -n "$inst_prefix_dir"; then case $libdir in @@ -6857,10 +8303,10 @@ ;; esac fi - add="-l$name" - elif test "$hardcode_shlibpath_var" = yes; then - add_shlibpath="$dir" - add="-l$name" + add=-l$name + elif test yes = "$hardcode_shlibpath_var"; then + add_shlibpath=$dir + add=-l$name else lib_linked=no fi @@ -6868,7 +8314,7 @@ *) lib_linked=no ;; esac - if test "$lib_linked" != yes; then + if test yes != "$lib_linked"; then func_fatal_configuration "unsupported hardcode properties" fi @@ -6878,15 +8324,15 @@ *) func_append compile_shlibpath "$add_shlibpath:" ;; esac fi - if test "$linkmode" = prog; then + if test prog = "$linkmode"; then test -n "$add_dir" && compile_deplibs="$add_dir $compile_deplibs" test -n "$add" && compile_deplibs="$add $compile_deplibs" else test -n "$add_dir" && deplibs="$add_dir $deplibs" test -n "$add" && deplibs="$add $deplibs" - if test "$hardcode_direct" != yes && - test "$hardcode_minus_L" != yes && - test "$hardcode_shlibpath_var" = yes; then + if test yes != "$hardcode_direct" && + test yes != "$hardcode_minus_L" && + test yes = "$hardcode_shlibpath_var"; then case :$finalize_shlibpath: in *":$libdir:"*) ;; *) func_append finalize_shlibpath "$libdir:" ;; @@ -6895,33 +8341,33 @@ fi fi - if test "$linkmode" = prog || test "$opt_mode" = relink; then + if test prog = "$linkmode" || test relink = "$opt_mode"; then add_shlibpath= add_dir= add= # Finalize command for both is simple: just hardcode it. - if test "$hardcode_direct" = yes && - test "$hardcode_direct_absolute" = no; then - add="$libdir/$linklib" - elif test "$hardcode_minus_L" = yes; then - add_dir="-L$libdir" - add="-l$name" - elif test "$hardcode_shlibpath_var" = yes; then + if test yes = "$hardcode_direct" && + test no = "$hardcode_direct_absolute"; then + add=$libdir/$linklib + elif test yes = "$hardcode_minus_L"; then + add_dir=-L$libdir + add=-l$name + elif test yes = "$hardcode_shlibpath_var"; then case :$finalize_shlibpath: in *":$libdir:"*) ;; *) func_append finalize_shlibpath "$libdir:" ;; esac - add="-l$name" - elif test "$hardcode_automatic" = yes; then + add=-l$name + elif test yes = "$hardcode_automatic"; then if test -n "$inst_prefix_dir" && - test -f "$inst_prefix_dir$libdir/$linklib" ; then - add="$inst_prefix_dir$libdir/$linklib" + test -f "$inst_prefix_dir$libdir/$linklib"; then + add=$inst_prefix_dir$libdir/$linklib else - add="$libdir/$linklib" + add=$libdir/$linklib fi else # We cannot seem to hardcode it, guess we'll fake it. - add_dir="-L$libdir" + add_dir=-L$libdir # Try looking first in the location we're being installed to. if test -n "$inst_prefix_dir"; then case $libdir in @@ -6930,10 +8376,10 @@ ;; esac fi - add="-l$name" + add=-l$name fi - if test "$linkmode" = prog; then + if test prog = "$linkmode"; then test -n "$add_dir" && finalize_deplibs="$add_dir $finalize_deplibs" test -n "$add" && finalize_deplibs="$add $finalize_deplibs" else @@ -6941,43 +8387,43 @@ test -n "$add" && deplibs="$add $deplibs" fi fi - elif test "$linkmode" = prog; then + elif test prog = "$linkmode"; then # Here we assume that one of hardcode_direct or hardcode_minus_L # is not unsupported. This is valid on all known static and # shared platforms. - if test "$hardcode_direct" != unsupported; then - test -n "$old_library" && linklib="$old_library" + if test unsupported != "$hardcode_direct"; then + test -n "$old_library" && linklib=$old_library compile_deplibs="$dir/$linklib $compile_deplibs" finalize_deplibs="$dir/$linklib $finalize_deplibs" else compile_deplibs="-l$name -L$dir $compile_deplibs" finalize_deplibs="-l$name -L$dir $finalize_deplibs" fi - elif test "$build_libtool_libs" = yes; then + elif test yes = "$build_libtool_libs"; then # Not a shared library - if test "$deplibs_check_method" != pass_all; then + if test pass_all != "$deplibs_check_method"; then # We're trying link a shared library against a static one # but the system doesn't support it. # Just print a warning and add the library to dependency_libs so # that the program can be linked against the static library. echo - $ECHO "*** Warning: This system can not link to static lib archive $lib." + $ECHO "*** Warning: This system cannot link to static lib archive $lib." echo "*** I have the capability to make that library automatically link in when" echo "*** you link to this library. But I can only do this if you have a" echo "*** shared version of the library, which you do not appear to have." - if test "$module" = yes; then + if test yes = "$module"; then echo "*** But as you try to build a module library, libtool will still create " echo "*** a static module, that should work as long as the dlopening application" echo "*** is linked with the -dlopen flag to resolve symbols at runtime." if test -z "$global_symbol_pipe"; then echo echo "*** However, this would only work if libtool was able to extract symbol" - echo "*** lists from a program, using \`nm' or equivalent, but libtool could" + echo "*** lists from a program, using 'nm' or equivalent, but libtool could" echo "*** not find such a program. So, this module is probably useless." - echo "*** \`nm' from GNU binutils and a full rebuild may help." + echo "*** 'nm' from GNU binutils and a full rebuild may help." fi - if test "$build_old_libs" = no; then + if test no = "$build_old_libs"; then build_libtool_libs=module build_old_libs=yes else @@ -6990,11 +8436,11 @@ fi fi # link shared/static library? - if test "$linkmode" = lib; then + if test lib = "$linkmode"; then if test -n "$dependency_libs" && - { test "$hardcode_into_libs" != yes || - test "$build_old_libs" = yes || - test "$link_static" = yes; }; then + { test yes != "$hardcode_into_libs" || + test yes = "$build_old_libs" || + test yes = "$link_static"; }; then # Extract -R from dependency_libs temp_deplibs= for libdir in $dependency_libs; do @@ -7008,12 +8454,12 @@ *) func_append temp_deplibs " $libdir";; esac done - dependency_libs="$temp_deplibs" + dependency_libs=$temp_deplibs fi func_append newlib_search_path " $absdir" # Link against this library - test "$link_static" = no && newdependency_libs="$abs_ladir/$laname $newdependency_libs" + test no = "$link_static" && newdependency_libs="$abs_ladir/$laname $newdependency_libs" # ... and its dependency_libs tmp_libs= for deplib in $dependency_libs; do @@ -7023,7 +8469,7 @@ func_resolve_sysroot "$func_stripname_result";; *) func_resolve_sysroot "$deplib" ;; esac - if $opt_preserve_dup_deps ; then + if $opt_preserve_dup_deps; then case "$tmp_libs " in *" $func_resolve_sysroot_result "*) func_append specialdeplibs " $func_resolve_sysroot_result" ;; @@ -7032,12 +8478,12 @@ func_append tmp_libs " $func_resolve_sysroot_result" done - if test "$link_all_deplibs" != no; then + if test no != "$link_all_deplibs"; then # Add the search paths of all dependency libraries for deplib in $dependency_libs; do path= case $deplib in - -L*) path="$deplib" ;; + -L*) path=$deplib ;; *.la) func_resolve_sysroot "$deplib" deplib=$func_resolve_sysroot_result @@ -7045,12 +8491,12 @@ dir=$func_dirname_result # We need an absolute path. case $dir in - [\\/]* | [A-Za-z]:[\\/]*) absdir="$dir" ;; + [\\/]* | [A-Za-z]:[\\/]*) absdir=$dir ;; *) absdir=`cd "$dir" && pwd` if test -z "$absdir"; then - func_warning "cannot determine absolute directory name of \`$dir'" - absdir="$dir" + func_warning "cannot determine absolute directory name of '$dir'" + absdir=$dir fi ;; esac @@ -7058,35 +8504,35 @@ case $host in *-*-darwin*) depdepl= - eval deplibrary_names=`${SED} -n -e 's/^library_names=\(.*\)$/\1/p' $deplib` - if test -n "$deplibrary_names" ; then - for tmp in $deplibrary_names ; do + eval deplibrary_names=`$SED -n -e 's/^library_names=\(.*\)$/\1/p' $deplib` + if test -n "$deplibrary_names"; then + for tmp in $deplibrary_names; do depdepl=$tmp done - if test -f "$absdir/$objdir/$depdepl" ; then - depdepl="$absdir/$objdir/$depdepl" - darwin_install_name=`${OTOOL} -L $depdepl | awk '{if (NR == 2) {print $1;exit}}'` + if test -f "$absdir/$objdir/$depdepl"; then + depdepl=$absdir/$objdir/$depdepl + darwin_install_name=`$OTOOL -L $depdepl | awk '{if (NR == 2) {print $1;exit}}'` if test -z "$darwin_install_name"; then - darwin_install_name=`${OTOOL64} -L $depdepl | awk '{if (NR == 2) {print $1;exit}}'` + darwin_install_name=`$OTOOL64 -L $depdepl | awk '{if (NR == 2) {print $1;exit}}'` fi - func_append compiler_flags " ${wl}-dylib_file ${wl}${darwin_install_name}:${depdepl}" - func_append linker_flags " -dylib_file ${darwin_install_name}:${depdepl}" + func_append compiler_flags " $wl-dylib_file $wl$darwin_install_name:$depdepl" + func_append linker_flags " -dylib_file $darwin_install_name:$depdepl" path= fi fi ;; *) - path="-L$absdir/$objdir" + path=-L$absdir/$objdir ;; esac else - eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib` + eval libdir=`$SED -n -e 's/^libdir=\(.*\)$/\1/p' $deplib` test -z "$libdir" && \ - func_fatal_error "\`$deplib' is not a valid libtool archive" + func_fatal_error "'$deplib' is not a valid libtool archive" test "$absdir" != "$libdir" && \ - func_warning "\`$deplib' seems to be moved" + func_warning "'$deplib' seems to be moved" - path="-L$absdir" + path=-L$absdir fi ;; esac @@ -7098,23 +8544,23 @@ fi # link_all_deplibs != no fi # linkmode = lib done # for deplib in $libs - if test "$pass" = link; then - if test "$linkmode" = "prog"; then + if test link = "$pass"; then + if test prog = "$linkmode"; then compile_deplibs="$new_inherited_linker_flags $compile_deplibs" finalize_deplibs="$new_inherited_linker_flags $finalize_deplibs" else compiler_flags="$compiler_flags "`$ECHO " $new_inherited_linker_flags" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` fi fi - dependency_libs="$newdependency_libs" - if test "$pass" = dlpreopen; then + dependency_libs=$newdependency_libs + if test dlpreopen = "$pass"; then # Link the dlpreopened libraries before other libraries for deplib in $save_deplibs; do deplibs="$deplib $deplibs" done fi - if test "$pass" != dlopen; then - if test "$pass" != conv; then + if test dlopen != "$pass"; then + test conv = "$pass" || { # Make sure lib_search_path contains only unique directories. lib_search_path= for dir in $newlib_search_path; do @@ -7124,12 +8570,12 @@ esac done newlib_search_path= - fi + } - if test "$linkmode,$pass" != "prog,link"; then - vars="deplibs" - else + if test prog,link = "$linkmode,$pass"; then vars="compile_deplibs finalize_deplibs" + else + vars=deplibs fi for var in $vars dependency_libs; do # Add libraries to $var in reverse order @@ -7187,62 +8633,93 @@ eval $var=\"$tmp_libs\" done # for var fi + + # Add Sun CC postdeps if required: + test CXX = "$tagname" && { + case $host_os in + linux*) + case `$CC -V 2>&1 | sed 5q` in + *Sun\ C*) # Sun C++ 5.9 + func_suncc_cstd_abi + + if test no != "$suncc_use_cstd_abi"; then + func_append postdeps ' -library=Cstd -library=Crun' + fi + ;; + esac + ;; + + solaris*) + func_cc_basename "$CC" + case $func_cc_basename_result in + CC* | sunCC*) + func_suncc_cstd_abi + + if test no != "$suncc_use_cstd_abi"; then + func_append postdeps ' -library=Cstd -library=Crun' + fi + ;; + esac + ;; + esac + } + # Last step: remove runtime libs from dependency_libs # (they stay in deplibs) tmp_libs= - for i in $dependency_libs ; do + for i in $dependency_libs; do case " $predeps $postdeps $compiler_lib_search_path " in *" $i "*) - i="" + i= ;; esac - if test -n "$i" ; then + if test -n "$i"; then func_append tmp_libs " $i" fi done dependency_libs=$tmp_libs done # for pass - if test "$linkmode" = prog; then - dlfiles="$newdlfiles" + if test prog = "$linkmode"; then + dlfiles=$newdlfiles fi - if test "$linkmode" = prog || test "$linkmode" = lib; then - dlprefiles="$newdlprefiles" + if test prog = "$linkmode" || test lib = "$linkmode"; then + dlprefiles=$newdlprefiles fi case $linkmode in oldlib) - if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then - func_warning "\`-dlopen' is ignored for archives" + if test -n "$dlfiles$dlprefiles" || test no != "$dlself"; then + func_warning "'-dlopen' is ignored for archives" fi case " $deplibs" in *\ -l* | *\ -L*) - func_warning "\`-l' and \`-L' are ignored for archives" ;; + func_warning "'-l' and '-L' are ignored for archives" ;; esac test -n "$rpath" && \ - func_warning "\`-rpath' is ignored for archives" + func_warning "'-rpath' is ignored for archives" test -n "$xrpath" && \ - func_warning "\`-R' is ignored for archives" + func_warning "'-R' is ignored for archives" test -n "$vinfo" && \ - func_warning "\`-version-info/-version-number' is ignored for archives" + func_warning "'-version-info/-version-number' is ignored for archives" test -n "$release" && \ - func_warning "\`-release' is ignored for archives" + func_warning "'-release' is ignored for archives" test -n "$export_symbols$export_symbols_regex" && \ - func_warning "\`-export-symbols' is ignored for archives" + func_warning "'-export-symbols' is ignored for archives" # Now set the variables for building old libraries. build_libtool_libs=no - oldlibs="$output" + oldlibs=$output func_append objs "$old_deplibs" ;; lib) - # Make sure we only generate libraries of the form `libNAME.la'. + # Make sure we only generate libraries of the form 'libNAME.la'. case $outputname in lib*) func_stripname 'lib' '.la' "$outputname" @@ -7251,10 +8728,10 @@ eval libname=\"$libname_spec\" ;; *) - test "$module" = no && \ - func_fatal_help "libtool library \`$output' must begin with \`lib'" + test no = "$module" \ + && func_fatal_help "libtool library '$output' must begin with 'lib'" - if test "$need_lib_prefix" != no; then + if test no != "$need_lib_prefix"; then # Add the "lib" prefix for modules if required func_stripname '' '.la' "$outputname" name=$func_stripname_result @@ -7268,8 +8745,8 @@ esac if test -n "$objs"; then - if test "$deplibs_check_method" != pass_all; then - func_fatal_error "cannot build libtool library \`$output' from non-libtool objects on this host:$objs" + if test pass_all != "$deplibs_check_method"; then + func_fatal_error "cannot build libtool library '$output' from non-libtool objects on this host:$objs" else echo $ECHO "*** Warning: Linking the shared library $output against the non-libtool" @@ -7278,21 +8755,21 @@ fi fi - test "$dlself" != no && \ - func_warning "\`-dlopen self' is ignored for libtool libraries" + test no = "$dlself" \ + || func_warning "'-dlopen self' is ignored for libtool libraries" set dummy $rpath shift - test "$#" -gt 1 && \ - func_warning "ignoring multiple \`-rpath's for a libtool library" + test 1 -lt "$#" \ + && func_warning "ignoring multiple '-rpath's for a libtool library" - install_libdir="$1" + install_libdir=$1 oldlibs= if test -z "$rpath"; then - if test "$build_libtool_libs" = yes; then + if test yes = "$build_libtool_libs"; then # Building a libtool convenience library. - # Some compilers have problems with a `.al' extension so + # Some compilers have problems with a '.al' extension so # convenience libraries should have the same extension an # archive normally would. oldlibs="$output_objdir/$libname.$libext $oldlibs" @@ -7301,20 +8778,20 @@ fi test -n "$vinfo" && \ - func_warning "\`-version-info/-version-number' is ignored for convenience libraries" + func_warning "'-version-info/-version-number' is ignored for convenience libraries" test -n "$release" && \ - func_warning "\`-release' is ignored for convenience libraries" + func_warning "'-release' is ignored for convenience libraries" else # Parse the version information argument. - save_ifs="$IFS"; IFS=':' + save_ifs=$IFS; IFS=: set dummy $vinfo 0 0 0 shift - IFS="$save_ifs" + IFS=$save_ifs test -n "$7" && \ - func_fatal_help "too many parameters to \`-version-info'" + func_fatal_help "too many parameters to '-version-info'" # convert absolute version numbers to libtool ages # this retains compatibility with .la files and attempts @@ -7322,45 +8799,45 @@ case $vinfo_number in yes) - number_major="$1" - number_minor="$2" - number_revision="$3" + number_major=$1 + number_minor=$2 + number_revision=$3 # # There are really only two kinds -- those that # use the current revision as the major version # and those that subtract age and use age as # a minor version. But, then there is irix - # which has an extra 1 added just for fun + # that has an extra 1 added just for fun # case $version_type in # correct linux to gnu/linux during the next big refactor - darwin|linux|osf|windows|none) + darwin|freebsd-elf|linux|osf|windows|none) func_arith $number_major + $number_minor current=$func_arith_result - age="$number_minor" - revision="$number_revision" + age=$number_minor + revision=$number_revision ;; - freebsd-aout|freebsd-elf|qnx|sunos) - current="$number_major" - revision="$number_minor" - age="0" + freebsd-aout|qnx|sunos) + current=$number_major + revision=$number_minor + age=0 ;; irix|nonstopux) func_arith $number_major + $number_minor current=$func_arith_result - age="$number_minor" - revision="$number_minor" + age=$number_minor + revision=$number_minor lt_irix_increment=no ;; *) - func_fatal_configuration "$modename: unknown library version type \`$version_type'" + func_fatal_configuration "$modename: unknown library version type '$version_type'" ;; esac ;; no) - current="$1" - revision="$2" - age="$3" + current=$1 + revision=$2 + age=$3 ;; esac @@ -7368,30 +8845,30 @@ case $current in 0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;; *) - func_error "CURRENT \`$current' must be a nonnegative integer" - func_fatal_error "\`$vinfo' is not valid version information" + func_error "CURRENT '$current' must be a nonnegative integer" + func_fatal_error "'$vinfo' is not valid version information" ;; esac case $revision in 0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;; *) - func_error "REVISION \`$revision' must be a nonnegative integer" - func_fatal_error "\`$vinfo' is not valid version information" + func_error "REVISION '$revision' must be a nonnegative integer" + func_fatal_error "'$vinfo' is not valid version information" ;; esac case $age in 0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;; *) - func_error "AGE \`$age' must be a nonnegative integer" - func_fatal_error "\`$vinfo' is not valid version information" + func_error "AGE '$age' must be a nonnegative integer" + func_fatal_error "'$vinfo' is not valid version information" ;; esac if test "$age" -gt "$current"; then - func_error "AGE \`$age' is greater than the current interface number \`$current'" - func_fatal_error "\`$vinfo' is not valid version information" + func_error "AGE '$age' is greater than the current interface number '$current'" + func_fatal_error "'$vinfo' is not valid version information" fi # Calculate the version variables. @@ -7406,26 +8883,36 @@ # verstring for coding it into the library header func_arith $current - $age major=.$func_arith_result - versuffix="$major.$age.$revision" + versuffix=$major.$age.$revision # Darwin ld doesn't like 0 for these options... func_arith $current + 1 minor_current=$func_arith_result - xlcverstring="${wl}-compatibility_version ${wl}$minor_current ${wl}-current_version ${wl}$minor_current.$revision" + xlcverstring="$wl-compatibility_version $wl$minor_current $wl-current_version $wl$minor_current.$revision" verstring="-compatibility_version $minor_current -current_version $minor_current.$revision" + # On Darwin other compilers + case $CC in + nagfor*) + verstring="$wl-compatibility_version $wl$minor_current $wl-current_version $wl$minor_current.$revision" + ;; + *) + verstring="-compatibility_version $minor_current -current_version $minor_current.$revision" + ;; + esac ;; freebsd-aout) - major=".$current" - versuffix=".$current.$revision"; + major=.$current + versuffix=.$current.$revision ;; freebsd-elf) - major=".$current" - versuffix=".$current" + func_arith $current - $age + major=.$func_arith_result + versuffix=$major.$age.$revision ;; irix | nonstopux) - if test "X$lt_irix_increment" = "Xno"; then + if test no = "$lt_irix_increment"; then func_arith $current - $age else func_arith $current - $age + 1 @@ -7436,69 +8923,74 @@ nonstopux) verstring_prefix=nonstopux ;; *) verstring_prefix=sgi ;; esac - verstring="$verstring_prefix$major.$revision" + verstring=$verstring_prefix$major.$revision # Add in all the interfaces that we are compatible with. loop=$revision - while test "$loop" -ne 0; do + while test 0 -ne "$loop"; do func_arith $revision - $loop iface=$func_arith_result func_arith $loop - 1 loop=$func_arith_result - verstring="$verstring_prefix$major.$iface:$verstring" + verstring=$verstring_prefix$major.$iface:$verstring done - # Before this point, $major must not contain `.'. + # Before this point, $major must not contain '.'. major=.$major - versuffix="$major.$revision" + versuffix=$major.$revision ;; linux) # correct to gnu/linux during the next big refactor func_arith $current - $age major=.$func_arith_result - versuffix="$major.$age.$revision" + versuffix=$major.$age.$revision ;; osf) func_arith $current - $age major=.$func_arith_result - versuffix=".$current.$age.$revision" - verstring="$current.$age.$revision" + versuffix=.$current.$age.$revision + verstring=$current.$age.$revision # Add in all the interfaces that we are compatible with. loop=$age - while test "$loop" -ne 0; do + while test 0 -ne "$loop"; do func_arith $current - $loop iface=$func_arith_result func_arith $loop - 1 loop=$func_arith_result - verstring="$verstring:${iface}.0" + verstring=$verstring:$iface.0 done # Make executables depend on our current version. - func_append verstring ":${current}.0" + func_append verstring ":$current.0" ;; qnx) - major=".$current" - versuffix=".$current" + major=.$current + versuffix=.$current + ;; + + sco) + major=.$current + versuffix=.$current ;; sunos) - major=".$current" - versuffix=".$current.$revision" + major=.$current + versuffix=.$current.$revision ;; windows) # Use '-' rather than '.', since we only want one - # extension on DOS 8.3 filesystems. + # extension on DOS 8.3 file systems. func_arith $current - $age major=$func_arith_result - versuffix="-$major" + versuffix=-$major ;; *) - func_fatal_configuration "unknown library version type \`$version_type'" + func_fatal_configuration "unknown library version type '$version_type'" ;; esac @@ -7512,42 +9004,45 @@ verstring= ;; *) - verstring="0.0" + verstring=0.0 ;; esac - if test "$need_version" = no; then + if test no = "$need_version"; then versuffix= else - versuffix=".0.0" + versuffix=.0.0 fi fi # Remove version info from name if versioning should be avoided - if test "$avoid_version" = yes && test "$need_version" = no; then + if test yes,no = "$avoid_version,$need_version"; then major= versuffix= - verstring="" + verstring= fi # Check to see if the archive will have undefined symbols. - if test "$allow_undefined" = yes; then - if test "$allow_undefined_flag" = unsupported; then - func_warning "undefined symbols not allowed in $host shared libraries" - build_libtool_libs=no - build_old_libs=yes + if test yes = "$allow_undefined"; then + if test unsupported = "$allow_undefined_flag"; then + if test yes = "$build_old_libs"; then + func_warning "undefined symbols not allowed in $host shared libraries; building static only" + build_libtool_libs=no + else + func_fatal_error "can't build $host shared library unless -no-undefined is specified" + fi fi else # Don't allow undefined symbols. - allow_undefined_flag="$no_undefined_flag" + allow_undefined_flag=$no_undefined_flag fi fi - func_generate_dlsyms "$libname" "$libname" "yes" + func_generate_dlsyms "$libname" "$libname" : func_append libobjs " $symfileobj" - test "X$libobjs" = "X " && libobjs= + test " " = "$libobjs" && libobjs= - if test "$opt_mode" != relink; then + if test relink != "$opt_mode"; then # Remove our outputs, but don't remove object files since they # may have been created when compiling PIC objects. removelist= @@ -7556,8 +9051,8 @@ case $p in *.$objext | *.gcno) ;; - $output_objdir/$outputname | $output_objdir/$libname.* | $output_objdir/${libname}${release}.*) - if test "X$precious_files_regex" != "X"; then + $output_objdir/$outputname | $output_objdir/$libname.* | $output_objdir/$libname$release.*) + if test -n "$precious_files_regex"; then if $ECHO "$p" | $EGREP -e "$precious_files_regex" >/dev/null 2>&1 then continue @@ -7573,11 +9068,11 @@ fi # Now set the variables for building old libraries. - if test "$build_old_libs" = yes && test "$build_libtool_libs" != convenience ; then + if test yes = "$build_old_libs" && test convenience != "$build_libtool_libs"; then func_append oldlibs " $output_objdir/$libname.$libext" # Transform .lo files to .o files. - oldobjs="$objs "`$ECHO "$libobjs" | $SP2NL | $SED "/\.${libext}$/d; $lo2o" | $NL2SP` + oldobjs="$objs "`$ECHO "$libobjs" | $SP2NL | $SED "/\.$libext$/d; $lo2o" | $NL2SP` fi # Eliminate all temporary directories. @@ -7598,13 +9093,13 @@ *) func_append finalize_rpath " $libdir" ;; esac done - if test "$hardcode_into_libs" != yes || test "$build_old_libs" = yes; then + if test yes != "$hardcode_into_libs" || test yes = "$build_old_libs"; then dependency_libs="$temp_xrpath $dependency_libs" fi fi # Make sure dlfiles contains only unique files that won't be dlpreopened - old_dlfiles="$dlfiles" + old_dlfiles=$dlfiles dlfiles= for lib in $old_dlfiles; do case " $dlprefiles $dlfiles " in @@ -7614,7 +9109,7 @@ done # Make sure dlprefiles contains only unique files - old_dlprefiles="$dlprefiles" + old_dlprefiles=$dlprefiles dlprefiles= for lib in $old_dlprefiles; do case "$dlprefiles " in @@ -7623,7 +9118,7 @@ esac done - if test "$build_libtool_libs" = yes; then + if test yes = "$build_libtool_libs"; then if test -n "$rpath"; then case $host in *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-beos* | *-cegcc* | *-*-haiku*) @@ -7647,7 +9142,7 @@ ;; *) # Add libc to deplibs on all other systems if necessary. - if test "$build_libtool_need_lc" = "yes"; then + if test yes = "$build_libtool_need_lc"; then func_append deplibs " -lc" fi ;; @@ -7663,9 +9158,9 @@ # I'm not sure if I'm treating the release correctly. I think # release should show up in the -l (ie -lgmp5) so we don't want to # add it in twice. Is that correct? - release="" - versuffix="" - major="" + release= + versuffix= + major= newdeplibs= droppeddeps=no case $deplibs_check_method in @@ -7694,20 +9189,20 @@ -l*) func_stripname -l '' "$i" name=$func_stripname_result - if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then + if test yes = "$allow_libtool_libs_with_static_runtimes"; then case " $predeps $postdeps " in *" $i "*) func_append newdeplibs " $i" - i="" + i= ;; esac fi - if test -n "$i" ; then + if test -n "$i"; then libname=`eval "\\$ECHO \"$libname_spec\""` deplib_matches=`eval "\\$ECHO \"$library_names_spec\""` set dummy $deplib_matches; shift deplib_match=$1 - if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0 ; then + if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0; then func_append newdeplibs " $i" else droppeddeps=yes @@ -7737,20 +9232,20 @@ $opt_dry_run || $RM conftest if $LTCC $LTCFLAGS -o conftest conftest.c $i; then ldd_output=`ldd conftest` - if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then + if test yes = "$allow_libtool_libs_with_static_runtimes"; then case " $predeps $postdeps " in *" $i "*) func_append newdeplibs " $i" - i="" + i= ;; esac fi - if test -n "$i" ; then + if test -n "$i"; then libname=`eval "\\$ECHO \"$libname_spec\""` deplib_matches=`eval "\\$ECHO \"$library_names_spec\""` set dummy $deplib_matches; shift deplib_match=$1 - if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0 ; then + if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0; then func_append newdeplibs " $i" else droppeddeps=yes @@ -7787,24 +9282,24 @@ -l*) func_stripname -l '' "$a_deplib" name=$func_stripname_result - if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then + if test yes = "$allow_libtool_libs_with_static_runtimes"; then case " $predeps $postdeps " in *" $a_deplib "*) func_append newdeplibs " $a_deplib" - a_deplib="" + a_deplib= ;; esac fi - if test -n "$a_deplib" ; then + if test -n "$a_deplib"; then libname=`eval "\\$ECHO \"$libname_spec\""` if test -n "$file_magic_glob"; then libnameglob=`func_echo_all "$libname" | $SED -e $file_magic_glob` else libnameglob=$libname fi - test "$want_nocaseglob" = yes && nocaseglob=`shopt -p nocaseglob` + test yes = "$want_nocaseglob" && nocaseglob=`shopt -p nocaseglob` for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do - if test "$want_nocaseglob" = yes; then + if test yes = "$want_nocaseglob"; then shopt -s nocaseglob potential_libs=`ls $i/$libnameglob[.-]* 2>/dev/null` $nocaseglob @@ -7822,25 +9317,25 @@ # We might still enter an endless loop, since a link # loop can be closed while we follow links, # but so what? - potlib="$potent_lib" + potlib=$potent_lib while test -h "$potlib" 2>/dev/null; do - potliblink=`ls -ld $potlib | ${SED} 's/.* -> //'` + potliblink=`ls -ld $potlib | $SED 's/.* -> //'` case $potliblink in - [\\/]* | [A-Za-z]:[\\/]*) potlib="$potliblink";; - *) potlib=`$ECHO "$potlib" | $SED 's,[^/]*$,,'`"$potliblink";; + [\\/]* | [A-Za-z]:[\\/]*) potlib=$potliblink;; + *) potlib=`$ECHO "$potlib" | $SED 's|[^/]*$||'`"$potliblink";; esac done if eval $file_magic_cmd \"\$potlib\" 2>/dev/null | $SED -e 10q | $EGREP "$file_magic_regex" > /dev/null; then func_append newdeplibs " $a_deplib" - a_deplib="" + a_deplib= break 2 fi done done fi - if test -n "$a_deplib" ; then + if test -n "$a_deplib"; then droppeddeps=yes echo $ECHO "*** Warning: linker path does not have real file for library $a_deplib." @@ -7848,7 +9343,7 @@ echo "*** you link to this library. But I can only do this if you have a" echo "*** shared version of the library, which you do not appear to have" echo "*** because I did check the linker path looking for a file starting" - if test -z "$potlib" ; then + if test -z "$potlib"; then $ECHO "*** with $libname but no candidates were found. (...for file magic test)" else $ECHO "*** with $libname and none of the candidates passed a file format test" @@ -7871,30 +9366,30 @@ -l*) func_stripname -l '' "$a_deplib" name=$func_stripname_result - if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then + if test yes = "$allow_libtool_libs_with_static_runtimes"; then case " $predeps $postdeps " in *" $a_deplib "*) func_append newdeplibs " $a_deplib" - a_deplib="" + a_deplib= ;; esac fi - if test -n "$a_deplib" ; then + if test -n "$a_deplib"; then libname=`eval "\\$ECHO \"$libname_spec\""` for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do potential_libs=`ls $i/$libname[.-]* 2>/dev/null` for potent_lib in $potential_libs; do - potlib="$potent_lib" # see symlink-check above in file_magic test + potlib=$potent_lib # see symlink-check above in file_magic test if eval "\$ECHO \"$potent_lib\"" 2>/dev/null | $SED 10q | \ $EGREP "$match_pattern_regex" > /dev/null; then func_append newdeplibs " $a_deplib" - a_deplib="" + a_deplib= break 2 fi done done fi - if test -n "$a_deplib" ; then + if test -n "$a_deplib"; then droppeddeps=yes echo $ECHO "*** Warning: linker path does not have real file for library $a_deplib." @@ -7902,7 +9397,7 @@ echo "*** you link to this library. But I can only do this if you have a" echo "*** shared version of the library, which you do not appear to have" echo "*** because I did check the linker path looking for a file starting" - if test -z "$potlib" ; then + if test -z "$potlib"; then $ECHO "*** with $libname but no candidates were found. (...for regex pattern test)" else $ECHO "*** with $libname and none of the candidates passed a file format test" @@ -7918,18 +9413,18 @@ done # Gone through all deplibs. ;; none | unknown | *) - newdeplibs="" + newdeplibs= tmp_deplibs=`$ECHO " $deplibs" | $SED 's/ -lc$//; s/ -[LR][^ ]*//g'` - if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then - for i in $predeps $postdeps ; do + if test yes = "$allow_libtool_libs_with_static_runtimes"; then + for i in $predeps $postdeps; do # can't use Xsed below, because $i might contain '/' - tmp_deplibs=`$ECHO " $tmp_deplibs" | $SED "s,$i,,"` + tmp_deplibs=`$ECHO " $tmp_deplibs" | $SED "s|$i||"` done fi case $tmp_deplibs in *[!\ \ ]*) echo - if test "X$deplibs_check_method" = "Xnone"; then + if test none = "$deplibs_check_method"; then echo "*** Warning: inter-library dependencies are not supported in this platform." else echo "*** Warning: inter-library dependencies are not known to be supported." @@ -7953,8 +9448,8 @@ ;; esac - if test "$droppeddeps" = yes; then - if test "$module" = yes; then + if test yes = "$droppeddeps"; then + if test yes = "$module"; then echo echo "*** Warning: libtool could not satisfy all declared inter-library" $ECHO "*** dependencies of module $libname. Therefore, libtool will create" @@ -7963,12 +9458,12 @@ if test -z "$global_symbol_pipe"; then echo echo "*** However, this would only work if libtool was able to extract symbol" - echo "*** lists from a program, using \`nm' or equivalent, but libtool could" + echo "*** lists from a program, using 'nm' or equivalent, but libtool could" echo "*** not find such a program. So, this module is probably useless." - echo "*** \`nm' from GNU binutils and a full rebuild may help." + echo "*** 'nm' from GNU binutils and a full rebuild may help." fi - if test "$build_old_libs" = no; then - oldlibs="$output_objdir/$libname.$libext" + if test no = "$build_old_libs"; then + oldlibs=$output_objdir/$libname.$libext build_libtool_libs=module build_old_libs=yes else @@ -7979,14 +9474,14 @@ echo "*** automatically added whenever a program is linked with this library" echo "*** or is declared to -dlopen it." - if test "$allow_undefined" = no; then + if test no = "$allow_undefined"; then echo echo "*** Since this library must not contain undefined symbols," echo "*** because either the platform does not support them or" echo "*** it was explicitly requested with -no-undefined," echo "*** libtool will only create a static version of it." - if test "$build_old_libs" = no; then - oldlibs="$output_objdir/$libname.$libext" + if test no = "$build_old_libs"; then + oldlibs=$output_objdir/$libname.$libext build_libtool_libs=module build_old_libs=yes else @@ -8032,7 +9527,7 @@ *) func_append new_libs " $deplib" ;; esac done - deplibs="$new_libs" + deplibs=$new_libs # All the library-specific variables (install_libdir is set above). library_names= @@ -8040,25 +9535,25 @@ dlname= # Test again, we may have decided not to build it any more - if test "$build_libtool_libs" = yes; then - # Remove ${wl} instances when linking with ld. + if test yes = "$build_libtool_libs"; then + # Remove $wl instances when linking with ld. # FIXME: should test the right _cmds variable. case $archive_cmds in *\$LD\ *) wl= ;; esac - if test "$hardcode_into_libs" = yes; then + if test yes = "$hardcode_into_libs"; then # Hardcode the library paths hardcode_libdirs= dep_rpath= - rpath="$finalize_rpath" - test "$opt_mode" != relink && rpath="$compile_rpath$rpath" + rpath=$finalize_rpath + test relink = "$opt_mode" || rpath=$compile_rpath$rpath for libdir in $rpath; do if test -n "$hardcode_libdir_flag_spec"; then if test -n "$hardcode_libdir_separator"; then func_replace_sysroot "$libdir" libdir=$func_replace_sysroot_result if test -z "$hardcode_libdirs"; then - hardcode_libdirs="$libdir" + hardcode_libdirs=$libdir else # Just accumulate the unique libdirs. case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in @@ -8083,7 +9578,7 @@ # Substitute the hardcoded libdirs into the rpath. if test -n "$hardcode_libdir_separator" && test -n "$hardcode_libdirs"; then - libdir="$hardcode_libdirs" + libdir=$hardcode_libdirs eval "dep_rpath=\"$hardcode_libdir_flag_spec\"" fi if test -n "$runpath_var" && test -n "$perm_rpath"; then @@ -8097,8 +9592,8 @@ test -n "$dep_rpath" && deplibs="$dep_rpath $deplibs" fi - shlibpath="$finalize_shlibpath" - test "$opt_mode" != relink && shlibpath="$compile_shlibpath$shlibpath" + shlibpath=$finalize_shlibpath + test relink = "$opt_mode" || shlibpath=$compile_shlibpath$shlibpath if test -n "$shlibpath"; then eval "$shlibpath_var='$shlibpath\$$shlibpath_var'; export $shlibpath_var" fi @@ -8108,19 +9603,19 @@ eval library_names=\"$library_names_spec\" set dummy $library_names shift - realname="$1" + realname=$1 shift if test -n "$soname_spec"; then eval soname=\"$soname_spec\" else - soname="$realname" + soname=$realname fi if test -z "$dlname"; then dlname=$soname fi - lib="$output_objdir/$realname" + lib=$output_objdir/$realname linknames= for link do @@ -8134,7 +9629,7 @@ delfiles= if test -n "$export_symbols" && test -n "$include_expsyms"; then $opt_dry_run || cp "$export_symbols" "$output_objdir/$libname.uexp" - export_symbols="$output_objdir/$libname.uexp" + export_symbols=$output_objdir/$libname.uexp func_append delfiles " $export_symbols" fi @@ -8143,31 +9638,31 @@ cygwin* | mingw* | cegcc*) if test -n "$export_symbols" && test -z "$export_symbols_regex"; then # exporting using user supplied symfile - if test "x`$SED 1q $export_symbols`" != xEXPORTS; then + func_dll_def_p "$export_symbols" || { # and it's NOT already a .def file. Must figure out # which of the given symbols are data symbols and tag # them as such. So, trigger use of export_symbols_cmds. # export_symbols gets reassigned inside the "prepare # the list of exported symbols" if statement, so the # include_expsyms logic still works. - orig_export_symbols="$export_symbols" + orig_export_symbols=$export_symbols export_symbols= always_export_symbols=yes - fi + } fi ;; esac # Prepare the list of exported symbols if test -z "$export_symbols"; then - if test "$always_export_symbols" = yes || test -n "$export_symbols_regex"; then - func_verbose "generating symbol list for \`$libname.la'" - export_symbols="$output_objdir/$libname.exp" + if test yes = "$always_export_symbols" || test -n "$export_symbols_regex"; then + func_verbose "generating symbol list for '$libname.la'" + export_symbols=$output_objdir/$libname.exp $opt_dry_run || $RM $export_symbols cmds=$export_symbols_cmds - save_ifs="$IFS"; IFS='~' + save_ifs=$IFS; IFS='~' for cmd1 in $cmds; do - IFS="$save_ifs" + IFS=$save_ifs # Take the normal branch if the nm_file_list_spec branch # doesn't work or if tool conversion is not needed. case $nm_file_list_spec~$to_tool_file_cmd in @@ -8181,7 +9676,7 @@ try_normal_branch=no ;; esac - if test "$try_normal_branch" = yes \ + if test yes = "$try_normal_branch" \ && { test "$len" -lt "$max_cmd_len" \ || test "$max_cmd_len" -le -1; } then @@ -8192,7 +9687,7 @@ output_la=$func_basename_result save_libobjs=$libobjs save_output=$output - output=${output_objdir}/${output_la}.nm + output=$output_objdir/$output_la.nm func_to_tool_file "$output" libobjs=$nm_file_list_spec$func_to_tool_file_result func_append delfiles " $output" @@ -8215,8 +9710,8 @@ break fi done - IFS="$save_ifs" - if test -n "$export_symbols_regex" && test "X$skipped_export" != "X:"; then + IFS=$save_ifs + if test -n "$export_symbols_regex" && test : != "$skipped_export"; then func_show_eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"' func_show_eval '$MV "${export_symbols}T" "$export_symbols"' fi @@ -8224,16 +9719,16 @@ fi if test -n "$export_symbols" && test -n "$include_expsyms"; then - tmp_export_symbols="$export_symbols" - test -n "$orig_export_symbols" && tmp_export_symbols="$orig_export_symbols" + tmp_export_symbols=$export_symbols + test -n "$orig_export_symbols" && tmp_export_symbols=$orig_export_symbols $opt_dry_run || eval '$ECHO "$include_expsyms" | $SP2NL >> "$tmp_export_symbols"' fi - if test "X$skipped_export" != "X:" && test -n "$orig_export_symbols"; then + if test : != "$skipped_export" && test -n "$orig_export_symbols"; then # The given exports_symbols file has to be filtered, so filter it. - func_verbose "filter symbol list for \`$libname.la' to tag DATA exports" + func_verbose "filter symbol list for '$libname.la' to tag DATA exports" # FIXME: $output_objdir/$libname.filter potentially contains lots of - # 's' commands which not all seds can handle. GNU sed should be fine + # 's' commands, which not all seds can handle. GNU sed should be fine # though. Also, the filter scales superlinearly with the number of # global variables. join(1) would be nice here, but unfortunately # isn't a blessed tool. @@ -8252,11 +9747,11 @@ ;; esac done - deplibs="$tmp_deplibs" + deplibs=$tmp_deplibs if test -n "$convenience"; then if test -n "$whole_archive_flag_spec" && - test "$compiler_needs_object" = yes && + test yes = "$compiler_needs_object" && test -z "$libobjs"; then # extract the archives, so we have objects to list. # TODO: could optimize this to just extract one archive. @@ -8267,7 +9762,7 @@ eval libobjs=\"\$libobjs $whole_archive_flag_spec\" test "X$libobjs" = "X " && libobjs= else - gentop="$output_objdir/${outputname}x" + gentop=$output_objdir/${outputname}x func_append generated " $gentop" func_extract_archives $gentop $convenience @@ -8276,18 +9771,18 @@ fi fi - if test "$thread_safe" = yes && test -n "$thread_safe_flag_spec"; then + if test yes = "$thread_safe" && test -n "$thread_safe_flag_spec"; then eval flag=\"$thread_safe_flag_spec\" func_append linker_flags " $flag" fi # Make a backup of the uninstalled library when relinking - if test "$opt_mode" = relink; then + if test relink = "$opt_mode"; then $opt_dry_run || eval '(cd $output_objdir && $RM ${realname}U && $MV $realname ${realname}U)' || exit $? fi # Do each of the archive commands. - if test "$module" = yes && test -n "$module_cmds" ; then + if test yes = "$module" && test -n "$module_cmds"; then if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then eval test_cmds=\"$module_expsym_cmds\" cmds=$module_expsym_cmds @@ -8305,7 +9800,7 @@ fi fi - if test "X$skipped_export" != "X:" && + if test : != "$skipped_export" && func_len " $test_cmds" && len=$func_len_result && test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then @@ -8338,8 +9833,8 @@ last_robj= k=1 - if test -n "$save_libobjs" && test "X$skipped_export" != "X:" && test "$with_gnu_ld" = yes; then - output=${output_objdir}/${output_la}.lnkscript + if test -n "$save_libobjs" && test : != "$skipped_export" && test yes = "$with_gnu_ld"; then + output=$output_objdir/$output_la.lnkscript func_verbose "creating GNU ld script: $output" echo 'INPUT (' > $output for obj in $save_libobjs @@ -8351,14 +9846,14 @@ func_append delfiles " $output" func_to_tool_file "$output" output=$func_to_tool_file_result - elif test -n "$save_libobjs" && test "X$skipped_export" != "X:" && test "X$file_list_spec" != X; then - output=${output_objdir}/${output_la}.lnk + elif test -n "$save_libobjs" && test : != "$skipped_export" && test -n "$file_list_spec"; then + output=$output_objdir/$output_la.lnk func_verbose "creating linker input file list: $output" : > $output set x $save_libobjs shift firstobj= - if test "$compiler_needs_object" = yes; then + if test yes = "$compiler_needs_object"; then firstobj="$1 " shift fi @@ -8373,7 +9868,7 @@ else if test -n "$save_libobjs"; then func_verbose "creating reloadable object files..." - output=$output_objdir/$output_la-${k}.$objext + output=$output_objdir/$output_la-$k.$objext eval test_cmds=\"$reload_cmds\" func_len " $test_cmds" len0=$func_len_result @@ -8385,13 +9880,13 @@ func_len " $obj" func_arith $len + $func_len_result len=$func_arith_result - if test "X$objlist" = X || + if test -z "$objlist" || test "$len" -lt "$max_cmd_len"; then func_append objlist " $obj" else # The command $test_cmds is almost too long, add a # command to the queue. - if test "$k" -eq 1 ; then + if test 1 -eq "$k"; then # The first file doesn't have a previous command to add. reload_objs=$objlist eval concat_cmds=\"$reload_cmds\" @@ -8401,10 +9896,10 @@ reload_objs="$objlist $last_robj" eval concat_cmds=\"\$concat_cmds~$reload_cmds~\$RM $last_robj\" fi - last_robj=$output_objdir/$output_la-${k}.$objext + last_robj=$output_objdir/$output_la-$k.$objext func_arith $k + 1 k=$func_arith_result - output=$output_objdir/$output_la-${k}.$objext + output=$output_objdir/$output_la-$k.$objext objlist=" $obj" func_len " $last_robj" func_arith $len0 + $func_len_result @@ -8416,9 +9911,9 @@ # files will link in the last one created. test -z "$concat_cmds" || concat_cmds=$concat_cmds~ reload_objs="$objlist $last_robj" - eval concat_cmds=\"\${concat_cmds}$reload_cmds\" + eval concat_cmds=\"\$concat_cmds$reload_cmds\" if test -n "$last_robj"; then - eval concat_cmds=\"\${concat_cmds}~\$RM $last_robj\" + eval concat_cmds=\"\$concat_cmds~\$RM $last_robj\" fi func_append delfiles " $output" @@ -8426,9 +9921,9 @@ output= fi - if ${skipped_export-false}; then - func_verbose "generating symbol list for \`$libname.la'" - export_symbols="$output_objdir/$libname.exp" + ${skipped_export-false} && { + func_verbose "generating symbol list for '$libname.la'" + export_symbols=$output_objdir/$libname.exp $opt_dry_run || $RM $export_symbols libobjs=$output # Append the command to create the export file. @@ -8437,16 +9932,16 @@ if test -n "$last_robj"; then eval concat_cmds=\"\$concat_cmds~\$RM $last_robj\" fi - fi + } test -n "$save_libobjs" && func_verbose "creating a temporary reloadable object file: $output" # Loop through the commands generated above and execute them. - save_ifs="$IFS"; IFS='~' + save_ifs=$IFS; IFS='~' for cmd in $concat_cmds; do - IFS="$save_ifs" - $opt_silent || { + IFS=$save_ifs + $opt_quiet || { func_quote_for_expand "$cmd" eval "func_echo $func_quote_for_expand_result" } @@ -8454,7 +9949,7 @@ lt_exit=$? # Restore the uninstalled library and exit - if test "$opt_mode" = relink; then + if test relink = "$opt_mode"; then ( cd "$output_objdir" && \ $RM "${realname}T" && \ $MV "${realname}U" "$realname" ) @@ -8463,7 +9958,7 @@ exit $lt_exit } done - IFS="$save_ifs" + IFS=$save_ifs if test -n "$export_symbols_regex" && ${skipped_export-false}; then func_show_eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"' @@ -8471,18 +9966,18 @@ fi fi - if ${skipped_export-false}; then + ${skipped_export-false} && { if test -n "$export_symbols" && test -n "$include_expsyms"; then - tmp_export_symbols="$export_symbols" - test -n "$orig_export_symbols" && tmp_export_symbols="$orig_export_symbols" + tmp_export_symbols=$export_symbols + test -n "$orig_export_symbols" && tmp_export_symbols=$orig_export_symbols $opt_dry_run || eval '$ECHO "$include_expsyms" | $SP2NL >> "$tmp_export_symbols"' fi if test -n "$orig_export_symbols"; then # The given exports_symbols file has to be filtered, so filter it. - func_verbose "filter symbol list for \`$libname.la' to tag DATA exports" + func_verbose "filter symbol list for '$libname.la' to tag DATA exports" # FIXME: $output_objdir/$libname.filter potentially contains lots of - # 's' commands which not all seds can handle. GNU sed should be fine + # 's' commands, which not all seds can handle. GNU sed should be fine # though. Also, the filter scales superlinearly with the number of # global variables. join(1) would be nice here, but unfortunately # isn't a blessed tool. @@ -8491,7 +9986,7 @@ export_symbols=$output_objdir/$libname.def $opt_dry_run || $SED -f $output_objdir/$libname.filter < $orig_export_symbols > $export_symbols fi - fi + } libobjs=$output # Restore the value of output. @@ -8505,7 +10000,7 @@ # value of $libobjs for piecewise linking. # Do each of the archive commands. - if test "$module" = yes && test -n "$module_cmds" ; then + if test yes = "$module" && test -n "$module_cmds"; then if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then cmds=$module_expsym_cmds else @@ -8527,7 +10022,7 @@ # Add any objects from preloaded convenience libraries if test -n "$dlprefiles"; then - gentop="$output_objdir/${outputname}x" + gentop=$output_objdir/${outputname}x func_append generated " $gentop" func_extract_archives $gentop $dlprefiles @@ -8535,11 +10030,12 @@ test "X$libobjs" = "X " && libobjs= fi - save_ifs="$IFS"; IFS='~' + save_ifs=$IFS; IFS='~' for cmd in $cmds; do - IFS="$save_ifs" + IFS=$sp$nl eval cmd=\"$cmd\" - $opt_silent || { + IFS=$save_ifs + $opt_quiet || { func_quote_for_expand "$cmd" eval "func_echo $func_quote_for_expand_result" } @@ -8547,7 +10043,7 @@ lt_exit=$? # Restore the uninstalled library and exit - if test "$opt_mode" = relink; then + if test relink = "$opt_mode"; then ( cd "$output_objdir" && \ $RM "${realname}T" && \ $MV "${realname}U" "$realname" ) @@ -8556,10 +10052,10 @@ exit $lt_exit } done - IFS="$save_ifs" + IFS=$save_ifs # Restore the uninstalled library and exit - if test "$opt_mode" = relink; then + if test relink = "$opt_mode"; then $opt_dry_run || eval '(cd $output_objdir && $RM ${realname}T && $MV $realname ${realname}T && $MV ${realname}U $realname)' || exit $? if test -n "$convenience"; then @@ -8579,39 +10075,39 @@ done # If -module or -export-dynamic was specified, set the dlname. - if test "$module" = yes || test "$export_dynamic" = yes; then + if test yes = "$module" || test yes = "$export_dynamic"; then # On all known operating systems, these are identical. - dlname="$soname" + dlname=$soname fi fi ;; obj) - if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then - func_warning "\`-dlopen' is ignored for objects" + if test -n "$dlfiles$dlprefiles" || test no != "$dlself"; then + func_warning "'-dlopen' is ignored for objects" fi case " $deplibs" in *\ -l* | *\ -L*) - func_warning "\`-l' and \`-L' are ignored for objects" ;; + func_warning "'-l' and '-L' are ignored for objects" ;; esac test -n "$rpath" && \ - func_warning "\`-rpath' is ignored for objects" + func_warning "'-rpath' is ignored for objects" test -n "$xrpath" && \ - func_warning "\`-R' is ignored for objects" + func_warning "'-R' is ignored for objects" test -n "$vinfo" && \ - func_warning "\`-version-info' is ignored for objects" + func_warning "'-version-info' is ignored for objects" test -n "$release" && \ - func_warning "\`-release' is ignored for objects" + func_warning "'-release' is ignored for objects" case $output in *.lo) test -n "$objs$old_deplibs" && \ - func_fatal_error "cannot build library object \`$output' from non-libtool objects" + func_fatal_error "cannot build library object '$output' from non-libtool objects" libobj=$output func_lo2o "$libobj" @@ -8619,7 +10115,7 @@ ;; *) libobj= - obj="$output" + obj=$output ;; esac @@ -8632,17 +10128,19 @@ # the extraction. reload_conv_objs= gentop= - # reload_cmds runs $LD directly, so let us get rid of - # -Wl from whole_archive_flag_spec and hope we can get by with - # turning comma into space.. - wl= - + # if reload_cmds runs $LD directly, get rid of -Wl from + # whole_archive_flag_spec and hope we can get by with turning comma + # into space. + case $reload_cmds in + *\$LD[\ \$]*) wl= ;; + esac if test -n "$convenience"; then if test -n "$whole_archive_flag_spec"; then eval tmp_whole_archive_flags=\"$whole_archive_flag_spec\" - reload_conv_objs=$reload_objs\ `$ECHO "$tmp_whole_archive_flags" | $SED 's|,| |g'` + test -n "$wl" || tmp_whole_archive_flags=`$ECHO "$tmp_whole_archive_flags" | $SED 's|,| |g'` + reload_conv_objs=$reload_objs\ $tmp_whole_archive_flags else - gentop="$output_objdir/${obj}x" + gentop=$output_objdir/${obj}x func_append generated " $gentop" func_extract_archives $gentop $convenience @@ -8651,12 +10149,12 @@ fi # If we're not building shared, we need to use non_pic_objs - test "$build_libtool_libs" != yes && libobjs="$non_pic_objects" + test yes = "$build_libtool_libs" || libobjs=$non_pic_objects # Create the old-style object. - reload_objs="$objs$old_deplibs "`$ECHO "$libobjs" | $SP2NL | $SED "/\.${libext}$/d; /\.lib$/d; $lo2o" | $NL2SP`" $reload_conv_objs" ### testsuite: skip nested quoting test + reload_objs=$objs$old_deplibs' '`$ECHO "$libobjs" | $SP2NL | $SED "/\.$libext$/d; /\.lib$/d; $lo2o" | $NL2SP`' '$reload_conv_objs - output="$obj" + output=$obj func_execute_cmds "$reload_cmds" 'exit $?' # Exit if we aren't doing a library object file. @@ -8668,7 +10166,7 @@ exit $EXIT_SUCCESS fi - if test "$build_libtool_libs" != yes; then + test yes = "$build_libtool_libs" || { if test -n "$gentop"; then func_show_eval '${RM}r "$gentop"' fi @@ -8678,12 +10176,12 @@ # $show "echo timestamp > $libobj" # $opt_dry_run || eval "echo timestamp > $libobj" || exit $? exit $EXIT_SUCCESS - fi + } - if test -n "$pic_flag" || test "$pic_mode" != default; then + if test -n "$pic_flag" || test default != "$pic_mode"; then # Only do commands if we really have different PIC objects. reload_objs="$libobjs $reload_conv_objs" - output="$libobj" + output=$libobj func_execute_cmds "$reload_cmds" 'exit $?' fi @@ -8700,16 +10198,14 @@ output=$func_stripname_result.exe;; esac test -n "$vinfo" && \ - func_warning "\`-version-info' is ignored for programs" + func_warning "'-version-info' is ignored for programs" test -n "$release" && \ - func_warning "\`-release' is ignored for programs" + func_warning "'-release' is ignored for programs" - test "$preload" = yes \ - && test "$dlopen_support" = unknown \ - && test "$dlopen_self" = unknown \ - && test "$dlopen_self_static" = unknown && \ - func_warning "\`LT_INIT([dlopen])' not used. Assuming no dlopen support." + $preload \ + && test unknown,unknown,unknown = "$dlopen_support,$dlopen_self,$dlopen_self_static" \ + && func_warning "'LT_INIT([dlopen])' not used. Assuming no dlopen support." case $host in *-*-rhapsody* | *-*-darwin1.[012]) @@ -8723,11 +10219,11 @@ *-*-darwin*) # Don't allow lazy linking, it breaks C++ global constructors # But is supposedly fixed on 10.4 or later (yay!). - if test "$tagname" = CXX ; then + if test CXX = "$tagname"; then case ${MACOSX_DEPLOYMENT_TARGET-10.0} in 10.[0123]) - func_append compile_command " ${wl}-bind_at_load" - func_append finalize_command " ${wl}-bind_at_load" + func_append compile_command " $wl-bind_at_load" + func_append finalize_command " $wl-bind_at_load" ;; esac fi @@ -8763,7 +10259,7 @@ *) func_append new_libs " $deplib" ;; esac done - compile_deplibs="$new_libs" + compile_deplibs=$new_libs func_append compile_command " $compile_deplibs" @@ -8787,7 +10283,7 @@ if test -n "$hardcode_libdir_flag_spec"; then if test -n "$hardcode_libdir_separator"; then if test -z "$hardcode_libdirs"; then - hardcode_libdirs="$libdir" + hardcode_libdirs=$libdir else # Just accumulate the unique libdirs. case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in @@ -8810,7 +10306,7 @@ fi case $host in *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*) - testbindir=`${ECHO} "$libdir" | ${SED} -e 's*/lib$*/bin*'` + testbindir=`$ECHO "$libdir" | $SED -e 's*/lib$*/bin*'` case :$dllsearchpath: in *":$libdir:"*) ;; ::) dllsearchpath=$libdir;; @@ -8827,10 +10323,10 @@ # Substitute the hardcoded libdirs into the rpath. if test -n "$hardcode_libdir_separator" && test -n "$hardcode_libdirs"; then - libdir="$hardcode_libdirs" + libdir=$hardcode_libdirs eval rpath=\" $hardcode_libdir_flag_spec\" fi - compile_rpath="$rpath" + compile_rpath=$rpath rpath= hardcode_libdirs= @@ -8838,7 +10334,7 @@ if test -n "$hardcode_libdir_flag_spec"; then if test -n "$hardcode_libdir_separator"; then if test -z "$hardcode_libdirs"; then - hardcode_libdirs="$libdir" + hardcode_libdirs=$libdir else # Just accumulate the unique libdirs. case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in @@ -8863,45 +10359,43 @@ # Substitute the hardcoded libdirs into the rpath. if test -n "$hardcode_libdir_separator" && test -n "$hardcode_libdirs"; then - libdir="$hardcode_libdirs" + libdir=$hardcode_libdirs eval rpath=\" $hardcode_libdir_flag_spec\" fi - finalize_rpath="$rpath" + finalize_rpath=$rpath - if test -n "$libobjs" && test "$build_old_libs" = yes; then + if test -n "$libobjs" && test yes = "$build_old_libs"; then # Transform all the library objects into standard objects. compile_command=`$ECHO "$compile_command" | $SP2NL | $SED "$lo2o" | $NL2SP` finalize_command=`$ECHO "$finalize_command" | $SP2NL | $SED "$lo2o" | $NL2SP` fi - func_generate_dlsyms "$outputname" "@PROGRAM@" "no" + func_generate_dlsyms "$outputname" "@PROGRAM@" false # template prelinking step if test -n "$prelink_cmds"; then func_execute_cmds "$prelink_cmds" 'exit $?' fi - wrappers_required=yes + wrappers_required=: case $host in *cegcc* | *mingw32ce*) # Disable wrappers for cegcc and mingw32ce hosts, we are cross compiling anyway. - wrappers_required=no + wrappers_required=false ;; *cygwin* | *mingw* ) - if test "$build_libtool_libs" != yes; then - wrappers_required=no - fi + test yes = "$build_libtool_libs" || wrappers_required=false ;; *) - if test "$need_relink" = no || test "$build_libtool_libs" != yes; then - wrappers_required=no + if test no = "$need_relink" || test yes != "$build_libtool_libs"; then + wrappers_required=false fi ;; esac - if test "$wrappers_required" = no; then + $wrappers_required || { # Replace the output file specification. compile_command=`$ECHO "$compile_command" | $SED 's%@OUTPUT@%'"$output"'%g'` - link_command="$compile_command$compile_rpath" + link_command=$compile_command$compile_rpath # We have no uninstalled library dependencies, so finalize right now. exit_status=0 @@ -8914,12 +10408,12 @@ fi # Delete the generated files. - if test -f "$output_objdir/${outputname}S.${objext}"; then - func_show_eval '$RM "$output_objdir/${outputname}S.${objext}"' + if test -f "$output_objdir/${outputname}S.$objext"; then + func_show_eval '$RM "$output_objdir/${outputname}S.$objext"' fi exit $exit_status - fi + } if test -n "$compile_shlibpath$finalize_shlibpath"; then compile_command="$shlibpath_var=\"$compile_shlibpath$finalize_shlibpath\$$shlibpath_var\" $compile_command" @@ -8949,9 +10443,9 @@ fi fi - if test "$no_install" = yes; then + if test yes = "$no_install"; then # We don't need to create a wrapper script. - link_command="$compile_var$compile_command$compile_rpath" + link_command=$compile_var$compile_command$compile_rpath # Replace the output file specification. link_command=`$ECHO "$link_command" | $SED 's%@OUTPUT@%'"$output"'%g'` # Delete the old output file. @@ -8968,27 +10462,28 @@ exit $EXIT_SUCCESS fi - if test "$hardcode_action" = relink; then - # Fast installation is not supported - link_command="$compile_var$compile_command$compile_rpath" - relink_command="$finalize_var$finalize_command$finalize_rpath" - - func_warning "this platform does not like uninstalled shared libraries" - func_warning "\`$output' will be relinked during installation" - else - if test "$fast_install" != no; then - link_command="$finalize_var$compile_command$finalize_rpath" - if test "$fast_install" = yes; then - relink_command=`$ECHO "$compile_var$compile_command$compile_rpath" | $SED 's%@OUTPUT@%\$progdir/\$file%g'` - else - # fast_install is set to needless - relink_command= - fi - else - link_command="$compile_var$compile_command$compile_rpath" - relink_command="$finalize_var$finalize_command$finalize_rpath" - fi - fi + case $hardcode_action,$fast_install in + relink,*) + # Fast installation is not supported + link_command=$compile_var$compile_command$compile_rpath + relink_command=$finalize_var$finalize_command$finalize_rpath + + func_warning "this platform does not like uninstalled shared libraries" + func_warning "'$output' will be relinked during installation" + ;; + *,yes) + link_command=$finalize_var$compile_command$finalize_rpath + relink_command=`$ECHO "$compile_var$compile_command$compile_rpath" | $SED 's%@OUTPUT@%\$progdir/\$file%g'` + ;; + *,no) + link_command=$compile_var$compile_command$compile_rpath + relink_command=$finalize_var$finalize_command$finalize_rpath + ;; + *,needless) + link_command=$finalize_var$compile_command$finalize_rpath + relink_command= + ;; + esac # Replace the output file specification. link_command=`$ECHO "$link_command" | $SED 's%@OUTPUT@%'"$output_objdir/$outputname"'%g'` @@ -9045,8 +10540,8 @@ func_dirname_and_basename "$output" "" "." output_name=$func_basename_result output_path=$func_dirname_result - cwrappersource="$output_path/$objdir/lt-$output_name.c" - cwrapper="$output_path/$output_name.exe" + cwrappersource=$output_path/$objdir/lt-$output_name.c + cwrapper=$output_path/$output_name.exe $RM $cwrappersource $cwrapper trap "$RM $cwrappersource $cwrapper; exit $EXIT_FAILURE" 1 2 15 @@ -9067,7 +10562,7 @@ trap "$RM $func_ltwrapper_scriptname_result; exit $EXIT_FAILURE" 1 2 15 $opt_dry_run || { # note: this script will not be executed, so do not chmod. - if test "x$build" = "x$host" ; then + if test "x$build" = "x$host"; then $cwrapper --lt-dump-script > $func_ltwrapper_scriptname_result else func_emit_wrapper no > $func_ltwrapper_scriptname_result @@ -9090,25 +10585,27 @@ # See if we need to build an old-fashioned archive. for oldlib in $oldlibs; do - if test "$build_libtool_libs" = convenience; then - oldobjs="$libobjs_save $symfileobj" - addlibs="$convenience" - build_libtool_libs=no - else - if test "$build_libtool_libs" = module; then - oldobjs="$libobjs_save" + case $build_libtool_libs in + convenience) + oldobjs="$libobjs_save $symfileobj" + addlibs=$convenience build_libtool_libs=no - else + ;; + module) + oldobjs=$libobjs_save + addlibs=$old_convenience + build_libtool_libs=no + ;; + *) oldobjs="$old_deplibs $non_pic_objects" - if test "$preload" = yes && test -f "$symfileobj"; then - func_append oldobjs " $symfileobj" - fi - fi - addlibs="$old_convenience" - fi + $preload && test -f "$symfileobj" \ + && func_append oldobjs " $symfileobj" + addlibs=$old_convenience + ;; + esac if test -n "$addlibs"; then - gentop="$output_objdir/${outputname}x" + gentop=$output_objdir/${outputname}x func_append generated " $gentop" func_extract_archives $gentop $addlibs @@ -9116,13 +10613,13 @@ fi # Do each command in the archive commands. - if test -n "$old_archive_from_new_cmds" && test "$build_libtool_libs" = yes; then + if test -n "$old_archive_from_new_cmds" && test yes = "$build_libtool_libs"; then cmds=$old_archive_from_new_cmds else # Add any objects from preloaded convenience libraries if test -n "$dlprefiles"; then - gentop="$output_objdir/${outputname}x" + gentop=$output_objdir/${outputname}x func_append generated " $gentop" func_extract_archives $gentop $dlprefiles @@ -9143,7 +10640,7 @@ : else echo "copying selected object files to avoid basename conflicts..." - gentop="$output_objdir/${outputname}x" + gentop=$output_objdir/${outputname}x func_append generated " $gentop" func_mkdir_p "$gentop" save_oldobjs=$oldobjs @@ -9152,7 +10649,7 @@ for obj in $save_oldobjs do func_basename "$obj" - objbase="$func_basename_result" + objbase=$func_basename_result case " $oldobjs " in " ") oldobjs=$obj ;; *[\ /]"$objbase "*) @@ -9221,18 +10718,18 @@ else # the above command should be used before it gets too long oldobjs=$objlist - if test "$obj" = "$last_oldobj" ; then + if test "$obj" = "$last_oldobj"; then RANLIB=$save_RANLIB fi test -z "$concat_cmds" || concat_cmds=$concat_cmds~ - eval concat_cmds=\"\${concat_cmds}$old_archive_cmds\" + eval concat_cmds=\"\$concat_cmds$old_archive_cmds\" objlist= len=$len0 fi done RANLIB=$save_RANLIB oldobjs=$objlist - if test "X$oldobjs" = "X" ; then + if test -z "$oldobjs"; then eval cmds=\"\$concat_cmds\" else eval cmds=\"\$concat_cmds~\$old_archive_cmds\" @@ -9249,7 +10746,7 @@ case $output in *.la) old_library= - test "$build_old_libs" = yes && old_library="$libname.$libext" + test yes = "$build_old_libs" && old_library=$libname.$libext func_verbose "creating $output" # Preserve any variables that may affect compiler behavior @@ -9264,31 +10761,31 @@ fi done # Quote the link command for shipping. - relink_command="(cd `pwd`; $SHELL $progpath $preserve_args --mode=relink $libtool_args @inst_prefix_dir@)" + relink_command="(cd `pwd`; $SHELL \"$progpath\" $preserve_args --mode=relink $libtool_args @inst_prefix_dir@)" relink_command=`$ECHO "$relink_command" | $SED "$sed_quote_subst"` - if test "$hardcode_automatic" = yes ; then + if test yes = "$hardcode_automatic"; then relink_command= fi # Only create the output if not a dry run. $opt_dry_run || { for installed in no yes; do - if test "$installed" = yes; then + if test yes = "$installed"; then if test -z "$install_libdir"; then break fi - output="$output_objdir/$outputname"i + output=$output_objdir/${outputname}i # Replace all uninstalled libtool libraries with the installed ones newdependency_libs= for deplib in $dependency_libs; do case $deplib in *.la) func_basename "$deplib" - name="$func_basename_result" + name=$func_basename_result func_resolve_sysroot "$deplib" - eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $func_resolve_sysroot_result` + eval libdir=`$SED -n -e 's/^libdir=\(.*\)$/\1/p' $func_resolve_sysroot_result` test -z "$libdir" && \ - func_fatal_error "\`$deplib' is not a valid libtool archive" + func_fatal_error "'$deplib' is not a valid libtool archive" func_append newdependency_libs " ${lt_sysroot:+=}$libdir/$name" ;; -L*) @@ -9304,23 +10801,23 @@ *) func_append newdependency_libs " $deplib" ;; esac done - dependency_libs="$newdependency_libs" + dependency_libs=$newdependency_libs newdlfiles= for lib in $dlfiles; do case $lib in *.la) func_basename "$lib" - name="$func_basename_result" - eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib` + name=$func_basename_result + eval libdir=`$SED -n -e 's/^libdir=\(.*\)$/\1/p' $lib` test -z "$libdir" && \ - func_fatal_error "\`$lib' is not a valid libtool archive" + func_fatal_error "'$lib' is not a valid libtool archive" func_append newdlfiles " ${lt_sysroot:+=}$libdir/$name" ;; *) func_append newdlfiles " $lib" ;; esac done - dlfiles="$newdlfiles" + dlfiles=$newdlfiles newdlprefiles= for lib in $dlprefiles; do case $lib in @@ -9330,34 +10827,34 @@ # didn't already link the preopened objects directly into # the library: func_basename "$lib" - name="$func_basename_result" - eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib` + name=$func_basename_result + eval libdir=`$SED -n -e 's/^libdir=\(.*\)$/\1/p' $lib` test -z "$libdir" && \ - func_fatal_error "\`$lib' is not a valid libtool archive" + func_fatal_error "'$lib' is not a valid libtool archive" func_append newdlprefiles " ${lt_sysroot:+=}$libdir/$name" ;; esac done - dlprefiles="$newdlprefiles" + dlprefiles=$newdlprefiles else newdlfiles= for lib in $dlfiles; do case $lib in - [\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;; + [\\/]* | [A-Za-z]:[\\/]*) abs=$lib ;; *) abs=`pwd`"/$lib" ;; esac func_append newdlfiles " $abs" done - dlfiles="$newdlfiles" + dlfiles=$newdlfiles newdlprefiles= for lib in $dlprefiles; do case $lib in - [\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;; + [\\/]* | [A-Za-z]:[\\/]*) abs=$lib ;; *) abs=`pwd`"/$lib" ;; esac func_append newdlprefiles " $abs" done - dlprefiles="$newdlprefiles" + dlprefiles=$newdlprefiles fi $RM $output # place dlname in correct position for cygwin @@ -9373,10 +10870,9 @@ case $host,$output,$installed,$module,$dlname in *cygwin*,*lai,yes,no,*.dll | *mingw*,*lai,yes,no,*.dll | *cegcc*,*lai,yes,no,*.dll) # If a -bindir argument was supplied, place the dll there. - if test "x$bindir" != x ; - then + if test -n "$bindir"; then func_relative_path "$install_libdir" "$bindir" - tdlname=$func_relative_path_result$dlname + tdlname=$func_relative_path_result/$dlname else # Otherwise fall back on heuristic. tdlname=../bin/$dlname @@ -9385,7 +10881,7 @@ esac $ECHO > $output "\ # $outputname - a libtool library file -# Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION +# Generated by $PROGRAM (GNU $PACKAGE) $VERSION # # Please DO NOT delete this file! # It is necessary for linking the library. @@ -9399,7 +10895,7 @@ # The name of the static archive. old_library='$old_library' -# Linker flags that can not go in dependency_libs. +# Linker flags that cannot go in dependency_libs. inherited_linker_flags='$new_inherited_linker_flags' # Libraries that this one depends upon. @@ -9425,7 +10921,7 @@ # Directory that this library needs to be installed in: libdir='$install_libdir'" - if test "$installed" = no && test "$need_relink" = yes; then + if test no,yes = "$installed,$need_relink"; then $ECHO >> $output "\ relink_command=\"$relink_command\"" fi @@ -9440,27 +10936,29 @@ exit $EXIT_SUCCESS } -{ test "$opt_mode" = link || test "$opt_mode" = relink; } && - func_mode_link ${1+"$@"} +if test link = "$opt_mode" || test relink = "$opt_mode"; then + func_mode_link ${1+"$@"} +fi # func_mode_uninstall arg... func_mode_uninstall () { - $opt_debug - RM="$nonopt" + $debug_cmd + + RM=$nonopt files= - rmforce= + rmforce=false exit_status=0 # This variable tells wrapper scripts just to set variables rather # than running their programs. - libtool_install_magic="$magic" + libtool_install_magic=$magic for arg do case $arg in - -f) func_append RM " $arg"; rmforce=yes ;; + -f) func_append RM " $arg"; rmforce=: ;; -*) func_append RM " $arg" ;; *) func_append files " $arg" ;; esac @@ -9473,18 +10971,18 @@ for file in $files; do func_dirname "$file" "" "." - dir="$func_dirname_result" - if test "X$dir" = X.; then - odir="$objdir" + dir=$func_dirname_result + if test . = "$dir"; then + odir=$objdir else - odir="$dir/$objdir" + odir=$dir/$objdir fi func_basename "$file" - name="$func_basename_result" - test "$opt_mode" = uninstall && odir="$dir" + name=$func_basename_result + test uninstall = "$opt_mode" && odir=$dir # Remember odir for removal later, being careful to avoid duplicates - if test "$opt_mode" = clean; then + if test clean = "$opt_mode"; then case " $rmdirs " in *" $odir "*) ;; *) func_append rmdirs " $odir" ;; @@ -9499,11 +10997,11 @@ elif test -d "$file"; then exit_status=1 continue - elif test "$rmforce" = yes; then + elif $rmforce; then continue fi - rmfiles="$file" + rmfiles=$file case $name in *.la) @@ -9517,7 +11015,7 @@ done test -n "$old_library" && func_append rmfiles " $odir/$old_library" - case "$opt_mode" in + case $opt_mode in clean) case " $library_names " in *" $dlname "*) ;; @@ -9528,12 +11026,12 @@ uninstall) if test -n "$library_names"; then # Do each command in the postuninstall commands. - func_execute_cmds "$postuninstall_cmds" 'test "$rmforce" = yes || exit_status=1' + func_execute_cmds "$postuninstall_cmds" '$rmforce || exit_status=1' fi if test -n "$old_library"; then # Do each command in the old_postuninstall commands. - func_execute_cmds "$old_postuninstall_cmds" 'test "$rmforce" = yes || exit_status=1' + func_execute_cmds "$old_postuninstall_cmds" '$rmforce || exit_status=1' fi # FIXME: should reinstall the best remaining shared library. ;; @@ -9549,21 +11047,19 @@ func_source $dir/$name # Add PIC object to the list of files to remove. - if test -n "$pic_object" && - test "$pic_object" != none; then + if test -n "$pic_object" && test none != "$pic_object"; then func_append rmfiles " $dir/$pic_object" fi # Add non-PIC object to the list of files to remove. - if test -n "$non_pic_object" && - test "$non_pic_object" != none; then + if test -n "$non_pic_object" && test none != "$non_pic_object"; then func_append rmfiles " $dir/$non_pic_object" fi fi ;; *) - if test "$opt_mode" = clean ; then + if test clean = "$opt_mode"; then noexename=$name case $file in *.exe) @@ -9590,12 +11086,12 @@ # note $name still contains .exe if it was in $file originally # as does the version of $file that was added into $rmfiles - func_append rmfiles " $odir/$name $odir/${name}S.${objext}" - if test "$fast_install" = yes && test -n "$relink_command"; then + func_append rmfiles " $odir/$name $odir/${name}S.$objext" + if test yes = "$fast_install" && test -n "$relink_command"; then func_append rmfiles " $odir/lt-$name" fi - if test "X$noexename" != "X$name" ; then - func_append rmfiles " $odir/lt-${noexename}.c" + if test "X$noexename" != "X$name"; then + func_append rmfiles " $odir/lt-$noexename.c" fi fi fi @@ -9604,7 +11100,7 @@ func_show_eval "$RM $rmfiles" 'exit_status=1' done - # Try to remove the ${objdir}s in the directories where we deleted files + # Try to remove the $objdir's in the directories where we deleted files for dir in $rmdirs; do if test -d "$dir"; then func_show_eval "rmdir $dir >/dev/null 2>&1" @@ -9614,16 +11110,17 @@ exit $exit_status } -{ test "$opt_mode" = uninstall || test "$opt_mode" = clean; } && - func_mode_uninstall ${1+"$@"} +if test uninstall = "$opt_mode" || test clean = "$opt_mode"; then + func_mode_uninstall ${1+"$@"} +fi test -z "$opt_mode" && { - help="$generic_help" + help=$generic_help func_fatal_help "you must specify a MODE" } test -z "$exec_cmd" && \ - func_fatal_help "invalid operation mode \`$opt_mode'" + func_fatal_help "invalid operation mode '$opt_mode'" if test -n "$exec_cmd"; then eval exec "$exec_cmd" @@ -9634,7 +11131,7 @@ # The TAGs below are defined such that we never get into a situation -# in which we disable both kinds of libraries. Given conflicting +# where we disable both kinds of libraries. Given conflicting # choices, we go for a static library, that is the most portable, # since we can't tell whether shared libraries were disabled because # the user asked for that or because the platform doesn't support @@ -9657,5 +11154,3 @@ # mode:shell-script # sh-indentation:2 # End: -# vi:sw=2 - diff -Nru cairo-1.14.6/build/lt~obsolete.m4 cairo-1.15.10/build/lt~obsolete.m4 --- cairo-1.14.6/build/lt~obsolete.m4 2015-10-27 21:04:21.000000000 +0000 +++ cairo-1.15.10/build/lt~obsolete.m4 2017-12-07 02:13:45.000000000 +0000 @@ -1,6 +1,7 @@ # lt~obsolete.m4 -- aclocal satisfying obsolete definitions. -*-Autoconf-*- # -# Copyright (C) 2004, 2005, 2007, 2009 Free Software Foundation, Inc. +# Copyright (C) 2004-2005, 2007, 2009, 2011-2015 Free Software +# Foundation, Inc. # Written by Scott James Remnant, 2004. # # This file is free software; the Free Software Foundation gives @@ -11,7 +12,7 @@ # These exist entirely to fool aclocal when bootstrapping libtool. # -# In the past libtool.m4 has provided macros via AC_DEFUN (or AU_DEFUN) +# In the past libtool.m4 has provided macros via AC_DEFUN (or AU_DEFUN), # which have later been changed to m4_define as they aren't part of the # exported API, or moved to Autoconf or Automake where they belong. # @@ -25,7 +26,7 @@ # included after everything else. This provides aclocal with the # AC_DEFUNs it wants, but when m4 processes it, it doesn't do anything # because those macros already exist, or will be overwritten later. -# We use AC_DEFUN over AU_DEFUN for compatibility with aclocal-1.6. +# We use AC_DEFUN over AU_DEFUN for compatibility with aclocal-1.6. # # Anytime we withdraw an AC_DEFUN or AU_DEFUN, remember to add it here. # Yes, that means every name once taken will need to remain here until diff -Nru cairo-1.14.6/build/ltoptions.m4 cairo-1.15.10/build/ltoptions.m4 --- cairo-1.14.6/build/ltoptions.m4 2015-10-27 21:04:21.000000000 +0000 +++ cairo-1.15.10/build/ltoptions.m4 2017-12-07 02:13:45.000000000 +0000 @@ -1,14 +1,14 @@ # Helper functions for option handling. -*- Autoconf -*- # -# Copyright (C) 2004, 2005, 2007, 2008, 2009 Free Software Foundation, -# Inc. +# Copyright (C) 2004-2005, 2007-2009, 2011-2015 Free Software +# Foundation, Inc. # Written by Gary V. Vaughan, 2004 # # 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. -# serial 7 ltoptions.m4 +# serial 8 ltoptions.m4 # This is to help aclocal find these macros, as it can't see m4_define. AC_DEFUN([LTOPTIONS_VERSION], [m4_if([1])]) @@ -29,7 +29,7 @@ [m4_define(_LT_MANGLE_OPTION([$1], [$2]))dnl m4_ifdef(_LT_MANGLE_DEFUN([$1], [$2]), _LT_MANGLE_DEFUN([$1], [$2]), - [m4_warning([Unknown $1 option `$2'])])[]dnl + [m4_warning([Unknown $1 option '$2'])])[]dnl ]) @@ -75,13 +75,15 @@ dnl dnl If no reference was made to various pairs of opposing options, then dnl we run the default mode handler for the pair. For example, if neither - dnl `shared' nor `disable-shared' was passed, we enable building of shared + dnl 'shared' nor 'disable-shared' was passed, we enable building of shared dnl archives by default: _LT_UNLESS_OPTIONS([LT_INIT], [shared disable-shared], [_LT_ENABLE_SHARED]) _LT_UNLESS_OPTIONS([LT_INIT], [static disable-static], [_LT_ENABLE_STATIC]) _LT_UNLESS_OPTIONS([LT_INIT], [pic-only no-pic], [_LT_WITH_PIC]) _LT_UNLESS_OPTIONS([LT_INIT], [fast-install disable-fast-install], - [_LT_ENABLE_FAST_INSTALL]) + [_LT_ENABLE_FAST_INSTALL]) + _LT_UNLESS_OPTIONS([LT_INIT], [aix-soname=aix aix-soname=both aix-soname=svr4], + [_LT_WITH_AIX_SONAME([aix])]) ]) ])# _LT_SET_OPTIONS @@ -112,7 +114,7 @@ [_LT_SET_OPTION([LT_INIT], [dlopen]) AC_DIAGNOSE([obsolete], [$0: Remove this warning and the call to _LT_SET_OPTION when you -put the `dlopen' option into LT_INIT's first parameter.]) +put the 'dlopen' option into LT_INIT's first parameter.]) ]) dnl aclocal-1.4 backwards compatibility: @@ -148,7 +150,7 @@ _LT_SET_OPTION([LT_INIT], [win32-dll]) AC_DIAGNOSE([obsolete], [$0: Remove this warning and the call to _LT_SET_OPTION when you -put the `win32-dll' option into LT_INIT's first parameter.]) +put the 'win32-dll' option into LT_INIT's first parameter.]) ]) dnl aclocal-1.4 backwards compatibility: @@ -157,9 +159,9 @@ # _LT_ENABLE_SHARED([DEFAULT]) # ---------------------------- -# implement the --enable-shared flag, and supports the `shared' and -# `disable-shared' LT_INIT options. -# DEFAULT is either `yes' or `no'. If omitted, it defaults to `yes'. +# implement the --enable-shared flag, and supports the 'shared' and +# 'disable-shared' LT_INIT options. +# DEFAULT is either 'yes' or 'no'. If omitted, it defaults to 'yes'. m4_define([_LT_ENABLE_SHARED], [m4_define([_LT_ENABLE_SHARED_DEFAULT], [m4_if($1, no, no, yes)])dnl AC_ARG_ENABLE([shared], @@ -172,14 +174,14 @@ *) enable_shared=no # Look at the argument we got. We use all the common list separators. - lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," + lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR, for pkg in $enableval; do - IFS="$lt_save_ifs" + IFS=$lt_save_ifs if test "X$pkg" = "X$p"; then enable_shared=yes fi done - IFS="$lt_save_ifs" + IFS=$lt_save_ifs ;; esac], [enable_shared=]_LT_ENABLE_SHARED_DEFAULT) @@ -211,9 +213,9 @@ # _LT_ENABLE_STATIC([DEFAULT]) # ---------------------------- -# implement the --enable-static flag, and support the `static' and -# `disable-static' LT_INIT options. -# DEFAULT is either `yes' or `no'. If omitted, it defaults to `yes'. +# implement the --enable-static flag, and support the 'static' and +# 'disable-static' LT_INIT options. +# DEFAULT is either 'yes' or 'no'. If omitted, it defaults to 'yes'. m4_define([_LT_ENABLE_STATIC], [m4_define([_LT_ENABLE_STATIC_DEFAULT], [m4_if($1, no, no, yes)])dnl AC_ARG_ENABLE([static], @@ -226,14 +228,14 @@ *) enable_static=no # Look at the argument we got. We use all the common list separators. - lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," + lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR, for pkg in $enableval; do - IFS="$lt_save_ifs" + IFS=$lt_save_ifs if test "X$pkg" = "X$p"; then enable_static=yes fi done - IFS="$lt_save_ifs" + IFS=$lt_save_ifs ;; esac], [enable_static=]_LT_ENABLE_STATIC_DEFAULT) @@ -265,9 +267,9 @@ # _LT_ENABLE_FAST_INSTALL([DEFAULT]) # ---------------------------------- -# implement the --enable-fast-install flag, and support the `fast-install' -# and `disable-fast-install' LT_INIT options. -# DEFAULT is either `yes' or `no'. If omitted, it defaults to `yes'. +# implement the --enable-fast-install flag, and support the 'fast-install' +# and 'disable-fast-install' LT_INIT options. +# DEFAULT is either 'yes' or 'no'. If omitted, it defaults to 'yes'. m4_define([_LT_ENABLE_FAST_INSTALL], [m4_define([_LT_ENABLE_FAST_INSTALL_DEFAULT], [m4_if($1, no, no, yes)])dnl AC_ARG_ENABLE([fast-install], @@ -280,14 +282,14 @@ *) enable_fast_install=no # Look at the argument we got. We use all the common list separators. - lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," + lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR, for pkg in $enableval; do - IFS="$lt_save_ifs" + IFS=$lt_save_ifs if test "X$pkg" = "X$p"; then enable_fast_install=yes fi done - IFS="$lt_save_ifs" + IFS=$lt_save_ifs ;; esac], [enable_fast_install=]_LT_ENABLE_FAST_INSTALL_DEFAULT) @@ -304,14 +306,14 @@ [_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[fast-install]) AC_DIAGNOSE([obsolete], [$0: Remove this warning and the call to _LT_SET_OPTION when you put -the `fast-install' option into LT_INIT's first parameter.]) +the 'fast-install' option into LT_INIT's first parameter.]) ]) AU_DEFUN([AC_DISABLE_FAST_INSTALL], [_LT_SET_OPTION([LT_INIT], [disable-fast-install]) AC_DIAGNOSE([obsolete], [$0: Remove this warning and the call to _LT_SET_OPTION when you put -the `disable-fast-install' option into LT_INIT's first parameter.]) +the 'disable-fast-install' option into LT_INIT's first parameter.]) ]) dnl aclocal-1.4 backwards compatibility: @@ -319,11 +321,64 @@ dnl AC_DEFUN([AM_DISABLE_FAST_INSTALL], []) +# _LT_WITH_AIX_SONAME([DEFAULT]) +# ---------------------------------- +# implement the --with-aix-soname flag, and support the `aix-soname=aix' +# and `aix-soname=both' and `aix-soname=svr4' LT_INIT options. DEFAULT +# is either `aix', `both' or `svr4'. If omitted, it defaults to `aix'. +m4_define([_LT_WITH_AIX_SONAME], +[m4_define([_LT_WITH_AIX_SONAME_DEFAULT], [m4_if($1, svr4, svr4, m4_if($1, both, both, aix))])dnl +shared_archive_member_spec= +case $host,$enable_shared in +power*-*-aix[[5-9]]*,yes) + AC_MSG_CHECKING([which variant of shared library versioning to provide]) + AC_ARG_WITH([aix-soname], + [AS_HELP_STRING([--with-aix-soname=aix|svr4|both], + [shared library versioning (aka "SONAME") variant to provide on AIX, @<:@default=]_LT_WITH_AIX_SONAME_DEFAULT[@:>@.])], + [case $withval in + aix|svr4|both) + ;; + *) + AC_MSG_ERROR([Unknown argument to --with-aix-soname]) + ;; + esac + lt_cv_with_aix_soname=$with_aix_soname], + [AC_CACHE_VAL([lt_cv_with_aix_soname], + [lt_cv_with_aix_soname=]_LT_WITH_AIX_SONAME_DEFAULT) + with_aix_soname=$lt_cv_with_aix_soname]) + AC_MSG_RESULT([$with_aix_soname]) + if test aix != "$with_aix_soname"; then + # For the AIX way of multilib, we name the shared archive member + # based on the bitwidth used, traditionally 'shr.o' or 'shr_64.o', + # and 'shr.imp' or 'shr_64.imp', respectively, for the Import File. + # Even when GNU compilers ignore OBJECT_MODE but need '-maix64' flag, + # the AIX toolchain works better with OBJECT_MODE set (default 32). + if test 64 = "${OBJECT_MODE-32}"; then + shared_archive_member_spec=shr_64 + else + shared_archive_member_spec=shr + fi + fi + ;; +*) + with_aix_soname=aix + ;; +esac + +_LT_DECL([], [shared_archive_member_spec], [0], + [Shared archive member basename, for filename based shared library versioning on AIX])dnl +])# _LT_WITH_AIX_SONAME + +LT_OPTION_DEFINE([LT_INIT], [aix-soname=aix], [_LT_WITH_AIX_SONAME([aix])]) +LT_OPTION_DEFINE([LT_INIT], [aix-soname=both], [_LT_WITH_AIX_SONAME([both])]) +LT_OPTION_DEFINE([LT_INIT], [aix-soname=svr4], [_LT_WITH_AIX_SONAME([svr4])]) + + # _LT_WITH_PIC([MODE]) # -------------------- -# implement the --with-pic flag, and support the `pic-only' and `no-pic' +# implement the --with-pic flag, and support the 'pic-only' and 'no-pic' # LT_INIT options. -# MODE is either `yes' or `no'. If omitted, it defaults to `both'. +# MODE is either 'yes' or 'no'. If omitted, it defaults to 'both'. m4_define([_LT_WITH_PIC], [AC_ARG_WITH([pic], [AS_HELP_STRING([--with-pic@<:@=PKGS@:>@], @@ -334,19 +389,17 @@ *) pic_mode=default # Look at the argument we got. We use all the common list separators. - lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," + lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR, for lt_pkg in $withval; do - IFS="$lt_save_ifs" + IFS=$lt_save_ifs if test "X$lt_pkg" = "X$lt_p"; then pic_mode=yes fi done - IFS="$lt_save_ifs" + IFS=$lt_save_ifs ;; esac], - [pic_mode=default]) - -test -z "$pic_mode" && pic_mode=m4_default([$1], [default]) + [pic_mode=m4_default([$1], [default])]) _LT_DECL([], [pic_mode], [0], [What type of objects to build])dnl ])# _LT_WITH_PIC @@ -359,7 +412,7 @@ [_LT_SET_OPTION([LT_INIT], [pic-only]) AC_DIAGNOSE([obsolete], [$0: Remove this warning and the call to _LT_SET_OPTION when you -put the `pic-only' option into LT_INIT's first parameter.]) +put the 'pic-only' option into LT_INIT's first parameter.]) ]) dnl aclocal-1.4 backwards compatibility: diff -Nru cairo-1.14.6/build/ltsugar.m4 cairo-1.15.10/build/ltsugar.m4 --- cairo-1.14.6/build/ltsugar.m4 2015-10-27 21:04:21.000000000 +0000 +++ cairo-1.15.10/build/ltsugar.m4 2017-12-07 02:13:45.000000000 +0000 @@ -1,6 +1,7 @@ # ltsugar.m4 -- libtool m4 base layer. -*-Autoconf-*- # -# Copyright (C) 2004, 2005, 2007, 2008 Free Software Foundation, Inc. +# Copyright (C) 2004-2005, 2007-2008, 2011-2015 Free Software +# Foundation, Inc. # Written by Gary V. Vaughan, 2004 # # This file is free software; the Free Software Foundation gives @@ -33,7 +34,7 @@ # ------------ # Manipulate m4 lists. # These macros are necessary as long as will still need to support -# Autoconf-2.59 which quotes differently. +# Autoconf-2.59, which quotes differently. m4_define([lt_car], [[$1]]) m4_define([lt_cdr], [m4_if([$#], 0, [m4_fatal([$0: cannot be called without arguments])], @@ -44,7 +45,7 @@ # lt_append(MACRO-NAME, STRING, [SEPARATOR]) # ------------------------------------------ -# Redefine MACRO-NAME to hold its former content plus `SEPARATOR'`STRING'. +# Redefine MACRO-NAME to hold its former content plus 'SEPARATOR''STRING'. # Note that neither SEPARATOR nor STRING are expanded; they are appended # to MACRO-NAME as is (leaving the expansion for when MACRO-NAME is invoked). # No SEPARATOR is output if MACRO-NAME was previously undefined (different diff -Nru cairo-1.14.6/build/ltversion.m4 cairo-1.15.10/build/ltversion.m4 --- cairo-1.14.6/build/ltversion.m4 2015-10-27 21:04:21.000000000 +0000 +++ cairo-1.15.10/build/ltversion.m4 2017-12-07 02:13:45.000000000 +0000 @@ -1,6 +1,6 @@ # ltversion.m4 -- version numbers -*- Autoconf -*- # -# Copyright (C) 2004 Free Software Foundation, Inc. +# Copyright (C) 2004, 2011-2015 Free Software Foundation, Inc. # Written by Scott James Remnant, 2004 # # This file is free software; the Free Software Foundation gives @@ -9,15 +9,15 @@ # @configure_input@ -# serial 3337 ltversion.m4 +# serial 4179 ltversion.m4 # This file is part of GNU Libtool -m4_define([LT_PACKAGE_VERSION], [2.4.2]) -m4_define([LT_PACKAGE_REVISION], [1.3337]) +m4_define([LT_PACKAGE_VERSION], [2.4.6]) +m4_define([LT_PACKAGE_REVISION], [2.4.6]) AC_DEFUN([LTVERSION_VERSION], -[macro_version='2.4.2' -macro_revision='1.3337' +[macro_version='2.4.6' +macro_revision='2.4.6' _LT_DECL(, macro_version, 0, [Which release of libtool.m4 was used?]) _LT_DECL(, macro_revision, 0) ]) diff -Nru cairo-1.14.6/build/Makefile.win32.features cairo-1.15.10/build/Makefile.win32.features --- cairo-1.14.6/build/Makefile.win32.features 2015-10-27 21:04:21.000000000 +0000 +++ cairo-1.15.10/build/Makefile.win32.features 2017-12-07 02:14:36.000000000 +0000 @@ -19,6 +19,7 @@ CAIRO_HAS_PNG_FUNCTIONS=1 CAIRO_HAS_GL_SURFACE=0 CAIRO_HAS_GLESV2_SURFACE=0 +CAIRO_HAS_GLESV3_SURFACE=0 CAIRO_HAS_COGL_SURFACE=0 CAIRO_HAS_DIRECTFB_SURFACE=0 CAIRO_HAS_VG_SURFACE=0 diff -Nru cairo-1.14.6/build/Makefile.win32.features-h cairo-1.15.10/build/Makefile.win32.features-h --- cairo-1.14.6/build/Makefile.win32.features-h 2015-10-27 21:04:21.000000000 +0000 +++ cairo-1.15.10/build/Makefile.win32.features-h 2017-12-07 02:14:36.000000000 +0000 @@ -62,6 +62,9 @@ ifeq ($(CAIRO_HAS_GLESV2_SURFACE),1) @echo "#define CAIRO_HAS_GLESV2_SURFACE 1" >> $(top_srcdir)/src/cairo-features.h endif +ifeq ($(CAIRO_HAS_GLESV3_SURFACE),1) + @echo "#define CAIRO_HAS_GLESV3_SURFACE 1" >> $(top_srcdir)/src/cairo-features.h +endif ifeq ($(CAIRO_HAS_COGL_SURFACE),1) @echo "#define CAIRO_HAS_COGL_SURFACE 1" >> $(top_srcdir)/src/cairo-features.h endif diff -Nru cairo-1.14.6/build/missing cairo-1.15.10/build/missing --- cairo-1.14.6/build/missing 2015-10-27 21:04:21.000000000 +0000 +++ cairo-1.15.10/build/missing 2017-12-07 02:13:45.000000000 +0000 @@ -3,7 +3,7 @@ scriptversion=2013-10-28.13; # UTC -# Copyright (C) 1996-2013 Free Software Foundation, Inc. +# Copyright (C) 1996-2014 Free Software Foundation, Inc. # Originally written by Fran,cois Pinard , 1996. # This program is free software; you can redistribute it and/or modify diff -Nru cairo-1.14.6/build/test-driver cairo-1.15.10/build/test-driver --- cairo-1.14.6/build/test-driver 2015-10-27 21:04:21.000000000 +0000 +++ cairo-1.15.10/build/test-driver 2017-12-07 02:13:45.000000000 +0000 @@ -3,7 +3,7 @@ scriptversion=2013-07-13.22; # UTC -# Copyright (C) 2011-2013 Free Software Foundation, Inc. +# Copyright (C) 2011-2014 Free Software Foundation, Inc. # # 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 @@ -106,11 +106,14 @@ # Test script is run here. "$@" >$log_file 2>&1 estatus=$? + if test $enable_hard_errors = no && test $estatus -eq 99; then - estatus=1 + tweaked_estatus=1 +else + tweaked_estatus=$estatus fi -case $estatus:$expect_failure in +case $tweaked_estatus:$expect_failure in 0:yes) col=$red res=XPASS recheck=yes gcopy=yes;; 0:*) col=$grn res=PASS recheck=no gcopy=no;; 77:*) col=$blu res=SKIP recheck=no gcopy=yes;; @@ -119,6 +122,12 @@ *:*) col=$red res=FAIL recheck=yes gcopy=yes;; esac +# Report the test outcome and exit status in the logs, so that one can +# know whether the test passed or failed simply by looking at the '.log' +# file, without the need of also peaking into the corresponding '.trs' +# file (automake bug#11814). +echo "$res $test_name (exit status: $estatus)" >>$log_file + # Report outcome to console. echo "${col}${res}${std}: $test_name" diff -Nru cairo-1.14.6/cairo-version.h cairo-1.15.10/cairo-version.h --- cairo-1.14.6/cairo-version.h 2015-12-09 20:40:45.000000000 +0000 +++ cairo-1.15.10/cairo-version.h 2017-12-11 20:57:24.000000000 +0000 @@ -2,7 +2,7 @@ #define CAIRO_VERSION_H #define CAIRO_VERSION_MAJOR 1 -#define CAIRO_VERSION_MINOR 14 -#define CAIRO_VERSION_MICRO 6 +#define CAIRO_VERSION_MINOR 15 +#define CAIRO_VERSION_MICRO 10 #endif diff -Nru cairo-1.14.6/ChangeLog cairo-1.15.10/ChangeLog --- cairo-1.14.6/ChangeLog 2015-12-09 20:45:08.000000000 +0000 +++ cairo-1.15.10/ChangeLog 2017-12-11 21:03:32.000000000 +0000 @@ -1,20717 +1,6881 @@ # Generated by configure. Do not edit. -commit 9d3191da6fae7dfd914c3516d6ba369c9ba1a576 +commit 95c464d5feaae58b6cc0990434ce2498cc315dc6 Author: Bryce Harrington -AuthorDate: Wed Dec 9 12:41:13 2015 -0800 +AuthorDate: Mon Dec 11 13:02:28 2017 -0800 Commit: Bryce Harrington -CommitDate: Wed Dec 9 12:41:13 2015 -0800 +CommitDate: Mon Dec 11 13:02:38 2017 -0800 - Release 1.14.6 + 1.15.10 release + + Signed-off-by: Bryce Harrington - NEWS | 31 +++++++++++++++++++++++++++++++ + NEWS | 72 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ cairo-version.h | 2 +- - 2 files changed, 32 insertions(+), 1 deletion(-) + 2 files changed, 73 insertions(+), 1 deletion(-) -commit 3372181a17c196af0644abe1b9c63a4b57815c9a +commit f723ce31920cf5d5fe0ba417bb4b50b62a3ac4e6 Author: Bryce Harrington -AuthorDate: Wed Dec 9 11:02:43 2015 -0800 +AuthorDate: Thu Dec 7 15:53:16 2017 -0800 Commit: Bryce Harrington -CommitDate: Wed Dec 9 11:02:43 2015 -0800 +CommitDate: Thu Dec 7 15:53:16 2017 -0800 - Revert "win32: Add a win32 boilerplate that uses a real window" + pattern: Mark a private routine as cairo_private. - This reverts commit 549e511814c4ebb476b6e45871ab7734f7ca915d. + Fixes distcheck PLT error: - Fixes: https://bugs.freedesktop.org/show_bug.cgi?id=92771 + Checking .libs/libcairo.so for local PLT entries + 000000000031f1d0 0000024200000007 R_X86_64_JUMP_SLOT + 0000000000055de0 _cairo_pattern_is_constant_alpha + 0 - boilerplate/cairo-boilerplate-win32.c | 242 ++-------------------------------- - 1 file changed, 14 insertions(+), 228 deletions(-) + src/cairo-pattern-private.h | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) -commit 5d336c66ab9fbb64c8dbefbacb2b846aaed1d9e7 +commit c9a78ec9c21900f4418988ffe832b7e611a776c8 Author: Bryce Harrington -AuthorDate: Thu Oct 29 18:19:01 2015 -0700 +AuthorDate: Thu Dec 7 14:15:17 2017 -0800 Commit: Bryce Harrington -CommitDate: Thu Oct 29 18:19:01 2015 -0700 +CommitDate: Thu Dec 7 14:15:17 2017 -0800 - Bump version for new stable tree, 1.14.5 + Fix distcheck errors on use of #ifdef + + Checking that feature conditionals are used with #if only (not #ifdef) + ./cairo-ft.h:#ifdef CAIRO_HAS_FC_FONT + ./cairo-ft.h:#ifdef CAIRO_HAS_FC_FONT - NEWS | 2 +- - cairo-version.h | 2 +- - 2 files changed, 2 insertions(+), 2 deletions(-) + src/cairo-ft.h | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) -commit 0317ee7f61f1f4d154f7cb7e56d2b1080c2c644a +commit 04b4967586ac31763186d9894107b8c8403bcb34 Author: Bryce Harrington -AuthorDate: Wed Oct 28 20:15:53 2015 -0700 +AuthorDate: Thu Dec 7 14:00:21 2017 -0800 Commit: Bryce Harrington -CommitDate: Wed Oct 28 20:15:53 2015 -0700 +CommitDate: Thu Dec 7 14:13:32 2017 -0800 - 1.14.4 release + Fix various doxygen warnings found by check-doc-syntax.sh + + ./cairo-clip-boxes.c (268): ERROR: copy invalid doc id (should be 'cairo_...:') + ./cairo-clip-boxes.c (274): ERROR: copy bad line: ' */' + ./cairo-clip-boxes.c (274): ERROR: copy documentation comment not closed with **/ + ./cairo-boxes.c (106): ERROR: Computes invalid doc id (should be 'cairo_...:') + ./cairo-boxes.c (114): ERROR: Computes bad line: ' */' + ./cairo-boxes.c (114): ERROR: Computes documentation comment not closed with **/ + ./cairo-boxes.c (279): ERROR: Computes invalid doc id (should be 'cairo_...:') + ./cairo-boxes.c (284): ERROR: Computes bad line: ' */' + ./cairo-boxes.c (284): ERROR: Computes documentation comment not closed with **/ + ./cairo-boxes.c (338): ERROR: Linearize invalid doc id (should be 'cairo_...:') + ./cairo-boxes.c (345): ERROR: Linearize documentation comment not closed with **/ + ./cairo.c (240): ERROR: SECTION:cairo-tag bad line: '' + ./cairo.c (892): ERROR: cairo_set_source_rgb: Duplicate 'Since' field - cairo-version.h | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) + src/cairo-boxes.c | 23 +++++++++++++---------- + src/cairo-clip-boxes.c | 11 +++++------ + src/cairo-svg-surface.c | 2 +- + src/cairo.c | 4 +--- + 4 files changed, 20 insertions(+), 20 deletions(-) -commit 01fff9f2d1646f27bd6f5cefcd880028330a2f67 +commit dbc1636a9b932fd81ace436a03c1992a6ac1cbcf Author: Bryce Harrington -AuthorDate: Wed Oct 28 18:02:23 2015 -0700 +AuthorDate: Thu Dec 7 13:25:58 2017 -0800 Commit: Bryce Harrington -CommitDate: Wed Oct 28 20:14:29 2015 -0700 +CommitDate: Thu Dec 7 14:13:32 2017 -0800 - NEWS: Update for 1.14.4 release + win32: Fix since field version number + + check-doc-syntax.sh expects since numbers to be MAJOR.MINOR without a + patch level number - NEWS | 88 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ - 1 file changed, 88 insertions(+) + src/win32/cairo-win32-display-surface.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) -commit 6eba71d2170443fb33e4d64261607f39b37245d6 +commit bb0d616c4efe1015d17d41125f235a219ad14322 Author: Bryce Harrington -AuthorDate: Wed Oct 28 17:37:41 2015 -0700 +AuthorDate: Wed Dec 6 18:27:21 2017 -0800 Commit: Bryce Harrington -CommitDate: Wed Oct 28 17:37:41 2015 -0700 +CommitDate: Thu Dec 7 14:13:28 2017 -0800 - Revert "win32: Add cairo API to set up a Win32 surface for an HDC with an alpha channel." + image: Fix include for use of ptrdiff - This adds a new API call, which we generally avoid in micro releases. + Commit 38fbe621 added use of the ptrdiff_t type in a header file, + however `make distcheck` complains: - This reverts commit 3d489616a2fc624dc5e94164f23a4c8536d466d0. + In file included from headers-standalone-tmp.c:1:0: + ../../../src/cairo-image-surface-private.h:74:5: error: unknown type name ‘ptrdiff_t’ + ptrdiff_t stride; + ^ - src/cairo-win32.h | 4 -- - src/win32/cairo-win32-display-surface.c | 68 ++++++++------------------------- - 2 files changed, 16 insertions(+), 56 deletions(-) + src/cairo-image-surface-private.h | 1 + + 1 file changed, 1 insertion(+) -commit b15e18fb9045b21d6ab2eb531ac62f3693fd302c -Author: Bryce Harrington -AuthorDate: Fri Jul 17 12:07:18 2015 -0700 +commit 15559b54af473d720da9e03b0e769c54a53505a9 +Author: Antonio Ospite +AuthorDate: Wed Oct 11 18:51:13 2017 +0200 Commit: Bryce Harrington -CommitDate: Wed Oct 28 17:33:30 2015 -0700 +CommitDate: Mon Dec 4 13:58:34 2017 -0800 - Revert "pattern: allow for a floating one pixel rounded difference." + svg: add a new function to specify the SVG document unit - While this fixed a real bug, in testing this patch was found to fail a - number of tests and thus needs further work. + Add a cairo_svg_surface_set_document_unit() function to allow users to + set a unit for the width and height values of the root element. - This reverts commit e7acf4b6dc6666c2a2c54fb08e9ad6f01a1d415f. + In particular this allows to draw in pixels and still have the expected + result when generating SVG output. + + Add also the correspondent getter function. + + Fixes: https://bugs.freedesktop.org/show_bug.cgi?id=90166 + Reviewed-by: Bryce Harrington - src/cairo-pattern.c | 10 +++++----- - 1 file changed, 5 insertions(+), 5 deletions(-) + src/cairo-svg-surface.c | 84 +++++++++++++++++++++++++++++++++++++++++++++++-- + src/cairo-svg.h | 47 +++++++++++++++++++++++++++ + 2 files changed, 129 insertions(+), 2 deletions(-) -commit 580a1b6c39ea2a3c5fab5f2b6764a78f80f48aa2 -Author: Uli Schlachter -AuthorDate: Wed Oct 14 14:24:16 2015 +0200 -Commit: Bryce Harrington -CommitDate: Wed Oct 28 17:11:41 2015 -0700 +commit 84fc0ce91d1a57d20500f710abc0e17de82c67df +Author: Tom Schoonjans +AuthorDate: Thu Nov 2 16:55:22 2017 +0000 +Commit: Adrian Johnson +CommitDate: Sun Nov 26 20:16:43 2017 +1030 - xcb: Fix _put_image_boxes() if no SHM is available + Use UTF-8 filenames on Windows - This function tries to use _cairo_xcb_connection_put_image() to do the actual - work. However, that function can only be used for images with "native" stride. - If we only want to upload a rectangle from within an image, the function - _cairo_xcb_connection_put_subimage() has to be used. This function makes sure - that the correct information is sent to the X11 server. + Until now fopen was used on Windows to open files for reading and + writing. This assumed however that the filename would be encoded in the + current codepage, which is a major inconvenience and makes it even + impossible to use filenames that use characters from more than one + codepage. This patch enforces the use of UTF-8 filenames on all + platforms. - No unit test for this, because we currently do not test the !SHM case - automatically. Perhaps we should? + Based on the work of Owen Taylor (https://lists.cairographics.org/archives/cairo/2007-February/009591.html) + + src/cairo-misc.c | 62 +++++++++++++++++++++++++++++++++++++++++++++++ + src/cairo-output-stream.c | 7 +++++- + src/cairo-png.c | 20 +++++++++++---- + src/cairoint.h | 4 +++ + 4 files changed, 87 insertions(+), 6 deletions(-) + +commit e5532f5ad7f5493d703f9a7110b0816b5fa33e54 +Author: Mikhail Fludkov +AuthorDate: Mon Nov 6 13:07:00 2017 +0100 +Commit: Adrian Johnson +CommitDate: Sun Nov 26 13:09:51 2017 +1030 + + Fix code generation when using GCC legacy atomic operations - Signed-off-by: Uli Schlachter + https://bugs.freedesktop.org/show_bug.cgi?id=103559 - src/cairo-xcb-surface.c | 18 +++++++++--------- - 1 file changed, 9 insertions(+), 9 deletions(-) + build/aclocal.cairo.m4 | 8 ++++---- + src/cairo-atomic-private.h | 9 +-------- + 2 files changed, 5 insertions(+), 12 deletions(-) -commit 853c29eed12ab5539247acb130ffef559df82b38 -Author: Uli Schlachter -AuthorDate: Wed Oct 14 14:22:50 2015 +0200 -Commit: Bryce Harrington -CommitDate: Wed Oct 28 17:11:11 2015 -0700 +commit f614f588e67daebd123bb6698b56d4b8054616c4 +Author: Adrian Johnson +AuthorDate: Sat Nov 11 16:59:47 2017 +1030 +Commit: Adrian Johnson +CommitDate: Sun Nov 26 13:03:44 2017 +1030 - xcb: Fix _put_shm_image_boxes if no SHM available + Prevent -Wundef warnings in when cairo-ft.h is used without fontconfig + + src/cairo-ft.h | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +commit a709197121c8e405c2dd99e408ee3046ccf50a6a +Author: Adrian Johnson +AuthorDate: Sun Nov 26 13:03:18 2017 +1030 +Commit: Adrian Johnson +CommitDate: Sun Nov 26 13:03:18 2017 +1030 + + pdf: fix some annotation bugs - This function always returned CAIRO_INT_STATUS_SUCCESS, even if it didn't do - anything. This commit makes the function return CAIRO_INT_STATUS_UNSUPPORTED - instead. + - each annotation was emitted on every page instead of just the page + that contains the annotation - No unit test for this, because we currently do not test the !SHM case - automatically. Perhaps we should? + - the document structure did not correctly link to annotation objects - Signed-off-by: Uli Schlachter + - fix some annotation related memory leaks - src/cairo-xcb-surface.c | 3 +-- - 1 file changed, 1 insertion(+), 2 deletions(-) + src/cairo-pdf-interchange.c | 165 ++++++++++++++++++++++++++++++---------- + src/cairo-pdf-surface-private.h | 14 ++-- + src/cairo-pdf-surface.c | 3 +- + src/cairo-tag-attributes.c | 4 + + 4 files changed, 138 insertions(+), 48 deletions(-) -commit 3fb344fefd16751d42121bf7864a9878661cabe9 -Author: Rodrigo Rivas Costa -AuthorDate: Wed Sep 30 23:53:23 2015 +0930 -Commit: Bryce Harrington -CommitDate: Wed Oct 28 17:10:25 2015 -0700 +commit 17e2abc992b012ac3dceb2f66fba17d312ae6d77 +Author: Adrian Johnson +AuthorDate: Mon Nov 20 05:37:34 2017 +1030 +Commit: Adrian Johnson +CommitDate: Mon Nov 20 05:37:34 2017 +1030 - win32-print: fix transparent images have black background + ps: fix compile with old versions of MSVC - Bug 91835 + https://lists.cairographics.org/archives/cairo/2017-November/028452.html - src/win32/cairo-win32-printing-surface.c | 2 +- + src/cairo-ps-surface.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) -commit aa458ef5367eee727a421eb97f89e8eb8643ce10 -Author: Bryce Harrington -AuthorDate: Fri Aug 28 13:23:45 2015 -0700 -Commit: Bryce Harrington -CommitDate: Wed Oct 28 17:04:11 2015 -0700 +commit 0c8070f5bc74c124e6393b433a61807a8e4bee5d +Author: Adrian Johnson +AuthorDate: Thu Nov 16 20:16:14 2017 +1030 +Commit: Adrian Johnson +CommitDate: Thu Nov 16 20:16:14 2017 +1030 - Ensure null-terminated result from strncpy() + pdf: fix document structure for non tagged structures - src/cairo-scaled-font-subsets.c | 6 ++++-- - 1 file changed, 4 insertions(+), 2 deletions(-) + src/cairo-pdf-interchange.c | 26 ++++++++++++++++++++------ + 1 file changed, 20 insertions(+), 6 deletions(-) -commit 6bde9f35df56ffaf574d098f61c60f6291f34b72 -Author: Sahil Vij -AuthorDate: Fri Aug 7 18:01:18 2015 -0700 -Commit: Bryce Harrington -CommitDate: Wed Oct 28 17:02:55 2015 -0700 +commit 164be896603ceb419c5bc47c7348781f791f70e4 +Author: Adrian Johnson +AuthorDate: Fri Nov 10 20:10:01 2017 +1030 +Commit: Adrian Johnson +CommitDate: Fri Nov 10 20:10:01 2017 +1030 - gl: Fix bug in _cairo_gl_pattern_texture_setup() - - The memory allocated to "image" at line 298 is not freed before moving to label fail at line 305 and 314. - This patch takes care of this memory leak in above mentioned cases. - - Fixes: https://bugs.freedesktop.org/show_bug.cgi?id=91537 - Signed-off-by: Sahil Vij - Reviewed-by: Bryce Harrington + test: update some stale ref images - src/cairo-gl-operand.c | 8 ++++++-- - 1 file changed, 6 insertions(+), 2 deletions(-) + test/reference/record-extend-pad.ps.ref.png | Bin 341 -> 0 bytes + ...recording-surface-extend-none.pdf.argb32.ref.png | Bin 3941 -> 3944 bytes + .../recording-surface-extend-none.pdf.rgb24.ref.png | Bin 3775 -> 3773 bytes + ...ording-surface-extend-reflect.pdf.argb32.ref.png | Bin 29897 -> 29999 bytes + ...cording-surface-extend-reflect.pdf.rgb24.ref.png | Bin 29901 -> 29984 bytes + ...cording-surface-extend-repeat.pdf.argb32.ref.png | Bin 26323 -> 26534 bytes + ...ecording-surface-extend-repeat.pdf.rgb24.ref.png | Bin 25867 -> 26017 bytes + test/reference/scale-offset-similar.pdf.ref.png | Bin 9742 -> 9742 bytes + 8 files changed, 0 insertions(+), 0 deletions(-) -commit eb56bf8a5079c87d38d5eae63064308c14fdb876 -Author: Bryce Harrington -AuthorDate: Thu Jul 30 17:16:53 2015 -0700 -Commit: Bryce Harrington -CommitDate: Wed Oct 28 17:02:16 2015 -0700 +commit 5c7a6ca141363333a5dc9d2eaef055d383f91ef9 +Author: Adrian Johnson +AuthorDate: Fri Nov 10 20:10:01 2017 +1030 +Commit: Adrian Johnson +CommitDate: Fri Nov 10 20:10:01 2017 +1030 - boilerplate: Fix list termination for glXChooseVisual - - The attribute list is terminated by GLX_NONE (defined as 0x8000), but - the man page of 'glXChooseVisual' says it must be terminated with None - (0L). - - Issue found and fix suggested by Massimo. - - Signed-off-by: Bryce Harrington - Fixes: https://bugs.freedesktop.org/show_bug.cgi?id=91293 + ps: fix extend-*-similar failures - boilerplate/cairo-boilerplate-glx.c | 4 ++-- - 1 file changed, 2 insertions(+), 2 deletions(-) + src/cairo-ps-surface-private.h | 1 + + src/cairo-ps-surface.c | 39 +++++++++++++++++++++------------------ + 2 files changed, 22 insertions(+), 18 deletions(-) -commit d18212f67d0a772737e10b862f615c3822d6d13b -Author: Bryce Harrington -AuthorDate: Thu Jul 30 16:45:15 2015 -0700 -Commit: Bryce Harrington -CommitDate: Wed Oct 28 17:02:07 2015 -0700 +commit 9bfa9df2bb8557623df7c561613ea6eaa2a67cdd +Author: Adrian Johnson +AuthorDate: Thu Nov 9 20:52:36 2017 +1030 +Commit: Adrian Johnson +CommitDate: Thu Nov 9 22:02:05 2017 +1030 - test: Free the memory, not the pointer to the memory + ps: fix padded image crash + + src/cairo-ps-surface.c | 8 +++----- + 1 file changed, 3 insertions(+), 5 deletions(-) + +commit f7d6d78f9428c6813e79d5f7c1351c354d44da64 +Author: Adrian Johnson +AuthorDate: Thu Nov 9 20:52:36 2017 +1030 +Commit: Adrian Johnson +CommitDate: Thu Nov 9 22:02:05 2017 +1030 + + ps: prevent self-copy infinite loop + + src/cairo-ps-surface-private.h | 3 ++- + src/cairo-ps-surface.c | 24 +++++++++++++++++++++++- + 2 files changed, 25 insertions(+), 2 deletions(-) + +commit 71746c37d48a08d56b18d4d82185896ada215194 +Author: Adrian Johnson +AuthorDate: Thu Nov 9 20:52:36 2017 +1030 +Commit: Adrian Johnson +CommitDate: Thu Nov 9 22:02:05 2017 +1030 + + test: use CAIRO_MIME_TYPE_UNIQUE_ID with record-text-transform - In read_file(), we see: + The PS output from this test is > 100MB due to the duplicated images. + Using CAIRO_MIME_TYPE_UNIQUE_ID reduces the PS output to 650k, runs + considerably faster, and now produces correct output. + + test/cairo-test.c | 5 +++++ + test/record.c | 11 +++++++++++ + .../reference/record-text-transform.ps.argb32.ref.png | Bin 1216 -> 3995 bytes + test/reference/record-text-transform.ps.rgb24.ref.png | Bin 1216 -> 3995 bytes + 4 files changed, 16 insertions(+) + +commit 5ffbaf9e2f7da103da8d015b5f928e25f9433b60 +Author: Adrian Johnson +AuthorDate: Thu Nov 9 20:52:36 2017 +1030 +Commit: Adrian Johnson +CommitDate: Thu Nov 9 22:02:05 2017 +1030 + + ps: add CAIRO_MIME_TYPE_EPS mime type for embedding EPS files + + doc/public/cairo-sections.txt | 2 + + src/cairo-ps-surface-private.h | 1 + + src/cairo-ps-surface.c | 183 +++++++++++++++++++++++++++++++++++-- + src/cairo-surface.c | 18 ++++ + src/cairo-tag-attributes-private.h | 7 ++ + src/cairo-tag-attributes.c | 47 ++++++++++ + src/cairo.h | 2 + + 7 files changed, 252 insertions(+), 8 deletions(-) + +commit 7d3ba77b6cd20f68cfbda3d8008811265aa030cb +Author: Adrian Johnson +AuthorDate: Thu Nov 9 20:52:36 2017 +1030 +Commit: Adrian Johnson +CommitDate: Thu Nov 9 22:01:40 2017 +1030 + + ps: use Reusable streams for forms in Level 3 - *data = malloc (*len); - ... - if (fread(*data, *len, 1, fp) != 1) { - free(data); - ... + to avoid emitting image data as strings + + src/cairo-ps-surface.c | 57 +++++++++++++++++++++++++++++++++++++++++++------- + test/mime-unique-id.c | 2 +- + 2 files changed, 50 insertions(+), 9 deletions(-) + +commit b1c7a087b5da9a3bfa1e05e2e99861e07723c6f8 +Author: Adrian Johnson +AuthorDate: Thu Nov 9 20:52:36 2017 +1030 +Commit: Adrian Johnson +CommitDate: Thu Nov 9 22:01:40 2017 +1030 + + ps: use forms for surfaces with UNIQUE_ID mime type - The free call needs to be free(*data), to match the malloc call. + to ensure the surfaces are emitted only once. - Matthias Clasen found this via Coverity and proposed the fix. + fixes mime-unique-id PS output + + src/cairo-ps-surface-private.h | 19 +- + src/cairo-ps-surface.c | 665 ++++++++++++++++++++++++++++++++--------- + test/mime-unique-id.c | 4 +- + 3 files changed, 544 insertions(+), 144 deletions(-) + +commit 638d64a702449fee130b103e623c8fa3b8c06e9b +Author: Adrian Johnson +AuthorDate: Thu Nov 9 20:52:36 2017 +1030 +Commit: Adrian Johnson +CommitDate: Thu Nov 9 22:01:40 2017 +1030 + + ps: don't acquire image or snapshot in acquire_source_image_from_pattern - Signed-off-by: Bryce Harrington - Fixes: https://bugs.freedesktop.org/show_bug.cgi?id=91381 + otherwise emit_surface may not see the mime data - test/pdf-mime-data.c | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) + src/cairo-ps-surface.c | 156 +++++++++++++++++++------------------------------ + 1 file changed, 61 insertions(+), 95 deletions(-) -commit 6c41ed5b9b0bfb63d576ec378dc1ef3dd2f9b891 -Author: Arpit Jain -AuthorDate: Mon Jul 13 11:31:48 2015 +0530 -Commit: Bryce Harrington -CommitDate: Wed Oct 28 16:59:39 2015 -0700 +commit fcc037a76ecd70050e324d0e3f7decd81f2f0a05 +Author: Adrian Johnson +AuthorDate: Thu Nov 9 20:52:36 2017 +1030 +Commit: Adrian Johnson +CommitDate: Thu Nov 9 22:01:40 2017 +1030 - gl: Fix incorrect size of expression + ps: use << >> for dictionaries instead of dict begin end + + src/cairo-ps-surface.c | 94 ++++++++++++++++++++++++-------------------------- + 1 file changed, 46 insertions(+), 48 deletions(-) + +commit 632232c3ce465e31929ab026012c731491492d6a +Author: Adrian Johnson +AuthorDate: Thu Nov 9 20:52:36 2017 +1030 +Commit: Adrian Johnson +CommitDate: Thu Nov 9 22:01:40 2017 +1030 + + ps: remove unused prolog + + src/cairo-ps-surface.c | 3 --- + 1 file changed, 3 deletions(-) + +commit 9d372ca91a067b00fc1f66f466ab795206f5ef14 +Author: Adrian Johnson +AuthorDate: Thu Nov 9 20:52:36 2017 +1030 +Commit: Adrian Johnson +CommitDate: Thu Nov 9 22:01:40 2017 +1030 + + ps: emit base85 strings instead of strings of base85 - The sizeof operator now applied to the correct variable "ctx->glyph_cache", - instead of its pointer address, in function "_cairo_gl_composite_flush". + When image data is emitted as strings (required when an image is used + in a PaintProc), the base85 encoded data was emitted inside PS strings + (...) and the image filters included an ASCI85Decode filter. - Fixes: https://bugs.freedesktop.org/show_bug.cgi?id=91321 - Signed-off-by: Arpit Jain - Reviewed-by: Bryce Harrington + This has been changed to emit the strings as ASCII85 strings <~...~> + and remove the ASCII85Decode filter since the base85 is decoded when + the string is parsed. + + Also factor out the string data source procedure into the prolog. - src/cairo-gl-composite.c | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) + src/cairo-ps-surface.c | 186 +++++++++++++++++++++---------------------------- + 1 file changed, 79 insertions(+), 107 deletions(-) -commit 776cc09016951a72fce5eb4f05d08a3fb56e3589 -Author: Ashim -AuthorDate: Thu Jul 9 10:43:30 2015 +0530 -Commit: Bryce Harrington -CommitDate: Wed Oct 28 16:59:23 2015 -0700 +commit d5cb45013bf10d97657cea105683bf5ccb21c2d7 +Author: Adrian Johnson +AuthorDate: Thu Nov 9 20:52:36 2017 +1030 +Commit: Adrian Johnson +CommitDate: Thu Nov 9 22:01:40 2017 +1030 - Fix out of bound access in struct pattern->type + pdf: fix mime-unique-id jpeg attached to recording test - The pattern structure is hardcoded to hold 7 elements, yet the - pattern_names array in cairo-surface-observer.c is initialized with 8 - strings. This causes a crash in print_array at line 1587 when it tries - to access the 8th member. + - Restructure the emit_surface code so that mime types are checked first. - Hence changed the 'type' array from type[7] to type[8] to avoid out of - bound access. + - Add a test parameter to emit_surface to test if the surface will be emitted + as an image or recording instead checking the surface type as the attached + mime may override this. - Fixes: https://bugs.freedesktop.org/show_bug.cgi?id=91266 - Signed-off-by: Ashim - Reviewed-by: Bryce Harrington + - Mark surface as not clear when mime is attached to avoid optimizing away + "clear" surfaces that have mime attached. + + - Include entire surface in analysis if mime attached (also fixes bug with + calculating the extents CONTENT_COLOR surfaces) - src/cairo-surface-observer-private.h | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) + src/cairo-analysis-surface.c | 172 +++++++++++++++++++---------------- + src/cairo-pdf-surface.c | 209 +++++++++++++++++++++++++++++-------------- + src/cairo-surface.c | 42 +++++++++ + src/cairoint.h | 3 + + test/mime-unique-id.c | 4 +- + 5 files changed, 286 insertions(+), 144 deletions(-) -commit da1dcfa6c6240443abe61de1694eafca88346c32 -Author: Arpit Jain -AuthorDate: Fri Jul 3 15:31:48 2015 +0530 -Commit: Bryce Harrington -CommitDate: Wed Oct 28 16:57:55 2015 -0700 +commit bff47b43c4b0501c0255e9ba191904bea13ddf5c +Author: Adrian Johnson +AuthorDate: Thu Nov 9 20:52:36 2017 +1030 +Commit: Adrian Johnson +CommitDate: Thu Nov 9 20:52:36 2017 +1030 - test/bitmap-font: Fix use of pointer after freed pointer + pdf: fix mime-unique-id unbounded recording test - The pointer 'filename' is already freed and still used as a function - argument. This patch will free the pointer 'filename' only after it is - used. + PDF XObjects need to specify the bounding box. Emit unbounded surfaces + when finishing as at this point the extents of all uses of the + unbounded surface are known. + + src/cairo-pdf-surface-private.h | 7 +++- + src/cairo-pdf-surface.c | 85 +++++++++++++++++++++++++++++++---------- + src/cairo-surface.c | 4 +- + 3 files changed, 72 insertions(+), 24 deletions(-) + +commit cf9a07035292f3a1a3d057cfbb9dac1447a11235 +Author: Adrian Johnson +AuthorDate: Thu Nov 9 20:52:36 2017 +1030 +Commit: Adrian Johnson +CommitDate: Thu Nov 9 20:52:36 2017 +1030 + + pdf: fix mime-unique-id bounded recording test - Also, the patch ensures that it frees the pointer 'filename' before any - return of this function. + The embedded bounded recording surface was being clipped to the + extents of its first use. + + src/cairo-pdf-surface.c | 77 ++++++++++++++++++++----------------------------- + 1 file changed, 31 insertions(+), 46 deletions(-) + +commit 5e4707a10d476604614bddcc9ba8b06f6002e6d6 +Author: Adrian Johnson +AuthorDate: Thu Nov 9 20:52:36 2017 +1030 +Commit: Adrian Johnson +CommitDate: Thu Nov 9 20:52:36 2017 +1030 + + Add mime-unique-id test - Fixes: https://bugs.freedesktop.org/show_bug.cgi?id=91206 - Signed-off-by: Arpit Jain - Reviewed-by: Bryce Harrington + to check that PS/PDF embeds images with CAIRO_MIME_TYPE_UNIQUE_ID only + once. - test/bitmap-font.c | 4 +++- - 1 file changed, 3 insertions(+), 1 deletion(-) + test/Makefile.sources | 2 +- + test/mime-unique-id.c | 511 ++++++++++++++++++++++++++++++++++++++++++++++++++ + 2 files changed, 512 insertions(+), 1 deletion(-) -commit be9eda28616e60a082b72d884f4ab4dafba5b0db -Author: Bryce Harrington -AuthorDate: Sat Jun 27 00:43:04 2015 -0700 +commit 38fbe621cf80d560cfc27b54b5417b62cda64c8a +Author: Adrian Johnson +AuthorDate: Thu Oct 20 21:12:30 2016 +1030 Commit: Bryce Harrington -CommitDate: Wed Oct 28 16:55:55 2015 -0700 +CommitDate: Tue Nov 7 17:01:49 2017 -0800 - configure: Fix typo for missing line continuation character + image: prevent invalid ptr access for > 4GB images - There is an unintentional (benign) missing line continuation "\" in the - definition of MAYBE_WARN in configure. configure completes and issues a - WARNING: + Image data is often accessed using: - configure: WARNING: cache variable cairo_cv_warn_maybe contains a - newline + image->data + y * image->stride - Found and solved by Larry Baker. + On 64-bit achitectures if the image data is > 4GB, this computation + will overflow since both y and stride are 32-bit types. - Fixes: https://bugs.freedesktop.org/show_bug.cgi?id=89750 + Fixes: https://bugs.freedesktop.org/show_bug.cgi?id=98165 + Reviewed-by: Bryce Harrington + + boilerplate/cairo-boilerplate.c | 4 +++- + src/cairo-image-compositor.c | 4 ++-- + src/cairo-image-surface-private.h | 2 +- + src/cairo-mesh-pattern-rasterizer.c | 2 +- + src/cairo-png.c | 2 +- + src/cairo-script-surface.c | 3 ++- + 6 files changed, 10 insertions(+), 7 deletions(-) + +commit 35fccff6ec393ccca3d3ced79093ca491ce32df4 +Author: Bryce Harrington +AuthorDate: Mon Nov 6 12:09:53 2017 -0800 +Commit: Bryce Harrington +CommitDate: Mon Nov 6 12:18:37 2017 -0800 + + Un-doxygen disabled cairo_set_opacity + + The cairo_set_opacity() routine has been disabled since 2010. There + appears to be support for it internally in the backend, so it is unclear + why it is not enabled or what might break if it were re-enabled. Given + the lack of bug reports about its omission, it may be vestigal. For + now, just hide the doxygen for it to suppress warnings. It may be worth + deeper review to either re-enable it or remove it entirely. + + Reported-by: Rafał Mużyło (See fdo bugzilla #82741) Signed-off-by: Bryce Harrington - build/configure.ac.warnings | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) + src/cairo.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) -commit e3635de87d6bab7ec7b53a76c53188e0b04d675a +commit 8d89fc573eae0bc0234e1b909932e405a776b7e1 Author: Bryce Harrington -AuthorDate: Fri Jun 26 16:30:06 2015 -0700 +AuthorDate: Mon Nov 6 11:28:58 2017 -0800 Commit: Bryce Harrington -CommitDate: Wed Oct 28 16:54:19 2015 -0700 +CommitDate: Mon Nov 6 11:35:24 2017 -0800 - cairo-script: Return a cairo_status_t error, not FALSE + configure: Check for typeof - This typo results in certain paths being incorrectly recorded with - script surfaces. + Check via the AC_C_TYPEOF macro if GCC's typeof is available. If it is + available via a different spelling, define typeof to that spelling. + + Patch from and issue reported by Richard Palo. - Fixes: https://bugs.freedesktop.org/show_bug.cgi?id=91054 Signed-off-by: Bryce Harrington + Fixes: https://bugs.freedesktop.org/show_bug.cgi?id=93027 - src/cairo-script-surface.c | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) + configure.ac | 1 + + 1 file changed, 1 insertion(+) -commit 0f85e035e693f4cad03703ab619d299ba1ebd13e -Author: Bryce Harrington -AuthorDate: Thu Jun 25 18:54:23 2015 -0700 -Commit: Bryce Harrington -CommitDate: Tue Oct 27 14:23:00 2015 -0700 +commit 3322580f0488ff77f53d86c2b4d3cf59e6dca4c7 +Author: Adrian Johnson +AuthorDate: Tue Oct 24 21:30:45 2017 +1030 +Commit: Adrian Johnson +CommitDate: Tue Oct 24 21:44:08 2017 +1030 - cairo-recording-surface: Fix loss of alpha when clipping - - Commit 8020e0bc introduced a regression due to a typo when copying a - mask for a cairo recording surface. It should copy the source and mask - members from the command source to the recording surface, but instead it - copies the source twice. - - Fix suggested by Massimo. + pdf: remove old comment - Fixes: https://bugs.freedesktop.org/show_bug.cgi?id=73038 - Fixes: https://bugs.freedesktop.org/show_bug.cgi?id=73901 + These issues have been fixed. - src/cairo-recording-surface.c | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) + src/cairo-pdf-surface.c | 9 --------- + 1 file changed, 9 deletions(-) -commit 5d656f3e86cab791f80c8ddf401bb863accec36d -Author: Bryce Harrington -AuthorDate: Thu Jun 25 17:41:26 2015 -0700 -Commit: Bryce Harrington -CommitDate: Tue Oct 27 14:22:05 2015 -0700 +commit 1674d2b8850f9264232e60e82cb5b2827426632c +Author: Adrian Johnson +AuthorDate: Tue Oct 24 21:26:56 2017 +1030 +Commit: Adrian Johnson +CommitDate: Tue Oct 24 21:44:08 2017 +1030 - cairo-script: Fix sp. "directoriy" - - Signed-off-by: Bryce Harrington + pdf: set default create date - src/cairo-script-surface.c | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) + boilerplate/cairo-boilerplate-pdf.c | 1 + + build/configure.ac.system | 2 +- + src/cairo-pdf-interchange.c | 50 +++++++++++++++++++++++++++++++++++++ + src/cairo-pdf-surface.c | 1 - + 4 files changed, 52 insertions(+), 2 deletions(-) -commit 3a2893debf6f40609cd2cb0573c5e162c46fdc68 -Author: Alban Browaeys -AuthorDate: Wed Jan 21 12:01:45 2015 +0100 -Commit: Bryce Harrington -CommitDate: Wed Jun 24 19:13:33 2015 -0700 +commit 378e8e2f59a109a40da8e40893652a4c003a4dc7 +Author: Adrian Johnson +AuthorDate: Tue Oct 24 07:01:14 2017 +1030 +Commit: Adrian Johnson +CommitDate: Tue Oct 24 07:01:14 2017 +1030 - pattern: allow for a floating one pixel rounded difference. - - That is if the difference between the origin and the end is bigger than - .5 round up regardless of the coordinates. - - Round the difference of the floats instead of rounding the floats then - diff them. - - Fixes: https://bugs.freedesktop.org/show_bug.cgi?id=84396 - - Reviewed-by: Bryce Harrington + pdf: set ca/CA instead of using an smask when the mask has constant alpha - src/cairo-pattern.c | 10 +++++----- - 1 file changed, 5 insertions(+), 5 deletions(-) + src/cairo-pattern-private.h | 5 +++ + src/cairo-pattern.c | 53 +++++++++++++++++++++++++++++ + src/cairo-pdf-surface-private.h | 1 + + src/cairo-pdf-surface.c | 74 ++++++++++++++++++++++++++++++++--------- + 4 files changed, 117 insertions(+), 16 deletions(-) -commit dd2cbd7268f7b34f512965fac63da762f523f1a4 -Author: Bryce Harrington -AuthorDate: Tue Jun 16 16:42:56 2015 -0700 -Commit: Bryce Harrington -CommitDate: Wed Jun 24 19:13:33 2015 -0700 +commit 5fd0b8710f125bb33c55d75fcc8252996b403e2d +Author: Carlos Garcia Campos +AuthorDate: Wed Oct 18 11:33:25 2017 +0200 +Commit: Adrian Johnson +CommitDate: Sun Oct 22 11:09:02 2017 +1030 - cairo-script: Rename struct member to avoid name collision on AIX + scaled-font: Fix assert when destroying glyph page - On AIX, the token jmpbuf is a pre-processor macro. - cairo-script-scanner.c includes a private struct with a member named - jmpbuf which gets renamed to __jmpbuf when AIX's sys/context.h has been - included. + This happens when _cairo_ft_scaled_glyph_init() returns + CAIRO_INT_STATUS_UNSUPPORTED when called from + _cairo_scaled_glyph_lookup(). In those cases + _cairo_scaled_font_free_last_glyph() is called to release the glyph that + has just been allocated. If there aren't more glyphs, + _cairo_scaled_glyph_page_destroy() is called. The problem is that + _cairo_scaled_glyph_lookup() should always be called with the cache + frozen, and _cairo_scaled_glyph_page_destroy() without the cache + frozen. We can simply thaw/freeze the font before calling + _cairo_scaled_glyph_page_destroy(). - While judicious ordering of includes might kludge around this problem - (by causing all references to .jmpbuf to become .__jmpbuf), it's better - to simply select a new name for the struct member that won't suffer the - collision. + https://bugs.freedesktop.org/show_bug.cgi?id=103335 + + src/cairo-scaled-font.c | 7 +++++++ + 1 file changed, 7 insertions(+) + +commit 87dfd0c16f4fa798c1f72612a2e070fca8547ad2 +Author: Adrian Johnson +AuthorDate: Sun Oct 22 08:45:45 2017 +1030 +Commit: Adrian Johnson +CommitDate: Sun Oct 22 08:59:58 2017 +1030 + + Allow mime image to be different size to cairo image - Fixes: https://bugs.freedesktop.org/show_bug.cgi?id=89339 + Previously it was assumed the mime image size is the same as the cairo + image surface size. When using the 1 bpp formats (CCITT, JBIG2), + creating a cairo image of the same size will have very large memory + requirements and in some case may exceed the pixman image size + limits. In these cases it is useful to allow the mime image to have a + different resolution to the cairo image and in the PDF/PS output scale + the mime image to be the same physical size as the cairo image. - Signed-off-by: Bryce Harrington - Reviewed-by: Chris Wilson + In PDF, this is easy as all PDF images are scaled to 1x1 unit and the + CTM is used to scale the image to the required size. The PS surface + has been changed to also scale images to 1x1 and use the CTM to get + the required size. - util/cairo-script/cairo-script-private.h | 2 +- - util/cairo-script/cairo-script-scanner.c | 74 ++++++++++++++++---------------- - 2 files changed, 38 insertions(+), 38 deletions(-) + src/cairo-pdf-surface.c | 124 ------------------------------------------------ + src/cairo-ps-surface.c | 29 +++++++++-- + 2 files changed, 24 insertions(+), 129 deletions(-) -commit 5fda59a2f7e50d2a89052eca8c118babf9813c99 -Author: Bryce Harrington -AuthorDate: Tue Jun 16 15:18:23 2015 -0700 -Commit: Bryce Harrington -CommitDate: Wed Jun 24 19:13:33 2015 -0700 +commit e1a02b180d804887980c111c1f9780bed44b96a6 +Author: Adrian Johnson +AuthorDate: Sun Oct 22 08:07:49 2017 +1030 +Commit: Adrian Johnson +CommitDate: Sun Oct 22 08:42:36 2017 +1030 - cairo-script: Prefer cairo from local tree + Add CCITT_FAX mime type for PDF and PS surfaces - Use quoted includes rather than bracketed, to prefer linking to the - in-tree cairo in preference to the system cairo. + This completes the full set of PDF/PS image filters allowing image + data to be passed though without decompressing then recompresssing in + a less efficient format. - Signed-off-by: Bryce Harrington - Reviewed-by: Chris Wilson + The difficulty with CCITT_FAX is it needs some decoding parameters + that are not stored inside the image data. This is achieved by using + an additional mime type CCITT_FAX_PARAMS that contains the params in + key=value format. - util/cairo-script/cairo-script-interpreter.c | 3 +-- - util/cairo-script/csi-bind.c | 4 ++-- - util/cairo-script/csi-exec.c | 4 ++-- - util/cairo-script/csi-replay.c | 4 ++-- - util/cairo-script/csi-trace.c | 4 ++-- - 5 files changed, 9 insertions(+), 10 deletions(-) + doc/public/cairo-sections.txt | 2 + + src/Makefile.sources | 16 +- + src/cairo-pdf-surface-private.h | 2 +- + src/cairo-pdf-surface.c | 263 ++++++++++++++++++++++++--- + src/cairo-ps-surface.c | 200 ++++++++++++++++++-- + src/cairo-surface.c | 21 ++- + src/cairo-tag-attributes-private.h | 15 ++ + src/cairo-tag-attributes.c | 80 ++++++++ + src/cairo.h | 2 + + test/ccitt.g3 | 2 + + test/mime-data.c | 56 +++++- + test/reference/mime-data.base.argb32.ref.png | Bin 243 -> 272 bytes + test/reference/mime-data.base.rgb24.ref.png | Bin 243 -> 272 bytes + test/reference/mime-data.pdf.ref.png | Bin 7563 -> 8205 bytes + test/reference/mime-data.ps.ref.png | Bin 4705 -> 5386 bytes + test/reference/mime-data.ref.png | Bin 243 -> 272 bytes + test/reference/mime-data.script.ref.png | Bin 2130 -> 2175 bytes + test/reference/mime-data.svg.ref.png | Bin 6437 -> 6513 bytes + 18 files changed, 609 insertions(+), 50 deletions(-) -commit 475916b84e1490be252910d6950d2aea89a5f722 -Author: Bryce Harrington -AuthorDate: Tue Jun 16 15:13:31 2015 -0700 -Commit: Bryce Harrington -CommitDate: Wed Jun 24 19:13:33 2015 -0700 +commit 4ae7f411c865a25b577faea58e5fda6f4e9e1172 +Author: Adrian Johnson +AuthorDate: Sat Oct 21 20:05:56 2017 +1030 +Commit: Adrian Johnson +CommitDate: Sat Oct 21 20:05:56 2017 +1030 - cairo-script: Cleanup boilerplate header for consistency - - Signed-off-by: Bryce Harrington - Reviewed-by: Chris Wilson + util/font-view: fix build error - util/cairo-script/cairo-script-hash.c | 3 +-- - 1 file changed, 1 insertion(+), 2 deletions(-) + util/font-view.c | 2 ++ + 1 file changed, 2 insertions(+) -commit 99c89b3fffa2df580065a0ecf9bd576ed2102510 -Author: Bryce Harrington -AuthorDate: Tue Jun 16 15:06:59 2015 -0700 -Commit: Bryce Harrington -CommitDate: Wed Jun 24 19:13:33 2015 -0700 +commit 9ffbf63d3715f81ec92cdba93b60a04a11be130f +Author: Adrian Johnson +AuthorDate: Sat Oct 21 13:05:26 2017 +1030 +Commit: Adrian Johnson +CommitDate: Sat Oct 21 13:08:39 2017 +1030 - cairo-script: Add missing copyright and boilerplate - - Chris wrote all of the cairo script stuff. I'm making a guess about the - copyright date. - - Reviewed-by: Chris Wilson - Signed-off-by: Bryce Harrington + fix warning: inlining failed in call to '_csi_stack_push' - util/cairo-script/csi-bind.c | 33 +++++++++++++++++++++++++++++++++ - util/cairo-script/csi-exec.c | 33 +++++++++++++++++++++++++++++++++ - util/cairo-script/csi-replay.c | 33 +++++++++++++++++++++++++++++++++ - util/cairo-script/csi-trace.c | 33 +++++++++++++++++++++++++++++++++ - 4 files changed, 132 insertions(+) + util/cairo-script/cairo-script-interpreter.c | 11 +++++++++++ + util/cairo-script/cairo-script-private.h | 11 ++--------- + 2 files changed, 13 insertions(+), 9 deletions(-) -commit 0b885d045619208fb75074f4d7196c2dc5b49a1d -Author: Bryce Harrington -AuthorDate: Tue Jun 16 15:05:54 2015 -0700 -Commit: Bryce Harrington -CommitDate: Wed Jun 24 19:13:33 2015 -0700 +commit b092b63119cbfe3cb4bc786eee81630998996acf +Author: Adrian Johnson +AuthorDate: Sat Oct 21 13:02:42 2017 +1030 +Commit: Adrian Johnson +CommitDate: Sat Oct 21 13:08:30 2017 +1030 - cairo-script: Always include config.h first thing + fix warning: variable X might be clobbered by 'longjmp' - Reviewed-by: Chris Wilson - Signed-off-by: Bryce Harrington + Move calls to setjmp into separate function to avoid clobbering + local variables. - util/cairo-script/cairo-script-file.c | 2 ++ - util/cairo-script/cairo-script-hash.c | 2 ++ - util/cairo-script/cairo-script-interpreter.c | 2 ++ - util/cairo-script/cairo-script-objects.c | 2 ++ - util/cairo-script/cairo-script-operators.c | 2 ++ - util/cairo-script/cairo-script-scanner.c | 2 ++ - util/cairo-script/cairo-script-stack.c | 2 ++ - util/cairo-script/csi-bind.c | 3 +++ - util/cairo-script/csi-exec.c | 3 +++ - util/cairo-script/csi-replay.c | 3 +++ - util/cairo-script/csi-trace.c | 3 +++ - 11 files changed, 26 insertions(+) + src/cairo-bentley-ottmann-rectangular.c | 8 +++++++- + src/cairo-png.c | 17 +++++++++++------ + 2 files changed, 18 insertions(+), 7 deletions(-) -commit be05125611ab635af2aa1a6e77efcdec38188532 -Author: Fredrik Fornwall -AuthorDate: Sun May 31 20:36:48 2015 +0200 -Commit: Bryce Harrington -CommitDate: Wed Jun 24 19:13:33 2015 -0700 +commit 132794f6832ea83e2f9a72e11b05080d2cdf80f8 +Author: Adrian Johnson +AuthorDate: Mon Oct 16 20:13:48 2017 +1030 +Commit: Adrian Johnson +CommitDate: Mon Oct 16 20:18:49 2017 +1030 - Fix cairo_get_locale_decimal_point() on Android + svg: recording_surface is needed even if not emitted - src/cairo-misc.c | 2 +- + src/cairo-svg-surface.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) -commit a1146f54d7c2c99c0b4fc7091b10354adf611056 -Author: Massimo Valentini -AuthorDate: Tue Sep 23 12:37:35 2014 +0200 -Commit: Bryce Harrington -CommitDate: Wed Jun 24 19:13:33 2015 -0700 +commit 27990e391070dd43f08450a3d54c90d18e6d85f3 +Author: Adrian Johnson +AuthorDate: Mon Oct 16 19:47:21 2017 +1030 +Commit: Adrian Johnson +CommitDate: Mon Oct 16 20:18:49 2017 +1030 - polygon-intersection: Delete misleading comments and dead-code + fix unused function warnings + + src/cairo-botor-scan-converter.c | 2 ++ + test/any2ppm.c | 2 +- + 2 files changed, 3 insertions(+), 1 deletion(-) + +commit fc929d70054583d0c21f24b18083348e3e7d914c +Author: Adrian Johnson +AuthorDate: Mon Oct 16 19:42:16 2017 +1030 +Commit: Adrian Johnson +CommitDate: Mon Oct 16 19:42:16 2017 +1030 + + ft: prevent unused var warning when freetype < 2.8 + + src/cairo-ft-font.c | 18 +++++++++++------- + 1 file changed, 11 insertions(+), 7 deletions(-) + +commit 1d58e0f81856038d8aa306b97302485a4d2e2ec9 +Author: Adrian Johnson +AuthorDate: Sun Oct 15 19:42:08 2017 +1030 +Commit: Adrian Johnson +CommitDate: Sun Oct 15 19:42:08 2017 +1030 + + svg2png: remove unused headers + + test/svg2png.c | 2 -- + 1 file changed, 2 deletions(-) + +commit 90104809b0e03d28ac1152034fd4f05fc8e97b9a +Author: Mikhail Fludkov +AuthorDate: Fri Oct 6 13:47:51 2017 +0200 +Commit: Adrian Johnson +CommitDate: Sun Oct 15 18:51:04 2017 +1030 + + Surround initialisations with atomic critical section - den_det is positive because intersect_lines is called - only after _slope_compare returned > 0 and slope_compare - is returning the sign of den_det + Fixes the race condition when one thread uses cairo_mask_compositor_t + pointer returned by _cairo_image_mask_compositor_get, while another one + started but has not finished it's initialisation yet - The quadratic-time intersection finder is #if 0-ed out - in src/cairo-bentley-ottman.c, but is unusable even there - since the second commit to that file. + Usage: + static cairo_atomic_once_t once = CAIRO_ATOMIC_ONCE_INIT; + if (_cairo_atomic_init_once_enter(&once)) { + /* Initialization code */ + _cairo_atomic_init_once_leave(&once); + } - Fixes: https://bugs.freedesktop.org/show_bug.cgi?id=74779 - Reviewed-by: Bryce Harrington + https://bugs.freedesktop.org/show_bug.cgi?id=103037 - src/cairo-polygon-intersect.c | 60 ++----------------------------------------- - 1 file changed, 2 insertions(+), 58 deletions(-) + src/cairo-atomic-private.h | 33 +++++++++++++++++++++++++++++++++ + src/cairo-gl-msaa-compositor.c | 5 ++++- + src/cairo-gl-spans-compositor.c | 5 ++++- + src/cairo-gl-traps-compositor.c | 5 ++++- + src/cairo-image-compositor.c | 19 ++++++++++++++----- + src/cairo-image-mask-compositor.c | 5 ++++- + src/cairo-xlib-core-compositor.c | 5 ++++- + src/cairo-xlib-render-compositor.c | 10 ++++++++-- + src/test-null-compositor-surface.c | 10 ++++++++-- + src/win32/cairo-win32-gdi-compositor.c | 5 ++++- + 10 files changed, 87 insertions(+), 15 deletions(-) -commit 99f56be5f545c0136b198d83c0a4c692b9f9f770 -Author: Massimo Valentini -AuthorDate: Tue Sep 23 12:37:26 2014 +0200 -Commit: Bryce Harrington -CommitDate: Wed Jun 24 19:13:33 2015 -0700 +commit 79e0e25e441a74e3ec207d95bd83437457ba1885 +Author: Adrian Johnson +AuthorDate: Sun Oct 15 07:57:54 2017 +1030 +Commit: Adrian Johnson +CommitDate: Sun Oct 15 07:57:54 2017 +1030 - polygon-intersection: Try not to invoke undefined behaviour + svg: source surface hash table does not need to hold the source + + src/cairo-svg-surface-private.h | 1 - + src/cairo-svg-surface.c | 2 -- + 2 files changed, 3 deletions(-) + +commit 965ba86bbf87fb0d8df666cbba7c8823cc393b0b +Author: Adrian Johnson +AuthorDate: Sat Oct 14 19:47:39 2017 +1030 +Commit: Adrian Johnson +CommitDate: Sat Oct 14 20:53:01 2017 +1030 + + svg: use hash table instead of user_data to track emitted surfaces - Optimizing compilers aggressively remove code that is executed only - after an undefined behaviour occurred. + Setting a key on the source surface->user_data prevents the surface + from being reused to create another svg file. - Also, the difference of two (non char) pointers hides an integer - division that, because the divisor is known at compile time, is - transformed into a multiplication by a pseudo-reciprocal, and in this - case the difference is not always a multiple of the divisor, resulting - in an invalid comparison predicate. + The hash table also supports CAIRO_MIME_TYPE_UNIQUE_ID. - Fixes: https://bugs.freedesktop.org/show_bug.cgi?id=74779 - Reviewed-by: Bryce Harrington + https://lists.cairographics.org/archives/cairo/2017-October/028406.html - src/cairo-polygon-intersect.c | 4 ++-- - 1 file changed, 2 insertions(+), 2 deletions(-) + src/cairo-svg-surface-private.h | 9 ++ + src/cairo-svg-surface.c | 185 ++++++++++++++++++++++++++++++++-------- + 2 files changed, 159 insertions(+), 35 deletions(-) -commit 6879be20f03a1347e16cda2f603b0fedf256caf0 -Author: Massimo Valentini -AuthorDate: Tue Sep 23 12:37:20 2014 +0200 -Commit: Bryce Harrington -CommitDate: Wed Jun 24 19:13:33 2015 -0700 +commit bb10bd10138a262759b37281135b5199e334f392 +Author: Adrian Johnson +AuthorDate: Fri Oct 13 19:44:45 2017 +1030 +Commit: Adrian Johnson +CommitDate: Fri Oct 13 19:50:24 2017 +1030 - polygon-intersection: Include approximation in intersection points + truetype: limit font name to 127 chars - In Hobby's paper it is proved that INTERSECTION events can be - processed in any order by ignoring intersections between edges - non-adjacent in the active edges list. - But with respect to START/STOP events they must be processed in - order. Because START/STOP events have always exact y, it is - sufficient to know whether an integer y intersection is a - default/excess approximation of the exact to properly sort events. + Some broken fonts have long strings of garbage in the font name - Fixes: https://bugs.freedesktop.org/show_bug.cgi?id=74779 - Reviewed-by: Bryce Harrington + https://bugs.freedesktop.org/show_bug.cgi?id=103249 - src/cairo-polygon-intersect.c | 139 ++++++++++++++++++++---------------------- - 1 file changed, 67 insertions(+), 72 deletions(-) + src/cairo-truetype-subset.c | 16 ++++++++++++++-- + 1 file changed, 14 insertions(+), 2 deletions(-) -commit 9db73dd41784880948e4dbd49379984467dc0f14 -Author: Massimo Valentini -AuthorDate: Tue Sep 23 12:37:08 2014 +0200 -Commit: Bryce Harrington -CommitDate: Wed Jun 24 19:13:33 2015 -0700 +commit 202a9ed64e3d164307defddb41a9f8cf9e9b751b +Author: Adrian Johnson +AuthorDate: Fri Oct 13 19:27:03 2017 +1030 +Commit: Adrian Johnson +CommitDate: Fri Oct 13 19:33:30 2017 +1030 - polygon-intersection: Do not discard intersection exactly at top edge + output-stream: allow %s strings larger than 512 chars - Fixes: https://bugs.freedesktop.org/show_bug.cgi?id=74779 - Reviewed-by: Bryce Harrington + https://bugs.freedesktop.org/show_bug.cgi?id=103249 - src/cairo-polygon-intersect.c | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) + src/cairo-output-stream.c | 10 +++++++--- + 1 file changed, 7 insertions(+), 3 deletions(-) -commit d00f8133ef84bb01a2f54ab0a3cec9529de7921c +commit d5b634da61597aa8e80ba7d5bc39f092e5888515 Author: Bryce Harrington -AuthorDate: Thu Jun 4 14:24:31 2015 -0700 +AuthorDate: Wed Oct 11 19:13:46 2017 -0700 Commit: Bryce Harrington -CommitDate: Wed Jun 24 19:13:32 2015 -0700 +CommitDate: Wed Oct 11 19:13:46 2017 -0700 - cairo-script: Improve buffer length check - - Quells the following warning: + Factor out the ISFINITE() macro + + src/cairo-gstate.c | 6 ------ + src/cairo-matrix.c | 6 ------ + src/cairo-scaled-font.c | 6 ------ + src/cairoint.h | 6 ++++++ + 4 files changed, 6 insertions(+), 18 deletions(-) + +commit 5a9dba9929d9c9046705150f7e3c4783ff34e4dd +Author: Adrian Johnson +AuthorDate: Thu Oct 5 20:50:19 2017 +1030 +Commit: Adrian Johnson +CommitDate: Thu Oct 5 20:50:19 2017 +1030 + + svg: fix painting an unbounded recording surface - cairo-script-scanner.c: In function ‘_translate_string’: - cairo-script-scanner.c:1623:18: warning: comparison between signed and - unsigned integer expressions [-Wsign-compare] - if (buf_len <= 8 + 2*string->len) { - ^ + https://lists.cairographics.org/archives/cairo/2017-October/028395.html - util/cairo-script/cairo-script-scanner.c | 3 ++- - 1 file changed, 2 insertions(+), 1 deletion(-) + src/cairo-svg-surface-private.h | 1 + + src/cairo-svg-surface.c | 38 +++++++++++++++++++++++++------------- + 2 files changed, 26 insertions(+), 13 deletions(-) -commit 34ba17b01b4dc09f6ece1a45b635e04900b722d0 -Author: Julien Isorce -AuthorDate: Wed Sep 3 10:58:18 2014 +0100 -Commit: Bryce Harrington -CommitDate: Wed Jun 24 19:13:32 2015 -0700 +commit bec8c7508ebc0f69266f9aebe9903539391c519b +Author: Adrian Johnson +AuthorDate: Tue Oct 3 22:18:49 2017 +1030 +Commit: Adrian Johnson +CommitDate: Tue Oct 3 22:27:25 2017 +1030 - build: Show all disabled features in cairo-features.h + Prevent curved strokes in small ctms from being culled from vector surfaces - Even features which are disabled by default should appear in - cairo-features.h. + The combination of both curved strokes and ignoring the ctm in the thin + line check caused some fill-strokes in this test case to be culled. - Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=83359 - (Patch approved by Behdad Esfahbod in bug tracker.) + Modify the thin line check to take the ctm into account and increase + the minimum width to 1 point to prevent curved lines such as tiny dots + from being culled. - Reviewed-by: Bryce Harrington + https://bugs.freedesktop.org/show_bug.cgi?id=103071 - build/configure.ac.features | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) + src/cairo-path-bounds.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) -commit da8b29e21f641621e10e1b218e231ae10798b1b4 -Author: Nathan Froyd -AuthorDate: Mon May 4 13:38:41 2015 -0400 -Commit: Bryce Harrington -CommitDate: Wed Jun 24 19:13:32 2015 -0700 +commit dccbed7d78d32bd3b912e8810379451dd94e6a1f +Author: Adrian Johnson +AuthorDate: Fri Sep 22 20:24:45 2017 +0930 +Commit: Adrian Johnson +CommitDate: Fri Sep 22 20:25:59 2017 +0930 - Support new-style __atomic_* primitives + truetype: clarify glyph count variables - Recent versions of GCC/clang feature a new set of compiler intrinsics - for performing atomic operations, motivated by the operations needed to - support the C++11 memory model. These intrinsics are more flexible than - the old __sync_* intrinstics and offer efficient support for atomic load - and store operations. + - move num_glyphs_in_face to base struct as it is the number in the font + - move num_glyphs to the subset variables as it is the num glyphs in the subset + - move widths to subset variables as it uses the subset id as the array index + + src/cairo-truetype-subset.c | 54 ++++++++++++++++++++++----------------------- + 1 file changed, 27 insertions(+), 27 deletions(-) + +commit 52cbf42b74785c3c3c2d15effe7bdb416ff9c8b2 +Author: Adrian Johnson +AuthorDate: Fri Sep 22 20:10:10 2017 +0930 +Commit: Adrian Johnson +CommitDate: Fri Sep 22 20:10:10 2017 +0930 + + truetype: reserve space in subset arrays for .notdef - Having the load appear atomic to the compiler is particular important - for tools like ThreadSanitizer so they don't report false positives on - memory operations that we intend to be atomic. + Subset array sizes are allocated based on the number of glyphs in the + font. In this bug the fonts did not contain the mandatory .notdef + glyph, hence the subset arrays were not large enough. - Patch from Nathan Froyd + https://bugs.freedesktop.org/show_bug.cgi?id=102922 - build/aclocal.cairo.m4 | 12 +++++++ - src/cairo-atomic-private.h | 90 ++++++++++++++++++++++++++++++++++++++++++++++ - 2 files changed, 102 insertions(+) + src/cairo-truetype-subset.c | 11 ++++++++--- + 1 file changed, 8 insertions(+), 3 deletions(-) -commit 010fb4c4370686b76f0f0aa226a65576bac8938b +commit e773dd744e88dc871fdc549132f07760f1be94c7 Author: Adrian Johnson -AuthorDate: Thu May 21 22:37:06 2015 +0930 -Commit: Bryce Harrington -CommitDate: Wed Jun 24 19:13:32 2015 -0700 +AuthorDate: Sun Sep 17 14:15:25 2017 +0930 +Commit: Adrian Johnson +CommitDate: Fri Sep 22 18:17:25 2017 +0930 - cff: ensure glyph widths are positive when font matrix yy is negative - - Bug 90538 + factor out ascii to double code in cff-subset into _cairo_strtod - src/cairo-cff-subset.c | 4 ++-- - 1 file changed, 2 insertions(+), 2 deletions(-) + src/cairo-cff-subset.c | 27 +++------------------ + src/cairo-misc.c | 60 +++++++++++++++++++++++++++++++++++++++++++++-- + src/cairo-output-stream.c | 2 +- + src/cairo-type1-subset.c | 2 +- + src/cairoint.h | 5 +++- + 5 files changed, 67 insertions(+), 29 deletions(-) -commit 3f6f251e7ffe003e541ec38281ee0b95a3204a66 -Author: Zan Dobersek -AuthorDate: Fri May 8 01:50:25 2015 -0700 +commit 871c518121452116ee799fe4262421d4c935972e +Author: Aleksander Morgado +AuthorDate: Mon Aug 28 11:23:34 2017 +0200 Commit: Bryce Harrington -CommitDate: Wed Jun 24 19:13:32 2015 -0700 +CommitDate: Wed Sep 20 11:44:29 2017 -0700 - Manually transpose the matrix in _cairo_gl_shader_bind_matrix() - - To maintain compatibility with OpenGL ES 2.0, the matrix in - _cairo_gl_shader_bind_matrix() should be manually transposed, - and GL_FALSE passed as the transpose argument to the - glUniformMatrix3fv() call as it is the only valid value for - that parameter in OpenGL ES 2.0. + build: fix minor typo in autogen.sh + Fixes: https://bugs.freedesktop.org/show_bug.cgi?id=102452 Reviewed-by: Bryce Harrington - Acked-by: "Henry (Yu) Song" - src/cairo-gl-shaders.c | 8 ++++---- - 1 file changed, 4 insertions(+), 4 deletions(-) + autogen.sh | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) -commit 6156a4d64548ef60a8fd9c872fb12b5f34441e12 -Author: Bryce Harrington -AuthorDate: Fri Apr 24 18:23:46 2015 -0700 -Commit: Bryce Harrington -CommitDate: Wed Jun 24 19:13:32 2015 -0700 +commit 1220e3c6b8f94a00ac7afee15f21e6782655d97c +Author: Adrian Johnson +AuthorDate: Sat Sep 2 19:17:37 2017 +0930 +Commit: Adrian Johnson +CommitDate: Sat Sep 16 10:04:57 2017 +0930 - Fix broken canvas text font size in Inkscape - - An earlier fix to bug 84324 added a regression in the font size of - canvas text in Inkscape when compiled with the Quartz backend. + replace _BSD_SOURCE with _DEFAULT_SOURCE - Patch from Andrea Canciani + fixes the warning: - Fixes: https://bugs.freedesktop.org/show_bug.cgi?id=84324 - Reviewed-by: Bryce Harrington + warning: #warning "_BSD_SOURCE and _SVID_SOURCE are deprecated, use _DEFAULT_SOURCE" - src/cairo-quartz-font.c | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) + src/cairo-cff-subset.c | 2 +- + src/cairo-ft-font.c | 2 +- + src/cairo-output-stream.c | 2 +- + src/cairo-path-stroke-boxes.c | 2 +- + src/cairo-path-stroke-polygon.c | 2 +- + src/cairo-path-stroke-tristrip.c | 2 +- + src/cairo-path-stroke.c | 2 +- + src/cairo-pdf-surface.c | 2 +- + src/cairo-ps-surface.c | 2 +- + src/cairo-scaled-font-subsets.c | 2 +- + src/cairo-svg-surface.c | 2 +- + src/cairo-toy-font-face.c | 2 +- + src/cairo-truetype-subset.c | 2 +- + src/cairo-type1-fallback.c | 2 +- + src/cairo-type1-subset.c | 2 +- + 15 files changed, 15 insertions(+), 15 deletions(-) -commit bfbc1649a13d7743e143db3dd6c68c9f5865ac23 -Author: Behdad Esfahbod -AuthorDate: Tue Apr 21 14:29:41 2015 -0700 -Commit: Bryce Harrington -CommitDate: Wed Jun 24 19:13:16 2015 -0700 +commit 117a3c27d48107cb9c570fee725105419b1251e3 +Author: Adrian Johnson +AuthorDate: Sat Sep 2 19:09:49 2017 +0930 +Commit: Adrian Johnson +CommitDate: Sat Sep 16 10:04:57 2017 +0930 - [ft] Return CAIRO_STATUS_FILE_NOT_FOUND if font file can't be opened + build: use _WIN32 instead of windows.h to check for windows build - A common source of error when people are setting up pango on a new - device is when font files don't have the right permissions and cannot - be opened. Cairo was returning out-of-memory before, making the - Pango error message useless. + ifdef _WIN32 is the recommended way to check for a windows build [1] + and avoids identifying cygwin as windows. - With this change, cairo will return file-not-found, and pango prints - that out. It's still not ideal; a ENOACCESS equivalent would have - been better. + based on the patch at [2] - [update: Fixed a couple goofs] + [1] https://lists.gnu.org/archive/html/autoconf/2012-02/msg00008.html + [2] https://lists.gnu.org/archive/html/autoconf/2012-02/msg00009.html - src/cairo-font-face.c | 7 +++++++ - src/cairo-ft-font.c | 49 ++++++++++++++++++++++++++++++++++--------------- - src/cairoint.h | 1 + - 3 files changed, 42 insertions(+), 15 deletions(-) + build/configure.ac.system | 8 +++++--- + 1 file changed, 5 insertions(+), 3 deletions(-) -commit 4dc3f3d7f21ef23bcb767d8118382427ad431f6c -Author: 江頭幸路 -AuthorDate: Fri Apr 17 20:59:17 2015 +0900 +commit 8ff3019f51bd40c23d8a0dd5e51ce3fab6442d6e +Author: Bryce Harrington +AuthorDate: Wed Sep 13 12:35:27 2017 -0700 Commit: Bryce Harrington -CommitDate: Wed Jun 24 18:29:09 2015 -0700 +CommitDate: Wed Sep 13 15:18:04 2017 -0700 - Avoid appending an empty slot to an user data array when user_data is NULL. - - Otherwise, calling cairo_set_user_data(cr, key, 0, 0) many times - causes a long user data array, almost all of whose slots are empty. - It leads to unnecessarily much memory consumption and long execution time of - cairo_set_user_data(cr, key, 0, 0) and cairo_get_user_data(cr, key) after - it. + gl: Add support for OpenGL ES 3.0 - This issue probably happens since the commit - http://cgit.freedesktop.org/cairo/commit/?id=9341c254a + This improves the OpenGL ES support to extend it to version 3.0. + A number of new features are available in glesv3 including creation of + multi-sampled renderbuffers. These renderbuffers can be blitted to + single sample textures (but not the other way around). Other features + such as PBO for image uploading, are left as followon work. + + For this preliminary implementation, glesv3 backends always create + renderbuffers, which can be set as single sample or multisample. The + renderbuffer's content is blitted to the texture only when used as a + source or a mask. + + Images uploaded to a texture stay there until the surface is used as a + rendering target, at which point its painted to the renderbuffer. + + This patch is heavily based off of Henry Song's initial GLESv3 patch + 6f7f3795 from his cairogles fork of Cairo, and incorporates subsequent + fixes and pertinent refactorings from his trunk and review feedback from + Uli. + + This implements the *functional* support for glesv3, excluding the + various optimization work to utilize its features. Rendering and + performance should not be expected to improve notably from pure glesv2. + As the GL backend for Cairo remains "experimental", these changes should + likewise be considered as such. - Reviewed-by: Bryce Harrington + Signed-off-by: Bryce Harrington - src/cairo-array.c | 3 +++ - 1 file changed, 3 insertions(+) + boilerplate/Makefile.win32.features | 12 +++++ + boilerplate/cairo-boilerplate-egl.c | 30 ++++++++--- + build/Makefile.win32.features | 1 + + build/Makefile.win32.features-h | 3 ++ + build/configure.ac.features | 1 + + configure.ac | 23 ++++++++ + src/Makefile.sources | 4 ++ + src/Makefile.win32.features | 16 ++++++ + src/cairo-gl-composite.c | 103 +++++++++++++++++++++++++++++++++++- + src/cairo-gl-device.c | 91 +++++++++++++++++++++++-------- + src/cairo-gl-dispatch.c | 12 +++++ + src/cairo-gl-gradient-private.h | 9 ++-- + src/cairo-gl-gradient.c | 3 +- + src/cairo-gl-info.c | 4 +- + src/cairo-gl-msaa-compositor.c | 10 +++- + src/cairo-gl-operand.c | 3 +- + src/cairo-gl-private.h | 20 ++++--- + src/cairo-gl-shaders.c | 15 ++++-- + src/cairo-gl-surface.c | 73 ++++++++++++++++++++----- + src/cairo-gl.h | 2 +- + 20 files changed, 370 insertions(+), 65 deletions(-) -commit 1bd07b2d1949f4159cf542f0aaef248788c96422 -Author: Andrea Canciani -AuthorDate: Thu Apr 9 01:31:34 2015 +0200 +commit d1f941d7ee06340c155158b32bec28fc2e1a4264 +Author: Bryce Harrington +AuthorDate: Thu Oct 20 16:37:28 2016 -0700 Commit: Bryce Harrington -CommitDate: Wed Jun 24 18:29:09 2015 -0700 +CommitDate: Wed Sep 13 15:17:55 2017 -0700 - test: Correct bug number in clip-complex-bug61592 + gl: Make _cairo_gl_ensure_framebuffer a private shared routine - The filename of the C source file is correct, but the test name (both - as function name and as reference image name) has a typo in it. - - Related to https://bugs.freedesktop.org/show_bug.cgi?id=61592 + Signed-off-by: Bryce Harrington - test/clip-complex-bug61592.c | 2 +- - test/reference/clip-complex-bug61492.ref.png | Bin 105 -> 0 bytes - test/reference/clip-complex-bug61592.ref.png | Bin 0 -> 105 bytes - 3 files changed, 1 insertion(+), 1 deletion(-) + src/cairo-gl-device.c | 2 +- + src/cairo-gl-private.h | 4 ++++ + 2 files changed, 5 insertions(+), 1 deletion(-) -commit 549e511814c4ebb476b6e45871ab7734f7ca915d -Author: Руслан Ижбулатов -AuthorDate: Sat Apr 4 15:58:53 2015 +0000 +commit 4b164bc89872f0cf4e123e1358cc83be8e83a4d3 +Author: Bryce Harrington +AuthorDate: Fri Oct 7 15:26:25 2016 -0700 Commit: Bryce Harrington -CommitDate: Wed Jun 24 18:29:09 2015 -0700 +CommitDate: Wed Sep 13 15:17:55 2017 -0700 - win32: Add a win32 boilerplate that uses a real window + gl: Convert images to rgba or a8 formats when uploading with GLESv2 - This way it uses the codepath for cairo_win32_surface_create_with_format(), - instead of the cairo_win32_surface_create_with_dib(). + The GLESv2 backend supports only GL_RGBA and GL_ALPHA as supported + texture formats. So, make _cairo_gl_get_image_format_and_type_gles2 + force conversion of other image formats to either of these two as + appropriate when uploading images. - Without the recording tests (which terminate the testsuite) - the testsuite results for win32 are: + Patch originally from Henry Song - 284 Passed, 167 Failed [1 crashed, 9 expected], 23 Skipped - win32 (rgb24): 1 crashed! - win32 (rgb24): 17 error - win32 (rgb24): 155 failed - win32 (argb32): 1 crashed! - win32 (argb32): 17 error - win32 (argb32): 68 failed - win32-window-color (rgb24): 1 crashed! - win32-window-color (rgb24): 17 error - win32-window-color (rgb24): 148 failed - win32-window-coloralpha (argb32): 1 crashed! - win32-window-coloralpha (argb32): 17 error - win32-window-coloralpha (argb32): 66 failed + Bryce Harrington - Reviewed-by: Bryce Harrington + Signed-off-by: Bryce Harrington - boilerplate/cairo-boilerplate-win32.c | 242 ++++++++++++++++++++++++++++++++-- - 1 file changed, 228 insertions(+), 14 deletions(-) + src/cairo-gl-surface.c | 45 +++++++++++++++++++++++++++++++++++++++++ + src/cairo-gl-traps-compositor.c | 30 --------------------------- + 2 files changed, 45 insertions(+), 30 deletions(-) -commit 3d489616a2fc624dc5e94164f23a4c8536d466d0 -Author: Руслан Ижбулатов -AuthorDate: Thu Mar 26 19:33:43 2015 +0000 -Commit: Bryce Harrington -CommitDate: Wed Jun 24 18:29:09 2015 -0700 +commit 99427c3f4f6ce7ce3c95c4caa4d2b8ff7c0093d9 +Author: Behdad Esfahbod +AuthorDate: Tue Sep 12 01:35:15 2017 -0400 +Commit: Behdad Esfahbod +CommitDate: Tue Sep 12 01:35:15 2017 -0400 - win32: Add cairo API to set up a Win32 surface for an HDC with an alpha channel. + Handle SOURCE and CLEAR operators when painting color glyphs - Signed-off-by: Руслан Ижбулатов - Reviewed-by: Bryce Harrington - - src/cairo-win32.h | 4 ++ - src/win32/cairo-win32-display-surface.c | 68 +++++++++++++++++++++++++-------- - 2 files changed, 56 insertions(+), 16 deletions(-) - -commit 74c85aadb37a5e63d7414dd2a0ef819505e29fea -Author: Andrea Canciani -AuthorDate: Thu Mar 26 17:36:16 2015 +0100 -Commit: Bryce Harrington -CommitDate: Wed Jun 24 18:29:09 2015 -0700 - - test: Fix coverage-intersecting-triangles reference + In cairo, most operators are composited this way: - Commit 4e3ef57bc892b0b046c486390adc7164a1de64de added - coverage-intersecting-triangles with an incorrect reference and - generator. The test checks the rasterization of two overlapping - triangles in the following position: + ((src IN mask) OP dst) LERP_clip dst - . . - |\ /| - | X | - |/ \| - .---. + but SOURCE and CLEAR operators are composited this way: - Since the triangles have both vertical and horizontal sides of size - x/WIDTH, the expected coverage is 3/4 (75%) of (x/WIDTH)^2. The - original code, instead, was checking for a coverage of 0.75*x/WIDTH, - as if one of the sides was always 1 unit long. + (src OP dst) LERP_(clip IN mask) dst - The image and xlib backends still suffer from some jitter, caused by - the approximation of the actual coverage by means of sampling. For - this reason their references are still considered XFAIL, even though - their result now looks mostly consistent with the expected reference. + (why is this not specified anywhere in the docs or source tree?) + + With color glyphs, we were not special-casing SOURCE and CLEAR. + We do now. + + Fixes https://bugs.freedesktop.org/show_bug.cgi?id=102661 - test/coverage.c | 2 +- - .../coverage-intersecting-triangles.image.xfail.png | Bin 0 -> 14444 bytes - test/reference/coverage-intersecting-triangles.ref.png | Bin 209 -> 262 bytes - .../reference/coverage-intersecting-triangles.xfail.png | Bin 14444 -> 0 bytes - 4 files changed, 1 insertion(+), 1 deletion(-) + src/cairo-surface.c | 5 ++++- + 1 file changed, 4 insertions(+), 1 deletion(-) -commit 7ab94215f891df2ef5d8ce95e7591de0bdce2add -Author: Bryce Harrington -AuthorDate: Sat Apr 4 15:49:18 2015 -0700 -Commit: Bryce Harrington -CommitDate: Wed Jun 24 18:29:09 2015 -0700 +commit 7f6b57a2386c051e4bb6a156cf14904fe061f837 +Author: Behdad Esfahbod +AuthorDate: Mon Sep 11 22:00:00 2017 -0700 +Commit: Behdad Esfahbod +CommitDate: Mon Sep 11 22:00:00 2017 -0700 - Fix spellings descibed, indicies, stange + Fix undefined-behavior with integer math + + As reported to me: + + "A calculation on signed integers has undefined behaviour if the result is not + representable in the type. In this case, it's trying to negate int_min, aka + -2^31 but the range of an int is [-2^31, 2^31-1] so it doesn't fit. Instead, + cast to unsigned which has 2's complement wrap-around arithmetic which is what + this particular function expects." - src/cairo-pdf-surface.c | 2 +- - src/drm/cairo-drm-intel-debug.c | 2 +- - test/zero-alpha.c | 2 +- - 3 files changed, 3 insertions(+), 3 deletions(-) + src/cairo-fixed-private.h | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) -commit 4a7182f647d2c5f67668f2ba08bfc814c9923a76 +commit 1af18610baaefd2031259fc7aae79b341c57fb91 Author: Bryce Harrington -AuthorDate: Wed Mar 18 18:46:35 2015 -0700 +AuthorDate: Mon Sep 11 19:49:14 2017 -0700 Commit: Bryce Harrington -CommitDate: Wed Jun 24 18:29:09 2015 -0700 +CommitDate: Mon Sep 11 19:56:06 2017 -0700 - NEWS: Sp. fix + glesv2: Fix regression in gles version detection + + Revert the _cairo_gl_get_flavor() portion of the change from commit + eb523200. This caused GLES to be enabled only if the hardware reported + version 2 exactly; if the hardware supported version 2 and 3 then no ES + support would be enabled. - NEWS | 8 ++++---- - 1 file changed, 4 insertions(+), 4 deletions(-) + src/cairo-gl-info.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) -commit 45cbf45b74b84ca71c0f610146f898068f49408b -Author: Bryce Harrington -AuthorDate: Wed Mar 18 15:49:41 2015 -0700 -Commit: Bryce Harrington -CommitDate: Wed Jun 24 18:29:09 2015 -0700 +commit c29db4f0de52727406a8b62f4da9a382084b5a79 +Author: Adrian Johnson +AuthorDate: Sat Sep 2 16:11:43 2017 +0930 +Commit: Adrian Johnson +CommitDate: Sat Sep 2 16:11:43 2017 +0930 - surface: Clarify flush documentation + Remove unused variable - src/cairo-surface.c | 12 ++++++------ - 1 file changed, 6 insertions(+), 6 deletions(-) + src/cairo-unicode.c | 2 -- + 1 file changed, 2 deletions(-) -commit 70ad79a1f8a4ef3800798eaf3ed5ee31cb0c0199 -Author: Andrea Canciani -AuthorDate: Thu Mar 12 17:02:02 2015 +0100 -Commit: Bryce Harrington -CommitDate: Wed Jun 24 18:29:09 2015 -0700 +commit b646f755f3ad12ccd437ea32bffaefe5f6c6be25 +Author: Adrian Johnson +AuthorDate: Sat Sep 2 07:37:36 2017 +0930 +Commit: Adrian Johnson +CommitDate: Sat Sep 2 07:37:36 2017 +0930 - Harden make-cairo-test-constructors.sh - - The make-cairo-test-constructors.sh script executes several commands - without checking their success. This can lead to undetected errors, - like those fixed in 86fad78fcd2bf987249890aea4eabcce02a58f45. - - The script now exits with an error status if no file is - input. Moreover, it sets the '-e' flag, so that if a command fails, - the whole script is immediately terminated with an error. - - In the Makefile.am, the script result is now checked and the target - file is removed upon error. This ensures that the - 'cairo-test-constructors.c' target completes succesfully only if no - error occurred. - - Reviewed-by: Bryce Harrington + RELEASING: use correct branch name - test/Makefile.am | 2 +- - test/make-cairo-test-constructors.sh | 4 +++- - 2 files changed, 4 insertions(+), 2 deletions(-) + RELEASING | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) -commit 79042143fe12cf6e208f525a969982e7d637907f +commit 934e42fa5e4b74cf7fed022d2ff8a6326908ba3c Author: Bryce Harrington -AuthorDate: Fri Mar 13 13:17:28 2015 -0700 +AuthorDate: Tue Aug 29 10:18:14 2017 -0700 Commit: Bryce Harrington -CommitDate: Wed Jun 24 18:29:09 2015 -0700 +CommitDate: Tue Aug 29 10:18:14 2017 -0700 - Start 1.14.3 development + Bump version for new development tree, 1.15.9 cairo-version.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) -commit c4b67b56f4314fee2c892db3099998905d46110e -Author: Adrian Johnson -AuthorDate: Wed Mar 11 19:16:38 2015 +1030 +commit 112f0fc73b769c2db69f50601bf094892bd6db10 +Author: Bryce Harrington +AuthorDate: Sun Aug 27 17:53:40 2017 -0700 Commit: Bryce Harrington -CommitDate: Wed Jun 24 18:29:09 2015 -0700 +CommitDate: Tue Aug 29 10:01:02 2017 -0700 - doc: add index of new symbols in 1.14 + 1.15.8 release + + Signed-off-by: Bryce Harrington - doc/public/cairo-docs.xml | 3 +++ - 1 file changed, 3 insertions(+) + NEWS | 46 ++++++++++++++++++++++++++++++++++++++++++++++ + cairo-version.h | 2 +- + 2 files changed, 47 insertions(+), 1 deletion(-) -commit 2a8d50a0dd8331570537a40e63864dd18471f92d -Author: Bryce Harrington -AuthorDate: Tue Mar 10 19:55:35 2015 -0700 -Commit: Bryce Harrington -CommitDate: Wed Jun 24 18:29:09 2015 -0700 +commit 609261bcbc3bf3d4911749353fbcc01ced70534f +Author: Adrian Johnson +AuthorDate: Tue Aug 29 21:40:52 2017 +0930 +Commit: Adrian Johnson +CommitDate: Tue Aug 29 21:43:07 2017 +0930 - RELEASING: Update contacts - - Add a CC to the cairo@ list itself. - - Drop updating of the GNOME dependencies page; this appears to have not - been updated since 2008. + pdf: use explicit dest instead of named dest when 'internal' attribute is set - RELEASING | 20 ++++++++------------ - 1 file changed, 8 insertions(+), 12 deletions(-) + src/cairo-pdf-interchange.c | 181 +++++++++++++++++++++++++++------------- + src/cairo-pdf-surface-private.h | 1 - + test/pdf-tagged-text.c | 2 +- + 3 files changed, 126 insertions(+), 58 deletions(-) -commit 89520c69fd3074e03fe37c58fefbb20d9c7c03fb -Author: Bryce Harrington -AuthorDate: Tue Mar 10 18:42:50 2015 -0700 -Commit: Bryce Harrington -CommitDate: Wed Jun 24 18:27:06 2015 -0700 +commit 12b875aef374636d1693a631524dd3b622277415 +Author: Adrian Johnson +AuthorDate: Sat Aug 26 16:32:48 2017 +0930 +Commit: Adrian Johnson +CommitDate: Sat Aug 26 16:32:48 2017 +0930 - version: bump for cairo-1.14.2 release + pdf: use link attributes instead of dest name for cairo_pdf_surface_add_outline + + In PDF outline targets are specified the same way as link targets so + there is no need to restrict the target to dest names. - cairo-version.h | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) + src/cairo-pdf-interchange.c | 177 ++++++++++++++++++++++------------------ + src/cairo-pdf-surface-private.h | 2 +- + src/cairo-pdf-surface.c | 17 ++-- + src/cairo-pdf.h | 2 +- + test/pdf-tagged-text.c | 12 ++- + 5 files changed, 116 insertions(+), 94 deletions(-) -commit fcaef820bd0f6938ae7ba6453f4abeafe3fd2da3 -Author: Bryce Harrington -AuthorDate: Tue Mar 10 16:24:37 2015 -0700 -Commit: Bryce Harrington -CommitDate: Wed Jun 24 18:27:06 2015 -0700 +commit df37baf7895ef9acc71f3627b22e7368c8af3ea1 +Author: Adrian Johnson +AuthorDate: Sat Aug 26 09:58:48 2017 +0930 +Commit: Adrian Johnson +CommitDate: Sat Aug 26 16:26:12 2017 +0930 - KNOWN_ISSUES: Restore known issues file as a stub + pdf: fix link positions - Apparently distcheck requires this file be present. + Converting the link position from cairo to pdf coordinates requires + the page height. Since the link may point to a different page, build + an array of the height of each page and use the target page height for + the conversion. + + Don't default to a [0,0] position if "pos" is not specified. PDF + allows a null destination position to be specified which means don't + change the position if the page is already displayed or show top left + if switching to a different page. This is more useful default + particularly for external files where the coordinates (which must be + in PDF coordinates as we don't know the page height) of the top left + corner may not be known. - KNOWN_ISSUES | 3 +++ - 1 file changed, 3 insertions(+) + src/cairo-pdf-interchange.c | 50 +++++++++++++++++++++++++------------- + src/cairo-pdf-surface-private.h | 4 +-- + src/cairo-pdf-surface.c | 9 +++++++ + src/cairo-tag-attributes-private.h | 1 + + src/cairo-tag-attributes.c | 1 + + src/cairo.c | 7 +++--- + 6 files changed, 50 insertions(+), 22 deletions(-) -commit 747b62d8a3aad131536ef4487bdaae292ac784a6 -Author: Bryce Harrington -AuthorDate: Tue Mar 10 13:08:29 2015 -0700 -Commit: Bryce Harrington -CommitDate: Wed Jun 24 18:27:06 2015 -0700 +commit 74c6e3ae1d356e8bb4c7043cb9d3897c45cc0f79 +Author: Adrian Johnson +AuthorDate: Tue Aug 22 21:18:54 2017 +0930 +Commit: Adrian Johnson +CommitDate: Tue Aug 22 21:25:22 2017 +0930 - NEWS: Note about the OS X support + pdf: don't write logical structure if it only contains links - NEWS | 5 +++++ - 1 file changed, 5 insertions(+) + src/cairo-pdf-interchange.c | 21 +++++++++++++-------- + src/cairo-tag-stack.c | 1 + + 2 files changed, 14 insertions(+), 8 deletions(-) -commit 76393b557b034c1b3f04dfe3eaff21cbe7a43bb0 -Author: Andrea Canciani -AuthorDate: Tue Mar 10 12:10:35 2015 +0100 +commit 63f14d4a8f155ebaaca63b49e7bacca55d681af5 +Author: Doran Moppert +AuthorDate: Mon Jul 25 11:00:21 2016 +0930 Commit: Bryce Harrington -CommitDate: Wed Jun 24 18:27:06 2015 -0700 +CommitDate: Mon Aug 21 17:08:47 2017 -0700 - Update README with new minimum MacOSX requirements + image: Check for negative len in fill/blit functions - 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. + Applies the same fix as 5c82d91 to other potential negative len cases. + + Reviewed-by: Bryce Harrington - README | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) + src/cairo-image-compositor.c | 28 ++++++++++++++-------------- + 1 file changed, 14 insertions(+), 14 deletions(-) -commit 2f93af57f6527e20d821d5352a71c61fa9ae7834 -Author: Bryce Harrington -AuthorDate: Tue Mar 10 12:15:40 2015 -0700 +commit 5f90f0a706206ea3b940392bf1492fead832d99b +Author: Alexander Täschner +AuthorDate: Mon Jun 12 12:49:44 2017 +0200 Commit: Bryce Harrington -CommitDate: Wed Jun 24 18:27:06 2015 -0700 +CommitDate: Mon Aug 21 16:35:27 2017 -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. + win32: Initialize mutexes for static builds for win32 - Original patch by Andrea Canciani + For static win32 builds the mutexes are not initialized (for dynamic + builds it's done when the DLL is loaded). Therefore, add initialization + to the create surface calls. + + Cc: Uli Schlachter + Signed-off-by: Bryce Harrington - 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(-) + src/win32/cairo-win32-device.c | 2 ++ + 1 file changed, 2 insertions(+) -commit e7ec9ff90e7b5a08636b74f1a9669dcf773cebc5 -Author: Andrea Canciani -AuthorDate: Tue Mar 10 12:10:34 2015 +0100 +commit 339fe9a7689dd13626410afabb77b12ad0f9f7d2 +Author: Guillermo Rodriguez +AuthorDate: Tue Jul 4 12:19:37 2017 +0200 Commit: Bryce Harrington -CommitDate: Wed Jun 24 18:27:06 2015 -0700 +CommitDate: Mon Aug 21 16:29:10 2017 -0700 - Update KNOWN_ISSUES documentation + Remove redundant check. - 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. + Spotted by David Kastrup . Reviewed-by: Bryce Harrington - KNOWN_ISSUES | 10 ---------- - 1 file changed, 10 deletions(-) + src/cairo-surface.c | 4 ---- + 1 file changed, 4 deletions(-) -commit ccc1eadc655b64bbe748e7c49193305fae6c8f6e -Author: Bryce Harrington -AuthorDate: Tue Mar 10 04:45:18 2015 -0700 +commit 5ac7b3652d4d96bfdc5efe50c2540fb4eadeb7d9 +Author: Guillermo Rodriguez +AuthorDate: Tue Jul 4 12:21:02 2017 +0200 Commit: Bryce Harrington -CommitDate: Wed Jun 24 18:27:06 2015 -0700 +CommitDate: Mon Aug 21 16:05:16 2017 -0700 - NEWS: Finish filling in changes + script: Fix misleading indentation warning. + + Spotted by David Kastrup . + + Reviewed-by: Bryce Harrington - NEWS | 27 +++++++++++++++++++++++++-- - 1 file changed, 25 insertions(+), 2 deletions(-) + util/cairo-script/cairo-script-operators.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) -commit 452c40d6e802e4f8d27f176fce2c356000863d50 -Author: Bryce Harrington -AuthorDate: Sat Mar 7 00:30:40 2015 -0800 +commit a5ac8fe2031d8d64939a9fd0f324a9516276899e +Author: Bryce Harrington +AuthorDate: Mon Aug 21 14:37:48 2017 -0700 Commit: Bryce Harrington -CommitDate: Wed Jun 24 18:27:06 2015 -0700 +CommitDate: Mon Aug 21 14:39:24 2017 -0700 - NEWS: Update for changes through Nov 2014 + image: Disambiguate 0. in doxygen + + Doxygen is interpreting the leading 0. as starting an ordered list, and + misformatting the HTML documentation. + + Issue reported by Артур Галямов. + + Signed-off-by: Bryce Harrington - NEWS | 47 +++++++++++++++++++++++++++++++++++++++++++++++ - 1 file changed, 47 insertions(+) + src/cairo-image-surface.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) -commit fb8eef0fadef25ece95404aeee410f627bd5eead -Author: Bryce Harrington -AuthorDate: Fri Mar 6 23:54:49 2015 -0800 -Commit: Bryce Harrington -CommitDate: Wed Jun 24 18:27:06 2015 -0700 +commit 4c12e2aec38eb03d17787ece5a5566af902d16b7 +Author: Adrian Johnson +AuthorDate: Mon Aug 21 21:23:45 2017 +0930 +Commit: Adrian Johnson +CommitDate: Mon Aug 21 21:23:45 2017 +0930 - HACKING: Add link to git tutorial and wordsmith a bit + pdf: Don't emit /PageLabel dict when no labels defined - HACKING | 18 ++++++++---------- - 1 file changed, 8 insertions(+), 10 deletions(-) + src/cairo-pdf-interchange.c | 92 +++++++++++++++++++++++++-------------------- + 1 file changed, 52 insertions(+), 40 deletions(-) -commit 1dc88d197f7cd73d67c6b7bcaed08924b276eafa -Author: Bryce Harrington -AuthorDate: Fri Mar 6 23:31:25 2015 -0800 -Commit: Bryce Harrington -CommitDate: Wed Jun 24 18:27:06 2015 -0700 +commit e3857c133f6403b94a49480ca0fad66876dbe609 +Author: Adrian Johnson +AuthorDate: Sun Aug 20 20:09:02 2017 +0930 +Commit: Adrian Johnson +CommitDate: Sun Aug 20 20:09:02 2017 +0930 - csi-trace: Add --version and --help args to utility + pdf: link tags do not need to be leaf nodes in the document structure - util/cairo-script/csi-trace.c | 10 +++++++++- - 1 file changed, 9 insertions(+), 1 deletion(-) + src/cairo-pdf-interchange.c | 11 +---------- + 1 file changed, 1 insertion(+), 10 deletions(-) -commit f2aa28e331b621c2502ddea2bfb73188ef6d335a -Author: Bryce Harrington -AuthorDate: Fri Mar 6 22:26:22 2015 -0800 -Commit: Bryce Harrington -CommitDate: Wed Jun 24 18:27:06 2015 -0700 +commit bb4ab5a8be2f66bfc03716eb37b94ec186ab1e55 +Author: Adrian Johnson +AuthorDate: Sat Aug 19 10:50:58 2017 +0930 +Commit: Adrian Johnson +CommitDate: Sat Aug 19 10:52:18 2017 +0930 - Revert "xlib: Remove queued event from _XReadEvents" + tests: fix bug in pdf-tagged-text that was introduced in 4790a36 + + test/pdf-tagged-text.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit f3515954e0bc9c9ca413a84a8dd842145cec83a7 +Author: Behdad Esfahbod +AuthorDate: Tue Aug 8 22:04:55 2017 -0700 +Commit: Behdad Esfahbod +CommitDate: Tue Aug 8 22:04:55 2017 -0700 + + [ft] Fix color font loading on big-endian systems - This reverts commit e7fc8f405beeeb1048f69fe22923170a137b805e. + Untested, but the logic is correct: FreeType's BGRA type is always + laid out in that order in memory. Cairo's ARGB32 is endianness- + dependent. On little-endian systems the two are the same. On big-endian + we need to flip. - src/cairo-xlib-surface-shm.c | 5 ----- - 1 file changed, 5 deletions(-) + src/cairo-ft-font.c | 9 +++++++++ + 1 file changed, 9 insertions(+) -commit fb3b415cb3bf0fb242be8e6a53d20460ec684ebc -Author: Bryce Harrington -AuthorDate: Fri Mar 6 23:29:53 2015 -0800 -Commit: Bryce Harrington -CommitDate: Wed Jun 24 18:27:06 2015 -0700 +commit 495cb9a0a765ccbc678f55d8bfe699829a214f39 +Author: Behdad Esfahbod +AuthorDate: Sat Jul 29 17:40:34 2017 +0100 +Commit: Behdad Esfahbod +CommitDate: Sat Jul 29 17:40:34 2017 +0100 - git-ignore: Add build's test-driver + Fix uninitialized status! - build/.gitignore | 2 ++ - 1 file changed, 2 insertions(+) + src/cairo-surface.c | 6 +++--- + 1 file changed, 3 insertions(+), 3 deletions(-) -commit 3a1215291bd7e16a6bd40fab7a31075680648014 -Author: Bryce Harrington -AuthorDate: Fri Mar 6 19:14:58 2015 -0800 -Commit: Bryce Harrington -CommitDate: Wed Jun 24 18:27:06 2015 -0700 +commit 7a1e378466971d26a3f6d3c9437744bc5ffef1eb +Author: Behdad Esfahbod +AuthorDate: Sat Jul 29 16:20:21 2017 +0100 +Commit: Behdad Esfahbod +CommitDate: Sat Jul 29 16:20:21 2017 +0100 - doc: Drop extraneous para's + Fix color font support infinite-loop with empty glyphs - These may have been required in the past, but just trip up distcheck - today. The generated docs still look fine. + Ouch! But it all works now! Only took five years to merge this feature. + Thanks Matthias Clasen for working out a real patch from my initial + sketch. - src/cairo-version.c | 12 ++++++------ - 1 file changed, 6 insertions(+), 6 deletions(-) + src/cairo-ft-font.c | 17 ++++++----------- + 1 file changed, 6 insertions(+), 11 deletions(-) -commit 9a4026d31510f641b13eaf29baa9806d1179aa59 -Author: Bryce Harrington -AuthorDate: Fri Mar 6 18:34:07 2015 -0800 -Commit: Bryce Harrington -CommitDate: Wed Jun 24 18:27:06 2015 -0700 +commit 5e3350e4d1df6aeb4333cb1e4134feb22280735c +Author: Matthias Clasen +AuthorDate: Fri Jun 30 21:17:43 2017 -0400 +Commit: Behdad Esfahbod +CommitDate: Sat Jul 29 12:30:50 2017 +0100 - gitignore: logs, manuals + Simplify things a bit + + Do away with the separate check for color glyphs - we can just + do the filtering, and if there are no color glyphs, it is a + no-op. As long as we only do this for fonts with color glyphs, + it should be fine. + + Reduce repetition in composite_color_glyphs by breaking out + some helper functions. - .gitignore | 4 ++-- - 1 file changed, 2 insertions(+), 2 deletions(-) + src/cairo-surface.c | 227 ++++++++++++++++++++-------------------------------- + 1 file changed, 89 insertions(+), 138 deletions(-) -commit 74d53e5eb027d127580211962e52fd63b16af599 -Author: Henry (Yu) Song -AuthorDate: Thu Mar 5 00:20:42 2015 +0000 -Commit: Bryce Harrington -CommitDate: Wed Jun 24 18:27:06 2015 -0700 +commit db14d6d70759df221d6aaee9a1dc0354c39f1aa3 +Author: Matthias Clasen +AuthorDate: Thu Jun 29 22:57:02 2017 -0400 +Commit: Behdad Esfahbod +CommitDate: Sat Jul 29 12:30:50 2017 +0100 - xlib: Remove queued event from _XReadEvents + Render color glyphs as source, not as mask - Following patch fixes a memory leak in xlib surface. + Use paint instead of show_glyphs for color glyphs. To avoid + overhead, we only check for color glyphs if the font is known + to contain any. Paint clusters containing only color glyphs + and rewrite the inputs to remove the handled clusters and + glyphs. + + src/cairo-surface.c | 258 +++++++++++++++++++++++++++++++++++++++++++++++++++- + 1 file changed, 257 insertions(+), 1 deletion(-) + +commit 6a8a25cc4792eca774fa6d0857229659adbe063b +Author: Matthias Clasen +AuthorDate: Fri Apr 8 13:20:56 2016 -0400 +Commit: Behdad Esfahbod +CommitDate: Sat Jul 29 12:30:50 2017 +0100 + + Implement has_color_glyphs for freetype - Reviewed-by: Bryce Harrington + This information is available from the FT_Face using the + FT_HAS_COLOR macro. We cache the value in the unscaled_font + object as soon as we have an FT_Face. - src/cairo-xlib-surface-shm.c | 5 +++++ - 1 file changed, 5 insertions(+) + src/cairo-ft-font.c | 28 +++++++++++++++++++++++++++- + 1 file changed, 27 insertions(+), 1 deletion(-) -commit a0712362b5dbe6d9f7256a29e0323c5f4cde6429 -Author: Michael Haubenwallner -AuthorDate: Fri Feb 27 14:25:41 2015 +0100 -Commit: Bryce Harrington -CommitDate: Wed Jun 24 18:27:06 2015 -0700 +commit 66228456531c8a80f3985160bf1013248e433681 +Author: Matthias Clasen +AuthorDate: Fri Apr 8 13:21:47 2016 -0400 +Commit: Behdad Esfahbod +CommitDate: Sat Jul 29 12:30:50 2017 +0100 - headers: fix include order for AIX, bug#89354 + Expose 'has color glyphs' as a scaled font property - also for cairo-xcb-private.h + This information will be used in subsequent commits to quickly + decide that we won't try to handle glpyhs as masks. Implementing + the new has_color_glyphs vfunc is optional - only backends that + support color glyphs need to implement it. + + src/cairo-scaled-font-private.h | 2 ++ + src/cairo-scaled-font.c | 9 +++++++++ + src/cairoint.h | 3 +++ + 3 files changed, 14 insertions(+) + +commit 52b17c724260512873ab0731e2e2314bb0a15e4b +Author: Matthias Clasen +AuthorDate: Thu Jun 29 20:19:56 2017 -0400 +Commit: Behdad Esfahbod +CommitDate: Sat Jul 29 12:30:50 2017 +0100 - src/cairo-xcb-private.h | 4 ++-- - 1 file changed, 2 insertions(+), 2 deletions(-) + Support loading color glyphs with freetype + + Use the FT_LOAD_COLOR flag to instruct freetype to load embedded + PNGs without converting them to grayscale. We always load both + the color and regular surface when we are loading surfaces. -commit 51fdf6f0ae62a4426d2b471836d4dfa9839db67d -Author: Michael Haubenwallner -AuthorDate: Fri Feb 27 11:22:04 2015 +0100 -Commit: Bryce Harrington -CommitDate: Wed Jun 24 18:27:06 2015 -0700 + src/cairo-ft-font.c | 44 ++++++++++++++++++++++++++++++++++---------- + 1 file changed, 34 insertions(+), 10 deletions(-) - headers: fix include order for AIX, bug#89354 +commit 0d8859c66fb82a00147ab77d1971111306ca2272 +Author: Matthias Clasen +AuthorDate: Thu Apr 7 20:38:09 2016 -0400 +Commit: Behdad Esfahbod +CommitDate: Sat Jul 29 12:30:50 2017 +0100 - 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(-) + Add support for color glyphs to cairo_scaled_glyph_t + + With this, glyphs can have either a surface that is expected + to be used as mask, or a color_surface that should be used + as source, or both. + + This will be used to support colored emoji glyphs that are + stored as PNG images in OpenType fonts. -commit 8e0c4c050e8a080939d968827d4ba7b697c0d4f9 -Author: Michael Haubenwallner -AuthorDate: Thu Feb 26 15:11:05 2015 +0100 -Commit: Bryce Harrington -CommitDate: Wed Jun 24 18:27:06 2015 -0700 + src/cairo-scaled-font-private.h | 1 + + src/cairo-scaled-font.c | 21 +++++++++++++++++++++ + src/cairoint.h | 8 +++++++- + 3 files changed, 29 insertions(+), 1 deletion(-) - perf: fix include order for AIX, bug#89354 +commit 0fadb2c56d855560810205d78975450ddce271df +Author: Bryce Harrington +AuthorDate: Fri Jul 28 17:02:12 2017 -0700 +Commit: Bryce Harrington +CommitDate: Fri Jul 28 17:03:00 2017 -0700 - perf/cairo-perf-report.c | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) + cairo-docs: whitespace cleanup -commit 0e098447938cbdb15fa040ca27aff51678fe81eb -Author: Michael Haubenwallner -AuthorDate: Thu Feb 26 16:00:01 2015 +0100 + doc/public/cairo-docs.xml | 6 +++--- + 1 file changed, 3 insertions(+), 3 deletions(-) + +commit f6673e239a7e72a1f66e8faf1e5d5bbe7bdc2fd4 +Author: Bryce Harrington +AuthorDate: Fri Jul 28 17:02:29 2017 -0700 Commit: Bryce Harrington -CommitDate: Wed Jun 24 18:27:06 2015 -0700 +CommitDate: Fri Jul 28 17:02:29 2017 -0700 - perf/micro: fix include order for AIX, bug#89354 + RELEASING: Note adding index to cairo-docs.xml for minor releases - 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(-) + RELEASING | 23 ++++++++++++++++------- + 1 file changed, 16 insertions(+), 7 deletions(-) -commit e91ebe3dd01acde2914c40724c05d192b14de950 -Author: Michael Haubenwallner -AuthorDate: Thu Feb 26 15:03:43 2015 +0100 +commit 3a8bb3380532dbbede661f6c58a8a9cd443840c2 +Author: Bryce Harrington +AuthorDate: Fri Jul 28 16:31:50 2017 -0700 Commit: Bryce Harrington -CommitDate: Wed Jun 24 18:27:06 2015 -0700 +CommitDate: Fri Jul 28 16:55:09 2017 -0700 - test: fix include order for AIX, bug#89354 + RELEASING: Note use of branches for stable releases - 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(-) + RELEASING | 21 +++++++++++++-------- + 1 file changed, 13 insertions(+), 8 deletions(-) -commit b0f3465d09869e483179a3bb92a16fe4f0d39e14 -Author: Michael Haubenwallner -AuthorDate: Thu Feb 26 16:24:55 2015 +0100 -Commit: Bryce Harrington -CommitDate: Wed Jun 24 18:27:06 2015 -0700 +commit 57b40507dda3f58dfc8635548d606b86dc7bcf51 +Author: Adrian Johnson +AuthorDate: Thu Jun 15 20:53:29 2017 +0930 +Commit: Adrian Johnson +CommitDate: Thu Jun 15 20:53:29 2017 +0930 - 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. + Fix off by one check in cairo-image-info.c - Fixes: https://bugs.freedesktop.org/show_bug.cgi?id=89356 - Reviewed-by: Bryce Harrington + https://bugs.freedesktop.org/show_bug.cgi?id=101427 - perf/cairo-perf-report.c | 2 ++ - 1 file changed, 2 insertions(+) + src/cairo-image-info.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) -commit 4cb6da119e5cc954161c6c10fc4cc6c3b70a407f -Author: Michael Haubenwallner -AuthorDate: Thu Feb 26 15:23:01 2015 +0100 +commit 13ddd7297729e77de07f409b91b61cbae2d16141 +Author: Bryce Harrington +AuthorDate: Tue Jun 13 15:22:55 2017 -0700 Commit: Bryce Harrington -CommitDate: Wed Jun 24 18:27:06 2015 -0700 +CommitDate: Tue Jun 13 15:22:55 2017 -0700 - 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 + Bump version for new development tree, 1.15.7 - test/cairo-test-trace.c | 4 ++++ - util/cairo-sphinx/sphinx.c | 4 ++++ - 2 files changed, 8 insertions(+) + cairo-version.h | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) -commit 64b71a1fe6724a6ff3b3188808dd3ce82fcea13e -Author: Michael Haubenwallner -AuthorDate: Thu Feb 26 14:18:30 2015 +0100 +commit c31721ab27c65941dd9e0c29662d7ebb5caa2a01 +Author: Bryce Harrington +AuthorDate: Tue Jun 13 12:25:01 2017 -0700 Commit: Bryce Harrington -CommitDate: Wed Jun 24 18:27:06 2015 -0700 +CommitDate: Tue Jun 13 14:57:38 2017 -0700 - fix conflicting types for 'sync' on AIX, bug#89338 + 1.15.6 release - src/cairo-surface-observer.c | 12 ++++++------ - src/cairo-xlib-surface-shm.c | 4 ++-- - 2 files changed, 8 insertions(+), 8 deletions(-) + NEWS | 61 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ + cairo-version.h | 2 +- + 2 files changed, 62 insertions(+), 1 deletion(-) -commit 4e7f1621df76d3cd948632b9409f4d2ffcfae3eb -Author: Andrea Canciani -AuthorDate: Tue Dec 9 16:13:00 2014 +0100 +commit ce68336f7da58822a4c9c4cd49d5336d55bd36fd +Author: Bryce Harrington +AuthorDate: Tue Jun 13 14:53:55 2017 -0700 Commit: Bryce Harrington -CommitDate: Wed Jun 24 18:27:06 2015 -0700 +CommitDate: Tue Jun 13 14:57:38 2017 -0700 - 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. + drm: Add/reorder headers as required by check-preprocessor-syntax.sh - Based on a patch by Simon Cozens. + If cairo-drm-intel-brw-eu.h and/or cairo-drm-intel-brw-structs.h are + intended to be private headers, then the change to include cairo.h can + be dropped but the headers should be renamed *-private.h to conform with + Cairo standards. - Fixes https://bugs.freedesktop.org/show_bug.cgi?id=84324 + I'm not certain why check-preprocessor-syntax.sh started flagging these + issues, as it doesn't look like there's been changes to them recently. + But the release scripts won't move forward without these being fixed. - src/cairo-quartz-font.c | 10 ++++------ - 1 file changed, 4 insertions(+), 6 deletions(-) + src/drm/cairo-drm-intel-brw-eu.h | 1 + + src/drm/cairo-drm-intel-brw-structs.h | 1 + + src/drm/cairo-drm-intel-ioctl-private.h | 4 ++-- + src/drm/cairo-drm-radeon-surface.c | 8 ++++---- + 4 files changed, 8 insertions(+), 6 deletions(-) -commit d4a4705898a44cde085629686921bd4440bb3002 -Author: Massimo Valentini -AuthorDate: Wed Sep 11 18:10:38 2013 +0200 +commit f613e0717231bd028ffc9da79247eb8c23dc463d +Author: Bryce Harrington +AuthorDate: Mon Jun 12 16:54:23 2017 -0700 Commit: Bryce Harrington -CommitDate: Wed Jun 24 18:27:06 2015 -0700 +CommitDate: Mon Jun 12 18:55:35 2017 -0700 - 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. + gl: Fix comment syntax - Fixes: https://bugs.freedesktop.org/show_bug.cgi?id=53121 - Reviewed-by: Bryce Harrington + Signed-off-by: Bryce Harrington - src/win32/cairo-win32-display-surface.c | 8 ++++---- - 1 file changed, 4 insertions(+), 4 deletions(-) + src/cairo-gl-private.h | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) -commit 58897cbe917e44f8802eac751805389958a499df -Author: Emanuele Aina -AuthorDate: Tue Dec 16 14:58:55 2014 +0100 -Commit: Bryce Harrington -CommitDate: Wed Jun 24 18:27:06 2015 -0700 +commit bfc243ca52e85e909e200363a687611d256ccc66 +Author: Uli Schlachter +AuthorDate: Tue May 30 18:04:38 2017 +0200 +Commit: Uli Schlachter +CommitDate: Tue May 30 18:04:38 2017 +0200 - 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: + xcb: Fix error reporting if fallback fails - s1 s1 //ARGB32 48 48 similar-image % s2 - - Instead of: - - s1 //ARGB32 48 48 similar-image % s2 + If we cannot let the X11 server do some operation (for example: the + RENDER extension is not available), then we fall back to an image + surface and do the operation locally instead. This fallback requires the + current content of the surface to be downloaded from the X11 server. + This fallback logic had an error. + + The fallback is implemented with _get_image() in the function + _cairo_xcb_surface_fallback(). _get_image() is only called if we do not + yet have a fallback available, so when we call _get_image we have + surface->fallback == NULL. Then, if _get_image() fails, it returns a + surface in an error state. + + Before this patch, the code would then just ignore this error surface + and return &surface->fallback->base, a NULL pointer. This would then + quickly cause a crash when e.g. the surface's ->status member is + accessed. + + Fix this by returning the error surface instead as the fallback. + + The end result of this patch will be that the XCB surface that is + currently drawn to ends up in an error state which is a lot better than + a NULL pointer dereference and actually correct in this case. The error + state is reached because the current drawing operation will fail and + this error is reported up the call stack and eventually "taints" the + surface. - 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.)" + (However, the error code could be better: _get_image() too often fails + with a generic CAIRO_STATUS_NO_MEMORY error, but that's left as future + work) - Drop the duplicated entry from the trace line printed by the - cairo_surface_create_similar_image() override. + Signed-off-by: Uli Schlachter + + src/cairo-xcb-surface.c | 9 +++++---- + 1 file changed, 5 insertions(+), 4 deletions(-) + +commit 0fd0fd0ae9ad8cfb177bb844091de98c0235917e +Author: Adrian Johnson +AuthorDate: Sun May 28 09:07:54 2017 +0930 +Commit: Adrian Johnson +CommitDate: Sun May 28 09:12:56 2017 +0930 + + subsetting: support variable fonts - Fixes: https://bugs.freedesktop.org/show_bug.cgi?id=73580 - Signed-off-by: Emanuele Aina + If the font is a non default variant, fallback to creating a font from + the outlines. - util/cairo-trace/trace.c | 3 +-- - 1 file changed, 1 insertion(+), 2 deletions(-) + src/cairo-cff-subset.c | 13 +++++++-- + src/cairo-ft-font.c | 67 ++++++++++++++++++++++++++++++++++++++++++-- + src/cairo-truetype-subset.c | 13 +++++++-- + src/cairo-type1-subset.c | 14 ++++++--- + src/cairoint.h | 8 ++++-- + src/win32/cairo-win32-font.c | 12 ++++---- + 6 files changed, 107 insertions(+), 20 deletions(-) -commit 94adea3455576af81745e470411b39feac6d53f2 +commit 9d44136ef8e2a1ad2c6631beb4bbdaeed7a2dad8 Author: Uli Schlachter -AuthorDate: Sat Dec 6 17:04:07 2014 +0100 -Commit: Bryce Harrington -CommitDate: Wed Jun 24 18:27:05 2015 -0700 +AuthorDate: Sat May 13 09:37:34 2017 +0200 +Commit: Uli Schlachter +CommitDate: Sat May 13 09:37:34 2017 +0200 - xlib-xcb: Don't be lazy and use the real xcb_screen_t + Revert "stroker: Check for scaling overflow in computing half line widths" - Signed-off-by: Uli Schlachter + This reverts commit 91b25005d62fe4ca178f45d349374e42c29a5e11 because it + causes lots of new crashes due to assertion failures. - src/cairo-xlib-xcb-surface.c | 33 ++++++++++++++++++--------------- - 1 file changed, 18 insertions(+), 15 deletions(-) + src/cairo-fixed-private.h | 13 ------------- + src/cairo-path-stroke-boxes.c | 25 +++++-------------------- + src/cairo-path-stroke-polygon.c | 1 - + src/cairo-path-stroke-traps.c | 1 - + src/cairo-path-stroke.c | 1 - + 5 files changed, 5 insertions(+), 36 deletions(-) -commit fc648fb58f11a692053e95b33c125c1994d33b4f -Author: Uli Schlachter -AuthorDate: Sat Dec 6 16:04:46 2014 +0100 +commit 91b25005d62fe4ca178f45d349374e42c29a5e11 +Author: Chris Wilson +AuthorDate: Fri Mar 24 12:36:41 2017 +0000 Commit: Bryce Harrington -CommitDate: Wed Jun 24 18:27:05 2015 -0700 +CommitDate: Thu May 4 17:44:48 2017 -0700 - 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). + stroker: Check for scaling overflow in computing half line widths - 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. + Given a combination of a large scaling matrix and a large line, we can + easily generate a half line width that is unrepresentable in our 24.8 + fixed-point. This leads to spurious errors later, such as generating + negative height boxes, and so asking pixman to fill to infinity. To + avoid this, we can check for overflow in calculating the half line with, + though we still lack adequate range checking on the final stroke path. - Signed-off-by: Uli Schlachter + References: https://bugs.webkit.org/show_bug.cgi?id=16793 + Signed-off-by: Chris Wilson + Cc: magomez@igalia.com + Tested-by: Bryce Harrington + Acked-by: Bryce Harrington - 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(-) + src/cairo-fixed-private.h | 13 +++++++++++++ + src/cairo-path-stroke-boxes.c | 25 ++++++++++++++++++++----- + src/cairo-path-stroke-polygon.c | 1 + + src/cairo-path-stroke-traps.c | 1 + + src/cairo-path-stroke.c | 1 + + 5 files changed, 36 insertions(+), 5 deletions(-) -commit 226e135714bdb0c556a47cc77b19b550e0d78ff6 +commit a3cc46d2ccba44a538d05f0c5870b1a82f046350 Author: Andrea Canciani -AuthorDate: Mon Dec 22 12:49:00 2014 +0100 -Commit: Bryce Harrington -CommitDate: Wed Jun 24 18:27:05 2015 -0700 +AuthorDate: Sun Mar 19 21:48:11 2017 +0100 +Commit: Andrea Canciani +CommitDate: Tue Apr 25 18:06:14 2017 +0200 - 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. + quartz-font: Fix text-glyph-range - This caused fonts to stay in the cache and caused a crash in the - api-special-cases (when running the test suite with -f). + The index 0 is a legitimate index used for character codes that do not + correspond to any glyph in the font. Instead, the API reserves 0xFFFF + (kCGFontIndexInvalid) as the invalid index and defines 0xFFFE + (kCGFontIndexMax = kCGGlyphMax) as the maximum legal index. - Fixes api-special-cases, - https://bugs.freedesktop.org/show_bug.cgi?id=87567 + Fixes text-glyph-range. - src/cairo-font-face.c | 5 +++-- - 1 file changed, 3 insertions(+), 2 deletions(-) + src/cairo-quartz-font.c | 16 ++++++++-------- + test/reference/text-glyph-range.quartz.ref.png | Bin 0 -> 2328 bytes + test/reference/text-glyph-range.quartz.xfail.png | Bin 2051 -> 0 bytes + 3 files changed, 8 insertions(+), 8 deletions(-) -commit aee44760a8b49ea8bc6017a1e7cc192aa9d3fff1 -Author: Chris Wilson -AuthorDate: Wed Dec 31 10:54:43 2014 +0000 -Commit: Bryce Harrington -CommitDate: Wed Jun 24 18:27:05 2015 -0700 +commit fcb0a8ef36c9a84f586d38bd409d6a0e881890a7 +Author: Andrea Canciani +AuthorDate: Sat Mar 18 10:20:07 2017 +0100 +Commit: Andrea Canciani +CommitDate: Tue Apr 25 18:06:14 2017 +0200 - 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. + quartz-font: Correct handling of SMP Unicode characters - Otherwise, we end up with a memory leak: + Truncating the UCS4 representation to 16 bits only works for the Basic + Multilingual Plane, the other characters must be translated to a + surrogate pair. - ==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) + Fixes smp-glyph. - Reported-by: Massimo Valentini - Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=87898 - Signed-off-by: Chris Wilson + Reported-by: Clerk Ma - src/cairo-xlib-source.c | 14 ++++++++++---- - 1 file changed, 10 insertions(+), 4 deletions(-) + src/cairo-quartz-font.c | 9 +++++---- + 1 file changed, 5 insertions(+), 4 deletions(-) -commit a8010c41ec98d7887bfddf42b4ce962f808868b0 +commit 5584bf755c98703653eef06670abaeb4873f9ee5 Author: Andrea Canciani -AuthorDate: Thu Nov 20 17:22:30 2014 +0100 -Commit: Bryce Harrington -CommitDate: Wed Jun 24 18:27:05 2015 -0700 +AuthorDate: Sat Mar 18 08:55:11 2017 +0100 +Commit: Andrea Canciani +CommitDate: Tue Apr 25 18:05:40 2017 +0200 - test: Free test list + unicode: Extract the UCS4 to UTF-16 conversion to a separate function - 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. + Reuse the function for the UTF-8 to UTF-16 conversion, but also make + it available for internal use by cairo. + + src/cairo-unicode.c | 39 +++++++++++++++++++++++++++++++++------ + src/cairoint.h | 4 ++++ + 2 files changed, 37 insertions(+), 6 deletions(-) + +commit cb9f6273780bb2ffc710d2efdd4224d9096972cb +Author: Andrea Canciani +AuthorDate: Sun Mar 19 10:37:36 2017 +0100 +Commit: Andrea Canciani +CommitDate: Tue Apr 25 18:05:40 2017 +0200 + + test: Add a test for characters in the SMP - Fixes the following valgrind error: + Unicode characters in the Supplementary Multilingual Plane are encoded + as surrogate pairs in UTF-16. This test tries to verify that backends + do not perform UCS4 to UTF-16 conversion by truncation. + + test/Makefile.sources | 1 + + test/reference/smp-glyph.ref.png | Bin 0 -> 301 bytes + test/reference/smp-glyph.script.ref.png | Bin 0 -> 302 bytes + test/smp-glyph.c | 56 ++++++++++++++++++++++++++++++++ + 4 files changed, 57 insertions(+) + +commit 8455d88b1276c25cbca0b7218171d8825efad4dc +Author: Enrico Weigelt, metux IT consult +AuthorDate: Mon Apr 17 18:57:11 2017 +0200 +Commit: Bryce Harrington +CommitDate: Mon Apr 24 18:35:44 2017 -0700 + + drm: fixed calls to _cairo_surface_init() - 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) + This function now expects an additional parameter is_vector. - Signed-off-by: Bryce Harrington + Signed-off-by: Enrico Weigelt, metux IT consult - test/cairo-test-runner.c | 1 + - 1 file changed, 1 insertion(+) + src/drm/cairo-drm-intel-surface.c | 4 +++- + src/drm/cairo-drm-radeon-surface.c | 3 ++- + 2 files changed, 5 insertions(+), 2 deletions(-) -commit 671dc9fc244e5447a04dc60a4d99a5ba5afd71f6 -Author: Andrea Canciani -AuthorDate: Thu Nov 20 17:22:31 2014 +0100 -Commit: Bryce Harrington -CommitDate: Wed Jun 24 18:27:05 2015 -0700 +commit f7e686c92a428d5293b73c325bac1b043d0f86d8 +Author: Enrico Weigelt, metux IT consult +AuthorDate: Mon Apr 17 18:56:45 2017 +0200 +Commit: Bryce Harrington +CommitDate: Mon Apr 24 15:54:02 2017 -0700 - test: Release owned pattern + drm: use typedefs and defines from drm headers instead of redundant own definitions - The pattern created by cairo_pattern_create_rgb() is owned by the - caller, hence it needs to be released. + These typedefs and defines are part of the libdrm API and therefore should + be taken from there, instead of own redundant declarations. - Fixes the following valgrind error: + Signed-off-by: Enrico Weigelt, metux IT consult + + src/Makefile.sources | 1 - + src/drm/cairo-drm-bo.c | 33 +-- + src/drm/cairo-drm-i915-surface.c | 1 - + src/drm/cairo-drm-i965-surface.c | 1 - + src/drm/cairo-drm-intel-ioctl-private.h | 403 +------------------------------- + src/drm/cairo-drm-intel.c | 4 +- + src/drm/cairo-drm-ioctl-private.h | 12 - + src/drm/cairo-drm-radeon-private.h | 4 - + src/drm/cairo-drm-radeon-surface.c | 4 + + src/drm/cairo-drm-radeon.c | 123 +--------- + 10 files changed, 11 insertions(+), 575 deletions(-) + +commit 72c600afbfbbbafdc894a85c8086e18b93391c1d +Author: Enrico Weigelt, metux IT consult +AuthorDate: Mon Apr 17 18:56:43 2017 +0200 +Commit: Bryce Harrington +CommitDate: Mon Apr 24 15:42:35 2017 -0700 + + drm: dropped obsolete/unused intel_bo_get_image() - 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) + [Call to this was dropped in bd672d08 in favor of intel_bo_map()]] - Signed-off-by: Bryce Harrington + Signed-off-by: Enrico Weigelt, metux IT consult + Reviewed-by: Bryce Harrington - test/api-special-cases.c | 4 +++- - 1 file changed, 3 insertions(+), 1 deletion(-) + src/drm/cairo-drm-intel-private.h | 5 ----- + src/drm/cairo-drm-intel.c | 44 --------------------------------------- + 2 files changed, 49 deletions(-) -commit 0a4bae2b8c095378cc3521d322d3d4ad36eb8a61 -Author: Bryce Harrington -AuthorDate: Wed Dec 3 19:28:15 2014 -0800 -Commit: Bryce Harrington -CommitDate: Wed Jun 24 18:27:05 2015 -0700 +commit 182104defedd18c377a8d3d27ef9278e490f3cce +Author: Enrico Weigelt, metux IT consult +AuthorDate: Mon Apr 17 18:56:40 2017 +0200 +Commit: Bryce Harrington +CommitDate: Mon Apr 24 10:18:08 2017 -0700 - image: Fix crash in _fill_xrgb32_lerp_opaque_spans + drm: fixed missing includes - If a span length is negative don't go out of bounds processing the fill - data. + Signed-off-by: Enrico Weigelt, metux IT consult + Reviewed-by: Bryce Harrington + + src/drm/cairo-drm-i915-glyphs.c | 1 + + src/drm/cairo-drm-i915-shader.c | 1 + + src/drm/cairo-drm-i915-surface.c | 1 + + src/drm/cairo-drm-intel-private.h | 1 + + src/drm/cairo-drm-intel-surface.c | 1 + + src/drm/cairo-drm-intel.c | 2 ++ + src/drm/cairo-drm-radeon-surface.c | 1 + + src/drm/cairo-drm-radeon.c | 1 + + 8 files changed, 9 insertions(+) + +commit cffa452f44eadebef8553502e3d6cc49829d38ce +Author: Debarshi Ray +AuthorDate: Thu Dec 15 12:50:13 2016 +0100 +Commit: Bryce Harrington +CommitDate: Wed Mar 15 20:26:22 2017 -0700 + + doc: Clarify when the device scale is inherited and when it isn't + + In short, cairo_surface_create_similar inherits it, while + cairo_surface_create_similar_image doesn't. It wasn't obvious without + reading the code or explicitly checking the device scale of the new + surface. - Patch thanks to Ilya Sakhnenko on mailing list. + Fixes: https://bugs.freedesktop.org/show_bug.cgi?id=99094 - Signed-off-by: Bryce Harrington + Reviewed-by: Bryce Harrington - src/cairo-image-compositor.c | 4 ++-- - 1 file changed, 2 insertions(+), 2 deletions(-) + src/cairo-surface.c | 13 ++++++++----- + 1 file changed, 8 insertions(+), 5 deletions(-) -commit 6f42cbd163add33afafbf8838a09c8150e46ae1e -Author: Bryce Harrington -AuthorDate: Thu Nov 20 12:19:47 2014 -0800 +commit 1192f97388ba428a623670107a96fc13cbf97ee9 +Author: Debarshi Ray +AuthorDate: Thu Dec 15 12:41:39 2016 +0100 Commit: Bryce Harrington -CommitDate: Wed Jun 24 18:27:05 2015 -0700 +CommitDate: Wed Mar 15 20:26:18 2017 -0700 - Refactor ARRAY_LENGTH macro definitions in test code + doc: Fix the units used by cairo_surface_create_similar_image + + Fixes: https://bugs.freedesktop.org/show_bug.cgi?id=99094 + + Reviewed-by: Bryce Harrington - 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(-) + src/cairo-surface.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) -commit 5ac87db3bad5e002df5bd49fc730c85199db5e64 -Author: Bryce Harrington -AuthorDate: Fri Nov 14 18:10:16 2014 -0800 -Commit: Bryce Harrington -CommitDate: Wed Jun 24 18:27:05 2015 -0700 +commit 10e4103a508f81a3e47938e97c0b84f1ba41071c +Author: Uli Schlachter +AuthorDate: Tue Mar 7 10:05:43 2017 +0100 +Commit: Uli Schlachter +CommitDate: Tue Mar 7 13:40:21 2017 +0100 - test: Use ARRAY_LENGTH macro + xlib: Call XSync() before ignoring errors + + The code here wants to ignore errors for a specific request. To do so, + it sets a no-op error handler. However, it could happen that some + previous request caused an error and this error will also be ignored by + the no-op error handler. + + To avoid this, call XSync() before setting the error handler. This makes + sure that all pending errors are handled. + + Signed-off-by: Uli Schlachter + Reviewed-by: Chris Wilson - test/bug-spline.c | 3 +-- - test/caps-tails-curve.c | 2 +- - test/tiger.c | 2 +- - 3 files changed, 3 insertions(+), 4 deletions(-) + src/cairo-xlib-surface.c | 2 ++ + 1 file changed, 2 insertions(+) -commit 650d044dfdbb5ea5849d65b70f5761b8f47f75d6 -Author: Adrian Johnson -AuthorDate: Thu Nov 20 10:16:06 2014 +1030 -Commit: Bryce Harrington -CommitDate: Wed Jun 24 18:27:05 2015 -0700 +commit f02ee3d3cf4168b5468b6548fe8823e803650f53 +Author: Uli Schlachter +AuthorDate: Tue Mar 7 09:57:55 2017 +0100 +Commit: Uli Schlachter +CommitDate: Tue Mar 7 09:57:55 2017 +0100 - pdf-operators: fix bug with RTL text + xlib: Remove unused variable - bug 86461 + This constant seems to be unused since commit af9fbd176b145f042408ef + from 2011. + + Signed-off-by: Uli Schlachter - src/cairo-pdf-operators.c | 6 +++++- - 1 file changed, 5 insertions(+), 1 deletion(-) + src/cairo-xlib-surface.c | 6 ------ + 1 file changed, 6 deletions(-) -commit fe6b1db26c4f9e77b8625f3c2634b69897b7a5dc -Author: Ravi Nanjundappa -AuthorDate: Tue Nov 11 15:07:57 2014 +0530 -Commit: Bryce Harrington -CommitDate: Wed Jun 24 18:27:05 2015 -0700 +commit 1a307123af14cfa50a0c35819cfaee79f0ade1ba +Author: Adrian Johnson +AuthorDate: Thu Mar 2 19:14:04 2017 +1030 +Commit: Adrian Johnson +CommitDate: Thu Mar 2 19:14:04 2017 +1030 - 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_...:') + pdf-operators: fix bug in line wrapping - The proposed changes fixes the warning about the documentation style used in cairo. + patch by jmmorlan@sonic.net - Signed-off-by: Ravi Nanjundappa + https://bugs.freedesktop.org/show_bug.cgi?id=100029 - src/cairo-pattern.c | 4 ++-- - 1 file changed, 2 insertions(+), 2 deletions(-) + src/cairo-pdf-operators.c | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) -commit bd2b4ab43ee1a88ec9e4063a4f4598e12b2742e7 -Author: Adam Jackson -AuthorDate: Fri Oct 31 13:21:15 2014 -0400 -Commit: Bryce Harrington -CommitDate: Wed Jun 24 18:27:05 2015 -0700 +commit 5854dd9df40a68efb0cb1b2bb7f94e3f05cbdf45 +Author: Adrian Johnson +AuthorDate: Thu Feb 2 06:47:11 2017 +1030 +Commit: Adrian Johnson +CommitDate: Thu Feb 2 06:47:11 2017 +1030 - 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. + pdf: don't return uninitialized status - Since there's nothing to swap in this case, just bomb out. + https://bugs.freedesktop.org/show_bug.cgi?id=99630 + + src/cairo-pdf-interchange.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 5a8a9c97ed268004cbac510d39739ff56c0fb43c +Author: Andrea Canciani +AuthorDate: Wed Jan 18 13:08:11 2017 +0100 +Commit: Andrea Canciani +CommitDate: Wed Jan 18 15:06:33 2017 +0100 + + quartz: Restore 10.4-specific font code - Signed-off-by: Adam Jackson + The code for extracting font glyphs was replaced in + 70cc8f250b5669e757b4f044571ba0f71e3dea9e with an implementation based + on CoreText, which is not available on MacOSX 10.4. This commit + restores automatic detection of which API should be used by means of + dynamic linking. + + README | 2 +- + src/cairo-quartz-font.c | 26 ++++++++++++++++++++++---- + src/cairo-quartz-private.h | 12 ++++++++---- + 3 files changed, 31 insertions(+), 9 deletions(-) - src/cairo-xcb-surface-render.c | 6 ++++++ - 1 file changed, 6 insertions(+) +commit dd4706d0a9d123d3aa4284ac9ab35fbe165278b2 +Author: Kouhei Sutou +AuthorDate: Wed Jan 4 23:38:17 2017 +0900 +Commit: Adrian Johnson +CommitDate: Thu Jan 5 08:33:07 2017 +1030 -commit 40f1da3b4228339f7d5c91ea43d4af1e06a4ae2a -Author: Adam Jackson -AuthorDate: Fri Oct 31 13:21:14 2014 -0400 + pdf: Fix wrong cairo_pdf_outline_flags_t item prefix + + src/cairo-pdf-interchange.c | 6 +++--- + src/cairo-pdf.h | 12 ++++++------ + test/pdf-tagged-text.c | 7 ++++--- + 3 files changed, 13 insertions(+), 12 deletions(-) + +commit c7e87cd9df401f2c5a62534697d12a4e0afda2ce +Author: Kouhei Sutou +AuthorDate: Wed Jan 4 23:32:59 2017 +0900 +Commit: Adrian Johnson +CommitDate: Thu Jan 5 08:30:52 2017 +1030 + + pdf: Remove duplicated item + + src/cairo-pdf.h | 1 - + 1 file changed, 1 deletion(-) + +commit 55e0b214ea13136acf4e234e620f637ee59e0924 +Author: Bryce Harrington +AuthorDate: Tue Dec 20 11:42:57 2016 -0800 Commit: Bryce Harrington -CommitDate: Wed Jun 24 18:27:05 2015 -0700 +CommitDate: Tue Dec 20 11:42:57 2016 -0800 - 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 + RELEASING: Fix tabbing - src/cairo-xlib-render-compositor.c | 6 ++++++ - 1 file changed, 6 insertions(+) + RELEASING | 10 +++++----- + 1 file changed, 5 insertions(+), 5 deletions(-) -commit ce08735c06515225f4de6cd9cd1d4858c2be034d -Author: Adrian Johnson -AuthorDate: Fri Oct 31 22:43:32 2014 +1030 +commit 3c5868a90ddf4a3a65bfe059bb7b4907b73e58c2 +Author: Bryce Harrington +AuthorDate: Fri Dec 9 15:41:08 2016 -0800 Commit: Bryce Harrington -CommitDate: Wed Jun 24 18:27:05 2015 -0700 +CommitDate: Fri Dec 9 15:41:08 2016 -0800 - 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. + Bump version for new development tree, 1.15.5 - src/cairoint.h | 2 +- + cairo-version.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) -commit 956ef874c866faf5725a3d0600395422e58dcf6f -Author: Adrian Johnson -AuthorDate: Fri Oct 31 19:06:42 2014 +1030 +commit 9fe6683cb105354e86ea649ba7a13052c7edc757 +Author: Bryce Harrington +AuthorDate: Fri Dec 9 12:59:20 2016 -0800 Commit: Bryce Harrington -CommitDate: Wed Jun 24 18:27:05 2015 -0700 +CommitDate: Fri Dec 9 12:59:20 2016 -0800 - 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 + 1.15.4 release - 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(-) + NEWS | 126 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ + cairo-version.h | 2 +- + 2 files changed, 127 insertions(+), 1 deletion(-) -commit 189a3e7f7c1795d1118a7a219bedfafd5126e8c3 -Author: Bryce Harrington -AuthorDate: Tue Oct 21 15:26:34 2014 -0700 +commit 68bbb6933920a043753d9d509fb6e6d8a68624ca +Author: Bryce Harrington +AuthorDate: Fri Dec 9 11:47:28 2016 -0800 Commit: Bryce Harrington -CommitDate: Wed Jun 24 18:27:05 2015 -0700 +CommitDate: Fri Dec 9 11:47:28 2016 -0800 - 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 + NEWS: Fix a couple typos - 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(-) + NEWS | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) -commit 1a8b720efe4d01c458b7181af5fb9dcd659bbdd2 +commit 3f1a6f7225e31057a8af9313f051a1d311df0c69 Author: Bryce Harrington -AuthorDate: Wed Oct 29 15:27:19 2014 -0700 +AuthorDate: Thu Nov 3 09:16:24 2016 -0700 Commit: Bryce Harrington -CommitDate: Wed Jun 24 18:27:05 2015 -0700 +CommitDate: Thu Nov 3 09:16:24 2016 -0700 - RELEASING: Be explicit as to which tag is pushed + gl: Fix one more CAIRO_GL_FLAVOR_ES3 enum - RELEASING | 2 +- + src/cairo-gl-gradient.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) -commit 89d6c42a856f9059f69664dd12b6824460fc3ac8 -Author: Ravi Nanjundappa -AuthorDate: Mon Oct 27 10:54:13 2014 +0530 +commit eb5232002b16193d5ba6c1450d80616914fd9917 +Author: Bryce Harrington +AuthorDate: Wed Oct 12 19:00:38 2016 -0700 Commit: Bryce Harrington -CommitDate: Wed Jun 24 18:27:05 2015 -0700 +CommitDate: Fri Oct 28 17:56:09 2016 -0700 - Fix warnings from check-doc-syntax.sh + gl: Treat GLES v2 as a separate flavor from GLES v3 - $ ./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_...:') + To support differentiating between GLES v2 and v3, rename the flavor + enum to be version specific, as CAIRO_GL_FLAVOR_ES2. - The warnings are about the documentation style used in cairo + Then, when GLES v3 support is introduced we can add it as a distinct + flavor enum (i.e. CAIRO_GL_FLAVOR_ES3). - Signed-off-by: Ravi Nanjundappa + Signed-off-by: Bryce Harrington - src/cairo-pattern.c | 4 ++-- - 1 file changed, 2 insertions(+), 2 deletions(-) + src/cairo-gl-composite.c | 2 +- + src/cairo-gl-device.c | 12 ++++++------ + src/cairo-gl-dispatch.c | 8 ++++---- + src/cairo-gl-info.c | 4 ++-- + src/cairo-gl-msaa-compositor.c | 2 +- + src/cairo-gl-operand.c | 2 +- + src/cairo-gl-private.h | 2 +- + src/cairo-gl-shaders.c | 10 +++++----- + src/cairo-gl-surface.c | 6 +++--- + src/cairo-gl-traps-compositor.c | 2 +- + 10 files changed, 25 insertions(+), 25 deletions(-) -commit abffca898318cbc1421e896ff504369ff0a35ac6 -Author: Adrian Johnson -AuthorDate: Tue Oct 21 22:35:12 2014 +1030 +commit cd1040ed80b6ab886c019248544bede747cd3eb4 +Author: Bryce Harrington +AuthorDate: Mon Oct 10 14:05:32 2016 -0700 Commit: Bryce Harrington -CommitDate: Wed Jun 24 18:27:05 2015 -0700 +CommitDate: Wed Oct 12 13:17:05 2016 -0700 - build: fix regression on mingw + build: Don't rely on non-POSIX 'strings -' behavior - 7cfebce1 removed the filename extension for executables. + On systems using GNU's strings implementation, 'strings -' causes a scan + of the whole file, which is equivalent to 'strings -a'. However, in + POSIX passing '-' as the first argument to 'strings' is declared + unspecified, and thus may break the build on systems that use a + different POSIX strings implementation. - Patch from http://sourceforge.net/p/inkscape/mailman/message/32939144/ + Patch from Jung-uk Kim - Bug 85120 + Fixes: https://bugs.freedesktop.org/show_bug.cgi?id=88639 + Signed-off-by: Bryce Harrington build/aclocal.float.m4 | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) -commit 65e561e45a8723d5965c8ee1022ec6ecbea0be79 -Author: Massimo Valentini -AuthorDate: Sun Oct 19 09:19:10 2014 +0200 -Commit: Bryce Harrington -CommitDate: Wed Jun 24 18:27:05 2015 -0700 +commit b7b6803567fbe477e1ae42d2406744afaa3c0cbb +Author: Bryce Harrington +AuthorDate: Fri Sep 16 15:05:55 2016 -0700 +Commit: Bryce Harrington +CommitDate: Mon Oct 10 14:39:23 2016 -0700 - tor-scan-converter: can't do_fullrow when intersection in row + 0.5subrow + pattern: Fix incorrect grammar in cairo_pattern_get_type. - 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 + "This function returns the type a pattern." is obviously missing 'of', + but this can be stated more succinctly with active voice. - Reported-and-tested-by: Matthew Leach - Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=85151 - Reviewed-by: Chris Wilson + Signed-off-by: Bryce Harrington - src/cairo-tor-scan-converter.c | 4 ++-- + src/cairo-pattern.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) -commit 5957993663abafdd56b4ae978e2d241d7e9f155b -Author: Bryce Harrington -AuthorDate: Sat Oct 18 19:10:32 2014 -0700 -Commit: Bryce Harrington -CommitDate: Wed Jun 24 18:27:05 2015 -0700 +commit 9d2983175e98433cf86fbfafa2954ce2cbf66dac +Author: Bryce Harrington +AuthorDate: Fri Sep 16 14:54:19 2016 -0700 +Commit: Bryce Harrington +CommitDate: Mon Oct 10 14:39:19 2016 -0700 - Revert "Add execution bit for make-cairo-test-constructors.sh" + Fix grammar in cairo_*_reference() function documentation. - This reverts commit 5c17bf1a33b8e76edeb23121342e0f163fe9d6ad. + "can be get" is incorrect grammar; "can be gotten" would be better, but + active voice is best. - Script is sourced in the makefile, no need for +x. + Signed-off-by: Bryce Harrington - test/make-cairo-test-constructors.sh | 0 - 1 file changed, 0 insertions(+), 0 deletions(-) + src/cairo-device.c | 4 ++-- + src/cairo-font-face.c | 4 ++-- + src/cairo-pattern.c | 4 ++-- + src/cairo-scaled-font.c | 4 ++-- + src/cairo-surface.c | 4 ++-- + src/cairo.c | 4 ++-- + 6 files changed, 12 insertions(+), 12 deletions(-) -commit 17272b56b29e26bc662303b2faceedec116950cc +commit 4790a3663d12cfbbe643023713477204d61b1c4a Author: Adrian Johnson -AuthorDate: Sun Oct 19 12:08:55 2014 +1030 -Commit: Bryce Harrington -CommitDate: Wed Jun 24 18:27:05 2015 -0700 +AuthorDate: Fri Oct 7 07:38:37 2016 +1030 +Commit: Adrian Johnson +CommitDate: Fri Oct 7 07:38:37 2016 +1030 - pdf: fix compiler warning + strndup is not avuilable with MSVC - src/cairo-pdf-surface.c | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) + src/cairo-pdf-interchange.c | 12 ++++++++++-- + test/pdf-tagged-text.c | 6 +++++- + 2 files changed, 15 insertions(+), 3 deletions(-) -commit 6559bfe9319d96c12d587f390ec571de6201cf1f +commit 55f8c6d9f4161f5ee2a11fd068f0ccb25a5b3aed Author: Adrian Johnson -AuthorDate: Sun Oct 19 11:34:34 2014 +1030 -Commit: Bryce Harrington -CommitDate: Wed Jun 24 18:27:05 2015 -0700 +AuthorDate: Tue Oct 4 11:55:28 2016 +1030 +Commit: Adrian Johnson +CommitDate: Tue Oct 4 12:00:30 2016 +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 + fix compiler warnings - src/cairo-cff-subset.c | 35 +++++++++++++++++++---------------- - src/cairo-image-info.c | 32 +++++++++++++------------------- - src/cairoint.h | 26 ++++++++++++++++++++++++++ - 3 files changed, 58 insertions(+), 35 deletions(-) + src/cairo-pdf-interchange.c | 6 +++--- + src/cairo-tag-attributes.c | 2 +- + test/pdf-tagged-text.c | 1 + + util/cairo-trace/trace.c | 1 + + 4 files changed, 6 insertions(+), 4 deletions(-) -commit 9d9b6ee7defd6830abe8886bc0fdc06a7c2c6658 -Author: Bryce Harrington -AuthorDate: Fri Oct 17 12:04:56 2014 -0700 -Commit: Bryce Harrington -CommitDate: Wed Jun 24 18:27:05 2015 -0700 +commit 3c33d9704119d0178230a0cf9929941592836eab +Author: Adrian Johnson +AuthorDate: Tue Oct 4 11:44:52 2016 +1030 +Commit: Adrian Johnson +CommitDate: Tue Oct 4 12:00:30 2016 +1030 - Add execution bit for make-cairo-test-constructors.sh - - This is referenced in the Makefile but not set as executable + fix make check - test/make-cairo-test-constructors.sh | 0 - 1 file changed, 0 insertions(+), 0 deletions(-) + src/cairo-pdf-surface-private.h | 2 +- + src/cairo-pdf.h | 6 +++--- + src/cairo-tag-attributes-private.h | 5 ++++- + src/cairo-tag-stack-private.h | 1 + + 4 files changed, 9 insertions(+), 5 deletions(-) -commit 34dcd3ae9fdd6ee90f04ddcf7ba1fab49e4f3fbb +commit 23fd706bd1b83a00cdd3d666631e41e2ceab8a70 Author: Adrian Johnson -AuthorDate: Fri Oct 17 22:04:39 2014 +1030 -Commit: Bryce Harrington -CommitDate: Wed Jun 24 18:27:05 2015 -0700 +AuthorDate: Sat Oct 1 22:48:05 2016 +0930 +Commit: Adrian Johnson +CommitDate: Sat Oct 1 22:48:05 2016 +0930 - Update mime type documentation. + add test for PDF document interchange features such as tagged text and links - src/cairo-surface.c | 28 +++++++++++++++++++++++++++- - 1 file changed, 27 insertions(+), 1 deletion(-) + test/Makefile.am | 1 + + test/Makefile.sources | 3 +- + test/pdf-tagged-text.c | 397 +++++++++++++++++++++++++++++++++++++++++++++++++ + 3 files changed, 400 insertions(+), 1 deletion(-) -commit 29c30b97b14ac705a2c0acf5b9141301bbb79bba -Author: Bryce Harrington -AuthorDate: Thu Oct 16 11:41:40 2014 -0700 -Commit: Bryce Harrington -CommitDate: Wed Jun 24 18:27:05 2015 -0700 +commit 2d6a0f5d16d61c8f4236760c71061a0c4c3a199c +Author: Adrian Johnson +AuthorDate: Sat Oct 1 22:46:49 2016 +0930 +Commit: Adrian Johnson +CommitDate: Sat Oct 1 22:46:49 2016 +0930 - 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. + pdf: thumbnail API - RELEASING | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) + doc/public/cairo-sections.txt | 1 + + src/cairo-paginated-private.h | 18 +++++++++- + src/cairo-paginated-surface.c | 64 +++++++++++++++++++++++++++++++++ + src/cairo-pdf-surface-private.h | 4 +++ + src/cairo-pdf-surface.c | 79 ++++++++++++++++++++++++++++++++++++++++- + src/cairo-pdf.h | 5 +++ + 6 files changed, 169 insertions(+), 2 deletions(-) -commit e087aca9bf29e8edc69f177c446bfa00910b1746 -Author: Bryce Harrington -AuthorDate: Mon Oct 13 19:57:09 2014 -0700 -Commit: Bryce Harrington -CommitDate: Wed Jun 24 18:27:05 2015 -0700 +commit 26b3f83ff652a284b79557ec1555b398c566a7eb +Author: Adrian Johnson +AuthorDate: Sat Oct 1 22:44:22 2016 +0930 +Commit: Adrian Johnson +CommitDate: Sat Oct 1 22:44:22 2016 +0930 - Start 1.14.1 development + pdf: page label API - cairo-version.h | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) + doc/public/cairo-sections.txt | 1 + + src/cairo-pdf-interchange.c | 115 ++++++++++++++++++++++++++++++++++++++++ + src/cairo-pdf-surface-private.h | 3 ++ + src/cairo-pdf-surface.c | 43 +++++++++++++++ + src/cairo-pdf.h | 4 ++ + 5 files changed, 166 insertions(+) -commit 4d9cee1a506c74e052095758ce700ab05e9b38bb -Author: Uli Schlachter -AuthorDate: Sat Jun 20 10:59:52 2015 +0200 -Commit: Uli Schlachter -CommitDate: Sat Jun 20 11:03:13 2015 +0200 +commit 5bfadd5530623d3b12fadf8cd22f95cec4132b65 +Author: Adrian Johnson +AuthorDate: Sat Oct 1 22:41:36 2016 +0930 +Commit: Adrian Johnson +CommitDate: Sat Oct 1 22:41:36 2016 +0930 - XCB: Don't attach uploaded surfaces as snapshots - - When you draw (part of) a surface to an XCB surface, the XCB backend will safe - the uploaded part as a snapshot to the input surface. This allows to re-use this - picture in case the same surface is later used again as a source. - - However, other backends do not do this and this has caused and/or highlighted - numerous bugs. Just skipping the snapshot fixes or hides these bugs. - - Papers-over: https://bugs.freedesktop.org/show_bug.cgi?id=67505 - Signed-off-by: Uli Schlachter - - src/cairo-xcb-surface-render.c | 3 +++ - 1 file changed, 3 insertions(+) - -commit fe1b2b92075f1a5849900cdbfa4089b10946c689 -Author: Uli Schlachter -AuthorDate: Fri Dec 5 14:43:26 2014 +0100 -Commit: Uli Schlachter -CommitDate: Sat Dec 6 10:29:53 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 + pdf: metadata API - src/cairo-tor-scan-converter.c | 38 +++++++++++++++++++++++--------------- - 1 file changed, 23 insertions(+), 15 deletions(-) + doc/public/cairo-sections.txt | 2 + + src/cairo-pdf-interchange.c | 177 ++++++++++++++++++++++++++++++++++++++++ + src/cairo-pdf-surface-private.h | 17 ++++ + src/cairo-pdf-surface.c | 69 +++++++++------- + src/cairo-pdf.h | 31 +++++++ + 5 files changed, 265 insertions(+), 31 deletions(-) -commit b2333fd70c6b6f16eb52a0d8723cd7025caa1164 -Author: Hans Breuer -AuthorDate: Thu Oct 16 20:51:07 2014 +0200 -Commit: Uli Schlachter -CommitDate: Wed Dec 3 16:38:02 2014 +0100 +commit dfc7b9e6698d5923a858ae9a77345c983ab51e4c +Author: Adrian Johnson +AuthorDate: Sat Oct 1 22:28:02 2016 +0930 +Commit: Adrian Johnson +CommitDate: Sat Oct 1 22:28:02 2016 +0930 - 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 - (Cherry-pick of 56da7adc3c85be0325481ecd23746dc49e60d239 from master) + pdf: add document outline API - src/cairo-path-stroke-traps.c | 10 ++++++---- - 1 file changed, 6 insertions(+), 4 deletions(-) + doc/public/cairo-sections.txt | 3 + + src/cairo-pdf-interchange.c | 182 +++++++++++++++++++++++++++++++++++++++- + src/cairo-pdf-surface-private.h | 22 +++++ + src/cairo-pdf-surface.c | 59 +++++++++++++ + src/cairo-pdf.h | 28 +++++++ + 5 files changed, 293 insertions(+), 1 deletion(-) -commit f6fd372a8b31a0bebbdfe36090d6ffc7bab9a2f8 -Author: Bryce Harrington -AuthorDate: Mon Oct 13 18:54:12 2014 -0700 -Commit: Bryce Harrington -CommitDate: Mon Oct 13 18:54:12 2014 -0700 +commit dcbfb726478f5ab2277bd52813b40e565612566a +Author: Adrian Johnson +AuthorDate: Sat Oct 1 22:05:42 2016 +0930 +Commit: Adrian Johnson +CommitDate: Sat Oct 1 22:05:42 2016 +0930 - 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. + pdf: structured text and hyperlink support - src/cairo-pattern.c | 2 ++ - 1 file changed, 2 insertions(+) + doc/public/cairo-docs.xml | 1 + + doc/public/cairo-sections.txt | 8 + + src/Makefile.sources | 4 +- + src/cairo-device.c | 1 + + src/cairo-error-private.h | 1 + + src/cairo-misc.c | 2 + + src/cairo-pdf-interchange.c | 993 +++++++++++++++++++++++++++++++++++++ + src/cairo-pdf-operators-private.h | 8 + + src/cairo-pdf-operators.c | 37 ++ + src/cairo-pdf-surface-private.h | 111 +++++ + src/cairo-pdf-surface.c | 176 ++++++- + src/cairo-region.c | 1 + + src/cairo-spans.c | 2 + + src/cairo-surface.c | 1 + + src/cairo-tag-attributes-private.h | 73 +++ + src/cairo-tag-attributes.c | 570 +++++++++++++++++++++ + src/cairo-tag-stack-private.h | 106 ++++ + src/cairo-tag-stack.c | 279 +++++++++++ + src/cairo.c | 262 +++++++++- + src/cairo.h | 5 + + src/cairoint.h | 6 + + 21 files changed, 2617 insertions(+), 30 deletions(-) -commit 60ca80b248c2a5ffd0744162af7a1f1df1b04398 -Author: Bryce Harrington -AuthorDate: Mon Oct 13 18:45:53 2014 -0700 -Commit: Bryce Harrington -CommitDate: Mon Oct 13 18:45:53 2014 -0700 +commit 25da407a5f1d136345759c0d0a2a1d985eb2b392 +Author: Adrian Johnson +AuthorDate: Sat Oct 1 17:30:13 2016 +0930 +Commit: Adrian Johnson +CommitDate: Sat Oct 1 17:30:13 2016 +0930 - 1.14.0 release + Support tag operations in analysis and paginated surface - cairo-version.h | 4 ++-- - 1 file changed, 2 insertions(+), 2 deletions(-) + src/cairo-analysis-surface.c | 37 +++++++++++++++++++++++++++- + src/cairo-paginated-private.h | 2 +- + src/cairo-paginated-surface.c | 42 +++++++++++++++++++++++++++----- + src/cairo-pdf-surface.c | 4 ++- + src/cairo-ps-surface.c | 4 ++- + src/cairo-svg-surface.c | 4 ++- + src/test-paginated-surface.c | 4 ++- + src/win32/cairo-win32-printing-surface.c | 4 ++- + 8 files changed, 88 insertions(+), 13 deletions(-) -commit 3e41f7b38169f7724ed737790a5c0ad68ff80a04 -Author: Bryce Harrington -AuthorDate: Mon Oct 13 18:30:23 2014 -0700 -Commit: Bryce Harrington -CommitDate: Mon Oct 13 18:30:23 2014 -0700 +commit 3bd5efa1b651503ed9f175f9ea62fff53f0b2882 +Author: Adrian Johnson +AuthorDate: Sat Oct 1 17:26:16 2016 +0930 +Commit: Adrian Johnson +CommitDate: Sat Oct 1 17:26:16 2016 +0930 - NEWS: Flesh out docs for new APIs + Add tag functions to recording surface and surface-wrapper - NEWS | 13 +++++++++++-- - src/cairo-surface.c | 2 +- - 2 files changed, 12 insertions(+), 3 deletions(-) + src/cairo-recording-surface-private.h | 15 +++ + src/cairo-recording-surface.c | 185 +++++++++++++++++++++++++++++++++- + src/cairo-surface-wrapper-private.h | 11 ++ + src/cairo-surface-wrapper.c | 47 +++++++++ + 4 files changed, 257 insertions(+), 1 deletion(-) -commit 41561c527c72d20f6f09f898f6390a578cfd4095 -Author: Bryce Harrington -AuthorDate: Mon Oct 13 18:20:45 2014 -0700 -Commit: Bryce Harrington -CommitDate: Mon Oct 13 18:20:45 2014 -0700 +commit 4e70815b349309e0a82bc8c52663e030c24a1add +Author: Adrian Johnson +AuthorDate: Sat Oct 1 17:14:28 2016 +0930 +Commit: Adrian Johnson +CommitDate: Sat Oct 1 17:14:28 2016 +0930 - NEWS: Update with latest changes and finalize for release + Add tag functions to cairo_t and cairo_surface_t + + The cairo_tag_begin/cairo_tag_end API is for supporting hyperlinks and + creating tagged PDF files. + + The source, ctm, and stroke style are passed to the backend to allow + these parameters to be used to specify hyperlink border attributes. - NEWS | 24 +++++++++++++++++++----- - 1 file changed, 19 insertions(+), 5 deletions(-) + src/cairo-backend-private.h | 3 ++ + src/cairo-default-context.c | 21 +++++++++++++ + src/cairo-gstate-private.h | 9 ++++++ + src/cairo-gstate.c | 59 +++++++++++++++++++++++++++++++++++++ + src/cairo-surface-backend-private.h | 12 ++++++++ + src/cairo-surface.c | 36 ++++++++++++++++++++++ + src/cairo.c | 49 ++++++++++++++++++++++++++++++ + src/cairo.h | 8 +++++ + src/cairoint.h | 11 +++++++ + 9 files changed, 208 insertions(+) -commit ab2a7b61d59258b71e1c3256edf2f42ea6cc1eb2 -Author: Adrian Johnson -AuthorDate: Sun Oct 12 21:04:37 2014 +1030 +commit b207a932a2d3740984319dffd58a0791580597cd +Author: Peter TB Brett +AuthorDate: Fri Sep 9 22:35:55 2016 +0930 Commit: Adrian Johnson -CommitDate: Sun Oct 12 21:06:45 2014 +1030 +CommitDate: Fri Sep 9 22:35:55 2016 +0930 - pdf: don't use '\' to split strings across multiple lines + Correctly decode Adobe CMYK JPEGs in PDF export + + Adobe PhotoShop generates CMYK JPEG files with inverted CMYK. When a + JPEG file with this format is included in a PDF file, a `/Decode` + array must be included to convert to "normal" CMYK. - The PDF interpreter in my printer does not handle this correctly. - So instead we add the string delimiters '(' and ')' to each line. + These JPEG files can be detected via the presence of the APP14 "Adobe" + marker. However, PDF viewers are not required to detect and handle + this private marker, so it must be detected and handled (by adding a + `/Decode`) by the PDF generator. + + Signed-Off-By: Peter TB Brett - src/cairo-pdf-operators.c | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) + src/cairo-image-info-private.h | 1 + + src/cairo-image-info.c | 21 +++++++++++++++++++++ + src/cairo-pdf-surface.c | 2 ++ + 3 files changed, 24 insertions(+) -commit 45934f69cd158b7bb5632f5e4334a156795147f4 -Author: Bill Spitzak -AuthorDate: Thu Oct 9 19:46:16 2014 -0700 -Commit: Bryce Harrington -CommitDate: Fri Oct 10 18:09:14 2014 -0700 +commit a69e5af9cd62d1e8d9f503a9d74338a49e31f9cd +Author: Ed Schouten +AuthorDate: Sun Sep 4 08:41:27 2016 +0200 +Commit: Andrea Canciani +CommitDate: Sun Sep 4 11:05:43 2016 +0200 - image: Corrected extents calculations + Write debugging information to the debugging file - 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. + Some debugging functions wrote to stdout, which is inconsistent with + the other debugging functions of the same groups. - I removed the pad output of _cairo_pattern_analyze_filter as it is unused. + Instead they should write to the debugging file that they are given as + input. - Reviewed-by: Bryce Harrington + Reviewed-by: Andrea Canciani + + Fixes: https://bugs.freedesktop.org/show_bug.cgi?id=95227 - 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(-) + src/cairo-debug.c | 2 +- + src/cairo-pattern.c | 2 +- + 2 files changed, 2 insertions(+), 2 deletions(-) -commit 3cd7ed1f320c3ce330da3d3153c39b613e4a5a15 -Author: Bill Spitzak -AuthorDate: Thu Oct 9 19:46:15 2014 -0700 -Commit: Bryce Harrington -CommitDate: Fri Oct 10 18:09:09 2014 -0700 +commit efc40a94939a75c78474862638647bd5363d08cf +Author: Ed Schouten +AuthorDate: Sun Sep 4 08:34:49 2016 +0200 +Commit: Andrea Canciani +CommitDate: Sun Sep 4 08:45:06 2016 +0200 - xcb: Use image fallback for GOOD/BEST filters + Prevent observer surfaces from writing to stdout - It will not use the fallback if the symbols in the previous patch - are turned on. + Invoking cairo_surface_mark_dirty () on an observer surface would + cause it to print debugging output to stdout. - 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: Andrea Canciani - Reviewed-by: Bryce Harrington + Fixes: https://bugs.freedesktop.org/show_bug.cgi?id=95227 - src/cairo-xcb-surface-render.c | 34 ++++++++++++++++------------------ - 1 file changed, 16 insertions(+), 18 deletions(-) + src/cairo-surface-observer.c | 2 -- + 1 file changed, 2 deletions(-) -commit ca9aee4e62d914b3cd3d6747ff1a4961d9aff8ed -Author: Bill Spitzak -AuthorDate: Thu Oct 9 19:46:14 2014 -0700 -Commit: Bryce Harrington -CommitDate: Fri Oct 10 18:09:05 2014 -0700 +commit 0aad04a88b43d949f5715b89e656fd7bd0f2243c +Author: Behdad Esfahbod +AuthorDate: Fri Sep 2 15:54:01 2016 -0700 +Commit: Behdad Esfahbod +CommitDate: Fri Sep 2 15:54:01 2016 -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. + Bug 29319 - Modules are built as versioned shared objects - Reviewed-by: Bryce Harrington + Fixes https://bugs.freedesktop.org/show_bug.cgi?id=29319 - src/cairo-xcb-connection.c | 10 ++++++++++ - src/cairo-xcb-private.h | 6 +++++- - 2 files changed, 15 insertions(+), 1 deletion(-) + util/cairo-fdr/Makefile.am | 2 +- + util/cairo-sphinx/Makefile.am | 2 +- + util/cairo-trace/Makefile.am | 2 +- + 3 files changed, 3 insertions(+), 3 deletions(-) -commit 58728da6eba4d89ba7c4328b22a552af633abb05 -Author: Bill Spitzak -AuthorDate: Thu Oct 9 19:46:13 2014 -0700 -Commit: Bryce Harrington -CommitDate: Fri Oct 10 18:09:01 2014 -0700 +commit cbbd02f9c5389522cddecd53ca109f2e3ef98f58 +Author: darxus@chaosreigns.com +AuthorDate: Tue Jul 26 13:38:52 2016 -0400 +Commit: Bryce Harrington +CommitDate: Wed Aug 31 20:29:57 2016 -0700 - xlib: Use image fallback for GOOD/BEST filters + Add example to run specific tests by name to the test/README - Fallback is not used if the symbols defined in the previous patch to - indicate if XRender does GOOD/BEST are true. + Reviewed-by: Bryce Harrington + Reviewed-by: Uli Schlachter + + test/README | 7 ++++--- + 1 file changed, 4 insertions(+), 3 deletions(-) + +commit 66205ad48efaea3ebb87b344719b64c8745f177e +Author: darxus@chaosreigns.com +AuthorDate: Thu Aug 18 15:53:18 2016 -0400 +Commit: Bryce Harrington +CommitDate: Wed Aug 31 18:22:10 2016 -0700 + + Remove closed poppler bugs from test/README - 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. + These bugs have all been closed resolved / fixed for years. - Reviewed-by: Bryce Harrington + Reviewed-by: Bryce Harrington - src/cairo-xlib-source.c | 23 ++++++++++++++--------- - 1 file changed, 14 insertions(+), 9 deletions(-) + test/README | 40 +--------------------------------------- + 1 file changed, 1 insertion(+), 39 deletions(-) -commit c653dcd3e6ac1cef2440fa0db97a8e5ce30b2a47 -Author: Bill Spitzak -AuthorDate: Thu Oct 9 19:46:12 2014 -0700 -Commit: Bryce Harrington -CommitDate: Fri Oct 10 18:08:56 2014 -0700 +commit 35a1761776c97e7e4c3fa54cbe143007e8f3b422 +Author: Olivier Blin +AuthorDate: Thu Nov 26 18:56:48 2015 +0100 +Commit: Bryce Harrington +CommitDate: Wed Aug 31 14:35:12 2016 -0700 - xlib: Add symbols to indicate if XRender supports GOOD/BEST filtering + Pull -lz for the script backend - 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. + It uses cairo_deflate_stream. - Reviewed-by: Bryce Harrington + Reviewed-by: Bryce Harrington + Acked-by: Behdad Esfahbod - src/cairo-xlib-private.h | 2 ++ - 1 file changed, 2 insertions(+) + configure.ac | 3 +++ + 1 file changed, 3 insertions(+) -commit c8b1bf55ad016de0675f4e924fdb8e17051a029c -Author: Bill Spitzak -AuthorDate: Thu Oct 9 19:46:11 2014 -0700 -Commit: Bryce Harrington -CommitDate: Fri Oct 10 18:08:48 2014 -0700 +commit 1057487ce8560ae0377bb509fc46eaf18df7aee0 +Author: Hans Petter Jansson +AuthorDate: Wed Jan 27 12:55:01 2016 -0600 +Commit: Behdad Esfahbod +CommitDate: Tue Aug 2 14:21:45 2016 -0700 - image: Move filter decision to _cairo_pattern_analyze_filter + scaled-font: Fix deadlock when recursing in _cairo_scaled_font_reset_cache() + + The destruction of a scaled font could indirectly trigger the destruction + of a second scaled font, causing the global cache to be locked twice in + the same thread. - 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. + This is solved by unlinking the font's glyph pages while holding the global + lock, then releasing the lock before destruction takes place. - Reviewed-by: Bryce Harrington + Fixes: https://bugs.freedesktop.org/show_bug.cgi?id=93891 - src/cairo-image-source.c | 22 +++++++++------------- - src/cairo-pattern.c | 36 +++++++++++++++++++++++++++++++++++- - 2 files changed, 44 insertions(+), 14 deletions(-) + src/cairo-scaled-font.c | 24 ++++++++++++++++++------ + 1 file changed, 18 insertions(+), 6 deletions(-) -commit 82cd66f8330da0521c29c003ef0a4bb773d6dbc6 -Author: Bryce Harrington -AuthorDate: Thu Oct 9 17:55:09 2014 -0700 -Commit: Bryce Harrington -CommitDate: Thu Oct 9 18:28:53 2014 -0700 +commit 3f8241f48488d3da4afce6646e043ee70cf1cfd2 +Author: Uli Schlachter +AuthorDate: Sun Jul 17 15:08:51 2016 +0200 +Commit: Uli Schlachter +CommitDate: Thu Jul 21 18:58:58 2016 +0200 - test: Update pixman downscaling 95 reference images + cairo-xcb: Remove a wrong optimisation - 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. + When doing a "complicated" mask operation, we draw the clip to a surface and use + this as a mask in later operations. The code assumes that this operation draws + to the whole target surface and thus a deferred clear may be skipped. - The old reference images were generated by Krzysztof Kosiński's - downscaling algorithm. These new images are against the algorithms - written by Bill Spitzak. + However, this requires that the extents of the trapezoids that will be drawn and + the extents of the surface are the same. This assumption is wrong, as can be + seen e.g. by the bug report that this commit fixes. - 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 -AuthorDate: Thu Oct 9 17:47:10 2014 -0700 -Commit: Bryce Harrington -CommitDate: Thu Oct 9 18:28:52 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. + The fix is just not to skip the deferred clear. - Signed-off-by: Bryce Harrington + Fixes: https://bugs.freedesktop.org/show_bug.cgi?id=84330 + Signed-off-by: Uli Schlachter - test/update-refs.sh | 84 +++++++++++++++++++++++++++++++++++++++++++++++++++++ - 1 file changed, 84 insertions(+) + src/cairo-xcb-surface-render.c | 2 -- + 1 file changed, 2 deletions(-) -commit 1570fa23e8043204bd30b122d55a036da15b16e5 -Author: Bryce Harrington -AuthorDate: Wed Oct 8 20:08:47 2014 -0700 -Commit: Bryce Harrington -CommitDate: Thu Oct 9 13:51:49 2014 -0700 +commit 56ad58a8078c5818d85b9c93ea4e3bc94ea887c8 +Author: Adrian Johnson +AuthorDate: Tue Jul 19 22:42:10 2016 +0930 +Commit: Adrian Johnson +CommitDate: Tue Jul 19 22:42:53 2016 +0930 - test: Fix error message to specify the executable that was missing + pdf: fix combined image/smask - Signed-off-by: Bryce Harrington + a736fd8 introduced a regression - test/check-refs.sh | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) + src/cairo-pdf-surface.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) -commit a8abf3a48b588632e3f39028b0b978d73c362f46 -Author: Chris Wilson -AuthorDate: Thu Oct 9 10:43:15 2014 +0100 -Commit: Chris Wilson -CommitDate: Thu Oct 9 10:57:17 2014 +0100 +commit d28b6d9b128675dfa9b3b6b793844144183aff64 +Author: Adrian Johnson +AuthorDate: Mon Jul 18 18:43:03 2016 +0930 +Commit: Adrian Johnson +CommitDate: Mon Jul 18 18:43:03 2016 +0930 - 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. + pattern: revert an unintentional change added in 190678f - test/testtable.js | 2 +- + src/cairo-pattern.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) -commit 8047179bfca65cad36c61daf5f88c97cc971848b -Author: Chris Wilson -AuthorDate: Thu Oct 9 10:54:58 2014 +0100 -Commit: Chris Wilson -CommitDate: Thu Oct 9 10:56:28 2014 +0100 +commit 8a921e6c3ee1cbd7353cd28c23802cfef3e48224 +Author: Adrian Johnson +AuthorDate: Sun Jul 17 21:33:12 2016 +0930 +Commit: Adrian Johnson +CommitDate: Sun Jul 17 21:33:12 2016 +0930 - test: Teach check-preprocessor-syntax.sh about -inlines.h + truetype: reverse cmap search should end when 0xffff- 0xffff range reached - src/check-preprocessor-syntax.sh | 4 ++-- - 1 file changed, 2 insertions(+), 2 deletions(-) + src/cairo-truetype-subset.c | 21 +++++++++++++++------ + 1 file changed, 15 insertions(+), 6 deletions(-) -commit 7c1db82a2e9dc04fd652d6e6bb6f4eb976922368 -Author: Bryce Harrington -AuthorDate: Fri Oct 3 12:34:06 2014 -0700 -Commit: Bryce Harrington -CommitDate: Fri Oct 3 12:34:06 2014 -0700 +commit 16a8c13b6acad62c8844bf641c1296a9f4aac09d +Author: Adrian Johnson +AuthorDate: Sun Jul 17 21:19:37 2016 +0930 +Commit: Adrian Johnson +CommitDate: Sun Jul 17 21:19:37 2016 +0930 + + pdf: Don't fail subsetting if unable to convert utf8 to utf16 + + If the unicode came from the font, don't fail if utf8_to_utf16 fails. + + src/cairo-pdf-surface.c | 32 +++++++++++++++++++------------- + src/cairo-scaled-font-subsets.c | 6 +++++- + 2 files changed, 24 insertions(+), 14 deletions(-) + +commit 190678f6444ad879847d603c3c9eaf8e9ab6887a +Author: Adrian Johnson +AuthorDate: Sat Jul 16 14:59:43 2016 +0930 +Commit: Adrian Johnson +CommitDate: Sat Jul 16 15:42:23 2016 +0930 - Get make check back to a happy spot + pattern: don't round extents to 0 on vector surfaces - Fix header ordering for some recently added code so cairo internal - headers are included first. Quells two make check errors. + In this bug a Type 3 font contains a dash glyph. The dash glyph + consists of an 82x2 image. The image height, when scaled to user space, + is < 1 resuling in the drawing operation for the image being culled. - Fixes: https://bugs.freedesktop.org/show_bug.cgi?id=84638 + https://bugs.freedesktop.org/show_bug.cgi?id=94615 - src/cairo-gl-info.c | 4 ++-- - src/cairo-line-private.h | 4 ++-- - 2 files changed, 4 insertions(+), 4 deletions(-) + src/cairo-analysis-surface.c | 4 ++-- + src/cairo-composite-rectangles.c | 7 ++++--- + src/cairo-pattern-private.h | 3 ++- + src/cairo-pattern.c | 14 +++++++++++--- + 4 files changed, 19 insertions(+), 9 deletions(-) -commit f57c0fd4656ef4fdbe13dbc69aa1ce4e130c37ce -Author: Bryce Harrington -AuthorDate: Fri Oct 3 12:20:13 2014 -0700 -Commit: Bryce Harrington -CommitDate: Fri Oct 3 12:20:13 2014 -0700 +commit 1a380ef5f37339583b8ab7b964025445b4fbb215 +Author: Adrian Johnson +AuthorDate: Fri Jul 15 22:03:04 2016 +0930 +Commit: Adrian Johnson +CommitDate: Fri Jul 15 22:03:04 2016 +0930 + + ps/pdf: remove debug and commented out code + + src/cairo-pdf-surface.c | 2 +- + src/cairo-ps-surface.c | 31 ------------------------------- + 2 files changed, 1 insertion(+), 32 deletions(-) - Declare as private the new cairo_lines_compare_at_y symbol +commit 0e6f7deac1092666464b81866f5d5a13866befe4 +Author: Adrian Johnson +AuthorDate: Fri Jul 15 16:24:03 2016 +0930 +Commit: Adrian Johnson +CommitDate: Fri Jul 15 16:32:53 2016 +0930 + + ps: flush ASCII85Decode file after use - Fixes a make check error. + If the image operator does not read all the ASCII85 data, the PS + interpreter will try to execute the next byte of unread data. - Checking that .libs/libcairo.so has the same symbol list as cairo.def - 126a127 - > cairo_lines_compare_at_y + Define our own image operator that calls flushfile (reads until end of + file) on the filter after drawing the image. - Fixes: https://bugs.freedesktop.org/show_bug.cgi?id=84638 - Signed-off-by: Bryce Harrington + https://bugs.freedesktop.org/show_bug.cgi?id=84811 - src/cairo-line-private.h | 7 ++++--- - 1 file changed, 4 insertions(+), 3 deletions(-) + src/cairo-ps-surface.c | 25 ++++++++++++++++++------- + 1 file changed, 18 insertions(+), 7 deletions(-) -commit d9ba8337ab456ae0e232d3c603cb41cea984ebea -Author: Bryce Harrington -AuthorDate: Fri Oct 3 11:52:32 2014 -0700 -Commit: Bryce Harrington -CommitDate: Fri Oct 3 11:55:59 2014 -0700 +commit b73c082c7f412f53eb2e4b52689601128a5f06a0 +Author: Adrian Johnson +AuthorDate: Sat Jul 9 18:19:16 2016 +0930 +Commit: Adrian Johnson +CommitDate: Sat Jul 9 18:31:55 2016 +0930 - quartz: Check for quartz surface type before conversion + truetype: Don't write glyph if num_contours == 0 - Fixes the following warning introduced in a recent commit reported by - ~suv: + According to the Opentype spec, num_contours in a glyf table entry can + be > 0 (single glyph) or < 0 (composite glyph). num_contours == 0 is + undefined. - 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); + The embedded font in the test case for this bug contained a space + glyph with num_contours == 0. This was failing on some printers. + According to the spec, glyphs with no outlines such as space are + required to have a 0 size entry in the loca table. - References: https://bugs.freedesktop.org/show_bug.cgi?id=84569 - Signed-off-by: Bryce Harrington + https://bugs.freedesktop.org/show_bug.cgi?id=79897 - src/cairo-quartz-image-surface.c | 2 +- + src/cairo-truetype-subset.c | 30 ++++++++++++++++++++++++------ + 1 file changed, 24 insertions(+), 6 deletions(-) + +commit 38fdcc30a3fe64800a732affaa211ac38eb8dfad +Author: Bryce Harrington +AuthorDate: Wed Jul 6 15:46:00 2016 -0700 +Commit: Bryce Harrington +CommitDate: Wed Jul 6 15:46:00 2016 -0700 + + cairo-misc: Whitespace cleanup + + src/cairo-misc.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) -commit 03756e042a2916e6c5334e2a00ec503a38e172d4 -Author: Andrea Canciani -AuthorDate: Fri Oct 3 09:56:24 2014 +0200 -Commit: Bryce Harrington -CommitDate: Fri Oct 3 11:38:48 2014 -0700 +commit deb994488ff5f5ca1ad770cef66cad7a04606e94 +Author: Adrian Johnson +AuthorDate: Sat Jun 18 13:41:28 2016 +0930 +Commit: Adrian Johnson +CommitDate: Tue Jul 5 20:26:47 2016 +0930 - 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 + test: refresh text-rotate ref images - src/cairo-quartz-private.h | 3 +++ - src/cairo-quartz-surface.c | 5 +---- - 2 files changed, 4 insertions(+), 4 deletions(-) + test/reference/text-rotate.pdf.ref.png | Bin 16006 -> 16045 bytes + test/reference/text-rotate.ps.ref.png | Bin 8668 -> 8632 bytes + test/reference/text-rotate.ref.png | Bin 16360 -> 16456 bytes + 3 files changed, 0 insertions(+), 0 deletions(-) -commit 531da6fb915a6e9ea33216a90196ae962876acf4 -Author: Andrea Canciani -AuthorDate: Thu Oct 2 18:10:00 2014 +0200 -Commit: Bryce Harrington -CommitDate: Fri Oct 3 11:38:44 2014 -0700 +commit bb4595130b2087ae7c32d688267fa32f398de7c7 +Author: Adrian Johnson +AuthorDate: Sat Jun 18 13:16:57 2016 +0930 +Commit: Adrian Johnson +CommitDate: Tue Jul 5 20:26:47 2016 +0930 - quartz: Fix build + ft: set font size to em size when retrieving unhinted metrics - 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 + fixes text-unhinted-metrics test - src/cairo-quartz-surface.c | 22 ++++++++-------------- - 1 file changed, 8 insertions(+), 14 deletions(-) + src/cairo-ft-font.c | 142 +++++++++++++++++++++++++++++++++------------------- + 1 file changed, 91 insertions(+), 51 deletions(-) -commit 14df211b9c12719f67412aedd6610eb623df7d7e -Author: Chris Wilson -AuthorDate: Thu Oct 2 13:08:50 2014 +0100 -Commit: Chris Wilson -CommitDate: Thu Oct 2 13:08:50 2014 +0100 +commit d92015e4f9e654580c1dac6adf860eafd804a4ba +Author: Adrian Johnson +AuthorDate: Sat Jun 18 13:15:37 2016 +0930 +Commit: Adrian Johnson +CommitDate: Tue Jul 5 20:26:47 2016 +0930 - 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. + add test text-unhinted-metrics - Signed-off-by: Chris Wilson + Based on bug report in https://lists.cairographics.org/archives/cairo/2016-April/027334.html - 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(+) + test/Makefile.sources | 1 + + test/reference/text-unhinted-metrics.pdf.ref.png | Bin 0 -> 4083 bytes + test/reference/text-unhinted-metrics.ps.ref.png | Bin 0 -> 3426 bytes + test/reference/text-unhinted-metrics.ref.png | Bin 0 -> 4104 bytes + test/text-unhinted-metrics.c | 73 +++++++++++++++++++++++ + 5 files changed, 74 insertions(+) -commit 7f7ed4c04e49b64c15d60889a8cdc4075efd8236 -Author: Chris Wilson -AuthorDate: Thu Oct 2 09:16:04 2014 +0100 -Commit: Chris Wilson -CommitDate: Thu Oct 2 09:16:04 2014 +0100 +commit 1ada65c34f7b76920501af34979dceaa9e7030d9 +Author: Adrian Johnson +AuthorDate: Sun Jul 3 10:39:08 2016 +0930 +Commit: Adrian Johnson +CommitDate: Sun Jul 3 10:39:08 2016 +0930 - 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 + pdf: remove unused variable - src/cairo-image-compositor.c | 32 ++++++++++++++++++++++++++++++++ - 1 file changed, 32 insertions(+) + src/cairo-pdf-surface.c | 1 - + 1 file changed, 1 deletion(-) -commit 7aacd81befc5ad1aec26bcf7e65fa5bd36c6a9b4 -Author: Chris Wilson -AuthorDate: Thu Oct 2 08:17:14 2014 +0100 -Commit: Chris Wilson -CommitDate: Thu Oct 2 08:46:44 2014 +0100 +commit c2dc5aa6849fb41cd42cea66d18436bacac25bbd +Author: Adrian Johnson +AuthorDate: Sun Jul 3 10:38:46 2016 +0930 +Commit: Adrian Johnson +CommitDate: Sun Jul 3 10:38:46 2016 +0930 - 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 + recording: Remove unused function - 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(-) + src/cairo-recording-surface.c | 15 --------------- + 1 file changed, 15 deletions(-) -commit 950f1e7103a3b4f3405fbb3ee2844ed24b902834 -Author: Chris Wilson -AuthorDate: Thu Oct 2 07:52:05 2014 +0100 -Commit: Chris Wilson -CommitDate: Thu Oct 2 08:46:44 2014 +0100 +commit 97d8b2b7de5084cafa282630f5b1147c4ef05cb8 +Author: Enrico Weigelt, metux IT consult +AuthorDate: Thu Jun 30 17:46:39 2016 +0200 +Commit: Uli Schlachter +CommitDate: Sat Jul 2 13:38:25 2016 +0200 - tor: Enable analytic processing for starting rows + qt: replaced calls to _cairo_clip_init_copy() by _cairo_clip_copy() - 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. + _cairo_clip_init_copy() was removed with commit b132fae5e843c329d1414d1a65b2e8d66b99852f, + but a few calls were still remaining. - Signed-off-by: Chris Wilson + Signed-off-by: Enrico Weigelt, metux IT consult + Signed-off-by: Uli Schlachter - src/cairo-tor-scan-converter.c | 27 +++++++++++++++++---------- - 1 file changed, 17 insertions(+), 10 deletions(-) + src/cairo-qt-surface.cpp | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) -commit 1a32ce83e4c1f3ca22a3f137b0126003a0e3d6e7 -Author: Chris Wilson -AuthorDate: Wed Oct 1 12:59:29 2014 +0100 -Commit: Chris Wilson -CommitDate: Thu Oct 2 08:46:44 2014 +0100 +commit f212db2fccfa3825d6a4dc55d5077e5fb756d50b +Author: Enrico Weigelt, metux IT consult +AuthorDate: Thu Jun 30 17:45:45 2016 +0200 +Commit: Uli Schlachter +CommitDate: Sat Jul 2 13:35:38 2016 +0200 - tor: Perform analytic coverage over the pixel not sample points + core: fixed code duplication - 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). + We have two places where copying from box set to clip is + implemented in the same way. Just move that to one function. - One side effect of + Signed-off-by: Enrico Weigelt, metux IT consult + Signed-off-by: Uli Schlachter + + src/cairo-clip-boxes.c | 50 ++++++++++++++++++++++++++++++++++---------------- + 1 file changed, 34 insertions(+), 16 deletions(-) + +commit 5bb43c92b3b35e9df8bdb8b14997e98c4a05d917 +Author: Enrico Weigelt, metux IT consult +AuthorDate: Thu Jun 30 17:45:44 2016 +0200 +Commit: Uli Schlachter +CommitDate: Sat Jul 2 13:35:38 2016 +0200 + + core: dropped actually unused parameter of _cairo_boxes_to_array() - commit 03c3d4b7c159a3004071522bac2461e553fec211 - Author: Chris Wilson - Date: Tue Sep 30 08:44:43 2014 +0100 + When parameter force_allocation is false *and* the box set has + exactly one chunk, this chunk is returned directly - w/o copying it. - tor: Fix loss of precision from projection onto sample grid + That mode is never used, and it's highly problematic as it's unclear + whether we have to free the returnd object or it's still owned + by somebody else. - 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. + Just dropping the useless parameter / corner case to make the function + simpler and more robust. - References: https://bugs.freedesktop.org/show_bug.cgi?id=84396 - Signed-off-by: Chris Wilson + Signed-off-by: Enrico Weigelt, metux IT consult + Signed-off-by: Uli Schlachter - src/cairo-tor-scan-converter.c | 67 ++++++++++++++++++++++++++++++------------ - 1 file changed, 49 insertions(+), 18 deletions(-) + src/cairo-boxes-private.h | 3 +-- + src/cairo-boxes.c | 5 +---- + src/cairo-clip-boxes.c | 4 ++-- + 3 files changed, 4 insertions(+), 8 deletions(-) -commit 79c8b14b9fd8716d47fab4436b34d26b0135e9d7 -Author: Chris Wilson -AuthorDate: Thu Oct 2 00:20:52 2014 +0100 -Commit: Chris Wilson -CommitDate: Thu Oct 2 08:46:44 2014 +0100 +commit b23c2291d8fdebd417697d5b70f31226632e3a1e +Author: Enrico Weigelt, metux IT consult +AuthorDate: Thu Jun 30 17:45:43 2016 +0200 +Commit: Uli Schlachter +CommitDate: Sat Jul 2 13:35:34 2016 +0200 - test/simple: Tighten sanity checks in reference image generator + core: helper inline for rect->box conversion - Signed-off-by: Chris Wilson + Signed-off-by: Enrico Weigelt, metux IT consult + Signed-off-by: Uli Schlachter - test/simple.c | 8 ++++---- - 1 file changed, 4 insertions(+), 4 deletions(-) + src/cairo-box-inline.h | 10 ++++++++++ + src/cairo-clip-boxes.c | 11 ++--------- + 2 files changed, 12 insertions(+), 9 deletions(-) -commit 50b41e214533ea5fd3b64128306b6cb94d353145 -Author: Chris Wilson -AuthorDate: Wed Oct 1 22:50:10 2014 +0100 -Commit: Chris Wilson -CommitDate: Thu Oct 2 00:06:27 2014 +0100 +commit ae403448af410984852aeff76278dc96e7141b9e +Author: Enrico Weigelt, metux IT consult +AuthorDate: Thu Jun 30 17:45:42 2016 +0200 +Commit: Uli Schlachter +CommitDate: Sat Jul 2 13:27:11 2016 +0200 - test: Add a simple rasteriser to check fidelity of edge rendering + core: fix compiler warnings - 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. + The code correct, but the compiler can't check that and thinks + there're uninitialized variables. - Signed-off-by: Chris Wilson + Perhaps we could rewrite it in a better way, so the compiler + can do better (even arch specific) optimizations. + + Signed-off-by: Enrico Weigelt, metux IT consult + Signed-off-by: Uli Schlachter - test/Makefile.sources | 1 + - test/reference/simple-edge.ref.png | Bin 0 -> 1922 bytes - test/simple.c | 347 +++++++++++++++++++++++++++++++++++++ - 3 files changed, 348 insertions(+) + src/cairo-botor-scan-converter.c | 2 +- + src/cairo-line.c | 8 ++++---- + src/cairo-polygon-intersect.c | 2 +- + src/cairo-polygon-reduce.c | 2 +- + 4 files changed, 7 insertions(+), 7 deletions(-) -commit 2144e7f48ba49d5bdb4a0dd1fb672be9d313fb65 -Author: Chris Wilson -AuthorDate: Tue Sep 30 16:18:34 2014 +0100 -Commit: Chris Wilson -CommitDate: Tue Sep 30 16:18:34 2014 +0100 +commit 1272db90f85cf031e5d2ffb73d1af1259c9d4fb9 +Author: Adrian Johnson +AuthorDate: Tue Jun 21 19:44:48 2016 +0930 +Commit: Adrian Johnson +CommitDate: Tue Jun 21 19:44:48 2016 +0930 - 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 + win32: gcc 5.4 build fix - test/coverage.c | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) + boilerplate/cairo-boilerplate-win32.c | 3 +++ + 1 file changed, 3 insertions(+) -commit 0c42d5c176b27725ac8ab293c3e941be64f51613 -Author: Chris Wilson -AuthorDate: Tue Sep 30 16:14:57 2014 +0100 -Commit: Chris Wilson -CommitDate: Tue Sep 30 16:15:33 2014 +0100 +commit 90d50cd92315d6760069ad8062aba5e297370b20 +Author: Adrian Johnson +AuthorDate: Sun Jun 19 19:52:32 2016 +0930 +Commit: Adrian Johnson +CommitDate: Sun Jun 19 19:52:32 2016 +0930 - test: Add another coverage example demonstrating the seams in tor + win32-print: fix unbounded surface assertion - References: https://bugs.freedesktop.org/show_bug.cgi?id=84396 - Signed-off-by: Chris Wilson + https://lists.cairographics.org/archives/cairo/2016-June/027445.html - test/coverage.c | 53 +++++++++++++++++++++++++++++++ - test/reference/coverage-abutting.ref.png | Bin 0 -> 777 bytes - 2 files changed, 53 insertions(+) + src/win32/cairo-win32-printing-surface.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) -commit 95e147bfa05a122541645f32be52cf1902c3a4b2 -Author: Chris Wilson -AuthorDate: Tue Sep 30 14:30:45 2014 +0100 -Commit: Chris Wilson -CommitDate: Tue Sep 30 14:33:50 2014 +0100 +commit d69dd6b341594c338fa6c7b327fd7f201eb37bc1 +Author: Uli Schlachter +AuthorDate: Sat Jun 18 15:08:52 2016 +0200 +Commit: Uli Schlachter +CommitDate: Sun Jun 19 11:34:35 2016 +0200 - test: Explicitly flip the reference image for recordflip + xlib: Fix double free in _get_image_surface() - Signed-off-by: Chris Wilson + If XShmGetImage() fails, the code tries to continue with its normal, + non-shared-memory path. However, the image variable, which was previously set to + NULL, now points to an already-destroyed surface, causing a double-free when the + function cleans up after itself (actually, its an assertion failure because the + reference count of the surface is zero, but technically this is still a double + free). + + Fix this by setting image=NULL after destroying the surface that this refers to, + to make sure this surface will not be destroyed again. + + While we are here (multiple changes in a single commit are bad...), also fix the + cleanup done in bail. In practice, &image->base should be safe when image==NULL, + because this just adds some offset to the pointer (the offset here is actually + zero, so this doesn't do anything at all). However, the C standard does not + require this to be safe, so let's handle this case specially. + + Note that anything that is fixed by this change is still buggy, because the only + reason why XShmGetImage() could fail would be BadDrawable, meaning that the + target we draw to does not exist or was already destroyed. This patch will + likely just cause X11 errors elsewhere and drawing to (possible) invalid + drawables is not supported by cairo anyway. This means that if SHM fails, the + following fallback code has a high chance of failing, too. + + Fixes: https://bugs.freedesktop.org/show_bug.cgi?id=91967 + Signed-off-by: Uli Schlachter - 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(-) + src/cairo-xlib-surface.c | 4 +++- + 1 file changed, 3 insertions(+), 1 deletion(-) -commit ccd48b346436a80629e4f9a07f2ba7ffbfd802f1 -Author: Chris Wilson -AuthorDate: Tue Sep 30 14:06:21 2014 +0100 -Commit: Chris Wilson -CommitDate: Tue Sep 30 14:06:36 2014 +0100 +commit eb808aa6250f1a44a2f5efff5c9ad3df44cb4d1d +Author: Adrian Johnson +AuthorDate: Sun Jun 19 14:08:55 2016 +0930 +Commit: Adrian Johnson +CommitDate: Sun Jun 19 14:08:55 2016 +0930 - test: Remove more duplicated reference images + image: only cache analyzed transparency/color for snapshot surfaces - Signed-off-by: Chris Wilson + https://lists.cairographics.org/archives/cairo/2016-June/027429.html + + src/cairo-image-surface.c | 86 +++++++++++++++++++++++++++++------------------ + 1 file changed, 54 insertions(+), 32 deletions(-) + +commit 113ba5f3fa48f9f826b86ff9198ce0d35144eea4 +Author: Adrian Johnson +AuthorDate: Sun Jun 5 20:34:44 2016 +0930 +Commit: Adrian Johnson +CommitDate: Sun Jun 5 20:43:36 2016 +0930 + + Update ref images + + ref images were creating using Debian Jessie 64-bit and latest poppler. + + test/README | 10 +++++----- + test/reference/arc-direction.pdf.ref.png | Bin 0 -> 6175 bytes + test/reference/arc-direction.ref.png | Bin 6073 -> 6175 bytes + test/reference/arc-looping-dash.pdf.ref.png | Bin 0 -> 472 bytes + test/reference/big-empty-box.ps.rgb24.ref.png | Bin 0 -> 108 bytes + test/reference/big-empty-triangle.ps.rgb24.ref.png | Bin 0 -> 108 bytes + test/reference/big-little-box.ps.rgb24.ref.png | Bin 0 -> 160 bytes + test/reference/bitmap-font.ps.rgb24.ref.png | Bin 0 -> 871 bytes + test/reference/bug-51910.pdf.ref.png | Bin 0 -> 1908 bytes + test/reference/bug-51910.ps.ref.png | Bin 0 -> 2180 bytes + test/reference/bug-84115.pdf.ref.png | Bin 0 -> 62959 bytes + test/reference/bug-84115.ps.arg32.ref.png | Bin 0 -> 61982 bytes + test/reference/bug-84115.ps.argb32.ref.png | Bin 0 -> 61982 bytes + test/reference/bug-84115.ps.rgb24.ref.png | Bin 0 -> 61982 bytes + test/reference/bug-bo-ricotz.argb32.ref.png | Bin 0 -> 2123 bytes + test/reference/bug-bo-ricotz.pdf.rgb24.ref.png | Bin 0 -> 2123 bytes + test/reference/bug-bo-ricotz.ps.ref.png | Bin 0 -> 2081 bytes + test/reference/bug-extents.pdf.ref.png | Bin 0 -> 2639 bytes + test/reference/bug-source-cu.pdf.argb32.ref.png | Bin 0 -> 3206 bytes + test/reference/bug-source-cu.pdf.rgb24.ref.png | Bin 0 -> 3216 bytes + test/reference/bug-source-cu.ps.argb32.ref.png | Bin 0 -> 3192 bytes + test/reference/bug-source-cu.ps.rgb24.ref.png | Bin 0 -> 3192 bytes + test/reference/bug-spline.ps.ref.png | Bin 0 -> 3563 bytes + test/reference/caps-05.pdf.ref.png | Bin 0 -> 1230 bytes + test/reference/caps-05.ps.ref.png | Bin 0 -> 1046 bytes + test/reference/caps-1.pdf.ref.png | Bin 0 -> 1230 bytes + test/reference/caps-1.ps.ref.png | Bin 0 -> 1195 bytes + test/reference/caps-2.pdf.ref.png | Bin 0 -> 1446 bytes + test/reference/caps-2.ps.ref.png | Bin 0 -> 1211 bytes + test/reference/caps-joins-05.pdf.ref.png | Bin 0 -> 2377 bytes + test/reference/caps-joins-05.ps.ref.png | Bin 0 -> 1485 bytes + test/reference/caps-joins-1.pdf.ref.png | Bin 0 -> 2377 bytes + test/reference/caps-joins-1.ps.ref.png | Bin 0 -> 1638 bytes + test/reference/caps-joins-2.pdf.ref.png | Bin 0 -> 1716 bytes + test/reference/caps-joins-2.ps.ref.png | Bin 0 -> 1597 bytes + test/reference/caps-joins-curve.pdf.ref.png | Bin 0 -> 5721 bytes + test/reference/caps-joins.pdf.ref.png | Bin 0 -> 1712 bytes + test/reference/caps-sub-paths.pdf.ref.png | Bin 0 -> 165 bytes + test/reference/caps-tails-curve.pdf.ref.png | Bin 0 -> 53213 bytes + test/reference/caps.pdf.ref.png | Bin 0 -> 1836 bytes + test/reference/checkerboard.pdf.ref.png | Bin 0 -> 152 bytes + test/reference/clip-complex-bug61592.pdf.ref.png | Bin 0 -> 128 bytes + test/reference/clip-complex-bug61592.ps.ref.png | Bin 0 -> 104 bytes + test/reference/clip-device-offset.ps.rgb24.ref.png | Bin 0 -> 168 bytes + test/reference/clip-disjoint-quad.pdf.ref.png | Bin 0 -> 1555 bytes + test/reference/clip-disjoint-quad.ps.ref.png | Bin 0 -> 1560 bytes + test/reference/clip-disjoint.ps.ref.png | Bin 4037 -> 4515 bytes + test/reference/clip-fill-no-op.ps.ref.png | Bin 0 -> 153 bytes + .../clip-fill-rule-pixel-aligned.ps.argb32.ref.png | Bin 0 -> 175 bytes + .../clip-fill-rule-pixel-aligned.ps.rgb24.ref.png | Bin 0 -> 165 bytes + test/reference/clip-fill-rule.pdf.argb32.ref.png | Bin 509 -> 507 bytes + test/reference/clip-fill-rule.pdf.rgb24.ref.png | Bin 0 -> 375 bytes + test/reference/clip-fill-rule.rgb24.ref.png | Bin 376 -> 375 bytes + test/reference/clip-fill.ps.ref.png | Bin 0 -> 516 bytes + test/reference/clip-fill.ps.xfail.png | Bin 522 -> 0 bytes + test/reference/clip-image.pdf.ref.png | Bin 0 -> 2681 bytes + test/reference/clip-intersect.ps.ref.png | Bin 0 -> 204 bytes + test/reference/clip-operator.pdf.argb32.ref.png | Bin 8792 -> 7827 bytes + test/reference/clip-operator.pdf.rgb24.ref.png | Bin 4683 -> 0 bytes + test/reference/clip-operator.rgb24.ref.png | Bin 3417 -> 3421 bytes + test/reference/clip-push-group.pdf.ref.png | Bin 164 -> 181 bytes + test/reference/clip-rectilinear.ps.ref.png | Bin 0 -> 395 bytes + ...p-rotate-image-surface-paint.pdf.argb32.ref.png | Bin 0 -> 369 bytes + ...ip-rotate-image-surface-paint.pdf.rgb24.ref.png | Bin 0 -> 369 bytes + .../clip-rotate-image-surface-paint.ps.ref.png | Bin 0 -> 207 bytes + test/reference/clip-stroke-no-op.ps.ref.png | Bin 0 -> 153 bytes + .../reference/clip-stroke-unbounded.argb32.ref.png | Bin 4097 -> 4040 bytes + test/reference/clip-stroke-unbounded.rgb24.ref.png | Bin 3486 -> 3410 bytes + test/reference/clip-stroke.ps.ref.png | Bin 0 -> 818 bytes + test/reference/clip-stroke.ps.xfail.png | Bin 662 -> 0 bytes + test/reference/clip-text.ps.ref.png | Bin 0 -> 428 bytes + test/reference/clip-text.ps.xfail.png | Bin 434 -> 0 bytes + test/reference/clipped-group.pdf.ref.png | Bin 334 -> 280 bytes + .../reference/close-path-current-point.pdf.ref.png | Bin 0 -> 1959 bytes + test/reference/close-path.pdf.argb32.ref.png | Bin 0 -> 285 bytes + test/reference/close-path.pdf.rgb24.ref.png | Bin 0 -> 285 bytes + test/reference/copy-path.pdf.ref.png | Bin 0 -> 618 bytes + test/reference/culled-glyphs.ps.ref.png | Bin 372 -> 290 bytes + test/reference/dash-caps-joins.pdf.ref.png | Bin 0 -> 4710 bytes + test/reference/dash-caps-joins.ps.ref.png | Bin 3648 -> 3669 bytes + test/reference/dash-curve.pdf.ref.png | Bin 0 -> 40984 bytes + test/reference/dash-curve.ps.ref.png | Bin 0 -> 24058 bytes + test/reference/dash-curve.ps2.ref.png | Bin 24355 -> 0 bytes + test/reference/dash-curve.ps3.ref.png | Bin 24355 -> 0 bytes + test/reference/dash-infinite-loop.pdf.ref.png | Bin 0 -> 665 bytes + test/reference/dash-scale.pdf.ref.png | Bin 0 -> 7824 bytes + test/reference/dash-state.pdf.ref.png | Bin 0 -> 7407 bytes + test/reference/dash-zero-length.pdf.argb32.ref.png | Bin 0 -> 233 bytes + test/reference/dash-zero-length.pdf.rgb24.ref.png | Bin 0 -> 199 bytes + test/reference/degenerate-curve-to.pdf.ref.png | Bin 0 -> 282 bytes + .../degenerate-linear-gradient.pdf.ref.png | Bin 0 -> 328 bytes + test/reference/degenerate-path.pdf.argb32.ref.png | Bin 0 -> 282 bytes + test/reference/degenerate-path.pdf.rgb24.ref.png | Bin 0 -> 205 bytes + test/reference/degenerate-pen.pdf.argb32.ref.png | Bin 0 -> 1004 bytes + test/reference/degenerate-pen.pdf.rgb24.ref.png | Bin 0 -> 1004 bytes + .../degenerate-radial-gradient.pdf.ref.png | Bin 0 -> 439 bytes + test/reference/degenerate-rel-curve-to.pdf.ref.png | Bin 0 -> 277 bytes + .../reference/device-offset-fractional.pdf.ref.png | Bin 0 -> 260 bytes + .../device-offset-positive.ps.rgb24.ref.png | Bin 0 -> 111 bytes + test/reference/device-offset.ps.rgb24.ref.png | Bin 0 -> 111 bytes + test/reference/extend-pad-border.pdf.ref.png | Bin 495 -> 505 bytes + test/reference/fallback.pdf.ref.png | Bin 0 -> 6318 bytes + test/reference/fallback.ps.ref.png | Bin 0 -> 4053 bytes + test/reference/fill-alpha.ps.argb32.ref.png | Bin 2248 -> 2737 bytes + .../fill-and-stroke-alpha-add.pdf.ref.png | Bin 0 -> 562 bytes + test/reference/fill-and-stroke-alpha.pdf.ref.png | Bin 0 -> 520 bytes + test/reference/fill-and-stroke.pdf.argb32.ref.png | Bin 0 -> 359 bytes + test/reference/fill-and-stroke.pdf.rgb24.ref.png | Bin 0 -> 311 bytes + .../fill-degenerate-sort-order.argb32.ref.png | Bin 2390 -> 2402 bytes + .../fill-degenerate-sort-order.pdf.ref.png | Bin 0 -> 2545 bytes + .../fill-degenerate-sort-order.rgb24.ref.png | Bin 2048 -> 2057 bytes + test/reference/fill-empty.ps.rgb24.ref.png | Bin 0 -> 97 bytes + test/reference/fill-image.ps.ref.png | Bin 1645 -> 1760 bytes + test/reference/fill-missed-stop.pdf.argb32.ref.png | Bin 452 -> 445 bytes + test/reference/fill-missed-stop.pdf.rgb24.ref.png | Bin 0 -> 375 bytes + test/reference/fill-rule.pdf.ref.png | Bin 0 -> 2444 bytes + test/reference/fill-rule.rgb24.ref.png | Bin 1763 -> 1763 bytes + .../finer-grained-fallbacks.pdf.argb32.ref.png | Bin 0 -> 1308 bytes + .../finer-grained-fallbacks.pdf.rgb24.ref.png | Bin 0 -> 880 bytes + .../finer-grained-fallbacks.ps.argb32.ref.png | Bin 0 -> 1262 bytes + .../finer-grained-fallbacks.ps.rgb24.ref.png | Bin 0 -> 880 bytes + .../finer-grained-fallbacks.ps2.argb32.ref.png | Bin 1168 -> 0 bytes + test/reference/finer-grained-fallbacks.ps2.ref.png | Bin 1356 -> 0 bytes + .../finer-grained-fallbacks.ps2.rgb24.ref.png | Bin 936 -> 0 bytes + .../finer-grained-fallbacks.ps3.argb32.ref.png | Bin 1168 -> 0 bytes + test/reference/finer-grained-fallbacks.ps3.ref.png | Bin 1356 -> 0 bytes + .../finer-grained-fallbacks.ps3.rgb24.ref.png | Bin 936 -> 0 bytes + test/reference/font-matrix-translation.ps.ref.png | Bin 0 -> 584 bytes + .../font-matrix-translation.ps2.argb32.ref.png | Bin 748 -> 0 bytes + .../font-matrix-translation.ps2.rgb24.ref.png | Bin 748 -> 0 bytes + .../font-matrix-translation.ps3.argb32.ref.png | Bin 748 -> 0 bytes + .../font-matrix-translation.ps3.rgb24.ref.png | Bin 748 -> 0 bytes + .../ft-show-glyphs-positioning.pdf.ref.png | Bin 3117 -> 3238 bytes + .../ft-show-glyphs-positioning.ps.ref.png | Bin 0 -> 1696 bytes + .../ft-show-glyphs-positioning.ps2.ref.png | Bin 2269 -> 0 bytes + .../ft-show-glyphs-positioning.ps3.ref.png | Bin 2269 -> 0 bytes + test/reference/ft-show-glyphs-table.ps.ref.png | Bin 0 -> 4561 bytes + test/reference/ft-show-glyphs-table.ps2.ref.png | Bin 5687 -> 0 bytes + test/reference/ft-show-glyphs-table.ps3.ref.png | Bin 5687 -> 0 bytes + .../ft-text-vertical-layout-type3.pdf.ref.png | Bin 3639 -> 3236 bytes + .../ft-text-vertical-layout-type3.ps.ref.png | Bin 2134 -> 2109 bytes + .../ft-text-vertical-layout-type3.ref.png | Bin 3609 -> 3605 bytes + test/reference/glyph-cache-pressure.ps.ref.png | Bin 0 -> 1239 bytes + test/reference/glyph-cache-pressure.ps2.ref.png | Bin 1454 -> 0 bytes + test/reference/glyph-cache-pressure.ps3.ref.png | Bin 1454 -> 0 bytes + test/reference/gradient-alpha.pdf.argb32.ref.png | Bin 0 -> 133 bytes + test/reference/gradient-alpha.pdf.rgb24.ref.png | Bin 0 -> 124 bytes + .../gradient-constant-alpha.pdf.argb32.ref.png | Bin 0 -> 103 bytes + .../gradient-constant-alpha.pdf.rgb24.ref.png | Bin 0 -> 103 bytes + .../gradient-zero-stops-mask.ps.rgb24.ref.png | Bin 0 -> 86 bytes + test/reference/gradient-zero-stops.ps.rgb24.png | Bin 0 -> 86 bytes + test/reference/group-unaligned.ps.ref.png | Bin 321 -> 310 bytes + test/reference/halo-transform.ps.ref.png | Bin 8691 -> 8704 bytes + test/reference/halo.ps.ref.png | Bin 5220 -> 5368 bytes + test/reference/huge-linear.pdf.ref.png | Bin 1586 -> 1640 bytes + test/reference/huge-radial.pdf.ref.png | Bin 0 -> 47469 bytes + test/reference/huge-radial.ref.png | Bin 41702 -> 47247 bytes + .../image-surface-source.ps.argb32.ref.png | Bin 0 -> 484 bytes + .../image-surface-source.ps.rgb24.ref.png | Bin 0 -> 475 bytes + test/reference/image-surface-source.ps2.ref.png | Bin 376 -> 0 bytes + test/reference/image-surface-source.ps3.ref.png | Bin 376 -> 0 bytes + test/reference/infinite-join.pdf.ref.png | Bin 0 -> 132 bytes + test/reference/inverse-text.ps.ref.png | Bin 0 -> 748 bytes + test/reference/joins-loop.ps.ref.png | Bin 0 -> 2963 bytes + test/reference/joins-star.ps.ref.png | Bin 0 -> 3334 bytes + test/reference/joins.pdf.argb32.ref.png | Bin 0 -> 6320 bytes + test/reference/joins.pdf.rgb24.ref.png | Bin 0 -> 6320 bytes + test/reference/large-font.ps.ref.png | Bin 0 -> 5007 bytes + test/reference/leaky-dashed-stroke.pdf.ref.png | Bin 0 -> 9283 bytes + test/reference/leaky-polygon.pdf.ref.png | Bin 0 -> 330 bytes + .../line-width-large-overlap-offset.ps.ref.png | Bin 0 -> 305 bytes + .../line-width-large-overlap-rotated.ps.ref.png | Bin 0 -> 385 bytes + .../reference/line-width-overlap-offset.ps.ref.png | Bin 0 -> 349 bytes + .../line-width-overlap-rotated.ps.ref.png | Bin 0 -> 632 bytes + test/reference/line-width-scale.pdf.ref.png | Bin 0 -> 5670 bytes + test/reference/line-width-tolerance.pdf.ref.png | Bin 0 -> 163 bytes + test/reference/line-width-tolerance.ps.ref.png | Bin 0 -> 265 bytes + test/reference/line-width.pdf.ref.png | Bin 0 -> 180 bytes + test/reference/linear-gradient-extend.pdf.ref.png | Bin 0 -> 388 bytes + test/reference/linear-gradient-large.pdf.ref.png | Bin 0 -> 3050 bytes + test/reference/linear-gradient-large.ps.ref.png | Bin 0 -> 3551 bytes + .../linear-gradient-one-stop.ps.rgb24.ref.png | Bin 0 -> 174 bytes + test/reference/linear-gradient-subset.pdf.ref.png | Bin 0 -> 811 bytes + test/reference/linear-gradient-subset.ref.png | Bin 813 -> 805 bytes + test/reference/linear-gradient.pdf.ref.png | Bin 0 -> 963 bytes + test/reference/linear-gradient.ps3.ref.png | Bin 779 -> 622 bytes + test/reference/linear-gradient.ref.png | Bin 959 -> 960 bytes + test/reference/linear-uniform.ps.ref.png | Bin 0 -> 129 bytes + test/reference/long-dashed-lines.pdf.ref.png | Bin 0 -> 2092 bytes + test/reference/mask-ctm.ps.rgb24.ref.png | Bin 0 -> 105 bytes + test/reference/mask-surface-ctm.ps.rgb24.ref.png | Bin 0 -> 105 bytes + test/reference/mask-transformed-image.pdf.ref.png | Bin 3528 -> 3811 bytes + test/reference/mask-transformed-image.ps.ref.png | Bin 0 -> 3777 bytes + .../reference/mask-transformed-similar.pdf.ref.png | Bin 4213 -> 3528 bytes + test/reference/mask-transformed-similar.ps.ref.png | Bin 0 -> 3532 bytes + test/reference/mask.argb32.ref.png | Bin 8530 -> 8577 bytes + test/reference/mask.pdf.argb32.ref.png | Bin 7554 -> 7618 bytes + test/reference/mask.pdf.rgb24.ref.png | Bin 7043 -> 7078 bytes + test/reference/mask.rgb24.ref.png | Bin 7160 -> 7140 bytes + test/reference/mesh-pattern-conical.pdf.ref.png | Bin 0 -> 8767 bytes + test/reference/mesh-pattern-conical.ps.ref.png | Bin 0 -> 11374 bytes + .../mesh-pattern-control-points.pdf.ref.png | Bin 0 -> 10939 bytes + .../mesh-pattern-control-points.ps.ref.png | Bin 0 -> 18415 bytes + test/reference/mesh-pattern-fold.pdf.ref.png | Bin 0 -> 53096 bytes + test/reference/mesh-pattern-fold.ps.ref.png | Bin 0 -> 71806 bytes + test/reference/mesh-pattern-overlap.pdf.ref.png | Bin 0 -> 9114 bytes + test/reference/mesh-pattern-overlap.ps.ref.png | Bin 0 -> 11238 bytes + .../reference/mesh-pattern-transformed.pdf.ref.png | Bin 0 -> 14510 bytes + test/reference/mesh-pattern-transformed.ps.ref.png | Bin 0 -> 14604 bytes + test/reference/mesh-pattern.pdf.ref.png | Bin 0 -> 19722 bytes + test/reference/mesh-pattern.ps.ref.png | Bin 0 -> 19765 bytes + test/reference/new-sub-path.pdf.argb32.ref.png | Bin 512 -> 519 bytes + test/reference/new-sub-path.pdf.rgb24.ref.png | Bin 0 -> 390 bytes + test/reference/nil-surface.ps.rgb24.ref.png | Bin 0 -> 87 bytes + test/reference/operator-alpha-alpha.pdf.ref.png | Bin 0 -> 3402 bytes + test/reference/operator-alpha-alpha.ps.ref.png | Bin 0 -> 4283 bytes + test/reference/operator-clear.pdf.argb32.ref.png | Bin 0 -> 1150 bytes + test/reference/operator-clear.rgb24.ref.png | Bin 939 -> 940 bytes + test/reference/operator-source.argb32.ref.png | Bin 5620 -> 5619 bytes + test/reference/operator-source.rgb24.ref.png | Bin 4006 -> 4010 bytes + .../reference/over-above-source.ps3.argb32.ref.png | Bin 558 -> 529 bytes + .../over-around-source.ps3.argb32.ref.png | Bin 508 -> 472 bytes + .../over-between-source.ps3.argb32.ref.png | Bin 551 -> 539 bytes + test/reference/overlapping-boxes.ps.argb32.ref.png | Bin 0 -> 161 bytes + test/reference/overlapping-boxes.ps.rgb24.ref.png | Bin 0 -> 170 bytes + .../overlapping-glyphs.pdf.argb32.ref.png | Bin 0 -> 2179 bytes + .../reference/overlapping-glyphs.pdf.rgb24.ref.png | Bin 0 -> 1656 bytes + test/reference/overlapping-glyphs.ps.rgb24.ref.png | Bin 0 -> 1613 bytes + test/reference/paint-source-alpha.pdf.ref.png | Bin 0 -> 245 bytes + .../paint-with-alpha-clip-mask.pdf.ref.png | Bin 0 -> 344 bytes + test/reference/paint-with-alpha-clip.pdf.ref.png | Bin 0 -> 309 bytes + .../paint-with-alpha-solid-clip.pdf.ref.png | Bin 0 -> 265 bytes + test/reference/paint-with-alpha.pdf.ref.png | Bin 0 -> 245 bytes + test/reference/partial-clip-text-bottom.ps.ref.png | Bin 0 -> 192 bytes + test/reference/partial-clip-text-left.ps.ref.png | Bin 0 -> 218 bytes + test/reference/partial-clip-text-right.ps.ref.png | Bin 0 -> 123 bytes + test/reference/partial-clip-text-top.ps.ref.png | Bin 107 -> 98 bytes + test/reference/pass-through.ps.rgb24.ref.png | Bin 0 -> 313 bytes + test/reference/path-stroke-twice.pdf.ref.png | Bin 0 -> 214 bytes + .../reference/pdf-surface-source.ps.argb32.ref.png | Bin 0 -> 307 bytes + test/reference/pdf-surface-source.ps.rgb24.ref.png | Bin 0 -> 312 bytes + .../reference/pixman-downscale-best-24.pdf.ref.png | Bin 0 -> 162 bytes + test/reference/pixman-downscale-best-24.ps.ref.png | Bin 0 -> 391 bytes + test/reference/pixman-downscale-best-24.ref.png | Bin 191 -> 601 bytes + test/reference/pixman-downscale-best-96.ps.ref.png | Bin 0 -> 581 bytes + .../pixman-downscale-bilinear-24.ps.ref.png | Bin 0 -> 391 bytes + .../pixman-downscale-bilinear-96.ps.ref.png | Bin 0 -> 581 bytes + test/reference/pixman-downscale-good-24.ps.ref.png | Bin 0 -> 391 bytes + test/reference/pixman-downscale-good-96.ps.ref.png | Bin 0 -> 581 bytes + test/reference/pixman-rotate.ps.argb32.ref.png | Bin 355 -> 358 bytes + test/reference/pixman-rotate.ps.rgb24.ref.png | Bin 0 -> 221 bytes + test/reference/ps-surface-source.ps.argb32.ref.png | Bin 0 -> 307 bytes + test/reference/ps-surface-source.ps.rgb24.ref.png | Bin 0 -> 312 bytes + test/reference/pthread-show-text.pdf.ref.png | Bin 47015 -> 46891 bytes + test/reference/pthread-show-text.ps.ref.png | Bin 16558 -> 17905 bytes + test/reference/radial-gradient-extend.pdf.ref.png | Bin 0 -> 483 bytes + test/reference/random-clip.pdf.argb32.ref.png | Bin 0 -> 524985 bytes + test/reference/random-clip.pdf.rgb24.ref.png | Bin 0 -> 524985 bytes + test/reference/random-clip.ps.argb32.ref.png | Bin 0 -> 461852 bytes + test/reference/random-clip.ps.rgb24.ref.png | Bin 0 -> 524985 bytes + test/reference/random-clip.ref.png | Bin 525010 -> 524985 bytes + ...ndom-intersections-curves-eo.pdf.argb32.ref.png | Bin 0 -> 257915 bytes + .../random-intersections-curves-eo.pdf.ref.png | Bin 246507 -> 0 bytes + ...andom-intersections-curves-eo.pdf.rgb24.ref.png | Bin 0 -> 257898 bytes + ...ndom-intersections-curves-nz.pdf.argb32.ref.png | Bin 0 -> 263071 bytes + ...andom-intersections-curves-nz.pdf.rgb24.ref.png | Bin 0 -> 263052 bytes + test/reference/random-intersections-eo.pdf.ref.png | Bin 0 -> 149460 bytes + test/reference/random-intersections-eo.ref.png | Bin 135555 -> 135553 bytes + .../random-intersections-nonzero.pdf.ref.png | Bin 0 -> 152364 bytes + .../reference/random-intersections-nonzero.ref.png | Bin 141737 -> 141727 bytes + test/reference/record-extend-none.ps.ref.png | Bin 0 -> 307 bytes + test/reference/record-extend-pad.ps.ref.png | Bin 0 -> 341 bytes + test/reference/record-extend-reflect.ps.ref.png | Bin 0 -> 354 bytes + test/reference/record-extend-repeat.ps.ref.png | Bin 0 -> 299 bytes + test/reference/record-fill-alpha.pdf.ref.png | Bin 0 -> 2831 bytes + test/reference/record-fill-alpha.ref.png | Bin 2754 -> 2831 bytes + test/reference/record-mesh.pdf.argb32.ref.png | Bin 0 -> 15215 bytes + test/reference/record-mesh.pdf.rgb24.ref.png | Bin 0 -> 14953 bytes + test/reference/record-mesh.ps.ref.png | Bin 0 -> 15215 bytes + test/reference/record-mesh.ref.png | Bin 15400 -> 15215 bytes + ...record-paint-alpha-clip-mask.pdf.argb32.ref.png | Bin 0 -> 340 bytes + .../record-paint-alpha-clip-mask.pdf.rgb24.ref.png | Bin 0 -> 349 bytes + .../reference/record-paint-alpha-clip-mask.ref.png | Bin 335 -> 340 bytes + .../record-paint-alpha-clip.pdf.argb32.ref.png | Bin 0 -> 296 bytes + .../record-paint-alpha-clip.pdf.rgb24.ref.png | Bin 0 -> 309 bytes + .../record-paint-alpha-solid-clip.pdf.ref.png | Bin 0 -> 265 bytes + .../record-replay-extend-none.ps.argb32.ref.png | Bin 0 -> 707 bytes + .../record-replay-extend-none.ps.rgb24.ref.png | Bin 0 -> 448 bytes + .../record-replay-extend-pad.ps.rgb24.ref.png | Bin 0 -> 1041 bytes + .../record-replay-extend-reflect.ps.argb32.ref.png | Bin 0 -> 2393 bytes + .../record-replay-extend-repeat.ps.argb32.ref.png | Bin 0 -> 3562 bytes + .../record-replay-extend-repeat.ps.rgb24.ref.png | Bin 0 -> 3467 bytes + .../record-select-font-face.pdf.argb32.ref.png | Bin 0 -> 1417 bytes + .../record-select-font-face.pdf.rgb24.ref.png | Bin 0 -> 2236 bytes + test/reference/record-select-font-face.ps.ref.png | Bin 0 -> 834 bytes + test/reference/record-select-font-face.ref.png | Bin 2250 -> 1417 bytes + .../record-self-intersecting.pdf.rgb24.ref.png | Bin 0 -> 194 bytes + test/reference/record-self-intersecting.ps.ref.png | Bin 0 -> 186 bytes + .../record-text-transform.pdf.argb32.ref.png | Bin 0 -> 5281 bytes + .../record-text-transform.pdf.rgb24.ref.png | Bin 0 -> 5577 bytes + .../record-text-transform.ps.argb32.ref.png | Bin 0 -> 1216 bytes + .../record-text-transform.ps.rgb24.ref.png | Bin 0 -> 1216 bytes + test/reference/record-text-transform.ref.png | Bin 5579 -> 5281 bytes + .../record1414x-fill-alpha.pdf.argb32.ref.png | Bin 0 -> 4152 bytes + .../record1414x-fill-alpha.pdf.rgb24.ref.png | Bin 0 -> 4227 bytes + test/reference/record1414x-fill-alpha.ps.ref.png | Bin 0 -> 4152 bytes + test/reference/record1414x-fill-alpha.ref.png | Bin 4124 -> 4243 bytes + ...d1414x-paint-alpha-clip-mask.pdf.argb32.ref.png | Bin 0 -> 522 bytes + ...rd1414x-paint-alpha-clip-mask.pdf.rgb24.ref.png | Bin 0 -> 860 bytes + .../record1414x-paint-alpha-clip-mask.ps.ref.png | Bin 0 -> 524 bytes + .../record1414x-paint-alpha-clip-mask.ref.png | Bin 460 -> 566 bytes + ...record1414x-paint-alpha-clip.pdf.argb32.ref.png | Bin 0 -> 390 bytes + .../record1414x-paint-alpha-clip.pdf.rgb24.ref.png | Bin 0 -> 636 bytes + .../record1414x-paint-alpha-clip.ps.ref.png | Bin 0 -> 391 bytes + ...1414x-paint-alpha-solid-clip.pdf.argb32.ref.png | Bin 0 -> 334 bytes + ...d1414x-paint-alpha-solid-clip.pdf.rgb24.ref.png | Bin 0 -> 663 bytes + .../record1414x-paint-alpha-solid-clip.ps.ref.png | Bin 0 -> 333 bytes + .../record1414x-paint-alpha.pdf.argb32.ref.png | Bin 0 -> 287 bytes + .../record1414x-paint-alpha.pdf.rgb24.ref.png | Bin 0 -> 665 bytes + test/reference/record1414x-paint-alpha.ps.ref.png | Bin 0 -> 285 bytes + ...record1414x-select-font-face.pdf.argb32.ref.png | Bin 0 -> 2018 bytes + .../record1414x-select-font-face.pdf.rgb24.ref.png | Bin 0 -> 3191 bytes + .../record1414x-select-font-face.ps.argb32.ref.png | Bin 0 -> 1196 bytes + .../record1414x-select-font-face.ps.rgb24.ref.png | Bin 0 -> 1194 bytes + .../reference/record1414x-select-font-face.ref.png | Bin 3177 -> 2018 bytes + ...ecord1414x-self-intersecting.pdf.argb32.ref.png | Bin 0 -> 385 bytes + ...record1414x-self-intersecting.pdf.rgb24.ref.png | Bin 0 -> 384 bytes + ...record1414x-self-intersecting.ps.argb32.ref.png | Bin 0 -> 274 bytes + .../record1414x-self-intersecting.ps.rgb24.ref.png | Bin 0 -> 287 bytes + .../record1414x-text-transform.pdf.argb32.ref.png | Bin 0 -> 8364 bytes + .../record1414x-text-transform.pdf.rgb24.ref.png | Bin 0 -> 8599 bytes + .../record1414x-text-transform.ps.ref.png | Bin 0 -> 6009 bytes + test/reference/record1414x-text-transform.ref.png | Bin 8713 -> 8365 bytes + .../record2x-fill-alpha.pdf.argb32.ref.png | Bin 0 -> 5811 bytes + .../record2x-fill-alpha.pdf.rgb24.ref.png | Bin 0 -> 5870 bytes + test/reference/record2x-fill-alpha.ps.ref.png | Bin 0 -> 5811 bytes + test/reference/record2x-fill-alpha.ref.png | Bin 5756 -> 5870 bytes + ...cord2x-paint-alpha-clip-mask.pdf.argb32.ref.png | Bin 0 -> 483 bytes + ...ecord2x-paint-alpha-clip-mask.pdf.rgb24.ref.png | Bin 0 -> 593 bytes + .../record2x-paint-alpha-clip-mask.ps.ref.png | Bin 0 -> 483 bytes + .../record2x-paint-alpha-clip-mask.ref.png | Bin 483 -> 491 bytes + .../record2x-paint-alpha-clip.pdf.argb32.ref.png | Bin 0 -> 340 bytes + .../record2x-paint-alpha-clip.pdf.rgb24.ref.png | Bin 0 -> 432 bytes + ...ord2x-paint-alpha-solid-clip.pdf.argb32.ref.png | Bin 0 -> 300 bytes + ...cord2x-paint-alpha-solid-clip.pdf.rgb24.ref.png | Bin 0 -> 379 bytes + .../record2x-paint-alpha.pdf.argb32.ref.png | Bin 0 -> 312 bytes + .../record2x-paint-alpha.pdf.rgb24.ref.png | Bin 0 -> 402 bytes + .../record2x-select-font-face.pdf.rgb24.ref.png | Bin 0 -> 4421 bytes + .../reference/record2x-select-font-face.ps.ref.png | Bin 0 -> 1716 bytes + test/reference/record2x-select-font-face.ref.png | Bin 4407 -> 3098 bytes + .../record2x-text-transform.pdf.argb32.ref.png | Bin 0 -> 13174 bytes + .../record2x-text-transform.pdf.rgb24.ref.png | Bin 0 -> 13762 bytes + test/reference/record2x-text-transform.ps.ref.png | Bin 0 -> 2421 bytes + test/reference/record2x-text-transform.ref.png | Bin 13476 -> 13072 bytes + test/reference/record90-fill-alpha.pdf.ref.png | Bin 0 -> 2663 bytes + .../record90-fill-alpha.pdf.rgb24.ref.png | Bin 0 -> 1090 bytes + test/reference/record90-fill-alpha.ref.png | Bin 2656 -> 2663 bytes + ...cord90-paint-alpha-clip-mask.pdf.argb32.ref.png | Bin 0 -> 339 bytes + ...ecord90-paint-alpha-clip-mask.pdf.rgb24.ref.png | Bin 0 -> 345 bytes + .../record90-paint-alpha-clip.pdf.argb32.ref.png | Bin 0 -> 335 bytes + .../record90-paint-alpha-clip.pdf.rgb24.ref.png | Bin 0 -> 327 bytes + test/reference/record90-paint-alpha-clip.ref.png | Bin 306 -> 335 bytes + ...ord90-paint-alpha-solid-clip.pdf.argb32.ref.png | Bin 0 -> 293 bytes + ...cord90-paint-alpha-solid-clip.pdf.rgb24.ref.png | Bin 0 -> 270 bytes + test/reference/record90-paint-alpha.ps.ref.png | Bin 0 -> 105 bytes + .../record90-select-font-face.pdf.rgb24.ref.png | Bin 0 -> 2278 bytes + .../reference/record90-select-font-face.ps.ref.png | Bin 0 -> 880 bytes + test/reference/record90-select-font-face.ref.png | Bin 2272 -> 1480 bytes + .../record90-self-intersecting.pdf.rgb24.ref.png | Bin 0 -> 188 bytes + .../record90-self-intersecting.ps.ref.png | Bin 0 -> 193 bytes + test/reference/record90-self-intersecting.ref.png | Bin 240 -> 214 bytes + .../record90-text-transform.pdf.rgb24.ref.png | Bin 0 -> 5817 bytes + test/reference/record90-text-transform.ps.ref.png | Bin 0 -> 4055 bytes + test/reference/record90-text-transform.ref.png | Bin 5811 -> 5481 bytes + test/reference/recordflip-fill-alpha.ref.png | Bin 2803 -> 2841 bytes + ...ordflip-paint-alpha-clip-mask.pdf.rgb24.ref.png | Bin 0 -> 359 bytes + .../recordflip-paint-alpha-clip-mask.ref.png | Bin 351 -> 356 bytes + .../recordflip-paint-alpha-clip.pdf.rgb24.ref.png | Bin 0 -> 336 bytes + .../recordflip-select-font-face.pdf.rgb24.ref.png | Bin 0 -> 2206 bytes + .../recordflip-select-font-face.ps.argb32.ref.png | Bin 0 -> 868 bytes + .../recordflip-select-font-face.ps.rgb24.ref.png | Bin 0 -> 868 bytes + test/reference/recordflip-select-font-face.ref.png | Bin 2240 -> 1395 bytes + .../recordflip-self-intersecting.pdf.rgb24.ref.png | Bin 0 -> 194 bytes + .../recordflip-self-intersecting.ps.ref.png | Bin 0 -> 186 bytes + .../recordflip-text-transform.pdf.rgb24.ref.png | Bin 0 -> 5611 bytes + .../recordflip-text-transform.ps.argb32.ref.png | Bin 0 -> 3879 bytes + .../recordflip-text-transform.ps.rgb24.ref.png | Bin 0 -> 3879 bytes + test/reference/recordflip-text-transform.ref.png | Bin 5609 -> 5343 bytes + test/reference/recordflip-whole-fill-alpha.ref.png | Bin 2803 -> 2799 bytes + .../recordflip-whole-paint-alpha-clip-mask.ref.png | Bin 351 -> 351 bytes + .../recordflip-whole-select-font-face.ref.png | Bin 2240 -> 1395 bytes + .../recordflip-whole-text-transform.ref.png | Bin 5609 -> 5343 bytes + ...ecording-surface-extend-none.pdf.argb32.ref.png | Bin 0 -> 3941 bytes + ...recording-surface-extend-none.pdf.rgb24.ref.png | Bin 0 -> 3775 bytes + ...recording-surface-extend-none.ps.argb32.ref.png | Bin 0 -> 3986 bytes + .../recording-surface-extend-none.ps.rgb24.ref.png | Bin 0 -> 3831 bytes + ...rding-surface-extend-reflect.pdf.argb32.ref.png | Bin 0 -> 29897 bytes + ...ording-surface-extend-reflect.pdf.rgb24.ref.png | Bin 0 -> 29901 bytes + ...ording-surface-extend-reflect.ps.argb32.ref.png | Bin 0 -> 33344 bytes + ...cording-surface-extend-reflect.ps.rgb24.ref.png | Bin 0 -> 33726 bytes + ...ording-surface-extend-repeat.pdf.argb32.ref.png | Bin 0 -> 26323 bytes + ...cording-surface-extend-repeat.pdf.rgb24.ref.png | Bin 0 -> 25867 bytes + ...cording-surface-extend-repeat.ps.argb32.ref.png | Bin 0 -> 28155 bytes + ...ecording-surface-extend-repeat.ps.rgb24.ref.png | Bin 0 -> 28131 bytes + .../recording-surface-over.pdf.argb32.ref.png | Bin 3908 -> 3941 bytes + .../recording-surface-over.pdf.rgb24.ref.png | Bin 3760 -> 3775 bytes + .../recording-surface-over.ps.argb32.ref.png | Bin 3064 -> 3986 bytes + .../recording-surface-over.ps.rgb24.ref.png | Bin 3147 -> 3831 bytes + .../recording-surface-source.pdf.argb32.ref.png | Bin 0 -> 3986 bytes + .../recording-surface-source.pdf.rgb24.ref.png | Bin 0 -> 3831 bytes + .../recording-surface-source.ps.argb32.ref.png | Bin 0 -> 3986 bytes + .../recording-surface-source.ps.rgb24.ref.png | Bin 0 -> 3831 bytes + .../rectilinear-dash-scale-unaligned.pdf.ref.png | Bin 0 -> 729 bytes + .../rectilinear-dash-scale-unaligned.ps.ref.png | Bin 0 -> 1659 bytes + test/reference/reflected-stroke.pdf.ref.png | Bin 0 -> 5197 bytes + .../rotate-clip-image-surface-paint.pdf.argb32.png | Bin 0 -> 223 bytes + .../rotate-clip-image-surface-paint.pdf.rgb24.png | Bin 0 -> 362 bytes + .../rotate-clip-image-surface-paint.ps.argb32.png | Bin 0 -> 196 bytes + test/reference/rotated-clip.pdf.ref.png | Bin 0 -> 3777 bytes + test/reference/rotated-clip.ps.argb32.png | Bin 0 -> 3444 bytes + test/reference/rotated-clip.ps.argb32.ref.png | Bin 0 -> 3444 bytes + test/reference/rotated-clip.ps.ref.png | Bin 3378 -> 0 bytes + test/reference/rotated-clip.ps.rgb24.ref.png | Bin 0 -> 3834 bytes + .../scale-offset-image.pdf.argb32.ref.png | Bin 7643 -> 0 bytes + test/reference/scale-offset-image.pdf.ref.png | Bin 0 -> 9530 bytes + .../reference/scale-offset-image.pdf.rgb24.ref.png | Bin 7643 -> 0 bytes + test/reference/scale-offset-image.ref.png | Bin 9748 -> 9508 bytes + .../scale-offset-similar.pdf.argb32.ref.png | Bin 8419 -> 0 bytes + test/reference/scale-offset-similar.pdf.ref.png | Bin 0 -> 9742 bytes + .../scale-offset-similar.pdf.rgb24.ref.png | Bin 8419 -> 0 bytes + test/reference/scale-offset-similar.ref.png | Bin 9779 -> 9508 bytes + test/reference/self-intersecting.ref.png | Bin 168 -> 0 bytes + test/reference/shape-sierpinski.pdf.argb32.ref.png | Bin 39520 -> 0 bytes + test/reference/shape-sierpinski.pdf.ref.png | Bin 0 -> 64796 bytes + test/reference/shape-sierpinski.pdf.rgb24.ref.png | Bin 39520 -> 0 bytes + test/reference/simple-edge.ref.png | Bin 1922 -> 2494 bytes + test/reference/smask-fill.pdf.ref.png | Bin 1105 -> 1153 bytes + test/reference/smask-image-mask.pdf.ref.png | Bin 615 -> 616 bytes + test/reference/smask-mask.pdf.ref.png | Bin 2308 -> 2288 bytes + test/reference/smask-paint.pdf.ref.png | Bin 2431 -> 2422 bytes + test/reference/smask-stroke.pdf.ref.png | Bin 0 -> 1712 bytes + test/reference/smask-text.pdf.ref.png | Bin 1874 -> 1862 bytes + test/reference/smask-text.ps.ref.png | Bin 0 -> 1875 bytes + test/reference/smask-text.ps2.ref.png | Bin 2023 -> 0 bytes + test/reference/smask-text.ps3.ref.png | Bin 2023 -> 0 bytes + test/reference/smask.pdf.ref.png | Bin 0 -> 3432 bytes + test/reference/smask.ps3.ref.png | Bin 0 -> 3455 bytes + test/reference/spline-decomposition.pdf.ref.png | Bin 19540 -> 19434 bytes + test/reference/spline-decomposition.ps.ref.png | Bin 8939 -> 8994 bytes + test/reference/stroke-clipped.ps.ref.png | Bin 0 -> 3306 bytes + test/reference/stroke-ctm-caps.pdf.ref.png | Bin 0 -> 861 bytes + test/reference/stroke-image.pdf.ref.png | Bin 1006 -> 1565 bytes + test/reference/stroke-image.ps.ref.png | Bin 1535 -> 1758 bytes + test/reference/stroke-pattern.pdf.argb32.ref.png | Bin 0 -> 1512 bytes + test/reference/stroke-pattern.pdf.rgb24.ref.png | Bin 0 -> 1512 bytes + .../surface-pattern-big-scale-down.ps.ref.png | Bin 235 -> 242 bytes + ...rface-pattern-scale-down-extend-none.ps.ref.png | Bin 0 -> 335 bytes + .../surface-pattern-scale-down.pdf.ref.png | Bin 2189 -> 2192 bytes + .../surface-pattern-scale-down.ps.ref.png | Bin 0 -> 984 bytes + .../surface-pattern-scale-down.ps2.ref.png | Bin 1324 -> 0 bytes + .../surface-pattern-scale-down.ps3.ref.png | Bin 1324 -> 0 bytes + test/reference/surface-pattern-scale-down.ref.png | Bin 1326 -> 1839 bytes + .../reference/surface-pattern-scale-up.pdf.ref.png | Bin 3482 -> 3419 bytes + test/reference/surface-pattern-scale-up.ps.ref.png | Bin 0 -> 926 bytes + .../reference/surface-pattern-scale-up.ps2.ref.png | Bin 913 -> 0 bytes + .../reference/surface-pattern-scale-up.ps3.ref.png | Bin 913 -> 0 bytes + test/reference/surface-pattern.pdf.ref.png | Bin 0 -> 11441 bytes + test/reference/surface-pattern.pdf.xfail.png | Bin 10532 -> 0 bytes + test/reference/surface-pattern.ps.ref.png | Bin 0 -> 2188 bytes + test/reference/surface-pattern.ps.xfail.png | Bin 2188 -> 0 bytes + test/reference/svg-surface-source.ps.rgb24.ref.png | Bin 0 -> 312 bytes + test/reference/text-glyph-range.pdf.ref.png | Bin 0 -> 1848 bytes + test/reference/text-glyph-range.ps.ref.png | Bin 1253 -> 1237 bytes + test/reference/text-pattern.pdf.argb32.ref.png | Bin 1515 -> 3329 bytes + test/reference/text-pattern.pdf.rgb24.ref.png | Bin 1339 -> 2738 bytes + test/reference/text-pattern.ps3.argb32.ref.png | Bin 881 -> 1760 bytes + test/reference/text-pattern.ps3.rgb24.ref.png | Bin 862 -> 2670 bytes + test/reference/text-rotate.pdf.ref.png | Bin 16744 -> 16006 bytes + test/reference/text-rotate.ps.ref.png | Bin 8765 -> 8668 bytes + test/reference/text-rotate.ref.png | Bin 16356 -> 16360 bytes + test/reference/text-transform.pdf.argb32.ref.png | Bin 5507 -> 5574 bytes + test/reference/text-transform.pdf.rgb24.ref.png | Bin 5507 -> 5574 bytes + test/reference/text-transform.ps.ref.png | Bin 0 -> 1227 bytes + test/reference/text-transform.ps2.ref.png | Bin 3943 -> 0 bytes + test/reference/text-transform.ps3.ref.png | Bin 3943 -> 0 bytes + test/reference/tiger.pdf.ref.png | Bin 0 -> 20326 bytes + test/reference/tiger.ps.ref.png | Bin 0 -> 69007 bytes + test/reference/tiger.ref.png | Bin 94477 -> 94474 bytes + test/reference/tighten-bounds.pdf.ref.png | Bin 0 -> 6466 bytes + test/reference/tighten-bounds.ps.ref.png | Bin 0 -> 6466 bytes + test/reference/transforms.pdf.ref.png | Bin 0 -> 314 bytes + test/reference/trap-clip.argb32.ref.png | Bin 5822 -> 5857 bytes + test/reference/trap-clip.pdf.argb32.ref.png | Bin 0 -> 241 bytes + test/reference/trap-clip.pdf.rgb24.ref.png | Bin 0 -> 241 bytes + test/reference/trap-clip.rgb24.ref.png | Bin 5422 -> 5462 bytes + test/reference/twin.pdf.argb32.ref.png | Bin 0 -> 2976 bytes + test/reference/twin.pdf.rgb24.ref.png | Bin 0 -> 3442 bytes + test/reference/twin.ps.ref.png | Bin 2136 -> 2103 bytes + .../unbounded-operator.pdf.argb32.ref.png | Bin 2713 -> 2646 bytes + .../reference/unbounded-operator.pdf.rgb24.ref.png | Bin 0 -> 1308 bytes + test/reference/unbounded-operator.rgb24.ref.png | Bin 1303 -> 1308 bytes + test/reference/unclosed-strokes.pdf.ref.png | Bin 0 -> 1504 bytes + test/reference/unclosed-strokes.ps.ref.png | Bin 0 -> 1404 bytes + test/reference/user-font-proxy.pdf.argb32.ref.png | Bin 16937 -> 4049 bytes + test/reference/user-font-proxy.pdf.ref.png | Bin 18111 -> 0 bytes + test/reference/user-font-proxy.ps.ref.png | Bin 7837 -> 7828 bytes + test/reference/user-font-rescale.pdf.rgb24.ref.png | Bin 0 -> 14592 bytes + test/reference/user-font-rescale.ps.ref.png | Bin 6781 -> 7309 bytes + test/reference/user-font.pdf.ref.png | Bin 6241 -> 2626 bytes + test/reference/user-font.ps.ref.png | Bin 4605 -> 4464 bytes + test/reference/world-map-fill.pdf.argb32.ref.png | Bin 0 -> 57390 bytes + test/reference/world-map-fill.pdf.rgb24.ref.png | Bin 0 -> 57390 bytes + test/reference/world-map-fill.ps.argb32.ref.png | Bin 0 -> 42057 bytes + test/reference/world-map-fill.ps.rgb24.ref.png | Bin 0 -> 42057 bytes + test/reference/world-map-stroke.pdf.argb32.ref.png | Bin 0 -> 51127 bytes + test/reference/world-map-stroke.pdf.rgb24.ref.png | Bin 0 -> 51127 bytes + test/reference/world-map-stroke.ps.argb32.ref.png | Bin 0 -> 54440 bytes + test/reference/world-map-stroke.ps.rgb24.ref.png | Bin 0 -> 54440 bytes + test/reference/world-map.pdf.argb32.ref.png | Bin 0 -> 61486 bytes + test/reference/world-map.pdf.rgb24.ref.png | Bin 0 -> 61486 bytes + test/reference/world-map.ps.argb32.ref.png | Bin 0 -> 71083 bytes + test/reference/world-map.ps.rgb24.ref.png | Bin 0 -> 71083 bytes + test/reference/zero-mask.ref.png | Bin 402 -> 0 bytes + 523 files changed, 5 insertions(+), 5 deletions(-) + +commit 1c5ec6e3806587eff1fbb640c63838ef2768c2cb +Author: Adrian Johnson +AuthorDate: Sat Jun 4 14:43:43 2016 +0930 +Commit: Adrian Johnson +CommitDate: Sun Jun 5 20:43:36 2016 +0930 + + Fix PS record-neg-extents test failure + + src/cairo-analysis-surface.c | 111 +++++---- + src/cairo-debug.c | 8 + + src/cairo-pdf-surface.c | 40 +-- + src/cairo-ps-surface-private.h | 5 +- + src/cairo-ps-surface.c | 538 +++++++++++++++++++++++------------------ + src/cairo-recording-surface.c | 5 +- + src/cairoint.h | 3 + + 7 files changed, 409 insertions(+), 301 deletions(-) + +commit a14d319e4385033d726861dcd448154d393ffc53 +Author: Adrian Johnson +AuthorDate: Sat Jun 4 14:43:43 2016 +0930 +Commit: Adrian Johnson +CommitDate: Sun Jun 5 20:43:36 2016 +0930 + + ps: change from ps coordinates to cairo coordinates + + src/cairo-ps-surface.c | 34 +++++++++++++++++++++------------- + 1 file changed, 21 insertions(+), 13 deletions(-) + +commit 14fa88fd02d81cdab52c882b98a1130148b72820 +Author: Adrian Johnson +AuthorDate: Sat Jun 4 14:43:43 2016 +0930 +Commit: Adrian Johnson +CommitDate: Sun Jun 5 20:43:36 2016 +0930 + + pdf: fix record-replay-extend test failures + + src/cairo-analysis-surface.c | 7 +- + src/cairo-paginated-surface.c | 2 +- + src/cairo-pdf-surface-private.h | 1 + + src/cairo-pdf-surface.c | 91 +++++++++++++-------- + src/cairo-recording-surface-private.h | 3 +- + src/cairo-recording-surface.c | 19 ++--- + src/cairo-surface-wrapper-private.h | 1 + + src/cairo-surface-wrapper.c | 7 +- + .../record-neg-extents-bounded.pdf.rgb24.ref.png | Bin 520 -> 477 bytes + .../record-neg-extents-unbounded.pdf.rgb24.ref.png | Bin 520 -> 477 bytes + .../record-replay-extend-none.pdf.argb32.ref.png | Bin 0 -> 737 bytes + .../record-replay-extend-none.pdf.rgb24.ref.png | Bin 0 -> 472 bytes + .../record-replay-extend-pad.pdf.argb32.ref.png | Bin 0 -> 1111 bytes + ...record-replay-extend-reflect.pdf.argb32.ref.png | Bin 0 -> 8821 bytes + .../record-replay-extend-reflect.pdf.rgb24.ref.png | Bin 0 -> 7783 bytes + .../record-replay-extend-repeat.pdf.argb32.ref.png | Bin 0 -> 8785 bytes + .../record-replay-extend-repeat.pdf.rgb24.ref.png | Bin 0 -> 7620 bytes + 17 files changed, 81 insertions(+), 50 deletions(-) + +commit e7b1cb0c53fe0dc9af4cae280c34d98a1165bcf1 +Author: Adrian Johnson +AuthorDate: Sat Jun 4 14:43:43 2016 +0930 +Commit: Adrian Johnson +CommitDate: Sun Jun 5 20:43:36 2016 +0930 + + image: fix record-replay-extend test failures + + src/cairo-image-source.c | 67 +++++++++++++-------- + src/cairo-pattern.c | 2 + + test/reference/record-replay-extend-pad.ref.png | Bin 0 -> 1150 bytes + .../reference/record-replay-extend-reflect.ref.png | Bin 0 -> 1960 bytes + test/reference/record-replay-extend-repeat.ref.png | Bin 0 -> 1885 bytes + 5 files changed, 45 insertions(+), 24 deletions(-) + +commit 8e4d4de2a3ceb67188c93f8fbf22ed79be927753 +Author: Adrian Johnson +AuthorDate: Sat Jun 4 14:43:43 2016 +0930 +Commit: Adrian Johnson +CommitDate: Sun Jun 5 20:43:36 2016 +0930 + + test: replay record surface with negative extents for each extend mode + + image fails for repeat, reflect, and pad. + + test/Makefile.sources | 1 + + test/record-replay-extend.c | 227 +++++++++++++++++++++++ + test/reference/record-replay-extend-none.ref.png | Bin 0 -> 554 bytes + 3 files changed, 228 insertions(+) + +commit a736fd8699e0ebcdd98392acb8383ea414688caf +Author: Adrian Johnson +AuthorDate: Sat Jun 4 14:43:43 2016 +0930 +Commit: Adrian Johnson +CommitDate: Sun Jun 5 20:43:36 2016 +0930 + + Fix PDF record-neg-extents test failure + + Modify PDF surface to allow surface extents to have negative x, y. + When emitting recording surfaces, set the surface extents to the + recording extents. + + src/cairo-analysis-surface.c | 16 + + src/cairo-debug.c | 11 +- + src/cairo-pattern.c | 31 +- + src/cairo-pdf-surface-private.h | 10 +- + src/cairo-pdf-surface.c | 417 +++++++++++---------- + src/cairoint.h | 5 +- + .../record-neg-extents-bounded.pdf.argb32.ref.png | Bin 0 -> 520 bytes + .../record-neg-extents-bounded.pdf.rgb24.ref.png | Bin 0 -> 520 bytes + ...record-neg-extents-unbounded.pdf.argb32.ref.png | Bin 0 -> 520 bytes + .../record-neg-extents-unbounded.pdf.rgb24.ref.png | Bin 0 -> 520 bytes + 10 files changed, 284 insertions(+), 206 deletions(-) + +commit 1e07ced66d26475e6631df9ffa2a15709104bd8f +Author: Adrian Johnson +AuthorDate: Sat Jun 4 14:43:43 2016 +0930 +Commit: Adrian Johnson +CommitDate: Sun Jun 5 20:43:36 2016 +0930 + + pdf: change from pdf coordinates to cairo coordinates + + When an unbounded recording surface is used multiple times with + different extents for each operation we need the XObject containing + the recording surface to have the same origin for each operation. This + is not possible when the recording surface is converted to PDF + coordinates because each operation has different extents resulting in + a different origin when the Y-axis is flipped (since the flip matrix + depends on the recording surface height which for unbounded surfaces + depends on the extents of the operation that paints the recording + surface). + + Switching to cairo coordinates by emitting a Y-axis flip matrix as the + first object of each page allows the recording surface to be emitted + in cairo coordinates. This results in the same origin for all + operations using the recording surface XObject. + + src/cairo-pdf-operators.c | 3 -- + src/cairo-pdf-surface-private.h | 12 +++++++ + src/cairo-pdf-surface.c | 78 ++++++++++++++++++++++++++++++++--------- + src/cairo-type3-glyph-surface.c | 23 ++++-------- + 4 files changed, 81 insertions(+), 35 deletions(-) + +commit d2dc2e90a71ae4822845ac4bab3871475335a69e +Author: Adrian Johnson +AuthorDate: Sat Jun 4 14:43:43 2016 +0930 +Commit: Adrian Johnson +CommitDate: Sun Jun 5 20:43:36 2016 +0930 + + Fix test failures when recording surface extents has negative x,y + + Fixes record-neg-bounded-extents (image only) and + recording-ink-extents. + + src/cairo-surface-wrapper.c | 6 ------ + test/reference/record-neg-extents-bounded.ref.png | Bin 0 -> 632 bytes + 2 files changed, 6 deletions(-) + +commit 58df191946b7d275c5706dc40e1cf3dffa7cceae +Author: Adrian Johnson +AuthorDate: Sat Jun 4 14:43:43 2016 +0930 +Commit: Adrian Johnson +CommitDate: Sun Jun 5 20:43:36 2016 +0930 + + Add recording-ink-extents test + + bounded_fill fails returning extents origin of (0, 0) instead of (-150, -100) + + test/Makefile.sources | 1 + + test/recording-ink-extents.c | 172 +++++++++++++++++++++++++++++++++++++++++++ + 2 files changed, 173 insertions(+) + +commit 9fff6f0be3ed1a7af474ddfd8e384eb0376093c2 +Author: Adrian Johnson +AuthorDate: Sat Jun 4 14:43:43 2016 +0930 +Commit: Adrian Johnson +CommitDate: Sun Jun 5 20:43:36 2016 +0930 + + test: add record-neg-extents + + Test case for bug 89232 - painting a recording surface to a + pdf/ps surface omits objects on the recording surface with negative + coordinates even though the pattern matrix has transformed the objects + to within the page extents. + + The image surface also fails when the recording surface is bounded. - 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(-) + test/Makefile.sources | 1 + + test/record-neg-extents.c | 217 +++++++++++++++++++++ + .../reference/record-neg-extents-unbounded.ref.png | Bin 0 -> 668 bytes + 3 files changed, 218 insertions(+) -commit 167561f2823767058e2be3a26131b5f820b35c35 -Author: Chris Wilson -AuthorDate: Tue Sep 30 10:22:41 2014 +0100 -Commit: Chris Wilson -CommitDate: Tue Sep 30 13:57:05 2014 +0100 +commit 00a36e46524790deb36048fddd911daa1cbcbe38 +Author: Adrian Johnson +AuthorDate: Sat Apr 16 18:05:41 2016 +0930 +Commit: Adrian Johnson +CommitDate: Sat Apr 16 18:05:41 2016 +0930 - 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. + svg2png: fix deprecated warning - Signed-off-by: Chris Wilson + rsvg_pixbuf_from_file() is deprecated, replaced by + rsvg_handle_new_from_file() + rsvg_handle_render_cairo(). - 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(-) + test/svg2png.c | 39 +++++++++++++++++++++++++++++++++------ + 1 file changed, 33 insertions(+), 6 deletions(-) -commit ff23afd5f26e46e9b3c1fbfa31b2809f4329c4f0 -Author: Chris Wilson -AuthorDate: Tue Sep 30 12:25:56 2014 +0100 -Commit: Chris Wilson -CommitDate: Tue Sep 30 12:25:56 2014 +0100 +commit 11667ec47c69e3aa7b7128ddb39375f3ae4a0814 +Author: Adrian Johnson +AuthorDate: Sat Apr 16 17:42:56 2016 +0930 +Commit: Adrian Johnson +CommitDate: Sat Apr 16 17:42:56 2016 +0930 - 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 + pdf2png: fix deprecated warning - test/coverage.c | 14 +++++++------- - 1 file changed, 7 insertions(+), 7 deletions(-) + test/pdf2png.c | 2 ++ + 1 file changed, 2 insertions(+) -commit 03c3d4b7c159a3004071522bac2461e553fec211 -Author: Chris Wilson -AuthorDate: Tue Sep 30 08:44:43 2014 +0100 -Commit: Chris Wilson -CommitDate: Tue Sep 30 12:01:13 2014 +0100 +commit d2f1ebf579ba12b816eec9317f98eb845fbfeb4f +Author: Guillaume Ayoub +AuthorDate: Thu Jan 14 02:05:53 2016 +0100 +Commit: Adrian Johnson +CommitDate: Tue Apr 12 06:58:28 2016 +0930 - tor: Fix loss of precision from projection onto sample grid + Use surface_transform in replay_and_create_regions - 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. + The surface_transform was already used surface_replay_with_clip, as the + matrix is obviously needed for the clip. But now, because of the + optimization done in commit 09b42c7, it's also needed by + replay_and_create_regions: get_target_extents clips the target surface + for performance issues, and therefore needs the surface_transform matrix + to get the right clipping surface. - References: https://bugs.freedesktop.org/show_bug.cgi?id=84396 - Testcase: coverage-rhombus - Signed-off-by: Chris Wilson + Signed-off-by: Guillaume Ayoub - 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(-) + src/cairo-analysis-surface.c | 6 ++++-- + src/cairo-paginated-surface.c | 2 +- + src/cairo-recording-surface-private.h | 1 + + src/cairo-recording-surface.c | 3 ++- + 4 files changed, 8 insertions(+), 4 deletions(-) -commit 8e1e2a54147df32f0e9261d2b7b031eaf8396f06 -Author: Chris Wilson -AuthorDate: Tue Sep 30 11:47:44 2014 +0100 -Commit: Chris Wilson -CommitDate: Tue Sep 30 11:47:44 2014 +0100 +commit 747cab741cf63f30aa6bc2b787fc13e7e7a2b859 +Author: Adrian Johnson +AuthorDate: Sat Mar 26 22:18:05 2016 +1030 +Commit: Adrian Johnson +CommitDate: Sat Mar 26 22:18:05 2016 +1030 - 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 + Add CAIRO_STATUS_WIN32_GDI_ERROR for GDI errors - 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(-) + src/cairo-device.c | 1 + + src/cairo-error-private.h | 1 + + src/cairo-misc.c | 2 ++ + src/cairo-region.c | 1 + + src/cairo-spans.c | 2 ++ + src/cairo-surface.c | 1 + + src/cairo.c | 3 ++- + src/cairo.h | 2 ++ + src/win32/cairo-win32-surface.c | 6 +----- + util/cairo-gobject/cairo-gobject-enums.c | 1 + + util/cairo-script/cairo-script-private.h | 2 +- + util/cairo-trace/trace.c | 1 + + 12 files changed, 16 insertions(+), 7 deletions(-) -commit 93c21e3fd309781d0f48052097f5670dbe9af820 -Author: Ravi Nanjundappa -AuthorDate: Mon Sep 22 10:19:17 2014 +0530 -Commit: Bryce Harrington -CommitDate: Mon Sep 29 16:08:23 2014 -0700 +commit cdd5c92cedb9abcedd6f261594b1ea7d94d4a4ad +Author: Adrian Johnson +AuthorDate: Sat Mar 26 21:45:33 2016 +1030 +Commit: Adrian Johnson +CommitDate: Sat Mar 26 21:45:59 2016 +1030 - 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 + Add CAIRO_STATUS_FREETYPE_ERROR for errors returned by libfreetype - 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(-) + src/cairo-device.c | 1 + + src/cairo-error-private.h | 1 + + src/cairo-ft-font.c | 5 ++++- + src/cairo-misc.c | 2 ++ + src/cairo-region.c | 1 + + src/cairo-spans.c | 2 ++ + src/cairo-surface.c | 1 + + src/cairo.c | 3 ++- + src/cairo.h | 2 ++ + util/cairo-gobject/cairo-gobject-enums.c | 1 + + util/cairo-script/cairo-script-private.h | 2 ++ + util/cairo-trace/trace.c | 1 + + 12 files changed, 20 insertions(+), 2 deletions(-) -commit 573ddfc3d5c08c37b95a21e0a1b34acecc646053 -Author: Ravi Nanjundappa -AuthorDate: Thu Sep 25 08:38:50 2014 +0530 -Commit: Bryce Harrington -CommitDate: Mon Sep 29 15:59:26 2014 -0700 +commit 8f6790123e05c5c38ba09c541093b747aa12b681 +Author: Adrian Johnson +AuthorDate: Sat Mar 26 19:05:01 2016 +1030 +Commit: Adrian Johnson +CommitDate: Sat Mar 26 19:06:03 2016 +1030 - 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 + Adding missing error status to utils - 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(-) + util/cairo-gobject/cairo-gobject-enums.c | 5 ++++- + util/cairo-script/cairo-script-private.h | 8 ++++++++ + util/cairo-trace/trace.c | 1 + + 3 files changed, 13 insertions(+), 1 deletion(-) -commit 06b9f8fa2d179850cda8a0a103896bc011ce46d6 -Author: Chris Wilson -AuthorDate: Mon Sep 22 12:53:08 2014 +0100 -Commit: Chris Wilson -CommitDate: Mon Sep 29 08:42:17 2014 +0100 +commit c5ee3f11b5fb5a652466bbe407d2dc8e0ef4eb71 +Author: Adrian Johnson +AuthorDate: Sat Mar 26 07:24:26 2016 +1030 +Commit: Adrian Johnson +CommitDate: Sat Mar 26 19:04:44 2016 +1030 - 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 + Add CAIRO_STATUS_PNG_ERROR for errors returned by libpng - 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(-) + src/cairo-device.c | 1 + + src/cairo-error-private.h | 1 + + src/cairo-misc.c | 2 ++ + src/cairo-png.c | 10 +++++++--- + src/cairo-region.c | 1 + + src/cairo-spans.c | 2 ++ + src/cairo-surface.c | 1 + + src/cairo.c | 3 ++- + src/cairo.h | 2 ++ + 9 files changed, 19 insertions(+), 4 deletions(-) -commit 5c03b20732b84370950f0c7e5648da86ef45a571 -Author: Chris Wilson -AuthorDate: Mon Sep 29 08:37:56 2014 +0100 -Commit: Chris Wilson -CommitDate: Mon Sep 29 08:42:17 2014 +0100 +commit 72c9a022ac2f1b9c9afa349e0977dcd89fa56f2d +Author: Adrian Johnson +AuthorDate: Sun Feb 21 09:07:40 2016 +1030 +Commit: Adrian Johnson +CommitDate: Thu Mar 10 19:00:48 2016 +1030 - test/coverage: Exercise invariance under mirror symmetry + scaled-font: don't store pointer in hash value + + src/cairo-scaled-font.c | 7 ++++--- + 1 file changed, 4 insertions(+), 3 deletions(-) + +commit 3538ac3e68f997d95d76865247717c90ae73630d +Author: Wan-Teh Chang +AuthorDate: Tue Mar 1 17:48:55 2016 -0800 +Commit: Uli Schlachter +CommitDate: Sat Mar 5 14:35:17 2016 +0100 + + Fix data race in freed_pool - 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. + This adds _cairo_atomic_int_get_relaxed and _cairo_atomic_int_set_relaxed which + are meant to have a behaviour of relaxed read/writes in C11's memory model. This + patch also uses these new function to fix a data race with freed_pool_t's |top| + data member. - References: https://bugs.freedesktop.org/show_bug.cgi?id=84396 - Signed-off-by: Chris Wilson + Fixes: https://bugs.freedesktop.org/show_bug.cgi?id=90318 + Signed-off-by: Wan-Teh Chang + Signed-off-by: Uli Schlachter - test/coverage.c | 55 ++++++++++++++++++++++++++++++++ - test/reference/coverage-rhombus.ref.png | Bin 0 -> 7053 bytes - 2 files changed, 55 insertions(+) + src/cairo-atomic-private.h | 36 ++++++++++++++++++++++++++++++++++++ + src/cairo-atomic.c | 14 ++++++++++++++ + src/cairo-freed-pool-private.h | 10 +++++----- + src/cairo-freed-pool.c | 10 +++++----- + 4 files changed, 60 insertions(+), 10 deletions(-) -commit fbb0a260b707cb5f02a14cc368c6f2f0d63564c3 -Author: Marc-André Lureau -AuthorDate: Tue Apr 2 21:00:20 2013 +0200 +commit af42fc724e794aeb3b26eb0e8df453a5abd5c640 +Author: Enrico Weigelt, metux IT consult +AuthorDate: Tue Dec 29 10:16:54 2015 +0100 Commit: Bryce Harrington -CommitDate: Wed Sep 24 12:20:53 2014 -0700 +CommitDate: Fri Jan 15 12:29:06 2016 -0800 - build-sys: do not try to build util/sphinx on Windows + drm: fix importing of libdrm - glib and dlfcn exist on windows, but sphinx code uses a lot of - Unix-only API + We need to link against libdrm to use its functions. - 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 + Signed-off-by: Enrico Weigelt, metux IT consult + Reviewed-by: Bryce Harrington configure.ac | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) -commit 42320793aa1b3e5a0b74e94a0aadf5d2b9ae5ce2 -Author: Bryce Harrington -AuthorDate: Wed Sep 24 11:37:58 2014 -0700 +commit 968f8c70aac8cde9bc622644dcab9a6548734d59 +Author: Enrico Weigelt, metux IT consult +AuthorDate: Tue Dec 29 10:16:45 2015 +0100 Commit: Bryce Harrington -CommitDate: Wed Sep 24 12:12:47 2014 -0700 +CommitDate: Wed Jan 13 17:14:51 2016 -0800 - sphinx: Add ickle's explanation of what sphinx does + core: some in-code documentation + + Signed-off-by: Enrico Weigelt, metux IT consult - util/cairo-sphinx/sphinx.c | 8 ++++++++ - 1 file changed, 8 insertions(+) + src/cairo-boxes.c | 26 ++++++++++++++++++++++++++ + 1 file changed, 26 insertions(+) -commit 80359e73d821516f411b25b977b442869fa5d0ad -Author: Chris Wilson -AuthorDate: Tue Sep 23 12:58:27 2014 +0100 -Commit: Chris Wilson -CommitDate: Wed Sep 24 12:35:47 2014 +0100 +commit 047ba66519b18b7fe0167108307d741cdc816935 +Author: Enrico Weigelt, metux IT consult +AuthorDate: Tue Dec 29 10:16:48 2015 +0100 +Commit: Bryce Harrington +CommitDate: Wed Jan 13 17:09:28 2016 -0800 - test: Exercise stroking bugs with xlib/trapezoids + core: dropped unnecessary local variable in _cairo_composite_rectangles_intersect() - Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=84115 - Signed-off-by: Chris Wilson + Signed-off-by: Enrico Weigelt, metux IT consult + Reviewed-by: Bryce Harrington - 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(+) + src/cairo-composite-rectangles.c | 6 ++---- + 1 file changed, 2 insertions(+), 4 deletions(-) -commit 06a737b74d3bc925a2c32254f497e07b6d1af5ca -Author: Chris Wilson -AuthorDate: Wed Sep 24 09:57:31 2014 +0100 -Commit: Chris Wilson -CommitDate: Wed Sep 24 12:35:47 2014 +0100 +commit b371b0157f8067b93c95cb535922705af5c0cd25 +Author: Enrico Weigelt, metux IT consult +AuthorDate: Tue Dec 29 10:16:40 2015 +0100 +Commit: Bryce Harrington +CommitDate: Wed Jan 13 17:07:53 2016 -0800 - arc: Insert the initial point on the arc + core: reintroduce bot-scan-converter functions - 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. + These functions have been accidentially removed by commit: + 494cfd7eb9d994a5e2024e299986e66a3ef9a562. - Signed-off-by: Chris Wilson + They're still needed by the DRM backend. + (will be used by subsequent patches) + + Signed-off-by: Enrico Weigelt, metux IT consult + Reviewed-by: Bryce Harrington + Cc: Uli Schlachter - src/cairo-arc.c | 4 ++++ + src/cairo-botor-scan-converter.c | 36 ++++++++++++++++++++++++++++++++++++ + src/cairo-spans-private.h | 4 ++++ + 2 files changed, 40 insertions(+) + +commit adb896e8c5f4e1fb22db32c8bfb5f0a9625c4869 +Author: Enrico Weigelt, metux IT consult +AuthorDate: Fri Dec 18 14:28:45 2015 +0100 +Commit: Bryce Harrington +CommitDate: Tue Dec 22 14:22:36 2015 -0800 + + core: updated .gitignore + + Signed-off-by: Enrico Weigelt, metux IT consult + + .gitignore | 4 ++++ 1 file changed, 4 insertions(+) -commit bdd0721dcddd6c4528c9518a2152cd154f746202 +commit ad6271ccbcfdfbccf53451323d278435ffc5cdce Author: Bryce Harrington -AuthorDate: Tue Sep 23 16:41:36 2014 -0700 +AuthorDate: Tue Dec 22 13:23:55 2015 -0800 Commit: Bryce Harrington -CommitDate: Tue Sep 23 16:41:36 2014 -0700 +CommitDate: Tue Dec 22 13:23:55 2015 -0800 - NEWS: Revise downscaling feature description + RELEASING: Fix documentation of proper ChangeLog path - Updated feature description using text from Bill. Also updated bugfix - list to include recent fixes. + The releases page includes more than just cairo, so need to be explicit + in naming our uploaded Changelog file. - NEWS | 48 +++++++++++++++++++++++++++--------------------- - 1 file changed, 27 insertions(+), 21 deletions(-) + RELEASING | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) -commit 7cfebce15228c88ee122edb8ba575f9a609e36f4 +commit db8a7f1697c49ae4942d2aa49eed52dd73dd9c7a Author: Bryce Harrington -AuthorDate: Tue Sep 23 12:40:25 2014 -0700 +AuthorDate: Fri Dec 11 00:45:02 2015 -0800 Commit: Bryce Harrington -CommitDate: Tue Sep 23 12:40:25 2014 -0700 +CommitDate: Fri Dec 11 00:45:02 2015 -0800 - 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 + 1.15.2 release - build/aclocal.float.m4 | 9 +++++---- - 1 file changed, 5 insertions(+), 4 deletions(-) + NEWS | 95 +++++++++++++++++++++++++++++++++++++++++++++++++++++++-- + cairo-version.h | 2 +- + 2 files changed, 94 insertions(+), 3 deletions(-) -commit 9a19ef185884da1e7d5344b301f48aa2ba0f88b6 -Author: Adrian Johnson -AuthorDate: Mon Mar 24 19:08:10 2014 +1030 +commit 6cd5a188e3db142089020e3c50ef280195655fec +Author: Bryce Harrington +AuthorDate: Thu Dec 10 21:00:29 2015 -0800 Commit: Bryce Harrington -CommitDate: Tue Sep 23 11:40:03 2014 -0700 +CommitDate: Thu Dec 10 21:05:25 2015 -0800 - 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] + RELEASING: Clarify snapshot numbering rules - 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(-) + RELEASING | 27 +++++++++++++++------------ + 1 file changed, 15 insertions(+), 12 deletions(-) -commit a02e29a12d82f177bdf99ed8cfd0c3b3b78c44da +commit 2dc0149ddea214c925f4a38abc65169242e72432 Author: Bryce Harrington -AuthorDate: Mon Sep 22 15:48:49 2014 -0700 +AuthorDate: Wed Dec 9 16:25:20 2015 -0800 Commit: Bryce Harrington -CommitDate: Mon Sep 22 15:48:49 2014 -0700 +CommitDate: Wed Dec 9 16:25:20 2015 -0800 - Don't return NULL to clients when getting device - - Return an error device instead + RELEASING: Drop inclusion of boilerplate in news messages - Fixes: https://bugs.freedesktop.org/show_bug.cgi?id=58061 + Looking back at past release announcements, it's been a long time since + we included the About Cairo bits. This info is easily located on the + website and elsewhere, no need for the redundant data in the + announcement too. - src/cairo-cogl-surface.c | 2 +- - src/drm/cairo-drm.c | 9 ++++++--- - 2 files changed, 7 insertions(+), 4 deletions(-) + RELEASING | 6 +----- + 1 file changed, 1 insertion(+), 5 deletions(-) -commit 150c1e7044c57443d458e12bfc427d3a019cb60b +commit 4ab379c744b2c0d5256692307770846eccd41dce Author: Bryce Harrington -AuthorDate: Mon Sep 22 15:41:24 2014 -0700 +AuthorDate: Wed Dec 9 14:45:55 2015 -0800 Commit: Bryce Harrington -CommitDate: Mon Sep 22 15:41:24 2014 -0700 +CommitDate: Wed Dec 9 14:45:55 2015 -0800 - Don't return NULL to clients when getting image + RELEASING: Make X.Y.Z versions less ambiguous - Return an error surface instead. - - Fixes: https://bugs.freedesktop.org/show_bug.cgi?id=58061 + The document uses X.Y.Z to sometimes mean the previous release version, + and in other places to mean the upcoming next release version. Identify + these more explicitly. - 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(-) + RELEASING | 71 ++++++++++++++++++++++++++++++++++++++++++++------------------- + 1 file changed, 50 insertions(+), 21 deletions(-) -commit 40e757679634ba6261b9df231ba5c706625e215d +commit c7822e6107a207057ac4a6a4c2f2265c31c1a2b9 Author: Bryce Harrington -AuthorDate: Mon Sep 22 15:06:54 2014 -0700 +AuthorDate: Wed Dec 9 14:44:26 2015 -0800 Commit: Bryce Harrington -CommitDate: Mon Sep 22 15:06:54 2014 -0700 +CommitDate: Wed Dec 9 14:44:26 2015 -0800 - NEWS: Note that downscaling changes only affect image + fallback + RELEASING: Fix misspelling in last commit - NEWS | 4 +++- - 1 file changed, 3 insertions(+), 1 deletion(-) + RELEASING | 8 ++++---- + 1 file changed, 4 insertions(+), 4 deletions(-) -commit 402b456a3229f6c7f1550e66bbd8125c253a4ff1 +commit 817ae4540af5b004b3b69975388cdcf8cdac577d Author: Bryce Harrington -AuthorDate: Thu Jul 31 17:58:15 2014 -0700 +AuthorDate: Wed Dec 9 12:32:20 2015 -0800 Commit: Bryce Harrington -CommitDate: Fri Sep 19 17:23:50 2014 -0700 +CommitDate: Wed Dec 9 12:32:20 2015 -0800 - 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 + RELEASING: Whitespace cleanup. Fix inconsistent tabbing. - src/cairo-egl-context.c | 6 ++++++ - src/cairo-gl-private.h | 2 +- - 2 files changed, 7 insertions(+), 1 deletion(-) + RELEASING | 64 +++++++++++++++++++++++++++++++++------------------------------ + 1 file changed, 34 insertions(+), 30 deletions(-) -commit aa820c13d78a4fc1c87da0da9012ee532aa2d50a +commit 0986ae4dee2a903dc16bba289477a38dff36a87b Author: Bryce Harrington -AuthorDate: Thu Jul 31 17:43:03 2014 -0700 +AuthorDate: Wed Dec 9 11:30:34 2015 -0800 Commit: Bryce Harrington -CommitDate: Fri Sep 19 17:23:50 2014 -0700 +CommitDate: Wed Dec 9 11:30:34 2015 -0800 - gl: Track the VBO size as a property of the ctx + test: Fix use after frees - Change suggested by Chris Wilson. This will enable setting different - vbo sizes for GL vs. EGL. + Fixes: https://bugs.freedesktop.org/show_bug.cgi?id=93152 + + test/pdf-mime-data.c | 2 +- + test/png.c | 3 ++- + 2 files changed, 3 insertions(+), 2 deletions(-) + +commit ad99e1b9d80a9dc8d185f38347d64e1db762523c +Author: Patrick Fritzsch +AuthorDate: Fri Nov 13 21:16:22 2015 +1030 +Commit: Adrian Johnson +CommitDate: Fri Nov 13 21:27:34 2015 +1030 + + win32: check if GetTextMetrics failed - Signed-off-by: Bryce Harrington + http://lists.cairographics.org/archives/cairo/2015-November/026544.html - 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(-) + src/win32/cairo-win32-font.c | 10 ++++++++-- + 1 file changed, 8 insertions(+), 2 deletions(-) -commit 036f47c34579259fa86d0193797b6f83fe79bbeb -Author: Bryce Harrington -AuthorDate: Mon Aug 19 19:38:26 2013 -0700 -Commit: Bryce Harrington -CommitDate: Fri Sep 19 17:23:50 2014 -0700 +commit 98d01cd119eaa7d50cf0ec6c6cc32ee170397ad5 +Author: Marc-André Lureau +AuthorDate: Fri Nov 6 18:13:05 2015 +0100 +Commit: Uli Schlachter +CommitDate: Fri Nov 6 21:00:48 2015 +0100 - cairo-gl: Make VBO size run-time settable + xlib: fix mixing xcb & xlib calls - 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. + NextRequest is a macro that doesn't mix well with xcb, since + dpy->request is not updated. Instead use XNextRequest() that was fixed + to do the right thing with xcb in libX11 commit: + http://cgit.freedesktop.org/xorg/lib/libX11/commit/?id=7f8f9a36ef901f31279c385caf960a22daeb33fe - This patch doesn't change the VBO size, but does permit it to be - altered via an environment variable, to facilitate testing. + This may solve application X errors when a shmdt() is called by cairo + before the Attach request is processed. - Signed-off-by: Bryce Harrington + Signed-off-by: Marc-André Lureau + Signed-off-by: Uli Schlachter - 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(-) + src/cairo-xlib-surface-shm.c | 8 ++++---- + 1 file changed, 4 insertions(+), 4 deletions(-) -commit 8479b6086710e11c81c0059ffc5fa6a71d14256c -Author: Ravi Nanjundappa -AuthorDate: Tue Sep 16 10:18:02 2014 +0530 -Commit: Bryce Harrington -CommitDate: Fri Sep 19 15:46:14 2014 -0700 +commit bf41cc397f460978eaf0aa35bc7341cefc9817b5 +Author: Uli Schlachter +AuthorDate: Fri Nov 6 20:50:47 2015 +0100 +Commit: Uli Schlachter +CommitDate: Fri Nov 6 20:50:47 2015 +0100 - test: Add test oversized egl surfaces + Fix cairo-xlib-xcb compilation - This test exercises error scenario when creating over sized egl surface - that is larger than maximum framebuffer or texture dimensions of the - context + This is broken since: - Signed-off-by: Ravi Nanjundappa + commit b1192beac7c5b56a8ff356d20af5ebfb65404109 + Author: Adrian Johnson + Date: Mon Sep 21 21:35:05 2015 +0930 + + Don't cull very thin lines on vector surfaces + + On vector surfaces, use a minimum line width when calculating extents. + + Bug 77298 + + Signed-off-by: Uli Schlachter - test/Makefile.am | 4 ++ - test/Makefile.sources | 3 ++ - test/egl-oversized-surface.c | 117 +++++++++++++++++++++++++++++++++++++++++++ - 3 files changed, 124 insertions(+) + src/cairo-xlib-xcb-surface.c | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) -commit 3d68352e3c00b836e50c2eacb0b80ae5a0e15a65 +commit fc689d7d351cca1f1b11cef9137fa2c6eec0ee25 Author: Bryce Harrington -AuthorDate: Thu Sep 18 13:18:48 2014 -0700 +AuthorDate: Thu Oct 29 18:21:34 2015 -0700 Commit: Bryce Harrington -CommitDate: Thu Sep 18 13:18:48 2014 -0700 +CommitDate: Thu Oct 29 18:21:34 2015 -0700 - NEWS: Drop unfinished thought + RELEASING: Doc handling devel versions for micro vs minor releases - NEWS | 1 - - 1 file changed, 1 deletion(-) + RELEASING | 10 ++++++++-- + 1 file changed, 8 insertions(+), 2 deletions(-) -commit 54670ec13d64efa94f552b5473c1f15a9db1cecd +commit bc4271a1392e5462c875a051c8720d8dd461d4fe Author: Bryce Harrington -AuthorDate: Wed Sep 17 20:27:13 2014 -0700 +AuthorDate: Thu Oct 29 18:17:39 2015 -0700 Commit: Bryce Harrington -CommitDate: Wed Sep 17 20:33:22 2014 -0700 +CommitDate: Thu Oct 29 18:17:39 2015 -0700 - AUTHORS: Add Ravi, myself, and a couple other frequent contributors + Bump version for new development tree, 1.15.1 - AUTHORS | 6 +++++- - 1 file changed, 5 insertions(+), 1 deletion(-) + cairo-version.h | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) -commit 33a54e7c204c4bb7fb0f1f2844608a78ea317db4 +commit e03ab054c129307596b9ec090a0e32a64b0cda71 Author: Bryce Harrington -AuthorDate: Wed Sep 17 20:25:37 2014 -0700 +AuthorDate: Thu Oct 29 11:57:32 2015 -0700 Commit: Bryce Harrington -CommitDate: Wed Sep 17 20:25:37 2014 -0700 +CommitDate: Thu Oct 29 11:57:32 2015 -0700 - README: Update required dependencies - - Also adds mention of the skia backend. + RELEASING: Doc what's required to properly undo a publish - README | 30 ++++++++++++++++++++---------- - 1 file changed, 20 insertions(+), 10 deletions(-) + RELEASING | 6 ++++++ + 1 file changed, 6 insertions(+) -commit d1fa4d44fe6b70eba6d5f620c5c4a6c122cc7fc8 +commit 62ceb0abd970dd23dd03d2a279f62a1e2c63aa2d Author: Bryce Harrington -AuthorDate: Wed Sep 17 20:04:01 2014 -0700 +AuthorDate: Wed Oct 28 22:15:54 2015 -0700 Commit: Bryce Harrington -CommitDate: Wed Sep 17 20:04:01 2014 -0700 +CommitDate: Wed Oct 28 22:23:53 2015 -0700 - NEWS: Bring up to date with recent bug fixes. + RELEASING: Note how to upload the changelog - NEWS | 69 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++--- - 1 file changed, 66 insertions(+), 3 deletions(-) + RELEASING | 5 ++++- + 1 file changed, 4 insertions(+), 1 deletion(-) -commit e0c0a673ee757615bd3d22f46767535e9f53d6f5 +commit 247ef2bd63e755963f7930ac06c79b95aed2adb4 Author: Bryce Harrington -AuthorDate: Wed Sep 17 17:14:01 2014 -0700 +AuthorDate: Tue Oct 27 14:27:20 2015 -0700 Commit: Bryce Harrington -CommitDate: Wed Sep 17 17:30:04 2014 -0700 +CommitDate: Wed Oct 28 22:22:31 2015 -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 + NEWS: Update for 1.14.4 release - src/cairo-xcb-screen.c | 8 +++++++- - 1 file changed, 7 insertions(+), 1 deletion(-) + NEWS | 58 +++++++++++++++++----------------------------------------- + 1 file changed, 17 insertions(+), 41 deletions(-) -commit 0aa43ed886c0f8468a21a470f2f024bd4d8a4513 -Author: Adrian Johnson -AuthorDate: Sun Sep 14 22:02:12 2014 +0930 -Commit: Adrian Johnson -CommitDate: Sun Sep 14 22:02:12 2014 +0930 +commit 3fd993a2b16ab75fa8d7afbd1da577c89f020463 +Author: Bryce Harrington +AuthorDate: Tue Oct 27 13:53:55 2015 -0700 +Commit: Bryce Harrington +CommitDate: Tue Oct 27 13:53:55 2015 -0700 - win32 printing: fix image scale when GDI scale is not identity + WIP news and release - src/win32/cairo-win32-printing-surface.c | 1 + - 1 file changed, 1 insertion(+) + NEWS | 16 ++++++++++++---- + RELEASING | 13 ++++++++----- + 2 files changed, 20 insertions(+), 9 deletions(-) -commit e691d242d592a8556e25659fb091a2031abee4c9 -Author: Lukáš Lalinský -AuthorDate: Wed Sep 3 22:53:55 2014 +0200 -Commit: Uli Schlachter -CommitDate: Fri Sep 12 18:19:44 2014 +0200 +commit d7371acfe5f54bc14c25c725448fb6401c526f6a +Author: Bryce Harrington +AuthorDate: Tue Oct 27 11:53:14 2015 -0700 +Commit: Bryce Harrington +CommitDate: Tue Oct 27 11:53:14 2015 -0700 - 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 + 1.14.4 release + + cairo-version.h | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) - 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ß -AuthorDate: Fri Sep 5 17:03:26 2014 +0200 +commit 04a40d2ff34a9443bb2f71b57a523878fa9f4d11 +Author: Bryce Harrington +AuthorDate: Tue Oct 27 11:10:23 2015 -0700 Commit: Bryce Harrington -CommitDate: Thu Sep 11 13:00:13 2014 -0700 +CommitDate: Tue Oct 27 11:10:23 2015 -0700 - made paths to pixman, libpng and zlib configurable by commandline for win32 builds - - Reviewed-by: Bryce Harrington + NEWS: Update to cover changes to date - build/Makefile.win32.common | 23 +++++++++++++++++------ - 1 file changed, 17 insertions(+), 6 deletions(-) + NEWS | 60 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ + 1 file changed, 60 insertions(+) -commit 3b9d7e583f376413df655f778a3ef04537e8a5b6 -Author: Ravi Nanjundappa -AuthorDate: Fri Sep 5 12:15:02 2014 +0530 -Commit: Bryce Harrington -CommitDate: Thu Sep 11 12:53:05 2014 -0700 +commit 481e5986f982238c5603ae3b2feea74aaa964adb +Author: Adrian Johnson +AuthorDate: Sat Oct 17 22:46:23 2015 +1030 +Commit: Adrian Johnson +CommitDate: Sat Oct 17 22:46:23 2015 +1030 - 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 + Compile fix - build/configure.ac.warnings | 13 +++++++------ - src/cairo-qt-surface.cpp | 9 ++++++--- - 2 files changed, 13 insertions(+), 9 deletions(-) + src/cairo-gl-msaa-compositor.c | 1 + + 1 file changed, 1 insertion(+) -commit 29a8b4e970379ca04a7db8e63c71bb34c0e349ce -Author: Maks Naumov -AuthorDate: Wed Aug 20 09:52:45 2014 -0700 -Commit: Bryce Harrington -CommitDate: Thu Aug 28 13:16:47 2014 -0700 +commit 2d026bd2cf4d8cb1973f56b30a7ba8609e3ebb5f +Author: Adrian Johnson +AuthorDate: Sat Oct 17 22:39:09 2015 +1030 +Commit: Adrian Johnson +CommitDate: Sat Oct 17 22:42:37 2015 +1030 - Fix _cairo_mesh_pattern_equal() when cairo_mesh_patch_t structs are different - - Signed-off-by: Maks Naumov - Reviewed-by: Bryce Harrington + win32-print: support subsurface recording patterns - src/cairo-pattern.c | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) + src/win32/cairo-win32-display-surface.c | 6 ++++-- + src/win32/cairo-win32-printing-surface.c | 36 +++++++++++++++++++++++++------- + 2 files changed, 32 insertions(+), 10 deletions(-) -commit e6bf829d8953fac82ccc80618c6cae41346e483f -Author: Maks Naumov -AuthorDate: Wed Aug 20 09:38:37 2014 -0700 -Commit: Bryce Harrington -CommitDate: Wed Aug 27 21:14:26 2014 -0700 +commit b7d864e8c18e4407e69ff897cae7a42eb09b03c9 +Author: Adrian Johnson +AuthorDate: Sat Oct 17 22:38:50 2015 +1030 +Commit: Adrian Johnson +CommitDate: Sat Oct 17 22:38:50 2015 +1030 - Fix font x_scale value in _compute_transform() - - Signed-off-by: Maks Naumov - Reviewed-by: Bryce Harrington + Compile fix - src/cairo-ft-font.c | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) + src/cairo-gl-source.c | 6 ++++-- + 1 file changed, 4 insertions(+), 2 deletions(-) -commit c6ae5b197623867e2baca0bf4fe2907ea55536f5 -Author: Ravi Nanjundappa -AuthorDate: Mon Aug 25 09:28:40 2014 +0530 -Commit: Bryce Harrington -CommitDate: Wed Aug 27 20:39:57 2014 -0700 +commit aa1323f04cd2c71317e9173fbe26fe7d0ba34908 +Author: Adrian Johnson +AuthorDate: Sat Oct 17 22:02:11 2015 +1030 +Commit: Adrian Johnson +CommitDate: Sat Oct 17 22:02:11 2015 +1030 - 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 + Fix some surfaces missed in b1192bea - test/pdf-mime-data.c | 25 ++++++++++++++----------- - 1 file changed, 14 insertions(+), 11 deletions(-) + src/cairo-cogl-surface.c | 3 ++- + src/cairo-directfb-surface.c | 3 ++- + src/cairo-gl-surface.c | 3 ++- + src/cairo-os2-surface.c | 3 ++- + src/cairo-quartz-image-surface.c | 3 ++- + src/cairo-quartz-surface.c | 3 ++- + src/cairo-tee-surface.c | 3 ++- + src/cairo-vg-surface.c | 3 ++- + src/cairo-xml-surface.c | 3 ++- + src/test-compositor-surface.c | 3 ++- + src/test-null-compositor-surface.c | 3 ++- + src/test-paginated-surface.c | 3 ++- + 12 files changed, 24 insertions(+), 12 deletions(-) -commit 52c4f0f2dafcc6e087a9c3c6d00c582fc272c2c2 -Author: Ravi Nanjundappa -AuthorDate: Thu Aug 21 18:18:34 2014 +0530 -Commit: Bryce Harrington -CommitDate: Wed Aug 27 20:39:49 2014 -0700 +commit 30eb1b0e9778a96c2eb984f243dec5e3c8859e05 +Author: Adrian Johnson +AuthorDate: Mon Sep 21 21:35:05 2015 +0930 +Commit: Adrian Johnson +CommitDate: Sat Oct 17 18:39:19 2015 +1030 - 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. + Add test case for thin lines - Signed-off-by: Ravi Nanjundappa - Reviewed-by: Chris Wilson + Bug 77298 - src/skia/cairo-skia-surface.cpp | 4 +++- - 1 file changed, 3 insertions(+), 1 deletion(-) + test/Makefile.sources | 1 + + test/reference/thin-lines.pdf.ref.png | Bin 0 -> 371 bytes + test/reference/thin-lines.ps.argb32.ref.png | Bin 0 -> 332 bytes + test/reference/thin-lines.ps.rgb24.ref.png | Bin 0 -> 264 bytes + test/reference/thin-lines.ref.png | Bin 0 -> 122 bytes + test/thin-lines.c | 95 ++++++++++++++++++++++++++++ + 6 files changed, 96 insertions(+) -commit a5f51588afd9d5629b03297eb29ff46350b6ba50 -Author: Chris Wilson -AuthorDate: Mon Aug 25 08:55:24 2014 +0100 -Commit: Chris Wilson -CommitDate: Mon Aug 25 08:55:24 2014 +0100 +commit b1192beac7c5b56a8ff356d20af5ebfb65404109 +Author: Adrian Johnson +AuthorDate: Mon Sep 21 21:35:05 2015 +0930 +Commit: Adrian Johnson +CommitDate: Sat Oct 17 18:39:18 2015 +1030 - traps,xcb: Set the box count after filtering + Don't cull very thin lines on vector surfaces - 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. + On vector surfaces, use a minimum line width when calculating extents. - Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=81699 - Signed-off-by: Chris Wilson + Bug 77298 - src/cairo-traps-compositor.c | 4 ++-- - src/cairo-xcb-surface-render.c | 5 +++-- - 2 files changed, 5 insertions(+), 4 deletions(-) + src/cairo-analysis-surface.c | 8 +++++--- + src/cairo-composite-rectangles.c | 2 +- + src/cairo-gstate.c | 1 + + src/cairo-image-source.c | 5 +++-- + src/cairo-image-surface.c | 3 ++- + src/cairo-paginated-surface.c | 3 ++- + src/cairo-path-bounds.c | 23 +++++++++++++++++++++++ + src/cairo-pdf-surface.c | 3 ++- + src/cairo-ps-surface.c | 3 ++- + src/cairo-recording-surface.c | 8 +++++--- + src/cairo-script-surface.c | 6 ++++-- + src/cairo-surface-observer.c | 3 ++- + src/cairo-surface-private.h | 1 + + src/cairo-surface-snapshot.c | 3 ++- + src/cairo-surface-subsurface.c | 6 ++++-- + src/cairo-surface.c | 7 +++++-- + src/cairo-svg-surface.c | 3 ++- + src/cairo-type3-glyph-surface.c | 3 ++- + src/cairo-xcb-surface-core.c | 6 ++++-- + src/cairo-xcb-surface-render.c | 3 ++- + src/cairo-xcb-surface.c | 3 ++- + src/cairo-xlib-source.c | 9 ++++++--- + src/cairo-xlib-surface-shm.c | 3 ++- + src/cairo-xlib-surface.c | 3 ++- + src/cairoint.h | 4 +++- + src/win32/cairo-win32-printing-surface.c | 3 ++- + 26 files changed, 91 insertions(+), 34 deletions(-) -commit 13a09526d2120c244471e03b6ae979016ef88e83 -Author: Chris Wilson -AuthorDate: Sat Aug 23 14:16:55 2014 +0100 -Commit: Chris Wilson -CommitDate: Sat Aug 23 14:20:43 2014 +0100 +commit 6656cafebfdac3365e8f903eb408043507a5e551 +Author: Adrian Johnson +AuthorDate: Sat Oct 17 18:33:01 2015 +1030 +Commit: Adrian Johnson +CommitDate: Sat Oct 17 18:33:36 2015 +1030 - 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 + win32-print: support raster_source patterns - src/cairo-traps-compositor.c | 28 +++++++++++++++++----------- - src/cairo-xcb-surface-render.c | 29 ++++++++++++++++++----------- - 2 files changed, 35 insertions(+), 22 deletions(-) + src/win32/cairo-win32-printing-surface.c | 463 ++++++++++++++++++++++++------- + 1 file changed, 355 insertions(+), 108 deletions(-) -commit 545444ec1f79eab268647e9859efc9c8d1a10391 -Author: Uli Schlachter -AuthorDate: Sat Aug 23 14:38:36 2014 +0200 -Commit: Uli Schlachter -CommitDate: Sat Aug 23 14:38:36 2014 +0200 +commit 9fcb42f7fe530da40d96dbc56ea7a8423fa3505a +Author: Adrian Johnson +AuthorDate: Sat Oct 17 18:32:59 2015 +1030 +Commit: Adrian Johnson +CommitDate: Sat Oct 17 18:32:59 2015 +1030 - xcb: Correctly check for image surface for inplace upload - - Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=82987 - Signed-off-by: Uli Schlachter + win32-print: fix warnings - src/cairo-xcb-surface-render.c | 3 ++- - 1 file changed, 2 insertions(+), 1 deletion(-) + src/win32/cairo-win32-printing-surface.c | 12 ++++++------ + 1 file changed, 6 insertions(+), 6 deletions(-) -commit 183ac1889f369743a86a8a2ff6b61486acda614e -Author: Maks Naumov -AuthorDate: Tue Aug 19 14:59:14 2014 -0700 -Commit: Bryce Harrington -CommitDate: Thu Aug 21 12:56:42 2014 -0700 +commit 2c45fdfc15a81eae6196f92c9768f3d895bd0819 +Author: Adrian Johnson +AuthorDate: Sat Oct 17 18:32:57 2015 +1030 +Commit: Adrian Johnson +CommitDate: Sat Oct 17 18:32:57 2015 +1030 - Fix width and height args for _cairo_xcb_connection_copy_area() + win32-print: Fix the page extents - Found via static analysis. + As the page size can be changed between pages, set the extents in + _start_page. The extents are invalidated in _show_page since the + page size on the DC may be changed after this call. The only thing that + uses the extents between _show_page and _start_page (and before the first + _start_page) is the creation of the recording surface in the paginated + surface. In this case, when the paginated surface can't get the extents, + it will create an unbounded recording surface. - Signed-off-by: Maks Naumov - Reviewed-by: Uli Schlachter + The extents x,y is always set to 0 to prevent the replay from translating + the page. - src/cairo-xcb-surface-core.c | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) + src/win32/cairo-win32-printing-surface.c | 48 ++++++++++++++++++++++++++------ + src/win32/cairo-win32-private.h | 1 + + 2 files changed, 41 insertions(+), 8 deletions(-) -commit eab218d1e3b0f2a3c0ab33d3173c42cc57e9bf8c -Author: Ravi Nanjundappa -AuthorDate: Wed Aug 20 11:45:19 2014 +0530 -Commit: Bryce Harrington -CommitDate: Thu Aug 21 12:34:10 2014 -0700 +commit 094f0e0fa0153f290061635eed51e8d1dbe2cf4a +Author: Adrian Johnson +AuthorDate: Sat Oct 17 16:50:50 2015 +1030 +Commit: Adrian Johnson +CommitDate: Sat Oct 17 18:16:33 2015 +1030 - 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 + pdf: fix subsurface recordings - configure.ac | 4 ++++ - 1 file changed, 4 insertions(+) + src/cairo-pdf-surface.c | 33 +++++++++++++++++++++------------ + 1 file changed, 21 insertions(+), 12 deletions(-) -commit 932548ef25864958ef966ffe83e7c945c3ff3cd4 -Author: Rodrigo Rivas Costa -AuthorDate: Tue Aug 19 00:09:50 2014 +0930 +commit 2215b4e0c0f90a90f659aa0cfc28fc02dfce3339 +Author: Adrian Johnson +AuthorDate: Sat Oct 17 16:25:16 2015 +1030 Commit: Adrian Johnson -CommitDate: Tue Aug 19 00:09:50 2014 +0930 +CommitDate: Sat Oct 17 18:16:32 2015 +1030 - win32 print: fix cache_frozen assertions - - Bug 81709 + ps: fix subsurface recordings - src/win32/cairo-win32-printing-surface.c | 8 +++++++- - 1 file changed, 7 insertions(+), 1 deletion(-) + src/cairo-ps-surface.c | 35 +++++++++++++++++------------------ + src/cairo-surface-wrapper.c | 6 +++--- + 2 files changed, 20 insertions(+), 21 deletions(-) -commit 7736d08e22ffd7ab9968617164c7e027125b7755 -Author: Ravi Nanjundappa -AuthorDate: Wed Aug 6 09:49:59 2014 +0530 -Commit: Bryce Harrington -CommitDate: Thu Aug 14 16:10:14 2014 -0700 +commit 6952e03262717751716f48114e6a921b62a0ecee +Author: Adrian Johnson +AuthorDate: Sat Oct 17 13:15:56 2015 +1030 +Commit: Adrian Johnson +CommitDate: Sat Oct 17 18:16:22 2015 +1030 - 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 + ps: fix raster source patterns - test/README | 17 ++++++++++++----- - 1 file changed, 12 insertions(+), 5 deletions(-) + src/cairo-ps-surface.c | 1 + + test/reference/raster-source.ps.ref.png | Bin 1894 -> 1908 bytes + 2 files changed, 1 insertion(+) -commit c61aeddc44c8619a271151b2a2f6bf9f8ff2a18b -Author: Ravi Nanjundappa -AuthorDate: Tue Aug 5 14:31:37 2014 +0530 -Commit: Bryce Harrington -CommitDate: Thu Aug 14 16:10:09 2014 -0700 +commit e294ca19f2777fa2abbd59eb7aa375f801c92eb6 +Author: Bryce Harrington +AuthorDate: Wed Oct 14 18:13:22 2015 -0700 +Commit: Bryce Harrington +CommitDate: Wed Oct 14 18:13:42 2015 -0700 - 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 -AuthorDate: Thu Jul 24 14:19:21 2014 +0530 -Commit: Bryce Harrington -CommitDate: Thu Aug 14 16:09:20 2014 -0700 + NEWS: Whitespace cleanup - 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(-) + NEWS | 63 ++++++++++++++++++++++++++++++++------------------------------- + 1 file changed, 32 insertions(+), 31 deletions(-) -commit 1d9f4ae5208d86843a6001d10c9cb5b16df2b785 -Author: Bill Spitzak -AuthorDate: Tue Aug 12 15:48:04 2014 -0700 -Commit: Bryce Harrington -CommitDate: Thu Aug 14 12:59:07 2014 -0700 +commit 7cc77d1ceea850d5728f4fad59ec18984dbc9ccb +Author: Bryce Harrington +AuthorDate: Wed Oct 14 18:10:22 2015 -0700 +Commit: Bryce Harrington +CommitDate: Wed Oct 14 18:13:42 2015 -0700 - V5: Use NEAREST filter when possible + build: Use memory barriers for ARM - (changed to use determinant funciton and remove debug printf) + ARM has much weaker memory ordering guarantees than x86 by default, and + needs the memory barriers. A similar fix exists in the Skia codebase. + Fix suggested by Nathan Froyd. - Modifies _cairo_matrix_has_unity_scale to return true for 90 degree rotations - by allowing error caused by inaccuracy in trig functions. + Fixes: FDO #90302 - 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 + Signed-off-by: Bryce Harrington + Acked-by: "Henry (Yu) Song" - src/cairo-matrix.c | 37 +++++++++++++++++++++++-------------- - src/cairo-pattern.c | 2 +- - src/cairo-xcb-surface-render.c | 7 ++----- - 3 files changed, 26 insertions(+), 20 deletions(-) + build/aclocal.cairo.m4 | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) -commit 7d44f8d47e7c4389cf6a3baefc7fee7b5dffbb21 -Author: Ravi Nanjundappa -AuthorDate: Tue Aug 12 14:16:46 2014 +0530 -Commit: Bryce Harrington -CommitDate: Thu Aug 14 12:00:08 2014 -0700 +commit 25a55822b4e22728834c96c8e73176d42bb406e3 +Author: Uli Schlachter +AuthorDate: Wed Oct 14 14:24:16 2015 +0200 +Commit: Uli Schlachter +CommitDate: Wed Oct 14 14:26:47 2015 +0200 - test : build fix when --enable-pdf=no + xcb: Fix _put_image_boxes() if no SHM is available + + This function tries to use _cairo_xcb_connection_put_image() to do the actual + work. However, that function can only be used for images with "native" stride. + If we only want to upload a rectangle from within an image, the function + _cairo_xcb_connection_put_subimage() has to be used. This function makes sure + that the correct information is sent to the X11 server. - 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. + No unit test for this, because we currently do not test the !SHM case + automatically. Perhaps we should? - Signed-off-by: Ravi Nanjundappa - Reviewed-by: Bryce Harrington - Tested-by: Bryce Harrington + Signed-off-by: Uli Schlachter - test/fallback-resolution.c | 5 +++++ - 1 file changed, 5 insertions(+) + src/cairo-xcb-surface.c | 18 +++++++++--------- + 1 file changed, 9 insertions(+), 9 deletions(-) -commit c7ff9bb32e20679d6da4e8a2856be716e5bd9e12 +commit d31dc73f9ba1facdbeee722c022d438f15e5f264 Author: Uli Schlachter -AuthorDate: Mon Jul 21 17:10:16 2014 +0200 -Commit: Bryce Harrington -CommitDate: Fri Aug 1 13:11:31 2014 -0700 +AuthorDate: Wed Oct 14 14:22:50 2015 +0200 +Commit: Uli Schlachter +CommitDate: Wed Oct 14 14:26:32 2015 +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: + xcb: Fix _put_shm_image_boxes if no SHM available - c3645d97ebd24c6f7ad850785d585aebc706a11c configure.ac: Add a --disable-lto configure option - d486ea30f1a58640a1178de74f705a73845b1cda configure: Conditionally include -flto - 0870c6fb5b39dcc04fa376123848adde2d06d2ce gcc-4.5 warnings and optimisation flags. + This function always returned CAIRO_INT_STATUS_SUCCESS, even if it didn't do + anything. This commit makes the function return CAIRO_INT_STATUS_UNSUPPORTED + instead. - (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.) + No unit test for this, because we currently do not test the !SHM case + automatically. Perhaps we should? - 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(-) + src/cairo-xcb-surface.c | 3 +-- + 1 file changed, 1 insertion(+), 2 deletions(-) -commit 27c9923e9887bab5854ecccc81dda69687a0b9ae -Author: Chris Wilson -AuthorDate: Fri Aug 1 11:29:29 2014 +0100 -Commit: Chris Wilson -CommitDate: Fri Aug 1 11:30:42 2014 +0100 +commit 0537479bd1d4c5a3bc0f6f41dec4deb98481f34a +Author: Adrian Johnson +AuthorDate: Mon Oct 5 16:10:02 2015 +1030 +Commit: Adrian Johnson +CommitDate: Mon Oct 5 16:10:02 2015 +1030 - xlib: Undo debug hack to force fallbacks + ps: merge emit_recording surface and emit_recording_subsurface into one function - 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. + Most of each function was identical. + + src/cairo-ps-surface.c | 130 ++++++++++++------------------------------------- + 1 file changed, 31 insertions(+), 99 deletions(-) + +commit e5d4f520aaa0107f82ad7683e4f9763d6edcc23b +Author: Rodrigo Rivas Costa +AuthorDate: Wed Sep 30 23:53:23 2015 +0930 +Commit: Adrian Johnson +CommitDate: Wed Sep 30 23:53:23 2015 +0930 + + win32-print: fix transparent images have black background - Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=82002 - Signed-off-by: Chris Wilson - Cc: Bill Spitzak - Cc: Bryce Harrington + Bug 91835 - src/cairo-xlib-display.c | 2 +- + src/win32/cairo-win32-printing-surface.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) -commit f337342c88092a251dc00476c4a9880d1cb90822 -Author: Bill Spitzak -AuthorDate: Fri Jul 18 18:46:26 2014 -0700 -Commit: Bryce Harrington -CommitDate: Fri Jul 25 12:16:53 2014 -0700 +commit 495362279b42620071c6b46f69918ce324aee0db +Author: Adrian Johnson +AuthorDate: Sun Sep 27 08:27:53 2015 +0930 +Commit: Adrian Johnson +CommitDate: Sun Sep 27 09:34:37 2015 +0930 - 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 + scaled-font-subsets: if glyph 0 used for rendering, remap to different index - Cairo's filter settings: + Some broken pdfs use glyph 0 in embedded fonts for rendering instead of .notdef. + The cmap we use for embedding latin fonts does not allow rendering glyph 0. Ensure + if glyph 0 is used, it is mapped to a non 0 glyph in the subset. - - CAIRO_FILTER_GOOD: uses BOX filter for scales less than .75 in either - direction. Uses PIXMAN_FILTER_GOOD (ie BILINEAR) otherwise. + Bug 89082 + + src/cairo-scaled-font-subsets-private.h | 5 ++ + src/cairo-scaled-font-subsets.c | 115 +++++++++++++++++++++++++++----- + 2 files changed, 103 insertions(+), 17 deletions(-) + +commit 6f7a9b4f0375cdadf08486e4b877ee2afc176b39 +Author: Bryce Harrington +AuthorDate: Fri Aug 28 13:23:45 2015 -0700 +Commit: Bryce Harrington +CommitDate: Thu Sep 10 11:18:08 2015 -0700 + + Ensure null-terminated result from strncpy() + + src/cairo-scaled-font-subsets.c | 6 ++++-- + 1 file changed, 4 insertions(+), 2 deletions(-) + +commit b353d1f1b167615f8ba718b3843926860e94be77 +Author: Adrian Johnson +AuthorDate: Mon Sep 7 22:20:08 2015 +0930 +Commit: Adrian Johnson +CommitDate: Mon Sep 7 22:20:08 2015 +0930 + + cff: opentype fonts always use gid to lookup glyph - - CAIRO_FILTER_BEST: uses CATMULL filter always. Upscaling more than 2x will - produce anti-aliased square pixels, similar to OS/X. + Bug 91902 + + src/cairo-cff-subset.c | 16 ++++++++++------ + 1 file changed, 10 insertions(+), 6 deletions(-) + +commit f6c46d9473e40d4a3363c96e1fc7fffc81ed12e7 +Author: Sahil Vij +AuthorDate: Fri Aug 7 18:01:18 2015 -0700 +Commit: Bryce Harrington +CommitDate: Fri Aug 7 18:02:07 2015 -0700 + + gl: Fix bug in _cairo_gl_pattern_texture_setup() - - 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. + The memory allocated to "image" at line 298 is not freed before moving to label fail at line 305 and 314. + This patch takes care of this memory leak in above mentioned cases. - 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. + Fixes: https://bugs.freedesktop.org/show_bug.cgi?id=91537 + Signed-off-by: Sahil Vij + Reviewed-by: Bryce Harrington - src/cairo-image-source.c | 420 ++++++++++++++++++++++++++++++++++++++++++++++- - src/cairo-xlib-display.c | 2 +- - 2 files changed, 420 insertions(+), 2 deletions(-) + src/cairo-gl-operand.c | 8 ++++++-- + 1 file changed, 6 insertions(+), 2 deletions(-) -commit e71b917bbfc881ddd6ae6ed4367efd328a95af93 -Author: Bryce Harrington -AuthorDate: Thu Jul 24 18:41:03 2014 -0700 -Commit: Bryce Harrington -CommitDate: Thu Jul 24 18:41:37 2014 -0700 +commit e40806ecdf81e46aa805a9298b603233656cc931 +Author: Bryce Harrington +AuthorDate: Fri Jul 31 19:00:48 2015 -0700 +Commit: Bryce Harrington +CommitDate: Fri Jul 31 19:00:48 2015 -0700 - xlib: Fix mispelling in a comment + test: Add script to display the difference between two result sets - src/cairo-xlib-display.c | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) + test/compare-results | 57 ++++++++++++++++++++++++++++++++++++++++++++++++++++ + 1 file changed, 57 insertions(+) -commit 82b4781f18d4dc3d368b04a436f854a8f0cff1e1 -Author: Bryce Harrington -AuthorDate: Mon Jul 21 15:05:14 2014 -0700 -Commit: Bryce Harrington -CommitDate: Thu Jul 24 18:41:37 2014 -0700 +commit 60c2f69535d3879a10046a8108486a7dc47de6fc +Author: Bryce Harrington +AuthorDate: Fri Jul 31 18:59:34 2015 -0700 +Commit: Bryce Harrington +CommitDate: Fri Jul 31 18:59:34 2015 -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. + test: Add script to summarize the test results from a run - src/cairo-wideint.c | 8 ++++---- - 1 file changed, 4 insertions(+), 4 deletions(-) + test/summarize-test-results.sh | 29 +++++++++++++++++++++++++++++ + 1 file changed, 29 insertions(+) -commit 9e6ceb23b45b7da19911b38eddb7f42f921929b1 -Author: Behdad Esfahbod -AuthorDate: Wed Jul 23 12:12:04 2014 -0400 -Commit: Behdad Esfahbod -CommitDate: Wed Jul 23 12:12:04 2014 -0400 +commit e0963f6c8ec1be9f68b851ee998d0cef3e647028 +Author: Bryce Harrington +AuthorDate: Fri Jul 31 17:55:54 2015 -0700 +Commit: Bryce Harrington +CommitDate: Fri Jul 31 17:56:54 2015 -0700 - More binary mode for Windows - - Based on: - https://github.com/Alexpux/MINGW-packages/blob/master/mingw-w64-cairo/0012-more-binary-mode.mingw.patch + gitignore: Ignore .trs (test results) - boilerplate/cairo-boilerplate.c | 4 ++-- - 1 file changed, 2 insertions(+), 2 deletions(-) + boilerplate/.gitignore | 1 + + doc/public/.gitignore | 1 + + src/.gitignore | 1 + + test/.gitignore | 1 + + 4 files changed, 4 insertions(+) -commit 23dce494d1850ee28a9c8d67972052c5a784cacf -Author: Behdad Esfahbod -AuthorDate: Wed Jul 23 12:09:17 2014 -0400 -Commit: Behdad Esfahbod -CommitDate: Wed Jul 23 12:09:45 2014 -0400 +commit 79467f0982cac793b2b724850628fc90a8bb6072 +Author: Bryce Harrington +AuthorDate: Fri Jul 31 17:52:30 2015 -0700 +Commit: Bryce Harrington +CommitDate: Fri Jul 31 17:56:54 2015 -0700 - Binary mode in any2ppm + NEWS: Begin filling out news entry for upcoming 1.14.4. - From: - https://github.com/Alexpux/MINGW-packages/blob/master/mingw-w64-cairo/0010-binary-mode-in-any2ppm.mingw.patch + This covers commits up to noon on Jun 18, 2015. - test/any2ppm.c | 9 ++++++++- - 1 file changed, 8 insertions(+), 1 deletion(-) + NEWS | 44 ++++++++++++++++++++++++++++++++++++++++++++ + 1 file changed, 44 insertions(+) -commit f4dbba26d4fc571e0621f3c7a98196c501f8bcc5 -Author: Behdad Esfahbod -AuthorDate: Mon Jul 14 15:54:38 2014 -0400 -Commit: Behdad Esfahbod -CommitDate: Mon Jul 14 15:55:12 2014 -0400 +commit 1fca50ea737307cd5e6ed153dafb8573752cc6e5 +Author: Bryce Harrington +AuthorDate: Fri Jul 31 14:19:01 2015 -0700 +Commit: Bryce Harrington +CommitDate: Fri Jul 31 17:56:54 2015 -0700 - [cairo-trace] Work around fontconfig :charset= parse format change - - As dicussed on the mailing list. + NEWS: Fix date on release - util/cairo-script/cairo-script-operators.c | 12 ++++++++++++ - 1 file changed, 12 insertions(+) + NEWS | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) -commit 2a37cbbabc00c7474be5baa25f848778b1773b2c -Author: Bryce Harrington -AuthorDate: Tue Jul 8 15:53:41 2014 -0700 -Commit: Bryce Harrington -CommitDate: Fri Jul 11 18:34:43 2014 -0700 +commit 2de9fca5f379b57b25d4963d51ab5f082a326b98 +Author: Bryce Harrington +AuthorDate: Thu Jul 30 17:16:53 2015 -0700 +Commit: Bryce Harrington +CommitDate: Thu Jul 30 17:16:53 2015 -0700 - configure.ac: Fix broken build for Qt backend - - When --enable-qt is specified, the build will break due to missing - libstdc++: + boilerplate: Fix list termination for glXChooseVisual - 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 + The attribute list is terminated by GLX_NONE (defined as 0x8000), but + the man page of 'glXChooseVisual' says it must be terminated with None + (0L). - 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. + Issue found and fix suggested by Massimo. - Fixes: https://bugs.freedesktop.org/show_bug.cgi?id=59038 - Signed-off-by: Bryce Harrington - Reviewed-by: Uli Schlachter + Signed-off-by: Bryce Harrington + Fixes: https://bugs.freedesktop.org/show_bug.cgi?id=91293 - configure.ac | 1 + - 1 file changed, 1 insertion(+) + boilerplate/cairo-boilerplate-glx.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) -commit c3645d97ebd24c6f7ad850785d585aebc706a11c -Author: Bryce Harrington -AuthorDate: Tue Jul 8 13:14:20 2014 -0700 -Commit: Bryce Harrington -CommitDate: Fri Jul 11 18:34:43 2014 -0700 +commit c04bd4308382db00347016e666f38fcfe8ee1f08 +Author: Bryce Harrington +AuthorDate: Thu Jul 30 16:45:15 2015 -0700 +Commit: Bryce Harrington +CommitDate: Thu Jul 30 16:45:15 2015 -0700 - configure.ac: Add a --disable-lto configure option + test: Free the memory, not the pointer to the memory + + In read_file(), we see: - 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. + *data = malloc (*len); + ... + if (fread(*data, *len, 1, fp) != 1) { + free(data); + ... - 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]. + The free call needs to be free(*data), to match the malloc call. - 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 + Matthias Clasen found this via Coverity and proposed the fix. - Fixes: https://bugs.freedesktop.org/show_bug.cgi?id=60852 - Signed-off-by: Bryce Harrington - Reviewed-by: Uli Schlachter + Signed-off-by: Bryce Harrington + Fixes: https://bugs.freedesktop.org/show_bug.cgi?id=91381 - build/configure.ac.warnings | 15 ++++++++++----- - 1 file changed, 10 insertions(+), 5 deletions(-) + test/pdf-mime-data.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) -commit 0f46fc8dc173698b6d61ba757e1e42f2319d6ace -Author: Bryce Harrington -AuthorDate: Tue Jul 8 12:39:02 2014 -0700 -Commit: Bryce Harrington -CommitDate: Fri Jul 11 18:34:43 2014 -0700 +commit 0dd5d84baef70dad68ab67ba172edeaa1b98a995 +Author: Bryce Harrington +AuthorDate: Tue Jul 28 17:10:33 2015 -0700 +Commit: Bryce Harrington +CommitDate: Tue Jul 28 17:10:33 2015 -0700 - configure.ac: Quell warnings about AM_PROG_AR when using automake 1.12 + svg2png: Only call deprecated g_type_init() for old glib versions. - 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. + Quells the following warning: - For further discussion of the issue, see: + pdf2png.c:52:5: warning: ‘g_type_init’ is deprecated (declared at + /usr/include/glib-2.0/gobject/gtype.h:667) [-Wdeprecated-declarations] + g_type_init (); + ^ + svg2png.c:47:5: warning: ‘g_type_init’ is deprecated (declared at + /usr/include/glib-2.0/gobject/gtype.h:667) [-Wdeprecated-declarations] + g_type_init (); + ^ - http://debbugs.gnu.org/cgi/bugreport.cgi?bug=11401 - http://lists.gnu.org/archive/html/automake/2012-05/msg00014.html + Patch authored by arpitj01@gmail.com - Signed-off-by: Bryce Harrington - Reviewed-by: Uli Schlachter + Fixes: https://bugs.freedesktop.org/show_bug.cgi?id=81197 + Signed-off-by: Bryce Harrington - configure.ac | 1 + - 1 file changed, 1 insertion(+) + test/svg2png.c | 2 ++ + 1 file changed, 2 insertions(+) -commit 312553af298692111928a9443b75a00bf46d2adb -Author: Behdad Esfahbod -AuthorDate: Fri Jul 11 11:05:43 2014 -0400 -Commit: Behdad Esfahbod -CommitDate: Fri Jul 11 11:07:25 2014 -0400 +commit 576bb3ffee2318cd50ecfd4717c8e6421d61d885 +Author: Bryce Harrington +AuthorDate: Mon Jul 27 18:00:55 2015 -0700 +Commit: Bryce Harrington +CommitDate: Mon Jul 27 18:20:07 2015 -0700 - [trace] Don't print FC_CHARSET, FC_LANG, and FC_CAPABILITY + If more than one trap is passed in then it's guaranteed that the + returned traps will have their left edge to the left of their right + edge, but if only one trap is passed in then the function always returns + without doing anything. This results in incorrect rendering of SVG + paths with more than one subpath. - 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! + Currently calls to _cairo_bentley_ottmann_tessellate_rectangular_traps + are guarded by traps.has_intersections checks, so this is only a + theoretical bug. But we'll eliminate the potential of the bug by + making the left side to be left of the right side, similar to what was + done in _cairo_bentley_ottmann_tessellate_boxes (commit 11b6c49c). + + Patch authored by Tom Klein for Mozilla. + + Fixes: https://bugs.freedesktop.org/show_bug.cgi?id=90984 + Ref: https://bugzilla.mozilla.org/show_bug.cgi?id=853889 + Signed-off-by: Bryce Harrington - util/cairo-trace/trace.c | 21 +++++++++++++++++---- - 1 file changed, 17 insertions(+), 4 deletions(-) + src/cairo-bentley-ottmann-rectangular.c | 15 ++++++++++++--- + 1 file changed, 12 insertions(+), 3 deletions(-) -commit 4cb220773d4babe216afae1198bb192956ffeae9 -Author: Behdad Esfahbod -AuthorDate: Fri Jul 11 10:58:14 2014 -0400 -Commit: Behdad Esfahbod -CommitDate: Fri Jul 11 11:07:25 2014 -0400 +commit c7cf0dfd602355e0c4fd1126e63844c304c1ef45 +Author: Bryce Harrington +AuthorDate: Mon Jul 27 14:15:11 2015 -0700 +Commit: Bryce Harrington +CommitDate: Mon Jul 27 14:15:11 2015 -0700 - chmod a+x cairo-trace + Revert "cairo-gl: Fix compiler warning if CAIRO_HAS_*_FUNCTIONS is not defined." + + This reverts commit c8b6c6066a238cf4cb04679e1149e956b1556a0c. + + An undefined macro is evaluated as 0. + The preference is to use #if MACRO_NAME rather than #ifdef. + + Conflicts: + src/cairo-gl.h - configure.ac | 2 ++ - 1 file changed, 2 insertions(+) + src/cairo-gl.h | 6 +++--- + 1 file changed, 3 insertions(+), 3 deletions(-) -commit e279709bf32f13314b8008e6f640d2fab8cc8a78 -Author: Ravi Nanjundappa -AuthorDate: Thu Jul 10 16:14:46 2014 +0530 -Commit: Bryce Harrington -CommitDate: Thu Jul 10 12:08:01 2014 -0700 +commit 66bc7b8cb0e753006fa838a8badcf5cb7528d6f7 +Author: Andrea Canciani +AuthorDate: Thu Apr 9 00:17:24 2015 +0200 +Commit: Andrea Canciani +CommitDate: Mon Jul 27 12:46:00 2015 +0200 - skia : Add Debug support for skia backend + quartz: be more strict about the behavior of blend operators - Enable the DEBUG support for skia backend to provide more - descriptive information on the unexpected operational behaviours. + Some blend operators have a (small, but potentially noticeable) + different behaviour in Quartz and pixman. Use the Quartz ones only for + the operators which match pixman except for rounding errors. - Signed-off-by: Ravi Nanjundappa - Reviewed-by: Bryce Harrington + Fixes: + - extended-blend + - extended-blend-alpha + - extended-blend-mask + - extended-blend-alpha-mask + - extended-blend-solid + - extended-blend-solid-alpha - src/cairo-skia-surface.cpp | 28 +++++++++++++++++----------- - 1 file changed, 17 insertions(+), 11 deletions(-) + src/cairo-quartz-surface.c | 6 +++++- + 1 file changed, 5 insertions(+), 1 deletion(-) -commit 8a605472d201e30ddcf3895d554cc4143cd54fb2 -Author: Ravi Nanjundappa -AuthorDate: Wed Jul 9 15:50:57 2014 +0530 -Commit: Bryce Harrington -CommitDate: Wed Jul 9 16:51:22 2014 -0700 +commit 6210e347712127260dd72b0f03a8604c8d22fdca +Author: Andrea Canciani +AuthorDate: Wed Apr 8 17:10:32 2015 +0200 +Commit: Andrea Canciani +CommitDate: Mon Jul 27 12:46:00 2015 +0200 - .gitignore: Ignore the generated profile data files from callgrind tool in test/ + quartz: Align filtering quality with image backend - Signed-off-by: Ravi Nanjundappa - Reviewed-by: Bryce Harrington + The Quartz framework provides several quality settings, but they were + not used. Now the translation of cairo_filter_t to Quartz filtering + modes tries to match the quality settings from image as much as + possible. + + Specifically, CAIRO_FILTER_GOOD and CAIRO_FILTER_BILINEAR are now + converted to kCGInterpolationLow, which seems to be a bilinear filter. + + Fixes: + - pixman-downscale-bilinear-24 + - pixman-downscale-bilinear-95 + - pixman-downscale-good-24 + - pixman-downscale-good-95 + - pthread-same-source + - recording-surface-extend-none + - recording-surface-extend-reflect + - recording-surface-extend-repeat + - recording-surface-over + - recording-surface-source + - surface-pattern-big-scale-down + - surface-pattern-scale-down + - surface-pattern-scale-down-extend-none + - surface-pattern-scale-down-extend-reflect + - surface-pattern-scale-down-extend-repeat - test/.gitignore | 1 + - 1 file changed, 1 insertion(+) + src/cairo-quartz-surface.c | 11 +++++++++++ + 1 file changed, 11 insertions(+) -commit 30cb23d3b64ab085578c23a194391d982ad10d32 -Author: Jeff Muizelaar -AuthorDate: Wed Jul 9 16:33:53 2014 -0400 -Commit: Jeff Muizelaar -CommitDate: Wed Jul 9 16:35:30 2014 -0400 +commit 68e12cd37f3f48d7100a4f6e20f13de18f9f7939 +Author: Andrea Canciani +AuthorDate: Thu Apr 16 11:58:41 2015 +0200 +Commit: Andrea Canciani +CommitDate: Mon Jul 27 12:45:59 2015 +0200 - clang-cl: Use size of the pointer explicitly - - This works around http://llvm.org/PR20216. + test: Update quartz reference images - src/cairo-compiler-private.h | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) + test/reference/a1-clip-fill-rule.quartz.ref.png | Bin 0 -> 238 bytes + test/reference/a1-line-width.quartz.ref.png | Bin 0 -> 157 bytes + test/reference/a1-rectilinear-grid.quartz.ref.png | Bin 0 -> 211 bytes + test/reference/a1-sample.quartz.xfail.png | Bin 0 -> 776 bytes + test/reference/a1-tiger.quartz.xfail.png | Bin 0 -> 19767 bytes + test/reference/arc-direction.quartz.ref.png | Bin 0 -> 5474 bytes + test/reference/arc-looping-dash.quartz.ref.png | Bin 470 -> 0 bytes + test/reference/arc-looping-dash.quartz.xfail.png | Bin 0 -> 481 bytes + .../big-little-triangle.quartz.rgb24.ref.png | Bin 0 -> 307 bytes + test/reference/bug-51910.quartz.ref.png | Bin 0 -> 1877 bytes + test/reference/bug-extents.quartz.ref.png | Bin 9310 -> 9284 bytes + test/reference/bug-seams.quartz.xfail.png | Bin 0 -> 2052 bytes + test/reference/bug-spline.quartz.ref.png | Bin 0 -> 5420 bytes + test/reference/caps-05.quartz.ref.png | Bin 0 -> 1066 bytes + test/reference/caps-1.quartz.ref.png | Bin 0 -> 1091 bytes + test/reference/caps-joins-05.quartz.ref.png | Bin 0 -> 1487 bytes + test/reference/caps-joins-1.quartz.ref.png | Bin 0 -> 1469 bytes + test/reference/caps-joins-alpha.quartz.ref.png | Bin 2466 -> 2268 bytes + test/reference/caps-joins-curve.quartz.ref.png | Bin 5199 -> 0 bytes + test/reference/caps-tails-curve.quartz.ref.png | Bin 0 -> 50207 bytes + test/reference/clear.quartz.argb32.ref.png | Bin 691 -> 664 bytes + test/reference/clear.quartz.rgb24.ref.png | Bin 606 -> 586 bytes + .../reference/clip-complex-bug61592.quartz.ref.png | Bin 0 -> 110 bytes + .../clip-disjoint-hatching.quartz.ref.png | Bin 0 -> 8621 bytes + test/reference/clip-disjoint.quartz.ref.png | Bin 5476 -> 5482 bytes + test/reference/clip-fill.quartz.ref.png | Bin 875 -> 878 bytes + .../clip-group-shapes-circles.quartz.ref.png | Bin 1518 -> 1506 bytes + test/reference/clip-intersect.quartz.ref.png | Bin 0 -> 189 bytes + test/reference/clip-nesting.quartz.argb32.ref.png | Bin 1048 -> 1077 bytes + test/reference/clip-nesting.quartz.rgb24.ref.png | Bin 937 -> 954 bytes + test/reference/clip-operator.quartz.argb32.ref.png | Bin 9672 -> 9543 bytes + test/reference/clip-operator.quartz.rgb24.ref.png | Bin 4343 -> 4336 bytes + test/reference/clip-polygons.quartz.xfail.png | Bin 0 -> 1296 bytes + .../clip-rotate-image-surface-paint.quartz.ref.png | Bin 0 -> 198 bytes + test/reference/clip-shape.quartz.ref.png | Bin 3229 -> 3208 bytes + .../clip-stroke-unbounded.quartz.argb32.ref.png | Bin 3290 -> 3272 bytes + test/reference/clip-text.quartz.ref.png | Bin 854 -> 807 bytes + .../close-path-current-point.quartz.ref.png | Bin 0 -> 1781 bytes + test/reference/culled-glyphs.quartz.ref.png | Bin 493 -> 482 bytes + test/reference/dash-caps-joins.quartz.xfail.png | Bin 4446 -> 4400 bytes + test/reference/dash-curve.quartz.xfail.png | Bin 42238 -> 42019 bytes + test/reference/dash-scale.quartz.ref.png | Bin 7614 -> 0 bytes + test/reference/dash-scale.quartz.xfail.png | Bin 0 -> 7456 bytes + test/reference/dash-state.quartz.xfail.png | Bin 6957 -> 6981 bytes + .../dash-zero-length.quartz.argb32.xfail.png | Bin 0 -> 232 bytes + .../dash-zero-length.quartz.rgb24.xfail.png | Bin 0 -> 207 bytes + .../degenerate-path.quartz.argb32.xfail.png | Bin 200 -> 219 bytes + .../degenerate-path.quartz.rgb24.xfail.png | Bin 172 -> 190 bytes + .../degenerate-solid-dash.quartz.xfail.png | Bin 0 -> 397 bytes + test/reference/drunkard-tails.quartz.ref.png | Bin 0 -> 6188 bytes + ...extended-blend-alpha-mask.quartz.argb32.ref.png | Bin 0 -> 9865 bytes + .../extended-blend-alpha-mask.quartz.rgb24.ref.png | Bin 0 -> 4924 bytes + .../extended-blend-alpha.quartz.argb32.ref.png | Bin 9729 -> 9726 bytes + .../extended-blend-alpha.quartz.rgb24.ref.png | Bin 5598 -> 5865 bytes + .../extended-blend-mask.quartz.argb32.ref.png | Bin 0 -> 4105 bytes + .../extended-blend-mask.quartz.rgb24.ref.png | Bin 0 -> 3834 bytes + ...xtended-blend-solid-alpha.quartz.argb32.ref.png | Bin 0 -> 9726 bytes + ...extended-blend-solid-alpha.quartz.rgb24.ref.png | Bin 0 -> 5865 bytes + .../extended-blend-solid.quartz.argb32.ref.png | Bin 0 -> 4247 bytes + .../extended-blend-solid.quartz.rgb24.ref.png | Bin 0 -> 3938 bytes + .../reference/extended-blend.quartz.argb32.ref.png | Bin 4284 -> 4247 bytes + test/reference/extended-blend.quartz.rgb24.ref.png | Bin 3965 -> 3938 bytes + test/reference/fallback.quartz.argb32.ref.png | Bin 0 -> 4134 bytes + test/reference/fallback.quartz.rgb24.ref.png | Bin 0 -> 3299 bytes + test/reference/fill-alpha-pattern.quartz.ref.png | Bin 7943 -> 7906 bytes + test/reference/fill-alpha.quartz.ref.png | Bin 2704 -> 2731 bytes + .../fill-and-stroke-alpha-add.quartz.ref.png | Bin 542 -> 0 bytes + .../fill-and-stroke.quartz.argb32.ref.png | Bin 273 -> 0 bytes + test/reference/fill-and-stroke.quartz.ref.png | Bin 0 -> 273 bytes + .../reference/fill-and-stroke.quartz.rgb24.ref.png | Bin 249 -> 0 bytes + test/reference/fill-image.quartz.ref.png | Bin 1297 -> 1417 bytes + .../filter-nearest-transformed.quartz.xfail.png | Bin 349 -> 490 bytes + .../finer-grained-fallbacks.quartz.argb32.ref.png | Bin 988 -> 992 bytes + .../finer-grained-fallbacks.quartz.rgb24.ref.png | Bin 763 -> 769 bytes + .../font-matrix-translation.quartz.ref.png | Bin 996 -> 979 bytes + .../ft-text-vertical-layout-type1.quartz.ref.png | Bin 0 -> 3099 bytes + .../ft-text-vertical-layout-type1.quartz.xfail.png | Bin 3635 -> 0 bytes + .../ft-text-vertical-layout-type3.quartz.ref.png | Bin 3573 -> 3570 bytes + .../gradient-constant-alpha.quartz.argb32.ref.png | Bin 214 -> 0 bytes + .../gradient-constant-alpha.quartz.ref.png | Bin 0 -> 210 bytes + test/reference/group-unaligned.quartz.ref.png | Bin 363 -> 362 bytes + test/reference/halo-transform.quartz.ref.png | Bin 14360 -> 15164 bytes + test/reference/halo.quartz.ref.png | Bin 8601 -> 8995 bytes + test/reference/hatchings.quartz.ref.png | Bin 0 -> 95827 bytes + test/reference/huge-linear.quartz.ref.png | Bin 15230 -> 0 bytes + test/reference/huge-radial.quartz.ref.png | Bin 84690 -> 83620 bytes + test/reference/inverse-text.quartz.ref.png | Bin 0 -> 2565 bytes + test/reference/inverted-clip.quartz.rgb24.ref.png | Bin 0 -> 1137 bytes + test/reference/joins-loop.quartz.ref.png | Bin 0 -> 4080 bytes + test/reference/joins-retrace.quartz.ref.png | Bin 0 -> 4750 bytes + test/reference/joins.quartz.ref.png | Bin 5833 -> 0 bytes + test/reference/leaky-dash.quartz.ref.png | Bin 195 -> 0 bytes + test/reference/leaky-dash.quartz.xfail.png | Bin 0 -> 195 bytes + ...ine-width-large-overlap-dashed.quartz.xfail.png | Bin 0 -> 334 bytes + ...line-width-large-overlap-rotated.quartz.ref.png | Bin 0 -> 385 bytes + .../line-width-overlap-dashed.quartz.xfail.png | Bin 0 -> 410 bytes + .../linear-gradient-subset.quartz.ref.png | Bin 852 -> 833 bytes + test/reference/linear-gradient.quartz.ref.png | Bin 951 -> 933 bytes + test/reference/long-dashed-lines.quartz.ref.png | Bin 2068 -> 0 bytes + test/reference/mask-alpha.quartz.argb32.ref.png | Bin 622 -> 621 bytes + test/reference/mask-alpha.quartz.rgb24.ref.png | Bin 0 -> 587 bytes + test/reference/mask.quartz.argb32.ref.png | Bin 10669 -> 10599 bytes + test/reference/mask.quartz.rgb24.ref.png | Bin 8354 -> 0 bytes + test/reference/new-sub-path.quartz.argb32.ref.png | Bin 0 -> 370 bytes + test/reference/new-sub-path.quartz.ref.png | Bin 370 -> 0 bytes + test/reference/new-sub-path.quartz.rgb24.ref.png | Bin 0 -> 340 bytes + .../reference/operator-clear.quartz.argb32.ref.png | Bin 1228 -> 1556 bytes + test/reference/operator-clear.quartz.rgb24.ref.png | Bin 1096 -> 1365 bytes + .../operator-source.quartz.argb32.ref.png | Bin 0 -> 6071 bytes + .../reference/operator-source.quartz.rgb24.ref.png | Bin 0 -> 4549 bytes + .../over-above-source.quartz.argb32.ref.png | Bin 511 -> 508 bytes + .../over-above-source.quartz.rgb24.ref.png | Bin 437 -> 431 bytes + .../over-around-source.quartz.argb32.ref.png | Bin 593 -> 594 bytes + .../over-around-source.quartz.rgb24.ref.png | Bin 0 -> 474 bytes + .../over-below-source.quartz.rgb24.ref.png | Bin 0 -> 368 bytes + .../over-between-source.quartz.argb32.ref.png | Bin 551 -> 548 bytes + .../over-between-source.quartz.rgb24.ref.png | Bin 0 -> 456 bytes + .../reference/overlapping-dash-caps.quartz.ref.png | Bin 0 -> 3921 bytes + .../overlapping-glyphs.quartz.argb32.ref.png | Bin 2824 -> 2766 bytes + .../overlapping-glyphs.quartz.rgb24.ref.png | Bin 1711 -> 1667 bytes + .../paint-with-alpha-clip-mask.quartz.ref.png | Bin 0 -> 325 bytes + .../partial-clip-text-bottom.quartz.ref.png | Bin 0 -> 263 bytes + .../partial-clip-text-left.quartz.ref.png | Bin 0 -> 288 bytes + .../partial-clip-text-right.quartz.ref.png | Bin 0 -> 139 bytes + .../reference/partial-clip-text-top.quartz.ref.png | Bin 174 -> 172 bytes + .../pixman-downscale-best-24.quartz.ref.png | Bin 0 -> 432 bytes + .../pixman-downscale-best-95.quartz.ref.png | Bin 0 -> 656 bytes + .../pixman-downscale-bilinear-95.quartz.ref.png | Bin 0 -> 471 bytes + .../pixman-downscale-fast-95.quartz.ref.png | Bin 0 -> 300 bytes + .../pixman-downscale-good-95.quartz.ref.png | Bin 0 -> 471 bytes + .../pixman-downscale-nearest-95.quartz.ref.png | Bin 0 -> 300 bytes + test/reference/pixman-rotate.quartz.rgb24.ref.png | Bin 0 -> 225 bytes + test/reference/pthread-same-source.quartz.ref.png | Bin 0 -> 976 bytes + .../reference/pthread-same-source.quartz.xfail.png | Bin 961 -> 0 bytes + test/reference/pthread-show-text.quartz.ref.png | Bin 43005 -> 46034 bytes + test/reference/push-group-color.quartz.ref.png | Bin 3127 -> 3102 bytes + test/reference/push-group.quartz.argb32.ref.png | Bin 3932 -> 3833 bytes + test/reference/push-group.quartz.rgb24.ref.png | Bin 3659 -> 3593 bytes + ...dial-gradient-mask-source.quartz.argb32.ref.png | Bin 171002 -> 168929 bytes + ...adial-gradient-mask-source.quartz.rgb24.ref.png | Bin 179120 -> 177421 bytes + .../radial-gradient-mask-source.rgb24.ref.png | Bin 0 -> 150945 bytes + test/reference/radial-gradient-mask.quartz.ref.png | Bin 296910 -> 295032 bytes + .../radial-gradient-one-stop.quartz.ref.png | Bin 6316 -> 6447 bytes + .../radial-gradient-source.quartz.argb32.ref.png | Bin 439222 -> 442335 bytes + .../radial-gradient-source.quartz.rgb24.ref.png | Bin 279249 -> 276660 bytes + test/reference/radial-gradient.quartz.ref.png | Bin 389140 -> 389582 bytes + test/reference/random-clip.quartz.ref.png | Bin 0 -> 519854 bytes + test/reference/record-mesh.ref.png | Bin 15229 -> 15400 bytes + .../record-select-font-face.quartz.ref.png | Bin 0 -> 2186 bytes + .../record1414x-fill-alpha.quartz.ref.png | Bin 0 -> 4099 bytes + ...ecord1414x-paint-alpha-clip-mask.quartz.ref.png | Bin 0 -> 522 bytes + .../record1414x-select-font-face.quartz.ref.png | Bin 0 -> 3233 bytes + .../record1414x-text-transform.quartz.ref.png | Bin 0 -> 8701 bytes + test/reference/record2x-fill-alpha.quartz.ref.png | Bin 0 -> 5782 bytes + .../record2x-select-font-face.quartz.ref.png | Bin 0 -> 4506 bytes + .../record90-paint-alpha-clip.quartz.ref.png | Bin 0 -> 335 bytes + .../record90-select-font-face.quartz.ref.png | Bin 0 -> 2213 bytes + .../record90-self-intersecting.quartz.xfail.png | Bin 0 -> 214 bytes + .../reference/recordflip-fill-alpha.quartz.ref.png | Bin 0 -> 2799 bytes + ...recordflip-paint-alpha-clip-mask.quartz.ref.png | Bin 0 -> 351 bytes + .../recordflip-select-font-face.quartz.ref.png | Bin 0 -> 2291 bytes + .../recordflip-whole-fill-alpha.quartz.ref.png | Bin 0 -> 2799 bytes + ...flip-whole-paint-alpha-clip-mask.quartz.ref.png | Bin 0 -> 351 bytes + ...ecordflip-whole-select-font-face.quartz.ref.png | Bin 0 -> 2291 bytes + ...rding-surface-extend-none.quartz.argb32.ref.png | Bin 0 -> 2758 bytes + ...ording-surface-extend-none.quartz.rgb24.ref.png | Bin 0 -> 2684 bytes + .../recording-surface-extend-pad.argb32.ref.png | Bin 12932 -> 0 bytes + .../recording-surface-extend-pad.argb32.xfail.png | Bin 0 -> 12932 bytes + .../recording-surface-extend-pad.rgb24.ref.png | Bin 13581 -> 0 bytes + .../recording-surface-extend-pad.rgb24.xfail.png | Bin 0 -> 13581 bytes + ...ng-surface-extend-reflect.quartz.argb32.ref.png | Bin 0 -> 16317 bytes + ...ing-surface-extend-reflect.quartz.rgb24.ref.png | Bin 0 -> 16062 bytes + ...ing-surface-extend-repeat.quartz.argb32.ref.png | Bin 0 -> 18584 bytes + ...ding-surface-extend-repeat.quartz.rgb24.ref.png | Bin 0 -> 17244 bytes + .../recording-surface-over.quartz.argb32.ref.png | Bin 4570 -> 2758 bytes + .../recording-surface-over.quartz.rgb24.ref.png | Bin 4058 -> 2684 bytes + .../recording-surface-source.quartz.argb32.ref.png | Bin 0 -> 2760 bytes + .../recording-surface-source.quartz.rgb24.ref.png | Bin 0 -> 2695 bytes + ...ctilinear-dash-scale-unaligned.quartz.xfail.png | Bin 0 -> 3747 bytes + .../rectilinear-dash-scale.quartz.xfail.png | Bin 0 -> 687 bytes + test/reference/rectilinear-dash.quartz.xfail.png | Bin 494 -> 356 bytes + test/reference/reflected-stroke.quartz.ref.png | Bin 0 -> 4773 bytes + .../rotate-clip-image-surface-paint.quartz.ref.png | Bin 0 -> 275 bytes + .../rotate-image-surface-paint.quartz.ref.png | Bin 223 -> 223 bytes + test/reference/rotated-clip.quartz.ref.png | Bin 3923 -> 3908 bytes + .../rounded-rectangle-fill.quartz.ref.png | Bin 684 -> 0 bytes + .../rounded-rectangle-stroke.quartz.ref.png | Bin 0 -> 682 bytes + test/reference/shape-sierpinski.quartz.ref.png | Bin 0 -> 83460 bytes + test/reference/show-glyphs-advance.quartz.ref.png | Bin 1464 -> 1438 bytes + test/reference/smask-fill.quartz.ref.png | Bin 2076 -> 2029 bytes + test/reference/smask-stroke.quartz.ref.png | Bin 1697 -> 1695 bytes + test/reference/smask-text.quartz.ref.png | Bin 1904 -> 1909 bytes + test/reference/smask.quartz.ref.png | Bin 4031 -> 4030 bytes + .../spline-decomposition.quartz.xfail.png | Bin 19560 -> 19486 bytes + test/reference/stroke-clipped.quartz.ref.png | Bin 0 -> 5652 bytes + test/reference/stroke-ctm-caps.quartz.ref.png | Bin 899 -> 0 bytes + test/reference/stroke-image.quartz.ref.png | Bin 1350 -> 1418 bytes + test/reference/stroke-pattern.quartz.ref.png | Bin 0 -> 1683 bytes + ...bsurface-outside-target.quartz.argb32.xfail.png | Bin 0 -> 2176 bytes + ...ubsurface-outside-target.quartz.rgb24.xfail.png | Bin 0 -> 1717 bytes + test/reference/subsurface-scale.quartz.ref.png | Bin 0 -> 5703 bytes + .../surface-pattern-big-scale-down.quartz.ref.png | Bin 258 -> 0 bytes + .../surface-pattern-operator.quartz.argb32.ref.png | Bin 5721 -> 5738 bytes + .../surface-pattern-operator.quartz.rgb24.ref.png | Bin 2429 -> 2437 bytes + ...e-pattern-scale-down-extend-none.quartz.ref.png | Bin 391 -> 0 bytes + ...-pattern-scale-down-extend-pad.quartz.xfail.png | Bin 397 -> 330 bytes + ...attern-scale-down-extend-reflect.quartz.ref.png | Bin 475 -> 0 bytes + ...pattern-scale-down-extend-repeat.quartz.ref.png | Bin 397 -> 0 bytes + .../surface-pattern-scale-down.quartz.ref.png | Bin 2276 -> 1731 bytes + .../surface-pattern-scale-up.quartz.ref.png | Bin 0 -> 3294 bytes + .../surface-pattern-scale-up.quartz.xfail.png | Bin 3294 -> 0 bytes + test/reference/text-antialias-gray.quartz.ref.png | Bin 956 -> 911 bytes + .../text-antialias-subpixel-bgr.quartz.xfail.png | Bin 0 -> 896 bytes + .../text-antialias-subpixel-rgb.quartz.ref.png | Bin 0 -> 896 bytes + .../text-antialias-subpixel-vbgr.quartz.xfail.png | Bin 0 -> 896 bytes + .../text-antialias-subpixel-vrgb.quartz.xfail.png | Bin 0 -> 896 bytes + .../text-antialias-subpixel.quartz.ref.png | Bin 949 -> 896 bytes + test/reference/text-glyph-range.quartz.ref.png | Bin 2191 -> 0 bytes + test/reference/text-glyph-range.quartz.xfail.png | Bin 0 -> 2051 bytes + test/reference/text-pattern.quartz.argb32.ref.png | Bin 2148 -> 4372 bytes + test/reference/text-pattern.quartz.rgb24.ref.png | Bin 1867 -> 3483 bytes + test/reference/text-rotate.quartz.ref.png | Bin 16655 -> 16616 bytes + test/reference/tiger.quartz.ref.png | Bin 0 -> 93656 bytes + .../reference/tighten-bounds.quartz.argb32.ref.png | Bin 0 -> 7679 bytes + test/reference/tighten-bounds.quartz.rgb24.ref.png | Bin 0 -> 7324 bytes + test/reference/trap-clip.quartz.argb32.ref.png | Bin 6115 -> 6108 bytes + test/reference/trap-clip.quartz.rgb24.ref.png | Bin 5801 -> 5789 bytes + test/reference/twin-antialias-gray.quartz.ref.png | Bin 0 -> 4466 bytes + test/reference/twin-antialias-none.quartz.ref.png | Bin 0 -> 1026 bytes + .../twin-antialias-subpixel.quartz.ref.png | Bin 0 -> 4466 bytes + test/reference/twin.quartz.ref.png | Bin 0 -> 4466 bytes + test/reference/user-font-proxy.quartz.ref.png | Bin 19795 -> 19737 bytes + test/reference/user-font.quartz.ref.png | Bin 5960 -> 5854 bytes + test/reference/world-map-fill.quartz.ref.png | Bin 0 -> 56665 bytes + test/reference/world-map-stroke.quartz.ref.png | Bin 0 -> 79192 bytes + test/reference/world-map.quartz.ref.png | Bin 0 -> 82020 bytes + .../reference/xcomposite-projection.quartz.ref.png | Bin 926 -> 924 bytes + 237 files changed, 0 insertions(+), 0 deletions(-) -commit 28c3b92fb4f6ed8511a46ad9c0e1bd8cfdd477ed -Author: Bryce Harrington -AuthorDate: Tue Jul 8 17:44:56 2014 -0700 -Commit: Bryce Harrington -CommitDate: Tue Jul 8 17:47:23 2014 -0700 +commit e1353f3b859d28dc3f5a9d4fb4496085240a8c68 +Author: Andrea Canciani +AuthorDate: Thu Apr 16 11:59:02 2015 +0200 +Commit: Andrea Canciani +CommitDate: Mon Jul 27 12:45:59 2015 +0200 - .gitignore: Ignore two generated files in build/ + test: Always use DejaVu Sans as default font - Signed-off-by: Bryce Harrington - - .gitignore | 1 - - build/.gitignore | 2 ++ - 2 files changed, 2 insertions(+), 1 deletion(-) + This makes the results of the test suite more stable across different + environments, because it does not rely anymore on + CAIRO_FONT_FAMILY_DEFAULT (which on Windows is "Arial", on Mac + "Helvetica"). + + This change should not affect Linux environments, assuming that the + default font is already set to "DejaVu Sans". + + test/cairo-test.c | 4 ++++ + test/clip-zero.c | 2 +- + test/pthread-show-text.c | 4 ++-- + test/show-glyphs-many.c | 2 +- + test/text-cache-crash.c | 4 ++-- + test/user-font-proxy.c | 2 +- + 6 files changed, 11 insertions(+), 7 deletions(-) -commit 7bd68b57999bf1564ecbadf6c9aae6bf9f7aa4a7 -Author: Ravi Nanjundappa -AuthorDate: Mon Jun 30 17:05:26 2014 +0530 -Commit: Bryce Harrington -CommitDate: Tue Jul 8 11:09:04 2014 -0700 +commit 6951fb4238706522d357fd25236b17492baea1b0 +Author: Bryce Harrington +AuthorDate: Fri Jul 17 12:07:18 2015 -0700 +Commit: Bryce Harrington +CommitDate: Fri Jul 17 12:07:18 2015 -0700 - skia: update the source to build with the latest skia + Revert "pattern: allow for a floating one pixel rounded difference." - This fixes several build related issues for the skia backend - which is introduced due to skia source up-gradation. + While this fixed a real bug, in testing this patch was found to fail a + number of tests and thus needs further work. - Signed-off-by: Ravi Nanjundappa - Reviewed-by: Uli Schlachter - Reviewed-by: Bryce Harrington + This reverts commit e7acf4b6dc6666c2a2c54fb08e9ad6f01a1d415f. - 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(-) + src/cairo-pattern.c | 10 +++++----- + 1 file changed, 5 insertions(+), 5 deletions(-) -commit be62b1221169469c8923a5a1ec669761f5344c57 -Author: Ravi Nanjundappa -AuthorDate: Wed Jul 2 14:13:58 2014 +0530 -Commit: Bryce Harrington -CommitDate: Mon Jul 7 03:53:13 2014 -0700 +commit edd321c2f52daaef9804481bc4d0aa84f8ff0060 +Author: Arpit Jain +AuthorDate: Mon Jul 13 11:31:48 2015 +0530 +Commit: Bryce Harrington +CommitDate: Tue Jul 14 01:44:33 2015 -0700 - xcb: make use of _cairo_surface_is_xcb to check for surface type + gl: Fix incorrect size of expression - 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 + The sizeof operator now applied to the correct variable "ctx->glyph_cache", + instead of its pointer address, in function "_cairo_gl_composite_flush". - 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 -AuthorDate: Mon Jun 30 14:17:18 2014 -0400 -Commit: Jeff Muizelaar -CommitDate: 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 -AuthorDate: Mon May 19 14:59:29 2014 +0530 -Commit: Bryce Harrington -CommitDate: Thu Jun 5 16:12:30 2014 -0700 + Fixes: https://bugs.freedesktop.org/show_bug.cgi?id=91321 + Signed-off-by: Arpit Jain + Reviewed-by: Bryce Harrington - 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-gl-composite.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) - src/cairo-spans-private.h | 2 +- - src/cairoint.h | 8 ++++---- - 2 files changed, 5 insertions(+), 5 deletions(-) - -commit 5741a7f2cab3548467a020c89bb7363d398f9c0d -Author: Eric Le Bihan -AuthorDate: Fri May 9 21:22:04 2014 +0200 -Commit: Bryce Harrington -CommitDate: Thu Jun 5 16:09:45 2014 -0700 +commit 498fc2fbe31682754f1aa3864b764229d0b6838c +Author: Ashim +AuthorDate: Thu Jul 9 10:43:30 2015 +0530 +Commit: Bryce Harrington +CommitDate: Thu Jul 9 13:50:35 2015 -0700 - test: fix build of any2ppm if fork not available + Fix out of bound access in struct pattern->type - 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. + The pattern structure is hardcoded to hold 7 elements, yet the + pattern_names array in cairo-surface-observer.c is initialized with 8 + strings. This causes a crash in print_array at line 1587 when it tries + to access the 8th member. - This patch fixes this issue. + Hence changed the 'type' array from type[7] to type[8] to avoid out of + bound access. - Signed-off-by: Eric Le Bihan + Fixes: https://bugs.freedesktop.org/show_bug.cgi?id=91266 + Signed-off-by: Ashim + Reviewed-by: Bryce Harrington - test/any2ppm.c | 2 ++ - 1 file changed, 2 insertions(+) + src/cairo-surface-observer-private.h | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) -commit 3d94269bd427304af70ae681d5533b572d19ec3c -Author: Uli Schlachter -AuthorDate: Tue May 13 10:15:12 2014 +0200 -Commit: Bryce Harrington -CommitDate: Thu Jun 5 13:16:24 2014 -0700 +commit ad45e8f99f4ab6777559480cede7d1461a9c28fc +Author: Bryce Harrington +AuthorDate: Tue Jul 7 18:20:30 2015 -0700 +Commit: Bryce Harrington +CommitDate: Tue Jul 7 18:20:30 2015 -0700 - 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. + truetype: Drop redundant check of truetype struct - With such disastrous results on the test suite, this cannot really be usable for - real-world applications. - - Signed-off-by: Bryce Harrington + Fixes: https://bugs.freedesktop.org/show_bug.cgi?id=29010 - src/cairo-image-source.c | 65 ++++++++---------------------------------------- - 1 file changed, 10 insertions(+), 55 deletions(-) + src/cairo-truetype-subset.c | 1 - + 1 file changed, 1 deletion(-) -commit 2d89cbb30e276cec57a893d4f0d45428858e5e8d -Author: jimmyfrasche -AuthorDate: Sun May 25 20:22:16 2014 -0700 -Commit: Bryce Harrington -CommitDate: Thu Jun 5 13:14:11 2014 -0700 +commit 943ba26a20f51b39b4b102f727a26e4f5e283063 +Author: Arpit Jain +AuthorDate: Fri Jul 3 15:31:48 2015 +0530 +Commit: Bryce Harrington +CommitDate: Mon Jul 6 15:14:23 2015 -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. + test/bitmap-font: Fix use of pointer after freed pointer - Signed-off-by: jimmyfrasche - - src/cairo-surface.c | 10 ++++++++++ - 1 file changed, 10 insertions(+) - -commit ead5c7909f3db1d0d81121fc2775c458871891b2 -Author: Ravi Nanjundappa -AuthorDate: Mon May 12 14:59:03 2014 +0530 -Commit: Bryce Harrington -CommitDate: Mon May 19 17:37:38 2014 -0700 - - vg: Use EGL_NONE and GLX_NONE in place of None + The pointer 'filename' is already freed and still used as a function + argument. This patch will free the pointer 'filename' only after it is + used. - Use EGL_NONE in EGL section and GLX_NONE in GLX section - instead of None in cairo-boilerplate-vg.c + Also, the patch ensures that it frees the pointer 'filename' before any + return of this function. - Signed-off-by: Ravi Nanjundappa - Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=55805 + Fixes: https://bugs.freedesktop.org/show_bug.cgi?id=91206 + Signed-off-by: Arpit Jain + Reviewed-by: Bryce Harrington - boilerplate/cairo-boilerplate-vg.c | 8 ++++---- - 1 file changed, 4 insertions(+), 4 deletions(-) + test/bitmap-font.c | 4 +++- + 1 file changed, 3 insertions(+), 1 deletion(-) -commit d1453c512c8213115bd489b3ea8849b1c840b551 -Author: Ravi Nanjundappa -AuthorDate: Tue May 6 15:44:21 2014 +0530 -Commit: Bryce Harrington -CommitDate: Fri May 16 11:56:27 2014 -0700 +commit dced42a6801ea0f7ff9fa9f7aa3c7b2a10103884 +Author: Chris Wilson +AuthorDate: Mon Jul 6 22:26:14 2015 +0100 +Commit: Chris Wilson +CommitDate: Mon Jul 6 22:28:20 2015 +0100 - test : Maintain consistency in the usage of xcalloc + xlib: Avoid using uninitialised variable on impossible error path - 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. + In commit f6843d5cbb79c35f7b331ac31c4a55c9574928fc + Author: Arpit Jain + Date: Mon Jul 6 14:13:06 2015 -0700 - 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 -AuthorDate: Thu May 15 15:59:58 2014 +0530 -Commit: Bryce Harrington -CommitDate: Fri May 16 11:54:43 2014 -0700 - - glx: Use GLX_NONE in place of None + xlib: Fix deferencing of uninitialised 'display' - Use "GLX_NONE" in rgb and rgba attributes instead of - "None" in cairo-boilerplate-glx.c + the common error + clenaup path was clumsily fixed to use the right + variable after the error didn't set the local display variable. - 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 -AuthorDate: Wed May 7 17:15:22 2014 +0200 -Commit: Bryce Harrington -CommitDate: Fri May 16 11:11:34 2014 -0700 + Signed-off-by: Chris Wilson - Fix some memory leaks found by scan-build, the LLVM/Clang static analyzer - - Signed-off-by: Bryce Harrington - Reviewed-by: Uli Schlachter + src/cairo-xlib-render-compositor.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) - 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 -AuthorDate: Wed May 7 17:16:09 2014 +0200 -Commit: Bryce Harrington -CommitDate: Fri May 16 11:11:30 2014 -0700 +commit 84b8d7657615d3ecc11b029151dfd87704f15641 +Author: Chris Wilson +AuthorDate: Mon Jul 6 22:24:29 2015 +0100 +Commit: Chris Wilson +CommitDate: Mon Jul 6 22:28:20 2015 +0100 - Remove some potential double free + Revert "xlib: Fix deferencing of uninitialised 'display'" - Signed-off-by: Bryce Harrington - Reviewed-by: Uli Schlachter + This reverts commit f6843d5cbb79c35f7b331ac31c4a55c9574928fc. - src/cairo-truetype-subset.c | 4 ++-- - 1 file changed, 2 insertions(+), 2 deletions(-) + src/cairo-xlib-render-compositor.c | 8 ++------ + 1 file changed, 2 insertions(+), 6 deletions(-) -commit 85b05e84acd89b08e5e72849133ae84cf2cdcb54 -Author: jimmyfrasche -AuthorDate: Sun May 11 20:06:17 2014 -0700 -Commit: Bryce Harrington -CommitDate: Mon May 12 10:19:33 2014 -0700 +commit f6843d5cbb79c35f7b331ac31c4a55c9574928fc +Author: Arpit Jain +AuthorDate: Mon Jul 6 14:13:06 2015 -0700 +Commit: Bryce Harrington +CommitDate: Mon Jul 6 14:13:24 2015 -0700 - Pattern document clarification + xlib: Fix deferencing of uninitialised 'display' - 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. + Initialising 'display' to NULL and checking before deferencing during display->base. + This patch will check the deferencing of uninitialised 'display' in case, + _cairo_xlib_display_acquire does not return CAIRO_STATUS_SUCCESS. - Signed-off-by: jimmyfrasche - Reviewed-by: Bryce Harrington + Fixes: https://bugs.freedesktop.org/show_bug.cgi?id=87893 + Signed-off-by: Arpit Jain + Reviewed-by: Bryce Harrington - src/cairo-pattern.c | 17 +++++++++-------- - 1 file changed, 9 insertions(+), 8 deletions(-) + src/cairo-xlib-render-compositor.c | 8 ++++++-- + 1 file changed, 6 insertions(+), 2 deletions(-) -commit 55608e4fd6947f26789557ffc757affc509b141b -Author: Ravi Nanjundappa -AuthorDate: Mon May 5 12:34:21 2014 +0530 -Commit: Bryce Harrington -CommitDate: Tue May 6 10:22:43 2014 -0700 +commit 06a2696d5fa0ea50adb1463e2ee923ac92aabbdf +Author: Bryce Harrington +AuthorDate: Mon Jul 6 14:11:57 2015 -0700 +Commit: Bryce Harrington +CommitDate: Mon Jul 6 14:11:57 2015 -0700 - boilerplate: Maintain consistency in the usage of switch cases + cairo-gl: Still check the value of the macros - 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 + Just because they're defined doesn't mean they've been enabled. - boilerplate/cairo-boilerplate-drm.c | 12 ++++++-- - boilerplate/cairo-boilerplate-xlib.c | 12 ++++++-- - boilerplate/cairo-boilerplate.c | 53 +++++++++++++++++++++++++----------- - 3 files changed, 55 insertions(+), 22 deletions(-) + src/cairo-gl.h | 6 +++--- + 1 file changed, 3 insertions(+), 3 deletions(-) -commit 18b3cce2f5812c357e4b6310e72d72dd9ec92ed4 -Author: Bryce Harrington -AuthorDate: Tue May 6 10:18:19 2014 -0700 -Commit: Bryce Harrington -CommitDate: Tue May 6 10:18:19 2014 -0700 +commit c8b6c6066a238cf4cb04679e1149e956b1556a0c +Author: Koop Mast +AuthorDate: Mon Jan 5 12:49:25 2015 +0100 +Commit: Bryce Harrington +CommitDate: Sat Jun 27 01:14:22 2015 -0700 - Fix segfault in firefox when scrolling on certain pages + cairo-gl: Fix compiler warning if CAIRO_HAS_*_FUNCTIONS is not defined. - Bug discovered by thorsten + Fixes: https://bugs.freedesktop.org/show_bug.cgi?id=88050 - Patch from Chris Wilson - - src/cairo-xcb-surface-render.c | 3 +++ - 1 file changed, 3 insertions(+) - -commit da9ef97372fb9c22f66507e0ab37968b1131f077 -Author: Sylvestre Ledru -AuthorDate: Fri May 2 18:53:41 2014 +0200 -Commit: Bryce Harrington -CommitDate: Tue May 6 10:14:53 2014 -0700 - - Remove some useless declarations found by scan-build, the LLVM/clang static analyzer + [Updated to also still check the value of the macros] - Reviewed-by: Bryce Harrington + Signed-off-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(-) + src/cairo-gl.h | 6 +++--- + 1 file changed, 3 insertions(+), 3 deletions(-) -commit 52b137bc3e3284ecef3102b0d976fd2320e0f473 -Author: Ravi Nanjundappa -AuthorDate: Wed Apr 23 08:32:19 2014 +0530 -Commit: Bryce Harrington -CommitDate: Wed Apr 30 13:01:35 2014 -0700 +commit 776dd20c8485e4e70f42a2e66a0545cf87944ac5 +Author: Bryce Harrington +AuthorDate: Sat Jun 27 00:43:04 2015 -0700 +Commit: Bryce Harrington +CommitDate: Sat Jun 27 00:44:29 2015 -0700 - test and util: maintain consistency in the usage of ARRAY_LENGTH macro + configure: Fix typo for missing line continuation character - 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. + There is an unintentional (benign) missing line continuation "\" in the + definition of MAYBE_WARN in configure. configure completes and issues a + WARNING: - 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 -AuthorDate: Tue Apr 22 17:53:12 2014 +0530 -Commit: Bryce Harrington -CommitDate: Tue Apr 22 09:51:45 2014 -0700 - - perf: Refactor some macros to cairo-perf.h + configure: WARNING: cache variable cairo_cv_warn_maybe contains a + newline - 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. + Found and solved by Larry Baker. - Signed-off-by: Ravi Nanjundappa + Fixes: https://bugs.freedesktop.org/show_bug.cgi?id=89750 + Signed-off-by: Bryce Harrington - perf/cairo-perf-diff-files.c | 1 - - 1 file changed, 1 deletion(-) + build/configure.ac.warnings | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) -commit 2d95f803b15d3d8f70df0e7278ad7bdeaf99fb59 -Author: Bryce Harrington -AuthorDate: Thu Apr 17 23:59:36 2014 -0700 -Commit: Bryce Harrington -CommitDate: Fri Apr 18 12:33:45 2014 -0700 +commit 31291611625c21bc9ec2827cf4ccc8a1f18392ed +Author: Bryce Harrington +AuthorDate: Sat Jun 27 00:34:05 2015 -0700 +Commit: Bryce Harrington +CommitDate: Sat Jun 27 00:34:05 2015 -0700 - NEWS: Add bug links and reword feature and bug descriptions + RELEASING: Add requirement to upload ChangeLogs + + Fixes: https://bugs.freedesktop.org/show_bug.cgi?id=21676 - NEWS | 67 ++++++++++++++++++++++++++++++++++++++++++++++--------------------- - 1 file changed, 46 insertions(+), 21 deletions(-) + RELEASING | 5 +++++ + 1 file changed, 5 insertions(+) -commit cd11a4ff0421fd293279b202be800550890574bb -Author: Bryce Harrington -AuthorDate: Wed Apr 16 17:37:18 2014 -0700 -Commit: Bryce Harrington -CommitDate: Fri Apr 18 10:09:10 2014 -0700 +commit bf4f5f3a904850f0c110ca8530b1965dc969312d +Author: Bryce Harrington +AuthorDate: Fri Jun 26 16:30:06 2015 -0700 +Commit: Bryce Harrington +CommitDate: Fri Jun 26 16:30:06 2015 -0700 - perf: Refactor some common macros to cairo-perf.h + cairo-script: Return a cairo_status_t error, not FALSE - 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. + This typo results in certain paths being incorrectly recorded with + script surfaces. - Reviewed-by: Uli Schlachter + Fixes: https://bugs.freedesktop.org/show_bug.cgi?id=91054 + Signed-off-by: Bryce Harrington - 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(-) + src/cairo-script-surface.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) -commit 3e22a8580a8045e450a2f2e47c8ac36abf8882ae -Author: Uli Schlachter -AuthorDate: Fri Apr 11 10:39:39 2014 +0200 -Commit: Uli Schlachter -CommitDate: Thu Apr 17 11:32:56 2014 +0200 +commit bb24f165ff57973347b34956a371c6b33d2d9b59 +Author: John Lindgren +AuthorDate: Sun May 31 11:48:30 2015 -0400 +Commit: Bryce Harrington +CommitDate: Fri Jun 26 16:12:33 2015 -0700 - 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. + Avoid indiscriminate use of VALGRIND_MAKE_MEM_NOACCESS. - 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. + Marking stack-allocated objects as no-access creates false positives, + which distract from finding real memory errors. - test-paginated, ps2, ps3, xcb, xcb-window, xcb-window&, xcb-fallback, xlib, - xlib-window, xlib-fallback, recording + Fixes: https://bugs.freedesktop.org/show_bug.cgi?id=52548 - Signed-off-by: Uli Schlachter + Reviewed-by: Bryce Harrington - .../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(-) + src/cairo-freelist-private.h | 2 +- + src/cairo-freelist.c | 8 ++++---- + src/cairo-gstate.c | 2 +- + src/cairo-path-fixed.c | 2 +- + src/cairo-pattern.c | 10 +++++----- + src/cairo-pen.c | 2 +- + src/cairo-polygon.c | 2 +- + src/cairo-region.c | 2 +- + src/cairo-stroke-style.c | 2 +- + src/cairo-traps.c | 2 +- + src/cairo-tristrip.c | 2 +- + 11 files changed, 18 insertions(+), 18 deletions(-) -commit ddd344fb0f5a0e9a0e9a34306598a777ffb7667a -Author: Uli Schlachter -AuthorDate: Sat Apr 12 12:07:23 2014 +0200 -Commit: Uli Schlachter -CommitDate: Thu Apr 17 11:32:49 2014 +0200 +commit 1bcce4362927952b25cb916f862dde6fd35f8125 +Author: Bryce Harrington +AuthorDate: Thu Jun 25 18:54:23 2015 -0700 +Commit: Bryce Harrington +CommitDate: Thu Jun 25 18:54:23 2015 -0700 - pthread-same-source: Add ref image generation + cairo-recording-surface: Fix loss of alpha when clipping - 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. + Commit 8020e0bc introduced a regression due to a typo when copying a + mask for a cairo recording surface. It should copy the source and mask + members from the command source to the recording surface, but instead it + copies the source twice. - Thus, in this mode no thread issues can occur and the result must be usable as - reference images. + Fix suggested by Massimo. - Signed-off-by: Uli Schlachter - Reviewed-by: Bryce Harrington + Fixes: https://bugs.freedesktop.org/show_bug.cgi?id=73038 + Fixes: https://bugs.freedesktop.org/show_bug.cgi?id=73901 - test/pthread-same-source.c | 25 ++++++++++++++++++++++--- - 1 file changed, 22 insertions(+), 3 deletions(-) + src/cairo-recording-surface.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) -commit 457597e2dc6fac6c879ba51da892cf31a3c432eb -Author: Bryce W. Harrington -AuthorDate: Fri Mar 14 20:24:51 2014 +0000 -Commit: Bryce Harrington -CommitDate: Wed Apr 16 17:27:50 2014 -0700 +commit c1c3028a0cf0e7673ef82cc8f39cb6035a036944 +Author: Bryce Harrington +AuthorDate: Thu Jun 25 17:41:26 2015 -0700 +Commit: Bryce Harrington +CommitDate: Thu Jun 25 17:42:27 2015 -0700 - NEWS: Summarize recent changes + cairo-script: Fix sp. "directoriy" - 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. + Signed-off-by: Bryce Harrington - NEWS | 88 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ - 1 file changed, 88 insertions(+) + src/cairo-script-surface.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) -commit bb17403622e9ea474017e0039af8ee48b2b285db +commit f82ae573fe4748874e6dc7025016f7bf6bc8f7f3 Author: Uli Schlachter -AuthorDate: Fri Mar 14 15:31:34 2014 +0100 +AuthorDate: Sat Jun 20 10:59:52 2015 +0200 Commit: Uli Schlachter -CommitDate: Fri Mar 21 14:10:19 2014 +0100 +CommitDate: Sat Jun 20 10:59:52 2015 +0200 - mesh-rasterize: Fix number of iterations + XCB: Don't attach uploaded surfaces as snapshots - 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. + When you draw (part of) a surface to an XCB surface, the XCB backend will safe + the uploaded part as a snapshot to the input surface. This allows to re-use this + picture in case the same surface is later used again as a source. - Fixes: mesh-pattern mesh-pattern-accuracy mesh-pattern-conical - mesh-pattern-control-points mesh-pattern-fold mesh-pattern-overlap - mesh-pattern-transformed record-mesh + However, other backends do not do this and this has caused and/or highlighted + numerous bugs. Just skipping the snapshot fixes or hides these bugs. + Papers-over: https://bugs.freedesktop.org/show_bug.cgi?id=67505 Signed-off-by: Uli Schlachter - Tested-by: Bryce Harrington - src/cairo-mesh-pattern-rasterizer.c | 1 + - 1 file changed, 1 insertion(+) + src/cairo-xcb-surface-render.c | 3 +++ + 1 file changed, 3 insertions(+) -commit 372c8c314a93e0efba53319a120a9ccc2c99658b -Author: Uli Schlachter -AuthorDate: Fri Mar 14 13:47:38 2014 +0100 -Commit: Uli Schlachter -CommitDate: Fri Mar 21 14:09:37 2014 +0100 +commit e7acf4b6dc6666c2a2c54fb08e9ad6f01a1d415f +Author: Alban Browaeys +AuthorDate: Wed Jan 21 12:01:45 2015 +0100 +Commit: Bryce Harrington +CommitDate: Thu Jun 18 16:07:40 2015 -0700 - 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. + pattern: allow for a floating one pixel rounded difference. - 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. + That is if the difference between the origin and the end is bigger than + .5 round up regardless of the coordinates. - 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. + Round the difference of the floats instead of rounding the floats then + diff them. - Fixes 493 crashes in the test suite for the test-mask target. + Fixes: https://bugs.freedesktop.org/show_bug.cgi?id=84396 - Signed-off-by: Uli Schlachter - Tested-by: Bryce Harrington + Reviewed-by: Bryce Harrington - src/cairo-image-compositor.c | 2 +- - src/cairo-image-mask-compositor.c | 3 +++ - 2 files changed, 4 insertions(+), 1 deletion(-) + src/cairo-pattern.c | 10 +++++----- + 1 file changed, 5 insertions(+), 5 deletions(-) -commit bc05dbccd7dd2f137038479b30ed71c98ff81da6 -Author: Uli Schlachter -AuthorDate: Thu Feb 27 10:56:20 2014 +0100 -Commit: Bryce Harrington -CommitDate: Thu Mar 13 17:12:43 2014 -0700 +commit b4a922f62d34973ea89495b40ce8bc6378110b9e +Author: Bryce Harrington +AuthorDate: Tue Jun 16 16:42:56 2015 -0700 +Commit: Bryce Harrington +CommitDate: Thu Jun 18 12:38:59 2015 -0700 - Fix warnings from check-doc-syntax.sh + cairo-script: Rename struct member to avoid name collision on AIX - $ ./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. + On AIX, the token jmpbuf is a pre-processor macro. + cairo-script-scanner.c includes a private struct with a member named + jmpbuf which gets renamed to __jmpbuf when AIX's sys/context.h has been + included. + + While judicious ordering of includes might kludge around this problem + (by causing all references to .jmpbuf to become .__jmpbuf), it's better + to simply select a new name for the struct member that won't suffer the + collision. - Thanks to Bryce Harrington for bringing this up! + Fixes: https://bugs.freedesktop.org/show_bug.cgi?id=89339 - Signed-off-by: Uli Schlachter - Tested-by: Bryce Harrington + Signed-off-by: Bryce Harrington + Reviewed-by: Chris Wilson - 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(-) + util/cairo-script/cairo-script-private.h | 2 +- + util/cairo-script/cairo-script-scanner.c | 74 ++++++++++++++++---------------- + 2 files changed, 38 insertions(+), 38 deletions(-) -commit 0c189910539aa05125b60e59b7101e9b9685582f -Author: Bryce Harrington -AuthorDate: Thu Mar 13 15:22:40 2014 -0700 -Commit: Bryce Harrington -CommitDate: Thu Mar 13 17:12:37 2014 -0700 +commit 714a77e3f1c818bb5eec8c654c576d862ef6684c +Author: Bryce Harrington +AuthorDate: Tue Jun 16 15:18:23 2015 -0700 +Commit: Bryce Harrington +CommitDate: Thu Jun 18 12:38:55 2015 -0700 - skia: Add section definitions and code docs for skia backend - - This fixes several distcheck errors regarding missing code docs. + cairo-script: Prefer cairo from local tree - The skia backend was added in commit d7faec02, which was included in the - 1.10 release. + Use quoted includes rather than bracketed, to prefer linking to the + in-tree cairo in preference to the system cairo. - 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(-) + Signed-off-by: Bryce Harrington + Reviewed-by: Chris Wilson -commit 0eb686d5454073f65ff78520ca862d07672d2a3f -Author: Bryce Harrington -AuthorDate: Tue Feb 25 17:43:22 2014 -0800 -Commit: Bryce Harrington -CommitDate: Thu Mar 13 15:13:52 2014 -0700 + util/cairo-script/cairo-script-interpreter.c | 3 +-- + util/cairo-script/csi-bind.c | 4 ++-- + util/cairo-script/csi-exec.c | 4 ++-- + util/cairo-script/csi-replay.c | 4 ++-- + util/cairo-script/csi-trace.c | 4 ++-- + 5 files changed, 9 insertions(+), 10 deletions(-) + +commit 3ed581149f82b653e1987e746467ad8ae9ce3ca2 +Author: Bryce Harrington +AuthorDate: Tue Jun 16 15:13:31 2015 -0700 +Commit: Bryce Harrington +CommitDate: Thu Jun 18 12:38:51 2015 -0700 - Document that libglib2.0-doc is needed to avoid some xref warnings + cairo-script: Cleanup boilerplate header for consistency - Signed-off-by: Bryce Harrington + Signed-off-by: Bryce Harrington + Reviewed-by: Chris Wilson - RELEASING | 4 +++- - 1 file changed, 3 insertions(+), 1 deletion(-) + util/cairo-script/cairo-script-hash.c | 3 +-- + 1 file changed, 1 insertion(+), 2 deletions(-) -commit 8d0abb4a945a6875de956ef12883e7efe7b7fbc7 -Author: Bryce Harrington -AuthorDate: Tue Feb 25 17:09:03 2014 -0800 -Commit: Bryce Harrington -CommitDate: Thu Mar 13 15:13:34 2014 -0700 +commit d31e2418d6d9920205a154f21becca12a7b84c2a +Author: Bryce Harrington +AuthorDate: Tue Jun 16 15:06:59 2015 -0700 +Commit: Bryce Harrington +CommitDate: Thu Jun 18 12:38:47 2015 -0700 - 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. + cairo-script: Add missing copyright and boilerplate - src/cairo-surface.c:1668: warning: Parameter description for - cairo_surface_set_device_scale::y_scale is missing in source code - comment block. + Chris wrote all of the cairo script stuff. I'm making a guess about the + copyright date. - Signed-off-by: Bryce Harrington + Reviewed-by: Chris Wilson + Signed-off-by: Bryce Harrington - src/cairo-surface.c | 12 ++++++------ - 1 file changed, 6 insertions(+), 6 deletions(-) + util/cairo-script/csi-bind.c | 33 +++++++++++++++++++++++++++++++++ + util/cairo-script/csi-exec.c | 33 +++++++++++++++++++++++++++++++++ + util/cairo-script/csi-replay.c | 33 +++++++++++++++++++++++++++++++++ + util/cairo-script/csi-trace.c | 33 +++++++++++++++++++++++++++++++++ + 4 files changed, 132 insertions(+) -commit 4450af4f035fce8b468ad3ac9cd34da7bf81b688 -Author: Bryce Harrington -AuthorDate: Tue Feb 25 14:43:06 2014 -0800 -Commit: Bryce Harrington -CommitDate: Thu Mar 13 15:13:04 2014 -0700 +commit a3b6afabf670076e093850606d89e142ddf6ea09 +Author: Bryce Harrington +AuthorDate: Tue Jun 16 15:05:54 2015 -0700 +Commit: Bryce Harrington +CommitDate: Thu Jun 18 12:38:43 2015 -0700 - Mark recently added _cairo_output_stream_print_matrix private symbol - - This fixes a distcheck error about a local PLT entry. + cairo-script: Always include config.h first thing - Signed-off-by: Bryce Harrington + Reviewed-by: Chris Wilson + Signed-off-by: Bryce Harrington - src/cairo-output-stream-private.h | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) + util/cairo-script/cairo-script-file.c | 2 ++ + util/cairo-script/cairo-script-hash.c | 2 ++ + util/cairo-script/cairo-script-interpreter.c | 2 ++ + util/cairo-script/cairo-script-objects.c | 2 ++ + util/cairo-script/cairo-script-operators.c | 2 ++ + util/cairo-script/cairo-script-scanner.c | 2 ++ + util/cairo-script/cairo-script-stack.c | 2 ++ + util/cairo-script/csi-bind.c | 3 +++ + util/cairo-script/csi-exec.c | 3 +++ + util/cairo-script/csi-replay.c | 3 +++ + util/cairo-script/csi-trace.c | 3 +++ + 11 files changed, 26 insertions(+) -commit ae954ae3ea262efae221cfda18eee73b5654a729 -Author: Bryce Harrington -AuthorDate: Tue Feb 25 13:20:49 2014 -0800 -Commit: Bryce Harrington -CommitDate: Thu Mar 13 15:12:58 2014 -0700 +commit 11b6c49c103d53526e9805c8906fde5dbb2eb884 +Author: Fredrik Fornwall +AuthorDate: Sun May 31 20:36:48 2015 +0200 +Commit: Bryce Harrington +CommitDate: Fri Jun 5 20:53:11 2015 -0700 - 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 + Fix cairo_get_locale_decimal_point() on Android - doc/public/cairo-sections.txt | 3 --- - 1 file changed, 3 deletions(-) + src/cairo-misc.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) -commit f4a1a75078a844e2581615566122f4232d2a4f62 -Author: Bryce Harrington -AuthorDate: Tue Feb 25 13:17:00 2014 -0800 -Commit: Bryce Harrington -CommitDate: Thu Mar 13 15:12:50 2014 -0700 +commit 1ed318ce1337ce4d09c508eb74763bf43cce8d9f +Author: Massimo Valentini +AuthorDate: Tue Sep 23 12:37:35 2014 +0200 +Commit: Bryce Harrington +CommitDate: Thu Jun 4 15:02:01 2015 -0700 - doc: Add missing sections and symbols for public docs + polygon-intersection: Delete misleading comments and dead-code - 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. + den_det is positive because intersect_lines is called + only after _slope_compare returned > 0 and slope_compare + is returning the sign of den_det - Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=48784 + The quadratic-time intersection finder is #if 0-ed out + in src/cairo-bentley-ottman.c, but is unusable even there + since the second commit to that file. - Signed-off-by: Bryce Harrington + Fixes: https://bugs.freedesktop.org/show_bug.cgi?id=74779 + Reviewed-by: Bryce Harrington - doc/public/cairo-sections.txt | 38 ++++++++++++++++++++++++++++++++++++++ - src/cairo-surface-observer.c | 5 +++++ - src/cairo.h | 9 +++++++++ - 3 files changed, 52 insertions(+) + src/cairo-polygon-intersect.c | 60 ++----------------------------------------- + 1 file changed, 2 insertions(+), 58 deletions(-) -commit ed175b2a2bebb6def85133257bc11a875d13b0dd -Author: Uli Schlachter -AuthorDate: Thu Mar 6 09:45:08 2014 +0100 -Commit: Uli Schlachter -CommitDate: Thu Mar 6 09:51:56 2014 +0100 +commit 63f59ea89625bc2f445c5ab342c0f1c3971aabea +Author: Massimo Valentini +AuthorDate: Tue Sep 23 12:37:26 2014 +0200 +Commit: Bryce Harrington +CommitDate: Thu Jun 4 15:01:57 2015 -0700 - clip: Fix handling of special all-clipped cairo_clip_t + polygon-intersection: Try not to invoke undefined behaviour - _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. + Optimizing compilers aggressively remove code that is executed only + after an undefined behaviour occurred. - References: https://bugs.freedesktop.org/show_bug.cgi?id=75819 - Signed-off-by: Uli Schlachter + Also, the difference of two (non char) pointers hides an integer + division that, because the divisor is known at compile time, is + transformed into a multiplication by a pseudo-reciprocal, and in this + case the difference is not always a multiple of the divisor, resulting + in an invalid comparison predicate. + + Fixes: https://bugs.freedesktop.org/show_bug.cgi?id=74779 + Reviewed-by: Bryce Harrington - src/cairo-clip-boxes.c | 3 +++ - 1 file changed, 3 insertions(+) + src/cairo-polygon-intersect.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) -commit 3b261bea7d8e8094ff3899aefab6bbc8628a3585 -Author: Chris Wilson -AuthorDate: Thu Mar 6 08:34:10 2014 +0000 -Commit: Chris Wilson -CommitDate: Thu Mar 6 08:35:20 2014 +0000 +commit a3c022bb98d716bd4e3f9ce50095a72e25605fe8 +Author: Massimo Valentini +AuthorDate: Tue Sep 23 12:37:20 2014 +0200 +Commit: Bryce Harrington +CommitDate: Thu Jun 4 15:01:35 2015 -0700 - clip: Do not modify the special all-clipped cairo_clip_t + polygon-intersection: Include approximation in intersection points - Signed-off-by: Chris Wilson - Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=75819 + In Hobby's paper it is proved that INTERSECTION events can be + processed in any order by ignoring intersections between edges + non-adjacent in the active edges list. + But with respect to START/STOP events they must be processed in + order. Because START/STOP events have always exact y, it is + sufficient to know whether an integer y intersection is a + default/excess approximation of the exact to properly sort events. + + Fixes: https://bugs.freedesktop.org/show_bug.cgi?id=74779 + Reviewed-by: Bryce Harrington - src/cairo-clip-boxes.c | 8 +++++--- - 1 file changed, 5 insertions(+), 3 deletions(-) + src/cairo-polygon-intersect.c | 139 ++++++++++++++++++++---------------------- + 1 file changed, 67 insertions(+), 72 deletions(-) -commit 42fdfa812eb05ecb539af739445ec8c36f0e7ac1 -Author: Bryce Harrington -AuthorDate: Wed Mar 5 12:50:36 2014 -0800 -Commit: Bryce Harrington -CommitDate: Wed Mar 5 12:50:36 2014 -0800 +commit 9f2bbfa41fa26a44c38949ecf329b06b5585c87c +Author: Massimo Valentini +AuthorDate: Tue Sep 23 12:37:08 2014 +0200 +Commit: Bryce Harrington +CommitDate: Thu Jun 4 15:00:58 2015 -0700 - gitignore: Ignore generated tmpl dir in public docs + polygon-intersection: Do not discard intersection exactly at top edge + + Fixes: https://bugs.freedesktop.org/show_bug.cgi?id=74779 + Reviewed-by: Bryce Harrington - doc/public/.gitignore | 1 + - 1 file changed, 1 insertion(+) + src/cairo-polygon-intersect.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) -commit f88bd92e8b3d87ec728e3fee51eb82f07db8c95c -Author: Behdad Esfahbod -AuthorDate: Wed Mar 5 01:13:59 2014 -0800 -Commit: Behdad Esfahbod -CommitDate: Wed Mar 5 01:13:59 2014 -0800 +commit b9ada819953303e708a376779ff27f75ff6bc51c +Author: Bryce Harrington +AuthorDate: Thu Jun 4 14:24:31 2015 -0700 +Commit: Bryce Harrington +CommitDate: Thu Jun 4 14:24:31 2015 -0700 - Revert "[ft] Fix memory bug in copying bitmaps" + cairo-script: Improve buffer length check - This reverts commit a0f556f37fb7016aa304b7cf0e811c0d38f0b969. + Quells the following warning: - The change was clearly wrong now that I read. I was probably - tricked by what was fixed in the follow-up commit - e738079302a968b7b1fb9101cd4d92a8887bedce. + cairo-script-scanner.c: In function ‘_translate_string’: + cairo-script-scanner.c:1623:18: warning: comparison between signed and + unsigned integer expressions [-Wsign-compare] + if (buf_len <= 8 + 2*string->len) { + ^ - src/cairo-ft-font.c | 4 +++- - 1 file changed, 3 insertions(+), 1 deletion(-) + util/cairo-script/cairo-script-scanner.c | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) -commit 5c9fdcb4aa9c3c32fe4760586c11924dc5fb47ef -Author: Koji Egashira -AuthorDate: Mon Apr 29 18:31:08 2013 +0900 -Commit: Bryce Harrington -CommitDate: Mon Mar 3 17:21:37 2014 -0800 +commit f032133e6d5ad05157fc46609d8c63103028342c +Author: Julien Isorce +AuthorDate: Wed Sep 3 10:58:18 2014 +0100 +Commit: Bryce Harrington +CommitDate: Thu Jun 4 14:12:12 2015 -0700 - image: Add NULL checks for return value of _pixman_image_for_color() + build: Show all disabled features in cairo-features.h - This fixes crash in pixman_image_composite32(). + Even features which are disabled by default should appear in + cairo-features.h. - Originally fixed by Yoshitaro Makise. + Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=83359 + (Patch approved by Behdad Esfahbod in bug tracker.) - 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 -AuthorDate: Mon Mar 3 01:16:25 2014 +0100 -Commit: Benjamin Otte -CommitDate: Mon Mar 3 01:16:25 2014 +0100 - - xlib: Fix typo in documentation + Reviewed-by: Bryce Harrington - src/cairo-xlib-display.c | 2 +- + build/configure.ac.features | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) -commit f1709c298c355499a18796f389fa0fd9bc52b8c3 -Author: Bryce Harrington -AuthorDate: Wed Feb 26 18:55:25 2014 -0800 -Commit: Bryce Harrington -CommitDate: Wed Feb 26 18:55:25 2014 -0800 +commit 5d150ee111c222f09e78f4f88540964476327844 +Author: Nathan Froyd +AuthorDate: Mon May 4 13:38:41 2015 -0400 +Commit: Bryce Harrington +CommitDate: Thu Jun 4 13:25:23 2015 -0700 - Correct spelling of "tessellator" throughout code - - Based on patch suggested by Homer Hsing + Support new-style __atomic_* primitives - 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 -AuthorDate: Wed Feb 26 18:44:46 2014 -0800 -Commit: Bryce Harrington -CommitDate: Wed Feb 26 18:44:46 2014 -0800 - - Add comment to explain _cairo_edge_compute_intersection_* + Recent versions of GCC/clang feature a new set of compiler intrinsics + for performing atomic operations, motivated by the operations needed to + support the C++11 memory model. These intrinsics are more flexible than + the old __sync_* intrinstics and offer efficient support for atomic load + and store operations. - Patch by Homer Hsing + Having the load appear atomic to the compiler is particular important + for tools like ThreadSanitizer so they don't report false positives on + memory operations that we intend to be atomic. - Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=50412 + Patch from Nathan Froyd - src/cairo-fixed-private.h | 3 ++- - 1 file changed, 2 insertions(+), 1 deletion(-) + build/aclocal.cairo.m4 | 12 +++++++ + src/cairo-atomic-private.h | 90 ++++++++++++++++++++++++++++++++++++++++++++++ + 2 files changed, 102 insertions(+) -commit e555dfc7173897bc0819c715e8897cd1c886e2a3 -Author: Bryce Harrington -AuthorDate: Wed Feb 26 18:42:41 2014 -0800 -Commit: Bryce Harrington -CommitDate: Wed Feb 26 18:42:41 2014 -0800 +commit d1dda5eeb218d22c79eb82714f5d7c9869f70260 +Author: Adrian Johnson +AuthorDate: Thu May 21 22:37:06 2015 +0930 +Commit: Adrian Johnson +CommitDate: Thu May 21 22:40:01 2015 +0930 - Add explanation to _cairo_surface_create_in_error - - Patch by Homer Hsing + cff: ensure glyph widths are positive when font matrix yy is negative - Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=50413 + Bug 90538 - src/cairo-surface.c | 10 ++++++++++ - 1 file changed, 10 insertions(+) + src/cairo-cff-subset.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) -commit be206ddf20e7b4e0e87d91c7a18cbdb9cfcec8e6 -Author: Bryce Harrington -AuthorDate: Wed Feb 26 18:40:12 2014 -0800 -Commit: Bryce Harrington -CommitDate: Wed Feb 26 18:40:12 2014 -0800 +commit f52f0e2feb1ad0a4de23c475a8c020d41a1764a8 +Author: Zan Dobersek +AuthorDate: Fri May 8 01:50:25 2015 -0700 +Commit: Bryce Harrington +CommitDate: Mon May 18 15:03:29 2015 -0700 - Add explanation to enum _cairo_int_status + Manually transpose the matrix in _cairo_gl_shader_bind_matrix() - Patch based on suggestion by Homer Hsing + To maintain compatibility with OpenGL ES 2.0, the matrix in + _cairo_gl_shader_bind_matrix() should be manually transposed, + and GL_FALSE passed as the transpose argument to the + glUniformMatrix3fv() call as it is the only valid value for + that parameter in OpenGL ES 2.0. - Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=50416 + Reviewed-by: Bryce Harrington + Acked-by: "Henry (Yu) Song" - src/cairo-error-private.h | 7 +++++-- - 1 file changed, 5 insertions(+), 2 deletions(-) + src/cairo-gl-shaders.c | 8 ++++---- + 1 file changed, 4 insertions(+), 4 deletions(-) -commit 19b31bbe7018dbe031c650e7497b19a0607ad453 -Author: Bryce Harrington -AuthorDate: Wed Feb 26 18:36:15 2014 -0800 -Commit: Bryce Harrington -CommitDate: Wed Feb 26 18:36:15 2014 -0800 +commit 8b798c320f6fd2d87349d0a716304474022bc5ea +Author: Bryce Harrington +AuthorDate: Fri Apr 24 18:23:46 2015 -0700 +Commit: Bryce Harrington +CommitDate: Fri Apr 24 18:23:46 2015 -0700 - image: Fix bad HTML generation in code docs for cairo-format-stride-for-width + Fix broken canvas text font size in Inkscape - Patch from Simon Kågedal Reimer + An earlier fix to bug 84324 added a regression in the font size of + canvas text in Inkscape when compiled with the Quartz backend. + + Patch from Andrea Canciani - Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=63257 + Fixes: https://bugs.freedesktop.org/show_bug.cgi?id=84324 + Reviewed-by: Bryce Harrington - src/cairo-image-surface.c | 2 +- + src/cairo-quartz-font.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) -commit 7b50883577df0949f793cc6dbfda281e96119dcd -Author: Bryce Harrington -AuthorDate: Wed Feb 19 11:25:16 2014 -0800 -Commit: Bryce Harrington -CommitDate: Tue Feb 25 12:14:36 2014 -0800 +commit d5ffe67008afe46c030b31afc0803321b6479990 +Author: Behdad Esfahbod +AuthorDate: Thu Apr 23 14:26:14 2015 -0700 +Commit: Behdad Esfahbod +CommitDate: Thu Apr 23 14:26:14 2015 -0700 - 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 + Remove debug printf; ouch! - src/cairo-gl-surface.c | 3 +++ - 1 file changed, 3 insertions(+) + src/cairo-ft-font.c | 1 - + 1 file changed, 1 deletion(-) -commit 44a09f462c8ff59f864967f45f9b31e473632b7a -Author: Bryce Harrington -AuthorDate: Tue Feb 18 21:13:53 2014 -0800 -Commit: Bryce Harrington -CommitDate: Tue Feb 25 12:14:09 2014 -0800 +commit 853e822c9c8f6d86c730d27e99458dea8b6717e1 +Author: Behdad Esfahbod +AuthorDate: Tue Apr 21 14:31:53 2015 -0700 +Commit: Behdad Esfahbod +CommitDate: Tue Apr 21 14:31:53 2015 -0700 - 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 + Oops, fixup previous commit - src/cairo-mesh-pattern-rasterizer.c | 10 +++++----- - 1 file changed, 5 insertions(+), 5 deletions(-) + src/cairo-font-face.c | 7 +++++++ + src/cairoint.h | 1 + + 2 files changed, 8 insertions(+) -commit 19f412bb1faa5391a03c121c31f7ad94fd275d82 -Author: Bryce Harrington -AuthorDate: Tue Feb 18 21:01:07 2014 -0800 -Commit: Bryce Harrington -CommitDate: Tue Feb 25 12:13:56 2014 -0800 +commit bb01fd879448b47074d4d800fe1620a57caf1dbe +Author: Behdad Esfahbod +AuthorDate: Tue Apr 21 14:29:41 2015 -0700 +Commit: Behdad Esfahbod +CommitDate: Tue Apr 21 14:29:41 2015 -0700 - 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. + [ft] Return CAIRO_STATUS_FILE_NOT_FOUND if font file can't be opened - Reviewed-by: Chris Wilson - - src/cairo-xml-surface.c | 4 ++-- - 1 file changed, 2 insertions(+), 2 deletions(-) - -commit dc8ca191f584f837f4c2b70d0ebbe2c9d87575cf -Author: Bryce Harrington -AuthorDate: Tue Feb 18 20:56:09 2014 -0800 -Commit: Bryce Harrington -CommitDate: Tue Feb 25 12:13:50 2014 -0800 - - xml: Drop unused variable + A common source of error when people are setting up pango on a new + device is when font files don't have the right permissions and cannot + be opened. Cairo was returning out-of-memory before, making the + Pango error message useless. - Reviewed-by: Chris Wilson + With this change, cairo will return file-not-found, and pango prints + that out. It's still not ideal; a ENOACCESS equivalent would have + been better. - src/cairo-xml-surface.c | 1 - - 1 file changed, 1 deletion(-) + src/cairo-ft-font.c | 50 +++++++++++++++++++++++++++++++++++--------------- + 1 file changed, 35 insertions(+), 15 deletions(-) -commit 9b8a752249c69ba94461b3ef6d919c1b86ae6fab -Author: Bryce Harrington -AuthorDate: Tue Feb 18 20:13:57 2014 -0800 -Commit: Bryce Harrington -CommitDate: Tue Feb 25 12:13:40 2014 -0800 +commit 040ae0ce1934ac27c6394dc74405faad34cd5913 +Author: 江頭幸路 +AuthorDate: Fri Apr 17 20:59:17 2015 +0900 +Commit: Bryce Harrington +CommitDate: Mon Apr 20 17:16:18 2015 -0700 - test: Quell warning for deprecated g_type_init() + Avoid appending an empty slot to an user data array when user_data is NULL. - 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. + Otherwise, calling cairo_set_user_data(cr, key, 0, 0) many times + causes a long user data array, almost all of whose slots are empty. + It leads to unnecessarily much memory consumption and long execution time of + cairo_set_user_data(cr, key, 0, 0) and cairo_get_user_data(cr, key) after + it. - test/any2ppm.c:864:5: warning: ‘g_type_init’ is deprecated - (declared at /usr/include/glib-2.0/gobject/gtype.h:669) + This issue probably happens since the commit + http://cgit.freedesktop.org/cairo/commit/?id=9341c254a - Reviewed-by: Chris Wilson + Reviewed-by: Bryce Harrington - test/any2ppm.c | 2 ++ - 1 file changed, 2 insertions(+) + src/cairo-array.c | 3 +++ + 1 file changed, 3 insertions(+) -commit 75e671c29b2f2916c41af46f8c3707539b235674 -Author: Bryce Harrington -AuthorDate: Tue Feb 18 18:10:20 2014 -0800 -Commit: Bryce Harrington -CommitDate: Tue Feb 25 12:13:34 2014 -0800 +commit 89942c6af00af8b72babeae676376f4cf8911c16 +Author: Andrea Canciani +AuthorDate: Thu Apr 9 01:31:34 2015 +0200 +Commit: Andrea Canciani +CommitDate: Thu Apr 16 11:28:50 2015 +0200 - 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. + test: Correct bug number in clip-complex-bug61592 - 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." + The filename of the C source file is correct, but the test name (both + as function name and as reference image name) has a typo in it. - Reviewed-by: Chris Wilson + Related to https://bugs.freedesktop.org/show_bug.cgi?id=61592 - test/any2ppm.c | 2 ++ - 1 file changed, 2 insertions(+) + test/clip-complex-bug61592.c | 2 +- + test/reference/clip-complex-bug61492.ref.png | Bin 105 -> 0 bytes + test/reference/clip-complex-bug61592.ref.png | Bin 0 -> 105 bytes + 3 files changed, 1 insertion(+), 1 deletion(-) -commit a346e40ed33e69c7c03be3aa1b7b0065e4ee1d07 -Author: Bryce Harrington -AuthorDate: Tue Feb 18 17:37:22 2014 -0800 -Commit: Bryce Harrington -CommitDate: Tue Feb 25 12:13:10 2014 -0800 +commit e38e942ac0ef6f5366cabdb22df9858fa4c05ea1 +Author: Руслан Ижбулатов +AuthorDate: Sat Apr 4 15:58:53 2015 +0000 +Commit: Bryce Harrington +CommitDate: Mon Apr 13 17:43:35 2015 -0700 - perf: Guarantee path width is non-negative - - This quells the following warning: + win32: Add a win32 boilerplate that uses a real window - perf/micro/hatching.c:39:5: warning: cannot optimize loop, the - loop counter may overflow + This way it uses the codepath for cairo_win32_surface_create_with_format(), + instead of the cairo_win32_surface_create_with_dib(). - Width and height aren't going to be negative so enforce it so that the - compiler can do whatever optimization it wants to do. + Without the recording tests (which terminate the testsuite) + the testsuite results for win32 are: - Reviewed-by: Chris Wilson - - perf/micro/hatching.c | 4 ++-- - 1 file changed, 2 insertions(+), 2 deletions(-) - -commit 4144307dbfbe7b297135d9ea4b080cae7e06b997 -Author: Ryan Lortie -AuthorDate: Tue Feb 4 10:47:40 2014 +0000 -Commit: Behdad Esfahbod -CommitDate: Wed Feb 5 08:40:38 2014 -0500 - - cairo-version: fix docs build + 284 Passed, 167 Failed [1 crashed, 9 expected], 23 Skipped + win32 (rgb24): 1 crashed! + win32 (rgb24): 17 error + win32 (rgb24): 155 failed + win32 (argb32): 1 crashed! + win32 (argb32): 17 error + win32 (argb32): 68 failed + win32-window-color (rgb24): 1 crashed! + win32-window-color (rgb24): 17 error + win32-window-color (rgb24): 148 failed + win32-window-coloralpha (argb32): 1 crashed! + win32-window-coloralpha (argb32): 17 error + win32-window-coloralpha (argb32): 66 failed - 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. + Reviewed-by: Bryce Harrington - src/cairo-version.c | 1 + - 1 file changed, 1 insertion(+) + boilerplate/cairo-boilerplate-win32.c | 242 ++++++++++++++++++++++++++++++++-- + 1 file changed, 228 insertions(+), 14 deletions(-) -commit 39b7d5138eb83cc2d4f3ab6039894cc61c7fe4c7 -Author: Bryce Harrington -AuthorDate: Wed Jan 29 17:07:04 2014 -0800 -Commit: Bryce Harrington -CommitDate: Fri Jan 31 11:26:02 2014 -0800 +commit 16898ba11b4d6e9e2e64bb2d02d0fb5adbe266e2 +Author: Руслан Ижбулатов +AuthorDate: Thu Mar 26 19:33:43 2015 +0000 +Commit: Bryce Harrington +CommitDate: Mon Apr 13 17:43:28 2015 -0700 - cairo-script: Compare status with CSI enums - - CSI_STATUS_SUCCESS is defined as equivalent to CAIRO_STATUS_SUCCESS. - We should prefer the former when comparing against csi_status_t - variables, else we'll get a warning: - - cairo-script-interpreter.c:637:23: warning: comparison between - ‘csi_status_t’ and ‘enum _cairo_status’ [-Wenum-compare] + win32: Add cairo API to set up a Win32 surface for an HDC with an alpha channel. - Signed-off-by: Bryce Harrington - Reviewed-by: Chris Wilson + Signed-off-by: Руслан Ижбулатов + Reviewed-by: Bryce Harrington - util/cairo-script/cairo-script-interpreter.c | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) + src/cairo-win32.h | 4 ++ + src/win32/cairo-win32-display-surface.c | 68 +++++++++++++++++++++++++-------- + 2 files changed, 56 insertions(+), 16 deletions(-) -commit 18d66c88a2f1068fb490efa33ead93d0e2d71c41 -Author: Bryce Harrington -AuthorDate: Wed Jan 29 10:22:51 2014 -0800 -Commit: Bryce Harrington -CommitDate: Fri Jan 31 11:25:57 2014 -0800 +commit 654b4a8efe579b05e60c0bd0b7722d474366b1cc +Author: Andrea Canciani +AuthorDate: Thu Mar 26 17:36:16 2015 +0100 +Commit: Andrea Canciani +CommitDate: Wed Apr 8 14:32:17 2015 +0200 - cairo-script: Error if asked to decompress with missing compression lib - - This quells the following warning: + test: Fix coverage-intersecting-triangles reference - warning: enumeration value ‘LZO’ not handled in switch [-Wswitch-enum] + Commit 4e3ef57bc892b0b046c486390adc7164a1de64de added + coverage-intersecting-triangles with an incorrect reference and + generator. The test checks the rasterization of two overlapping + triangles in the following position: - The LZO enum value is defined and used elsewhere, even if lzo support - isn't available. + . . + |\ /| + | X | + |/ \| + .---. - This situation might arise if cairo scripts were generated on one system - with lzo, and then replayed on a system without it. For now simply - error out if this occurs. + Since the triangles have both vertical and horizontal sides of size + x/WIDTH, the expected coverage is 3/4 (75%) of (x/WIDTH)^2. The + original code, instead, was checking for a coverage of 0.75*x/WIDTH, + as if one of the sides was always 1 unit long. - Signed-off-by: Bryce Harrington - Reviewed-by: Chris Wilson + The image and xlib backends still suffer from some jitter, caused by + the approximation of the actual coverage by means of sampling. For + this reason their references are still considered XFAIL, even though + their result now looks mostly consistent with the expected reference. - util/cairo-script/cairo-script-file.c | 8 ++++---- - util/cairo-script/cairo-script-operators.c | 16 ++++++++-------- - 2 files changed, 12 insertions(+), 12 deletions(-) + test/coverage.c | 2 +- + .../coverage-intersecting-triangles.image.xfail.png | Bin 0 -> 14444 bytes + test/reference/coverage-intersecting-triangles.ref.png | Bin 209 -> 262 bytes + .../reference/coverage-intersecting-triangles.xfail.png | Bin 14444 -> 0 bytes + 4 files changed, 1 insertion(+), 1 deletion(-) -commit 1ce452db4ca348944ca88edfdadb6c53a4d55733 -Author: Bryce Harrington -AuthorDate: Wed Jan 29 10:10:24 2014 -0800 -Commit: Bryce Harrington -CommitDate: Fri Jan 31 11:25:53 2014 -0800 +commit 2cf2d8e340a325adb205baf8e4bd64e1d1858008 +Author: Bryce Harrington +AuthorDate: Sat Apr 4 15:49:18 2015 -0700 +Commit: Bryce Harrington +CommitDate: Sat Apr 4 15:49:18 2015 -0700 - cairo-trace: Stringify CAIRO_STATUS_JBIG2_GLOBAL_MISSING - - This error enum was added last September when JBIG2 support was added. - Support it as well in the tracing code. This fixes this warning: - - trace.c:1544:5: warning: enumeration value - ‘CAIRO_STATUS_JBIG2_GLOBAL_MISSING’ not handled in switch [-Wswitch] - - Signed-off-by: Bryce Harrington - Reviewed-by: Chris Wilson + Fix spellings descibed, indicies, stange - util/cairo-trace/trace.c | 1 + - 1 file changed, 1 insertion(+) + src/cairo-pdf-surface.c | 2 +- + src/drm/cairo-drm-intel-debug.c | 2 +- + test/zero-alpha.c | 2 +- + 3 files changed, 3 insertions(+), 3 deletions(-) -commit 9a29805f4e666577e5fe72fec62ecc76719862d9 -Author: Bryce Harrington -AuthorDate: Wed Jan 29 10:04:41 2014 -0800 -Commit: Bryce Harrington -CommitDate: Fri Jan 31 11:25:48 2014 -0800 +commit 71392653803277cec6deea9e7aa4696f8b22dd73 +Author: Bryce Harrington +AuthorDate: Wed Mar 18 18:46:35 2015 -0700 +Commit: Bryce Harrington +CommitDate: Wed Mar 18 18:46:35 2015 -0700 - test: Drop unused path variable in two recently added tests - - Signed-off-by: Bryce Harrington - Reviewed-by: Chris Wilson + NEWS: Sp. fix - test/paint-with-alpha-group-clip.c | 2 -- - test/rotate-stroke-box.c | 2 -- - 2 files changed, 4 deletions(-) + NEWS | 8 ++++---- + 1 file changed, 4 insertions(+), 4 deletions(-) -commit 0723290a6f7261be51312d0c53a7d4188a31bb1c -Author: Bryce Harrington -AuthorDate: Wed Jan 29 10:01:50 2014 -0800 -Commit: Bryce Harrington -CommitDate: Fri Jan 31 11:25:43 2014 -0800 +commit 904f1fdc1d7f13d4443bafd760db7395c5030ca7 +Author: Bryce Harrington +AuthorDate: Wed Mar 18 15:49:41 2015 -0700 +Commit: Bryce Harrington +CommitDate: Wed Mar 18 15:49:41 2015 -0700 - test: Handle error in fgets call in ps-eps test - - Most likely this is just a theoretical problem since we just checked - feof, but this quells the following warning: - - ps-eps.c:216:8: warning: ignoring return value of ‘fgets’, declared with - attribute warn_unused_result [-Wunused-result] - - Signed-off-by: Bryce Harrington - Reviewed-by: Chris Wilson + surface: Clarify flush documentation - test/ps-eps.c | 6 +++++- - 1 file changed, 5 insertions(+), 1 deletion(-) + src/cairo-surface.c | 12 ++++++------ + 1 file changed, 6 insertions(+), 6 deletions(-) -commit 1b522f81e22fd320e6962ffb54121c10ece39275 -Author: Bryce Harrington -AuthorDate: Wed Jan 29 09:57:24 2014 -0800 -Commit: Bryce Harrington -CommitDate: Fri Jan 31 11:25:32 2014 -0800 +commit b19b06c46318e2fe80e2c36175075d11bf4a04ee +Author: Andrea Canciani +AuthorDate: Thu Mar 12 17:02:02 2015 +0100 +Commit: Bryce Harrington +CommitDate: Fri Mar 13 13:18:32 2015 -0700 - test: Replace deprecated rsvg_init() in any2ppm test + Harden make-cairo-test-constructors.sh - As of libsvg 2.35 calling g_type_init() is sufficient. + The make-cairo-test-constructors.sh script executes several commands + without checking their success. This can lead to undetected errors, + like those fixed in 86fad78fcd2bf987249890aea4eabcce02a58f45. - Signed-off-by: Bryce Harrington - Reviewed-by: Chris Wilson - - configure.ac | 2 +- - test/any2ppm.c | 1 - - 2 files changed, 1 insertion(+), 2 deletions(-) - -commit 5de25951a43f51cade42549ae60e52ffb391d61e -Author: Behdad Esfahbod -AuthorDate: Mon Jan 27 17:34:00 2014 -0500 -Commit: Behdad Esfahbod -CommitDate: Mon Jan 27 17:34:00 2014 -0500 - - Preserve current-point in copy_path()/append_path() sequence + The script now exits with an error status if no file is + input. Moreover, it sets the '-e' flag, so that if a command fails, + the whole script is immediately terminated with an error. - Fixes path-currentpoint test. - - src/cairo-path-fixed.c | 3 +++ - 1 file changed, 3 insertions(+) - -commit 8d2e24479a1efbeeddced3574c1d9e92b8ee578d -Author: Behdad Esfahbod -AuthorDate: Mon Jan 27 17:31:12 2014 -0500 -Commit: Behdad Esfahbod -CommitDate: Mon Jan 27 17:32:58 2014 -0500 - - [tests] Add path-currentpoint + In the Makefile.am, the script result is now checked and the target + file is removed upon error. This ensures that the + 'cairo-test-constructors.c' target completes succesfully only if no + error occurred. - Checks whether copy_path()/append_path() preserves current-point. - Currently failing. + Reviewed-by: Bryce Harrington - test/Makefile.sources | 1 + - test/path-currentpoint.c | 89 ++++++++++++++++++++++++++++++++++++++++++++++++ - 2 files changed, 90 insertions(+) + test/Makefile.am | 2 +- + test/make-cairo-test-constructors.sh | 4 +++- + 2 files changed, 4 insertions(+), 2 deletions(-) -commit 2a7f133639bed86a29dd9693cb78c0aa42eaff30 -Author: Uli Schlachter -AuthorDate: Sun Jan 19 20:06:25 2014 +0100 -Commit: Uli Schlachter -CommitDate: Sun Jan 19 20:06:25 2014 +0100 +commit ec0153940d694c71324ed0d9cf895ac49ed19674 +Author: Bryce Harrington +AuthorDate: Fri Mar 13 13:17:28 2015 -0700 +Commit: Bryce Harrington +CommitDate: Fri Mar 13 13:18:32 2015 -0700 - cairo svg: Use \n instead of /n in bitmap fonts - - Signed-off-by: Uli Schlachter + Start 1.14.3 development - src/cairo-svg-surface.c | 2 +- + cairo-version.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) -commit b56b971141bf22ee3452b7f6f5e2dfd373b99e13 +commit 5182d9bc5e0c8ca9c2943cd249e22fd28f582892 Author: Adrian Johnson -AuthorDate: Sat Jan 11 20:49:05 2014 +1030 +AuthorDate: Wed Mar 11 19:16:38 2015 +1030 Commit: Adrian Johnson -CommitDate: Sat Jan 11 21:03:58 2014 +1030 +CommitDate: Wed Mar 11 19:16:38 2015 +1030 - type1: strip space from end of font name + doc: add index of new symbols in 1.14 - src/cairo-type1-subset.c | 3 +++ + doc/public/cairo-docs.xml | 3 +++ 1 file changed, 3 insertions(+) -commit ee0e2b9272f6f21092fde7bee9b9237e682d4147 -Author: Adrian Johnson -AuthorDate: Sat Jan 11 20:57:44 2014 +1030 -Commit: Adrian Johnson -CommitDate: Sat Jan 11 21:03:58 2014 +1030 +commit db6668cd0a836416e74cf6556bfd3e2bc1d3a4d4 +Author: Bryce Harrington +AuthorDate: Tue Mar 10 19:55:35 2015 -0700 +Commit: Bryce Harrington +CommitDate: Tue Mar 10 19:57:19 2015 -0700 - ps: add font DSC comments + RELEASING: Update contacts + + Add a CC to the cairo@ list itself. + + Drop updating of the GNOME dependencies page; this appears to have not + been updated since 2008. - src/cairo-ps-surface.c | 34 +++++++++++++++++++++++++--------- - 1 file changed, 25 insertions(+), 9 deletions(-) + RELEASING | 20 ++++++++------------ + 1 file changed, 8 insertions(+), 12 deletions(-) -commit 2d3ee70ed37ed2120d5c5f75277172620e32084c -Author: Adrian Johnson -AuthorDate: Sat Jan 11 19:09:55 2014 +1030 -Commit: Adrian Johnson -CommitDate: Sat Jan 11 20:57:34 2014 +1030 +commit 93422b3cb5e0ef8104b8194c8873124ce2f5ea2d +Author: Bryce Harrington +AuthorDate: Tue Mar 10 18:42:50 2015 -0700 +Commit: Bryce Harrington +CommitDate: Tue Mar 10 18:42:50 2015 -0700 - ps: cairo_set_page_size does not need to be in eps output + version: bump for cairo-1.14.2 release - src/cairo-ps-surface.c | 68 ++++++++++++++++++++++++++------------------------ - 1 file changed, 36 insertions(+), 32 deletions(-) + cairo-version.h | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) -commit 26d0edbc35504624cbe96e95e338351e219bb262 -Author: Adrian Johnson -AuthorDate: Sat Jan 11 10:42:33 2014 +1030 -Commit: Adrian Johnson -CommitDate: Sat Jan 11 10:46:46 2014 +1030 +commit 061d54745a0c20b5da08ec4ff8b958d20fd6a143 +Author: Bryce Harrington +AuthorDate: Tue Mar 10 16:24:37 2015 -0700 +Commit: Bryce Harrington +CommitDate: Tue Mar 10 16:24:37 2015 -0700 - ps: use setpagedevice to set page size + KNOWN_ISSUES: Restore known issues file as a stub - https://bugs.freedesktop.org/show_bug.cgi?id=73452 + Apparently distcheck requires this file be present. - src/cairo-ps-surface.c | 40 +++++++++++++++++++++++++++++++++++++++- - 1 file changed, 39 insertions(+), 1 deletion(-) + KNOWN_ISSUES | 3 +++ + 1 file changed, 3 insertions(+) -commit 97f6e2005d9cbc9c9dd7cc21445df7c08e084c83 -Author: Marek Kasik -AuthorDate: Thu Jan 9 17:28:32 2014 +0100 -Commit: Adrian Johnson -CommitDate: Fri Jan 10 20:51:08 2014 +1030 +commit fb41ed34415dd58fe57490f93c6151a4bec483f1 +Author: Bryce Harrington +AuthorDate: Tue Mar 10 13:08:29 2015 -0700 +Commit: Bryce Harrington +CommitDate: Tue Mar 10 13:08:29 2015 -0700 - font: Generate PDFs with correct font names - - Escape PostScript names of loaded fonts. These can not - contain white spaces and delimiter characters when saving - them to a PostScript file or a PDF file. + NEWS: Note about the OS X support - src/cairo-cff-subset.c | 2 ++ - src/cairo-scaled-font-subsets-private.h | 15 +++++++++++++ - src/cairo-scaled-font-subsets.c | 40 +++++++++++++++++++++++++++++++++ - src/cairo-truetype-subset.c | 35 +++-------------------------- - src/cairo-type1-subset.c | 9 +++----- - 5 files changed, 63 insertions(+), 38 deletions(-) + NEWS | 5 +++++ + 1 file changed, 5 insertions(+) -commit f81b1406755a1e63f0c44996ca9ce3802b1877ba -Author: Adrian Johnson -AuthorDate: Wed Jan 8 07:45:20 2014 +1030 -Commit: Adrian Johnson -CommitDate: Wed Jan 8 07:45:20 2014 +1030 +commit 845d2420e0cbfd338bab63764c4fe3c4273ab47e +Author: Andrea Canciani +AuthorDate: Tue Mar 10 12:10:35 2015 +0100 +Commit: Bryce Harrington +CommitDate: Tue Mar 10 12:42:16 2015 -0700 - ps: fix imagemask with pattern source failure on some printers - - When /PaintProc is invoked the pattern dict is pushed onto the stack. - Ensure this dict is removed. + Update README with new minimum MacOSX requirements - https://bugs.freedesktop.org/show_bug.cgi?id=69485 + 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. - src/cairo-ps-surface.c | 4 ++-- - 1 file changed, 2 insertions(+), 2 deletions(-) + README | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) -commit 2afc941d7ffad3bd37a915e82342640772d4df5b -Author: Adrian Johnson -AuthorDate: Fri Jan 3 21:06:24 2014 +1030 -Commit: Adrian Johnson -CommitDate: Fri Jan 3 22:19:40 2014 +1030 +commit 86fad78fcd2bf987249890aea4eabcce02a58f45 +Author: Bryce Harrington +AuthorDate: Tue Mar 10 12:15:40 2015 -0700 +Commit: Bryce Harrington +CommitDate: Tue Mar 10 12:15:40 2015 -0700 - ps: remove duplicate /Interpolate from image dictionary + 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. - http://lists.freedesktop.org/archives/poppler/2014-January/010748.html + Original patch by Andrea Canciani - src/cairo-ps-surface.c | 2 -- - 1 file changed, 2 deletions(-) + 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 2974416dfc56e1b3a59001e482679f8601abd7d5 -Author: Adrian Johnson -AuthorDate: Thu Dec 26 17:18:41 2013 +1030 -Commit: Adrian Johnson -CommitDate: Thu Dec 26 17:18:41 2013 +1030 +commit f8407332214ba87bbd652f09ce3618a973f27878 +Author: Andrea Canciani +AuthorDate: Tue Mar 10 12:10:34 2015 +0100 +Commit: Bryce Harrington +CommitDate: Tue Mar 10 10:56:00 2015 -0700 - Add test for paint with alpha and clipping bug + Update KNOWN_ISSUES documentation - Add test case for https://bugs.freedesktop.org/show_bug.cgi?id=68382 + 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. - Something has regressed in the recording surface. All the recording - surface based backends lose the alpha from the paint_With_alpha. + Reviewed-by: Bryce Harrington - test/Makefile.sources | 1 + - test/paint-with-alpha-group-clip.c | 62 +++++++++++++++++++++ - test/reference/paint-with-alpha-group-clip.ref.png | Bin 0 -> 135 bytes - 3 files changed, 63 insertions(+) + KNOWN_ISSUES | 10 ---------- + 1 file changed, 10 deletions(-) -commit 5cafaa7b3bc045a7a26a11986c16fd9419a09922 -Author: Adrian Johnson -AuthorDate: Thu Dec 26 15:28:29 2013 +1030 -Commit: Adrian Johnson -CommitDate: Thu Dec 26 15:28:29 2013 +1030 +commit c45e323555356da0b509c3bb380ccb08b4dea9db +Author: Bryce Harrington +AuthorDate: Tue Mar 10 04:45:18 2015 -0700 +Commit: Bryce Harrington +CommitDate: Tue Mar 10 10:55:55 2015 -0700 - pdf: fix rectangle stroke with non rectilinear pen + NEWS: Finish filling in changes - src/cairo-pdf-operators.c | 4 +++- - 1 file changed, 3 insertions(+), 1 deletion(-) + NEWS | 27 +++++++++++++++++++++++++-- + 1 file changed, 25 insertions(+), 2 deletions(-) -commit acd78d721e9d1c9c74c88889fbc4580700962ed1 -Author: Adrian Johnson -AuthorDate: Thu Dec 26 15:27:30 2013 +1030 -Commit: Adrian Johnson -CommitDate: Thu Dec 26 15:27:30 2013 +1030 +commit 79dbe1bad8089aa3e0b9a9a63443a74cd9e22f32 +Author: Bryce Harrington +AuthorDate: Sat Mar 7 00:30:40 2015 -0800 +Commit: Bryce Harrington +CommitDate: Sat Mar 7 00:30:40 2015 -0800 - Add test for rectangle path optimization with non rectilinear pen - - This fails on pdf/ps. + NEWS: Update for changes through Nov 2014 - test/Makefile.sources | 1 + - test/reference/rotate-stroke-box.ref.png | Bin 0 -> 150 bytes - test/rotate-stroke-box.c | 51 +++++++++++++++++++++++++++++++ - 3 files changed, 52 insertions(+) + NEWS | 47 +++++++++++++++++++++++++++++++++++++++++++++++ + 1 file changed, 47 insertions(+) -commit 040a9f678bfb0f0b89a0273b729c4e9f2bc23e4f -Author: Behdad Esfahbod -AuthorDate: Mon Dec 16 19:27:02 2013 -0500 -Commit: Behdad Esfahbod -CommitDate: Mon Dec 16 19:27:38 2013 -0500 +commit 581f8137052db60d072ee5a4cefdf7292cddab05 +Author: Bryce Harrington +AuthorDate: Fri Mar 6 23:54:49 2015 -0800 +Commit: Bryce Harrington +CommitDate: Fri Mar 6 23:54:49 2015 -0800 - Check for XRenderSolidFill() + HACKING: Add link to git tutorial and wordsmith a bit - configure.ac | 2 +- - src/cairo-xlib-xrender-private.h | 4 ++++ - 2 files changed, 5 insertions(+), 1 deletion(-) + HACKING | 18 ++++++++---------- + 1 file changed, 8 insertions(+), 10 deletions(-) -commit dcbe16eb40b488f89f2398181f4c3f8a65f84b52 -Author: Adrian Johnson -AuthorDate: Sat Dec 7 15:48:26 2013 +1030 -Commit: Adrian Johnson -CommitDate: Sat Dec 7 15:54:49 2013 +1030 +commit c0458b456007f718747be7fd690e674df5026059 +Author: Bryce Harrington +AuthorDate: Fri Mar 6 23:31:25 2015 -0800 +Commit: Bryce Harrington +CommitDate: Fri Mar 6 23:35:34 2015 -0800 - pdf/ps: avoid outputting excess decimal places in matrices - - Sometimes as a result of rounding errors in matrix transformations the - matrices in ps/pdf output look like: - - 0.000000000000000061 1 1 -0.000000000000000061 0 842 cm - - This patch rounds to zero matrix elements that are very small compared to - other elements in the same matrix. + csi-trace: Add --version and --help args to utility - src/cairo-output-stream-private.h | 5 +++++ - src/cairo-output-stream.c | 39 ++++++++++++++++++++++++++++++++++ - src/cairo-pdf-operators.c | 17 +++++---------- - src/cairo-pdf-surface.c | 44 +++++++++++++++++---------------------- - src/cairo-ps-surface.c | 40 ++++++++++++++--------------------- - 5 files changed, 84 insertions(+), 61 deletions(-) + util/cairo-script/csi-trace.c | 10 +++++++++- + 1 file changed, 9 insertions(+), 1 deletion(-) -commit 31eff5c6eb57ad379689748fd8c60a5ffe0ba481 -Author: Uli Schlachter -AuthorDate: Sat Nov 16 19:05:35 2013 +0100 -Commit: Uli Schlachter -CommitDate: Sat Nov 16 19:05:35 2013 +0100 +commit 3a7d411539975728f90b7d0bb55e3bee2e8600bb +Author: Bryce Harrington +AuthorDate: Fri Mar 6 22:26:22 2015 -0800 +Commit: Bryce Harrington +CommitDate: Fri Mar 6 23:35:34 2015 -0800 - Correct usage of CAIRO_STACK_ARRAY_LENGTH - - This macro wants the array type as its argument and calls sizeof() on it - internally. + Revert "xlib: Remove queued event from _XReadEvents" - Signed-off-by: Uli Schlachter + This reverts commit e7fc8f405beeeb1048f69fe22923170a137b805e. - src/cairo-xcb-surface-render.c | 2 +- - src/cairo-xlib-render-compositor.c | 2 +- - src/cairo-xlib-surface-shm.c | 4 ++-- - 3 files changed, 4 insertions(+), 4 deletions(-) + src/cairo-xlib-surface-shm.c | 5 ----- + 1 file changed, 5 deletions(-) -commit 8c73949e44d4201fafc899693964c934f7072fa6 -Author: Henry Song -AuthorDate: Tue Nov 12 09:53:29 2013 -0800 -Commit: Martin Robinson -CommitDate: Wed Nov 13 17:09:29 2013 -0800 +commit c3605bd3adcae1f12731230a1ea599d15e3c8cad +Author: Bryce Harrington +AuthorDate: Fri Mar 6 23:29:53 2015 -0800 +Commit: Bryce Harrington +CommitDate: Fri Mar 6 23:29:53 2015 -0800 - gl: Fix one off issue in context cleanup - - ctx->vertex_shaders is only CAIRO_GL_VAR_TYPE_MAX large, so we should - abort the loop before the index is equal to CAIRO_GL_VAR_TYPE_MAX. - - Signed-off-by: Martin Robinson + git-ignore: Add build's test-driver - src/cairo-gl-shaders.c | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) + build/.gitignore | 2 ++ + 1 file changed, 2 insertions(+) -commit 56a195a76554abe1d5567c733ba679058fe01303 +commit 246d5c1d477cc246788f5695a08c4c414a36fbf5 Author: Bryce Harrington -AuthorDate: Wed Oct 30 18:43:42 2013 -0700 +AuthorDate: Fri Mar 6 19:14:58 2015 -0800 Commit: Bryce Harrington -CommitDate: Thu Oct 31 20:34:15 2013 -0700 +CommitDate: Fri Mar 6 19:19:13 2015 -0800 - Fix SSIZE_T definition problem when making with MSYS on Windows7 - - Patch provided by Martin Schlemmer on the - mailing list. + doc: Drop extraneous para's - Reviewed-by: Bryce Harrington + These may have been required in the past, but just trip up distcheck + today. The generated docs still look fine. - util/cairo-missing/cairo-missing.h | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) + src/cairo-version.c | 12 ++++++------ + 1 file changed, 6 insertions(+), 6 deletions(-) -commit 66f4140e73e423bfed640cfde5cb50c08cf29e2e -Author: Kouhei Sutou -AuthorDate: Mon Oct 28 22:37:54 2013 +0900 +commit e4f6d07efbf37513b1f2341091839d66b94e3355 +Author: Bryce Harrington +AuthorDate: Fri Mar 6 18:34:07 2015 -0800 Commit: Bryce Harrington -CommitDate: Thu Oct 31 20:34:04 2013 -0700 +CommitDate: Fri Mar 6 18:34:07 2015 -0800 - cairo_create(): Add finished surface check - - Without this change, the following program crashes: - - #include - #include - - int - main(int argc, char **argv) - { - cairo_t *cr; - cairo_surface_t *finished_surface; - - finished_surface = cairo_svg_surface_create ("/tmp/xxx.svg", 1.0, 1.0); - cairo_surface_finish (finished_surface); - - cr = cairo_create (finished_surface); - cairo_destroy (cr); - - cairo_surface_destroy (finished_surface); - - return 0; - } - - Reviewed-by: Bryce Harrington + gitignore: logs, manuals - src/cairo.c | 2 ++ - 1 file changed, 2 insertions(+) + .gitignore | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) -commit b9263fea14c4c6266140205c0bffb3ae93750999 -Author: egag -AuthorDate: Wed Oct 9 14:14:02 2013 +0200 +commit e7fc8f405beeeb1048f69fe22923170a137b805e +Author: Henry (Yu) Song +AuthorDate: Thu Mar 5 00:20:42 2015 +0000 Commit: Bryce Harrington -CommitDate: Thu Oct 31 20:33:33 2013 -0700 +CommitDate: Thu Mar 5 17:27:14 2015 -0800 - Fixes stroke-clipped, i.c. of a dashed stroke + xlib: Remove queued event from _XReadEvents - Similar to 1f4d05b55c96347aa4240190fda27f951b00c539 - 'Fix calling '_cairo_spline_intersect' for in-bounds checking of splines' + Following patch fixes a memory leak in xlib surface. - Reviewed-by: Bryce Harrington + Reviewed-by: Bryce Harrington - src/cairo-path-stroke-traps.c | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) + src/cairo-xlib-surface-shm.c | 5 +++++ + 1 file changed, 5 insertions(+) -commit 98fef3cef2d0f7f463a2e4f9f1b35b09f7b6ea77 -Author: Søren Sandmann Pedersen -AuthorDate: Wed Oct 9 15:53:16 2013 -0400 -Commit: Søren Sandmann Pedersen -CommitDate: Tue Oct 22 14:27:43 2013 -0400 +commit 4e680ff4bb3a5089b2ec40a96f8e292aa3cfe5f4 +Author: Michael Haubenwallner +AuthorDate: Fri Feb 27 14:25:41 2015 +0100 +Commit: Bryce Harrington +CommitDate: Thu Mar 5 17:03:32 2015 -0800 - _cairo_color_double_to_short(): Use standard rounding algorithm - - The _cairo_color_double_to_short() function converts a double - precision floating point value in the range of [0.0, 1.0] to a - uint16_t integer by dividing the [0.0, 1.0] range into 65536 - equal-sized intervals and then associating each interval with an - integer. - - Under the assumption that an integer i corresponds to the real value i - / 65535.0 this algorithm introduces more error than necessary as can - be seen from the following picture showing the analogous - transformation for two-bit integers: - - +-----------+-----------+-----------+-----------+ - 0b00 | 0b01 | 0b10 | 0b11 - +-----------+-----------+-----------+-----------+ - - which shows that some floating point values are not converted to the - integer that would minimize the error in value that that integer - corresponds to. - - Instead, this patch uses standard rounding, which makes the diagram - look like this: - - +-------+---------------+---------------+-------+ - 0b00 | 0b01 | 0b10 | 0b11 - +-------+---------------+---------------+-------+ - - It's clear that if the values corresponding to the given integers are - fixed, then it's not possible to decrease the resulting error by - moving any of the interval boundaries. - - See this thread for more information: - - http://lists.freedesktop.org/archives/cairo/2013-October/024691.html - - Reference images updated: - - pthread-similar.ref.png - record-paint-alpha.ref.png - record90-paint-alpha.argb32.ref - record90-paint-alpha.rgb24.ref.png - xcb-huge-image-shm.ref.png - xcb-huge-subimage.ref.png + headers: fix include order for AIX, bug#89354 - All of these have only one-step differences to the old images. + also for cairo-xcb-private.h - src/cairo-color.c | 11 +++-------- - test/reference/pthread-similar.ref.png | Bin 170 -> 176 bytes - test/reference/record-paint-alpha.ref.png | Bin 256 -> 245 bytes - test/reference/record90-paint-alpha.argb32.ref.png | Bin 105 -> 105 bytes - test/reference/record90-paint-alpha.rgb24.ref.png | Bin 105 -> 105 bytes - test/reference/xcb-huge-image-shm.ref.png | Bin 97 -> 97 bytes - test/reference/xcb-huge-subimage.ref.png | Bin 97 -> 97 bytes - 7 files changed, 3 insertions(+), 8 deletions(-) + src/cairo-xcb-private.h | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) -commit 6f05ecf488314e4b0c6c6b0110963c449bebe7d7 -Author: Adrian Johnson -AuthorDate: Fri Oct 11 19:59:50 2013 +1030 -Commit: Adrian Johnson -CommitDate: Fri Oct 11 19:59:50 2013 +1030 +commit 733de40e876f41ae390ae06fdf9789a48651a4e9 +Author: Michael Haubenwallner +AuthorDate: Fri Feb 27 11:22:04 2015 +0100 +Commit: Bryce Harrington +CommitDate: Thu Mar 5 17:03:28 2015 -0800 - type1-subset: don't rename glyphs used by seac operator - - Bug 70364 + headers: fix include order for AIX, bug#89354 - src/cairo-type1-subset.c | 13 +++++++------ - 1 file changed, 7 insertions(+), 6 deletions(-) + 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 f1eefee985b4361386a167e80d9836593ade59b9 -Author: Chris Wilson -AuthorDate: Sun Oct 6 09:57:44 2013 +0100 -Commit: Chris Wilson -CommitDate: Sun Oct 6 09:57:44 2013 +0100 +commit 94d30d7160bc1dfabac22ffb9cc810ceb9a35ead +Author: Michael Haubenwallner +AuthorDate: Thu Feb 26 15:11:05 2015 +0100 +Commit: Bryce Harrington +CommitDate: Thu Mar 5 17:03:18 2015 -0800 - win32: Reorder font declarations to be in natural order - - Reported-by: John Emmas - Signed-off-by: Chris Wilson + perf: fix include order for AIX, bug#89354 - src/win32/cairo-win32-font.c | 90 +++++++++++++++++++++----------------------- - 1 file changed, 43 insertions(+), 47 deletions(-) + perf/cairo-perf-report.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) -commit 49366c5e9e7d5afd0daef4c53a41472e020145eb -Author: Uli Schlachter -AuthorDate: Thu Oct 3 17:53:34 2013 +0200 -Commit: Uli Schlachter -CommitDate: Thu Oct 3 17:53:34 2013 +0200 +commit 15c427bc771e8a7018718eca3855f7de39438457 +Author: Michael Haubenwallner +AuthorDate: Thu Feb 26 16:00:01 2015 +0100 +Commit: Bryce Harrington +CommitDate: Thu Mar 5 17:02:23 2015 -0800 - cairo-xlib: Fix out of bounds array access in format cache - - The cairo-xlib backend maintains a mapping form cairo_format_t to xrender - formats. This is done via an array. The size of this array is - CAIRO_FORMAT_RGB16_565 + 1 which evaluates to 5. - - However, CAIRO_FORMAT_RGB30 has the numeric value 5, too. Thus, using this value - as an index into the array would actually read the following force_precision - field from cairo_xlib_display_t. - - This could be triggered by passing CAIRO_FORMAT_RGB30 to - _cairo_xlib_display_get_xrender_format(). From a quick look, I didn't find any - code which would allow doing this, but neither did I find anything allowing - CAIRO_FORMAT_RGB16_565, so it's better to handle this correctly than assert()ing - for this to never happen. - - Signed-off-by: Uli Schlachter + perf/micro: fix include order for AIX, bug#89354 - src/cairo-xlib-private.h | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) + 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 217bed84dda43f018e59a4d9a229f63095e1aa06 -Author: Uli Schlachter -AuthorDate: Thu Oct 3 17:44:27 2013 +0200 -Commit: Uli Schlachter -CommitDate: Thu Oct 3 17:44:27 2013 +0200 +commit 0916d580db94bccbf8d31cc58a8198a0c1f8b309 +Author: Michael Haubenwallner +AuthorDate: Thu Feb 26 15:03:43 2015 +0100 +Commit: Bryce Harrington +CommitDate: Thu Mar 5 17:02:14 2015 -0800 - Revert "[xlib] Fast-path the likely case of retrieving a known xrender_format" - - This reverts commit 09a2b2ed3189fe12483cbd673c24ceddc2c20f3f. - - Back in 2009, _cairo_xlib_display_get_xrender_format() had to acquire a lock to - do its job. The above commit added a fast-path which avoided the lock in most - cases. - - However, in 2010 commit f74ad37e66bbdcc4d727ed6d931dde870d84c2f4 modified the - locking in the cairo-xlib backend and now this function never takes any locks. - - Thus, the fast-path that was added a year earlier now just does the same thing - that the regular code does and the list of cached formats was checked twice. - Reverting the earlier commit fixes this. - - Signed-off-by: Uli Schlachter + test: fix include order for AIX, bug#89354 - src/cairo-xlib-display.c | 6 ------ - 1 file changed, 6 deletions(-) + 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 592e6a98031cccfae8551bcd86c1f5134726a4f6 -Author: Uli Schlachter -AuthorDate: Sun Sep 15 14:05:42 2013 +0200 -Commit: Uli Schlachter -CommitDate: Thu Oct 3 16:59:11 2013 +0200 +commit e9a615a2f94697c64a6702c1e3b24c59b156cc71 +Author: Michael Haubenwallner +AuthorDate: Thu Feb 26 16:24:55 2015 +0100 +Commit: Bryce Harrington +CommitDate: Thu Mar 5 16:57:09 2015 -0800 - README: Don't mention XFAIL_TESTS anymore - - The variable XFAIL_TESTS is not used anymore since commit e90073f7ddc. + define _GETDELIM for getline() on AIX - Instead, we now have special reference images that show the wrong output and the - test suite fails a test if it does not match the expected, wrong output. + 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. - Signed-off-by: Uli Schlachter + Fixes: https://bugs.freedesktop.org/show_bug.cgi?id=89356 + Reviewed-by: Bryce Harrington - test/README | 19 +++++++++---------- - 1 file changed, 9 insertions(+), 10 deletions(-) + perf/cairo-perf-report.c | 2 ++ + 1 file changed, 2 insertions(+) -commit bc89be2fff92968a1b585e75371ae2a8a26592e9 -Author: Uli Schlachter -AuthorDate: Sun Sep 29 13:12:55 2013 +0200 -Commit: Uli Schlachter -CommitDate: Thu Oct 3 16:58:52 2013 +0200 +commit f72bd7c7574fc8fdc1f495f3a50111329851edc5 +Author: Michael Haubenwallner +AuthorDate: Thu Feb 26 15:23:01 2015 +0100 +Commit: Bryce Harrington +CommitDate: Thu Mar 5 14:48:28 2015 -0800 - Remove XFAIL_TESTS from Makefile.am - - The variable XFAIL_TESTS is not used anymore since commit e90073f7ddc. - - The description for the known failures are moved into the respective tests as - comments. - - The following descriptions were dropped: - - - surface-pattern-big: Didn't really explain the failure - - big-line: Test isn't failing any more - - self-intersecting: Only XFAIL on quartz, but description doesn't match this - - The following tests don't have a xfail reference image and seem to fail just - because of not having a reference image at all (I kept their description for - now): + skip MAP_NORESERVE when unsupported - big-trap, long-lines, self-copy-overlap + Fixes a compilation on AIX ('MAP_NORESERVE' undeclared) - Signed-off-by: Uli Schlachter + Fixes: https://bugs.freedesktop.org/show_bug.cgi?id=89340 + Signed-off-by: Bryce Harrington - test/Makefile.am | 73 ------------------------------------------ - test/alpha-similar.c | 4 +++ - test/big-trap.c | 1 + - test/degenerate-dash.c | 5 +++ - test/degenerate-path.c | 4 +++ - test/device-offset-scale.c | 4 +++ - test/in-fill-empty-trapezoid.c | 5 +++ - test/long-lines.c | 1 + - test/scale-offset-image.c | 1 + - test/self-copy-overlap.c | 5 +++ - 10 files changed, 30 insertions(+), 73 deletions(-) + test/cairo-test-trace.c | 4 ++++ + util/cairo-sphinx/sphinx.c | 4 ++++ + 2 files changed, 8 insertions(+) -commit 5e6e4536716197ea0605732d32959c57ea8bb140 -Author: Adrian Johnson -AuthorDate: Sun Sep 29 22:23:31 2013 +0930 -Commit: Adrian Johnson -CommitDate: Sun Sep 29 22:23:31 2013 +0930 +commit ac75ab9f30ef10ee5973d42223f4b51acca93333 +Author: Michael Haubenwallner +AuthorDate: Thu Feb 26 14:18:30 2015 +0100 +Commit: Bryce Harrington +CommitDate: Thu Mar 5 12:00:48 2015 -0800 - pdf: stencil masks may be opaque + fix conflicting types for 'sync' on AIX, bug#89338 - src/cairo-pdf-surface.c | 11 +++++++---- - 1 file changed, 7 insertions(+), 4 deletions(-) + src/cairo-surface-observer.c | 12 ++++++------ + src/cairo-xlib-surface-shm.c | 4 ++-- + 2 files changed, 8 insertions(+), 8 deletions(-) -commit d3a8d5a9c266b79b0059dd309b5e3eff3ce81a64 -Author: Adrian Johnson -AuthorDate: Sun Sep 29 22:18:06 2013 +0930 -Commit: Adrian Johnson -CommitDate: Sun Sep 29 22:18:06 2013 +0930 +commit 70cc8f250b5669e757b4f044571ba0f71e3dea9e +Author: Andrea Canciani +AuthorDate: Tue Dec 9 16:13:00 2014 +0100 +Commit: Andrea Canciani +CommitDate: Thu Feb 5 15:13:46 2015 +0100 - pdf: Support stencil masks with jpeg/jpx/jbig2 embedding + 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-pdf-surface.c | 204 +++++++++++++++++++++++++++++++----------------- - 1 file changed, 131 insertions(+), 73 deletions(-) + src/cairo-quartz-font.c | 10 ++++------ + 1 file changed, 4 insertions(+), 6 deletions(-) -commit 07940ecd6055e29addcdb4c14e4449a06a30bf4a -Author: Adrian Johnson -AuthorDate: Sun Sep 29 12:42:59 2013 +0930 -Commit: Adrian Johnson -CommitDate: Sun Sep 29 13:08:02 2013 +0930 +commit 91f128bf7a1233a7fc2e164f95279987e32a3532 +Author: Massimo Valentini +AuthorDate: Wed Sep 11 18:10:38 2013 +0200 +Commit: Bryce Harrington +CommitDate: Mon Feb 2 16:33:06 2015 -0800 - pdf: combine source and mask images into single image + win32: Fix crash from win32 surface's image size too small - Since PDF stores the alpha component of images in a separate stream - which can have a different resolution and encoding to the color - components we can optimize the case where the source and mask are both images. + 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. - If the source and mask are both images with the same extents and the - source is opaque, combine the images into a single PDF image (ie the - source is written the the image stream and the mask is written to the - smask stream). + Fixes: https://bugs.freedesktop.org/show_bug.cgi?id=53121 + Reviewed-by: Bryce Harrington - src/cairo-pdf-surface-private.h | 2 + - src/cairo-pdf-surface.c | 466 +++++++++++++++++++++++++++++----------- - 2 files changed, 347 insertions(+), 121 deletions(-) + src/win32/cairo-win32-display-surface.c | 8 ++++---- + 1 file changed, 4 insertions(+), 4 deletions(-) -commit c1ac8db7e60bcec8235b09729b34154e95790534 -Author: Chris Wilson -AuthorDate: Fri Sep 27 16:35:08 2013 +0100 -Commit: Chris Wilson -CommitDate: Fri Sep 27 16:37:24 2013 +0100 +commit cca8b1960b0091c53235d9dc4cde8a33010c5bbf +Author: Emanuele Aina +AuthorDate: Tue Dec 16 14:58:55 2014 +0100 +Commit: Andrea Canciani +CommitDate: Tue Jan 20 18:14:52 2015 +0100 - trace: Fix operand emission + cairo-trace: Fix duplicated surface push on similar-image - Recent updates (in the past couple of years) to firefox have exposed - numerous bugs in the way we emit the operands. A few off-by-ones, - missing surfaces and outright bugs all of which are intermixed into - producing a corrupt stack. + The current code results in trace lines with the source surface being + pushed on the stack two times instead of one: - Reported-by: Siarhei Siamashka - Signed-off-by: Chris Wilson + 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 | 232 +++++++++++++++++++++++++++++++++++++---------- - 1 file changed, 182 insertions(+), 50 deletions(-) + util/cairo-trace/trace.c | 3 +-- + 1 file changed, 1 insertion(+), 2 deletions(-) -commit 0c2faf6621c4983e2ec2bea7c722a5cd3d89cc6d +commit ebd23accc8722db838f6db12f7489f16fe6016ce Author: Uli Schlachter -AuthorDate: Fri Sep 27 15:37:08 2013 +0200 +AuthorDate: Sat Dec 6 17:04:07 2014 +0100 Commit: Uli Schlachter -CommitDate: Fri Sep 27 15:42:24 2013 +0200 +CommitDate: Sat Jan 17 20:12:39 2015 +0100 - fill_reduces_to_source(): Handle failure of color_to_pixel() - - The function color_to_pixel() can fail for unsupported pixman image formats, but - fill_reduces_to_source() ignored this possibility. - - Fix this by using the return value of color_to_pixel(): - - Fixes the following compiler warnings: - - cairo-image-compositor.c: In function 'fill_boxes': - cairo-image-compositor.c:349:15: warning: 'pixel' may be used uninitialized in this function [-Wmaybe-uninitialized] - cairo-image-compositor.c: In function 'fill_rectangles': - cairo-image-compositor.c:304:18: warning: 'pixel' may be used uninitialized in this function [-Wmaybe-uninitialized] + xlib-xcb: Don't be lazy and use the real xcb_screen_t Signed-off-by: Uli Schlachter - src/cairo-image-compositor.c | 3 +-- - 1 file changed, 1 insertion(+), 2 deletions(-) + src/cairo-xlib-xcb-surface.c | 33 ++++++++++++++++++--------------- + 1 file changed, 18 insertions(+), 15 deletions(-) -commit 38a925460b35c82833dc4d508e7a0e7e84242318 -Author: Bryce Harrington -AuthorDate: Thu Sep 26 10:58:56 2013 -0700 -Commit: Bryce Harrington -CommitDate: Thu Sep 26 10:59:14 2013 -0700 +commit b47209a03feeed2172f35a6d79ba1176fedd5e17 +Author: Uli Schlachter +AuthorDate: Sat Dec 6 16:04:46 2014 +0100 +Commit: Uli Schlachter +CommitDate: Sat Jan 17 20:11:59 2015 +0100 - test: Drop unnecessary math.h include + 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). - Commit 0ac81988 refactored away fmin; nothing else from math.h is + 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 - test/pixman-downscale.c | 1 - - 1 file changed, 1 deletion(-) + 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 337ab1f8d9e29086bfb4001508b28835b41c6390 -Author: Chris Wilson -AuthorDate: Tue Sep 17 16:28:19 2013 +0100 -Commit: Chris Wilson -CommitDate: Tue Sep 17 16:37:47 2013 +0100 +commit 02e4efc961be40d266d4df0acaf3271219529017 +Author: Andrea Canciani +AuthorDate: Mon Dec 22 12:49:00 2014 +0100 +Commit: Andrea Canciani +CommitDate: Sat Jan 3 14:59:51 2015 +0100 - font: Push the last reference dec into the backend->destroy() callback + font: Actually perform destruction of fonts - In order to close a race between locking the backend and resurrecting a - font via the cache, we need to keep the font face alive until after we - take the backend lock. Once we have that lock, we can drop our reference - and test if that was the last. Otherwise we must abort the destroy(). + Commit 337ab1f8d9e29086bfb4001508b28835b41c6390 introduced delayed + font destruction to overcome a race, but prevented the correct cleanup + of the font cache. - This fixes the double-free exposed by multithreaded applications trying - to create and destroy the same font concurrently. + This caused fonts to stay in the cache and caused a crash in the + api-special-cases (when running the test suite with -f). - Reported-by: Weeble - Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=69470 - Signed-off-by: Chris Wilson + Fixes api-special-cases, + https://bugs.freedesktop.org/show_bug.cgi?id=87567 - src/cairo-font-face.c | 43 +++++++++++++++++++++++++++++++------------ - src/cairo-ft-font.c | 18 ++++++++---------- - src/cairo-quartz-font.c | 3 ++- - src/cairo-toy-font-face.c | 7 ++++--- - src/cairo-user-font.c | 2 +- - src/cairoint.h | 7 +++++-- - src/win32/cairo-win32-font.c | 7 ++++--- - 7 files changed, 55 insertions(+), 32 deletions(-) + src/cairo-font-face.c | 5 +++-- + 1 file changed, 3 insertions(+), 2 deletions(-) -commit 0ac81988c199df1a6652dc0ea72627122bf95c6c +commit 028d286e611d46755bb3d1e9932805de2ec35765 Author: Chris Wilson -AuthorDate: Tue Sep 17 08:32:29 2013 +0100 +AuthorDate: Wed Dec 31 10:54:43 2014 +0000 Commit: Chris Wilson -CommitDate: Tue Sep 17 08:37:38 2013 +0100 +CommitDate: Wed Dec 31 11:01:45 2014 +0000 - test/pixman-downscale: Open-code fmin() + 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: - fmin() requires a bump to either _XOPEN_SOURCE_ >= 600 (POSIX 2004) or - c99 - which is a needless dependency for a single simple routine. + ==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 - test/pixman-downscale.c | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) + src/cairo-xlib-source.c | 14 ++++++++++---- + 1 file changed, 10 insertions(+), 4 deletions(-) -commit 9c75065ecefe18557c9d56e1c973215f01f3cd40 -Author: Uli Schlachter -AuthorDate: Mon Sep 16 12:45:21 2013 +0200 -Commit: Uli Schlachter -CommitDate: Mon Sep 16 12:59:03 2013 +0200 +commit 4a225fca5f121c31ddaa0af80a13bf95a7f21a5b +Author: Andrea Canciani +AuthorDate: Thu Nov 20 17:22:30 2014 +0100 +Commit: Bryce Harrington +CommitDate: Sat Dec 6 17:38:02 2014 -0800 - xcb: Remove useless error handling - - All the *_reply() functions in XCB return a pointer to their result and as last - argument they get a xcb_generic_error_t** where pointers to errors are stored, - if any occurs. + test: Free test list - However, a request can either fail or succeed. This means that if the returned - result is a NULL pointer, then an error occurred and the other way around: If - the error pointer is set to non-NULL, then the function must have returned NULL. + 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. - Thus, all the code, which just checks if an error occurred and which does not - care about the exact error code, does not need to get the error pointer at all. - In this case, xcb will free() the error internally. + Fixes the following valgrind error: - While doing this, I noticed that _cairo_xcb_connection_get_image() always - succeeds and thus its return value can be replaced with the GetImage result. + 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: Uli Schlachter + Signed-off-by: Bryce Harrington - src/cairo-xcb-connection-core.c | 32 ++++++++++---------------------- - src/cairo-xcb-connection-shm.c | 6 ++---- - src/cairo-xcb-private.h | 5 ++--- - src/cairo-xcb-surface.c | 23 ++++++++--------------- - 4 files changed, 22 insertions(+), 44 deletions(-) + test/cairo-test-runner.c | 1 + + 1 file changed, 1 insertion(+) -commit 440624cdf2bd55ac1620e697cc481a8fbbb1c657 -Author: Uli Schlachter -AuthorDate: Sun Sep 15 15:00:02 2013 +0200 -Commit: Uli Schlachter -CommitDate: Mon Sep 16 12:58:44 2013 +0200 +commit 9806f437b42056124314976f35a2d32cefa508a8 +Author: Andrea Canciani +AuthorDate: Thu Nov 20 17:22:31 2014 +0100 +Commit: Bryce Harrington +CommitDate: Sat Dec 6 17:38:02 2014 -0800 - test/multi-page: Fix use-after-free + test: Release owned pattern + + The pattern created by cairo_pattern_create_rgb() is owned by the + caller, hence it needs to be released. - Commit f9dcd07d22a5269 changed the way the file name is allocated and introduced - a use-after-free in doing so. + Fixes the following valgrind error: - Signed-off-by: Uli Schlachter + 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/multi-page.c | 4 ++-- - 1 file changed, 2 insertions(+), 2 deletions(-) + test/api-special-cases.c | 4 +++- + 1 file changed, 3 insertions(+), 1 deletion(-) -commit 1d00550784d052e9b72b3c91d5769f771033037c +commit 40201f4b1ab52c85922b2b7ae05dd862159a1aa0 Author: Uli Schlachter -AuthorDate: Sun Sep 15 14:50:20 2013 +0200 +AuthorDate: Fri Dec 5 14:43:26 2014 +0100 Commit: Uli Schlachter -CommitDate: Mon Sep 16 12:58:38 2013 +0200 +CommitDate: Sat Dec 6 10:25:30 2014 +0100 - image: Handle PIXMAN_a8r8g8b8_sRGB in switch + tor-scan-converter: Correctly align 64bit types - Fixes the following compiler warning: + 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. - cairo-image-surface.c: In function '_cairo_format_from_pixman_format': - cairo-image-surface.c:93: warning: enumeration value 'PIXMAN_a8r8g8b8_sRGB' not - handled in switch + 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. - Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=58726 - Signed-off-by: Uli Schlachter - - src/cairo-image-surface.c | 3 +++ - 1 file changed, 3 insertions(+) - -commit 966bf2fe6a8c29f4d10b20f982a4ab198a441c78 -Author: Uli Schlachter -AuthorDate: Sun Sep 15 16:58:05 2013 +0200 -Commit: Uli Schlachter -CommitDate: Mon Sep 16 12:57:57 2013 +0200 - - check-doc-syntax: Don't hardcode path to awk + This problem was introduced with commit 03c3d4b7c15. - Instead of expecting awk in /usr/bin, this commit changes the code to call awk - through a shell so that $PATH is searched. + 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. - Since this awk script shouldn't really be called manually, this is done by - removing the shebang from the awk script, marking it non-executable and fixing - up the caller. + 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. - Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=67674 - Reviewed-by: Bryce Harrington + Reported-by: Nicolas Setton Signed-off-by: Uli Schlachter + Reviewed-by: Bryce Harrington - src/check-doc-syntax.awk | 2 -- - src/check-doc-syntax.sh | 2 +- - 2 files changed, 1 insertion(+), 3 deletions(-) + src/cairo-tor-scan-converter.c | 38 +++++++++++++++++++++++--------------- + 1 file changed, 23 insertions(+), 15 deletions(-) -commit a8a805b8d9bbbfed9986ecc71e76859a5353730f -Author: Uli Schlachter -AuthorDate: Fri Sep 13 22:18:08 2013 +0200 -Commit: Uli Schlachter -CommitDate: Mon Sep 16 12:55:01 2013 +0200 +commit 5c82d91a5e15d29b1489dcb413b24ee7fdf59934 +Author: Bryce Harrington +AuthorDate: Wed Dec 3 19:28:15 2014 -0800 +Commit: Bryce Harrington +CommitDate: Fri Dec 5 19:16:43 2014 -0800 - cairo-gobject: Require at least glib 2.14 + image: Fix crash in _fill_xrgb32_lerp_opaque_spans - cairo-gobject uses g_once_init_enter() and g_once_init_leave(). These functions - were added in glib 2.14 and thus cairo needs at least this version for its - gobject helper functions. + If a span length is negative don't go out of bounds processing the fill + data. - Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=69239 - Signed-off-by: Uli Schlachter + Patch thanks to Ilya Sakhnenko on mailing list. + + Signed-off-by: Bryce Harrington - configure.ac | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -commit 412a4c34d9207c339fd16a99756ea96082dc993f -Author: Adrian Johnson -AuthorDate: Sun Sep 15 21:27:50 2013 +0930 -Commit: Adrian Johnson -CommitDate: Sun Sep 15 21:27:50 2013 +0930 - - test: update mime-data to test jbig2 mime types - - test/global.jb2 | Bin 0 -> 151 bytes - test/image1.jb2 | Bin 0 -> 143 bytes - test/image2.jb2 | Bin 0 -> 92 bytes - test/mime-data.c | 97 ++++++++++++++++++++++++++- - test/reference/mime-data.base.argb32.ref.png | Bin 185 -> 243 bytes - test/reference/mime-data.base.rgb24.ref.png | Bin 185 -> 243 bytes - test/reference/mime-data.pdf.ref.png | Bin 6482 -> 7563 bytes - test/reference/mime-data.ps.ref.png | Bin 4554 -> 4705 bytes - test/reference/mime-data.ref.png | Bin 185 -> 243 bytes - test/reference/mime-data.script.ref.png | Bin 2041 -> 2130 bytes - test/reference/mime-data.svg.ref.png | Bin 6264 -> 6437 bytes - 11 files changed, 96 insertions(+), 1 deletion(-) - -commit 5c0caa6f82374ec38a33d5f25a725f60bc121887 -Author: Adrian Johnson -AuthorDate: Sat Sep 14 20:59:56 2013 +0930 -Commit: Adrian Johnson -CommitDate: Sun Sep 15 20:50:46 2013 +0930 - - pdf: support JBIG2 mime data - - JBIG2 images may have shared global data that is stored in a separate - stream in PDF. The CAIRO_MIME_TYPE_JBIG2 mime type is for the JBIG2 - data for each image. All images that use global data must also set - CAIRO_MIME_TYPE_JBIG2_GLOBAL_ID to a unique identifier. One of the - images must also set CAIRO_MIME_TYPE_JBIG2_GLOBAL to the global - data. The global data will be shared by all JBIG2 images with the same - CAIRO_MIME_TYPE_JBIG2_GLOBAL_ID. - - src/cairo-device.c | 1 + - src/cairo-error-private.h | 1 + - src/cairo-image-info-private.h | 5 ++ - src/cairo-image-info.c | 135 +++++++++++++++++++++++++++++ - src/cairo-misc.c | 2 + - src/cairo-pdf-surface-private.h | 8 ++ - src/cairo-pdf-surface.c | 182 ++++++++++++++++++++++++++++++++++++++++ - src/cairo-region.c | 1 + - src/cairo-spans.c | 2 + - src/cairo-surface.c | 4 +- - src/cairo.c | 4 +- - src/cairo.h | 6 ++ - 12 files changed, 349 insertions(+), 2 deletions(-) - -commit 2d6705671a900251f00c6b59375bd4d23ec6b4d0 -Author: Adrian Johnson -AuthorDate: Fri Sep 13 22:14:49 2013 +0930 -Commit: Adrian Johnson -CommitDate: Fri Sep 13 22:14:49 2013 +0930 - - ps: fix embedding of mime data - - src/cairo-ps-surface.c | 16 ++++++++++------ - 1 file changed, 10 insertions(+), 6 deletions(-) - -commit 266d6e71566ac8c5e360c0b32fb78e23e6a06168 -Author: Adrian Johnson -AuthorDate: Fri Sep 13 21:32:42 2013 +0930 -Commit: Adrian Johnson -CommitDate: Fri Sep 13 22:01:02 2013 +0930 - - pdf: fix embedding of mime data that has been broken since 0a10982f - - For some reason the mime-data test is not detecting this failure. - - src/cairo-pdf-surface.c | 23 ++++++++++++----------- - 1 file changed, 12 insertions(+), 11 deletions(-) - -commit 5390c2bbca3f1331f4fc831ba1381cc64e0162c6 -Author: Bryce W. Harrington -AuthorDate: Thu Sep 12 22:55:02 2013 +0000 -Commit: Uli Schlachter -CommitDate: Fri Sep 13 12:58:11 2013 +0200 - - test: Document use of -k and CAIRO_TEST_TARGET to run test subsets - - Signed-off-by: Bryce Harrington - Signed-off-by: Uli Schlachter - - test/README | 6 ++++++ - 1 file changed, 6 insertions(+) - -commit 640eb0206738e1d1bfd9beebaf0dcb6ac0e07584 -Author: Bryce W. Harrington -AuthorDate: Thu Sep 12 22:55:02 2013 +0000 -Commit: Uli Schlachter -CommitDate: Fri Sep 13 12:57:42 2013 +0200 - - test: Space out keywords for clarity - - As another nitpick, a comma alone is legal for separating keywords, but - most tests use a comma and a space. Update the few tests that don't, - to make this consistent. - - Signed-off-by: Bryce Harrington - Signed-off-by: Uli Schlachter - - test/image-bug-710072.c | 4 ++-- - test/mesh-pattern-accuracy.c | 2 +- - test/mesh-pattern-conical.c | 2 +- - test/mesh-pattern-control-points.c | 2 +- - test/mesh-pattern-fold.c | 2 +- - test/mesh-pattern-overlap.c | 2 +- - test/mesh-pattern-transformed.c | 2 +- - test/mesh-pattern.c | 2 +- - test/record1414x.c | 4 ++-- - 9 files changed, 11 insertions(+), 11 deletions(-) - -commit a6ace0cf6b96930c08397c64bffabc4b201ab4e8 -Author: Bryce W. Harrington -AuthorDate: Thu Sep 12 22:55:02 2013 +0000 -Commit: Uli Schlachter -CommitDate: Fri Sep 13 12:57:17 2013 +0200 - - test: Comma separate keywords - - The parser accepts spaces as separtors between keywords, so this is nit - picky. But only a minority of tests don't follow the comma convention, - so change them to be consistent. - - Signed-off-by: Bryce Harrington - Signed-off-by: Uli Schlachter - - test/a1-bug.c | 2 +- - test/arc-direction.c | 2 +- - test/caps-joins-curve.c | 2 +- - test/caps-tails-curve.c | 2 +- - test/caps.c | 8 ++++---- - test/clip-empty-group.c | 2 +- - test/drunkard-tails.c | 2 +- - test/joins.c | 2 +- - test/partial-coverage.c | 22 +++++++++++----------- - test/rectilinear-dash-scale.c | 4 ++-- - test/rectilinear-dash.c | 2 +- - test/scale-offset-image.c | 2 +- - test/scale-offset-similar.c | 2 +- - test/unclosed-strokes.c | 2 +- - 14 files changed, 28 insertions(+), 28 deletions(-) - -commit aacc5e76ed39b69595194a23e94bbd6483dd88a6 -Author: Bryce W. Harrington -AuthorDate: Thu Sep 12 22:55:01 2013 +0000 -Commit: Uli Schlachter -CommitDate: Fri Sep 13 12:56:16 2013 +0200 - - gitignore: Ignore build chaff when configuring with --enable-gtk-doc - - When this flag is enabled in configure, a couple extra build files are - created, which git should just ignore. - - Signed-off-by: Bryce Harrington - Signed-off-by: Uli Schlachter - - .gitignore | 2 ++ - 1 file changed, 2 insertions(+) - -commit ac5f3e2b8ef1937b3e6e3a3f03773cf471e46cc3 -Author: Bryce Harrington -AuthorDate: Wed Sep 11 09:59:01 2013 -0700 -Commit: Uli Schlachter -CommitDate: Wed Sep 11 19:32:08 2013 +0200 - - test: Move cairo_pattern_set_filter to after cairo_set_source_surface - - Also update the image.arg32 reference images, since for now we're just - accepting pixman's output as truth. This fixes up several tests: - - was is - Tests run: 420 420 - Passed: 224 261 - Failed: 195 159 - Expected Failed: 0 0 - Error: 0 0 - Crashed: 0 0 - Untested: 0 0 - Total: 420 420 - - Thanks to psychon for finding the code error in the test. - - test/pixman-downscale.c | 2 +- - test/reference/pixman-downscale-fast-95.ref.png | Bin 685 -> 299 bytes - test/reference/pixman-downscale-nearest-95.ref.png | Bin 685 -> 299 bytes - 3 files changed, 1 insertion(+), 1 deletion(-) - -commit ade7089f72e0d147db961dec88d3cb1b2280a438 -Author: Bryce Harrington -AuthorDate: Wed Jul 10 17:27:28 2013 -0700 -Commit: Uli Schlachter -CommitDate: Wed Sep 11 19:32:08 2013 +0200 - - test: Exercise image scaling quality when downscaling - - This adds testcases for the various cairo filter options, each of which - match to corresponding pixman filters. Use the 'downscale' keyword if - invoking tests using cairo-test-suite. - - The 24-pixel reference images were produced from quad-color.png using - Gimp's Scale Image command with Interpolation set to None. It is - assumed that all filters should handle a 1:4 scaling cleanly with no - antialiased blurring. - - The 95-pixel reference images assume differing types of antialiasing - based on the quality level. We are using the image.argb32 output as - reference here. Potentially some other rendering algorithm could - conceivably provide better results in the future. - - The 96-pixel reference images are simply copies of the original - quad-color.png file. It is assumed that 1:1 downscaling operations - should produce no visible change to the original image. - - Signed-off-by: Bryce Harrington - - test/pixman-downscale.c | 146 +++++++++++++++++++-- - test/reference/pixman-downscale-24.ref.png | Bin 191 -> 0 bytes - test/reference/pixman-downscale-95.ref.png | Bin 285 -> 0 bytes - test/reference/pixman-downscale-96.ref.png | Bin 301 -> 0 bytes - test/reference/pixman-downscale-best-24.ref.png | Bin 0 -> 191 bytes - test/reference/pixman-downscale-best-95.ref.png | Bin 0 -> 685 bytes - test/reference/pixman-downscale-best-96.ref.png | Bin 0 -> 301 bytes - .../reference/pixman-downscale-bilinear-24.ref.png | Bin 0 -> 191 bytes - .../reference/pixman-downscale-bilinear-95.ref.png | Bin 0 -> 685 bytes - .../reference/pixman-downscale-bilinear-96.ref.png | Bin 0 -> 301 bytes - test/reference/pixman-downscale-fast-24.ref.png | Bin 0 -> 191 bytes - test/reference/pixman-downscale-fast-95.ref.png | Bin 0 -> 685 bytes - test/reference/pixman-downscale-fast-96.ref.png | Bin 0 -> 301 bytes - test/reference/pixman-downscale-good-24.ref.png | Bin 0 -> 191 bytes - test/reference/pixman-downscale-good-95.ref.png | Bin 0 -> 685 bytes - test/reference/pixman-downscale-good-96.ref.png | Bin 0 -> 301 bytes - test/reference/pixman-downscale-nearest-24.ref.png | Bin 0 -> 191 bytes - test/reference/pixman-downscale-nearest-95.ref.png | Bin 0 -> 685 bytes - test/reference/pixman-downscale-nearest-96.ref.png | Bin 0 -> 301 bytes - 19 files changed, 132 insertions(+), 14 deletions(-) - -commit 0f554c36d3edf341a9aef8eedfde57f3be635500 -Author: Bryce Harrington -AuthorDate: Wed Jul 10 16:29:56 2013 -0700 -Commit: Uli Schlachter -CommitDate: Wed Sep 11 19:32:08 2013 +0200 - - test: Test a variety of scales when downscaling - - Downscaling from 96 to 24 is easy since it's an even multiple, so try - scaling by -1 pixel too. - - This adds a 1:1 scaling test case as well, which should pass through the - image unchanged. - - Signed-off-by: Bryce Harrington - - test/pixman-downscale.c | 21 +++++++++++++++++---- - test/reference/pixman-downscale-24.ref.png | Bin 0 -> 191 bytes - test/reference/pixman-downscale-95.ref.png | Bin 0 -> 285 bytes - test/reference/pixman-downscale-96.ref.png | Bin 0 -> 301 bytes - test/reference/pixman-downscale.ref.png | Bin 191 -> 0 bytes - 5 files changed, 17 insertions(+), 4 deletions(-) - -commit 642b6d80917feeea878a11f8aaf179b7a1e5392d -Author: Bryce Harrington -AuthorDate: Wed Jul 10 10:19:21 2013 -0700 -Commit: Uli Schlachter -CommitDate: Wed Sep 11 19:32:08 2013 +0200 - - test: Add test for image downscaling - - This adds pixman-downscale.c, which tests correctness of PNG images - scaled down using pixman routines. - - Signed-off-by: Bryce Harrington - - test/Makefile.sources | 1 + - test/pixman-downscale.c | 73 ++++++++++++++++++++++++++++++++ - test/quad-color.png | Bin 0 -> 301 bytes - test/reference/pixman-downscale.ref.png | Bin 0 -> 191 bytes - 4 files changed, 74 insertions(+) - -commit 7270f22af3d1ad53f033023438e915e11bf88407 -Author: Martin Robinson -AuthorDate: Wed Sep 11 08:52:31 2013 -0700 -Commit: Martin Robinson -CommitDate: Wed Sep 11 08:52:31 2013 -0700 - - gl: Extend oversize check to cairo_gl_surface_create_for_texture - - If a texture is too large to render to via a framebuffer, then eagerly - fail with an error surface. - - src/cairo-gl-surface.c | 5 +++++ - 1 file changed, 5 insertions(+) - -commit 279d5a2ed1aaa6d5dbfbeab9e4b4ffa6a66aa6f3 -Author: Uli Schlachter -AuthorDate: Wed Sep 11 15:28:29 2013 +0200 -Commit: Uli Schlachter -CommitDate: Wed Sep 11 15:28:29 2013 +0200 - - recording: Correctly determine alpha of all surfaces - - This code has special cases for recording and image surfaces. For all other - kinds of source surfaces, has_bilevel_alpha was not modified, even though the - source surface could have an alpha channel. - - Fix this by using the same checks as in the general path at the end of this - function. - - Signed-off-by: Uli Schlachter - - src/cairo-recording-surface.c | 3 +++ - 1 file changed, 3 insertions(+) - -commit a6f51fed985f7db37c672bab0b5dab3f89e78282 -Author: Uli Schlachter -AuthorDate: Wed Sep 11 15:24:53 2013 +0200 -Commit: Uli Schlachter -CommitDate: Wed Sep 11 15:24:53 2013 +0200 - - recording: Fix unitialized variable 'free_me' - - This variable should be NULL by default and gets set only if a new reference to - a surface was acquired through _cairo_surface_snapshot_get_target(). This works, - because cairo_surface_destroy(NULL) is well-defined and doesn't do anything. - - Fixes the following compiler warning: - - cairo-recording-surface.c:1642:24: warning: 'free_me' may be used uninitialized - in this function [-Wmaybe-uninitialized] - - Signed-off-by: Uli Schlachter - - src/cairo-recording-surface.c | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -commit 8addb4798c918000eaa6f6dab138e0abb0efa946 -Author: Adrian Johnson -AuthorDate: Sun Apr 8 10:57:23 2012 +0930 -Commit: Adrian Johnson -CommitDate: Wed Sep 11 21:18:45 2013 +0930 - - pdf: avoid making groups a transparency group if not required - - If the group contains only a combination of clear and opaque alpha and - only OPERATOR_OVER is used in the group and to paint the group, a - transparency group is not required. This allows the pdf viewer to - replay the group in place. - - src/cairo-pdf-surface-private.h | 2 + - src/cairo-pdf-surface.c | 125 +++++++++++++++++++++++++--------- - src/cairo-recording-surface-private.h | 8 +++ - src/cairo-recording-surface.c | 113 ++++++++++++++++++++++++++++++ - 4 files changed, 215 insertions(+), 33 deletions(-) - -commit 53255625c07d8f24403f0cb1b5a4dbaac142e4da -Author: Bryce W. Harrington -AuthorDate: Sun Sep 8 20:10:04 2013 +0000 -Commit: Uli Schlachter -CommitDate: Mon Sep 9 21:28:35 2013 +0200 - - svg, test: Refer to output filename by variable, not a hardcoded value - - Signed-off-by: Bryce Harrington - Signed-off-by: Uli Schlachter - - test/svg-surface.c | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -commit f9dcd07d22a5269bf799317a36bb2887d8f9af64 -Author: Bryce W. Harrington -AuthorDate: Sun Sep 8 20:10:03 2013 +0000 -Commit: Uli Schlachter -CommitDate: Mon Sep 9 21:25:12 2013 +0200 - - test: Ensure output dirs exist, falling back to current dir if needed - - This change makes several tests behave more like ps-eps.c, et al by - making them attempt to mkdir "output", and in case of trouble use "." - instead. filenames are now allocated at runtime due to this change, so - ensure the corresponding free()'s are in place as well. - - This should facilitate running the test suite with a relative path - outside cairo's source tree, such as when employing the CAIRO_REF_DIR - environment variable. - - Signed-off-by: Bryce Harrington - Signed-off-by: Uli Schlachter - - test/create-for-stream.c | 14 +++++++++++--- - test/fallback-resolution.c | 20 +------------------- - test/multi-page.c | 9 ++++++--- - test/pdf-features.c | 6 +++++- - test/pdf-mime-data.c | 6 +++++- - test/pdf-surface-source.c | 6 +++++- - test/png.c | 8 +++++++- - test/ps-eps.c | 20 +------------------- - test/ps-features.c | 8 +++++--- - test/ps-surface-source.c | 6 +++++- - test/svg-clip.c | 6 +++++- - test/svg-surface-source.c | 6 +++++- - test/svg-surface.c | 6 +++++- - 13 files changed, 66 insertions(+), 55 deletions(-) - -commit be7f1ac98f62669743f381df8845886d29a9f7f4 -Author: Bryce W. Harrington -AuthorDate: Sun Sep 8 20:10:03 2013 +0000 -Commit: Uli Schlachter -CommitDate: Mon Sep 9 21:21:43 2013 +0200 - - test: Make cairo_test_mkdir() usable throughout tests. - - Signed-off-by: Bryce Harrington - Signed-off-by: Uli Schlachter - - test/cairo-test.c | 10 +++++----- - test/cairo-test.h | 3 +++ - 2 files changed, 8 insertions(+), 5 deletions(-) - -commit 6731023f1bba7e26dbbc06defdbb37ac5267e9db -Author: Bryce W. Harrington -AuthorDate: Sun Sep 8 20:10:03 2013 +0000 -Commit: Uli Schlachter -CommitDate: Mon Sep 9 21:15:50 2013 +0200 - - test: Fix several tests to place output files in the output directory - - The standard location for test output is cairo/test/output. The harness - itself was updated to write automatically generated images in this - directory, however a number of tests generate their own local output - files. - - This patch updates these tests to write their output into - CAIRO_TEST_OUTPUT_DIR (which defaults to cairo/test/output) as well, in - the interest of decluttering the test directory. - - Signed-off-by: Bryce Harrington - Signed-off-by: Uli Schlachter - - test/create-for-stream.c | 6 +++--- - test/multi-page.c | 5 +++-- - test/pdf-features.c | 3 ++- - test/pdf-mime-data.c | 9 +++++---- - test/pdf-surface-source.c | 4 +++- - test/png.c | 3 ++- - test/ps-features.c | 3 ++- - test/ps-surface-source.c | 4 +++- - test/svg-clip.c | 3 ++- - test/svg-surface-source.c | 4 +++- - test/svg-surface.c | 3 ++- - 11 files changed, 30 insertions(+), 17 deletions(-) - -commit f3574b8b3b3e9dbd9fca927096e5a8205e57033d -Author: Bryce W. Harrington -AuthorDate: Sun Sep 8 20:10:03 2013 +0000 -Commit: Uli Schlachter -CommitDate: Mon Sep 9 21:15:12 2013 +0200 - - test: Don't ignore test output files left in test directory - - Tests should be placing output files in the output/ directory now, - although not all tests follow this standard practice. Drop the - "*.out.*" from .gitignore to make improper test behavior more evident. - - Signed-off-by: Bryce Harrington - Signed-off-by: Uli Schlachter - - test/.gitignore | 4 ---- - 1 file changed, 4 deletions(-) - -commit f52165a7bb3de56fe2a06771f554f3997e176b94 -Author: Adrian Johnson -AuthorDate: Fri Sep 6 08:00:46 2013 +0930 -Commit: Adrian Johnson -CommitDate: Fri Sep 6 08:00:46 2013 +0930 - - svg: Don't embed CMYK Jpeg images - - None of the SVG viewers I tried (rsvg, firefox, inkscape) support CMYK - Jpeg images. - - Bug 68965 - - src/cairo-svg-surface.c | 3 +++ - 1 file changed, 3 insertions(+) - -commit 8e1a1ed8631dd55b4344d5682e6c69e923e0401f -Author: Adrian Johnson -AuthorDate: Fri Sep 6 07:54:28 2013 +0930 -Commit: Adrian Johnson -CommitDate: Fri Sep 6 07:54:28 2013 +0930 - - Downscaling requires pixman 0.30 - - configure.ac | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -commit 0266cb821fbf0bdd307af7bbcbbd22c4a14201fc -Author: Chris Wilson -AuthorDate: Thu Sep 5 16:13:56 2013 +0100 -Commit: Chris Wilson -CommitDate: Thu Sep 5 16:13:56 2013 +0100 - - script: Add support for replaying device-scale - - Signed-off-by: Chris Wilson - - util/cairo-script/cairo-script-operators.c | 48 ++++++++++++++++++++++++++++++ - 1 file changed, 48 insertions(+) - -commit a4164142f2a21fb005533d1c5b3cf668c99d1259 -Author: Chris Wilson -AuthorDate: Thu Sep 5 16:12:26 2013 +0100 -Commit: Chris Wilson -CommitDate: Thu Sep 5 16:12:26 2013 +0100 - - trace: Record set-device-scale - - Signed-off-by: Chris Wilson - - util/cairo-trace/trace.c | 12 ++++++++++++ - 1 file changed, 12 insertions(+) - -commit 935c64a43409a80d9b19d491f9133004152de9bb -Author: Alexander Larsson -AuthorDate: Tue Aug 27 15:10:38 2013 +0200 -Commit: Chris Wilson -CommitDate: Thu Sep 5 16:11:10 2013 +0100 - - surface: Inherit device scale in cairo_surface_create_similar() - - Without this most code that uses similar surfaces for offscreen - rendering will render in a pixelized fashion if the final - target uses a device scale. - - src/cairo-surface.c | 7 +++++++ - 1 file changed, 7 insertions(+) - -commit bc792a5e0e196dd9761649b14c9206465b42ef1d -Author: Alexander Larsson -AuthorDate: Tue Aug 27 14:46:16 2013 +0200 -Commit: Chris Wilson -CommitDate: Thu Sep 5 16:11:09 2013 +0100 - - surface: Merge scratch construction into _cairo_surface_create_scratch - - We merge _cairo_surface_create_similar_scratch and - _cairo_surface_create_similar_solid into a single function named - _cairo_surface_create_scratch, to avoid confusion with - cairo_surface_create_similar which now will have a different - behaviour wrt the sizes and the device-scale. - - _create_scratch assumes the width and height are in backend - coordinates, while create_similar does not. - - src/cairo-clip-surface.c | 20 +++++------ - src/cairo-default-context.c | 10 +++--- - src/cairo-gl-traps-compositor.c | 18 +++++----- - src/cairo-mask-compositor.c | 14 ++++---- - src/cairo-shape-mask-compositor.c | 27 +++++++------- - src/cairo-spans-compositor.c | 10 +++--- - src/cairo-surface-subsurface.c | 9 ++--- - src/cairo-surface-wrapper.c | 4 +-- - src/cairo-surface.c | 75 +++++++++++++++++---------------------- - src/cairo-traps-compositor.c | 33 +++++++++-------- - src/cairo-xcb-surface-render.c | 20 +++++------ - src/cairo-xlib-source.c | 36 ++++++++++--------- - src/cairoint.h | 16 +++------ - 13 files changed, 145 insertions(+), 147 deletions(-) - -commit bdccf4fe51bca785f73205ccd26c4d020669e312 -Author: Alexander Larsson -AuthorDate: Tue Aug 27 14:33:14 2013 +0200 -Commit: Chris Wilson -CommitDate: Thu Sep 5 16:11:08 2013 +0100 - - surface: Opencode create_similar - - We copy the _cairo_surface_create_similar_solid code into - cairo_surface_create_similar so that we can separate these later - as one wants to use backend sizes and one not. - - src/cairo-surface.c | 33 ++++++++++++++++++++++++++++++--- - 1 file changed, 30 insertions(+), 3 deletions(-) - -commit 5f70148467ff2767dc3c6d45f4af1223d7daa301 -Author: Chris Wilson -AuthorDate: Mon Jun 3 15:20:05 2013 +0100 -Commit: Chris Wilson -CommitDate: Thu Sep 5 16:08:20 2013 +0100 - - test: Allow CAIRO_TEST_MODE to independently enable extended testing - - Such as CAIRO_TEST_MODE=scale for testing application of - cairo_surface_set_device_offset. - - CAIRO_TEST_MODE=similar - test rendering through similar surfaces - CAIRO_TEST_MODE=offset - test rendering with a device offset - CAIRO_TEST_MODE=scale - test rendering with a device scale - - test/cairo-test-runner.c | 22 ++++++++++++++++++---- - 1 file changed, 18 insertions(+), 4 deletions(-) - -commit 690c61aa54c27e4d35b04d0173abd5931fce507d -Author: Alexander Larsson -AuthorDate: Mon Jun 3 15:38:22 2013 +0200 -Commit: Chris Wilson -CommitDate: Thu Sep 5 16:08:20 2013 +0100 - - tests: Add device scale test to "full" testrun similar to offsets - - test/cairo-test-private.h | 2 +- - test/cairo-test-runner.c | 66 ++++++++++++++++++++++++++--------------------- - test/cairo-test.c | 66 ++++++++++++++++++++++++++++------------------- - 3 files changed, 77 insertions(+), 57 deletions(-) - -commit 7ab34f302be72d9dda54d936b6d69bc7c534c885 -Author: Alexander Larsson -AuthorDate: Thu May 30 19:45:59 2013 +0200 -Commit: Chris Wilson -CommitDate: Thu Sep 5 16:08:19 2013 +0100 - - surface: expose the device scale - - This adds the new public functions - cairo_surface_set_device_scale and cairo_surface_get_device_scale and - updates old users of the internal functions. - - src/cairo-default-context.c | 6 ++--- - src/cairo-paginated-surface.c | 2 +- - src/cairo-surface-subsurface.c | 12 +++++----- - src/cairo-surface.c | 52 +++++++++++++++++++++++++++++++----------- - src/cairo.h | 10 ++++++++ - src/cairoint.h | 7 ++---- - 6 files changed, 61 insertions(+), 28 deletions(-) - -commit 38217d67fc2226778dde8d05817cb916691d4d22 -Author: Chris Wilson -AuthorDate: Mon Jun 3 20:32:45 2013 +0100 -Commit: Chris Wilson -CommitDate: Thu Sep 5 16:08:19 2013 +0100 - - spans,traps: Undo device transform from source matrix for recording replays - - As the replay of the recording surface applies the device_transform of - the matrix once again to all its operations, we end up with a repeated - transform through the source matrix of the recording surface. We need to - remove one of these, and the easiest way to do that appears to be to - undo the application to the source matrix. - - Signed-off-by: Chris Wilson - - src/cairo-spans-compositor.c | 13 +++++++++++-- - src/cairo-traps-compositor.c | 15 ++++++++++++--- - 2 files changed, 23 insertions(+), 5 deletions(-) - -commit f0e2cd4494b1ac9a351d095fbeb53d702342d35c -Author: Alexander Larsson -AuthorDate: Fri May 31 16:44:29 2013 +0200 -Commit: Chris Wilson -CommitDate: Thu Sep 5 16:08:19 2013 +0100 - - gstate: Handle device scale on surface as source - - When creating a transformed pattern we must apply the device - transform *before* the transform set on the pattern itself, otherwise - e.g. its translation will not be affected by the device scale. - - We also fix up the device_transform related handling in - _cairo_default_context_pop_group(). With a device scale we can - no longer just use the device_transform_inverse to unset the - device offset for the extents, so we make that a simple translate - instead. - - We also remove some weird code that tries to handle the device - transform but seems unnecessary (maybe a workaround for applying - the device transform in the wrong order?). With that code removed - things work fine, but with it things get translated wrongly when - there is a scale. - - src/cairo-default-context.c | 23 ++++++++--------------- - src/cairo-gstate.c | 2 +- - src/cairo-pattern-private.h | 4 ++++ - src/cairo-pattern.c | 10 ++++++++++ - 4 files changed, 23 insertions(+), 16 deletions(-) - -commit 900fc4a890026e46a3b0a00967632f57074b8b93 -Author: Alexander Larsson -AuthorDate: Thu May 30 20:53:29 2013 +0200 -Commit: Chris Wilson -CommitDate: Thu Sep 5 16:08:19 2013 +0100 - - gstate: Move device-scale font scaling to gstate - - If we do this in surface it will be applied twice then - we chain to a different surface, like e.g. a subsurface. - - We also remove a hack in cairo-surface-wrapper where it compensated - for the device scale not being applied. - - v2: Compute the backend CTM in ensure_scaled_font(). - - src/cairo-gstate.c | 8 +++++++- - src/cairo-surface-wrapper.c | 5 ++--- - src/cairo-surface.c | 31 ++++--------------------------- - 3 files changed, 13 insertions(+), 31 deletions(-) - -commit 25eaec0a3874a2090e1bb97547a328eb5c00b0b1 -Author: Alexander Larsson -AuthorDate: Thu May 30 20:53:15 2013 +0200 -Commit: Chris Wilson -CommitDate: Thu Sep 5 16:08:19 2013 +0100 - - subsurface: Handle device scales - - src/cairo-surface-subsurface.c | 21 ++++++++++++++++++--- - 1 file changed, 18 insertions(+), 3 deletions(-) - -commit 633d573889ad685c8f07e9ee72f6a1d240dfacf2 -Author: Alexander Larsson -AuthorDate: Thu May 30 19:48:33 2013 +0200 -Commit: Chris Wilson -CommitDate: Thu Sep 5 16:08:19 2013 +0100 - - default-context: Inherit device scale in push_group surface - - Without this we will only render to part of the newly created - surface and then copy+scale that part back, which causes fuzziness. - - src/cairo-default-context.c | 4 ++++ - 1 file changed, 4 insertions(+) - -commit db7e551a6bf06a0aa7e2e6b3744b7663807d003f -Author: Alexander Larsson -AuthorDate: Thu May 30 19:47:19 2013 +0200 -Commit: Chris Wilson -CommitDate: Thu Sep 5 16:08:19 2013 +0100 - - gstate: Respect device transform in stroke - - We need to apply the device transform to the ctm when stroking, as - otherwise line widths are not affected by the device scale. - - src/cairo-gstate.c | 15 ++++++++++++--- - 1 file changed, 12 insertions(+), 3 deletions(-) - -commit fb57ea13e04d82866cbc8e86c83261148bb3e231 -Author: Krzysztof Kosiński -AuthorDate: Thu Sep 5 16:02:14 2013 +0100 -Commit: Chris Wilson -CommitDate: Thu Sep 5 16:08:19 2013 +0100 - - image: Use convolution filters for sample reconstruction when downscaling - - I had a look at how complex would it be to add correct downscaling to - Cairo now that Pixman supports convolution filters. It turns out it - this is rather easy. Here is an initial, minimal attempt. It uses - convolution filters only if the image is being downscaled by more than - half a pixel in at least one dimension. - - Some discussion: - - 1. The sampling and reconstruction kernels are picked in a way that - gives comparable quality when upscaling and downscaling. I paired box - sampling with bilinear reconstruction and impulse (point) sampling - with box reconstruction. This gives the expected result for NEAREST - filter. BEST filter uses Lanczos3 for both kernels. - - > Do we need to use a reconstruction filter for NEAREST at all? Or maybe - > differentiate between NEAREST and FAST in that case? - - If impulse (point) sampling is used, there must be some reconstruction - filter, otherwise no image is produced. That's because the sampling - grid does not match the data grid, and since there is no - reconstruction filter, values between data points are undefined. The - alternative is to use box sampling + no reconstruction. - - 2. Subsampling bits are always set to 1, since this doesn't seem to - affect quality at all. - - 3. I am not sure whether this code works correctly for matrices with a - skew component. It should be OK for any combination of scale, rotation - and translation. - - 4. This patch causes new failures in the test suite: - - recording-surface*: possibly an effect of improved quality. - - surface-pattern-scale-down*, surface-pattern-big-scale-down: the - reference images should be updated. - - pthread-same-source: I have no idea why this is failing, since this - test shouldn't even trigger the new code. - - large-source-roi: this test attempts to downscale an image which is - 30000 pixels wide down to 7 pixels. The filter parameters seem to be - created correctly, but they might trigger an overflow somewhere in the - convolution code; the output rectangle is white instead of red, as if - nothing was drawn. - - device-offset-scale: there are subtle differences which look like - convolution-related smoothing; I'm not sure whether this is OK or not. - - src/cairo-image-source.c | 65 ++++++++++++++++++++++++++++++++++++++++-------- - 1 file changed, 55 insertions(+), 10 deletions(-) - -commit 28ad0f9f3bec65e462e29a1d0b1757a86d16c129 -Author: Chris Wilson -AuthorDate: Thu Sep 5 15:56:55 2013 +0100 -Commit: Chris Wilson -CommitDate: Thu Sep 5 16:08:19 2013 +0100 - - Bump version for new development tree, 1.13.1 - - cairo-version.h | 4 ++-- - 1 file changed, 2 insertions(+), 2 deletions(-) - -commit 59e2a93b3c8a7b83d537bb2a4bbdd5f0f36a0cbc -Author: Chris Wilson -AuthorDate: Mon Aug 26 18:46:19 2013 +0100 -Commit: Chris Wilson -CommitDate: Mon Aug 26 18:46:19 2013 +0100 - - Post-release version bump - - cairo-version.h | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -commit 8e11a42e3e9b679dce97ac45cd8b47322536a253 -Author: Chris Wilson -AuthorDate: Mon Aug 26 15:30:20 2013 +0100 -Commit: Chris Wilson -CommitDate: Mon Aug 26 17:56:27 2013 +0100 - - 1.12.16 release - - NEWS | 55 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ - cairo-version.h | 2 +- - 2 files changed, 56 insertions(+), 1 deletion(-) - -commit b710a4730940e54ac7ffd5073eecf950997a0484 -Author: Chris Wilson -AuthorDate: Mon Aug 26 17:18:38 2013 +0100 -Commit: Chris Wilson -CommitDate: Mon Aug 26 17:56:27 2013 +0100 - - Make "make check" happy - - A recursive include should hide the bare header from - check-preprocessor-syntax.sh - - Signed-off-by: Chris Wilson - - src/cairo-pixman-private.h | 6 ++++++ - 1 file changed, 6 insertions(+) - -commit fb8881e84bb24b2a54ee5aa449b6f5638de36404 -Author: Chris Wilson -AuthorDate: Fri Aug 23 12:48:08 2013 +0100 -Commit: Chris Wilson -CommitDate: Fri Aug 23 12:53:27 2013 +0100 - - win32: Prevent double-free of similar images - - Based on a patch and analysis by Michael Henning. - - When we create a similar-image surface for win32, we set up a couple of - back references from the image to the win32 surface, and vice versa. We - need to be careful when decoupling the reference cycle to avoid chasing - around the loop upon destruction. Currently we handled destroying the - similar-image via the parent win32 surface, but similar precaution is - required when destroying the surface via the similar-image. - - Reported-by: Michael Henning - Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=63787 - Signed-off-by: Chris Wilson - - src/cairo-image-surface.c | 3 ++- - src/win32/cairo-win32-display-surface.c | 3 ++- - 2 files changed, 4 insertions(+), 2 deletions(-) - -commit 054f34111d220541bc785b30207387541fdd31d2 -Author: Chris Wilson -AuthorDate: Thu Aug 15 14:28:44 2013 +0000 -Commit: Chris Wilson -CommitDate: Fri Aug 23 12:53:27 2013 +0100 - - Provide backwards compatibilty with old pixman - - The goal is to allow compilation against older pixman to ease regression - testing. - - Signed-off-by: Chris Wilson - - configure.ac | 2 +- - src/Makefile.sources | 1 + - src/cairo-ft-font.c | 6 +++-- - src/cairo-image-compositor.c | 44 +++++++++++++++++++++++-------------- - src/cairo-image-surface.c | 5 +++++ - src/cairo-pixman-private.h | 45 ++++++++++++++++++++++++++++++++++++++ - src/cairo-xlib-render-compositor.c | 1 + - src/cairo-xlib-surface.c | 1 + - 8 files changed, 86 insertions(+), 19 deletions(-) - -commit 95f320e3f26b2a1552a53ebad14dd5086ccf0c60 -Author: Martin Robinson -AuthorDate: Mon Jul 29 11:14:34 2013 -0700 -Commit: Martin Robinson -CommitDate: Mon Aug 19 14:54:28 2013 -0700 - - gl: Return surface in error when creating oversized texture surfaces - - When creating a texture surface that is larger than the maximum - framebuffer or texture dimensions of the context, return a surface in - error. Previously the code failed an assertion, but this prevents an - application from easily detecting when to fall back. - - Reviewed-by: Chris Wilson - - src/cairo-gl-surface.c | 33 +++++++++++------ - test/Makefile.sources | 1 + - test/gl-oversized-surface.c | 88 +++++++++++++++++++++++++++++++++++++++++++++ - 3 files changed, 111 insertions(+), 11 deletions(-) - -commit b5e1373c5845c859ebf82ef4d5e065f6cdd68faf -Author: Henry Song -AuthorDate: Mon Aug 19 12:14:46 2013 -0700 -Commit: Martin Robinson -CommitDate: Mon Aug 19 12:56:58 2013 -0700 - - gl/msaa: Clean up msaa depth/stencil buffer for OpenGLES - - OpenGLES also uses the depth/stencil buffer when doing multisampling, so - it's a leak to only clean up the buffer for desktop OpenGL. - - src/cairo-gl-surface.c | 3 ++- - 1 file changed, 2 insertions(+), 1 deletion(-) - -commit 54a51968e82ec4e6a8d81d5451232641275439df -Author: Uli Schlachter -AuthorDate: Mon Aug 12 16:33:19 2013 +0200 -Commit: Uli Schlachter -CommitDate: Tue Aug 13 19:25:17 2013 +0200 - - surface_get_extents: Reject finished or error surface - - This fixes a crash in the api-special-cases with xlib-xcb when calling - cairo_clip_extents() on a context that refers to a finished surface. - - The crash was a simple NULL pointer dereference, because the underlying xcb - surface that was used in xlib-xcb was gone and set to NULL already. - - Signed-off-by: Uli Schlachter - - src/cairo-surface.c | 12 ++++++++++++ - 1 file changed, 12 insertions(+) - -commit 3c4e0f0f1a338fbbd802cdb3b65b8ea3abc758d1 -Author: Uli Schlachter -AuthorDate: Mon Aug 12 15:59:18 2013 +0200 -Commit: Uli Schlachter -CommitDate: Tue Aug 13 19:21:57 2013 +0200 - - push_group: Refuse working with unusable surface - - Make cairo_push_group() fail when the context's target surface is finished. - - This fixes the api-special-cases for the xcb backend: - - Detected error during xcb run: error=9, seqno=0x13c, major=53, minor=0 - - The problem was that the Pixmap for the cairo surface was already freed and - cairo still tried to use it again as the drawable in a CreatePixmap request. - - Signed-off-by: Uli Schlachter - Reviewed-by: Chris Wilson - - src/cairo-default-context.c | 5 +++++ - 1 file changed, 5 insertions(+) - -commit 18633b081026eb88931af6130b3e716fdb954e19 -Author: Uli Schlachter -AuthorDate: Mon Aug 12 15:40:00 2013 +0200 -Commit: Uli Schlachter -CommitDate: Tue Aug 13 19:21:02 2013 +0200 - - surface: Error out on finished surfaces - - Finished surfaces and surfaces with an error status must not be usable anymore, - so refuse to work on them. - - This improves the result for api-special-cases. - - Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=68014 - - Signed-off-by: Uli Schlachter - - src/cairo-surface.c | 19 +++++++++++++++++++ - 1 file changed, 19 insertions(+) - -commit b64c83e891f2417a1b28034a55659260a1769ba7 -Author: Uli Schlachter -AuthorDate: Mon Aug 12 14:30:59 2013 +0200 -Commit: Uli Schlachter -CommitDate: Tue Aug 13 19:17:56 2013 +0200 - - api-special-cases: Also test contexts - - This adds code to the api-special-cases test which also tests the behavior of - cairo when the cairo context or the surface that is target is in an error state - or finished. These new tests call into all public entry points defined in - cairo.h which receive a cairo_t * as their first argument. - - Currently this causes a new crash in the testsuite: - - cairo-surface.c:394: - _cairo_surface_begin_modification: Assertion `! surface->finished' failed. - - Reported-by: christophe.troestler@umons.ac.be - References: https://bugs.freedesktop.org/show_bug.cgi?id=68014 - Signed-off-by: Uli Schlachter - - test/api-special-cases.c | 1174 +++++++++++++++++++++++++++++++++++++++++++++- - 1 file changed, 1153 insertions(+), 21 deletions(-) - -commit e438071e9debeca81f97c6fcdc1c2a91a969761d -Author: Bryce W. Harrington -AuthorDate: Tue Jul 9 21:22:59 2013 +0000 -Commit: Uli Schlachter -CommitDate: Sun Aug 11 16:37:02 2013 +0200 - - perf: Move macro-benchmark documentation to cairo-traces - - The macro benchmarks were moved to a separate repository some time ago, - but the perf README still refers to these tests as if they were still - present, which may lead to some confusion. Instead, consolodate the - macro benchmark documentation with the macro benchmarks, and focus this - README on just the (still in tree) micro-benchmarks. - - Signed-off-by: Bryce Harrington - Signed-off-by: Uli Schlachter - - perf/README | 89 ++++++++++++++----------------------------------------------- - 1 file changed, 20 insertions(+), 69 deletions(-) - -commit 4e133af60c1af42307724eb6a88b23056741d7e2 -Author: Bryce W. Harrington -AuthorDate: Tue Jul 9 21:23:52 2013 +0000 -Commit: Uli Schlachter -CommitDate: Sun Aug 11 16:33:43 2013 +0200 - - HACKING: Make mention of the separate cairo-traces repo - - Signed-off-by: Bryce Harrington - Signed-off-by: Uli Schlachter - - HACKING | 9 +++++---- - 1 file changed, 5 insertions(+), 4 deletions(-) - -commit 46d9db96d460fea72f0420102e8a90c6a7231f79 -Author: Behdad Esfahbod -AuthorDate: Sun Aug 4 20:08:46 2013 -0400 -Commit: Behdad Esfahbod -CommitDate: Sun Aug 4 20:12:06 2013 -0400 - - [ft] Ensure alignment of bitmaps received from FreeType - - src/cairo-ft-font.c | 9 +++++++++ - 1 file changed, 9 insertions(+) - -commit 34a747e7bdeba1cfe17318f80fbe6720d47bc023 -Author: Behdad Esfahbod -AuthorDate: Sun Aug 4 19:59:06 2013 -0400 -Commit: Behdad Esfahbod -CommitDate: Sun Aug 4 20:11:51 2013 -0400 - - [ft] Fix alignment - - src/cairo-ft-font.c | 9 +++------ - 1 file changed, 3 insertions(+), 6 deletions(-) - -commit 3cd6c5966aca1d202744fe44083800bc2a4a831d -Author: Behdad Esfahbod -AuthorDate: Mon Jul 29 22:47:26 2013 -0400 -Commit: Behdad Esfahbod -CommitDate: Mon Jul 29 22:47:26 2013 -0400 - - Revert accidentally committed stuff - - build/configure.ac.pthread | 6 +++--- - 1 file changed, 3 insertions(+), 3 deletions(-) - -commit 0554d76402321b25cc952180e4d19436a9038d1a -Author: Behdad Esfahbod -AuthorDate: Mon Jul 29 22:41:46 2013 -0400 -Commit: Behdad Esfahbod -CommitDate: Mon Jul 29 22:41:46 2013 -0400 - - [ft] Add missing include - - build/configure.ac.pthread | 6 +++--- - src/cairo-ft-font.c | 1 + - 2 files changed, 4 insertions(+), 3 deletions(-) - -commit 7d26341072b13a78d4b3fe58779057ac020be487 -Author: Behdad Esfahbod -AuthorDate: Mon Jul 29 19:20:33 2013 -0400 -Commit: Behdad Esfahbod -CommitDate: Mon Jul 29 19:20:33 2013 -0400 - - [ft] Fix math - - src/cairo-ft-font.c | 9 ++------- - 1 file changed, 2 insertions(+), 7 deletions(-) - -commit 9444ef09ccde2735258cc1bd2f1912119a32dd88 -Author: Behdad Esfahbod -AuthorDate: Mon Jul 29 19:09:29 2013 -0400 -Commit: Behdad Esfahbod -CommitDate: Mon Jul 29 19:10:46 2013 -0400 - - Support 2bit and 4bit embedded bitmaps - - src/cairo-ft-font.c | 52 +++++++++++++++++++++++++++++++++++++++++++++++++++- - 1 file changed, 51 insertions(+), 1 deletion(-) - -commit 274863be08f6c8df6d411df9db725d34f7fbabea -Author: Adrian Johnson -AuthorDate: Sun Jul 28 09:30:05 2013 +0930 -Commit: Adrian Johnson -CommitDate: Sun Jul 28 09:30:05 2013 +0930 - - type1-subset: Don't try to rename non winansi glyphs - - When the latin subset contains glyphs that use the seac operator to - combine two glyphs, additional non winansi glyphs are added to the - subset. These extra glyphs do not have a winansi name so they can't - be renamed. - - Based on a patch by Salvador Ortiz. - - Bug 67324 - - src/cairo-type1-subset.c | 12 ++++++++++-- - 1 file changed, 10 insertions(+), 2 deletions(-) - -commit 03c81d414d4edb710c91f96ddb7dbf73e5432583 -Author: Henry Song -AuthorDate: Mon Jul 8 11:36:25 2013 -0700 -Commit: Martin Robinson -CommitDate: Mon Jul 15 19:27:29 2013 -0700 - - gl/msaa: Always use scissor when clipping - - Even when using the stencil buffer for clipping, always scissor the clip - extents. This simplifies the code a bit. - - src/cairo-gl-composite.c | 10 +++++----- - 1 file changed, 5 insertions(+), 5 deletions(-) - -commit 8c710ed87244321dc18447936d629decc25d3d09 -Author: Henry Song -AuthorDate: Sun Jul 7 11:00:28 2013 -0700 -Commit: Martin Robinson -CommitDate: Mon Jul 15 19:27:24 2013 -0700 - - gl/msaa: Disable stencil and scissor during framebuffer blit - - When blitting the framebuffer during transitions to and from - multi-sampling mode, we need to disable the stencil and scissor test so - that the entire surface is preserved. This fixes the bitmap-font test - for the MSAA compositor. - - src/cairo-gl-device.c | 28 ++++++++++++++++++++++++++++ - 1 file changed, 28 insertions(+) - -commit be2c09a1f59ad677a2b4718d26687873093b466c -Author: Henry Song -AuthorDate: Wed Jul 3 12:22:55 2013 -0700 -Commit: Martin Robinson -CommitDate: Mon Jul 15 19:27:19 2013 -0700 - - gl/msaa: Properly destroy stencil buffer clip cache - - When replacing the stencil buffer clip cache or destroying a surface, - destroy the cached clip. This prevents the clip from leaking. - - src/cairo-gl-composite.c | 5 ++++- - src/cairo-gl-surface.c | 2 ++ - 2 files changed, 6 insertions(+), 1 deletion(-) - -commit 2cc353c3dbe01b4d8f65d6de800f2b1d6004a1c2 -Author: Behdad Esfahbod -AuthorDate: Wed Nov 7 14:34:42 2012 -0800 -Commit: Behdad Esfahbod -CommitDate: Fri Jul 5 16:03:25 2013 -0600 - - Towards support loading color glyphs from FreeType - - See comments. - - src/cairo-ft-font.c | 41 ++++++++++++++++++++++++++++++++++++++--- - 1 file changed, 38 insertions(+), 3 deletions(-) - -commit e738079302a968b7b1fb9101cd4d92a8887bedce -Author: Behdad Esfahbod -AuthorDate: Fri Jul 5 15:22:18 2013 -0600 -Commit: Behdad Esfahbod -CommitDate: Fri Jul 5 15:59:45 2013 -0600 - - [ft] Fix wrong assumptions - - If subpixel rendering is enabled, but FT returns a 8bit gray bitmap - (perhaps because the font has 8bit embedded bitmaps) we were hitting - the assertions because the assumptions made were wrong. Fix up. - - src/cairo-ft-font.c | 10 +++------- - 1 file changed, 3 insertions(+), 7 deletions(-) - -commit a0f556f37fb7016aa304b7cf0e811c0d38f0b969 -Author: Behdad Esfahbod -AuthorDate: Fri Jul 5 15:12:14 2013 -0600 -Commit: Behdad Esfahbod -CommitDate: Fri Jul 5 15:59:45 2013 -0600 - - [ft] Fix memory bug in copying bitmaps - - src/cairo-ft-font.c | 4 +--- - 1 file changed, 1 insertion(+), 3 deletions(-) - -commit 9f9796920f5994090a19de357defe5e72ac61297 -Author: Uli Schlachter -AuthorDate: Fri Jun 21 20:38:43 2013 +0200 -Commit: Uli Schlachter -CommitDate: Thu Jul 4 21:57:12 2013 +0200 - - xcb: Fix some uninitialized variable warnings - - Signed-off-by: Uli Schlachter - - src/cairo-xcb-surface-render.c | 6 +++--- - 1 file changed, 3 insertions(+), 3 deletions(-) - -commit 2170bdbb12f38e372ea2ce1c6492c60cb35f22e4 -Author: Uli Schlachter -AuthorDate: Fri Jun 21 20:36:09 2013 +0200 -Commit: Uli Schlachter -CommitDate: Thu Jul 4 21:57:12 2013 +0200 - - image compositor: Always finish the span renderer - - In some obscure conditions that I don't really understand, the image compositor - did not finish a span renderer that it created. This could then cause the last - row of the span to be ignored. - - Fixes: clip-complex-bug61492 - - Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=61592 - Signed-off-by: Uli Schlachter - - src/cairo-image-compositor.c | 7 ++++--- - 1 file changed, 4 insertions(+), 3 deletions(-) - -commit 9058e9ae283ae39a6a4f78dc3dbf8ab46b2ef291 -Author: Uli Schlachter -AuthorDate: Fri Jun 21 20:34:27 2013 +0200 -Commit: Uli Schlachter -CommitDate: Thu Jul 4 21:57:12 2013 +0200 - - Add new test for bug 61592 - - This test exercises some clipping-related failure that Seongwon Cho reported. - - Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=61592 - Signed-off-by: Uli Schlachter - - test/Makefile.sources | 3 +- - test/clip-complex-bug61592.c | 60 +++++++++++++++++++++++++++ - test/reference/clip-complex-bug61492.ref.png | Bin 0 -> 105 bytes - 3 files changed, 62 insertions(+), 1 deletion(-) - -commit 54bee5e0fc1fd1fa85b9f389a73502a7145e0846 -Author: Uli Schlachter -AuthorDate: Fri Jun 21 15:18:58 2013 +0200 -Commit: Uli Schlachter -CommitDate: Thu Jul 4 21:57:12 2013 +0200 - - Fix caps-tails-curve reference images - - Commit d7f5a1bec fixed a bug. This caused 12 new test failures for the - test-traps test target: - - caps-tails-curve degenerate-arc degenerate-path joins subsurface - subsurface-scale twin twin-antialias-gray twin-antialias-mixed - twin-antialias-none twin-antialias-subpixel user-font - - Most of these are indeed (new?) bugs. However, caps-tails-curve actually started - producing the expected result and the reference image just wrongly captures the - old state of things. - - At the time of that commit, just taking the output from test-traps as the new - reference image works fine for all backends. However, with current git, - something introduced more antialiasing noise and now test-traps changed again - while cairo-xcb stayed with the old result. Thus, we also need a new reference - image to fix this test. - - (The wrong reference images come from commit 8488ae02 which turned test-traps' - results into reference images) - - Signed-off-by: Uli Schlachter - - .../reference/caps-tails-curve.traps.argb32.ref.png | Bin 50617 -> 49798 bytes - test/reference/caps-tails-curve.traps.rgb24.ref.png | Bin 50617 -> 49798 bytes - test/reference/caps-tails-curve.xcb.ref.png | Bin 0 -> 50367 bytes - 3 files changed, 0 insertions(+), 0 deletions(-) - -commit 8b55703d760a0032772d7f9b1d17438b2db3f1b4 -Author: Chris Wilson -AuthorDate: Thu Jul 4 10:04:30 2013 +0100 -Commit: Chris Wilson -CommitDate: Thu Jul 4 10:04:30 2013 +0100 - - test: Amend check-refs.sh to support out-of-tree builds - - test/Makefile.am | 4 ++-- - test/check-refs.sh | 19 ++++--------------- - 2 files changed, 6 insertions(+), 17 deletions(-) - -commit 8b4151a5e59cd2036e32c0eeb13afe420a434e19 -Author: Chris Wilson -AuthorDate: Thu Jul 4 10:02:46 2013 +0100 -Commit: Chris Wilson -CommitDate: Thu Jul 4 10:02:46 2013 +0100 - - test: Remove conflicting .ref.png, .argb32.ref.png, .rgb24.ref.png - - Where a content specific reference image exists, prefer to have both - content reference images (i.e. both argb32.ref and rgb24.ref) rather - than a mix of .ref and argb32/rgb24. - - test/reference/a8-clear.ref.png | Bin 272 -> 0 bytes - test/reference/aliasing.ref.png | Bin 76314 -> 0 bytes - test/reference/alpha-similar.argb32.ref.png | Bin 0 -> 99 bytes - test/reference/alpha-similar.ref.png | Bin 99 -> 0 bytes - test/reference/arc-direction.ref.png | Bin 4124 -> 0 bytes - test/reference/big-line.ref.png | Bin 897 -> 0 bytes - test/reference/bitmap-font.argb32.ref.png | Bin 0 -> 950 bytes - test/reference/bitmap-font.ref.png | Bin 950 -> 0 bytes - test/reference/bug-40410.ref.png | Bin 428 -> 0 bytes - test/reference/bug-bo-ricotz.ref.png | Bin 2108 -> 0 bytes - test/reference/bug-extents.ref.png | Bin 6364 -> 0 bytes - test/reference/caps-joins.ref.png | Bin 2621 -> 0 bytes - test/reference/caps-sub-paths.ref.png | Bin 176 -> 0 bytes - test/reference/caps.ref.png | Bin 1687 -> 0 bytes - test/reference/clear-source.ref.png | Bin 779 -> 0 bytes - test/reference/clip-disjoint-hatching.ref.png | Bin 4390 -> 0 bytes - .../clip-fill-rule-pixel-aligned.argb32.ref.png | Bin 0 -> 195 bytes - test/reference/clip-fill-rule-pixel-aligned.ref.png | Bin 195 -> 0 bytes - test/reference/clip-fill.ref.png | Bin 836 -> 0 bytes - test/reference/clip-group-shapes-circles.ref.png | Bin 1178 -> 0 bytes - test/reference/clip-image.ref.png | Bin 2679 -> 0 bytes - test/reference/clip-intersect.ref.png | Bin 201 -> 0 bytes - test/reference/clip-mixed-antialias.ref.png | Bin 981 -> 0 bytes - test/reference/clip-polygons.ref.png | Bin 1355 -> 0 bytes - test/reference/clip-push-group.ref.png | Bin 166 -> 0 bytes - test/reference/clip-shape.ref.png | Bin 2249 -> 0 bytes - test/reference/clip-text.ref.png | Bin 796 -> 0 bytes - test/reference/clip-unbounded.argb32.ref.png | Bin 0 -> 100 bytes - test/reference/clip-unbounded.ref.png | Bin 100 -> 0 bytes - test/reference/clipped-group.ref.png | Bin 289 -> 0 bytes - test/reference/close-path.ref.png | Bin 271 -> 0 bytes - test/reference/copy-path.ref.png | Bin 513 -> 0 bytes - test/reference/create-from-png.ref.png | Bin 131 -> 0 bytes - test/reference/culled-glyphs.ref.png | Bin 434 -> 0 bytes - test/reference/dash-infinite-loop.ref.png | Bin 626 -> 0 bytes - test/reference/dash-offset-negative.ref.png | Bin 171 -> 0 bytes - test/reference/dash-state.ref.png | Bin 7642 -> 0 bytes - test/reference/dash-zero-length.ref.png | Bin 232 -> 0 bytes - test/reference/degenerate-linear-gradient.ref.png | Bin 322 -> 0 bytes - test/reference/degenerate-pen.ref.png | Bin 752 -> 0 bytes - test/reference/device-offset-positive.argb32.ref.png | Bin 0 -> 139 bytes - test/reference/device-offset-positive.ref.png | Bin 139 -> 0 bytes - test/reference/device-offset.argb32.ref.png | Bin 0 -> 137 bytes - test/reference/device-offset.ref.png | Bin 137 -> 0 bytes - test/reference/extend-pad-border.ref.png | Bin 616 -> 0 bytes - test/reference/fill-alpha-pattern.ref.png | Bin 2962 -> 0 bytes - test/reference/fill-alpha.ref.png | Bin 2167 -> 0 bytes - test/reference/fill-and-stroke-alpha-add.ref.png | Bin 536 -> 0 bytes - test/reference/fill-and-stroke-alpha.ref.png | Bin 462 -> 0 bytes - test/reference/fill-image.ref.png | Bin 972 -> 0 bytes - test/reference/fill-missed-stop.ref.png | Bin 455 -> 0 bytes - test/reference/fill-rule.ref.png | Bin 1769 -> 0 bytes - test/reference/filter-bilinear-extents.ref.png | Bin 1340 -> 0 bytes - test/reference/font-matrix-translation.ref.png | Bin 874 -> 0 bytes - test/reference/ft-show-glyphs-positioning.ref.png | Bin 3297 -> 0 bytes - test/reference/ft-show-glyphs-table.ref.png | Bin 9893 -> 0 bytes - test/reference/ft-text-vertical-layout-type1.ref.png | Bin 3591 -> 0 bytes - test/reference/glyph-cache-pressure.ref.png | Bin 2863 -> 0 bytes - test/reference/gradient-alpha.ref.png | Bin 147 -> 0 bytes - test/reference/gradient-constant-alpha.ref.png | Bin 117 -> 0 bytes - test/reference/gradient-zero-stops.argb32.ref.png | Bin 0 -> 105 bytes - test/reference/gradient-zero-stops.ref.png | Bin 105 -> 0 bytes - test/reference/group-unaligned.ref.png | Bin 325 -> 0 bytes - test/reference/halo-transform.ref.png | Bin 11313 -> 0 bytes - test/reference/horizontal-clip.ref.png | Bin 129 -> 0 bytes - test/reference/huge-linear.ref.png | Bin 1619 -> 0 bytes - test/reference/infinite-join.ref.png | Bin 142 -> 0 bytes - test/reference/joins-loop.ref.png | Bin 3112 -> 0 bytes - test/reference/joins-star.ref.png | Bin 4028 -> 0 bytes - test/reference/large-twin-antialias-mixed.ref.png | Bin 10740 -> 0 bytes - test/reference/leaky-dashed-stroke.ref.png | Bin 5627 -> 0 bytes - test/reference/leaky-polygon.ref.png | Bin 281 -> 0 bytes - .../reference/line-width-large-overlap-rotated.ref.png | Bin 406 -> 0 bytes - test/reference/line-width-overlap-rotated.ref.png | Bin 719 -> 0 bytes - test/reference/line-width-scale.ref.png | Bin 3568 -> 0 bytes - test/reference/line-width-tolerance.ref.png | Bin 192 -> 0 bytes - test/reference/line-width.ref.png | Bin 201 -> 0 bytes - test/reference/linear-gradient-reflect.ref.png | Bin 216 -> 0 bytes - test/reference/linear-gradient-subset.ref.png | Bin 802 -> 0 bytes - test/reference/linear-gradient.ref.png | Bin 961 -> 0 bytes - test/reference/long-dashed-lines.ref.png | Bin 1453 -> 0 bytes - test/reference/mask-ctm.argb32.ref.png | Bin 0 -> 129 bytes - test/reference/mask-ctm.ref.png | Bin 129 -> 0 bytes - test/reference/mask-surface-ctm.argb32.ref.png | Bin 0 -> 129 bytes - test/reference/mask-surface-ctm.ref.png | Bin 129 -> 0 bytes - test/reference/mask-transformed-image.ref.png | Bin 4516 -> 0 bytes - test/reference/mask-transformed-similar.ref.png | Bin 4516 -> 0 bytes - test/reference/miter-precision.ref.png | Bin 878 -> 0 bytes - test/reference/nil-surface.argb32.ref.png | Bin 0 -> 107 bytes - test/reference/nil-surface.ref.png | Bin 107 -> 0 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.argb32.ref.png | Bin 0 -> 238 bytes - test/reference/operator.ref.png | Bin 238 -> 0 bytes - test/reference/over-above-source.ref.png | Bin 511 -> 0 bytes - test/reference/over-around-source.ref.png | Bin 578 -> 0 bytes - test/reference/over-below-source.ref.png | Bin 413 -> 0 bytes - test/reference/over-between-source.ref.png | Bin 561 -> 0 bytes - test/reference/paint-with-alpha-clip-mask.ref.png | Bin 348 -> 0 bytes - test/reference/partial-clip-text-bottom.ref.png | Bin 259 -> 0 bytes - test/reference/partial-clip-text-left.ref.png | Bin 293 -> 0 bytes - test/reference/partial-clip-text-right.ref.png | Bin 155 -> 0 bytes - test/reference/partial-clip-text-top.ref.png | Bin 173 -> 0 bytes - test/reference/pass-through.argb32.ref.png | Bin 0 -> 221 bytes - test/reference/pass-through.ref.png | Bin 221 -> 0 bytes - test/reference/path-append.ref.png | Bin 4424 -> 0 bytes - test/reference/path-stroke-twice.ref.png | Bin 209 -> 0 bytes - test/reference/pixman-rotate.argb32.ref.png | Bin 0 -> 260 bytes - test/reference/pixman-rotate.ref.png | Bin 260 -> 0 bytes - test/reference/pthread-show-text.ref.png | Bin 29759 -> 0 bytes - test/reference/push-group-color.ref.png | Bin 2676 -> 0 bytes - test/reference/push-group.ref.png | Bin 2829 -> 0 bytes - test/reference/random-intersections-curves-eo.ref.png | Bin 156491 -> 0 bytes - test/reference/random-intersections-curves-nz.ref.png | Bin 151310 -> 0 bytes - test/reference/random-intersections-eo.ref.png | Bin 85197 -> 0 bytes - test/reference/random-intersections-nonzero.ref.png | Bin 83247 -> 0 bytes - test/reference/record-paint-alpha-clip.ref.png | Bin 299 -> 0 bytes - test/reference/record-select-font-face.ref.png | Bin 2245 -> 0 bytes - test/reference/recording-surface-over.ref.png | Bin 3072 -> 0 bytes - test/reference/rectilinear-miter-limit.ref.png | Bin 145 -> 0 bytes - test/reference/rel-path.ref.png | Bin 177 -> 0 bytes - test/reference/rotate-clip-image-surface-paint.ref.png | Bin 312 -> 0 bytes - test/reference/rotated-clip.ref.png | Bin 2713 -> 0 bytes - test/reference/rounded-rectangle-fill.ref.png | Bin 563 -> 0 bytes - test/reference/scale-offset-image.ref.png | Bin 7688 -> 0 bytes - test/reference/scale-offset-similar.ref.png | Bin 7688 -> 0 bytes - .../scale-source-surface-paint.argb32.ref.png | Bin 0 -> 147 bytes - test/reference/scale-source-surface-paint.ref.png | Bin 147 -> 0 bytes - test/reference/select-font-face.ref.png | Bin 2245 -> 0 bytes - test/reference/self-copy.ref.png | Bin 258 -> 0 bytes - test/reference/set-source.argb32.ref.png | Bin 0 -> 120 bytes - test/reference/set-source.ref.png | Bin 120 -> 0 bytes - test/reference/shape-general-convex.ref.png | Bin 1869 -> 0 bytes - test/reference/shape-sierpinski.ref.png | Bin 43504 -> 0 bytes - test/reference/show-glyphs-advance.ref.png | Bin 1395 -> 0 bytes - test/reference/show-text-current-point.ref.png | Bin 2185 -> 0 bytes - test/reference/skew-extreme.ref.png | Bin 904 -> 0 bytes - test/reference/smask-fill.ref.png | Bin 1134 -> 0 bytes - test/reference/smask-image-mask.ref.png | Bin 643 -> 0 bytes - test/reference/smask-mask.ref.png | Bin 2523 -> 0 bytes - test/reference/smask-paint.ref.png | Bin 2639 -> 0 bytes - test/reference/smask-stroke.ref.png | Bin 1598 -> 0 bytes - test/reference/smask-text.ref.png | Bin 1623 -> 0 bytes - test/reference/smask.ref.png | Bin 3401 -> 0 bytes - .../source-surface-scale-paint.argb32.ref.png | Bin 0 -> 139 bytes - test/reference/source-surface-scale-paint.ref.png | Bin 139 -> 0 bytes - test/reference/spline-decomposition.ref.png | Bin 10005 -> 0 bytes - test/reference/stroke-image.ref.png | Bin 972 -> 0 bytes - test/reference/stroke-pattern.ref.png | Bin 1417 -> 0 bytes - test/reference/subsurface-scale.ref.png | Bin 5216 -> 0 bytes - test/reference/subsurface.ref.png | Bin 1281 -> 0 bytes - test/reference/surface-pattern-scale-down.ref.png | Bin 1784 -> 0 bytes - test/reference/surface-pattern-scale-up.ref.png | Bin 4017 -> 0 bytes - test/reference/surface-pattern.ref.png | Bin 11100 -> 0 bytes - test/reference/text-antialias-gray.ref.png | Bin 975 -> 0 bytes - test/reference/text-antialias-subpixel-bgr.ref.png | Bin 1001 -> 0 bytes - test/reference/text-antialias-subpixel-rgb.ref.png | Bin 1004 -> 0 bytes - test/reference/text-antialias-subpixel-vbgr.ref.png | Bin 992 -> 0 bytes - test/reference/text-antialias-subpixel-vrgb.ref.png | Bin 1004 -> 0 bytes - test/reference/text-antialias-subpixel.ref.png | Bin 1004 -> 0 bytes - test/reference/text-glyph-range.ref.png | Bin 1729 -> 0 bytes - test/reference/text-pattern.ref.png | Bin 3444 -> 0 bytes - test/reference/tiger.ref.png | Bin 71094 -> 0 bytes - test/reference/transforms.ref.png | Bin 341 -> 0 bytes - test/reference/trap-clip.ref.png | Bin 5741 -> 0 bytes - test/reference/twin-antialias-mixed.ref.png | Bin 1639 -> 0 bytes - test/reference/twin-antialias-none.ref.png | Bin 694 -> 0 bytes - test/reference/unclosed-strokes.ref.png | Bin 1432 -> 0 bytes - test/reference/user-font-proxy.ref.png | Bin 14023 -> 0 bytes - test/reference/user-font-rescale.ref.png | Bin 14852 -> 0 bytes - test/reference/world-map-fill.ref.png | Bin 45440 -> 0 bytes - test/reference/world-map-stroke.ref.png | Bin 43370 -> 0 bytes - test/reference/world-map.ref.png | Bin 65880 -> 0 bytes - test/reference/zero-mask.argb32.ref.png | Bin 0 -> 402 bytes - test/reference/zero-mask.ref.png | Bin 402 -> 0 bytes - 175 files changed, 0 insertions(+), 0 deletions(-) - -commit 9eb1237e006bb19098144cc045c0a03d167a82b4 -Author: Chris Wilson -AuthorDate: Thu Jul 4 09:40:37 2013 +0100 -Commit: Chris Wilson -CommitDate: Thu Jul 4 09:40:37 2013 +0100 - - test: Add a few reference images found lurking on my machine - - test/reference/bug-seams.image.xfail.png | Bin 0 -> 1647 bytes - test/reference/record1414x-fill-alpha.ref.png | Bin 0 -> 4212 bytes - test/reference/record2x-fill-alpha.ref.png | Bin 0 -> 5950 bytes - test/reference/record90-fill-alpha.ref.png | Bin 0 -> 2650 bytes - 4 files changed, 0 insertions(+), 0 deletions(-) - -commit 3255462a238dfb6d9f1336f04918d51f2cb6ea18 -Author: Chris Wilson -AuthorDate: Thu Jul 4 09:24:25 2013 +0100 -Commit: Chris Wilson -CommitDate: Thu Jul 4 09:27:56 2013 +0100 - - test: Remove all identical (cmp & pdiff) reference images - - Courtesy of the improved check-ref-dups written by Bryce Harrington: - - Running make check on the codebase (with default configuration) with the - redundant images removed produces essentially the same test results: - - Before - ------ - Tests run: 13687 - Passed: 9216 - Failed: 3566 - Expected Failed: 312 - Error: 1 - Crashed: 17 - Untested: 575 - Total: 13687 - - After - ----- - Tests run: 13689 - Passed: 9216 - Failed: 3566 - Expected Failed: 312 - Error: 1 - Crashed: 19 - Untested: 575 - Total: 13689 - - (with the exception being the pthread tests misbehaving between runs) - - test/reference/a1-clip-fill-equal.argb32.ref.png | Bin 120 -> 0 bytes - test/reference/a1-clip-fill-equal.mask.argb32.ref.png | Bin 120 -> 0 bytes - test/reference/a1-clip-fill-equal.mask.rgb24.ref.png | Bin 120 -> 0 bytes - test/reference/a1-clip-fill-equal.rgb24.ref.png | Bin 120 -> 0 bytes - test/reference/a1-clip-fill-equal.traps.argb32.ref.png | Bin 120 -> 0 bytes - test/reference/a1-clip-fill-equal.traps.rgb24.ref.png | Bin 120 -> 0 bytes - test/reference/a1-clip-fill-rule.mask.argb32.ref.png | Bin 236 -> 0 bytes - test/reference/a1-clip-fill-rule.mask.rgb24.ref.png | Bin 218 -> 0 bytes - test/reference/a1-clip-fill-rule.traps.argb32.ref.png | Bin 236 -> 0 bytes - test/reference/a1-clip-fill-rule.traps.rgb24.ref.png | Bin 218 -> 0 bytes - test/reference/a1-clip-fill.argb32.ref.png | Bin 120 -> 0 bytes - test/reference/a1-clip-fill.mask.argb32.ref.png | Bin 120 -> 0 bytes - test/reference/a1-clip-fill.mask.rgb24.ref.png | Bin 120 -> 0 bytes - test/reference/a1-clip-fill.rgb24.ref.png | Bin 120 -> 0 bytes - test/reference/a1-clip-fill.traps.argb32.ref.png | Bin 120 -> 0 bytes - test/reference/a1-clip-fill.traps.rgb24.ref.png | Bin 120 -> 0 bytes - test/reference/a1-clip-paint.argb32.ref.png | Bin 120 -> 0 bytes - test/reference/a1-clip-paint.mask.argb32.ref.png | Bin 120 -> 0 bytes - test/reference/a1-clip-paint.mask.rgb24.ref.png | Bin 120 -> 0 bytes - test/reference/a1-clip-paint.rgb24.ref.png | Bin 120 -> 0 bytes - test/reference/a1-clip-paint.traps.argb32.ref.png | Bin 120 -> 0 bytes - test/reference/a1-clip-paint.traps.rgb24.ref.png | Bin 120 -> 0 bytes - test/reference/a1-clip-stroke.argb32.ref.png | Bin 120 -> 0 bytes - test/reference/a1-clip-stroke.mask.argb32.ref.png | Bin 120 -> 0 bytes - test/reference/a1-clip-stroke.mask.rgb24.ref.png | Bin 120 -> 0 bytes - test/reference/a1-clip-stroke.rgb24.ref.png | Bin 120 -> 0 bytes - test/reference/a1-clip-stroke.traps.argb32.ref.png | Bin 120 -> 0 bytes - test/reference/a1-clip-stroke.traps.rgb24.ref.png | Bin 120 -> 0 bytes - test/reference/a1-fill.argb32.ref.png | Bin 328 -> 0 bytes - test/reference/a1-fill.mask.argb32.ref.png | Bin 328 -> 0 bytes - test/reference/a1-fill.mask.rgb24.ref.png | Bin 328 -> 0 bytes - test/reference/a1-fill.rgb24.ref.png | Bin 328 -> 0 bytes - test/reference/a1-fill.traps.argb32.ref.png | Bin 328 -> 0 bytes - test/reference/a1-fill.traps.ref.png | Bin 328 -> 0 bytes - test/reference/a1-fill.traps.rgb24.ref.png | Bin 328 -> 0 bytes - test/reference/a1-image-sample.argb32.ref.png | Bin 122 -> 0 bytes - test/reference/a1-image-sample.mask.argb32.ref.png | Bin 122 -> 0 bytes - test/reference/a1-image-sample.mask.rgb24.ref.png | Bin 122 -> 0 bytes - test/reference/a1-image-sample.rgb24.ref.png | Bin 122 -> 0 bytes - test/reference/a1-image-sample.traps.argb32.ref.png | Bin 122 -> 0 bytes - test/reference/a1-image-sample.traps.rgb24.ref.png | Bin 122 -> 0 bytes - .../a1-image-sample.xlib-fallback.rgb24.ref.png | Bin 122 -> 0 bytes - .../a1-image-sample.xlib-window.rgb24.ref.png | Bin 122 -> 0 bytes - test/reference/a1-line-width.argb32.ref.png | Bin 154 -> 0 bytes - test/reference/a1-line-width.mask.argb32.ref.png | Bin 154 -> 0 bytes - test/reference/a1-line-width.mask.rgb24.ref.png | Bin 154 -> 0 bytes - test/reference/a1-line-width.rgb24.ref.png | Bin 154 -> 0 bytes - test/reference/a1-line-width.traps.argb32.ref.png | Bin 154 -> 0 bytes - test/reference/a1-line-width.traps.rgb24.ref.png | Bin 154 -> 0 bytes - test/reference/a1-mask-sample.argb32.ref.png | Bin 122 -> 0 bytes - test/reference/a1-mask-sample.mask.argb32.ref.png | Bin 122 -> 0 bytes - test/reference/a1-mask-sample.mask.rgb24.ref.png | Bin 122 -> 0 bytes - test/reference/a1-mask-sample.rgb24.ref.png | Bin 122 -> 0 bytes - test/reference/a1-mask-sample.traps.argb32.ref.png | Bin 122 -> 0 bytes - test/reference/a1-mask-sample.traps.rgb24.ref.png | Bin 122 -> 0 bytes - test/reference/a1-mask.argb32.ref.png | Bin 106 -> 0 bytes - test/reference/a1-mask.mask.argb32.ref.png | Bin 106 -> 0 bytes - test/reference/a1-mask.mask.rgb24.ref.png | Bin 106 -> 0 bytes - test/reference/a1-mask.pdf.ref.png | Bin 106 -> 0 bytes - test/reference/a1-mask.ps.ref.png | Bin 106 -> 0 bytes - test/reference/a1-mask.rgb24.ref.png | Bin 106 -> 0 bytes - test/reference/a1-mask.traps.argb32.ref.png | Bin 106 -> 0 bytes - test/reference/a1-mask.traps.rgb24.ref.png | Bin 106 -> 0 bytes - .../a1-rasterisation-rectangles.argb32.ref.png | Bin 1729 -> 0 bytes - .../a1-rasterisation-rectangles.mask.argb32.ref.png | Bin 1729 -> 0 bytes - .../a1-rasterisation-rectangles.mask.rgb24.ref.png | Bin 1729 -> 0 bytes - .../a1-rasterisation-rectangles.rgb24.ref.png | Bin 1729 -> 0 bytes - .../a1-rasterisation-rectangles.traps.argb32.ref.png | Bin 1729 -> 0 bytes - .../a1-rasterisation-rectangles.traps.rgb24.ref.png | Bin 1729 -> 0 bytes - .../a1-rasterisation-triangles.argb32.ref.png | Bin 1729 -> 0 bytes - .../a1-rasterisation-triangles.mask.argb32.ref.png | Bin 1729 -> 0 bytes - .../a1-rasterisation-triangles.mask.rgb24.ref.png | Bin 1729 -> 0 bytes - .../reference/a1-rasterisation-triangles.rgb24.ref.png | Bin 1729 -> 0 bytes - .../a1-rasterisation-triangles.traps.argb32.ref.png | Bin 1729 -> 0 bytes - .../a1-rasterisation-triangles.traps.rgb24.ref.png | Bin 1729 -> 0 bytes - test/reference/a1-rectilinear-grid.argb32.ref.png | Bin 207 -> 0 bytes - test/reference/a1-rectilinear-grid.mask.argb32.ref.png | Bin 207 -> 0 bytes - test/reference/a1-rectilinear-grid.mask.rgb24.ref.png | Bin 207 -> 0 bytes - test/reference/a1-rectilinear-grid.rgb24.ref.png | Bin 207 -> 0 bytes - .../reference/a1-rectilinear-grid.traps.argb32.ref.png | Bin 207 -> 0 bytes - test/reference/a1-rectilinear-grid.traps.rgb24.ref.png | Bin 207 -> 0 bytes - test/reference/a1-sample.argb32.ref.png | Bin 786 -> 0 bytes - test/reference/a1-sample.mask.argb32.ref.png | Bin 786 -> 0 bytes - test/reference/a1-sample.mask.rgb24.ref.png | Bin 786 -> 0 bytes - test/reference/a1-sample.rgb24.ref.png | Bin 786 -> 0 bytes - test/reference/a1-sample.traps.argb32.ref.png | Bin 786 -> 0 bytes - test/reference/a1-sample.traps.rgb24.ref.png | Bin 786 -> 0 bytes - test/reference/a1-traps-sample.argb32.ref.png | Bin 120 -> 0 bytes - test/reference/a1-traps-sample.mask.argb32.ref.png | Bin 120 -> 0 bytes - test/reference/a1-traps-sample.mask.rgb24.ref.png | Bin 120 -> 0 bytes - test/reference/a1-traps-sample.rgb24.ref.png | Bin 120 -> 0 bytes - test/reference/a1-traps-sample.traps.argb32.ref.png | Bin 120 -> 0 bytes - test/reference/a1-traps-sample.traps.rgb24.ref.png | Bin 120 -> 0 bytes - test/reference/a8-clear.mask.argb32.ref.png | Bin 271 -> 0 bytes - test/reference/a8-clear.mask.rgb24.ref.png | Bin 271 -> 0 bytes - test/reference/a8-mask.argb32.ref.png | Bin 103 -> 0 bytes - test/reference/a8-mask.mask.argb32.ref.png | Bin 103 -> 0 bytes - test/reference/a8-mask.mask.rgb24.ref.png | Bin 103 -> 0 bytes - test/reference/a8-mask.rgb24.ref.png | Bin 103 -> 0 bytes - test/reference/a8-mask.traps.argb32.ref.png | Bin 103 -> 0 bytes - test/reference/a8-mask.traps.rgb24.ref.png | Bin 103 -> 0 bytes - test/reference/aliasing.mask.argb32.ref.png | Bin 104324 -> 0 bytes - test/reference/aliasing.mask.rgb24.ref.png | Bin 104324 -> 0 bytes - test/reference/alpha-similar.argb32.ref.png | Bin 99 -> 0 bytes - test/reference/alpha-similar.mask.argb32.ref.png | Bin 99 -> 0 bytes - test/reference/alpha-similar.mask.rgb24.ref.png | Bin 88 -> 0 bytes - test/reference/alpha-similar.traps.argb32.ref.png | Bin 99 -> 0 bytes - test/reference/alpha-similar.traps.rgb24.ref.png | Bin 88 -> 0 bytes - test/reference/api-special-cases.argb32.ref.png | Bin 95 -> 0 bytes - test/reference/api-special-cases.mask.argb32.ref.png | Bin 95 -> 0 bytes - test/reference/api-special-cases.mask.rgb24.ref.png | Bin 95 -> 0 bytes - test/reference/api-special-cases.rgb24.ref.png | Bin 95 -> 0 bytes - test/reference/api-special-cases.traps.argb32.ref.png | Bin 95 -> 0 bytes - test/reference/api-special-cases.traps.rgb24.ref.png | Bin 95 -> 0 bytes - test/reference/arc-direction.mask.argb32.ref.png | Bin 6380 -> 0 bytes - test/reference/arc-direction.mask.rgb24.ref.png | Bin 6380 -> 0 bytes - test/reference/arc-infinite-loop.argb32.ref.png | Bin 96 -> 0 bytes - test/reference/arc-infinite-loop.mask.argb32.ref.png | Bin 96 -> 0 bytes - test/reference/arc-infinite-loop.mask.rgb24.ref.png | Bin 96 -> 0 bytes - test/reference/arc-infinite-loop.rgb24.ref.png | Bin 96 -> 0 bytes - test/reference/arc-infinite-loop.traps.argb32.ref.png | Bin 96 -> 0 bytes - test/reference/arc-infinite-loop.traps.rgb24.ref.png | Bin 96 -> 0 bytes - test/reference/big-empty-box.traps.argb32.ref.png | Bin 111 -> 0 bytes - test/reference/big-empty-box.traps.rgb24.ref.png | Bin 108 -> 0 bytes - test/reference/big-empty-triangle.mask.argb32.ref.png | Bin 111 -> 0 bytes - test/reference/big-empty-triangle.mask.rgb24.ref.png | Bin 108 -> 0 bytes - test/reference/big-empty-triangle.traps.argb32.ref.png | Bin 111 -> 0 bytes - test/reference/big-empty-triangle.traps.rgb24.ref.png | Bin 108 -> 0 bytes - test/reference/big-line.mask.argb32.ref.png | Bin 977 -> 0 bytes - test/reference/big-line.mask.rgb24.ref.png | Bin 977 -> 0 bytes - test/reference/big-little-box.mask.argb32.ref.png | Bin 169 -> 0 bytes - test/reference/big-little-box.mask.rgb24.ref.png | Bin 160 -> 0 bytes - test/reference/big-little-box.traps.argb32.ref.png | Bin 169 -> 0 bytes - test/reference/big-little-box.traps.rgb24.ref.png | Bin 160 -> 0 bytes - test/reference/big-little-triangle.mask.argb32.ref.png | Bin 409 -> 0 bytes - test/reference/big-little-triangle.mask.rgb24.ref.png | Bin 328 -> 0 bytes - test/reference/bilevel-image.argb32.ref.png | Bin 105 -> 0 bytes - test/reference/bilevel-image.mask.argb32.ref.png | Bin 105 -> 0 bytes - test/reference/bilevel-image.mask.rgb24.ref.png | Bin 105 -> 0 bytes - test/reference/bilevel-image.rgb24.ref.png | Bin 105 -> 0 bytes - test/reference/bilevel-image.traps.argb32.ref.png | Bin 105 -> 0 bytes - test/reference/bilevel-image.traps.rgb24.ref.png | Bin 105 -> 0 bytes - test/reference/bitmap-font.argb32.ref.png | Bin 931 -> 0 bytes - test/reference/bitmap-font.mask.argb32.ref.png | Bin 931 -> 0 bytes - test/reference/bitmap-font.mask.rgb24.ref.png | Bin 871 -> 0 bytes - test/reference/bitmap-font.traps.argb32.ref.png | Bin 931 -> 0 bytes - test/reference/bitmap-font.traps.rgb24.ref.png | Bin 871 -> 0 bytes - test/reference/bug-40410.mask.argb32.ref.png | Bin 429 -> 0 bytes - test/reference/bug-40410.mask.rgb24.ref.png | Bin 429 -> 0 bytes - test/reference/bug-bo-rectangular.argb32.ref.png | Bin 950 -> 0 bytes - test/reference/bug-bo-rectangular.mask.argb32.ref.png | Bin 950 -> 0 bytes - test/reference/bug-bo-rectangular.mask.rgb24.ref.png | Bin 950 -> 0 bytes - test/reference/bug-bo-rectangular.rgb24.ref.png | Bin 950 -> 0 bytes - test/reference/bug-bo-rectangular.traps.argb32.ref.png | Bin 950 -> 0 bytes - test/reference/bug-bo-rectangular.traps.rgb24.ref.png | Bin 950 -> 0 bytes - test/reference/bug-bo-ricotz.mask.argb32.ref.png | Bin 2128 -> 0 bytes - test/reference/bug-bo-ricotz.mask.rgb24.ref.png | Bin 2128 -> 0 bytes - test/reference/bug-bo-ricotz.traps.argb32.ref.png | Bin 2125 -> 0 bytes - test/reference/bug-bo-ricotz.traps.rgb24.ref.png | Bin 2125 -> 0 bytes - test/reference/bug-extents.mask.argb32.ref.png | Bin 9251 -> 0 bytes - test/reference/bug-extents.mask.rgb24.ref.png | Bin 9251 -> 0 bytes - test/reference/caps-joins.mask.argb32.ref.png | Bin 2893 -> 0 bytes - test/reference/caps-joins.mask.rgb24.ref.png | Bin 2893 -> 0 bytes - test/reference/caps-sub-paths.mask.argb32.ref.png | Bin 168 -> 0 bytes - test/reference/caps-sub-paths.mask.rgb24.ref.png | Bin 168 -> 0 bytes - test/reference/caps.mask.argb32.ref.png | Bin 2115 -> 0 bytes - test/reference/caps.mask.rgb24.ref.png | Bin 2115 -> 0 bytes - test/reference/checkerboard.argb32.ref.png | Bin 142 -> 0 bytes - test/reference/checkerboard.mask.argb32.ref.png | Bin 142 -> 0 bytes - test/reference/checkerboard.mask.rgb24.ref.png | Bin 142 -> 0 bytes - test/reference/checkerboard.rgb24.ref.png | Bin 142 -> 0 bytes - test/reference/checkerboard.traps.argb32.ref.png | Bin 142 -> 0 bytes - test/reference/checkerboard.traps.rgb24.ref.png | Bin 142 -> 0 bytes - test/reference/clear-source.mask.argb32.ref.png | Bin 882 -> 0 bytes - test/reference/clear-source.mask.rgb24.ref.png | Bin 882 -> 0 bytes - test/reference/clear.mask.argb32.ref.png | Bin 692 -> 0 bytes - test/reference/clear.mask.rgb24.ref.png | Bin 617 -> 0 bytes - test/reference/clip-all.argb32.ref.png | Bin 95 -> 0 bytes - test/reference/clip-all.mask.argb32.ref.png | Bin 95 -> 0 bytes - test/reference/clip-all.mask.rgb24.ref.png | Bin 95 -> 0 bytes - test/reference/clip-all.rgb24.ref.png | Bin 95 -> 0 bytes - test/reference/clip-all.traps.argb32.ref.png | Bin 95 -> 0 bytes - test/reference/clip-all.traps.rgb24.ref.png | Bin 95 -> 0 bytes - test/reference/clip-complex-shape-eo-aa.argb32.ref.png | Bin 325 -> 0 bytes - .../clip-complex-shape-eo-aa.mask.argb32.ref.png | Bin 325 -> 0 bytes - .../clip-complex-shape-eo-aa.mask.rgb24.ref.png | Bin 325 -> 0 bytes - test/reference/clip-complex-shape-eo-aa.rgb24.ref.png | Bin 325 -> 0 bytes - .../clip-complex-shape-eo-aa.traps.argb32.ref.png | Bin 325 -> 0 bytes - .../clip-complex-shape-eo-aa.traps.rgb24.ref.png | Bin 325 -> 0 bytes - .../clip-complex-shape-eo-mono.argb32.ref.png | Bin 325 -> 0 bytes - .../clip-complex-shape-eo-mono.mask.argb32.ref.png | Bin 325 -> 0 bytes - .../clip-complex-shape-eo-mono.mask.rgb24.ref.png | Bin 325 -> 0 bytes - .../reference/clip-complex-shape-eo-mono.rgb24.ref.png | Bin 325 -> 0 bytes - .../clip-complex-shape-eo-mono.traps.argb32.ref.png | Bin 325 -> 0 bytes - .../clip-complex-shape-eo-mono.traps.rgb24.ref.png | Bin 325 -> 0 bytes - test/reference/clip-contexts.argb32.ref.png | Bin 98 -> 0 bytes - test/reference/clip-contexts.mask.argb32.ref.png | Bin 98 -> 0 bytes - test/reference/clip-contexts.mask.rgb24.ref.png | Bin 98 -> 0 bytes - test/reference/clip-contexts.rgb24.ref.png | Bin 98 -> 0 bytes - test/reference/clip-contexts.traps.argb32.ref.png | Bin 98 -> 0 bytes - test/reference/clip-contexts.traps.rgb24.ref.png | Bin 98 -> 0 bytes - test/reference/clip-device-offset.mask.argb32.ref.png | Bin 175 -> 0 bytes - test/reference/clip-device-offset.mask.rgb24.ref.png | Bin 168 -> 0 bytes - test/reference/clip-device-offset.traps.argb32.ref.png | Bin 175 -> 0 bytes - test/reference/clip-device-offset.traps.rgb24.ref.png | Bin 168 -> 0 bytes - test/reference/clip-empty-group.argb32.ref.png | Bin 103 -> 0 bytes - test/reference/clip-empty-group.mask.argb32.ref.png | Bin 103 -> 0 bytes - test/reference/clip-empty-group.mask.rgb24.ref.png | Bin 103 -> 0 bytes - test/reference/clip-empty-group.rgb24.ref.png | Bin 103 -> 0 bytes - test/reference/clip-empty-group.traps.argb32.ref.png | Bin 103 -> 0 bytes - test/reference/clip-empty-group.traps.rgb24.ref.png | Bin 103 -> 0 bytes - test/reference/clip-empty-save.argb32.ref.png | Bin 95 -> 0 bytes - test/reference/clip-empty-save.mask.argb32.ref.png | Bin 95 -> 0 bytes - test/reference/clip-empty-save.mask.rgb24.ref.png | Bin 95 -> 0 bytes - test/reference/clip-empty-save.rgb24.ref.png | Bin 95 -> 0 bytes - test/reference/clip-empty-save.traps.argb32.ref.png | Bin 95 -> 0 bytes - test/reference/clip-empty-save.traps.rgb24.ref.png | Bin 95 -> 0 bytes - test/reference/clip-empty.argb32.ref.png | Bin 95 -> 0 bytes - test/reference/clip-empty.mask.argb32.ref.png | Bin 95 -> 0 bytes - test/reference/clip-empty.mask.rgb24.ref.png | Bin 95 -> 0 bytes - test/reference/clip-empty.rgb24.ref.png | Bin 95 -> 0 bytes - test/reference/clip-empty.traps.argb32.ref.png | Bin 95 -> 0 bytes - test/reference/clip-empty.traps.rgb24.ref.png | Bin 95 -> 0 bytes - test/reference/clip-fill-no-op.argb32.ref.png | Bin 152 -> 0 bytes - test/reference/clip-fill-no-op.mask.argb32.ref.png | Bin 152 -> 0 bytes - test/reference/clip-fill-no-op.mask.rgb24.ref.png | Bin 152 -> 0 bytes - test/reference/clip-fill-no-op.rgb24.ref.png | Bin 152 -> 0 bytes - test/reference/clip-fill-no-op.traps.argb32.ref.png | Bin 152 -> 0 bytes - test/reference/clip-fill-no-op.traps.rgb24.ref.png | Bin 152 -> 0 bytes - .../clip-fill-rule-pixel-aligned.argb32.ref.png | Bin 176 -> 0 bytes - .../clip-fill-rule-pixel-aligned.mask.argb32.ref.png | Bin 176 -> 0 bytes - .../clip-fill-rule-pixel-aligned.mask.rgb24.ref.png | Bin 165 -> 0 bytes - .../clip-fill-rule-pixel-aligned.traps.argb32.ref.png | Bin 176 -> 0 bytes - .../clip-fill-rule-pixel-aligned.traps.rgb24.ref.png | Bin 165 -> 0 bytes - test/reference/clip-fill-rule.mask.argb32.ref.png | Bin 437 -> 0 bytes - test/reference/clip-fill-rule.mask.rgb24.ref.png | Bin 393 -> 0 bytes - ...clip-group-shapes-aligned-rectangles.argb32.ref.png | Bin 378 -> 0 bytes - ...group-shapes-aligned-rectangles.mask.argb32.ref.png | Bin 378 -> 0 bytes - ...-group-shapes-aligned-rectangles.mask.rgb24.ref.png | Bin 378 -> 0 bytes - .../clip-group-shapes-aligned-rectangles.rgb24.ref.png | Bin 378 -> 0 bytes - ...roup-shapes-aligned-rectangles.traps.argb32.ref.png | Bin 378 -> 0 bytes - ...group-shapes-aligned-rectangles.traps.rgb24.ref.png | Bin 378 -> 0 bytes - ...ip-group-shapes-unaligned-rectangles.argb32.ref.png | Bin 415 -> 0 bytes - ...lip-group-shapes-unaligned-rectangles.rgb24.ref.png | Bin 415 -> 0 bytes - test/reference/clip-intersect.mask.argb32.ref.png | Bin 200 -> 0 bytes - test/reference/clip-intersect.mask.rgb24.ref.png | Bin 200 -> 0 bytes - .../reference/clip-mixed-antialias.mask.argb32.ref.png | Bin 1084 -> 0 bytes - test/reference/clip-mixed-antialias.mask.rgb24.ref.png | Bin 1084 -> 0 bytes - test/reference/clip-nesting.mask.argb32.ref.png | Bin 1044 -> 0 bytes - test/reference/clip-polygons.traps.argb32.ref.png | Bin 1268 -> 0 bytes - test/reference/clip-polygons.traps.rgb24.ref.png | Bin 1268 -> 0 bytes - test/reference/clip-push-group.mask.argb32.ref.png | Bin 164 -> 0 bytes - test/reference/clip-push-group.mask.rgb24.ref.png | Bin 164 -> 0 bytes - test/reference/clip-rectilinear.argb32.ref.png | Bin 439 -> 0 bytes - test/reference/clip-rectilinear.rgb24.ref.png | Bin 439 -> 0 bytes - test/reference/clip-rectilinear.traps.argb32.ref.png | Bin 440 -> 0 bytes - test/reference/clip-rectilinear.traps.rgb24.ref.png | Bin 440 -> 0 bytes - .../clip-rotate-image-surface-paint.argb32.ref.png | Bin 202 -> 0 bytes - ...clip-rotate-image-surface-paint.mask.argb32.ref.png | Bin 202 -> 0 bytes - .../clip-rotate-image-surface-paint.mask.rgb24.ref.png | Bin 202 -> 0 bytes - .../clip-rotate-image-surface-paint.rgb24.ref.png | Bin 202 -> 0 bytes - ...lip-rotate-image-surface-paint.traps.argb32.ref.png | Bin 202 -> 0 bytes - ...clip-rotate-image-surface-paint.traps.rgb24.ref.png | Bin 202 -> 0 bytes - ...ate-image-surface-paint.xlib-fallback.rgb24.ref.png | Bin 202 -> 0 bytes - ...otate-image-surface-paint.xlib-window.rgb24.ref.png | Bin 202 -> 0 bytes - test/reference/clip-stroke-no-op.argb32.ref.png | Bin 152 -> 0 bytes - test/reference/clip-stroke-no-op.mask.argb32.ref.png | Bin 152 -> 0 bytes - test/reference/clip-stroke-no-op.mask.rgb24.ref.png | Bin 152 -> 0 bytes - test/reference/clip-stroke-no-op.rgb24.ref.png | Bin 152 -> 0 bytes - test/reference/clip-stroke-no-op.traps.argb32.ref.png | Bin 152 -> 0 bytes - test/reference/clip-stroke-no-op.traps.rgb24.ref.png | Bin 152 -> 0 bytes - test/reference/clip-twice-rectangle.argb32.ref.png | Bin 323 -> 0 bytes - .../reference/clip-twice-rectangle.mask.argb32.ref.png | Bin 323 -> 0 bytes - test/reference/clip-twice-rectangle.mask.rgb24.ref.png | Bin 323 -> 0 bytes - test/reference/clip-twice-rectangle.rgb24.ref.png | Bin 323 -> 0 bytes - .../clip-twice-rectangle.traps.argb32.ref.png | Bin 323 -> 0 bytes - .../reference/clip-twice-rectangle.traps.rgb24.ref.png | Bin 323 -> 0 bytes - test/reference/clip-unbounded.argb32.ref.png | Bin 100 -> 0 bytes - test/reference/clip-unbounded.mask.argb32.ref.png | Bin 100 -> 0 bytes - test/reference/clip-unbounded.mask.rgb24.ref.png | Bin 97 -> 0 bytes - test/reference/clip-unbounded.traps.argb32.ref.png | Bin 100 -> 0 bytes - test/reference/clip-unbounded.traps.rgb24.ref.png | Bin 97 -> 0 bytes - test/reference/clipped-surface.argb32.ref.png | Bin 345 -> 0 bytes - test/reference/clipped-surface.mask.argb32.ref.png | Bin 345 -> 0 bytes - test/reference/clipped-surface.mask.rgb24.ref.png | Bin 345 -> 0 bytes - test/reference/clipped-surface.rgb24.ref.png | Bin 345 -> 0 bytes - test/reference/clipped-surface.traps.argb32.ref.png | Bin 345 -> 0 bytes - test/reference/clipped-surface.traps.rgb24.ref.png | Bin 345 -> 0 bytes - test/reference/close-path.mask.argb32.ref.png | Bin 294 -> 0 bytes - test/reference/close-path.mask.rgb24.ref.png | Bin 294 -> 0 bytes - ...posite-integer-translate-over-repeat.argb32.ref.png | Bin 334 -> 0 bytes - ...e-integer-translate-over-repeat.mask.argb32.ref.png | Bin 334 -> 0 bytes - ...te-integer-translate-over-repeat.mask.rgb24.ref.png | Bin 334 -> 0 bytes - ...mposite-integer-translate-over-repeat.rgb24.ref.png | Bin 334 -> 0 bytes - ...-integer-translate-over-repeat.traps.argb32.ref.png | Bin 334 -> 0 bytes - ...e-integer-translate-over-repeat.traps.rgb24.ref.png | Bin 334 -> 0 bytes - .../composite-integer-translate-over.argb32.ref.png | Bin 13998 -> 0 bytes - ...omposite-integer-translate-over.mask.argb32.ref.png | Bin 13998 -> 0 bytes - ...composite-integer-translate-over.mask.rgb24.ref.png | Bin 13998 -> 0 bytes - .../composite-integer-translate-over.rgb24.ref.png | Bin 13998 -> 0 bytes - ...mposite-integer-translate-over.traps.argb32.ref.png | Bin 13998 -> 0 bytes - ...omposite-integer-translate-over.traps.rgb24.ref.png | Bin 13998 -> 0 bytes - .../composite-integer-translate-source.argb32.ref.png | Bin 13998 -> 0 bytes - ...posite-integer-translate-source.mask.argb32.ref.png | Bin 13998 -> 0 bytes - ...mposite-integer-translate-source.mask.rgb24.ref.png | Bin 13998 -> 0 bytes - .../composite-integer-translate-source.rgb24.ref.png | Bin 13998 -> 0 bytes - ...osite-integer-translate-source.traps.argb32.ref.png | Bin 13998 -> 0 bytes - ...posite-integer-translate-source.traps.rgb24.ref.png | Bin 13998 -> 0 bytes - test/reference/copy-disjoint.argb32.ref.png | Bin 1098 -> 0 bytes - test/reference/copy-disjoint.mask.argb32.ref.png | Bin 1098 -> 0 bytes - test/reference/copy-disjoint.mask.rgb24.ref.png | Bin 1098 -> 0 bytes - test/reference/copy-disjoint.rgb24.ref.png | Bin 1098 -> 0 bytes - test/reference/copy-disjoint.traps.argb32.ref.png | Bin 1098 -> 0 bytes - test/reference/copy-disjoint.traps.rgb24.ref.png | Bin 1098 -> 0 bytes - test/reference/copy-path.mask.argb32.ref.png | Bin 616 -> 0 bytes - test/reference/copy-path.mask.rgb24.ref.png | Bin 616 -> 0 bytes - test/reference/create-from-png-stream.argb32.ref.png | Bin 96 -> 0 bytes - .../create-from-png-stream.mask.argb32.ref.png | Bin 96 -> 0 bytes - .../create-from-png-stream.mask.rgb24.ref.png | Bin 96 -> 0 bytes - test/reference/create-from-png-stream.rgb24.ref.png | Bin 96 -> 0 bytes - .../create-from-png-stream.traps.argb32.ref.png | Bin 96 -> 0 bytes - .../create-from-png-stream.traps.rgb24.ref.png | Bin 96 -> 0 bytes - test/reference/culled-glyphs.mask.argb32.ref.png | Bin 440 -> 0 bytes - test/reference/culled-glyphs.mask.rgb24.ref.png | Bin 440 -> 0 bytes - test/reference/culled-glyphs.traps.argb32.ref.png | Bin 440 -> 0 bytes - test/reference/culled-glyphs.traps.rgb24.ref.png | Bin 440 -> 0 bytes - test/reference/dash-infinite-loop.mask.argb32.ref.png | Bin 877 -> 0 bytes - test/reference/dash-infinite-loop.mask.rgb24.ref.png | Bin 877 -> 0 bytes - test/reference/dash-no-dash.argb32.ref.png | Bin 119 -> 0 bytes - test/reference/dash-no-dash.mask.argb32.ref.png | Bin 119 -> 0 bytes - test/reference/dash-no-dash.mask.rgb24.ref.png | Bin 119 -> 0 bytes - test/reference/dash-no-dash.rgb24.ref.png | Bin 119 -> 0 bytes - test/reference/dash-no-dash.traps.argb32.ref.png | Bin 119 -> 0 bytes - test/reference/dash-no-dash.traps.rgb24.ref.png | Bin 119 -> 0 bytes - .../reference/dash-offset-negative.mask.argb32.ref.png | Bin 129 -> 0 bytes - test/reference/dash-offset-negative.mask.rgb24.ref.png | Bin 129 -> 0 bytes - test/reference/dash-offset.argb32.ref.png | Bin 794 -> 0 bytes - test/reference/dash-offset.mask.argb32.ref.png | Bin 794 -> 0 bytes - test/reference/dash-offset.mask.rgb24.ref.png | Bin 794 -> 0 bytes - test/reference/dash-offset.rgb24.ref.png | Bin 794 -> 0 bytes - test/reference/dash-offset.traps.argb32.ref.png | Bin 794 -> 0 bytes - test/reference/dash-offset.traps.rgb24.ref.png | Bin 794 -> 0 bytes - test/reference/dash-state.mask.argb32.ref.png | Bin 8027 -> 0 bytes - test/reference/dash-state.mask.rgb24.ref.png | Bin 8027 -> 0 bytes - test/reference/dash-zero-length.mask.argb32.ref.png | Bin 230 -> 0 bytes - test/reference/degenerate-arcs.argb32.ref.png | Bin 120 -> 0 bytes - test/reference/degenerate-arcs.mask.argb32.ref.png | Bin 120 -> 0 bytes - test/reference/degenerate-arcs.mask.rgb24.ref.png | Bin 120 -> 0 bytes - test/reference/degenerate-arcs.rgb24.ref.png | Bin 120 -> 0 bytes - test/reference/degenerate-arcs.traps.argb32.ref.png | Bin 120 -> 0 bytes - test/reference/degenerate-arcs.traps.rgb24.ref.png | Bin 120 -> 0 bytes - .../degenerate-linear-gradient.mask.argb32.ref.png | Bin 336 -> 0 bytes - .../degenerate-linear-gradient.mask.rgb24.ref.png | Bin 336 -> 0 bytes - .../degenerate-linear-gradient.traps.argb32.ref.png | Bin 336 -> 0 bytes - .../degenerate-linear-gradient.traps.rgb24.ref.png | Bin 336 -> 0 bytes - test/reference/degenerate-pen.mask.argb32.ref.png | Bin 1019 -> 0 bytes - test/reference/degenerate-pen.mask.rgb24.ref.png | Bin 1019 -> 0 bytes - .../degenerate-radial-gradient.argb32.ref.png | Bin 428 -> 0 bytes - .../degenerate-radial-gradient.mask.argb32.ref.png | Bin 428 -> 0 bytes - .../degenerate-radial-gradient.mask.rgb24.ref.png | Bin 428 -> 0 bytes - .../reference/degenerate-radial-gradient.rgb24.ref.png | Bin 428 -> 0 bytes - .../degenerate-radial-gradient.traps.argb32.ref.png | Bin 428 -> 0 bytes - .../degenerate-radial-gradient.traps.rgb24.ref.png | Bin 428 -> 0 bytes - test/reference/device-offset-fractional.argb32.ref.png | Bin 266 -> 0 bytes - .../device-offset-fractional.mask.argb32.ref.png | Bin 266 -> 0 bytes - .../device-offset-fractional.mask.rgb24.ref.png | Bin 266 -> 0 bytes - test/reference/device-offset-fractional.rgb24.ref.png | Bin 266 -> 0 bytes - .../device-offset-fractional.traps.argb32.ref.png | Bin 266 -> 0 bytes - .../device-offset-fractional.traps.rgb24.ref.png | Bin 266 -> 0 bytes - test/reference/device-offset-positive.argb32.ref.png | Bin 120 -> 0 bytes - .../device-offset-positive.mask.argb32.ref.png | Bin 120 -> 0 bytes - .../device-offset-positive.mask.rgb24.ref.png | Bin 111 -> 0 bytes - .../device-offset-positive.traps.argb32.ref.png | Bin 120 -> 0 bytes - .../device-offset-positive.traps.rgb24.ref.png | Bin 111 -> 0 bytes - test/reference/device-offset-scale.argb32.ref.png | Bin 109 -> 0 bytes - test/reference/device-offset-scale.mask.argb32.ref.png | Bin 109 -> 0 bytes - test/reference/device-offset-scale.mask.rgb24.ref.png | Bin 109 -> 0 bytes - test/reference/device-offset-scale.rgb24.ref.png | Bin 109 -> 0 bytes - .../reference/device-offset-scale.traps.argb32.ref.png | Bin 109 -> 0 bytes - test/reference/device-offset-scale.traps.rgb24.ref.png | Bin 109 -> 0 bytes - test/reference/device-offset.argb32.ref.png | Bin 118 -> 0 bytes - test/reference/device-offset.mask.argb32.ref.png | Bin 118 -> 0 bytes - test/reference/device-offset.mask.rgb24.ref.png | Bin 111 -> 0 bytes - test/reference/device-offset.traps.argb32.ref.png | Bin 118 -> 0 bytes - test/reference/device-offset.traps.rgb24.ref.png | Bin 111 -> 0 bytes - test/reference/extend-pad-border.mask.argb32.ref.png | Bin 495 -> 0 bytes - test/reference/extend-pad-border.mask.rgb24.ref.png | Bin 495 -> 0 bytes - test/reference/extend-pad-border.traps.argb32.ref.png | Bin 495 -> 0 bytes - test/reference/extend-pad-border.traps.rgb24.ref.png | Bin 495 -> 0 bytes - test/reference/extend-pad-similar.argb32.ref.png | Bin 279 -> 0 bytes - test/reference/extend-pad-similar.mask.argb32.ref.png | Bin 279 -> 0 bytes - test/reference/extend-pad-similar.mask.rgb24.ref.png | Bin 279 -> 0 bytes - test/reference/extend-pad-similar.rgb24.ref.png | Bin 279 -> 0 bytes - test/reference/extend-pad-similar.traps.argb32.ref.png | Bin 279 -> 0 bytes - test/reference/extend-pad-similar.traps.rgb24.ref.png | Bin 279 -> 0 bytes - test/reference/extend-pad.argb32.ref.png | Bin 279 -> 0 bytes - test/reference/extend-pad.mask.argb32.ref.png | Bin 279 -> 0 bytes - test/reference/extend-pad.mask.rgb24.ref.png | Bin 279 -> 0 bytes - test/reference/extend-pad.rgb24.ref.png | Bin 279 -> 0 bytes - test/reference/extend-pad.traps.argb32.ref.png | Bin 279 -> 0 bytes - test/reference/extend-pad.traps.rgb24.ref.png | Bin 279 -> 0 bytes - test/reference/extend-reflect-similar.argb32.ref.png | Bin 133406 -> 0 bytes - .../extend-reflect-similar.mask.argb32.ref.png | Bin 133406 -> 0 bytes - .../extend-reflect-similar.mask.rgb24.ref.png | Bin 133406 -> 0 bytes - test/reference/extend-reflect-similar.rgb24.ref.png | Bin 133406 -> 0 bytes - .../extend-reflect-similar.traps.argb32.ref.png | Bin 133406 -> 0 bytes - .../extend-reflect-similar.traps.rgb24.ref.png | Bin 133406 -> 0 bytes - test/reference/extend-reflect.argb32.ref.png | Bin 133406 -> 0 bytes - test/reference/extend-reflect.mask.argb32.ref.png | Bin 133406 -> 0 bytes - test/reference/extend-reflect.mask.rgb24.ref.png | Bin 133406 -> 0 bytes - test/reference/extend-reflect.rgb24.ref.png | Bin 133406 -> 0 bytes - test/reference/extend-reflect.traps.argb32.ref.png | Bin 133406 -> 0 bytes - test/reference/extend-reflect.traps.rgb24.ref.png | Bin 133406 -> 0 bytes - test/reference/extend-repeat-similar.argb32.ref.png | Bin 108603 -> 0 bytes - .../extend-repeat-similar.mask.argb32.ref.png | Bin 108603 -> 0 bytes - .../reference/extend-repeat-similar.mask.rgb24.ref.png | Bin 108603 -> 0 bytes - test/reference/extend-repeat-similar.rgb24.ref.png | Bin 108603 -> 0 bytes - .../extend-repeat-similar.traps.argb32.ref.png | Bin 108603 -> 0 bytes - .../extend-repeat-similar.traps.rgb24.ref.png | Bin 108603 -> 0 bytes - test/reference/extend-repeat.argb32.ref.png | Bin 108603 -> 0 bytes - test/reference/extend-repeat.mask.argb32.ref.png | Bin 108603 -> 0 bytes - test/reference/extend-repeat.mask.rgb24.ref.png | Bin 108603 -> 0 bytes - test/reference/extend-repeat.rgb24.ref.png | Bin 108603 -> 0 bytes - test/reference/extend-repeat.traps.argb32.ref.png | Bin 108603 -> 0 bytes - test/reference/extend-repeat.traps.rgb24.ref.png | Bin 108603 -> 0 bytes - .../extended-blend-alpha-mask.mask.argb32.ref.png | Bin 9221 -> 0 bytes - .../extended-blend-alpha-mask.mask.rgb24.ref.png | Bin 4597 -> 0 bytes - .../extended-blend-alpha-mask.traps.argb32.ref.png | Bin 9221 -> 0 bytes - .../extended-blend-alpha-mask.traps.rgb24.ref.png | Bin 4597 -> 0 bytes - .../reference/extended-blend-alpha.mask.argb32.ref.png | Bin 9406 -> 0 bytes - test/reference/extended-blend-alpha.mask.rgb24.ref.png | Bin 5740 -> 0 bytes - .../extended-blend-alpha.traps.argb32.ref.png | Bin 9406 -> 0 bytes - .../reference/extended-blend-alpha.traps.rgb24.ref.png | Bin 5740 -> 0 bytes - test/reference/extended-blend-mask.mask.argb32.ref.png | Bin 3971 -> 0 bytes - test/reference/extended-blend-mask.mask.rgb24.ref.png | Bin 3643 -> 0 bytes - .../reference/extended-blend-mask.traps.argb32.ref.png | Bin 3971 -> 0 bytes - test/reference/extended-blend-mask.traps.rgb24.ref.png | Bin 3643 -> 0 bytes - .../extended-blend-solid-alpha.mask.argb32.ref.png | Bin 9406 -> 0 bytes - .../extended-blend-solid-alpha.mask.rgb24.ref.png | Bin 5740 -> 0 bytes - .../extended-blend-solid-alpha.traps.argb32.ref.png | Bin 9406 -> 0 bytes - .../extended-blend-solid-alpha.traps.rgb24.ref.png | Bin 5740 -> 0 bytes - .../reference/extended-blend-solid.mask.argb32.ref.png | Bin 4063 -> 0 bytes - test/reference/extended-blend-solid.mask.rgb24.ref.png | Bin 3775 -> 0 bytes - .../extended-blend-solid.traps.argb32.ref.png | Bin 4063 -> 0 bytes - .../reference/extended-blend-solid.traps.rgb24.ref.png | Bin 3775 -> 0 bytes - test/reference/extended-blend.mask.argb32.ref.png | Bin 4063 -> 0 bytes - test/reference/extended-blend.mask.rgb24.ref.png | Bin 3775 -> 0 bytes - test/reference/extended-blend.traps.argb32.ref.png | Bin 4063 -> 0 bytes - test/reference/extended-blend.traps.rgb24.ref.png | Bin 3775 -> 0 bytes - test/reference/fill-alpha-pattern.mask.argb32.ref.png | Bin 3381 -> 0 bytes - test/reference/fill-alpha-pattern.mask.rgb24.ref.png | Bin 3381 -> 0 bytes - test/reference/fill-alpha.mask.argb32.ref.png | Bin 2736 -> 0 bytes - test/reference/fill-alpha.mask.rgb24.ref.png | Bin 2736 -> 0 bytes - .../fill-and-stroke-alpha-add.mask.argb32.ref.png | Bin 556 -> 0 bytes - .../fill-and-stroke-alpha-add.mask.rgb24.ref.png | Bin 556 -> 0 bytes - .../fill-and-stroke-alpha.mask.argb32.ref.png | Bin 508 -> 0 bytes - .../reference/fill-and-stroke-alpha.mask.rgb24.ref.png | Bin 508 -> 0 bytes - test/reference/fill-and-stroke.mask.argb32.ref.png | Bin 312 -> 0 bytes - test/reference/fill-and-stroke.mask.rgb24.ref.png | Bin 283 -> 0 bytes - .../fill-degenerate-sort-order.mask.argb32.ref.png | Bin 2400 -> 0 bytes - .../fill-degenerate-sort-order.mask.rgb24.ref.png | Bin 2049 -> 0 bytes - test/reference/fill-disjoint.argb32.ref.png | Bin 1098 -> 0 bytes - test/reference/fill-disjoint.mask.argb32.ref.png | Bin 1098 -> 0 bytes - test/reference/fill-disjoint.mask.rgb24.ref.png | Bin 1098 -> 0 bytes - test/reference/fill-disjoint.rgb24.ref.png | Bin 1098 -> 0 bytes - test/reference/fill-disjoint.traps.argb32.ref.png | Bin 1098 -> 0 bytes - test/reference/fill-disjoint.traps.rgb24.ref.png | Bin 1098 -> 0 bytes - test/reference/fill-empty.mask.argb32.ref.png | Bin 99 -> 0 bytes - test/reference/fill-empty.mask.rgb24.ref.png | Bin 97 -> 0 bytes - test/reference/fill-empty.traps.argb32.ref.png | Bin 99 -> 0 bytes - test/reference/fill-empty.traps.rgb24.ref.png | Bin 97 -> 0 bytes - test/reference/fill-image.mask.argb32.ref.png | Bin 1315 -> 0 bytes - test/reference/fill-image.mask.rgb24.ref.png | Bin 1315 -> 0 bytes - test/reference/fill-missed-stop.mask.argb32.ref.png | Bin 455 -> 0 bytes - test/reference/fill-missed-stop.mask.rgb24.ref.png | Bin 382 -> 0 bytes - test/reference/fill-rule.mask.argb32.ref.png | Bin 2065 -> 0 bytes - test/reference/fill-rule.mask.rgb24.ref.png | Bin 1803 -> 0 bytes - .../filter-bilinear-extents.mask.argb32.ref.png | Bin 1210 -> 0 bytes - .../filter-bilinear-extents.mask.rgb24.ref.png | Bin 1210 -> 0 bytes - .../filter-bilinear-extents.traps.argb32.ref.png | Bin 1210 -> 0 bytes - .../filter-bilinear-extents.traps.rgb24.ref.png | Bin 1210 -> 0 bytes - test/reference/filter-nearest-offset.argb32.ref.png | Bin 201 -> 0 bytes - .../filter-nearest-offset.mask.argb32.ref.png | Bin 201 -> 0 bytes - .../reference/filter-nearest-offset.mask.rgb24.ref.png | Bin 201 -> 0 bytes - test/reference/filter-nearest-offset.rgb24.ref.png | Bin 201 -> 0 bytes - .../filter-nearest-offset.traps.argb32.ref.png | Bin 201 -> 0 bytes - .../filter-nearest-offset.traps.rgb24.ref.png | Bin 201 -> 0 bytes - .../filter-nearest-transformed.argb32.ref.png | Bin 514 -> 0 bytes - .../filter-nearest-transformed.mask.argb32.ref.png | Bin 514 -> 0 bytes - .../filter-nearest-transformed.mask.rgb24.ref.png | Bin 514 -> 0 bytes - .../reference/filter-nearest-transformed.rgb24.ref.png | Bin 514 -> 0 bytes - .../filter-nearest-transformed.traps.argb32.ref.png | Bin 514 -> 0 bytes - .../filter-nearest-transformed.traps.rgb24.ref.png | Bin 514 -> 0 bytes - .../font-matrix-translation.mask.argb32.ref.png | Bin 865 -> 0 bytes - .../font-matrix-translation.mask.rgb24.ref.png | Bin 865 -> 0 bytes - .../font-matrix-translation.traps.argb32.ref.png | Bin 865 -> 0 bytes - .../font-matrix-translation.traps.rgb24.ref.png | Bin 865 -> 0 bytes - .../ft-show-glyphs-positioning.mask.argb32.ref.png | Bin 3243 -> 0 bytes - .../ft-show-glyphs-positioning.mask.rgb24.ref.png | Bin 3243 -> 0 bytes - .../ft-show-glyphs-positioning.traps.argb32.ref.png | Bin 3243 -> 0 bytes - .../ft-show-glyphs-positioning.traps.rgb24.ref.png | Bin 3243 -> 0 bytes - .../reference/ft-show-glyphs-table.mask.argb32.ref.png | Bin 9975 -> 0 bytes - test/reference/ft-show-glyphs-table.mask.rgb24.ref.png | Bin 9975 -> 0 bytes - .../ft-show-glyphs-table.traps.argb32.ref.png | Bin 9975 -> 0 bytes - .../reference/ft-show-glyphs-table.traps.rgb24.ref.png | Bin 9975 -> 0 bytes - test/reference/ft-text-antialias-none.argb32.ref.png | Bin 295 -> 0 bytes - .../ft-text-antialias-none.mask.argb32.ref.png | Bin 295 -> 0 bytes - .../ft-text-antialias-none.mask.rgb24.ref.png | Bin 295 -> 0 bytes - test/reference/ft-text-antialias-none.rgb24.ref.png | Bin 295 -> 0 bytes - .../ft-text-antialias-none.traps.argb32.ref.png | Bin 295 -> 0 bytes - .../ft-text-antialias-none.traps.rgb24.ref.png | Bin 295 -> 0 bytes - .../ft-text-vertical-layout-type1.mask.argb32.ref.png | Bin 3062 -> 0 bytes - .../ft-text-vertical-layout-type1.mask.rgb24.ref.png | Bin 3062 -> 0 bytes - test/reference/get-group-target.argb32.ref.png | Bin 113 -> 0 bytes - test/reference/get-group-target.mask.argb32.ref.png | Bin 113 -> 0 bytes - test/reference/get-group-target.mask.rgb24.ref.png | Bin 113 -> 0 bytes - test/reference/get-group-target.rgb24.ref.png | Bin 113 -> 0 bytes - test/reference/get-group-target.traps.argb32.ref.png | Bin 113 -> 0 bytes - test/reference/get-group-target.traps.rgb24.ref.png | Bin 113 -> 0 bytes - test/reference/gl-surface-source.mask.argb32.ref.png | Bin 377 -> 0 bytes - test/reference/gl-surface-source.mask.rgb24.ref.png | Bin 301 -> 0 bytes - test/reference/gl-surface-source.traps.argb32.ref.png | Bin 377 -> 0 bytes - test/reference/gl-surface-source.traps.rgb24.ref.png | Bin 301 -> 0 bytes - .../reference/glyph-cache-pressure.mask.argb32.ref.png | Bin 2858 -> 0 bytes - test/reference/glyph-cache-pressure.mask.rgb24.ref.png | Bin 2858 -> 0 bytes - .../glyph-cache-pressure.traps.argb32.ref.png | Bin 2858 -> 0 bytes - .../reference/glyph-cache-pressure.traps.rgb24.ref.png | Bin 2858 -> 0 bytes - test/reference/gradient-alpha.mask.argb32.ref.png | Bin 125 -> 0 bytes - test/reference/gradient-alpha.mask.rgb24.ref.png | Bin 119 -> 0 bytes - test/reference/gradient-alpha.traps.argb32.ref.png | Bin 125 -> 0 bytes - test/reference/gradient-alpha.traps.rgb24.ref.png | Bin 119 -> 0 bytes - .../gradient-constant-alpha.mask.argb32.ref.png | Bin 111 -> 0 bytes - .../gradient-constant-alpha.mask.rgb24.ref.png | Bin 106 -> 0 bytes - .../gradient-constant-alpha.traps.argb32.ref.png | Bin 111 -> 0 bytes - .../gradient-constant-alpha.traps.rgb24.ref.png | Bin 106 -> 0 bytes - .../gradient-zero-stops-mask.mask.argb32.ref.png | Bin 86 -> 0 bytes - .../gradient-zero-stops-mask.mask.rgb24.ref.png | Bin 86 -> 0 bytes - .../gradient-zero-stops-mask.traps.argb32.ref.png | Bin 86 -> 0 bytes - .../gradient-zero-stops-mask.traps.rgb24.ref.png | Bin 86 -> 0 bytes - test/reference/gradient-zero-stops.argb32.ref.png | Bin 86 -> 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 - .../reference/gradient-zero-stops.traps.argb32.ref.png | Bin 86 -> 0 bytes - test/reference/gradient-zero-stops.traps.rgb24.ref.png | Bin 86 -> 0 bytes - test/reference/group-clip.argb32.ref.png | Bin 191 -> 0 bytes - test/reference/group-clip.mask.argb32.ref.png | Bin 191 -> 0 bytes - test/reference/group-clip.mask.rgb24.ref.png | Bin 191 -> 0 bytes - test/reference/group-clip.rgb24.ref.png | Bin 191 -> 0 bytes - test/reference/group-clip.traps.argb32.ref.png | Bin 191 -> 0 bytes - test/reference/group-clip.traps.rgb24.ref.png | Bin 191 -> 0 bytes - test/reference/group-paint.argb32.ref.png | Bin 95 -> 0 bytes - test/reference/group-paint.mask.argb32.ref.png | Bin 95 -> 0 bytes - test/reference/group-paint.mask.rgb24.ref.png | Bin 95 -> 0 bytes - test/reference/group-paint.rgb24.ref.png | Bin 95 -> 0 bytes - test/reference/group-paint.traps.argb32.ref.png | Bin 95 -> 0 bytes - test/reference/group-paint.traps.rgb24.ref.png | Bin 95 -> 0 bytes - test/reference/group-unaligned.mask.argb32.ref.png | Bin 427 -> 0 bytes - test/reference/group-unaligned.mask.rgb24.ref.png | Bin 427 -> 0 bytes - test/reference/halo-transform.mask.argb32.ref.png | Bin 15063 -> 0 bytes - test/reference/halo-transform.mask.rgb24.ref.png | Bin 15063 -> 0 bytes - test/reference/halo-transform.traps.argb32.ref.png | Bin 15122 -> 0 bytes - test/reference/halo-transform.traps.rgb24.ref.png | Bin 15122 -> 0 bytes - test/reference/horizontal-clip.mask.argb32.ref.png | Bin 113 -> 0 bytes - test/reference/horizontal-clip.mask.rgb24.ref.png | Bin 113 -> 0 bytes - test/reference/horizontal-clip.traps.argb32.ref.png | Bin 113 -> 0 bytes - test/reference/horizontal-clip.traps.rgb24.ref.png | Bin 113 -> 0 bytes - test/reference/huge-linear.mask.argb32.ref.png | Bin 1600 -> 0 bytes - test/reference/huge-linear.mask.rgb24.ref.png | Bin 1600 -> 0 bytes - test/reference/huge-linear.traps.argb32.ref.png | Bin 1600 -> 0 bytes - test/reference/huge-linear.traps.rgb24.ref.png | Bin 1600 -> 0 bytes - test/reference/huge-radial.argb32.ref.png | Bin 41702 -> 0 bytes - test/reference/huge-radial.mask.argb32.ref.png | Bin 41702 -> 0 bytes - test/reference/huge-radial.mask.rgb24.ref.png | Bin 41702 -> 0 bytes - test/reference/huge-radial.rgb24.ref.png | Bin 41702 -> 0 bytes - test/reference/huge-radial.traps.argb32.ref.png | Bin 41702 -> 0 bytes - test/reference/huge-radial.traps.rgb24.ref.png | Bin 41702 -> 0 bytes - test/reference/image-bug-710072-aligned.argb32.ref.png | Bin 151 -> 0 bytes - .../image-bug-710072-aligned.mask.argb32.ref.png | Bin 151 -> 0 bytes - .../image-bug-710072-aligned.mask.rgb24.ref.png | Bin 151 -> 0 bytes - test/reference/image-bug-710072-aligned.rgb24.ref.png | Bin 151 -> 0 bytes - .../image-bug-710072-aligned.traps.argb32.ref.png | Bin 151 -> 0 bytes - .../image-bug-710072-aligned.traps.rgb24.ref.png | Bin 151 -> 0 bytes - ...mage-bug-710072-aligned.xlib-fallback.rgb24.ref.png | Bin 151 -> 0 bytes - .../image-bug-710072-aligned.xlib-window.rgb24.ref.png | Bin 151 -> 0 bytes - .../image-bug-710072-unaligned.argb32.ref.png | Bin 212 -> 0 bytes - .../image-bug-710072-unaligned.mask.argb32.ref.png | Bin 212 -> 0 bytes - .../image-bug-710072-unaligned.mask.rgb24.ref.png | Bin 212 -> 0 bytes - .../reference/image-bug-710072-unaligned.rgb24.ref.png | Bin 212 -> 0 bytes - .../reference/image-surface-source.mask.argb32.ref.png | Bin 377 -> 0 bytes - test/reference/image-surface-source.mask.rgb24.ref.png | Bin 301 -> 0 bytes - .../image-surface-source.traps.argb32.ref.png | Bin 377 -> 0 bytes - .../reference/image-surface-source.traps.rgb24.ref.png | Bin 301 -> 0 bytes - .../image-surface-source.xlib-fallback.rgb24.ref.png | Bin 301 -> 0 bytes - .../image-surface-source.xlib-window.rgb24.ref.png | Bin 301 -> 0 bytes - test/reference/implicit-close.argb32.ref.png | Bin 251 -> 0 bytes - test/reference/implicit-close.mask.argb32.ref.png | Bin 251 -> 0 bytes - test/reference/implicit-close.mask.rgb24.ref.png | Bin 251 -> 0 bytes - test/reference/implicit-close.rgb24.ref.png | Bin 251 -> 0 bytes - test/reference/infinite-join.mask.argb32.ref.png | Bin 164 -> 0 bytes - test/reference/infinite-join.mask.rgb24.ref.png | Bin 164 -> 0 bytes - test/reference/inverse-text.traps.argb32.ref.png | Bin 2162 -> 0 bytes - test/reference/inverse-text.traps.rgb24.ref.png | Bin 2162 -> 0 bytes - test/reference/joins-loop.mask.argb32.ref.png | Bin 4492 -> 0 bytes - test/reference/joins-loop.mask.rgb24.ref.png | Bin 4492 -> 0 bytes - test/reference/joins-star.mask.argb32.ref.png | Bin 4914 -> 0 bytes - test/reference/joins-star.mask.rgb24.ref.png | Bin 4914 -> 0 bytes - test/reference/large-clip.argb32.ref.png | Bin 305 -> 0 bytes - test/reference/large-clip.mask.argb32.ref.png | Bin 305 -> 0 bytes - test/reference/large-clip.mask.rgb24.ref.png | Bin 305 -> 0 bytes - test/reference/large-clip.rgb24.ref.png | Bin 305 -> 0 bytes - test/reference/large-clip.traps.argb32.ref.png | Bin 305 -> 0 bytes - test/reference/large-clip.traps.rgb24.ref.png | Bin 305 -> 0 bytes - test/reference/large-font.argb32.ref.png | Bin 6117 -> 0 bytes - test/reference/large-font.mask.argb32.ref.png | Bin 6117 -> 0 bytes - test/reference/large-font.mask.rgb24.ref.png | Bin 6117 -> 0 bytes - test/reference/large-font.rgb24.ref.png | Bin 6117 -> 0 bytes - test/reference/large-font.traps.argb32.ref.png | Bin 6117 -> 0 bytes - test/reference/large-font.traps.rgb24.ref.png | Bin 6117 -> 0 bytes - test/reference/large-source-roi.argb32.ref.png | Bin 93 -> 0 bytes - test/reference/large-source-roi.mask.argb32.ref.png | Bin 93 -> 0 bytes - test/reference/large-source-roi.mask.rgb24.ref.png | Bin 93 -> 0 bytes - test/reference/large-source-roi.rgb24.ref.png | Bin 93 -> 0 bytes - test/reference/large-source-roi.traps.argb32.ref.png | Bin 93 -> 0 bytes - test/reference/large-source-roi.traps.rgb24.ref.png | Bin 93 -> 0 bytes - test/reference/large-source.argb32.ref.png | Bin 112 -> 0 bytes - test/reference/large-source.mask.argb32.ref.png | Bin 112 -> 0 bytes - test/reference/large-source.mask.rgb24.ref.png | Bin 112 -> 0 bytes - test/reference/large-source.rgb24.ref.png | Bin 112 -> 0 bytes - test/reference/large-source.traps.argb32.ref.png | Bin 112 -> 0 bytes - test/reference/large-source.traps.rgb24.ref.png | Bin 112 -> 0 bytes - .../large-twin-antialias-mixed.mask.argb32.ref.png | Bin 16660 -> 0 bytes - .../large-twin-antialias-mixed.mask.rgb24.ref.png | Bin 16660 -> 0 bytes - test/reference/leaky-dash.argb32.ref.png | Bin 197 -> 0 bytes - test/reference/leaky-dash.mask.argb32.ref.png | Bin 197 -> 0 bytes - test/reference/leaky-dash.mask.rgb24.ref.png | Bin 197 -> 0 bytes - test/reference/leaky-dash.rgb24.ref.png | Bin 197 -> 0 bytes - test/reference/leaky-dash.traps.argb32.ref.png | Bin 197 -> 0 bytes - test/reference/leaky-dash.traps.rgb24.ref.png | Bin 197 -> 0 bytes - test/reference/leaky-dashed-rectangle.argb32.ref.png | Bin 357 -> 0 bytes - .../leaky-dashed-rectangle.mask.argb32.ref.png | Bin 357 -> 0 bytes - .../leaky-dashed-rectangle.mask.rgb24.ref.png | Bin 357 -> 0 bytes - test/reference/leaky-dashed-rectangle.rgb24.ref.png | Bin 357 -> 0 bytes - test/reference/leaky-dashed-stroke.mask.argb32.ref.png | Bin 9387 -> 0 bytes - test/reference/leaky-dashed-stroke.mask.rgb24.ref.png | Bin 9387 -> 0 bytes - test/reference/leaky-polygon.mask.argb32.ref.png | Bin 337 -> 0 bytes - test/reference/leaky-polygon.mask.rgb24.ref.png | Bin 337 -> 0 bytes - .../line-width-large-overlap-flipped.argb32.ref.png | Bin 305 -> 0 bytes - ...ine-width-large-overlap-flipped.mask.argb32.ref.png | Bin 305 -> 0 bytes - ...line-width-large-overlap-flipped.mask.rgb24.ref.png | Bin 305 -> 0 bytes - .../line-width-large-overlap-flipped.rgb24.ref.png | Bin 305 -> 0 bytes - ...ne-width-large-overlap-flipped.traps.argb32.ref.png | Bin 305 -> 0 bytes - ...ine-width-large-overlap-flipped.traps.rgb24.ref.png | Bin 305 -> 0 bytes - .../line-width-large-overlap-flopped.argb32.ref.png | Bin 305 -> 0 bytes - ...ine-width-large-overlap-flopped.mask.argb32.ref.png | Bin 305 -> 0 bytes - ...line-width-large-overlap-flopped.mask.rgb24.ref.png | Bin 305 -> 0 bytes - .../line-width-large-overlap-flopped.rgb24.ref.png | Bin 305 -> 0 bytes - ...ne-width-large-overlap-flopped.traps.argb32.ref.png | Bin 305 -> 0 bytes - ...ine-width-large-overlap-flopped.traps.rgb24.ref.png | Bin 305 -> 0 bytes - .../line-width-large-overlap-offset.argb32.ref.png | Bin 305 -> 0 bytes - ...line-width-large-overlap-offset.mask.argb32.ref.png | Bin 305 -> 0 bytes - .../line-width-large-overlap-offset.mask.rgb24.ref.png | Bin 305 -> 0 bytes - .../line-width-large-overlap-offset.rgb24.ref.png | Bin 305 -> 0 bytes - ...ine-width-large-overlap-offset.traps.argb32.ref.png | Bin 305 -> 0 bytes - ...line-width-large-overlap-offset.traps.rgb24.ref.png | Bin 305 -> 0 bytes - ...ine-width-large-overlap-rotated.mask.argb32.ref.png | Bin 427 -> 0 bytes - ...line-width-large-overlap-rotated.mask.rgb24.ref.png | Bin 427 -> 0 bytes - ...ne-width-large-overlap-rotated.traps.argb32.ref.png | Bin 404 -> 0 bytes - ...ine-width-large-overlap-rotated.traps.rgb24.ref.png | Bin 404 -> 0 bytes - test/reference/line-width-large-overlap.argb32.ref.png | Bin 305 -> 0 bytes - .../line-width-large-overlap.mask.argb32.ref.png | Bin 305 -> 0 bytes - .../line-width-large-overlap.mask.rgb24.ref.png | Bin 305 -> 0 bytes - test/reference/line-width-large-overlap.rgb24.ref.png | Bin 305 -> 0 bytes - .../line-width-large-overlap.traps.argb32.ref.png | Bin 305 -> 0 bytes - .../line-width-large-overlap.traps.rgb24.ref.png | Bin 305 -> 0 bytes - .../line-width-overlap-flipped.argb32.ref.png | Bin 324 -> 0 bytes - .../line-width-overlap-flipped.mask.argb32.ref.png | Bin 324 -> 0 bytes - .../line-width-overlap-flipped.mask.rgb24.ref.png | Bin 324 -> 0 bytes - .../reference/line-width-overlap-flipped.rgb24.ref.png | Bin 324 -> 0 bytes - .../line-width-overlap-flipped.traps.argb32.ref.png | Bin 324 -> 0 bytes - .../line-width-overlap-flipped.traps.rgb24.ref.png | Bin 324 -> 0 bytes - .../line-width-overlap-flopped.argb32.ref.png | Bin 324 -> 0 bytes - .../line-width-overlap-flopped.mask.argb32.ref.png | Bin 324 -> 0 bytes - .../line-width-overlap-flopped.mask.rgb24.ref.png | Bin 324 -> 0 bytes - .../reference/line-width-overlap-flopped.rgb24.ref.png | Bin 324 -> 0 bytes - .../line-width-overlap-flopped.traps.argb32.ref.png | Bin 324 -> 0 bytes - .../line-width-overlap-flopped.traps.rgb24.ref.png | Bin 324 -> 0 bytes - .../reference/line-width-overlap-offset.argb32.ref.png | Bin 348 -> 0 bytes - .../line-width-overlap-offset.mask.argb32.ref.png | Bin 348 -> 0 bytes - .../line-width-overlap-offset.mask.rgb24.ref.png | Bin 348 -> 0 bytes - test/reference/line-width-overlap-offset.rgb24.ref.png | Bin 348 -> 0 bytes - .../line-width-overlap-offset.traps.argb32.ref.png | Bin 365 -> 0 bytes - .../line-width-overlap-offset.traps.rgb24.ref.png | Bin 365 -> 0 bytes - .../line-width-overlap-rotated.mask.argb32.ref.png | Bin 828 -> 0 bytes - .../line-width-overlap-rotated.mask.rgb24.ref.png | Bin 828 -> 0 bytes - test/reference/line-width-overlap.argb32.ref.png | Bin 324 -> 0 bytes - test/reference/line-width-overlap.mask.argb32.ref.png | Bin 324 -> 0 bytes - test/reference/line-width-overlap.mask.rgb24.ref.png | Bin 324 -> 0 bytes - test/reference/line-width-overlap.rgb24.ref.png | Bin 324 -> 0 bytes - test/reference/line-width-overlap.traps.argb32.ref.png | Bin 324 -> 0 bytes - test/reference/line-width-overlap.traps.rgb24.ref.png | Bin 324 -> 0 bytes - test/reference/line-width-scale.mask.argb32.ref.png | Bin 5721 -> 0 bytes - test/reference/line-width-scale.mask.rgb24.ref.png | Bin 5721 -> 0 bytes - .../reference/line-width-tolerance.mask.argb32.ref.png | Bin 168 -> 0 bytes - test/reference/line-width-tolerance.mask.rgb24.ref.png | Bin 168 -> 0 bytes - test/reference/line-width.mask.argb32.ref.png | Bin 178 -> 0 bytes - test/reference/line-width.mask.rgb24.ref.png | Bin 178 -> 0 bytes - test/reference/linear-gradient-extend.argb32.ref.png | Bin 371 -> 0 bytes - .../linear-gradient-extend.mask.argb32.ref.png | Bin 371 -> 0 bytes - .../linear-gradient-extend.mask.rgb24.ref.png | Bin 371 -> 0 bytes - test/reference/linear-gradient-extend.rgb24.ref.png | Bin 371 -> 0 bytes - .../linear-gradient-extend.traps.argb32.ref.png | Bin 371 -> 0 bytes - .../linear-gradient-extend.traps.rgb24.ref.png | Bin 371 -> 0 bytes - test/reference/linear-gradient-large.argb32.ref.png | Bin 4076 -> 0 bytes - .../linear-gradient-large.mask.argb32.ref.png | Bin 4076 -> 0 bytes - .../reference/linear-gradient-large.mask.rgb24.ref.png | Bin 4076 -> 0 bytes - test/reference/linear-gradient-large.rgb24.ref.png | Bin 4076 -> 0 bytes - .../linear-gradient-large.traps.argb32.ref.png | Bin 4076 -> 0 bytes - .../linear-gradient-large.traps.rgb24.ref.png | Bin 4076 -> 0 bytes - .../linear-gradient-one-stop.mask.argb32.ref.png | Bin 225 -> 0 bytes - .../linear-gradient-one-stop.mask.rgb24.ref.png | Bin 174 -> 0 bytes - .../linear-gradient-one-stop.traps.argb32.ref.png | Bin 225 -> 0 bytes - .../linear-gradient-one-stop.traps.rgb24.ref.png | Bin 174 -> 0 bytes - .../linear-gradient-reflect.mask.argb32.ref.png | Bin 185 -> 0 bytes - .../linear-gradient-reflect.mask.rgb24.ref.png | Bin 185 -> 0 bytes - .../linear-gradient-reflect.traps.argb32.ref.png | Bin 185 -> 0 bytes - .../linear-gradient-reflect.traps.rgb24.ref.png | Bin 185 -> 0 bytes - .../linear-gradient-subset.mask.argb32.ref.png | Bin 820 -> 0 bytes - .../linear-gradient-subset.mask.rgb24.ref.png | Bin 820 -> 0 bytes - test/reference/linear-gradient.mask.argb32.ref.png | Bin 974 -> 0 bytes - test/reference/linear-gradient.mask.rgb24.ref.png | Bin 974 -> 0 bytes - test/reference/linear-uniform.argb32.ref.png | Bin 128 -> 0 bytes - test/reference/linear-uniform.mask.argb32.ref.png | Bin 128 -> 0 bytes - test/reference/linear-uniform.mask.rgb24.ref.png | Bin 128 -> 0 bytes - test/reference/linear-uniform.rgb24.ref.png | Bin 128 -> 0 bytes - test/reference/linear-uniform.traps.argb32.ref.png | Bin 128 -> 0 bytes - test/reference/linear-uniform.traps.rgb24.ref.png | Bin 128 -> 0 bytes - test/reference/long-dashed-lines.mask.argb32.ref.png | Bin 2548 -> 0 bytes - test/reference/long-dashed-lines.mask.rgb24.ref.png | Bin 2548 -> 0 bytes - test/reference/map-all-to-image.argb32.ref.png | Bin 86 -> 0 bytes - test/reference/map-all-to-image.mask.argb32.ref.png | Bin 86 -> 0 bytes - test/reference/map-all-to-image.mask.rgb24.ref.png | Bin 86 -> 0 bytes - test/reference/map-all-to-image.rgb24.ref.png | Bin 86 -> 0 bytes - test/reference/map-all-to-image.traps.argb32.ref.png | Bin 86 -> 0 bytes - test/reference/map-all-to-image.traps.rgb24.ref.png | Bin 86 -> 0 bytes - test/reference/map-bit-to-image.argb32.ref.png | Bin 103 -> 0 bytes - test/reference/map-bit-to-image.mask.argb32.ref.png | Bin 103 -> 0 bytes - test/reference/map-bit-to-image.mask.rgb24.ref.png | Bin 103 -> 0 bytes - test/reference/map-bit-to-image.rgb24.ref.png | Bin 103 -> 0 bytes - test/reference/map-bit-to-image.traps.argb32.ref.png | Bin 103 -> 0 bytes - test/reference/map-bit-to-image.traps.rgb24.ref.png | Bin 103 -> 0 bytes - test/reference/map-to-image-fill.argb32.ref.png | Bin 103 -> 0 bytes - test/reference/map-to-image-fill.mask.argb32.ref.png | Bin 103 -> 0 bytes - test/reference/map-to-image-fill.mask.rgb24.ref.png | Bin 103 -> 0 bytes - test/reference/map-to-image-fill.rgb24.ref.png | Bin 103 -> 0 bytes - test/reference/map-to-image-fill.traps.argb32.ref.png | Bin 103 -> 0 bytes - test/reference/map-to-image-fill.traps.rgb24.ref.png | Bin 103 -> 0 bytes - .../map-to-image-fill.xlib-fallback.rgb24.ref.png | Bin 103 -> 0 bytes - .../map-to-image-fill.xlib-window.rgb24.ref.png | Bin 103 -> 0 bytes - test/reference/mask-alpha.mask.argb32.ref.png | Bin 632 -> 0 bytes - test/reference/mask-alpha.mask.rgb24.ref.png | Bin 589 -> 0 bytes - test/reference/mask-ctm.argb32.ref.png | Bin 110 -> 0 bytes - test/reference/mask-ctm.mask.argb32.ref.png | Bin 110 -> 0 bytes - test/reference/mask-ctm.mask.rgb24.ref.png | Bin 105 -> 0 bytes - test/reference/mask-ctm.traps.argb32.ref.png | Bin 110 -> 0 bytes - test/reference/mask-ctm.traps.rgb24.ref.png | Bin 105 -> 0 bytes - test/reference/mask-surface-ctm.argb32.ref.png | Bin 110 -> 0 bytes - test/reference/mask-surface-ctm.mask.argb32.ref.png | Bin 110 -> 0 bytes - test/reference/mask-surface-ctm.mask.rgb24.ref.png | Bin 105 -> 0 bytes - test/reference/mask-surface-ctm.traps.argb32.ref.png | Bin 110 -> 0 bytes - test/reference/mask-surface-ctm.traps.rgb24.ref.png | Bin 105 -> 0 bytes - .../mask-transformed-image.mask.argb32.ref.png | Bin 3812 -> 0 bytes - .../mask-transformed-image.mask.rgb24.ref.png | Bin 3812 -> 0 bytes - .../mask-transformed-image.traps.argb32.ref.png | Bin 3812 -> 0 bytes - .../mask-transformed-image.traps.rgb24.ref.png | Bin 3812 -> 0 bytes - .../mask-transformed-similar.mask.argb32.ref.png | Bin 3812 -> 0 bytes - .../mask-transformed-similar.mask.rgb24.ref.png | Bin 3812 -> 0 bytes - .../mask-transformed-similar.traps.argb32.ref.png | Bin 3812 -> 0 bytes - .../mask-transformed-similar.traps.rgb24.ref.png | Bin 3812 -> 0 bytes - test/reference/mask.mask.argb32.ref.png | Bin 8565 -> 0 bytes - test/reference/mask.mask.rgb24.ref.png | Bin 7135 -> 0 bytes - test/reference/mesh-pattern-accuracy.argb32.ref.png | Bin 8086 -> 0 bytes - .../mesh-pattern-accuracy.mask.argb32.ref.png | Bin 8086 -> 0 bytes - .../reference/mesh-pattern-accuracy.mask.rgb24.ref.png | Bin 8086 -> 0 bytes - test/reference/mesh-pattern-accuracy.rgb24.ref.png | Bin 8086 -> 0 bytes - .../mesh-pattern-accuracy.traps.argb32.ref.png | Bin 8086 -> 0 bytes - .../mesh-pattern-accuracy.traps.rgb24.ref.png | Bin 8086 -> 0 bytes - test/reference/mesh-pattern-conical.argb32.ref.png | Bin 8655 -> 0 bytes - .../reference/mesh-pattern-conical.mask.argb32.ref.png | Bin 8655 -> 0 bytes - test/reference/mesh-pattern-conical.mask.rgb24.ref.png | Bin 8655 -> 0 bytes - test/reference/mesh-pattern-conical.rgb24.ref.png | Bin 8655 -> 0 bytes - .../mesh-pattern-conical.traps.argb32.ref.png | Bin 8655 -> 0 bytes - .../reference/mesh-pattern-conical.traps.rgb24.ref.png | Bin 8655 -> 0 bytes - .../mesh-pattern-control-points.argb32.ref.png | Bin 10665 -> 0 bytes - .../mesh-pattern-control-points.mask.argb32.ref.png | Bin 10665 -> 0 bytes - .../mesh-pattern-control-points.mask.rgb24.ref.png | Bin 10665 -> 0 bytes - .../mesh-pattern-control-points.rgb24.ref.png | Bin 10665 -> 0 bytes - .../mesh-pattern-control-points.traps.argb32.ref.png | Bin 10665 -> 0 bytes - .../mesh-pattern-control-points.traps.rgb24.ref.png | Bin 10665 -> 0 bytes - test/reference/mesh-pattern-fold.argb32.ref.png | Bin 52980 -> 0 bytes - test/reference/mesh-pattern-fold.mask.argb32.ref.png | Bin 52980 -> 0 bytes - test/reference/mesh-pattern-fold.mask.rgb24.ref.png | Bin 52980 -> 0 bytes - test/reference/mesh-pattern-fold.rgb24.ref.png | Bin 52980 -> 0 bytes - test/reference/mesh-pattern-fold.traps.argb32.ref.png | Bin 52980 -> 0 bytes - test/reference/mesh-pattern-fold.traps.rgb24.ref.png | Bin 52980 -> 0 bytes - test/reference/mesh-pattern-overlap.argb32.ref.png | Bin 9129 -> 0 bytes - .../reference/mesh-pattern-overlap.mask.argb32.ref.png | Bin 9129 -> 0 bytes - test/reference/mesh-pattern-overlap.mask.rgb24.ref.png | Bin 9129 -> 0 bytes - test/reference/mesh-pattern-overlap.rgb24.ref.png | Bin 9129 -> 0 bytes - .../mesh-pattern-overlap.traps.argb32.ref.png | Bin 9129 -> 0 bytes - .../reference/mesh-pattern-overlap.traps.rgb24.ref.png | Bin 9129 -> 0 bytes - test/reference/mesh-pattern-transformed.argb32.ref.png | Bin 14463 -> 0 bytes - .../mesh-pattern-transformed.mask.argb32.ref.png | Bin 14463 -> 0 bytes - .../mesh-pattern-transformed.mask.rgb24.ref.png | Bin 14463 -> 0 bytes - test/reference/mesh-pattern-transformed.rgb24.ref.png | Bin 14463 -> 0 bytes - .../mesh-pattern-transformed.traps.argb32.ref.png | Bin 14463 -> 0 bytes - .../mesh-pattern-transformed.traps.rgb24.ref.png | Bin 14463 -> 0 bytes - test/reference/mesh-pattern.argb32.ref.png | Bin 19566 -> 0 bytes - test/reference/mesh-pattern.mask.argb32.ref.png | Bin 19566 -> 0 bytes - test/reference/mesh-pattern.mask.rgb24.ref.png | Bin 19566 -> 0 bytes - test/reference/mesh-pattern.rgb24.ref.png | Bin 19566 -> 0 bytes - test/reference/mesh-pattern.traps.argb32.ref.png | Bin 19566 -> 0 bytes - test/reference/mesh-pattern.traps.rgb24.ref.png | Bin 19566 -> 0 bytes - test/reference/mime-data.argb32.ref.png | Bin 185 -> 0 bytes - test/reference/mime-data.mask.argb32.ref.png | Bin 185 -> 0 bytes - test/reference/mime-data.mask.rgb24.ref.png | Bin 185 -> 0 bytes - test/reference/mime-data.rgb24.ref.png | Bin 185 -> 0 bytes - test/reference/mime-data.traps.argb32.ref.png | Bin 185 -> 0 bytes - test/reference/mime-data.traps.rgb24.ref.png | Bin 185 -> 0 bytes - test/reference/miter-precision.mask.argb32.ref.png | Bin 1030 -> 0 bytes - test/reference/miter-precision.mask.rgb24.ref.png | Bin 1030 -> 0 bytes - test/reference/move-to-show-surface.argb32.ref.png | Bin 96 -> 0 bytes - .../reference/move-to-show-surface.mask.argb32.ref.png | Bin 96 -> 0 bytes - test/reference/move-to-show-surface.mask.rgb24.ref.png | Bin 96 -> 0 bytes - test/reference/move-to-show-surface.rgb24.ref.png | Bin 96 -> 0 bytes - .../move-to-show-surface.traps.argb32.ref.png | Bin 96 -> 0 bytes - .../reference/move-to-show-surface.traps.rgb24.ref.png | Bin 96 -> 0 bytes - test/reference/negative-stride-image.argb32.ref.png | Bin 81121 -> 0 bytes - .../negative-stride-image.mask.argb32.ref.png | Bin 81121 -> 0 bytes - .../reference/negative-stride-image.mask.rgb24.ref.png | Bin 81121 -> 0 bytes - test/reference/negative-stride-image.rgb24.ref.png | Bin 81121 -> 0 bytes - .../negative-stride-image.traps.argb32.ref.png | Bin 81121 -> 0 bytes - .../negative-stride-image.traps.rgb24.ref.png | Bin 81121 -> 0 bytes - test/reference/new-sub-path.mask.argb32.ref.png | Bin 408 -> 0 bytes - test/reference/new-sub-path.mask.rgb24.ref.png | Bin 371 -> 0 bytes - test/reference/nil-surface.argb32.ref.png | Bin 88 -> 0 bytes - test/reference/nil-surface.mask.argb32.ref.png | Bin 88 -> 0 bytes - test/reference/nil-surface.mask.rgb24.ref.png | Bin 87 -> 0 bytes - test/reference/nil-surface.traps.argb32.ref.png | Bin 88 -> 0 bytes - test/reference/nil-surface.traps.rgb24.ref.png | Bin 87 -> 0 bytes - test/reference/operator-alpha-alpha.argb32.ref.png | Bin 3441 -> 0 bytes - .../reference/operator-alpha-alpha.mask.argb32.ref.png | Bin 3441 -> 0 bytes - test/reference/operator-alpha-alpha.mask.rgb24.ref.png | Bin 3441 -> 0 bytes - test/reference/operator-alpha-alpha.rgb24.ref.png | Bin 3441 -> 0 bytes - test/reference/operator-alpha.argb32.ref.png | Bin 280 -> 0 bytes - test/reference/operator-alpha.mask.argb32.ref.png | Bin 280 -> 0 bytes - test/reference/operator-alpha.mask.rgb24.ref.png | Bin 205 -> 0 bytes - test/reference/operator-alpha.traps.argb32.ref.png | Bin 280 -> 0 bytes - test/reference/operator-alpha.traps.rgb24.ref.png | Bin 205 -> 0 bytes - test/reference/operator-clear.mask.argb32.ref.png | Bin 1071 -> 0 bytes - test/reference/operator.argb32.ref.png | Bin 238 -> 0 bytes - test/reference/operator.mask.argb32.ref.png | Bin 238 -> 0 bytes - test/reference/operator.mask.rgb24.ref.png | Bin 189 -> 0 bytes - test/reference/operator.traps.argb32.ref.png | Bin 238 -> 0 bytes - test/reference/operator.traps.rgb24.ref.png | Bin 189 -> 0 bytes - test/reference/over-above-source.mask.argb32.ref.png | Bin 564 -> 0 bytes - test/reference/over-above-source.mask.rgb24.ref.png | Bin 465 -> 0 bytes - test/reference/over-around-source.mask.argb32.ref.png | Bin 633 -> 0 bytes - test/reference/over-around-source.mask.rgb24.ref.png | Bin 499 -> 0 bytes - test/reference/over-below-source.mask.argb32.ref.png | Bin 447 -> 0 bytes - test/reference/over-below-source.mask.rgb24.ref.png | Bin 385 -> 0 bytes - test/reference/over-between-source.mask.argb32.ref.png | Bin 596 -> 0 bytes - test/reference/over-between-source.mask.rgb24.ref.png | Bin 463 -> 0 bytes - test/reference/overlapping-boxes.mask.argb32.ref.png | Bin 179 -> 0 bytes - test/reference/overlapping-boxes.mask.rgb24.ref.png | Bin 170 -> 0 bytes - test/reference/overlapping-glyphs.mask.argb32.ref.png | Bin 2717 -> 0 bytes - test/reference/overlapping-glyphs.mask.rgb24.ref.png | Bin 1663 -> 0 bytes - test/reference/paint-clip-fill-aa.argb32.ref.png | Bin 327 -> 0 bytes - test/reference/paint-clip-fill-aa.mask.argb32.ref.png | Bin 327 -> 0 bytes - test/reference/paint-clip-fill-aa.mask.rgb24.ref.png | Bin 327 -> 0 bytes - test/reference/paint-clip-fill-aa.rgb24.ref.png | Bin 327 -> 0 bytes - test/reference/paint-clip-fill-aa.traps.argb32.ref.png | Bin 327 -> 0 bytes - test/reference/paint-clip-fill-aa.traps.rgb24.ref.png | Bin 327 -> 0 bytes - test/reference/paint-clip-fill-mono.argb32.ref.png | Bin 327 -> 0 bytes - .../reference/paint-clip-fill-mono.mask.argb32.ref.png | Bin 327 -> 0 bytes - test/reference/paint-clip-fill-mono.mask.rgb24.ref.png | Bin 327 -> 0 bytes - test/reference/paint-clip-fill-mono.rgb24.ref.png | Bin 327 -> 0 bytes - .../paint-clip-fill-mono.traps.argb32.ref.png | Bin 327 -> 0 bytes - .../reference/paint-clip-fill-mono.traps.rgb24.ref.png | Bin 327 -> 0 bytes - test/reference/paint-repeat.argb32.ref.png | Bin 122 -> 0 bytes - test/reference/paint-repeat.mask.argb32.ref.png | Bin 122 -> 0 bytes - test/reference/paint-repeat.mask.rgb24.ref.png | Bin 122 -> 0 bytes - test/reference/paint-repeat.rgb24.ref.png | Bin 122 -> 0 bytes - test/reference/paint-repeat.traps.argb32.ref.png | Bin 122 -> 0 bytes - test/reference/paint-repeat.traps.rgb24.ref.png | Bin 122 -> 0 bytes - test/reference/paint-source-alpha.argb32.ref.png | Bin 224 -> 0 bytes - test/reference/paint-source-alpha.mask.argb32.ref.png | Bin 224 -> 0 bytes - test/reference/paint-source-alpha.mask.rgb24.ref.png | Bin 224 -> 0 bytes - test/reference/paint-source-alpha.rgb24.ref.png | Bin 224 -> 0 bytes - test/reference/paint-source-alpha.traps.argb32.ref.png | Bin 224 -> 0 bytes - test/reference/paint-source-alpha.traps.rgb24.ref.png | Bin 224 -> 0 bytes - test/reference/paint-with-alpha-clip.argb32.ref.png | Bin 290 -> 0 bytes - test/reference/paint-with-alpha-clip.rgb24.ref.png | Bin 290 -> 0 bytes - .../paint-with-alpha-solid-clip.argb32.ref.png | Bin 248 -> 0 bytes - .../paint-with-alpha-solid-clip.rgb24.ref.png | Bin 248 -> 0 bytes - test/reference/paint-with-alpha.argb32.ref.png | Bin 224 -> 0 bytes - test/reference/paint-with-alpha.mask.argb32.ref.png | Bin 224 -> 0 bytes - test/reference/paint-with-alpha.mask.rgb24.ref.png | Bin 224 -> 0 bytes - test/reference/paint-with-alpha.rgb24.ref.png | Bin 224 -> 0 bytes - test/reference/paint-with-alpha.traps.argb32.ref.png | Bin 224 -> 0 bytes - test/reference/paint-with-alpha.traps.rgb24.ref.png | Bin 224 -> 0 bytes - test/reference/paint.argb32.ref.png | Bin 93 -> 0 bytes - test/reference/paint.mask.argb32.ref.png | Bin 93 -> 0 bytes - test/reference/paint.mask.rgb24.ref.png | Bin 93 -> 0 bytes - test/reference/paint.rgb24.ref.png | Bin 93 -> 0 bytes - test/reference/paint.traps.argb32.ref.png | Bin 93 -> 0 bytes - test/reference/paint.traps.rgb24.ref.png | Bin 93 -> 0 bytes - .../partial-clip-text-bottom.mask.argb32.ref.png | Bin 261 -> 0 bytes - .../partial-clip-text-bottom.mask.rgb24.ref.png | Bin 261 -> 0 bytes - .../partial-clip-text-bottom.traps.argb32.ref.png | Bin 261 -> 0 bytes - .../partial-clip-text-bottom.traps.rgb24.ref.png | Bin 261 -> 0 bytes - .../partial-clip-text-left.mask.argb32.ref.png | Bin 301 -> 0 bytes - .../partial-clip-text-left.mask.rgb24.ref.png | Bin 301 -> 0 bytes - .../partial-clip-text-left.traps.argb32.ref.png | Bin 301 -> 0 bytes - .../partial-clip-text-left.traps.rgb24.ref.png | Bin 301 -> 0 bytes - .../partial-clip-text-right.mask.argb32.ref.png | Bin 155 -> 0 bytes - .../partial-clip-text-right.mask.rgb24.ref.png | Bin 155 -> 0 bytes - .../partial-clip-text-right.traps.argb32.ref.png | Bin 155 -> 0 bytes - .../partial-clip-text-right.traps.rgb24.ref.png | Bin 155 -> 0 bytes - .../partial-clip-text-top.mask.argb32.ref.png | Bin 181 -> 0 bytes - .../reference/partial-clip-text-top.mask.rgb24.ref.png | Bin 181 -> 0 bytes - .../partial-clip-text-top.traps.argb32.ref.png | Bin 181 -> 0 bytes - .../partial-clip-text-top.traps.rgb24.ref.png | Bin 181 -> 0 bytes - .../partial-coverage-half-reference.argb32.ref.png | Bin 189 -> 0 bytes - ...partial-coverage-half-reference.mask.argb32.ref.png | Bin 189 -> 0 bytes - .../partial-coverage-half-reference.mask.rgb24.ref.png | Bin 189 -> 0 bytes - .../partial-coverage-half-reference.rgb24.ref.png | Bin 189 -> 0 bytes - ...artial-coverage-half-reference.traps.argb32.ref.png | Bin 189 -> 0 bytes - ...partial-coverage-half-reference.traps.rgb24.ref.png | Bin 189 -> 0 bytes - .../partial-coverage-reference.argb32.ref.png | Bin 202 -> 0 bytes - .../partial-coverage-reference.mask.argb32.ref.png | Bin 202 -> 0 bytes - .../partial-coverage-reference.mask.rgb24.ref.png | Bin 202 -> 0 bytes - .../reference/partial-coverage-reference.rgb24.ref.png | Bin 202 -> 0 bytes - .../partial-coverage-reference.traps.argb32.ref.png | Bin 202 -> 0 bytes - .../partial-coverage-reference.traps.rgb24.ref.png | Bin 202 -> 0 bytes - ...ial-coverage-three-quarter-reference.argb32.ref.png | Bin 186 -> 0 bytes - ...overage-three-quarter-reference.mask.argb32.ref.png | Bin 186 -> 0 bytes - ...coverage-three-quarter-reference.mask.rgb24.ref.png | Bin 186 -> 0 bytes - ...tial-coverage-three-quarter-reference.rgb24.ref.png | Bin 186 -> 0 bytes - ...verage-three-quarter-reference.traps.argb32.ref.png | Bin 186 -> 0 bytes - ...overage-three-quarter-reference.traps.rgb24.ref.png | Bin 186 -> 0 bytes - test/reference/pass-through.argb32.ref.png | Bin 221 -> 0 bytes - test/reference/pass-through.mask.argb32.ref.png | Bin 221 -> 0 bytes - test/reference/pass-through.mask.rgb24.ref.png | Bin 158 -> 0 bytes - test/reference/pass-through.traps.argb32.ref.png | Bin 221 -> 0 bytes - test/reference/pass-through.traps.rgb24.ref.png | Bin 158 -> 0 bytes - test/reference/path-append.mask.argb32.ref.png | Bin 6144 -> 0 bytes - test/reference/path-append.mask.rgb24.ref.png | Bin 6144 -> 0 bytes - test/reference/path-stroke-twice.mask.argb32.ref.png | Bin 240 -> 0 bytes - test/reference/path-stroke-twice.mask.rgb24.ref.png | Bin 240 -> 0 bytes - test/reference/pattern-getters.argb32.ref.png | Bin 87 -> 0 bytes - test/reference/pattern-getters.mask.argb32.ref.png | Bin 87 -> 0 bytes - test/reference/pattern-getters.mask.rgb24.ref.png | Bin 87 -> 0 bytes - test/reference/pattern-getters.rgb24.ref.png | Bin 87 -> 0 bytes - test/reference/pattern-getters.traps.argb32.ref.png | Bin 87 -> 0 bytes - test/reference/pattern-getters.traps.rgb24.ref.png | Bin 87 -> 0 bytes - test/reference/pdf-surface-source.mask.argb32.ref.png | Bin 377 -> 0 bytes - test/reference/pdf-surface-source.mask.rgb24.ref.png | Bin 301 -> 0 bytes - test/reference/pdf-surface-source.traps.argb32.ref.png | Bin 377 -> 0 bytes - test/reference/pdf-surface-source.traps.rgb24.ref.png | Bin 301 -> 0 bytes - test/reference/pixman-rotate.argb32.ref.png | Bin 260 -> 0 bytes - test/reference/pixman-rotate.mask.argb32.ref.png | Bin 260 -> 0 bytes - test/reference/pixman-rotate.mask.rgb24.ref.png | Bin 225 -> 0 bytes - test/reference/pixman-rotate.traps.argb32.ref.png | Bin 260 -> 0 bytes - test/reference/pixman-rotate.traps.rgb24.ref.png | Bin 225 -> 0 bytes - test/reference/ps-surface-source.mask.argb32.ref.png | Bin 377 -> 0 bytes - test/reference/ps-surface-source.mask.rgb24.ref.png | Bin 301 -> 0 bytes - test/reference/ps-surface-source.traps.argb32.ref.png | Bin 377 -> 0 bytes - test/reference/ps-surface-source.traps.rgb24.ref.png | Bin 301 -> 0 bytes - test/reference/pthread-same-source.argb32.ref.png | Bin 1000 -> 0 bytes - test/reference/pthread-same-source.mask.argb32.ref.png | Bin 1000 -> 0 bytes - test/reference/pthread-same-source.mask.rgb24.ref.png | Bin 1000 -> 0 bytes - test/reference/pthread-same-source.rgb24.ref.png | Bin 1000 -> 0 bytes - .../reference/pthread-same-source.traps.argb32.ref.png | Bin 1000 -> 0 bytes - test/reference/pthread-same-source.traps.rgb24.ref.png | Bin 1000 -> 0 bytes - test/reference/pthread-show-text.mask.argb32.ref.png | Bin 30199 -> 0 bytes - test/reference/pthread-show-text.mask.rgb24.ref.png | Bin 30199 -> 0 bytes - test/reference/pthread-show-text.traps.argb32.ref.png | Bin 30199 -> 0 bytes - test/reference/pthread-show-text.traps.rgb24.ref.png | Bin 30199 -> 0 bytes - test/reference/pthread-similar.argb32.ref.png | Bin 170 -> 0 bytes - test/reference/pthread-similar.mask.argb32.ref.png | Bin 170 -> 0 bytes - test/reference/pthread-similar.mask.rgb24.ref.png | Bin 170 -> 0 bytes - test/reference/pthread-similar.rgb24.ref.png | Bin 170 -> 0 bytes - test/reference/pthread-similar.traps.argb32.ref.png | Bin 170 -> 0 bytes - test/reference/pthread-similar.traps.rgb24.ref.png | Bin 170 -> 0 bytes - test/reference/push-group-color.mask.argb32.ref.png | Bin 2892 -> 0 bytes - test/reference/push-group-color.mask.rgb24.ref.png | Bin 2892 -> 0 bytes - test/reference/push-group-path-offset.argb32.ref.png | Bin 186 -> 0 bytes - .../push-group-path-offset.mask.argb32.ref.png | Bin 186 -> 0 bytes - .../push-group-path-offset.mask.rgb24.ref.png | Bin 186 -> 0 bytes - test/reference/push-group-path-offset.rgb24.ref.png | Bin 186 -> 0 bytes - .../push-group-path-offset.traps.argb32.ref.png | Bin 186 -> 0 bytes - .../push-group-path-offset.traps.rgb24.ref.png | Bin 186 -> 0 bytes - test/reference/push-group.mask.argb32.ref.png | Bin 3062 -> 0 bytes - test/reference/push-group.mask.rgb24.ref.png | Bin 2899 -> 0 bytes - .../radial-gradient-mask-source.mask.argb32.ref.png | Bin 145713 -> 0 bytes - .../radial-gradient-mask-source.traps.argb32.ref.png | Bin 145713 -> 0 bytes - test/reference/radial-gradient-mask.argb32.ref.png | Bin 286065 -> 0 bytes - .../reference/radial-gradient-mask.mask.argb32.ref.png | Bin 286065 -> 0 bytes - test/reference/radial-gradient-mask.mask.rgb24.ref.png | Bin 286065 -> 0 bytes - test/reference/radial-gradient-mask.rgb24.ref.png | Bin 286065 -> 0 bytes - .../radial-gradient-mask.traps.argb32.ref.png | Bin 286065 -> 0 bytes - .../reference/radial-gradient-mask.traps.rgb24.ref.png | Bin 286065 -> 0 bytes - test/reference/radial-gradient-one-stop.argb32.ref.png | Bin 6306 -> 0 bytes - .../radial-gradient-one-stop.mask.argb32.ref.png | Bin 6306 -> 0 bytes - .../radial-gradient-one-stop.mask.rgb24.ref.png | Bin 6306 -> 0 bytes - test/reference/radial-gradient-one-stop.rgb24.ref.png | Bin 6306 -> 0 bytes - .../radial-gradient-one-stop.traps.argb32.ref.png | Bin 6306 -> 0 bytes - .../radial-gradient-one-stop.traps.rgb24.ref.png | Bin 6306 -> 0 bytes - .../radial-gradient-source.mask.argb32.ref.png | Bin 408848 -> 0 bytes - .../radial-gradient-source.mask.rgb24.ref.png | Bin 263908 -> 0 bytes - .../radial-gradient-source.traps.argb32.ref.png | Bin 408848 -> 0 bytes - .../radial-gradient-source.traps.rgb24.ref.png | Bin 263908 -> 0 bytes - test/reference/radial-gradient.argb32.ref.png | Bin 382283 -> 0 bytes - test/reference/radial-gradient.mask.argb32.ref.png | Bin 382283 -> 0 bytes - test/reference/radial-gradient.mask.rgb24.ref.png | Bin 382283 -> 0 bytes - test/reference/radial-gradient.rgb24.ref.png | Bin 382283 -> 0 bytes - test/reference/radial-gradient.traps.argb32.ref.png | Bin 382283 -> 0 bytes - test/reference/radial-gradient.traps.rgb24.ref.png | Bin 382283 -> 0 bytes - .../random-intersections-curves-eo.mask.argb32.ref.png | Bin 245848 -> 0 bytes - .../random-intersections-curves-eo.mask.rgb24.ref.png | Bin 245848 -> 0 bytes - .../random-intersections-curves-nz.mask.argb32.ref.png | Bin 265249 -> 0 bytes - .../random-intersections-curves-nz.mask.rgb24.ref.png | Bin 265249 -> 0 bytes - .../random-intersections-eo.mask.argb32.ref.png | Bin 136632 -> 0 bytes - .../random-intersections-eo.mask.rgb24.ref.png | Bin 136632 -> 0 bytes - .../random-intersections-nonzero.mask.argb32.ref.png | Bin 142139 -> 0 bytes - .../random-intersections-nonzero.mask.rgb24.ref.png | Bin 142139 -> 0 bytes - test/reference/raster-source.argb32.ref.png | Bin 1209 -> 0 bytes - test/reference/raster-source.mask.argb32.ref.png | Bin 1209 -> 0 bytes - test/reference/raster-source.mask.rgb24.ref.png | Bin 1209 -> 0 bytes - test/reference/raster-source.rgb24.ref.png | Bin 1209 -> 0 bytes - test/reference/raster-source.traps.argb32.ref.png | Bin 1209 -> 0 bytes - test/reference/raster-source.traps.rgb24.ref.png | Bin 1209 -> 0 bytes - .../record-extend-none-similar.argb32.ref.png | Bin 293 -> 0 bytes - .../record-extend-none-similar.image16.rgb24.ref.png | Bin 293 -> 0 bytes - .../reference/record-extend-none-similar.rgb24.ref.png | Bin 293 -> 0 bytes - test/reference/record-extend-none.argb32.ref.png | Bin 293 -> 0 bytes - .../reference/record-extend-none.image16.rgb24.ref.png | Bin 293 -> 0 bytes - test/reference/record-extend-none.rgb24.ref.png | Bin 293 -> 0 bytes - test/reference/record-extend-none.traps.argb32.ref.png | Bin 293 -> 0 bytes - test/reference/record-extend-none.traps.rgb24.ref.png | Bin 293 -> 0 bytes - .../reference/record-extend-pad-similar.argb32.ref.png | Bin 298 -> 0 bytes - .../record-extend-pad-similar.image16.rgb24.ref.png | Bin 298 -> 0 bytes - test/reference/record-extend-pad-similar.rgb24.ref.png | Bin 298 -> 0 bytes - test/reference/record-extend-pad.argb32.ref.png | Bin 298 -> 0 bytes - test/reference/record-extend-pad.image16.rgb24.ref.png | Bin 298 -> 0 bytes - test/reference/record-extend-pad.rgb24.ref.png | Bin 298 -> 0 bytes - test/reference/record-extend-pad.traps.argb32.ref.png | Bin 298 -> 0 bytes - test/reference/record-extend-pad.traps.rgb24.ref.png | Bin 298 -> 0 bytes - .../record-extend-reflect-similar.argb32.ref.png | Bin 335 -> 0 bytes - ...record-extend-reflect-similar.image16.rgb24.ref.png | Bin 335 -> 0 bytes - .../record-extend-reflect-similar.rgb24.ref.png | Bin 335 -> 0 bytes - test/reference/record-extend-reflect.argb32.ref.png | Bin 335 -> 0 bytes - .../record-extend-reflect.image16.rgb24.ref.png | Bin 335 -> 0 bytes - test/reference/record-extend-reflect.rgb24.ref.png | Bin 335 -> 0 bytes - .../record-extend-reflect.traps.argb32.ref.png | Bin 335 -> 0 bytes - .../record-extend-reflect.traps.rgb24.ref.png | Bin 335 -> 0 bytes - .../record-extend-repeat-similar.argb32.ref.png | Bin 286 -> 0 bytes - .../record-extend-repeat-similar.image16.rgb24.ref.png | Bin 286 -> 0 bytes - .../record-extend-repeat-similar.rgb24.ref.png | Bin 286 -> 0 bytes - test/reference/record-extend-repeat.argb32.ref.png | Bin 286 -> 0 bytes - .../record-extend-repeat.image16.rgb24.ref.png | Bin 286 -> 0 bytes - test/reference/record-extend-repeat.rgb24.ref.png | Bin 286 -> 0 bytes - .../record-extend-repeat.traps.argb32.ref.png | Bin 286 -> 0 bytes - .../reference/record-extend-repeat.traps.rgb24.ref.png | Bin 286 -> 0 bytes - test/reference/record-mesh.argb32.ref.png | Bin 15229 -> 0 bytes - test/reference/record-mesh.rgb24.ref.png | Bin 15229 -> 0 bytes - test/reference/record-mesh.traps.argb32.ref.png | Bin 15229 -> 0 bytes - test/reference/record-mesh.traps.rgb24.ref.png | Bin 15229 -> 0 bytes - .../record-paint-alpha-solid-clip.argb32.ref.png | Bin 248 -> 0 bytes - .../record-paint-alpha-solid-clip.rgb24.ref.png | Bin 248 -> 0 bytes - test/reference/record-paint-alpha.argb32.ref.png | Bin 224 -> 0 bytes - test/reference/record-paint-alpha.rgb24.ref.png | Bin 224 -> 0 bytes - test/reference/record-paint-alpha.traps.argb32.ref.png | Bin 224 -> 0 bytes - test/reference/record-paint-alpha.traps.rgb24.ref.png | Bin 224 -> 0 bytes - test/reference/record-paint.argb32.ref.png | Bin 93 -> 0 bytes - test/reference/record-paint.image16.rgb24.ref.png | Bin 93 -> 0 bytes - test/reference/record-paint.rgb24.ref.png | Bin 93 -> 0 bytes - test/reference/record-paint.traps.argb32.ref.png | Bin 93 -> 0 bytes - test/reference/record-paint.traps.rgb24.ref.png | Bin 93 -> 0 bytes - test/reference/record-self-intersecting.argb32.ref.png | Bin 168 -> 0 bytes - test/reference/record-self-intersecting.rgb24.ref.png | Bin 168 -> 0 bytes - test/reference/rectangle-rounding-error.argb32.ref.png | Bin 212 -> 0 bytes - .../rectangle-rounding-error.mask.argb32.ref.png | Bin 212 -> 0 bytes - .../rectangle-rounding-error.mask.rgb24.ref.png | Bin 212 -> 0 bytes - test/reference/rectangle-rounding-error.rgb24.ref.png | Bin 212 -> 0 bytes - .../rectangle-rounding-error.traps.argb32.ref.png | Bin 212 -> 0 bytes - .../rectangle-rounding-error.traps.rgb24.ref.png | Bin 212 -> 0 bytes - test/reference/rectilinear-fill.argb32.ref.png | Bin 151 -> 0 bytes - test/reference/rectilinear-fill.mask.argb32.ref.png | Bin 151 -> 0 bytes - test/reference/rectilinear-fill.mask.rgb24.ref.png | Bin 151 -> 0 bytes - test/reference/rectilinear-fill.rgb24.ref.png | Bin 151 -> 0 bytes - test/reference/rectilinear-fill.traps.argb32.ref.png | Bin 151 -> 0 bytes - test/reference/rectilinear-fill.traps.rgb24.ref.png | Bin 151 -> 0 bytes - test/reference/rectilinear-grid.argb32.ref.png | Bin 569 -> 0 bytes - test/reference/rectilinear-grid.mask.argb32.ref.png | Bin 569 -> 0 bytes - test/reference/rectilinear-grid.mask.rgb24.ref.png | Bin 569 -> 0 bytes - test/reference/rectilinear-grid.rgb24.ref.png | Bin 569 -> 0 bytes - .../rectilinear-miter-limit.mask.argb32.ref.png | Bin 145 -> 0 bytes - .../rectilinear-miter-limit.mask.rgb24.ref.png | Bin 145 -> 0 bytes - test/reference/rectilinear-stroke.argb32.ref.png | Bin 172 -> 0 bytes - test/reference/rectilinear-stroke.mask.argb32.ref.png | Bin 172 -> 0 bytes - test/reference/rectilinear-stroke.mask.rgb24.ref.png | Bin 172 -> 0 bytes - test/reference/rectilinear-stroke.rgb24.ref.png | Bin 172 -> 0 bytes - test/reference/rectilinear-stroke.traps.argb32.ref.png | Bin 172 -> 0 bytes - test/reference/rectilinear-stroke.traps.rgb24.ref.png | Bin 172 -> 0 bytes - test/reference/rel-path.mask.argb32.ref.png | Bin 197 -> 0 bytes - test/reference/rgb24-ignore-alpha.argb32.ref.png | Bin 97 -> 0 bytes - test/reference/rgb24-ignore-alpha.mask.argb32.ref.png | Bin 97 -> 0 bytes - test/reference/rgb24-ignore-alpha.mask.rgb24.ref.png | Bin 97 -> 0 bytes - test/reference/rgb24-ignore-alpha.rgb24.ref.png | Bin 97 -> 0 bytes - test/reference/rgb24-ignore-alpha.traps.argb32.ref.png | Bin 97 -> 0 bytes - test/reference/rgb24-ignore-alpha.traps.rgb24.ref.png | Bin 97 -> 0 bytes - ...rotate-clip-image-surface-paint.mask.argb32.ref.png | Bin 331 -> 0 bytes - .../rotate-clip-image-surface-paint.mask.rgb24.ref.png | Bin 331 -> 0 bytes - .../rotate-image-surface-paint.argb32.ref.png | Bin 220 -> 0 bytes - .../rotate-image-surface-paint.mask.argb32.ref.png | Bin 220 -> 0 bytes - .../rotate-image-surface-paint.mask.rgb24.ref.png | Bin 220 -> 0 bytes - .../reference/rotate-image-surface-paint.rgb24.ref.png | Bin 220 -> 0 bytes - .../rotate-image-surface-paint.traps.argb32.ref.png | Bin 220 -> 0 bytes - .../rotate-image-surface-paint.traps.rgb24.ref.png | Bin 220 -> 0 bytes - ...ate-image-surface-paint.xlib-fallback.rgb24.ref.png | Bin 220 -> 0 bytes - ...otate-image-surface-paint.xlib-window.rgb24.ref.png | Bin 220 -> 0 bytes - .../rounded-rectangle-fill.mask.argb32.ref.png | Bin 787 -> 0 bytes - .../rounded-rectangle-fill.mask.rgb24.ref.png | Bin 787 -> 0 bytes - .../scale-down-source-surface-paint.argb32.ref.png | Bin 96 -> 0 bytes - ...scale-down-source-surface-paint.mask.argb32.ref.png | Bin 96 -> 0 bytes - .../scale-down-source-surface-paint.mask.rgb24.ref.png | Bin 96 -> 0 bytes - .../scale-down-source-surface-paint.rgb24.ref.png | Bin 96 -> 0 bytes - ...cale-down-source-surface-paint.traps.argb32.ref.png | Bin 96 -> 0 bytes - ...scale-down-source-surface-paint.traps.rgb24.ref.png | Bin 96 -> 0 bytes - test/reference/scale-offset-image.mask.argb32.ref.png | Bin 9748 -> 0 bytes - test/reference/scale-offset-image.mask.rgb24.ref.png | Bin 9748 -> 0 bytes - .../reference/scale-offset-similar.mask.argb32.ref.png | Bin 9748 -> 0 bytes - test/reference/scale-offset-similar.mask.rgb24.ref.png | Bin 9748 -> 0 bytes - .../scale-source-surface-paint.argb32.ref.png | Bin 128 -> 0 bytes - .../scale-source-surface-paint.mask.argb32.ref.png | Bin 128 -> 0 bytes - .../scale-source-surface-paint.mask.rgb24.ref.png | Bin 117 -> 0 bytes - .../scale-source-surface-paint.traps.argb32.ref.png | Bin 128 -> 0 bytes - .../scale-source-surface-paint.traps.rgb24.ref.png | Bin 117 -> 0 bytes - test/reference/select-font-face.mask.argb32.ref.png | Bin 2250 -> 0 bytes - test/reference/select-font-face.mask.rgb24.ref.png | Bin 2250 -> 0 bytes - test/reference/select-font-face.traps.argb32.ref.png | Bin 2250 -> 0 bytes - test/reference/select-font-face.traps.rgb24.ref.png | Bin 2250 -> 0 bytes - test/reference/self-copy.mask.argb32.ref.png | Bin 257 -> 0 bytes - test/reference/self-copy.mask.rgb24.ref.png | Bin 257 -> 0 bytes - test/reference/self-intersecting.argb32.ref.png | Bin 168 -> 0 bytes - test/reference/self-intersecting.mask.argb32.ref.png | Bin 168 -> 0 bytes - test/reference/self-intersecting.mask.rgb24.ref.png | Bin 168 -> 0 bytes - test/reference/self-intersecting.rgb24.ref.png | Bin 168 -> 0 bytes - test/reference/set-source.argb32.ref.png | Bin 101 -> 0 bytes - test/reference/set-source.mask.argb32.ref.png | Bin 101 -> 0 bytes - test/reference/set-source.mask.rgb24.ref.png | Bin 101 -> 0 bytes - test/reference/set-source.traps.argb32.ref.png | Bin 101 -> 0 bytes - test/reference/set-source.traps.rgb24.ref.png | Bin 101 -> 0 bytes - .../reference/shape-general-convex.mask.argb32.ref.png | Bin 2742 -> 0 bytes - test/reference/shape-general-convex.mask.rgb24.ref.png | Bin 2742 -> 0 bytes - test/reference/shape-sierpinski.mask.argb32.ref.png | Bin 63714 -> 0 bytes - test/reference/shape-sierpinski.mask.rgb24.ref.png | Bin 63714 -> 0 bytes - test/reference/show-glyphs-advance.mask.argb32.ref.png | Bin 1394 -> 0 bytes - test/reference/show-glyphs-advance.mask.rgb24.ref.png | Bin 1394 -> 0 bytes - .../reference/show-glyphs-advance.traps.argb32.ref.png | Bin 1394 -> 0 bytes - test/reference/show-glyphs-advance.traps.rgb24.ref.png | Bin 1394 -> 0 bytes - test/reference/show-glyphs-many.argb32.ref.png | Bin 96 -> 0 bytes - test/reference/show-glyphs-many.mask.argb32.ref.png | Bin 96 -> 0 bytes - test/reference/show-glyphs-many.mask.rgb24.ref.png | Bin 96 -> 0 bytes - test/reference/show-glyphs-many.rgb24.ref.png | Bin 96 -> 0 bytes - test/reference/show-glyphs-many.traps.argb32.ref.png | Bin 96 -> 0 bytes - test/reference/show-glyphs-many.traps.rgb24.ref.png | Bin 96 -> 0 bytes - .../show-text-current-point.mask.argb32.ref.png | Bin 2151 -> 0 bytes - .../show-text-current-point.mask.rgb24.ref.png | Bin 2151 -> 0 bytes - .../show-text-current-point.traps.argb32.ref.png | Bin 2151 -> 0 bytes - .../show-text-current-point.traps.rgb24.ref.png | Bin 2151 -> 0 bytes - test/reference/skew-extreme.mask.argb32.ref.png | Bin 799 -> 0 bytes - test/reference/skew-extreme.mask.rgb24.ref.png | Bin 799 -> 0 bytes - test/reference/smask-fill.mask.argb32.ref.png | Bin 1197 -> 0 bytes - test/reference/smask-fill.mask.rgb24.ref.png | Bin 1197 -> 0 bytes - test/reference/smask-image-mask.mask.argb32.ref.png | Bin 619 -> 0 bytes - test/reference/smask-image-mask.mask.rgb24.ref.png | Bin 619 -> 0 bytes - test/reference/smask-image-mask.traps.argb32.ref.png | Bin 619 -> 0 bytes - test/reference/smask-image-mask.traps.rgb24.ref.png | Bin 619 -> 0 bytes - .../smask-image-mask.xlib-fallback.rgb24.ref.png | Bin 619 -> 0 bytes - .../smask-image-mask.xlib-window.rgb24.ref.png | Bin 619 -> 0 bytes - test/reference/smask-mask.mask.argb32.ref.png | Bin 2353 -> 0 bytes - test/reference/smask-mask.mask.rgb24.ref.png | Bin 2353 -> 0 bytes - test/reference/smask-mask.traps.argb32.ref.png | Bin 2353 -> 0 bytes - test/reference/smask-mask.traps.rgb24.ref.png | Bin 2353 -> 0 bytes - test/reference/smask-paint.mask.argb32.ref.png | Bin 2469 -> 0 bytes - test/reference/smask-paint.mask.rgb24.ref.png | Bin 2469 -> 0 bytes - test/reference/smask-paint.traps.argb32.ref.png | Bin 2469 -> 0 bytes - test/reference/smask-paint.traps.rgb24.ref.png | Bin 2469 -> 0 bytes - test/reference/smask-stroke.mask.argb32.ref.png | Bin 1709 -> 0 bytes - test/reference/smask-stroke.mask.rgb24.ref.png | Bin 1709 -> 0 bytes - test/reference/smask-text.traps.argb32.ref.png | Bin 1661 -> 0 bytes - test/reference/smask-text.traps.rgb24.ref.png | Bin 1661 -> 0 bytes - test/reference/smask.traps.argb32.ref.png | Bin 3393 -> 0 bytes - test/reference/smask.traps.rgb24.ref.png | Bin 3393 -> 0 bytes - .../solid-pattern-cache-stress.argb32.ref.png | Bin 87 -> 0 bytes - .../solid-pattern-cache-stress.mask.argb32.ref.png | Bin 87 -> 0 bytes - .../solid-pattern-cache-stress.mask.rgb24.ref.png | Bin 87 -> 0 bytes - .../reference/solid-pattern-cache-stress.rgb24.ref.png | Bin 87 -> 0 bytes - .../solid-pattern-cache-stress.traps.argb32.ref.png | Bin 87 -> 0 bytes - .../solid-pattern-cache-stress.traps.rgb24.ref.png | Bin 87 -> 0 bytes - test/reference/source-clip-scale.argb32.ref.png | Bin 136 -> 0 bytes - test/reference/source-clip-scale.mask.argb32.ref.png | Bin 136 -> 0 bytes - test/reference/source-clip-scale.mask.rgb24.ref.png | Bin 136 -> 0 bytes - test/reference/source-clip-scale.rgb24.ref.png | Bin 136 -> 0 bytes - test/reference/source-clip-scale.traps.argb32.ref.png | Bin 136 -> 0 bytes - test/reference/source-clip-scale.traps.rgb24.ref.png | Bin 136 -> 0 bytes - test/reference/source-clip.argb32.ref.png | Bin 111 -> 0 bytes - test/reference/source-clip.mask.argb32.ref.png | Bin 111 -> 0 bytes - test/reference/source-clip.mask.rgb24.ref.png | Bin 111 -> 0 bytes - test/reference/source-clip.rgb24.ref.png | Bin 111 -> 0 bytes - test/reference/source-clip.traps.argb32.ref.png | Bin 111 -> 0 bytes - test/reference/source-clip.traps.rgb24.ref.png | Bin 111 -> 0 bytes - .../source-surface-scale-paint.argb32.ref.png | Bin 120 -> 0 bytes - .../source-surface-scale-paint.mask.argb32.ref.png | Bin 120 -> 0 bytes - .../source-surface-scale-paint.mask.rgb24.ref.png | Bin 114 -> 0 bytes - .../source-surface-scale-paint.traps.argb32.ref.png | Bin 120 -> 0 bytes - .../source-surface-scale-paint.traps.rgb24.ref.png | Bin 114 -> 0 bytes - .../reference/spline-decomposition.mask.argb32.ref.png | Bin 19520 -> 0 bytes - test/reference/spline-decomposition.mask.rgb24.ref.png | Bin 19520 -> 0 bytes - test/reference/stride-12-image.argb32.ref.png | Bin 81121 -> 0 bytes - test/reference/stride-12-image.mask.argb32.ref.png | Bin 81121 -> 0 bytes - test/reference/stride-12-image.mask.rgb24.ref.png | Bin 81121 -> 0 bytes - test/reference/stride-12-image.rgb24.ref.png | Bin 81121 -> 0 bytes - test/reference/stride-12-image.traps.argb32.ref.png | Bin 81121 -> 0 bytes - test/reference/stride-12-image.traps.rgb24.ref.png | Bin 81121 -> 0 bytes - test/reference/stroke-image.mask.argb32.ref.png | Bin 1424 -> 0 bytes - test/reference/stroke-image.mask.rgb24.ref.png | Bin 1424 -> 0 bytes - test/reference/stroke-open-box.argb32.ref.png | Bin 148 -> 0 bytes - test/reference/stroke-open-box.mask.argb32.ref.png | Bin 148 -> 0 bytes - test/reference/stroke-open-box.mask.rgb24.ref.png | Bin 148 -> 0 bytes - test/reference/stroke-open-box.rgb24.ref.png | Bin 148 -> 0 bytes - test/reference/stroke-open-box.traps.argb32.ref.png | Bin 148 -> 0 bytes - test/reference/stroke-open-box.traps.rgb24.ref.png | Bin 148 -> 0 bytes - test/reference/stroke-pattern.mask.argb32.ref.png | Bin 1491 -> 0 bytes - test/reference/stroke-pattern.mask.rgb24.ref.png | Bin 1491 -> 0 bytes - test/reference/stroke-pattern.traps.argb32.ref.png | Bin 1487 -> 0 bytes - test/reference/stroke-pattern.traps.rgb24.ref.png | Bin 1487 -> 0 bytes - test/reference/subsurface-image-repeat.argb32.ref.png | Bin 915 -> 0 bytes - .../subsurface-image-repeat.mask.argb32.ref.png | Bin 915 -> 0 bytes - .../subsurface-image-repeat.mask.rgb24.ref.png | Bin 915 -> 0 bytes - test/reference/subsurface-image-repeat.rgb24.ref.png | Bin 915 -> 0 bytes - .../subsurface-image-repeat.traps.argb32.ref.png | Bin 915 -> 0 bytes - .../subsurface-image-repeat.traps.rgb24.ref.png | Bin 915 -> 0 bytes - ...subsurface-image-repeat.xlib-fallback.rgb24.ref.png | Bin 915 -> 0 bytes - .../subsurface-image-repeat.xlib-window.rgb24.ref.png | Bin 915 -> 0 bytes - test/reference/subsurface-modify-child.argb32.ref.png | Bin 197 -> 0 bytes - .../subsurface-modify-child.mask.argb32.ref.png | Bin 197 -> 0 bytes - .../subsurface-modify-child.mask.rgb24.ref.png | Bin 197 -> 0 bytes - test/reference/subsurface-modify-child.rgb24.ref.png | Bin 197 -> 0 bytes - .../subsurface-modify-child.traps.argb32.ref.png | Bin 197 -> 0 bytes - .../subsurface-modify-child.traps.rgb24.ref.png | Bin 197 -> 0 bytes - test/reference/subsurface-modify-parent.argb32.ref.png | Bin 197 -> 0 bytes - .../subsurface-modify-parent.mask.argb32.ref.png | Bin 197 -> 0 bytes - .../subsurface-modify-parent.mask.rgb24.ref.png | Bin 197 -> 0 bytes - test/reference/subsurface-modify-parent.rgb24.ref.png | Bin 197 -> 0 bytes - .../subsurface-modify-parent.traps.argb32.ref.png | Bin 197 -> 0 bytes - .../subsurface-modify-parent.traps.rgb24.ref.png | Bin 197 -> 0 bytes - .../subsurface-outside-target.mask.argb32.ref.png | Bin 2063 -> 0 bytes - .../subsurface-outside-target.mask.rgb24.ref.png | Bin 1648 -> 0 bytes - .../subsurface-outside-target.traps.argb32.ref.png | Bin 2063 -> 0 bytes - .../subsurface-outside-target.traps.rgb24.ref.png | Bin 1648 -> 0 bytes - test/reference/subsurface-pad.argb32.ref.png | Bin 181 -> 0 bytes - test/reference/subsurface-pad.mask.argb32.ref.png | Bin 181 -> 0 bytes - test/reference/subsurface-pad.mask.rgb24.ref.png | Bin 181 -> 0 bytes - test/reference/subsurface-pad.rgb24.ref.png | Bin 181 -> 0 bytes - test/reference/subsurface-pad.traps.argb32.ref.png | Bin 181 -> 0 bytes - test/reference/subsurface-pad.traps.rgb24.ref.png | Bin 181 -> 0 bytes - test/reference/subsurface-reflect.argb32.ref.png | Bin 210 -> 0 bytes - test/reference/subsurface-reflect.mask.argb32.ref.png | Bin 210 -> 0 bytes - test/reference/subsurface-reflect.mask.rgb24.ref.png | Bin 210 -> 0 bytes - test/reference/subsurface-reflect.rgb24.ref.png | Bin 210 -> 0 bytes - test/reference/subsurface-reflect.traps.argb32.ref.png | Bin 210 -> 0 bytes - test/reference/subsurface-reflect.traps.rgb24.ref.png | Bin 210 -> 0 bytes - test/reference/subsurface-repeat.argb32.ref.png | Bin 197 -> 0 bytes - test/reference/subsurface-repeat.mask.argb32.ref.png | Bin 197 -> 0 bytes - test/reference/subsurface-repeat.mask.rgb24.ref.png | Bin 197 -> 0 bytes - test/reference/subsurface-repeat.rgb24.ref.png | Bin 197 -> 0 bytes - test/reference/subsurface-repeat.traps.argb32.ref.png | Bin 197 -> 0 bytes - test/reference/subsurface-repeat.traps.rgb24.ref.png | Bin 197 -> 0 bytes - test/reference/subsurface-scale.mask.argb32.ref.png | Bin 5921 -> 0 bytes - test/reference/subsurface-scale.mask.rgb24.ref.png | Bin 5921 -> 0 bytes - .../reference/subsurface-similar-repeat.argb32.ref.png | Bin 197 -> 0 bytes - .../subsurface-similar-repeat.mask.argb32.ref.png | Bin 197 -> 0 bytes - .../subsurface-similar-repeat.mask.rgb24.ref.png | Bin 197 -> 0 bytes - test/reference/subsurface-similar-repeat.rgb24.ref.png | Bin 197 -> 0 bytes - .../subsurface-similar-repeat.traps.argb32.ref.png | Bin 197 -> 0 bytes - .../subsurface-similar-repeat.traps.rgb24.ref.png | Bin 197 -> 0 bytes - test/reference/subsurface.mask.argb32.ref.png | Bin 1811 -> 0 bytes - test/reference/subsurface.mask.rgb24.ref.png | Bin 1811 -> 0 bytes - .../surface-pattern-big-scale-down.argb32.ref.png | Bin 191 -> 0 bytes - .../surface-pattern-big-scale-down.mask.argb32.ref.png | Bin 191 -> 0 bytes - .../surface-pattern-big-scale-down.mask.rgb24.ref.png | Bin 191 -> 0 bytes - .../surface-pattern-big-scale-down.rgb24.ref.png | Bin 191 -> 0 bytes - ...surface-pattern-big-scale-down.traps.argb32.ref.png | Bin 191 -> 0 bytes - .../surface-pattern-big-scale-down.traps.rgb24.ref.png | Bin 191 -> 0 bytes - .../surface-pattern-operator.mask.argb32.ref.png | Bin 5217 -> 0 bytes - .../surface-pattern-operator.mask.rgb24.ref.png | Bin 1942 -> 0 bytes - ...rface-pattern-scale-down-extend-none.argb32.ref.png | Bin 329 -> 0 bytes - ...-pattern-scale-down-extend-none.mask.argb32.ref.png | Bin 329 -> 0 bytes - ...e-pattern-scale-down-extend-none.mask.rgb24.ref.png | Bin 329 -> 0 bytes - ...urface-pattern-scale-down-extend-none.rgb24.ref.png | Bin 329 -> 0 bytes - ...pattern-scale-down-extend-none.traps.argb32.ref.png | Bin 329 -> 0 bytes - ...-pattern-scale-down-extend-none.traps.rgb24.ref.png | Bin 329 -> 0 bytes - ...urface-pattern-scale-down-extend-pad.argb32.ref.png | Bin 320 -> 0 bytes - ...e-pattern-scale-down-extend-pad.mask.argb32.ref.png | Bin 320 -> 0 bytes - ...ce-pattern-scale-down-extend-pad.mask.rgb24.ref.png | Bin 320 -> 0 bytes - ...surface-pattern-scale-down-extend-pad.rgb24.ref.png | Bin 320 -> 0 bytes - ...-pattern-scale-down-extend-pad.traps.argb32.ref.png | Bin 320 -> 0 bytes - ...e-pattern-scale-down-extend-pad.traps.rgb24.ref.png | Bin 320 -> 0 bytes - ...ce-pattern-scale-down-extend-reflect.argb32.ref.png | Bin 328 -> 0 bytes - ...ttern-scale-down-extend-reflect.mask.argb32.ref.png | Bin 328 -> 0 bytes - ...attern-scale-down-extend-reflect.mask.rgb24.ref.png | Bin 328 -> 0 bytes - ...ace-pattern-scale-down-extend-reflect.rgb24.ref.png | Bin 328 -> 0 bytes - ...tern-scale-down-extend-reflect.traps.argb32.ref.png | Bin 328 -> 0 bytes - ...ttern-scale-down-extend-reflect.traps.rgb24.ref.png | Bin 328 -> 0 bytes - ...ace-pattern-scale-down-extend-repeat.argb32.ref.png | Bin 330 -> 0 bytes - ...attern-scale-down-extend-repeat.mask.argb32.ref.png | Bin 330 -> 0 bytes - ...pattern-scale-down-extend-repeat.mask.rgb24.ref.png | Bin 330 -> 0 bytes - ...face-pattern-scale-down-extend-repeat.rgb24.ref.png | Bin 330 -> 0 bytes - ...ttern-scale-down-extend-repeat.traps.argb32.ref.png | Bin 330 -> 0 bytes - ...attern-scale-down-extend-repeat.traps.rgb24.ref.png | Bin 330 -> 0 bytes - .../surface-pattern-scale-down.mask.argb32.ref.png | Bin 1326 -> 0 bytes - .../surface-pattern-scale-down.mask.rgb24.ref.png | Bin 1326 -> 0 bytes - .../surface-pattern-scale-down.traps.argb32.ref.png | Bin 1326 -> 0 bytes - .../surface-pattern-scale-down.traps.rgb24.ref.png | Bin 1326 -> 0 bytes - .../surface-pattern-scale-up.mask.argb32.ref.png | Bin 4020 -> 0 bytes - .../surface-pattern-scale-up.mask.rgb24.ref.png | Bin 4020 -> 0 bytes - .../surface-pattern-scale-up.traps.argb32.ref.png | Bin 4020 -> 0 bytes - .../surface-pattern-scale-up.traps.rgb24.ref.png | Bin 4020 -> 0 bytes - test/reference/surface-pattern.mask.argb32.ref.png | Bin 11088 -> 0 bytes - test/reference/surface-pattern.mask.rgb24.ref.png | Bin 11088 -> 0 bytes - test/reference/surface-pattern.traps.argb32.ref.png | Bin 11088 -> 0 bytes - test/reference/surface-pattern.traps.rgb24.ref.png | Bin 11088 -> 0 bytes - test/reference/svg-surface-source.mask.argb32.ref.png | Bin 377 -> 0 bytes - test/reference/svg-surface-source.mask.rgb24.ref.png | Bin 301 -> 0 bytes - test/reference/svg-surface-source.traps.argb32.ref.png | Bin 377 -> 0 bytes - test/reference/svg-surface-source.traps.rgb24.ref.png | Bin 301 -> 0 bytes - test/reference/text-antialias-gray.mask.argb32.ref.png | Bin 966 -> 0 bytes - test/reference/text-antialias-gray.mask.rgb24.ref.png | Bin 966 -> 0 bytes - .../reference/text-antialias-gray.traps.argb32.ref.png | Bin 966 -> 0 bytes - test/reference/text-antialias-gray.traps.rgb24.ref.png | Bin 966 -> 0 bytes - test/reference/text-antialias-none.argb32.ref.png | Bin 265 -> 0 bytes - test/reference/text-antialias-none.mask.argb32.ref.png | Bin 265 -> 0 bytes - test/reference/text-antialias-none.mask.rgb24.ref.png | Bin 265 -> 0 bytes - test/reference/text-antialias-none.rgb24.ref.png | Bin 265 -> 0 bytes - .../reference/text-antialias-none.traps.argb32.ref.png | Bin 265 -> 0 bytes - test/reference/text-antialias-none.traps.ref.png | Bin 265 -> 0 bytes - test/reference/text-antialias-none.traps.rgb24.ref.png | Bin 265 -> 0 bytes - .../text-antialias-subpixel-bgr.traps.argb32.ref.png | Bin 1005 -> 0 bytes - .../text-antialias-subpixel-bgr.traps.rgb24.ref.png | Bin 1005 -> 0 bytes - .../text-antialias-subpixel-rgb.traps.argb32.ref.png | Bin 1013 -> 0 bytes - .../text-antialias-subpixel-rgb.traps.rgb24.ref.png | Bin 1013 -> 0 bytes - .../text-antialias-subpixel-vbgr.traps.argb32.ref.png | Bin 985 -> 0 bytes - .../text-antialias-subpixel-vbgr.traps.rgb24.ref.png | Bin 985 -> 0 bytes - .../text-antialias-subpixel-vrgb.traps.argb32.ref.png | Bin 1009 -> 0 bytes - .../text-antialias-subpixel-vrgb.traps.rgb24.ref.png | Bin 1009 -> 0 bytes - .../text-antialias-subpixel.traps.argb32.ref.png | Bin 1013 -> 0 bytes - .../text-antialias-subpixel.traps.rgb24.ref.png | Bin 1013 -> 0 bytes - test/reference/text-glyph-range.mask.argb32.ref.png | Bin 1928 -> 0 bytes - test/reference/text-glyph-range.mask.rgb24.ref.png | Bin 1928 -> 0 bytes - test/reference/text-glyph-range.traps.argb32.ref.png | Bin 1979 -> 0 bytes - test/reference/text-glyph-range.traps.rgb24.ref.png | Bin 1979 -> 0 bytes - test/reference/text-pattern.mask.argb32.ref.png | Bin 3455 -> 0 bytes - test/reference/text-pattern.mask.rgb24.ref.png | Bin 2684 -> 0 bytes - test/reference/text-rotate.traps.argb32.ref.png | Bin 16597 -> 0 bytes - test/reference/text-rotate.traps.rgb24.ref.png | Bin 16597 -> 0 bytes - test/reference/text-transform.argb32.ref.png | Bin 5579 -> 0 bytes - test/reference/text-transform.mask.argb32.ref.png | Bin 5579 -> 0 bytes - test/reference/text-transform.mask.rgb24.ref.png | Bin 5579 -> 0 bytes - test/reference/text-transform.rgb24.ref.png | Bin 5579 -> 0 bytes - test/reference/text-transform.traps.argb32.ref.png | Bin 5579 -> 0 bytes - test/reference/text-transform.traps.rgb24.ref.png | Bin 5579 -> 0 bytes - test/reference/tiger.mask.argb32.ref.png | Bin 93916 -> 0 bytes - test/reference/tiger.mask.rgb24.ref.png | Bin 93916 -> 0 bytes - test/reference/transforms.mask.argb32.ref.png | Bin 348 -> 0 bytes - test/reference/transforms.mask.rgb24.ref.png | Bin 348 -> 0 bytes - test/reference/translate-show-surface.argb32.ref.png | Bin 96 -> 0 bytes - .../translate-show-surface.mask.argb32.ref.png | Bin 96 -> 0 bytes - .../translate-show-surface.mask.rgb24.ref.png | Bin 96 -> 0 bytes - test/reference/translate-show-surface.rgb24.ref.png | Bin 96 -> 0 bytes - .../translate-show-surface.traps.argb32.ref.png | Bin 96 -> 0 bytes - .../translate-show-surface.traps.rgb24.ref.png | Bin 96 -> 0 bytes - .../reference/twin-antialias-mixed.mask.argb32.ref.png | Bin 2230 -> 0 bytes - test/reference/twin-antialias-mixed.mask.rgb24.ref.png | Bin 2230 -> 0 bytes - test/reference/twin-antialias-none.mask.argb32.ref.png | Bin 690 -> 0 bytes - test/reference/twin-antialias-none.mask.rgb24.ref.png | Bin 690 -> 0 bytes - test/reference/unaligned-box.argb32.ref.png | Bin 496 -> 0 bytes - test/reference/unaligned-box.mask.argb32.ref.png | Bin 496 -> 0 bytes - test/reference/unaligned-box.mask.rgb24.ref.png | Bin 496 -> 0 bytes - test/reference/unaligned-box.rgb24.ref.png | Bin 496 -> 0 bytes - test/reference/unantialiased-shapes.argb32.ref.png | Bin 3926 -> 0 bytes - .../reference/unantialiased-shapes.mask.argb32.ref.png | Bin 3926 -> 0 bytes - test/reference/unantialiased-shapes.mask.rgb24.ref.png | Bin 3926 -> 0 bytes - test/reference/unantialiased-shapes.rgb24.ref.png | Bin 3926 -> 0 bytes - test/reference/unclosed-strokes.mask.argb32.ref.png | Bin 1901 -> 0 bytes - test/reference/unclosed-strokes.mask.rgb24.ref.png | Bin 1901 -> 0 bytes - test/reference/user-font-mask.argb32.ref.png | Bin 5476 -> 0 bytes - test/reference/user-font-mask.mask.argb32.ref.png | Bin 5476 -> 0 bytes - test/reference/user-font-mask.mask.rgb24.ref.png | Bin 5476 -> 0 bytes - test/reference/user-font-mask.rgb24.ref.png | Bin 5476 -> 0 bytes - test/reference/user-font-mask.traps.argb32.ref.png | Bin 5476 -> 0 bytes - test/reference/user-font-mask.traps.rgb24.ref.png | Bin 5476 -> 0 bytes - test/reference/user-font-proxy.mask.argb32.ref.png | Bin 16941 -> 0 bytes - test/reference/user-font-proxy.mask.rgb24.ref.png | Bin 16941 -> 0 bytes - test/reference/user-font-proxy.traps.argb32.ref.png | Bin 16854 -> 0 bytes - test/reference/user-font-proxy.traps.rgb24.ref.png | Bin 16854 -> 0 bytes - test/reference/user-font-rescale.mask.argb32.ref.png | Bin 14883 -> 0 bytes - test/reference/user-font-rescale.mask.rgb24.ref.png | Bin 14883 -> 0 bytes - test/reference/user-font-rescale.traps.argb32.ref.png | Bin 14883 -> 0 bytes - test/reference/user-font-rescale.traps.rgb24.ref.png | Bin 14883 -> 0 bytes - test/reference/white-in-noop.argb32.ref.png | Bin 95 -> 0 bytes - test/reference/white-in-noop.mask.argb32.ref.png | Bin 95 -> 0 bytes - test/reference/white-in-noop.mask.rgb24.ref.png | Bin 95 -> 0 bytes - test/reference/white-in-noop.rgb24.ref.png | Bin 95 -> 0 bytes - test/reference/white-in-noop.traps.argb32.ref.png | Bin 95 -> 0 bytes - test/reference/white-in-noop.traps.rgb24.ref.png | Bin 95 -> 0 bytes - test/reference/world-map-fill.mask.argb32.ref.png | Bin 57308 -> 0 bytes - test/reference/world-map-fill.mask.rgb24.ref.png | Bin 57308 -> 0 bytes - test/reference/xcb-huge-image-shm.argb32.ref.png | Bin 97 -> 0 bytes - test/reference/xcb-huge-image-shm.mask.argb32.ref.png | Bin 97 -> 0 bytes - test/reference/xcb-huge-image-shm.mask.rgb24.ref.png | Bin 97 -> 0 bytes - test/reference/xcb-huge-image-shm.rgb24.ref.png | Bin 97 -> 0 bytes - test/reference/xcb-huge-image-shm.traps.argb32.ref.png | Bin 97 -> 0 bytes - test/reference/xcb-huge-image-shm.traps.rgb24.ref.png | Bin 97 -> 0 bytes - .../xcb-huge-image-shm.xlib-fallback.rgb24.ref.png | Bin 97 -> 0 bytes - .../xcb-huge-image-shm.xlib-window.rgb24.ref.png | Bin 97 -> 0 bytes - test/reference/xcb-snapshot-assert.argb32.ref.png | Bin 97 -> 0 bytes - test/reference/xcb-snapshot-assert.mask.argb32.ref.png | Bin 97 -> 0 bytes - test/reference/xcb-snapshot-assert.mask.rgb24.ref.png | Bin 97 -> 0 bytes - test/reference/xcb-snapshot-assert.rgb24.ref.png | Bin 97 -> 0 bytes - .../reference/xcb-snapshot-assert.traps.argb32.ref.png | Bin 97 -> 0 bytes - test/reference/xcb-snapshot-assert.traps.rgb24.ref.png | Bin 97 -> 0 bytes - test/reference/xcb-stress-cache.argb32.ref.png | Bin 97 -> 0 bytes - test/reference/xcb-stress-cache.mask.argb32.ref.png | Bin 97 -> 0 bytes - test/reference/xcb-stress-cache.mask.rgb24.ref.png | Bin 97 -> 0 bytes - test/reference/xcb-stress-cache.rgb24.ref.png | Bin 97 -> 0 bytes - test/reference/xcb-stress-cache.traps.argb32.ref.png | Bin 97 -> 0 bytes - test/reference/xcb-stress-cache.traps.rgb24.ref.png | Bin 97 -> 0 bytes - test/reference/xcb-surface-source.mask.argb32.ref.png | Bin 377 -> 0 bytes - test/reference/xcb-surface-source.mask.rgb24.ref.png | Bin 301 -> 0 bytes - test/reference/xcb-surface-source.traps.argb32.ref.png | Bin 377 -> 0 bytes - test/reference/xcb-surface-source.traps.rgb24.ref.png | Bin 301 -> 0 bytes - test/reference/xcomposite-projection.argb32.ref.png | Bin 1108 -> 0 bytes - test/reference/xcomposite-projection.rgb24.ref.png | Bin 1108 -> 0 bytes - test/reference/xlib-expose-event.argb32.ref.png | Bin 40717 -> 0 bytes - test/reference/xlib-expose-event.mask.argb32.ref.png | Bin 40717 -> 0 bytes - test/reference/xlib-expose-event.mask.rgb24.ref.png | Bin 40717 -> 0 bytes - test/reference/xlib-expose-event.rgb24.ref.png | Bin 40717 -> 0 bytes - test/reference/xlib-expose-event.traps.argb32.ref.png | Bin 40717 -> 0 bytes - test/reference/xlib-expose-event.traps.rgb24.ref.png | Bin 40717 -> 0 bytes - test/reference/xlib-surface-source.mask.argb32.ref.png | Bin 377 -> 0 bytes - test/reference/xlib-surface-source.mask.rgb24.ref.png | Bin 301 -> 0 bytes - .../reference/xlib-surface-source.traps.argb32.ref.png | Bin 377 -> 0 bytes - test/reference/xlib-surface-source.traps.rgb24.ref.png | Bin 301 -> 0 bytes - test/reference/zero-alpha.argb32.ref.png | Bin 91 -> 0 bytes - test/reference/zero-alpha.mask.argb32.ref.png | Bin 91 -> 0 bytes - test/reference/zero-alpha.mask.rgb24.ref.png | Bin 91 -> 0 bytes - test/reference/zero-alpha.rgb24.ref.png | Bin 91 -> 0 bytes - test/reference/zero-alpha.traps.argb32.ref.png | Bin 91 -> 0 bytes - test/reference/zero-alpha.traps.rgb24.ref.png | Bin 91 -> 0 bytes - test/reference/zero-mask.argb32.ref.png | Bin 402 -> 0 bytes - test/reference/zero-mask.mask.argb32.ref.png | Bin 402 -> 0 bytes - test/reference/zero-mask.mask.rgb24.ref.png | Bin 382 -> 0 bytes - test/reference/zero-mask.traps.argb32.ref.png | Bin 402 -> 0 bytes - test/reference/zero-mask.traps.rgb24.ref.png | Bin 382 -> 0 bytes - 1477 files changed, 0 insertions(+), 0 deletions(-) - -commit 33895904d52f47d0d89156ca1e1ff7cc8f5887d2 -Author: Bryce W. Harrington -AuthorDate: Wed Jul 3 22:37:41 2013 +0000 -Commit: Chris Wilson -CommitDate: Thu Jul 4 09:27:56 2013 +0100 - - test: Add special cases for create-from-png and fallback-resolution - - These tests use reference images somewhat differently from other tests, - so treat them as special cases and avoid recommending deleting any of - their files. - - Add TODO's to each test to rework them to be more consistent with other - tests. - - Signed-off-by: Bryce Harrington - - test/check-refs.sh | 10 ++++++++++ - test/create-from-png.c | 5 +++++ - test/fallback-resolution.c | 1 + - 3 files changed, 16 insertions(+) - -commit 5577223489dc3f6e282c498d70f66f8ee9327474 -Author: Bryce W. Harrington -AuthorDate: Wed Jul 3 22:37:00 2013 +0000 -Commit: Chris Wilson -CommitDate: Thu Jul 4 09:27:56 2013 +0100 - - pdiff: Drop unused variable - - Fixes: - perceptualdiff.c:35:24: warning: unused variable ‘dim’ - [-Wunused-variable] - - Signed-off-by: Bryce Harrington - Signed-off-by: Bryce Harrington - - test/pdiff/perceptualdiff.c | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -commit 319b8935826c8726b8c23f1c746a82b261b8cde1 -Author: Bryce W. Harrington -AuthorDate: Wed Jul 3 22:36:28 2013 +0000 -Commit: Chris Wilson -CommitDate: Thu Jul 4 09:27:55 2013 +0100 - - pdiff: Quell warning about signed/unsigned comparisons - - perceptualdiff.c:55:19: warning: comparison between signed and unsigned - integer expressions [-Wsign-compare] - perceptualdiff.c:60:16: warning: comparison between signed and unsigned - integer expressions [-Wsign-compare] - - Signed-off-by: Bryce Harrington - - test/pdiff/perceptualdiff.c | 4 ++-- - 1 file changed, 2 insertions(+), 2 deletions(-) - -commit 9e4cac50c25cec0476413a991d98c897fce0aceb -Author: Bryce W. Harrington -AuthorDate: Wed Jul 3 22:35:47 2013 +0000 -Commit: Chris Wilson -CommitDate: Thu Jul 4 09:27:55 2013 +0100 - - test: Make check-ref-dups utilize perceptualdiff for comparisons - - The current sha1sum-based file checker does a blanket comparison of all - files with each other, which is fast but not directly helpful since it - doesn't distinguish between sibling files (which are allowable to be - duplicates). Also, it ignores files that may have byte differences - (such as PNG header differences) but are otherwise pixel-identical. - - This patch replaces the sha1sum-based checker with one that accounts for - the default fallback path and uses perceptualdiff to compare files that - are bytewise different and verify whether they actually are different. - - The intention is that the output of this command can be directly used to - remove redundant files, e.g.: - - cd test - make check-ref-dups | cut -d' ' -f2 | \ - while read f; do git rm "reference/$f"; done - - This should have no impact on make check's results (modulo any tests - that behave erratically), and will help trim down the size of the - tarball. - - Signed-off-by: Bryce Harrington - [ickle: rebase and add the suggested command to the Makefile] - - test/Makefile.am | 13 +++++++++---- - 1 file changed, 9 insertions(+), 4 deletions(-) - -commit 8d3c518e9db39b670fe89c4bf097871e1cf16955 -Author: Bryce W. Harrington -AuthorDate: Wed Jul 3 22:35:08 2013 +0000 -Commit: Chris Wilson -CommitDate: Thu Jul 4 09:04:17 2013 +0100 - - test: Use cmp to catch byte-by-byte identical files - - cmp runs faster than perceptualdiff, and catches files that are exact - copies of the reference image. We still use perceptualdiff for catching - files that aren't bytewise identical, but are still identical at the - pixel level. - - Signed-off-by: Bryce Harrington - - test/check-refs.sh | 20 ++++++++++++-------- - 1 file changed, 12 insertions(+), 8 deletions(-) - -commit b0be0d8d42b5b6ba80e59a869a8f72fd8556e91e -Author: Bryce W. Harrington -AuthorDate: Wed Jul 3 22:33:57 2013 +0000 -Commit: Chris Wilson -CommitDate: Thu Jul 4 09:04:05 2013 +0100 - - test: Add script to check for redundant reference images - - This script requires the perceptualdiff program, which can be built as - follows: - - cd test/pdiff && make perceptualdiff - - The script's output provides a list of target-specific or - format-specific images that are identical to their more generic - reference files, and thus are redundant and can be safely removed from - the archive without altering any test behaviors. - - Signed-off-by: Bryce Harrington - [ickle: applied Behdad's suggestion of renaming the script check-refs.sh] - - test/Makefile.am | 1 + - test/check-refs.sh | 60 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ - 2 files changed, 61 insertions(+) - -commit 7f1be42e85589ee07dacead012234c1a1eb1b395 -Author: Bryce W. Harrington -AuthorDate: Wed Jul 3 22:32:34 2013 +0000 -Commit: Chris Wilson -CommitDate: Thu Jul 4 08:57:45 2013 +0100 - - test: Fix make check-ref-dups due to move of ref images to reference/ - - The check-ref-dups target in Makefile.am was not updated with the new - path when the reference images were moved from test/ to - test/reference/. Now it produces output properly again. - - Signed-off-by: Bryce Harrington - - test/Makefile.am | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -commit 7b8fc77bb974fbd4fbc697405a8b6aec748bb7f2 -Author: Eric Anholt -AuthorDate: Mon Jun 24 23:28:47 2013 -0700 -Commit: Chris Wilson -CommitDate: Fri Jun 28 11:53:04 2013 +0100 - - gl: Move glGetUniformLocation to shader compile time. - - The lookup of the string names has significant overhead, which is why GL - gives you glGetUniformLocation so that you reference uniforms by - constant integers in your high performance path. - - Reduces cairo-perf-trace runtime of firefox-planet-gnome by 1.06767% +/- - 0.289265% (n=72) on my IVB macbook air. - - Signed-off-by: Eric Anholt - Reviewed-by: Chris Wilson - - src/cairo-gl-composite.c | 2 +- - src/cairo-gl-operand.c | 30 ++++++++-------------- - src/cairo-gl-private.h | 19 +++++++++----- - src/cairo-gl-shaders.c | 67 +++++++++++++++++++++++++++++++++--------------- - 4 files changed, 70 insertions(+), 48 deletions(-) - -commit 4d9439132de85c0f0f4d5b5a474ea7164910251e -Author: Chris Wilson -AuthorDate: Fri Jun 21 20:18:40 2013 +0100 -Commit: Chris Wilson -CommitDate: Fri Jun 21 20:18:40 2013 +0100 - - check: Fix check-def.sh for variations in GCC's linker - - We now need to exclude bss and data sections from the symbol list. - - Signed-off-by: Chris Wilson - - src/check-def.sh | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -commit 7b80613d6d483cdfd5d0c6311de0f8586092b408 -Author: Chris Wilson -AuthorDate: Fri Jun 21 17:30:47 2013 +0100 -Commit: Chris Wilson -CommitDate: Fri Jun 21 17:30:47 2013 +0100 - - test: Use the highest precision rendering for shapes for generating ref results - - The test-traps and test-base surfaces are used for generating the - reference results, and so they should opt for using the best rendering - paths through the traps- and base-compositors. - - Signed-off-by: Chris Wilson - - src/test-compositor-surface.c | 4 ++++ - 1 file changed, 4 insertions(+) - -commit 686ebd4a893d2e583d0cf11bd9f77681dbf0b21c -Author: Chris Wilson -AuthorDate: Fri Jun 21 16:58:38 2013 +0100 -Commit: Chris Wilson -CommitDate: Fri Jun 21 16:59:25 2013 +0100 - - cairo-perf-print: Do not free the uninitialised histogram - - Signed-off-by: Chris Wilson - - perf/cairo-perf-print.c | 3 ++- - 1 file changed, 2 insertions(+), 1 deletion(-) - -commit 5589e80e2bd6b82e5730cbf6b72aaf82a66b31c0 -Author: Chris Wilson -AuthorDate: Fri Jun 21 12:01:32 2013 +0100 -Commit: Chris Wilson -CommitDate: Fri Jun 21 12:01:32 2013 +0100 - - xml: Handle clip-boxes in the updated cairo_clip_t - - Edward Zimmerman pointed out that the xml surface had bitrotted slightly - and no longer understand the new clip layout - in particular that we can - have clips without a path, but just with boxes instead. - - Signed-off-by: Chris Wilson - - src/cairo-xml-surface.c | 77 +++++++++++++++++++++++++++++++++++++++++++++---- - 1 file changed, 72 insertions(+), 5 deletions(-) - -commit 2bfb9e9001bceaedffb2303c062af8e42045931e -Author: Chris Wilson -AuthorDate: Thu Jun 20 20:47:18 2013 +0100 -Commit: Chris Wilson -CommitDate: Thu Jun 20 20:47:18 2013 +0100 - - svg: Unwrap recording surfaces - - As a first step towards bring SVG uptodate with the various new - patterns, first we need to prevent SVG crashing when it mishandles an - unknown recording surface. - - Signed-off-by: Chris Wilson - - src/cairo-svg-surface.c | 16 ++++++++++++++-- - 1 file changed, 14 insertions(+), 2 deletions(-) - -commit b7331f0c52cc64f2c224eac502afa6c50a1a8d8b -Author: Chris Wilson -AuthorDate: Thu Jun 20 14:23:15 2013 +0100 -Commit: Chris Wilson -CommitDate: Thu Jun 20 14:26:21 2013 +0100 - - gstate: Speed up stroked path extents - - We can skip the intermediate evaluation of the trapezoids for - determining the extents of a stroked path by using the relatively new - functions for computing the contours of the stroke. Then we can simply - use the bbox of the points within the contours to retrieve the path - extents - which is already provided by the polygon holding the contours - of the stroke. This provides a faster result with less numerical - inaccuracy due to fewer stages required in the computation - - References: https://bugs.freedesktop.org/show_bug.cgi?id=62375 - Signed-off-by: Chris Wilson - - src/cairo-gstate.c | 24 ++++++++++++------------ - 1 file changed, 12 insertions(+), 12 deletions(-) - -commit 9ea5993b036f5930179263baaf3162eeebb7c153 -Author: Chris Wilson -AuthorDate: Thu Jun 20 14:11:38 2013 +0100 -Commit: Chris Wilson -CommitDate: Thu Jun 20 14:11:38 2013 +0100 - - test/get-path-extents: Check exact matches within tolerance - - When we refine geometry, we do so to a tolerance as specified by the - user. This means that we can not expect tessellated results to have - exact results, but always they should match within the specified - tolerance. - - Signed-off-by: Chris Wilson - - test/get-path-extents.c | 30 +++++++++++++++++++++--------- - 1 file changed, 21 insertions(+), 9 deletions(-) - -commit e079e4e2297810ceb10798cf310a7fafe39b18f0 -Author: Chris Wilson -AuthorDate: Thu Jun 20 14:02:14 2013 +0100 -Commit: Chris Wilson -CommitDate: Thu Jun 20 14:02:14 2013 +0100 - - image: Mark the data as owned after stealing the snapshot's image - - Victor Goya found that we ended up leaking memory after reading a PNG - into an image surface and drawing that onto a PDF surface. In - particular, he discovered that - - commit 0bfd2acd35547fc2bd0de99cc67d153f0170697d - Author: Chris Wilson - Date: Mon Aug 13 01:34:12 2012 +0100 - - xlib: Implement SHM fallbacks and fast upload paths - - introduced a path to steal the image data for a snapshot (and thereby - avoid a redundant copy), but that path then lead to the leak of the - "owned" data. - - Reported-by: Victor Goya - Signed-off-by: Chris Wilson - - src/cairo-image-surface.c | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -commit f39eef852491c10dec4089f9fb3d332a712da28c -Author: Chris Wilson -AuthorDate: Thu Jun 20 11:11:20 2013 +0100 -Commit: Chris Wilson -CommitDate: Thu Jun 20 11:11:20 2013 +0100 - - pdf: Fix compiler warning for use of unitialised variable along error path - - cairo-pdf-surface.c: In function '_cairo_pdf_surface_add_source_surface.isra.20': - cairo-pdf-surface.c:1461:10: warning: 'unique_id' may be used uninitialized in this function [-Wmaybe-uninitialized] - - Signed-off-by: Chris Wilson - - src/cairo-pdf-surface.c | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -commit 80641f4adc3e2ca16e67110e7b82f42e88efd93e -Author: Chris Wilson -AuthorDate: Thu Jun 20 11:09:53 2013 +0100 -Commit: Chris Wilson -CommitDate: Thu Jun 20 11:09:53 2013 +0100 - - pdf: Improve consistency in use of cairo_int_status_t - - Suppress several compiler warning for mixing - cairo_status_t/cairo_int_status_t enums. - - Signed-off-by: Chris Wilson - - src/cairo-pdf-operators-private.h | 7 +- - src/cairo-pdf-surface.c | 256 ++++++++++++++++---------------- - src/cairo-ps-surface.c | 2 +- - src/cairo-type3-glyph-surface-private.h | 5 +- - 4 files changed, 136 insertions(+), 134 deletions(-) - -commit d4545910e2836eb6fc7dc2ed787b02aea514cb0b -Author: Bryce W. Harrington -AuthorDate: Thu Jun 20 03:16:01 2013 +0000 -Commit: Chris Wilson -CommitDate: Thu Jun 20 11:00:59 2013 +0100 - - test: Note naming scheme for XFAIL images in README - - Signed-off-by: Bryce Harrington - - test/README | 5 +++-- - 1 file changed, 3 insertions(+), 2 deletions(-) - -commit 982f288460591a8f2b8a78db89ae6e5495d2b3b8 -Author: Bryce W. Harrington -AuthorDate: Thu Jun 20 03:16:29 2013 +0000 -Commit: Chris Wilson -CommitDate: Thu Jun 20 11:00:37 2013 +0100 - - gl: Quell warning about incompatible pointer type - - mask is a cairo_surface_t pointer, and is cast to a cairo_gl_surface_t - pointer in the _cairo_gl_surface_draw_image() call. - texture.owns_surface also expects mask to be a cairo_gl_surface_t - pointer, so apply the same cast here as well. - - Fixes the following warning: - - cairo-gl-traps-compositor.c:370:35: warning: assignment from - incompatible pointer type [enabled by default] - - Ref.: 38bf7a65 - - Signed-off-by: Bryce Harrington - - src/cairo-gl-traps-compositor.c | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -commit aa764a3bbc3fe43191d877aaec42b73c7d55d040 -Author: Bryce W. Harrington -AuthorDate: Thu Jun 20 03:17:38 2013 +0000 -Commit: Chris Wilson -CommitDate: Thu Jun 20 11:00:23 2013 +0100 - - pdf: Assure compiler that data, data_size will always be initialized - - There are only three possible color states: COLOR, GRAYSCALE, or - MONOCHROME thus data and data_size will always be set to some value, - so assert the default is never reached. - - Fixes these warning: - cairo-pdf-surface.c:2517:32: warning: ‘data_size’ may be used - uninitialized in this function [-Wuninitialized] - cairo-pdf-surface.c:2338:19: note: ‘data_size’ was declared here - cairo-pdf-surface.c:2446:11: warning: ‘data’ may be used uninitialized - in this function [-Wuninitialized] - cairo-pdf-surface.c:2337:11: note: ‘data’ was declared here - - Signed-off-by: Bryce Harrington - - src/cairo-pdf-surface.c | 4 +++- - 1 file changed, 3 insertions(+), 1 deletion(-) - -commit 27cb80b84834f7262d70cd1f95dd6e940059f75a -Author: Bryce W. Harrington -AuthorDate: Thu Jun 20 03:18:11 2013 +0000 -Commit: Chris Wilson -CommitDate: Thu Jun 20 10:58:52 2013 +0100 - - type1-subset: Fix typos in function comment - - Signed-off-by: Bryce Harrington - - src/cairo-type1-subset.c | 14 +++++++------- - 1 file changed, 7 insertions(+), 7 deletions(-) - -commit f893acd60df816f3e0282affef6b58f59f84f48a -Author: Bryce W. Harrington -AuthorDate: Thu Jun 20 03:18:45 2013 +0000 -Commit: Chris Wilson -CommitDate: Thu Jun 20 10:57:57 2013 +0100 - - type1-subset: Quell warning about uninitialized array_start - - Since we explicitly set font->subset_subrs to false, there's no way the - warned code will be executed, but perhaps the compiler is confused by - the goto jump. - - Signed-off-by: Bryce Harrington - - src/cairo-type1-subset.c | 1 + - 1 file changed, 1 insertion(+) - -commit 519dff51db30e157f52ef5244a3afeea06340ff8 -Author: Chris Wilson -AuthorDate: Tue Jun 18 16:06:28 2013 +0100 -Commit: Chris Wilson -CommitDate: Tue Jun 18 16:08:27 2013 +0100 - - scaled-font: Prevent a recursive mutex lock for removing a failed glyph - - If we fail to create a glyph, and it is the only one in the glyph page, - we then pluck that page out of the global glyph cache. The cache destroy - callback tries to take the scaled_font lock again, causing a lockup. - Rework the error path to avoid taking that lock in this case - still a - potential lock ordering issue remains. - - Signed-off-by: Chris Wilson - - src/cairo-scaled-font.c | 4 ++++ - 1 file changed, 4 insertions(+) - -commit df1ca22ada340add2360677ff892ec043dad96f4 -Author: Chris Wilson -AuthorDate: Tue Jun 18 15:46:28 2013 +0100 -Commit: Chris Wilson -CommitDate: Tue Jun 18 15:48:26 2013 +0100 - - recording: Prevent invalid memory access with zero length command array - - If we try to sort a zero length array, we access invalid memory. - However, for a zero length command array, we can trivially compute the - number of visible indices, 0. - - Signed-off-by: Chris Wilson - - src/cairo-recording-surface.c | 3 +++ - 1 file changed, 3 insertions(+) - -commit c51b850bd836c2bec0a1bcc7b32136dc21bc2360 -Author: Chris Wilson -AuthorDate: Tue Jun 11 14:11:45 2013 +0100 -Commit: Chris Wilson -CommitDate: Tue Jun 11 14:11:45 2013 +0100 - - perf: Remove a debug artifact - - Remove the intentional #error for non-UNIX path used to remind me to fix - up configure.ac. - - Signed-off-by: Chris Wilson - - perf/cairo-perf-print.c | 1 - - 1 file changed, 1 deletion(-) - -commit 2c097e6e6b8375b7d488572cdb09b80dca06d42a -Author: Chris Wilson -AuthorDate: Tue Jun 11 11:57:04 2013 +0100 -Commit: Chris Wilson -CommitDate: Tue Jun 11 11:57:04 2013 +0100 - - perf: Avoid vertically stretching the histogram - - If we have more rows than the max_count in any column, we end up - stretching the histogram vertically, which makes it harder to read. - - Signed-off-by: Chris Wilson - - perf/cairo-stats.c | 9 ++++++--- - 1 file changed, 6 insertions(+), 3 deletions(-) - -commit b9f0ef4496eca31b47296543f48078b2a7034750 -Author: Chris Wilson -AuthorDate: Tue Jun 11 11:47:24 2013 +0100 -Commit: Chris Wilson -CommitDate: Tue Jun 11 11:47:24 2013 +0100 - - perf: Rescale the histogram for the terminal - - If running ./cairo-perf-print in a terminal, query the terminal size and - rescale the histogram to use the maximum available space. - - Signed-off-by: Chris Wilson - - configure.ac | 2 ++ - perf/cairo-perf-print.c | 37 +++++++++++++++++++++++++++++++++++-- - 2 files changed, 37 insertions(+), 2 deletions(-) - -commit 9a12c2e02369f0920c1f1f578eb8d228add77ea1 -Author: Chris Wilson -AuthorDate: Tue Jun 11 11:05:03 2013 +0100 -Commit: Chris Wilson -CommitDate: Tue Jun 11 11:30:43 2013 +0100 - - perf: Rudimentary histogram printing for cairo-perf-print - - If you call ./cairo-perf-print --histogram results.txt, it will then - print a histogram of the results, one per test. Ideally, you should see - a skewed distribution (with a negative skew representing that most results - run in optimal time), but random sampling errors (scheduling, - throttling, general inefficiency etc) will push it more towards a normal - distribution. - - For example, - | x | - | x xx | - | x xx | - | x xx | - | xxxx | - | xxxx x | - | x xxxxxx | - | x xxxxxx | - | xxxxxxxxx | - | xxxxxxxxx | - | xxxxxxxxx | - | xxxxxxxxxxxx | - | xxxxxxxxxxxx | - | xxxxxxxxxxxx | - | xxxxxxxxxxxxxx | - |x xxxxxxxxxxxxxx | - |x x xxxxxxxxxxxxxxx | - |x x xxxxxxxxxxxxxxx | - |x x xxxxxxxxxxxxxxxxx | - |xxx x xxxxxxxxxxxxxxxxxxx | - |xxx xxxxxxxxxxxxxxxxxxxxxxxxx | - |xxxxxx xxxx x x x x xxx xx xxxxx xxx x xxx x xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx| - .------------------------------------------------------------------------------. - xlib firefox-fishtank 8298.44 1.53% (829/946) - - Starts off reasonably, but quickly deteriorates as the integrated CPU/GPU - overheats and is forced to throttle. - - Signed-off-by: Chris Wilson - - perf/cairo-perf-print.c | 65 +++++++++++++++++++++++++++++---------- - perf/cairo-perf-report.c | 2 +- - perf/cairo-perf.h | 9 ++++++ - perf/cairo-stats.c | 80 ++++++++++++++++++++++++++++++++++++++++++++++++ - perf/cairo-stats.h | 16 ++++++++++ - 5 files changed, 155 insertions(+), 17 deletions(-) - -commit e519d6f9860c7f0bc51f1e8a17505f2dc372c938 -Author: Chris Wilson -AuthorDate: Tue Jun 11 10:00:56 2013 +0100 -Commit: Chris Wilson -CommitDate: Tue Jun 11 10:02:13 2013 +0100 - - recording: Fix inconsistent usage of types for indices - - We were wantonly mixing unsigned/signed integers for our index and - counters, leading to compiler warnings. Be bold, and use unsigned - consistently. - - Signed-off-by: Chris Wilson - - src/cairo-recording-surface-private.h | 4 ++-- - src/cairo-recording-surface.c | 18 +++++++++--------- - 2 files changed, 11 insertions(+), 11 deletions(-) - -commit b45c79ff8a8e7c5cf4af1498d854a85c818d9268 -Author: Bryce W. Harrington -AuthorDate: Mon Jun 10 19:01:09 2013 +0000 -Commit: Chris Wilson -CommitDate: Tue Jun 11 10:02:13 2013 +0100 - - image: Quell warning about signed/unsigned int comparison. - - Restore (int) cast that was dropped in e7e1ac23. - - Signed-off-by: Bryce Harrington - - src/cairo-image-compositor.c | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -commit 5271f3199107f50f65608f3816c840da7445fb55 -Author: Bryce W. Harrington -AuthorDate: Sat Jun 8 01:42:20 2013 +0000 -Commit: Chris Wilson -CommitDate: Sat Jun 8 07:52:18 2013 +0100 - - test: Fix typo in sample_horizontal to use horizontal, not vertical. - - Triggers the following warning during build: - - sample.c:61:1: warning: ‘horizontal’ defined but not used - [-Wunused-function] - - Signed-off-by: Bryce Harrington - - test/sample.c | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -commit 17dc312221c294b120bd159e01f5f566c6ec4a2d -Author: Chris Wilson -AuthorDate: Wed Jun 5 22:34:52 2013 +0100 -Commit: Chris Wilson -CommitDate: Wed Jun 5 22:34:52 2013 +0100 - - trace: Improve operand emission - - In particular fixing up a couple of corner cases in emitting the right - instructions for scaled-fonts and patterns. - - Signed-off-by: Chris Wilson - - util/cairo-trace/trace.c | 147 ++++++++++++++++++++++++++++------------------- - 1 file changed, 87 insertions(+), 60 deletions(-) - -commit e34b800214c78ec3d92de505d173fc617cf6220f -Author: Chris Wilson -AuthorDate: Tue Jun 4 11:47:07 2013 +0100 -Commit: Chris Wilson -CommitDate: Tue Jun 4 11:52:30 2013 +0100 - - test: Extend testing of joins for fine lines - - test/caps-joins.c | 55 ++++++++++++++++++++++++++--- - test/reference/caps-joins-05.ref.png | Bin 0 -> 2169 bytes - test/reference/caps-joins-05.traps.ref.png | Bin 0 -> 1714 bytes - test/reference/caps-joins-1.ref.png | Bin 0 -> 2105 bytes - test/reference/caps-joins-1.traps.ref.png | Bin 0 -> 1861 bytes - test/reference/caps-joins-2.ref.png | Bin 0 -> 2046 bytes - test/reference/caps-joins-2.traps.ref.png | Bin 0 -> 1631 bytes - 7 files changed, 51 insertions(+), 4 deletions(-) - -commit a2d852497364afa742518ac0d9feb0466dccc191 -Author: Chris Wilson -AuthorDate: Tue Jun 4 11:34:31 2013 +0100 -Commit: Chris Wilson -CommitDate: Tue Jun 4 11:52:26 2013 +0100 - - test: Expand testing of caps for fine strokes - - test/caps.c | 57 +++++++++++++++++++++++++++++++++-- - test/reference/caps-05.ref.png | Bin 0 -> 1375 bytes - test/reference/caps-05.traps.ref.png | Bin 0 -> 1126 bytes - test/reference/caps-1.ref.png | Bin 0 -> 1457 bytes - test/reference/caps-1.traps.ref.png | Bin 0 -> 1268 bytes - test/reference/caps-2.ref.png | Bin 0 -> 1509 bytes - test/reference/caps-2.traps.ref.png | Bin 0 -> 1231 bytes - 7 files changed, 54 insertions(+), 3 deletions(-) - -commit 85c2a0d76ab109f2bec8f7dccab577033e6d37b0 -Author: Chris Wilson -AuthorDate: Mon Jun 3 13:56:00 2013 +0100 -Commit: Chris Wilson -CommitDate: Mon Jun 3 13:56:00 2013 +0100 - - xlib: Unlike the visual when destroying it - - Otherwise we leave dangling pointers in the visual list, leading to - memory corruption when using low bitdepth servers. - - Signed-off-by: Chris Wilson - - src/cairo-list-inline.h | 8 +++++++- - src/cairo-xlib-visual.c | 3 +++ - 2 files changed, 10 insertions(+), 1 deletion(-) - -commit 41bef0fc385381b8c6b9091ec7ca2abe04cfc147 -Author: Chris Wilson -AuthorDate: Thu May 30 20:57:04 2013 +0100 -Commit: Chris Wilson -CommitDate: Thu May 30 21:05:23 2013 +0100 - - traps: Ensure that we correctly clip when using multiple clip boxes - - We need to be more careful when trying to discard a clip to be sure that - it is truly not required. In particular, we need to not throw a way a - clip region when it has more than one box intersecting the mask. - - Reported-by: Alexander Larsson - Bugzilla: https://bugzilla.gnome.org/show_bug.cgi?id=697357 - Signed-off-by: Chris Wilson - - src/cairo-composite-rectangles.c | 7 +++++++ - src/cairo-traps-compositor.c | 32 ++++++++++++++------------------ - 2 files changed, 21 insertions(+), 18 deletions(-) - -commit 631bf299256e11a17511977f357e0353fb5615f7 -Author: Chris Wilson -AuthorDate: Sat May 11 21:37:05 2013 +0100 -Commit: Chris Wilson -CommitDate: Tue May 14 11:36:27 2013 +0100 - - directfb: Correctly chain up map-to-image/unmap to the image backend - - Fixes the infinite recursion reported by jojo. - - Signed-off-by: Chris Wilson - - src/cairo-directfb-surface.c | 4 ++-- - 1 file changed, 2 insertions(+), 2 deletions(-) - -commit 728e58e60f89076f626329ee3f006f011783f90b -Author: Martin Robinson -AuthorDate: Thu May 9 10:45:44 2013 -0700 -Commit: Martin Robinson -CommitDate: Mon May 13 15:24:55 2013 -0700 - - gles: Switch default framebuffer destinations properly - - Make _cairo_gl_context_bind_framebuffer handle different types of GLES - surfaces properly Since, the multisampling setting of a surface never changes - in for GLES, so the first thing we do when setting the destination is to - ignore the requested multisampling setting. This simplifies all - following logic. - - src/cairo-gl-device.c | 47 +++++++++++++++++++++++++++-------------------- - 1 file changed, 27 insertions(+), 20 deletions(-) - -commit 1704292e493b3c635e115df59d07330d19b39514 -Author: Martin Robinson -AuthorDate: Tue May 7 12:01:17 2013 -0700 -Commit: Martin Robinson -CommitDate: Tue May 7 12:01:17 2013 -0700 - - gl: Fix compiler warnings in the GL backend - - src/cairo-gl-composite.c | 5 ++++- - src/cairo-gl-glyphs.c | 3 ++- - src/cairo-gl-msaa-compositor.c | 6 ++++-- - 3 files changed, 10 insertions(+), 4 deletions(-) - -commit e83943ec9a06f20572e22105f4e6e44740893eb9 -Author: Martin Robinson -AuthorDate: Mon May 6 10:56:26 2013 -0700 -Commit: Martin Robinson -CommitDate: Mon May 6 10:56:26 2013 -0700 - - gl: Bind the default framebuffer before calling gl{Read|Draw}Buffer - - Fix more fallout from separating framebuffer binding from setting the - destination. In some cases it is sufficient to call - glDrawBuffer/glReadBuffer before binding the framebuffer, but the - masking-filling-stroking test of cairo-gl-smoke-tests fails if the order - is incorrect. - - src/cairo-gl-device.c | 6 ++++-- - 1 file changed, 4 insertions(+), 2 deletions(-) - -commit 32bd6aa46dc77c497f06d2ab3bf0c2ec218d9e19 -Author: Martin Robinson -AuthorDate: Fri Apr 26 15:21:37 2013 -0700 -Commit: Martin Robinson -CommitDate: Fri Apr 26 15:22:48 2013 -0700 - - gl: Update transformation when surface size changes - - In my previous commit I mistakenly removed the transformation matrix - update when cairo_gl_surface_set_size is called. This change restores - it. - - src/cairo-gl-device.c | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -commit 8da704ca7c43dda796657e86c5221736b1983122 -Author: Martin Robinson -AuthorDate: Wed Apr 10 22:25:49 2013 +0000 -Commit: Martin Robinson -CommitDate: Fri Apr 26 15:03:46 2013 -0700 - - gl: Separate framebuffer bind from destination selection - - Disentangle the action of binding the framebuffer from setting the - destination. This straightens up the code a bit and avoids some redundant - operations (such as reacquiring the context) when simply switching from - the multi-sample framebuffer to the single-sample framebuffer and vice - versa. - - src/cairo-gl-device.c | 98 +++++++++++++++++++++++++++++--------------------- - src/cairo-gl-private.h | 9 ++--- - src/cairo-gl-surface.c | 2 +- - 3 files changed, 63 insertions(+), 46 deletions(-) - -commit 793f8223d4a71f3fc7e74722fb60659e7100a39d -Author: egag -AuthorDate: Wed Apr 24 12:07:47 2013 +0200 -Commit: Chris Wilson -CommitDate: Thu Apr 25 09:03:02 2013 +0100 - - xlib: Aquire display before using it in DEBUG message. - - src/cairo-xlib-surface.c | 4 ++-- - 1 file changed, 2 insertions(+), 2 deletions(-) - -commit 498421bec90f68f3d7219b145860a71fd39f0c64 -Author: Henry Song -AuthorDate: Wed Apr 17 10:23:27 2013 -0700 -Commit: Martin Robinson -CommitDate: Wed Apr 17 10:27:58 2013 -0700 - - gl/msaa: Resolve multisampling on surface flush - - When flushing a surface, we must resolve multisampling for desktop GL. - This allows use of the original surface texture in any following raw GL - operations. This fixes accelerated canvas with WebKitGTK+ using the MSAA - compositor. - - src/cairo-gl-operand.c | 39 +++------------------------------------ - src/cairo-gl-private.h | 3 +++ - src/cairo-gl-surface.c | 35 +++++++++++++++++++++++++++++++++++ - 3 files changed, 41 insertions(+), 36 deletions(-) - -commit 2dd2c826a5b367d32cf2d48ed69754795990c5db -Author: Chris Wilson -AuthorDate: Tue Apr 16 10:58:56 2013 +0100 -Commit: Chris Wilson -CommitDate: Tue Apr 16 11:07:03 2013 +0100 - - png: Avoid marking the surface as in error after a png warning - - It turns out that libpng will continue to load an image after throwing a - warning, and that libpng16 now throws warnings for images that libpng15 - and earlier loaded without error. As we were happily loading those - images into cairo surfaces before, we are therefore being overzealous - in throwing an error now - so just squelch the warning. - - Signed-off-by: Chris Wilson - - src/cairo-png.c | 14 +++++++------- - 1 file changed, 7 insertions(+), 7 deletions(-) - -commit a64ce09715162c57d6e4b6a460d426af1d443cdc -Author: Chris Wilson -AuthorDate: Sat Apr 6 09:09:23 2013 +0100 -Commit: Chris Wilson -CommitDate: Sat Apr 6 09:09:23 2013 +0100 - - xlib: Trim uploads for surfaces extended by PAD - - Signed-off-by: Chris Wilson - - src/cairo-xlib-source.c | 3 +++ - 1 file changed, 3 insertions(+) - -commit 04b9d5d9b1ab8544fc0918d8ced90dc70641e727 -Author: Chris Wilson -AuthorDate: Sat Apr 6 09:07:24 2013 +0100 -Commit: Chris Wilson -CommitDate: Sat Apr 6 09:07:24 2013 +0100 - - xlib: Wrap errors generating sources in an error surface - - Once upon a time the wrapping was provided by the caller, but the - current requirement is that the error is propagated back as an error - surface. - - Bugzilla: http://bugs.freedesktop.org/show_bug.cgi?id=63196 - Signed-off-by: Chris Wilson - - src/cairo-xlib-source.c | 4 ++-- - 1 file changed, 2 insertions(+), 2 deletions(-) - -commit f6efecdfefa161c68fc5bf193a6487fc1a5047d5 -Author: Martin Robinson -AuthorDate: Fri Mar 29 11:09:48 2013 -0700 -Commit: Martin Robinson -CommitDate: Thu Apr 4 12:04:50 2013 -0700 - - boilerplate/gl: Disable thread awareness - - This dramatically speeds up testing on NVidia and actually makes it - possible to run traces within a reasonable amount of time. - - cairo-perf-trace results for: - NVIDIA Corporation GeForce GTS 250/PCIe/SSE2 3.3.0 NVIDIA 310.14 - - Before: - test min(s) median(s) stddev. count - gvim 30.924 31.251 0.72% 5/6 - firefox-fishbowl 168.751 201.017 12.46% 8/8 - (exited early) - - After: - test min(s) median(s) stddev. count - gvim 1.294 1.325 1.79% 6/6 - firefox-fishbowl 18.540 19.104 1.54% 6/6 - - boilerplate/cairo-boilerplate-egl.c | 2 ++ - boilerplate/cairo-boilerplate-glx.c | 3 +++ - 2 files changed, 5 insertions(+) - -commit b00b9e82ab728eaf3b87dd1113387d8e8df0d7e3 -Author: Martin Robinson -AuthorDate: Thu Apr 4 12:03:19 2013 -0700 -Commit: Martin Robinson -CommitDate: Thu Apr 4 12:04:50 2013 -0700 - - boilerplate: Add a mode for running threaded perf tests - - This is useful because the GL backend runs much faster on some drivers - when thread awareness is disabled. - - boilerplate/cairo-boilerplate.h | 7 ++++++- - 1 file changed, 6 insertions(+), 1 deletion(-) - -commit e66e9ac12e3e11af76f14e8de3cfee72d4299864 -Author: Marc-André Lureau -AuthorDate: Tue Apr 2 00:32:56 2013 +0200 -Commit: Chris Wilson -CommitDate: Tue Apr 2 08:39:05 2013 +0100 - - win32: fix corrupted drawing - - Fix src bitmap coordinates, which origin is bottom-left. This is - apparently a bug in StretchDIBits(), according to some comments on - MSDN API documentation. - - The backend used to have this coordinate change in the past: - - if (!StretchDIBits (dst->dc, - /* dst x,y,w,h */ - dst_r.x, dst_r.y + dst_r.height - 1, - dst_r.width, - (int) dst_r.height, - /* src x,y,w,h */ - src_r.x, src_extents.height - src_r.y + 1, - src_r.width, - (int) src_r.height, - src_image->data, - &bi, - DIB_RGB_COLORS, - SRCCOPY)) - - https://bugs.freedesktop.org/show_bug.cgi?id=61876 - - src/win32/cairo-win32-gdi-compositor.c | 3 ++- - 1 file changed, 2 insertions(+), 1 deletion(-) - -commit 0446fae26d35dc4e31aadc498f0f9b48b21d2c45 -Author: Chris Wilson -AuthorDate: Sat Mar 23 11:19:14 2013 +0000 -Commit: Chris Wilson -CommitDate: Tue Apr 2 08:39:05 2013 +0100 - - perf: Iteratively prune outliers - - Signed-off-by: Chris Wilson - - perf/cairo-stats.c | 41 +++++++++++++++++++++++------------------ - 1 file changed, 23 insertions(+), 18 deletions(-) - -commit fdec6b37596d8b064ff082326d7189daa8208052 -Author: Michael Hutchinson -AuthorDate: Fri Mar 29 02:37:33 2013 +0100 -Commit: Benjamin Otte -CommitDate: Fri Mar 29 02:40:13 2013 +0100 - - quartz: Don't release memory we don't own - - This was causing crashes due to double frees. - - https://bugs.freedesktop.org/show_bug.cgi?id=62885 - - Signed-off-by: Benjamin Otte - - src/cairo-quartz-surface.c | 1 - - 1 file changed, 1 deletion(-) - -commit 9e0748e223cfb8c5557c73f3ab5068ec1323e7c2 -Author: Adrian Johnson -AuthorDate: Wed Mar 27 08:08:32 2013 +1030 -Commit: Adrian Johnson -CommitDate: Wed Mar 27 08:08:32 2013 +1030 - - pdf: fix typo in bbox check - - http://lists.cairographics.org/archives/cairo/2013-March/024186.html - - src/cairo-pdf-surface.c | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -commit 59ccc3d72e839bd897111322765bb13696a97ef5 -Author: Nicola Fontana -AuthorDate: Fri Mar 1 14:16:45 2013 +0100 -Commit: Uli Schlachter -CommitDate: Sat Mar 23 19:47:54 2013 +0100 - - gobject: Add wrapper around cairo_matrix_t - - Reviewed-By: Benjamin Otte - Signed-off-by: Uli Schlachter - - util/cairo-gobject/cairo-gobject-structs.c | 4 +++- - util/cairo-gobject/cairo-gobject.h | 4 ++++ - 2 files changed, 7 insertions(+), 1 deletion(-) - -commit be5eabb66a475720020211a6d37bfeb75fc3242c -Author: Uli Schlachter -AuthorDate: Fri Mar 22 18:19:00 2013 +0100 -Commit: Uli Schlachter -CommitDate: Fri Mar 22 18:19:00 2013 +0100 - - xcb: Clear temporary replay image in recording playback - - This gets rid of random noise that we got from the X11 server due to - uninitialized memory. - - Fixes: pdf-surface-source, ps-surface-source, svg-surface-source - - Signed-off-by: Uli Schlachter - - src/cairo-xcb-surface-render.c | 9 +++++---- - 1 file changed, 5 insertions(+), 4 deletions(-) - -commit 41ef69a98c67a2cb8b64e8ef3bb986d57a0a2437 -Author: Uli Schlachter -AuthorDate: Fri Mar 22 14:14:29 2013 +0100 -Commit: Uli Schlachter -CommitDate: Fri Mar 22 14:14:29 2013 +0100 - - Fix "make check" standalone header check - - This fixes the following error: - - ./cairo-fixed-private.h: In function ‘_slow_segment_intersection’: - ./cairo-fixed-private.h:374:9: error: ‘FALSE’ undeclared (first use in this function) - ./cairo-fixed-private.h:374:9: note: each undeclared identifier is reported only once for each function it appears in - ./cairo-fixed-private.h:386:12: error: ‘TRUE’ undeclared (first use in this function) - - Signed-off-by: Uli Schlachter - - src/cairo-fixed-private.h | 1 + - 1 file changed, 1 insertion(+) - -commit b7c06fff1f597ba74fa6618766ec297d3a4bf880 -Author: Uli Schlachter -AuthorDate: Fri Mar 22 14:04:44 2013 +0100 -Commit: Uli Schlachter -CommitDate: Fri Mar 22 14:04:44 2013 +0100 - - boilerplate: rename xcb-render-0.0 to xcb-render-0_0 - - The test suite uses dots to separate the backend name from the content type. - Thus, the backend name must not contain any dots. - - The xlib backend already calls its RENDER 0.0 target xlib-render-0_0 for this - reason. This commit makes the xcb backend match this. - - Reported-by: Darxus - Signed-off-by: Uli Schlachter - - boilerplate/cairo-boilerplate-xcb.c | 4 ++-- - 1 file changed, 2 insertions(+), 2 deletions(-) - -commit caf50c07e225ee3a3e149234601e7305b1437736 -Author: Uli Schlachter -AuthorDate: Fri Mar 22 13:58:04 2013 +0100 -Commit: Uli Schlachter -CommitDate: Fri Mar 22 14:02:09 2013 +0100 - - test: Fix handling of dots in CAIRO_TEST_TARGET - - Before this, the following happened: - - $ CAIRO_TEST_TARGET=image,xcb-render-0.0 make test - Cannot find target 'image'. - Known targets: image, [...] - - The reason for this is that _cairo_boilerplate_target_matches_name() doesn't get - a null-terminated string, but instead has a pointer to the end of the string. - However, strpbrk() expects a null-terminated argument and thus could return a - result which points past the end of the input. - - This commit fixes exactly this. - - Reported-by: Darxus - Signed-off-by: Uli Schlachter - - boilerplate/cairo-boilerplate.c | 2 ++ - 1 file changed, 2 insertions(+) - -commit 13bd8d09b44e50649f6fc4d58d036bc32c1d5c5b -Author: Behdad Esfahbod -AuthorDate: Thu Mar 21 16:48:43 2013 -0400 -Commit: Behdad Esfahbod -CommitDate: Thu Mar 21 16:49:02 2013 -0400 - - [ft] I meant fabs(), not abs() - - src/cairo-ft-font.c | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -commit ed6a293e3dd2e81c8e159bf685cce6ffbcd7c81c -Author: Henry Song -AuthorDate: Wed Mar 20 15:10:34 2013 +0000 -Commit: Martin Robinson -CommitDate: Wed Mar 20 08:40:58 2013 -0700 - - gl: Fix typo in gles2 shader cache lookup - - When comparing shader cache entries, it's important that we actually - compare the variable type hash. - - src/cairo-gl-shaders.c | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -commit ff233fd706e62edf267bee66113e2cb35183bcd9 -Author: Behdad Esfahbod -AuthorDate: Mon Mar 18 14:17:29 2013 -0400 -Commit: Behdad Esfahbod -CommitDate: Mon Mar 18 14:18:13 2013 -0400 - - [test] Set font size - - Previously this test was working because we were not scaling bitmap - fonts. We do now, so adjust test. - - test/bitmap-font.c | 1 + - 1 file changed, 1 insertion(+) - -commit be347acd5a198b4280f2699a1abfca241e7e610b -Author: Matt Sealey -AuthorDate: Mon Mar 11 10:24:52 2013 -0500 -Commit: Uli Schlachter -CommitDate: Mon Mar 18 14:02:02 2013 +0100 - - gitignore: negate gitignore for static pkgconfig files - - Commit 781f253 adds a rule cairo-*.*.* to .gitignore in the root dir. - Unfortunately this matches several src/cairo-*.pc.in files in the - src directory. - - The build system requires these files to be present, but the rule is - allowing them to be ignored. For example, when extracting a cgit - snapshot tarball and checking it into another git repository, these - files get left behind. Any accidental changes to these files will go - unnoticed by a 'git status' (possibly creating bad installs) and - any intentional changes could not be committed (git commit -a will - miss them, and every one will need to be forced). This is not really - desirable. - - We don't want to unignore *.pc.in here since there are many, many - autogenerated files with this name, and the cairo-*.*.* rule is in - general quite useful and doesn't warrant modification (although it - could be made a little more specific), so we just make these 4 files - a special case and negate the match with full filenames in src/. - - Signed-off-by: Matt Sealey - Signed-off-by: Uli Schlachter - - src/.gitignore | 4 ++++ - 1 file changed, 4 insertions(+) - -commit 0e999edff869bc08522a6a56c69efa9b5e1c33b5 -Author: Matthew Fischer -AuthorDate: Sat Mar 9 15:42:59 2013 -0700 -Commit: Uli Schlachter -CommitDate: Mon Mar 18 13:59:37 2013 +0100 - - Adding a simple usage statement to cairo-perf-chart - - Signed-off-by: Uli Schlachter - - perf/cairo-perf-chart.c | 29 +++++++++++++++++++++++++++++ - 1 file changed, 29 insertions(+) - -commit 592f5944239debfa3dacc410f675261947156baf -Author: Uli Schlachter -AuthorDate: Fri Mar 15 16:53:28 2013 +0100 -Commit: Uli Schlachter -CommitDate: Fri Mar 15 16:56:42 2013 +0100 - - test: Fix CAIRO_REF_DIR - - Ever since the test output was moved from test/ to test/output/, using - CAIRO_REF_DIR to make the test suite succeed no longer works. The test suite was - looking for the wrong file names. - - This patch makes this work again. However, I am not sure that this really is the - correct fix. It just seems to work. :-) - - Reported-by: Darxus - Signed-off-by: Uli Schlachter - - test/README | 2 +- - test/cairo-test.c | 5 ++--- - 2 files changed, 3 insertions(+), 4 deletions(-) - -commit c141615a7fa632a2435b49f3949ed1fc9962af1f -Author: Marek Kasik -AuthorDate: Fri Mar 15 14:46:19 2013 +0100 -Commit: Chris Wilson -CommitDate: Fri Mar 15 14:01:53 2013 +0000 - - cff-subset: Fix allocation of width arrays - - fd_default_width and fd_nominal_width - are arrays of doubles not arrays of ints. - - src/cairo-cff-subset.c | 4 ++-- - 1 file changed, 2 insertions(+), 2 deletions(-) - -commit 01a8bf01c6508a4fea8d40371c3049e7a2f7908a -Author: Chris Wilson -AuthorDate: Fri Mar 15 09:08:00 2013 +0000 -Commit: Chris Wilson -CommitDate: Fri Mar 15 09:11:28 2013 +0000 - - mempool: Reduce an assert into an error return for get_buddy() - - If we ask for a buddy that is outside of our allocation that is an - error that should not happen with a power-of-two allocated zone... - However, since it has been seen in the wild, we can safely return that - there is no buddy rather than die in a too-late assert. - - Reported-by: Anton Eliasson - Signed-off-by: Chris Wilson - - src/cairo-mempool.c | 3 ++- - 1 file changed, 2 insertions(+), 1 deletion(-) - -commit 2c2dccf5a4d298c866f7c0faed2e10c65252c168 -Author: Martin Robinson -AuthorDate: Tue Mar 12 15:17:19 2013 -0700 -Commit: Martin Robinson -CommitDate: Thu Mar 14 10:32:43 2013 -0700 - - stroke: Use round-joins near inflection points of splines - - Similar to b7bd5ae4f3da44131261711bb236cd7aa24a3ae3, but applied to the - fallback stroke shaper. - - src/cairo-path-stroke.c | 36 ++++++++++++++++++++++++++++++++++++ - 1 file changed, 36 insertions(+) - -commit aadece05fb1cf80f0a1138368f4664e878a59204 -Author: Martin Robinson -AuthorDate: Tue Mar 12 15:16:01 2013 -0700 -Commit: Martin Robinson -CommitDate: Thu Mar 14 10:32:43 2013 -0700 - - stroke: Fix large line widths for fallback stroke shaper - - Fix the test case line-width-tolerance for the fallback stroke shaper. - Instead of drawing quads between spline points, draw triangle based on - the actual spline edges. This roughly follows the approach of the - tristrip and polygonal shapers. - - src/cairo-fixed-private.h | 34 ++++++++++++++++++ - src/cairo-path-stroke.c | 90 ++++++++++++++++++++++++++++++++++++++++++----- - 2 files changed, 116 insertions(+), 8 deletions(-) - -commit c60e23feb16a8745eaa6d213a89f61ded5707731 -Author: Martin Robinson -AuthorDate: Wed Mar 13 17:19:19 2013 -0700 -Commit: Martin Robinson -CommitDate: Thu Mar 14 09:44:35 2013 -0700 - - path: Fix a bug in line intersection - - Before the intersection code was not taking into account that both - quotients are required to be in the range (0,1) for the segments to - intersect or handling the case of negative numerators and denominators. - - src/cairo-path-fixed.c | 39 +++++++++++++++++++++++++++------------ - 1 file changed, 27 insertions(+), 12 deletions(-) - -commit 5ee136b2c067c92e85f04ba0c84966f7760f4556 -Author: Martin Robinson -AuthorDate: Fri Mar 8 10:29:55 2013 -0800 -Commit: Martin Robinson -CommitDate: Fri Mar 8 16:00:34 2013 -0800 - - gl: Setup operands when the vertex size changes - - Previously _cairo_gl_composite_setup_vbo was overwriting the old context - vertex_size, while _cairo_gl_context_setup_operand was relying on it to - determine if the vertex size changed. Instead of a fragile ordering of - statements, pass whether the vertex size changed as an argument to enforce - the calling order via method parameters. - - src/cairo-gl-composite.c | 29 +++++++++++++++++------------ - 1 file changed, 17 insertions(+), 12 deletions(-) - -commit f50ced2e7b4b2f4601dc9b9edf1a861401c302e4 -Author: Chris Wilson -AuthorDate: Fri Mar 8 14:25:26 2013 +0000 -Commit: Chris Wilson -CommitDate: Fri Mar 8 14:25:26 2013 +0000 - - gl: Fix typo s/bool/cairo_bool_t/ - - One quickly gets used to having stdbool.h available. - - src/cairo-egl-context.c | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -commit 524e6fd3e82d952dfa850b832238a1f4f9ccb8bb -Author: Henry Song -AuthorDate: Thu Mar 7 16:33:27 2013 +0000 -Commit: Chris Wilson -CommitDate: Fri Mar 8 11:43:39 2013 +0000 - - gl: Export query for EGLContext and EGLDisplay from device - - Similar to glx, add query for the EGLContext and EGLDisplay to egl-based - cairo devices. - - src/cairo-egl-context.c | 33 +++++++++++++++++++++++++++++++++ - src/cairo-gl.h | 6 ++++++ - 2 files changed, 39 insertions(+) - -commit a8f1b456db744e33a10b2301df03528787e5b1ca -Author: Behdad Esfahbod -AuthorDate: Fri Mar 8 06:21:59 2013 -0500 -Commit: Behdad Esfahbod -CommitDate: Fri Mar 8 06:22:59 2013 -0500 - - [FT] Prefer downscaling bitmap glyphs to upscaling - - Say, you have bitmap strikes for sizes 50ppem and 100ppem. - To render at 60ppem, it's much better to downscale the 100ppem - bitmap than upscale 50ppem one. Prefer downscaling. - - src/cairo-ft-font.c | 15 ++++++++++++--- - 1 file changed, 12 insertions(+), 3 deletions(-) - -commit 4f00d2344c84a1017a1e7d76ccb2fa552c80a969 -Author: Jana Saout -AuthorDate: Fri Mar 1 20:10:28 2013 +1030 -Commit: Adrian Johnson -CommitDate: Fri Mar 1 20:10:28 2013 +1030 - - pdf: Fix crash - - Bug 61451 - - src/cairo-pdf-surface.c | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -commit 7658eced9a45f42033c2b0b45cee70f6edb6ff20 -Author: Chris Wilson -AuthorDate: Sun Feb 24 17:07:54 2013 +0000 -Commit: Chris Wilson -CommitDate: Sun Feb 24 17:07:54 2013 +0000 - - xlib: Fix invocation of XRenderFindFormat() - - The 'count' parameter is an indication to libXrender of the number of - matches to skip before reporting (rather than a limit on the number to - report). As we only want the first match, always pass 0. - - Signed-off-by: Chris Wilson - - src/cairo-xlib-display.c | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -commit 446a3dc5c0298e35b9a1e38460bc3804ab6e01ce -Author: Adrian Johnson -AuthorDate: Tue Feb 19 20:59:16 2013 +1030 -Commit: Adrian Johnson -CommitDate: Tue Feb 19 20:59:16 2013 +1030 - - pdf: add missing 'endobj' to shading dict - - https://bugs.launchpad.net/ubuntu/+source/libcairo/+bug/1051939 - - src/cairo-pdf-surface.c | 6 ++++-- - 1 file changed, 4 insertions(+), 2 deletions(-) - -commit e7e1ac235ff94d184d88c8c206b81343822f6a4e -Author: Chris Wilson -AuthorDate: Tue Feb 19 09:54:24 2013 +0000 -Commit: Chris Wilson -CommitDate: Tue Feb 19 09:54:24 2013 +0000 - - image: Compare against the true size of the embedded buffer - - When querying whether the run is small enough to fit inside the - pre-allocated temporary buffer, we need to avoid comparing against - sizeof(buf) as buf is a variable length array and so sizeof() is - meaningless. - - Reported-by: Edward Zimmermann - Signed-off-by: Chris Wilson - - src/cairo-image-compositor.c | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -commit fb1abbc4bc25c541cfb1084012a6a185c541c340 -Author: Chris Wilson -AuthorDate: Fri Feb 15 14:04:21 2013 +0000 -Commit: Chris Wilson -CommitDate: Fri Feb 15 14:08:11 2013 +0000 - - win32: Free the fallback upon finish - - Zozó Teki pointed out that we leak the fallback surface upon finish in - case it was active at the time as the preceding flush would only clear - the damage and not decouple the fallback surface. - - Signed-off-by: Chris Wilson - - src/win32/cairo-win32-display-surface.c | 3 +++ - 1 file changed, 3 insertions(+) - -commit 41e646e019911f8e566e4f9963036117750f862f -Author: Henry Song -AuthorDate: Tue Jan 29 17:30:25 2013 +0000 -Commit: Chris Wilson -CommitDate: Fri Feb 15 12:00:38 2013 +0000 - - gl: disable GL_DITHER - - GL_DITHER is enabled by default by spec. Leaving GL_DITHER enabled - causes color pixel mismatch on some drivers by comparing uploading then - readPixels and original image. - - src/cairo-gl-device.c | 2 ++ - 1 file changed, 2 insertions(+) - -commit 02b467a28703a0bd68b92fb26f7905bf6a25bf7d -Author: Chris Wilson -AuthorDate: Tue Feb 12 10:46:42 2013 +0000 -Commit: Chris Wilson -CommitDate: Tue Feb 12 10:46:42 2013 +0000 - - test: Exercise replaying a recording surface through a flip matrix - - test/Makefile.sources | 1 + - test/recordflip.c | 493 +++++++++++++++++++++ - test/reference/recordflip-fill-alpha.ref.png | Bin 0 -> 2790 bytes - .../recordflip-paint-alpha-clip-mask.ref.png | Bin 0 -> 340 bytes - test/reference/recordflip-paint-alpha-clip.ref.png | Bin 0 -> 291 bytes - .../recordflip-paint-alpha-solid-clip.ref.png | Bin 0 -> 280 bytes - test/reference/recordflip-paint-alpha.ref.png | Bin 0 -> 242 bytes - test/reference/recordflip-paint.ref.png | Bin 0 -> 93 bytes - test/reference/recordflip-select-font-face.ref.png | Bin 0 -> 2229 bytes - .../reference/recordflip-self-intersecting.ref.png | Bin 0 -> 168 bytes - test/reference/recordflip-text-transform.ref.png | Bin 0 -> 5606 bytes - 11 files changed, 494 insertions(+) - -commit a09b7c79278465ee1ad916697e0153eae640d8df -Author: Chris Wilson -AuthorDate: Tue Feb 12 10:25:03 2013 +0000 -Commit: Chris Wilson -CommitDate: Tue Feb 12 10:27:58 2013 +0000 - - path: Fix bbox computation for negative scale factors - - The fast path for transforming a path by a simple scale factor, forgot - to fix up the orientation of the box if that scale factor was negative. - - Reported-by: Edward Zimmermann - Signed-off-by: Chris Wilson - - src/cairo-path-fixed.c | 11 +++++++++++ - 1 file changed, 11 insertions(+) - -commit be1561dadece6e947a3ca78d1124197b4278ce96 -Author: Chris Wilson -AuthorDate: Tue Feb 12 10:24:08 2013 +0000 -Commit: Chris Wilson -CommitDate: Tue Feb 12 10:24:08 2013 +0000 - - recording: Avoid indirection through indices array if not reduced - - If we don't discard any elements, then the index array is simply a 1:1 - mapping of the element array, and we may as well bypass it. - - Signed-off-by: Chris Wilson - - src/cairo-recording-surface.c | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -commit 14237f11439831377b59e8ea5717de5dd3e19e73 -Author: Chris Wilson -AuthorDate: Tue Feb 12 10:11:12 2013 +0000 -Commit: Chris Wilson -CommitDate: Tue Feb 12 10:11:12 2013 +0000 - - spans: Mark the surface as cleared in preparing for recording surface playback - - Signed-off-by: Chris Wilson - - src/cairo-spans-compositor.c | 7 ++++++- - 1 file changed, 6 insertions(+), 1 deletion(-) - -commit 7f3cca458a7546f913533f693b581325228aba4e -Author: Chris Wilson -AuthorDate: Sun Feb 10 14:18:47 2013 +0000 -Commit: Chris Wilson -CommitDate: Sun Feb 10 14:18:47 2013 +0000 - - Post release version bump to 1.12.15 - - cairo-version.h | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -commit 0dac37c41473deafa4a2f154187c5c3d08b07c91 -Author: Chris Wilson -AuthorDate: Sun Feb 10 13:38:28 2013 +0000 -Commit: Chris Wilson -CommitDate: Sun Feb 10 13:38:28 2013 +0000 - - 1.12.14 release - - NEWS | 32 ++++++++++++++++++++++++++++++++ - cairo-version.h | 2 +- - 2 files changed, 33 insertions(+), 1 deletion(-) - -commit 93ddc3a28308bcd9e062178ceb453f26e9228fc4 -Author: Chris Wilson -AuthorDate: Sun Feb 10 13:13:31 2013 +0000 -Commit: Chris Wilson -CommitDate: Sun Feb 10 13:13:31 2013 +0000 - - tests: Update reference images after adjustments to polygon line clipping - - Signed-off-by: Chris Wilson - - test/reference/clip-nesting.rgb24.ref.png | Bin 937 -> 936 bytes - test/reference/record-fill-alpha.argb32.ref.png | Bin 2736 -> 0 bytes - test/reference/record-fill-alpha.ref.png | Bin 2839 -> 2812 bytes - test/reference/record-fill-alpha.rgb24.ref.png | Bin 2736 -> 0 bytes - test/reference/record1414x-fill-alpha.argb32.ref.png | Bin 4129 -> 0 bytes - test/reference/record1414x-fill-alpha.rgb24.ref.png | Bin 4129 -> 0 bytes - test/reference/record2x-fill-alpha.argb32.ref.png | Bin 5715 -> 0 bytes - test/reference/record2x-fill-alpha.rgb24.ref.png | Bin 5715 -> 0 bytes - test/reference/record90-fill-alpha.argb32.ref.png | Bin 2651 -> 0 bytes - test/reference/record90-fill-alpha.rgb24.ref.png | Bin 2651 -> 0 bytes - test/reference/rel-path.rgb24.ref.png | Bin 216 -> 216 bytes - 11 files changed, 0 insertions(+), 0 deletions(-) - -commit d4651676e1496f0354acb0ef045e8b65601edf6d -Author: Chris Wilson -AuthorDate: Fri Feb 8 22:17:13 2013 +0000 -Commit: Chris Wilson -CommitDate: Fri Feb 8 22:17:13 2013 +0000 - - win32: Clear the similar-image before returning to the user - - Our userspace API mandates that surfaces created for the user are - cleared before they are returned. Make it so for the win32 similar image - constructor. - - Reported-by: Michael Henning - Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=60519 - Signed-off-by: Chris Wilson - - src/win32/cairo-win32-display-surface.c | 10 +++++++++- - 1 file changed, 9 insertions(+), 1 deletion(-) - -commit 2d7ac9e737f37daf8490c27e6a04c65bba642645 -Author: Chris Wilson -AuthorDate: Fri Feb 8 15:19:14 2013 +0000 -Commit: Chris Wilson -CommitDate: Fri Feb 8 15:20:41 2013 +0000 - - xlib: Only apply the dst offset to the glyph strings once - - The elts offset is a delta from the previous glyph coordinate. So by - subtracting the dst origin everytime, we were accumulating a glyph - position error. Instead we just want to offset the starting coordinate - and then always use relative positions. - - Reported-by: Theo Veenker - Signed-off-by: Chris Wilson - - src/cairo-xlib-render-compositor.c | 12 ++++++------ - 1 file changed, 6 insertions(+), 6 deletions(-) - -commit ea16302e45ced56e6f12b8520e9f530e1ffc68c4 -Author: Chris Wilson -AuthorDate: Fri Feb 8 13:22:01 2013 +0000 -Commit: Chris Wilson -CommitDate: Fri Feb 8 13:22:01 2013 +0000 - - polygon: Avoid computing the unused intersection coordinates - - If we only ignore the result of the computed boundary intersection, - because the edge is inside that boundary, then we can simply forgo the - calculation. - - Signed-off-by: Chris Wilson - - src/cairo-polygon.c | 13 ++++++++----- - 1 file changed, 8 insertions(+), 5 deletions(-) - -commit 8cfbdf2f02ba01d5638a91c9f3f7fc228b402caa -Author: Chris Wilson -AuthorDate: Fri Feb 8 13:10:25 2013 +0000 -Commit: Chris Wilson -CommitDate: Fri Feb 8 13:13:30 2013 +0000 - - polygon: Only rely on the computed boundary intersections for crossing edges - - If we need to extrapolate the edge to the boundary, then we run the risk - of an overflow for an immaterial result. So if the edge does not cross - the boundary, we can simply use the corresponding end-point and not emit - the boundary segment. - - Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=60489 - Signed-off-by: Chris Wilson - - src/cairo-polygon.c | 35 +++++++++++++++++++++++++---------- - 1 file changed, 25 insertions(+), 10 deletions(-) - -commit 607a15db5df04d10e5be6d06599ec4e9d98d2446 -Author: Chris Wilson -AuthorDate: Thu Feb 7 21:40:30 2013 +0000 -Commit: Chris Wilson -CommitDate: Thu Feb 7 21:40:30 2013 +0000 - - gl: Mark up _cairo_gl_composite_set_operator* as private - - Add the cairo_private markup to hide the PLT entries and to keep make - check happy. - - Signed-off-by: Chris Wilson - - src/cairo-gl-private.h | 4 ++-- - 1 file changed, 2 insertions(+), 2 deletions(-) - -commit 562cc8227feb99b75fb53df7800df66887be129d -Author: Ravi Nanjundappa -AuthorDate: Mon Feb 6 10:56:55 2012 +0530 -Commit: Martin Robinson -CommitDate: Thu Feb 7 13:25:33 2013 -0800 - - gl/spans: Handle SOURCE operations with opaque sources. - - SOURCE operations with an opaque are equivalent to OVER. - This can prevent us from falling back in certain cases. - - Signed-off-by: Chris Wilson - - src/cairo-gl-spans-compositor.c | 7 +++++++ - 1 file changed, 7 insertions(+) - -commit 4b6b28b5e8b9020c72a60b01ff3340a70dd59478 -Author: Chris Wilson -AuthorDate: Thu Feb 7 10:00:47 2013 +0000 -Commit: Chris Wilson -CommitDate: Thu Feb 7 10:02:31 2013 +0000 - - win32: Fix is_win98() - - Since the translation into a separate function, its condition was - reversed: that is almost everybody thought they were on a win98 machine - and so had no working AlphaBlend(). - - Signed-off-by: Chris Wilson - - src/win32/cairo-win32-device.c | 6 +++--- - 1 file changed, 3 insertions(+), 3 deletions(-) - -commit 4b54c09c056e5dee65f2cf4e87835eb9127e5b1c -Author: Chris Wilson -AuthorDate: Wed Feb 6 22:16:12 2013 +0000 -Commit: Chris Wilson -CommitDate: Thu Feb 7 10:02:31 2013 +0000 - - image: Substitute OVER spans for SOURCE with an opaque pattern - - Based on an idea from Ravi Nanjundappa - - Signed-off-by: Chris Wilson - - src/cairo-image-compositor.c | 12 ++++++++++-- - 1 file changed, 10 insertions(+), 2 deletions(-) - -commit 400ea9c2905461067df9e6d27c2e961d47f04676 -Author: Martin Robinson -AuthorDate: Wed Feb 6 12:53:14 2013 -0800 -Commit: Martin Robinson -CommitDate: Wed Feb 6 12:53:14 2013 -0800 - - gl/msaa: Properly fall back when using CLEAR operator - - There are some situations that the MSAA compositor doesn't support using - the CLEAR operator. We should properly fall back in those cases. - - src/cairo-gl-msaa-compositor.c | 7 +++++++ - 1 file changed, 7 insertions(+) - -commit 7bee1962f601009c507f987838de1a9dec3d9334 -Author: Adrian Johnson -AuthorDate: Tue Feb 5 21:57:52 2013 +1030 -Commit: Adrian Johnson -CommitDate: Tue Feb 5 21:57:52 2013 +1030 - - type1-subset: in latin subsets replace glyph names with standard names - - When using WinAnsiEncoding in PDF the glyphs are keyed by glyph - name. We need to ensure the correct names are used and can't assume - the glyph names in the font are correct. - - Bug 60248 - - src/cairo-type1-subset.c | 19 +++++++++++++++++-- - 1 file changed, 17 insertions(+), 2 deletions(-) - -commit 4cb181d985adbbf79e80ff695adc908810b41544 -Author: Henry Song -AuthorDate: Tue Jan 29 17:53:38 2013 +0000 -Commit: Chris Wilson -CommitDate: Mon Feb 4 10:49:37 2013 +0000 - - gl: do not force flush everytime uploading a glyph image to glyph cache - - In normal cases, we want to flush pending operations reading from the - texture before modifying its contents. However during uploading of - glyphs into the glyph cache, we repeatedly modify the texture as we - construct the vbo (whilst referencing it for that operation). We track - unused areas in the glyph cache so that if we run out of space, we can - explicitly flush the pending glyphs and start afresh and avoid having to - flush the operation in common case. - - src/cairo-gl-glyphs.c | 2 +- - src/cairo-gl-private.h | 3 ++- - src/cairo-gl-spans-compositor.c | 2 +- - src/cairo-gl-surface-legacy.c | 7 ++++--- - src/cairo-gl-surface.c | 16 ++++++++++------ - src/cairo-gl-traps-compositor.c | 9 ++++++--- - 6 files changed, 24 insertions(+), 15 deletions(-) - -commit 260c16331a2c7bedbcf35d7f2cbab2f1f4098c87 -Author: Chris Wilson -AuthorDate: Mon Feb 4 10:43:13 2013 +0000 -Commit: Chris Wilson -CommitDate: Mon Feb 4 10:49:36 2013 +0000 - - gl: Include the vertex ident in the shader cache hash - - As we may specialise the vertex program depending upon details of the - fragment shader, and may have more than one program for the same - combination of fragment sources, we need to include the vertex tag in - the cache entry. - - Signed-off-by: Chris Wilson - - src/cairo-gl-shaders.c | 49 ++++++++++++++++++++++++++++++------------------- - 1 file changed, 30 insertions(+), 19 deletions(-) - -commit 05ad89f91241b386f72f5b9bac3ebe62faff1d1b -Author: Chris Wilson -AuthorDate: Sun Feb 3 16:51:35 2013 +0000 -Commit: Chris Wilson -CommitDate: Mon Feb 4 09:57:53 2013 +0000 - - gl: Replace manual vertex transformation with VS computation of texcoords - - Not only is our point transformation code is quite slow (well at least - compared to a real GPU), but by deriving the texture coordinates from - the vertex position we can elide the multiple arrays that we need to - construct and pass to GL - improving performance by eliminating CPU - overhead from needless transforms and data shovelling. - - However, not all vertex emission is suitable. For instance, for glyphs - we need to emit discontiguous texture coordinates for each glyph, but - span generation is suitable - which fortuitously also has the largest - vertex density and so benefits the most. - - The only real concern is for hardware without true vertex shader support - (e.g. i915) but there we are already invoking the VS to transform the - vertex into the viewport. We would need to eliminate that transform as - well as manually compute the texture coordinates in order to eliminate - the vertex recomputation pass. - - Signed-off-by: Chris Wilson - - src/cairo-gl-composite.c | 70 ++++++++++++++++++++++++++++++----------- - src/cairo-gl-msaa-compositor.c | 21 ++++++++----- - src/cairo-gl-operand.c | 67 +++++++++++++++++++++++++++++---------- - src/cairo-gl-private.h | 24 ++++++++------ - src/cairo-gl-shaders.c | 31 +++++++++++++----- - src/cairo-gl-source.c | 3 +- - src/cairo-gl-spans-compositor.c | 6 ++-- - src/cairo-gl-traps-compositor.c | 3 +- - 8 files changed, 162 insertions(+), 63 deletions(-) - -commit d15a71f128c73ce1da19e6ff5a4e2fe044b58749 -Author: Chris Wilson -AuthorDate: Sun Feb 3 12:51:13 2013 +0000 -Commit: Chris Wilson -CommitDate: Sun Feb 3 12:51:13 2013 +0000 - - qt: Update for fallback compositor - - We now need to explicitly manage fallbacks and to provide an - implementation for map-to-image/unmap-image. - - src/cairo-qt-surface.cpp | 210 +++++++++++++++++++++++++++++++---------------- - 1 file changed, 140 insertions(+), 70 deletions(-) - -commit 10110d58cee179cded8e4c4ff8a8d02c477585bd -Author: Chris Wilson -AuthorDate: Sat Feb 2 08:47:26 2013 +0000 -Commit: Chris Wilson -CommitDate: Sat Feb 2 09:00:45 2013 +0000 - - surface: Prevent reads from the user-data arrays during teardown - - In a similar fashion to the previous commit, we also need to be wary of - users simply trying to read from a potentially freed user-data array. - - Signed-off-by: Chris Wilson - - src/cairo-surface.c | 8 +++++++- - 1 file changed, 7 insertions(+), 1 deletion(-) - -commit 18cff63e3d288bf2d7773760f2ab25c80a4a2bc1 -Author: Chris Wilson -AuthorDate: Sat Feb 2 08:47:26 2013 +0000 -Commit: Chris Wilson -CommitDate: Sat Feb 2 08:55:37 2013 +0000 - - surface: Prevent writes to the user-data arrays during teardown - - As we cleanup the user-data arrays, we call the user provided destroy - notifier callbacks. These callbacks are at liberty to write back into - the parent surface, and in particular try to write into the arrays that - we have just freed. This causes hard to control and fairly unpredictable - use-after-frees in the client, so lets just rule out the dangerous - behaviour. - - References:https://bugzilla.mozilla.org/show_bug.cgi?id=722975 - Signed-off-by: Chris Wilson - - src/cairo-surface.c | 9 +++++++++ - 1 file changed, 9 insertions(+) - -commit c391093f40472c2300f38d0e5857858f85586b60 -Author: Chris Wilson -AuthorDate: Fri Feb 1 16:31:49 2013 +0000 -Commit: Chris Wilson -CommitDate: Fri Feb 1 16:36:03 2013 +0000 - - image: Add a convenience function for creating an image from another's data - - The GL backend would like to extract a rectangle from another surface - and convert it to a different pixel format. The - _cairo_image_surface_create_from_image() does that by returning a new - image that has the contents of the specified rectangle in the source - - Signed-off-by: Chris Wilson - - src/cairo-image-surface-private.h | 7 +++++ - src/cairo-image-surface.c | 55 +++++++++++++++++++++++++++++++++++++++ - 2 files changed, 62 insertions(+) - -commit 15830fdb1087f18dcd6351de1034a5025b8ed343 -Author: Chris Wilson -AuthorDate: Thu Jan 31 18:50:39 2013 +0000 -Commit: Chris Wilson -CommitDate: Thu Jan 31 18:50:39 2013 +0000 - - NEWS: fix a couple of typos - - Reported-by: Thierry Vignaud - - NEWS | 4 ++-- - 1 file changed, 2 insertions(+), 2 deletions(-) - -commit 28dbafd5643fcf637a556fc196b5b984d44d151d -Author: Chris Wilson -AuthorDate: Thu Jan 31 16:23:24 2013 +0000 -Commit: Chris Wilson -CommitDate: Thu Jan 31 16:23:24 2013 +0000 - - Post release version bump to 1.12.13 - - cairo-version.h | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -commit a201a1169f472e822a66275b7dffe62f241d8ec0 -Author: Chris Wilson -AuthorDate: Thu Jan 31 15:24:33 2013 +0000 -Commit: Chris Wilson -CommitDate: Thu Jan 31 15:24:33 2013 +0000 - - 1.12.12 release - - NEWS | 24 ++++++++++++++++++++++++ - cairo-version.h | 2 +- - 2 files changed, 25 insertions(+), 1 deletion(-) - -commit 350f9fb5366079113eb8bca947d480362c3ae6be -Author: Chris Wilson -AuthorDate: Thu Jan 31 15:15:03 2013 +0000 -Commit: Chris Wilson -CommitDate: Thu Jan 31 15:15:03 2013 +0000 - - test: Refresh refs for aa noise following reduction of the 2-stage compositing - - A side effect of - - commit c986a7310bb06582b7d8a566d5f007ba4e5e75bf - Author: Chris Wilson - Date: Thu Jan 24 08:55:54 2013 +0000 - - image: Enable inplace compositing with opacities for general routines - - is that we should in theory be reducing the rounding errors when - compositing coverage. - - Signed-off-by: Chris Wilson - - test/reference/bug-source-cu.rgb24.ref.png | Bin 3211 -> 3211 bytes - test/reference/clip-stroke-unbounded.argb32.ref.png | Bin 4128 -> 4127 bytes - test/reference/clip-stroke-unbounded.rgb24.ref.png | Bin 3546 -> 3566 bytes - test/reference/mask.argb32.ref.png | Bin 8579 -> 8565 bytes - test/reference/mask.rgb24.ref.png | Bin 7127 -> 7135 bytes - .../record-paint-alpha-clip-mask.argb32.ref.png | Bin 340 -> 0 bytes - test/reference/record-paint-alpha-clip-mask.ref.png | Bin 333 -> 318 bytes - .../record-paint-alpha-clip-mask.rgb24.ref.png | Bin 340 -> 0 bytes - test/reference/record-text-transform.argb32.ref.png | Bin 5579 -> 0 bytes - test/reference/record-text-transform.rgb24.ref.png | Bin 5579 -> 0 bytes - test/reference/record1414x-text-transform.ref.png | Bin 8706 -> 8365 bytes - test/reference/record2x-text-transform.ref.png | Bin 13476 -> 13072 bytes - .../record90-paint-alpha-clip-mask.argb32.ref.png | Bin 343 -> 0 bytes - .../record90-paint-alpha-clip-mask.ref.png | Bin 0 -> 316 bytes - .../record90-paint-alpha-clip-mask.rgb24.ref.png | Bin 343 -> 0 bytes - .../record90-paint-alpha-clip.argb32.ref.png | Bin 296 -> 0 bytes - test/reference/record90-paint-alpha-clip.ref.png | Bin 0 -> 320 bytes - .../record90-paint-alpha-clip.rgb24.ref.png | Bin 296 -> 0 bytes - .../record90-text-transform.argb32.ref.png | Bin 5811 -> 0 bytes - test/reference/record90-text-transform.ref.png | Bin 0 -> 5481 bytes - .../reference/record90-text-transform.rgb24.ref.png | Bin 5811 -> 0 bytes - .../recording-surface-extend-none.argb32.ref.png | Bin 3051 -> 3153 bytes - .../recording-surface-extend-none.rgb24.ref.png | Bin 3128 -> 3145 bytes - .../recording-surface-extend-pad.argb32.ref.png | Bin 10822 -> 11200 bytes - .../recording-surface-extend-pad.rgb24.ref.png | Bin 12582 -> 12586 bytes - .../recording-surface-extend-reflect.argb32.ref.png | Bin 23518 -> 23967 bytes - .../recording-surface-extend-reflect.rgb24.ref.png | Bin 23881 -> 23930 bytes - .../recording-surface-extend-repeat.argb32.ref.png | Bin 24047 -> 24091 bytes - .../recording-surface-extend-repeat.rgb24.ref.png | Bin 24038 -> 24075 bytes - .../reference/recording-surface-over.argb32.ref.png | Bin 0 -> 3153 bytes - test/reference/recording-surface-over.rgb24.ref.png | Bin 3128 -> 3145 bytes - .../recording-surface-source.argb32.ref.png | Bin 3044 -> 3153 bytes - .../recording-surface-source.rgb24.ref.png | Bin 3133 -> 3146 bytes - test/reference/stroke-clipped.ref.png | Bin 5886 -> 5790 bytes - 34 files changed, 0 insertions(+), 0 deletions(-) - -commit 22b7fae0368ba6cff23b2ebdf58bd7d1bfdfbd6f -Author: Chris Wilson -AuthorDate: Thu Jan 31 14:19:53 2013 +0000 -Commit: Chris Wilson -CommitDate: Thu Jan 31 14:19:53 2013 +0000 - - image: Add a reference for the clone's parent image - - We use the parent as a flag during map-to-image/umap-image that the - resultant image came from a fallback rather than as direct call - to the backend's map_to_image(). Whilst we use it as a simple flag, - we need to make sure the parent surface obeys the reference counting - semantics and is consistent for all callers. - - Unlike other users of the parent pointer, there is no resource sharing - between the two surfaces. - - Reported-by: Henry Song - Signed-off-by: Chris Wilson - - src/cairo-image-surface.c | 9 ++++++++- - 1 file changed, 8 insertions(+), 1 deletion(-) - -commit ec58fde294afd52c89fa5ed21ba2611edfdbd550 -Author: Chris Wilson -AuthorDate: Thu Jan 31 14:06:48 2013 +0000 -Commit: Chris Wilson -CommitDate: Thu Jan 31 14:06:48 2013 +0000 - - perf: Synchronize before stopping the timers - - Fixes a regression from - - commit 2855ff4666922f2c38505414270d47f659b0d499 - Author: Andrea Canciani - Date: Wed Aug 31 16:42:03 2011 +0200 - - perf: Reuse cairo-time - - which dropped the essential call to synchronize when refactoring the - code. - - Reported-by: Siarhei Siamashka - Signed-off-by: Chris Wilson - - perf/cairo-perf.c | 3 +++ - 1 file changed, 3 insertions(+) - -commit 2560c0b6577a6380ef175cf18bb804913784632c -Author: Chris Wilson -AuthorDate: Tue Jan 29 23:51:44 2013 +0000 -Commit: Chris Wilson -CommitDate: Tue Jan 29 23:51:44 2013 +0000 - - xlib/shm: More clarification of seqno required - - Everytime I read the predicate wrong, but hopefully, this time I have it - right! - - Signed-off-by: Chris Wilson - - src/cairo-xlib-surface-shm.c | 6 +++--- - 1 file changed, 3 insertions(+), 3 deletions(-) - -commit 91834fbdee40f46e18d071fd2671a7a642e6aa86 -Author: Chris Wilson -AuthorDate: Tue Jan 29 22:12:00 2013 +0000 -Commit: Chris Wilson -CommitDate: Tue Jan 29 22:26:00 2013 +0000 - - xlib/shm: Clarify testing of seqno - - Rename the seqno tests into seqno_passed(), seqno_before() and - seqno_after() in order to clarify their semantics. - - Signed-off-by: Chris Wilson - - src/cairo-xlib-source.c | 2 +- - src/cairo-xlib-surface-shm.c | 20 ++++++++++++++++---- - 2 files changed, 17 insertions(+), 5 deletions(-) - -commit 89092b97b50a7740058d0f72f94dfc6defe15ed6 -Author: Henry Song -AuthorDate: Tue Jan 29 13:21:00 2013 -0800 -Commit: Martin Robinson -CommitDate: Tue Jan 29 13:21:00 2013 -0800 - - gl/msaa: Don't emit alpha when emitting vertices - - The color attribute is disabled when not in spans mode, so the emitted - alpha is simply overwritten by the next vertex. Additionally, this can - potentially cause the alpha to be written past the end of the buffer. - - src/cairo-gl-composite.c | 24 +++++++++++------------- - 1 file changed, 11 insertions(+), 13 deletions(-) - -commit 74a19c527c1fa07ade2042a8d2acecbb5f6ccab1 -Author: Chris Wilson -AuthorDate: Tue Jan 29 10:31:05 2013 +0000 -Commit: Chris Wilson -CommitDate: Tue Jan 29 10:31:05 2013 +0000 - - configure: Include X11.h before testing for usability of Xrender.h - - On Solaris at least, the Xrender.h header is not standalone and requires - X11/X.h to be included first to define the essential types. - - Reported-by: Andreas F. Borchert - Bugzilla; https://bugs.freedesktop.org/show_bug.cgi?id=58199 - Signed-off-by: Chris Wilson - - configure.ac | 3 ++- - 1 file changed, 2 insertions(+), 1 deletion(-) - -commit 41ae904461e344fbfa3be3d276a7102bb4304b19 -Author: Chris Wilson -AuthorDate: Tue Jan 29 03:52:02 2013 +0000 -Commit: Chris Wilson -CommitDate: Tue Jan 29 03:52:02 2013 +0000 - - xlib/shm: Appease the compiler for a 'maybe used uninitialised' variable - - Initialise shm during its declaration so that it is indeed initialised - for the cleanup after every path. - - Signed-off-by: Chris Wilson - - src/cairo-xlib-render-compositor.c | 3 +-- - 1 file changed, 1 insertion(+), 2 deletions(-) - -commit 9b92625151ca75a6ee10f231f83b53f67a371947 -Author: Chris Wilson -AuthorDate: Tue Jan 29 03:49:56 2013 +0000 -Commit: Chris Wilson -CommitDate: Tue Jan 29 03:51:01 2013 +0000 - - xlib/shm: Simplify uploading of SHM image data - - Make sure that we simply copy from the SHM segment into the target - drawable, and not inadvertently stage it through another SHM buffer. - - Signed-off-by: Chris Wilson - - src/cairo-xlib-render-compositor.c | 22 ++++++++++++---------- - 1 file changed, 12 insertions(+), 10 deletions(-) - -commit c006b886d28a772d7a62cec52ab7e0c8196c36f6 -Author: Chris Wilson -AuthorDate: Tue Jan 29 03:01:31 2013 +0000 -Commit: Chris Wilson -CommitDate: Tue Jan 29 03:03:42 2013 +0000 - - xlib/shm: Force synchronisation for scratch SHM image buffers - - The scratch image buffers are used for uploads to the xserver and so we - must be careful not to overwrite active SHM segments. Unfortunately we - told the core SHM allocator that we would sync before using the images, - which was a lie. - - Reported-by: Michael Natterer - Signed-off-by: Chris Wilson - - src/cairo-xlib-surface-shm.c | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -commit fd59e6d86a3a1fc6720316f20deb8a0bd6f7b767 -Author: Chris Wilson -AuthorDate: Tue Jan 29 03:00:46 2013 +0000 -Commit: Chris Wilson -CommitDate: Tue Jan 29 03:00:46 2013 +0000 - - xlib/shm: Always request a CompletionEvent from ShmPutImage - - ...and treat is as an expected event for synchronisation. - - Signed-off-by: Chris Wilson - - src/cairo-xlib-surface-shm.c | 11 +++-------- - src/cairo-xlib-surface.c | 3 +-- - 2 files changed, 4 insertions(+), 10 deletions(-) - -commit a364a106b257c4493ba7b3badacc63599ba6064a -Author: Chris Wilson -AuthorDate: Tue Jan 29 02:52:10 2013 +0000 -Commit: Chris Wilson -CommitDate: Tue Jan 29 02:52:10 2013 +0000 - - xlib/shm: Tidy up destroying the mempool for a shm block - - Signed-off-by: Chris Wilson - - src/cairo-xlib-surface-shm.c | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -commit 02a2baa8dcf49ad2d9766d43578ba216fab0d464 -Author: Chris Wilson -AuthorDate: Tue Jan 29 02:51:25 2013 +0000 -Commit: Chris Wilson -CommitDate: Tue Jan 29 02:51:25 2013 +0000 - - xlib/shm: Tidy creation of the proxy source for ShmPixmaps - - Signed-off-by: Chris Wilson - - src/cairo-xlib-source.c | 10 +++------- - 1 file changed, 3 insertions(+), 7 deletions(-) - -commit 30e950515171b25d9bc3da8d535cfe05d8be69c8 -Author: Chris Wilson -AuthorDate: Tue Jan 29 02:49:26 2013 +0000 -Commit: Chris Wilson -CommitDate: Tue Jan 29 02:49:26 2013 +0000 - - xlib/shm: Skip creating new SHM segments if the data is already in the xserver - - If the image is already inside a SHM segment, but the image format does - not match the surface, fallback to the XRender paths in order to perform - colorspace conversion on the data already inside the Xserver. - - Signed-off-by: Chris Wilson - - src/cairo-xlib-render-compositor.c | 4 ++++ - 1 file changed, 4 insertions(+) - -commit 1d1af825bb4fcfd7c4a54b65292734ba244e096d -Author: Chris Wilson -AuthorDate: Tue Jan 29 02:47:48 2013 +0000 -Commit: Chris Wilson -CommitDate: Tue Jan 29 02:47:48 2013 +0000 - - xlib/shm: Tighten mark-active to the actual CopyArea on the ShmPixmap - - Along the draw_image_boxes() upload path, we were actually marking the - ShmPixmap as still active for the subsequent drawing operation - which - could in theory never be submitted... - - Signed-off-by: Chris Wilson - - src/cairo-xlib-render-compositor.c | 3 ++- - 1 file changed, 2 insertions(+), 1 deletion(-) - -commit 3c18bae20ee2fea24d75f6986390ef8157d0207d -Author: Chris Wilson -AuthorDate: Mon Jan 28 10:03:54 2013 +0000 -Commit: Chris Wilson -CommitDate: Mon Jan 28 10:06:47 2013 +0000 - - perf; Do not allow the backends to optimize away the clear before sync - - The importance of writing to the scratch surface before retrieving an - image is that it makes that the write lands in the server queue, as well - as the GetImage, in order to serialise the timer against all the - operations. - - Reported-by: Siarhei Siamashka - Signed-off-by: Chris Wilson - - perf/cairo-perf-trace.c | 10 +++++++--- - 1 file changed, 7 insertions(+), 3 deletions(-) - -commit d9d5adec256b3935e4f261d81c37c77a2649248b -Author: Chris Wilson -AuthorDate: Sun Jan 27 16:51:52 2013 +0000 -Commit: Chris Wilson -CommitDate: Sun Jan 27 16:51:52 2013 +0000 - - image: And more fallout from c986a73, restore the absent short runs - - Signed-off-by: Chris Wilson - - src/cairo-image-compositor.c | 34 ++++++++++++++++------------------ - 1 file changed, 16 insertions(+), 18 deletions(-) - -commit 1ba9fb6fadcc1cb619af0ef974dffb0ff8672244 -Author: Chris Wilson -AuthorDate: Sun Jan 27 16:15:35 2013 +0000 -Commit: Chris Wilson -CommitDate: Sun Jan 27 16:29:41 2013 +0000 - - Mark _cairo_path_is_simple_quad as private - - Signed-off-by: Chris Wilson - - src/cairo-path-fixed-private.h | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -commit 1d105f215a9c62f5b60541da209bf71182a2e9df -Author: Chris Wilson -AuthorDate: Sun Jan 27 16:29:44 2013 +0000 -Commit: Chris Wilson -CommitDate: Sun Jan 27 16:28:54 2013 +0000 - - image: Fix opaque span fills - - I should have realised the previous result was too good to be true! - - Signed-off-by: Chris Wilson - - src/cairo-image-compositor.c | 4 ++-- - 1 file changed, 2 insertions(+), 2 deletions(-) - -commit c986a7310bb06582b7d8a566d5f007ba4e5e75bf -Author: Chris Wilson -AuthorDate: Thu Jan 24 08:55:54 2013 +0000 -Commit: Chris Wilson -CommitDate: Sat Jan 26 16:10:47 2013 +0000 - - image: Enable inplace compositing with opacities for general routines - - On a SNB i5-2500: - - Speedups - ======== - firefox-chalkboard 34284.16 -> 19637.40: 1.74x speedup - swfdec-giant-steps 778.35 -> 665.37: 1.17x speedup - ocitysmap 485.64 -> 431.94: 1.12x speedup - - Slowdowns - ========= - firefox-fishbowl 46878.98 -> 54407.14: 1.16x slowdown - - That slow down is due to overhead of the increased number of calls to - pixman_image_composite32() (pixman_transform_point for analyzing the - source extents in particular) outweighing any advantage gained by - performing the rasterisation in a single pass and eliding gaps. The - solution that has been floated in the past is for an interface into - pixman to only perform the analysis once and then to return a kernel to - use for all spans. - - Signed-off-by: Chris Wilson - - src/cairo-image-compositor.c | 190 +++++++++++++++++++++++++++++------ - src/cairo-spans-compositor-private.h | 2 +- - 2 files changed, 162 insertions(+), 30 deletions(-) - -commit cfe0e59663c71a6ecd0c976797ac32339e363af2 -Author: Martin Robinson -AuthorDate: Tue Jan 22 20:09:01 2013 -0800 -Commit: Martin Robinson -CommitDate: Fri Jan 25 16:30:11 2013 -0800 - - gl/msaa: Add a fast path for fills that are simple quads - - Instead of invoking Bentley-Ottman for fills that are simple - quadrilaterals, just pass the geometry straight to OpenGL. - - src/cairo-gl-msaa-compositor.c | 45 ++++++++++++-- - src/cairo-path-fixed-private.h | 17 ++++++ - src/cairo-path-fixed.c | 136 ++++++++++++++++++++++++++++++----------- - 3 files changed, 158 insertions(+), 40 deletions(-) - -commit 1e3424cfd1fea3f9aa2b1c8af4bb72239a94f365 -Author: Henry Song -AuthorDate: Tue Jan 22 14:54:38 2013 -0800 -Commit: Martin Robinson -CommitDate: Fri Jan 25 14:09:18 2013 -0800 - - gl: Use GL_ALPHA textures for CAIRO_CONTENT_ALPHA glyph caching - - It's safe to us GL_ALPHA for glyph caching surfaces, since Cairo only - uses them for texture uploading. This saves a little bit of memory. - - src/cairo-gl-glyphs.c | 16 ++++++++-------- - src/cairo-gl-private.h | 6 ++++++ - src/cairo-gl-surface.c | 38 +++++++++++++++++++++++++++++++------- - 3 files changed, 45 insertions(+), 15 deletions(-) - -commit a44b8bd70683a92d862b11c2d7359ce2b0a6a968 -Author: Henry Song -AuthorDate: Fri Jan 25 12:45:10 2013 -0800 -Commit: Martin Robinson -CommitDate: Fri Jan 25 12:45:10 2013 -0800 - - gl: Fix typos in multisampling detection - - Instead of looking for the EXT_framebuffer_multisample, this code should - look for GL_EXT_framebuffer_multisample. GL_ARB_framebuffer_object also - contains all necessary API for using multisampling, so we don't need to - check for both it and the GL_EXT_framebuffer_blit and - GL_EXT_framebuffer_multisample pair. - - src/cairo-gl-device.c | 6 +++--- - 1 file changed, 3 insertions(+), 3 deletions(-) - -commit bb4072046016610a510373df3b67cdeb2ac1b583 -Author: Henry Song -AuthorDate: Fri Jan 25 11:55:10 2013 -0800 -Commit: Martin Robinson -CommitDate: Fri Jan 25 11:55:10 2013 -0800 - - gl/msaa: Fix a memory leak in _clip_to_traps - - We need to clean up the polygon we create when decomposing a path into - trapezoids. - - src/cairo-gl-msaa-compositor.c | 2 ++ - 1 file changed, 2 insertions(+) - -commit 7054c9969cb0e41845635d6658935da223899f08 -Author: Henry Song -AuthorDate: Wed Jan 16 15:32:32 2013 +0100 -Commit: Martin Robinson -CommitDate: Wed Jan 23 16:55:38 2013 -0800 - - gl: Don't query the display when checking if the context changed - - If display has changed, the associated context must change. A - context is tied a display so we can avoid this check, eliminating - unnecessary work during context acquisition and release. - - src/cairo-egl-context.c | 13 ++++--------- - src/cairo-glx-context.c | 13 ++++--------- - 2 files changed, 8 insertions(+), 18 deletions(-) - -commit fa4f48cccb6c7f4e1afb2ff4b98b906b7d8d4afc -Author: Chris Wilson -AuthorDate: Wed Jan 23 15:04:26 2013 +0000 -Commit: Chris Wilson -CommitDate: Wed Jan 23 15:09:35 2013 +0000 - - xlib: Do not upload the whole image just because we want an entire row - - Fixes regression exposed by - - commit a73e7ff0186176bc82cd3ae1432c054c1fd3aebd - Author: Chris Wilson - Date: Sun Jan 6 11:29:27 2013 +0000 - - xlib: Simplify source creation by use of map-to-image - - but ultimately from - - commit 74941f822015cc50cd8477d0cf97f1a70dbff60b - Author: Chris Wilson - Date: Wed Jan 2 22:27:55 2013 +0000 - - xlib: Use SHM transport for ordinary image uploads - - Reported-by: Gökçen Eraslan - Reported-by: Guillaume Ayoub - Reported-by: Emmanuel Benisty - Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=59635 - Signed-off-by: Chris Wilson - - src/cairo-xlib-source.c | 8 +++++++- - src/cairo-xlib-surface.c | 24 +++++++++++------------- - 2 files changed, 18 insertions(+), 14 deletions(-) - -commit ed2fa6b16b03fccc3e21598cdb9157cbcebd1d37 -Author: Chris Wilson -AuthorDate: Wed Jan 16 20:58:46 2013 +0000 -Commit: Chris Wilson -CommitDate: Wed Jan 16 20:58:46 2013 +0000 - - version: Post-release bump to 1.12.11 - - cairo-version.h | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -commit 2d6204c67d4d0d9c5d03087c4c1609a81ef1fdb7 -Author: Chris Wilson -AuthorDate: Wed Jan 16 20:22:38 2013 +0000 -Commit: Chris Wilson -CommitDate: Wed Jan 16 20:22:38 2013 +0000 - - 1.12.10 release - - NEWS | 49 +++++++++++++++++++++++++++++++++++++++++++++++++ - cairo-version.h | 2 +- - 2 files changed, 50 insertions(+), 1 deletion(-) - -commit 1dfea39841fc6d545e45420b1999239f29556c05 -Author: Martin Robinson -AuthorDate: Tue Jan 15 17:12:23 2013 -0800 -Commit: Martin Robinson -CommitDate: Tue Jan 15 17:14:01 2013 -0800 - - gl: Follow up fix for the previous commit - - Handle "fake" surfaces created by _cairo_gl_pattern_to_source which just - embed a GL backend operand. These surfaces do not have a backend, so we - should not fall back if a surface without a backend is not a texture - surface. - - src/cairo-gl-operand.c | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -commit 769ea3b2c757adc9f8f348fdc93bb46f35c2f6b8 -Author: Henry Song -AuthorDate: Wed May 2 21:54:55 2012 +0200 -Commit: Martin Robinson -CommitDate: Tue Jan 15 15:09:03 2013 -0800 - - gl: Support for non-texture sources and masks - - If a GL surface is not a texture and is used as source or mask, - fall back to using an image surface as an intermediary. - - Fixes subsurface-image-repeat, subsurface-modify-child, - subsurface-modify-parent, subsurface-outside-target, subsurface-pad, - subsurface-reflect, subsurface-repeat, and subsurface-scale. - - src/cairo-gl-operand.c | 3 +++ - 1 file changed, 3 insertions(+) - -commit d01a502710296c9b15755f445f6fdda289a2df0b -Author: Martin Robinson -AuthorDate: Tue Jan 15 12:07:33 2013 -0800 -Commit: Martin Robinson -CommitDate: Tue Jan 15 12:07:33 2013 -0800 - - gl/msaa: Check for more extensions before using MSAA - - The MSAA compositor is implicitly relying on the existence of several - OpenGL extensions. This change makes those dependencies explicit. - - src/cairo-gl-device.c | 33 +++++++++++++++++---------------- - 1 file changed, 17 insertions(+), 16 deletions(-) - -commit 768b81b78eabbebb1bb443355441cac567739035 -Author: Chris Wilson -AuthorDate: Mon Jan 14 03:27:11 2013 +0000 -Commit: Chris Wilson -CommitDate: Mon Jan 14 03:27:11 2013 +0000 - - script: Set decompression length prior to calling decompressors - - Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=59224 - Signed-off-by: Chris Wilson - - util/cairo-script/cairo-script-operators.c | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -commit 6639c1231072d71d33eb0952bae5f95e7480cd0d -Author: Chris Wilson -AuthorDate: Sun Jan 13 22:48:30 2013 +0000 -Commit: Chris Wilson -CommitDate: Sun Jan 13 22:48:30 2013 +0000 - - xlib: Initialise Pixmap for proxy sources - - So that we do not try to tell X to free a garbage pixmap and promptly - kill us. - - Signed-off-by: Chris Wilson - - src/cairo-xlib-source.c | 3 ++- - 1 file changed, 2 insertions(+), 1 deletion(-) - -commit fd34f420ec3ba02eb39f22f6551705ab23ebfc28 -Author: Chris Wilson -AuthorDate: Sun Jan 13 18:16:17 2013 +0000 -Commit: Chris Wilson -CommitDate: Sun Jan 13 18:37:08 2013 +0000 - - compositor: Pass back the internal failure - - In order to pass back a CAIRO_INT_STATUS_UNSUPPORTED, we need to use the - internal error surface creation functions as they do not assert on - private error codes. - - Signed-off-by: Chris Wilson - - src/cairo-mask-compositor.c | 4 ++-- - 1 file changed, 2 insertions(+), 2 deletions(-) - -commit 14c32ee1cf6bfcaeb07d50a80b6d5a388a1f2885 -Author: Chris Wilson -AuthorDate: Sun Jan 13 18:11:31 2013 +0000 -Commit: Chris Wilson -CommitDate: Sun Jan 13 18:37:08 2013 +0000 - - compositor: Convert image surface into backend source - - Before passing a surface to the backend composite functions, they expect - them to be a native source. The copy'n'paste code for the mask - compositor forgot to perform the conversion upon the clip surfaces, - which originally were native to the backend and are now images. - - Signed-off-by: Chris Wilson - - src/cairo-mask-compositor.c | 61 ++++++++++++++++++++++++++++++++++----------- - 1 file changed, 46 insertions(+), 15 deletions(-) - -commit 7012334ebb424b619312e1fa397cc3b8a3ffd770 -Author: Chris Wilson -AuthorDate: Sun Jan 13 17:20:24 2013 +0000 -Commit: Chris Wilson -CommitDate: Sun Jan 13 18:37:08 2013 +0000 - - xlib: Handle lack of XRenderFillRectangles - - Remember to check for a supported render version before making a - FillRectangle request, and fallback to the core protocol where possible - instead. - - Signed-off-by: Chris Wilson - - src/cairo-xlib-core-compositor.c | 79 +++++++++++++++++++++++++++++--------- - src/cairo-xlib-private.h | 15 +++++++- - src/cairo-xlib-render-compositor.c | 30 ++++++++++++--- - src/cairo-xlib-source.c | 70 ++++++++++++++++++++++++++++----- - 4 files changed, 157 insertions(+), 37 deletions(-) - -commit 503b6b9e2ea65805a77d527c00cf242ec86d479b -Author: Chris Wilson -AuthorDate: Fri Jan 11 13:10:56 2013 +0000 -Commit: Chris Wilson -CommitDate: Fri Jan 11 13:18:26 2013 +0000 - - xlib: Only fallback through the mask intermediate if we can composite the mask - - Before rendering into the mask, we should first check whether the - subsequent call to composite the mask will trigger a fallback. In that - case, we should fallback earlier and do the operation in place. - - Signed-off-by: Chris Wilson - - src/cairo-compositor-private.h | 3 +++ - src/cairo-mask-compositor.c | 27 +++++++++++++++++++++++---- - src/cairo-xlib-render-compositor.c | 24 ++++++++++++------------ - 3 files changed, 38 insertions(+), 16 deletions(-) - -commit 1bcd59ef4c9dceaefa51ec6db1f5240d75940724 -Author: Martin Robinson -AuthorDate: Wed Jan 9 14:16:59 2013 -0800 -Commit: Martin Robinson -CommitDate: Wed Jan 9 14:33:41 2013 -0800 - - gl/msaa: Rely on the stencil buffer to cache the clip - - When using a texture surface the depth/stencil buffer is private to - cairo so we can rely on the fact that any previously painted clip is - still valid. - - We also only scissor when there's a previously painted clip on the - stencil buffer, otherwise we disable the scissor test. This fixes a few - test cases. - - src/cairo-gl-composite.c | 58 +++++++++++++++++++++++++++++------------- - src/cairo-gl-msaa-compositor.c | 4 +++ - src/cairo-gl-private.h | 1 + - 3 files changed, 46 insertions(+), 17 deletions(-) - -commit d524697ede85d36e4f88fa44d6a8b884685d804b -Author: Martin Robinson -AuthorDate: Tue Jan 8 17:08:52 2013 -0800 -Commit: Martin Robinson -CommitDate: Wed Jan 9 14:33:41 2013 -0800 - - gl/msaa: No need to set the clip when masking - - After 5e9083f882859201c5df18fc870577a224f88cbb there's no need to set a - clip on the cairo_gl_composite_t when masking. Clips are converted to - traps and rendered directly when masking now. - - src/cairo-gl-msaa-compositor.c | 1 - - 1 file changed, 1 deletion(-) - -commit 17418371b6755ef22b6d0c5787f71de3005e0730 -Author: Chris Wilson -AuthorDate: Wed Jan 9 15:06:28 2013 +0000 -Commit: Chris Wilson -CommitDate: Wed Jan 9 15:06:28 2013 +0000 - - xcb: _cairo_scaled_font_reset_cache does it own locking - - So we can drop ours. - - Signed-off-by: Chris Wilson - - src/cairo-xcb-surface-render.c | 2 -- - 1 file changed, 2 deletions(-) - -commit dd20c1f4d6419238bbb37fb93a48986f83c6e6c2 -Author: Chris Wilson -AuthorDate: Wed Jan 9 12:38:09 2013 +0000 -Commit: Chris Wilson -CommitDate: Wed Jan 9 12:38:09 2013 +0000 - - xlib: map-to-image requires an extents - - Signed-off-by: Chris Wilson - - src/cairo-xlib-source.c | 3 ++- - 1 file changed, 2 insertions(+), 1 deletion(-) - -commit 351a9e756d0863ae7408c6d43a622620daa0c354 -Author: Chris Wilson -AuthorDate: Wed Jan 9 12:31:10 2013 +0000 -Commit: Chris Wilson -CommitDate: Wed Jan 9 12:31:10 2013 +0000 - - stroke: Flip the dev slope as well for computing the cusp on a degeneracy - - Otherwise, the join think it starts and end in exactly the same - direction and elimiates the round capping. - - Signed-off-by: Chris Wilson - - src/cairo-path-stroke-traps.c | 2 ++ - 1 file changed, 2 insertions(+) - -commit 14720cd0dbc325a2140fbd5b2a7ce4b257ae5f5e -Author: Chris Wilson -AuthorDate: Wed Jan 9 12:11:25 2013 +0000 -Commit: Chris Wilson -CommitDate: Wed Jan 9 12:11:25 2013 +0000 - - gstate: Use the polygon intermediate for geometry queries - - Signed-off-by: Chris Wilson - - src/cairo-gstate.c | 24 ++++++++++++------------ - 1 file changed, 12 insertions(+), 12 deletions(-) - -commit a942938e90a219a0b88153f9fa96c606ce644ef1 -Author: Chris Wilson -AuthorDate: Wed Jan 9 00:36:13 2013 +0000 -Commit: Chris Wilson -CommitDate: Wed Jan 9 00:36:13 2013 +0000 - - scaled-font: Fix use after free when clearing the glyph cache - - Signed-off-by: Chris Wilson - - src/cairo-scaled-font.c | 5 +++-- - 1 file changed, 3 insertions(+), 2 deletions(-) - -commit c5b353c3725a1a8c116b790df4206f060d64eb5c -Author: Chris Wilson -AuthorDate: Tue Jan 8 22:56:28 2013 +0000 -Commit: Chris Wilson -CommitDate: Wed Jan 9 00:26:19 2013 +0000 - - scaled-font: Make reset-font-cache threadsafe - - Stop trying to workaround the destroy-callback requiring the font mutex - as we already hold the mutex whilst cleaning up the font caches. - - Signed-off-by: Chris Wilson - - src/cairo-scaled-font.c | 66 +++++++++++++++++++++++-------------------------- - 1 file changed, 31 insertions(+), 35 deletions(-) - -commit d1184b69e8871180b7b357a02d1a0bed3e68d897 -Author: Martin Robinson -AuthorDate: Thu Feb 2 20:38:51 2012 -0800 -Commit: Martin Robinson -CommitDate: Tue Jan 8 15:09:33 2013 -0800 - - gl: Do less work when acquiring and releasing devices - - After acquiring a GL device and the same GL context, surface, and - display combination is already active outside of Cairo, do not ask EGL - or GLX to change the current context as that may cause a flush on some - drivers. Also do not unset the context when releasing the device for the - same reason. - - src/cairo-egl-context.c | 64 ++++++++++++++--- - src/cairo-glx-context.c | 78 ++++++++++++++++---- - test/Makefile.sources | 1 + - test/gl-device-release.c | 182 +++++++++++++++++++++++++++++++++++++++++++++++ - 4 files changed, 301 insertions(+), 24 deletions(-) - -commit 7401455cb4136473521b9f33b09944aa0bc66971 -Author: Chris Wilson -AuthorDate: Tue Jan 8 17:52:04 2013 +0000 -Commit: Chris Wilson -CommitDate: Tue Jan 8 22:26:25 2013 +0000 - - image: Allocate a temporary buffer for inline span composition - - Allow the inpline span compositor to operate on wider images than its - temporary buffer by allocating a scanline mask. - - Signed-off-by: Chris Wilson - - src/cairo-image-compositor.c | 24 ++++++++++++++++++++---- - 1 file changed, 20 insertions(+), 4 deletions(-) - -commit 0d38518c38fec68a1fa8cf9d3ae946faa08d6c42 -Author: Chris Wilson -AuthorDate: Tue Jan 8 18:52:08 2013 +0000 -Commit: Chris Wilson -CommitDate: Tue Jan 8 18:52:08 2013 +0000 - - scaled-font: Remove a non-threadsafe double-freeze assert - - Sadly we cannot check ahead of acquiring the lock whether we hold the - lock. Just have to rely on lockdep. - - Signed-off-by: Chris Wilson - - src/cairo-scaled-font.c | 1 - - 1 file changed, 1 deletion(-) - -commit e4acba6d1ddfe1c6d27b5a77edccea9d69b178f8 -Author: Chris Wilson -AuthorDate: Tue Jan 8 16:38:11 2013 +0000 -Commit: Chris Wilson -CommitDate: Tue Jan 8 16:38:11 2013 +0000 - - xlib/shm: Only destroy an existing damage - - _cairo_damage_destroy() does not like to be passed a NULL. - - Signed-off-by: Chris Wilson - - src/cairo-xlib-surface-shm.c | 6 ++++-- - 1 file changed, 4 insertions(+), 2 deletions(-) - -commit 2ed484817ef3a5084dc65a2ae1acdef551acd107 -Author: Chris Wilson -AuthorDate: Tue Jan 8 16:06:02 2013 +0000 -Commit: Chris Wilson -CommitDate: Tue Jan 8 16:07:32 2013 +0000 - - xlib/shm: Discard damage upon shm finish - - Both to make sure we do not leak the memory, but to also prevent - _cairo_xlib_surface_put_shm() from operating upon the finished shm - surface after the display is closed. - - Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=58253 - Signed-off-by: Chris Wilson - - src/cairo-damage-private.h | 3 +++ - src/cairo-damage.c | 7 +++++++ - src/cairo-xlib-surface-shm.c | 3 +++ - 3 files changed, 13 insertions(+) - -commit b5dcc8ce4450de1e48fd0586fddb5ed658719b28 -Author: Chris Wilson -AuthorDate: Tue Jan 8 11:20:08 2013 +0000 -Commit: Chris Wilson -CommitDate: Tue Jan 8 15:03:25 2013 +0000 - - scaled-font: Hold the scaled font mutex whilst reaping from the global cache - - If we need to reap the global cache, this will call back into the scaled - font to free the glyph page. We therefore need to be careful not to run - concurrently with a user adding to the glyph page, ergo we need locking. - To complicate matters we need to be wary of a lock-inversion as we hold - the scaled_font lock whilst thawing the global cache. We prevent the - deadlock by careful ordering of the thaw-unlock and by inspecting the - current frozen state of the scaled-font before releasing the glyph - page. - - Signed-off-by: Chris Wilson - - src/cairo-scaled-font.c | 9 +++++++-- - 1 file changed, 7 insertions(+), 2 deletions(-) - -commit c4ea7b13b406bf0ea1dc9b337010131d3704bc4a -Author: Chris Wilson -AuthorDate: Tue Jan 8 13:35:43 2013 +0000 -Commit: Chris Wilson -CommitDate: Tue Jan 8 15:03:06 2013 +0000 - - scaled-font: Assert if attempting to finish a frozen font - - Signed-off-by: Chris Wilson - - src/cairo-scaled-font.c | 12 ++++++++++++ - 1 file changed, 12 insertions(+) - -commit 4d4bf8fddff49d349e03282ffa827f6f4659e3fe -Author: Chris Wilson -AuthorDate: Tue Jan 8 14:56:07 2013 +0000 -Commit: Chris Wilson -CommitDate: Tue Jan 8 15:02:27 2013 +0000 - - scaled-font: Free the cached glyphs from the font before taking the global lock - - In the case of a recording surface we may recurse into the global glyph - cache so we need to be careful and stage the ordering of how we free the - glyphs. So first we finish any information and surfaces from the scaled - font glyph cache (and so triggering recursion into other scaled fonts) - and then take the global cache and remove our pages. - - Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=54950 - Signed-off-by: Chris Wilson - - src/cairo-scaled-font.c | 21 ++++++++++++++++++++- - 1 file changed, 20 insertions(+), 1 deletion(-) - -commit 44a093eb95c950b0e8f2d7d1cdb9719cb8a550f7 -Author: Chris Wilson -AuthorDate: Tue Jan 8 14:58:41 2013 +0000 -Commit: Chris Wilson -CommitDate: Tue Jan 8 15:02:26 2013 +0000 - - scaled-font: Always hold the mutex even for single glyph probes - - The freeze/thaw routines have a side-effect of managing the global glyph - cache in addition to taking the mutex on the font. If we don't call - them, we may end up indefinitely keeping the global glyph cache frozen - (effectively leaking glyphs to the maximum of all open fonts) and - triggering asserts. - - Signed-off-by: Chris Wilson - - src/cairo-scaled-font.c | 41 +++++++++++++++++++++-------------------- - 1 file changed, 21 insertions(+), 20 deletions(-) - -commit 80cc532271d7e94ad02732841fbcdc811cce8754 -Author: Chris Wilson -AuthorDate: Tue Jan 8 13:47:23 2013 +0000 -Commit: Chris Wilson -CommitDate: Tue Jan 8 15:01:38 2013 +0000 - - script: Thaw the scaled font cache on the error path - - Signed-off-by: Chris Wilson - - src/cairo-script-surface.c | 4 +++- - 1 file changed, 3 insertions(+), 1 deletion(-) - -commit e1307da8616027004dd6c901017a667b1503781d -Author: Chris Wilson -AuthorDate: Tue Jan 8 12:53:24 2013 +0000 -Commit: Chris Wilson -CommitDate: Tue Jan 8 15:01:37 2013 +0000 - - script: Simply exchange source/dest images for _set_source_image - - But note we can only do the exchange if they do indeed match and - there are no other references (the objects are only on the stack). - - Signed-off-by: Chris Wilson - - util/cairo-script/cairo-script-operators.c | 19 ++++++++++++++----- - 1 file changed, 14 insertions(+), 5 deletions(-) - -commit 146da77d85b304651949a819bc8b0a74819f0416 -Author: Chris Wilson -AuthorDate: Tue Jan 8 12:19:33 2013 +0000 -Commit: Chris Wilson -CommitDate: Tue Jan 8 15:01:37 2013 +0000 - - script: Attempt to decompress images in place - - Signed-off-by: Chris Wilson - - perf/cairo-perf-trace.c | 16 +- - util/cairo-script/cairo-script-interpreter.h | 7 + - util/cairo-script/cairo-script-operators.c | 391 +++++++++++++++------------ - 3 files changed, 247 insertions(+), 167 deletions(-) - -commit 5f2e89660d5e38d8e2682945962521958f150825 -Author: Chris Wilson -AuthorDate: Mon Jan 7 13:11:06 2013 +0000 -Commit: Chris Wilson -CommitDate: Mon Jan 7 17:58:02 2013 +0000 - - image: Call pixman without a mask for opaque regions of inplace_spans - - Speedups - ======== - firefox-paintball 59462.09 -> 40928.76: 1.45x speedup - firefox-fishtank 43687.33 -> 34627.78: 1.26x speedup - firefox-tron 52526.00 -> 45754.73: 1.15x speedup - - However in order to avoid a regression with firefox-talos-svg we need to - prevent splitting up the scanline when using a gradient source. - - Signed-off-by: Chris Wilson - - src/cairo-image-compositor.c | 57 ++++++++++++++++++++++++++++++++++++-------- - 1 file changed, 47 insertions(+), 10 deletions(-) - -commit a73e7ff0186176bc82cd3ae1432c054c1fd3aebd -Author: Chris Wilson -AuthorDate: Sun Jan 6 11:29:27 2013 +0000 -Commit: Chris Wilson -CommitDate: Sun Jan 6 11:30:02 2013 +0000 - - xlib: Simplify source creation by use of map-to-image - - We were open-coding the functionality of map-to-image inside the source - creation routines. so refactor to actually use map-to-image instead. - - Signed-off-by: Chris Wilson - - src/cairo-xlib-source.c | 92 ++++++++++++++++++------------------------------- - 1 file changed, 33 insertions(+), 59 deletions(-) - -commit 4f142f3a7bf24b659c5caccab3a1aedd6b680909 -Author: Chris Wilson -AuthorDate: Sun Jan 6 10:32:25 2013 +0000 -Commit: Chris Wilson -CommitDate: Sun Jan 6 10:32:25 2013 +0000 - - xlib/shm: Only mark the shm pixmap as active if we upload into it - - Be more strict with when we mark the pixmap as active so that we only - wait for the actual XCopyArea involving the pixmap to complete. - - Signed-off-by: Chris Wilson - - src/cairo-xlib-surface-shm.c | 23 ++++++++++++++--------- - 1 file changed, 14 insertions(+), 9 deletions(-) - -commit 45a4b42a361eb791c571b201e11c3505a0a1a396 -Author: Chris Wilson -AuthorDate: Fri Jan 4 17:32:46 2013 +0000 -Commit: Chris Wilson -CommitDate: Sat Jan 5 21:10:35 2013 +0000 - - script: Recompress strings using LZO whilst binding traces - - Try using the lighter-weight LZO decompressor in an effort to speed up - replays (at the cost of making the bound traces slightly larger). - Presuming that with the slight increase in file size (from -1% to +10%), - the file data remains in the readahead buffer cache, replays see a - performance improvement of between 5-10%. - - Signed-off-by: Chris Wilson - - configure.ac | 12 ++ - util/cairo-script/Makefile.am | 2 +- - util/cairo-script/cairo-script-file.c | 32 ++++- - util/cairo-script/cairo-script-objects.c | 3 + - util/cairo-script/cairo-script-operators.c | 45 +++++-- - util/cairo-script/cairo-script-private.h | 5 + - util/cairo-script/cairo-script-scanner.c | 184 ++++++++++++++++++++++------- - 7 files changed, 227 insertions(+), 56 deletions(-) - -commit 9194904fa838a115b4dc58e5bff7a235cc2a9a7a -Author: Martin Robinson -AuthorDate: Fri Jan 4 16:31:01 2013 -0800 -Commit: Martin Robinson -CommitDate: Fri Jan 4 16:31:01 2013 -0800 - - gl: Better handling of clear surfaces - - When clearing a GL surface, set is_clear to true, and when mapping to an - image, handle is_clear like surfaces without modification. Additionally, - explicitly clear surfaces created via cairo_surface_create_similar. - - src/cairo-gl-surface.c | 43 +++++++++++++++++++++++++++++++++++++------ - 1 file changed, 37 insertions(+), 6 deletions(-) - -commit 9bff4508443abe002fcb0ffdb9b1897272f1c588 -Author: Martin Robinson -AuthorDate: Fri Jan 4 15:47:13 2013 -0800 -Commit: Martin Robinson -CommitDate: Fri Jan 4 16:29:51 2013 -0800 - - boilerplate/glx: Add a target with multisampling and stencil support - - Add a gl-window target that supports multisampling. This is useful for - testing the MSAA backend on the default framebuffer. - - boilerplate/cairo-boilerplate-glx.c | 170 ++++++++++++++++++++---------------- - 1 file changed, 96 insertions(+), 74 deletions(-) - -commit 8cd604e18adc1dbe22303d5c57dae374d7e8cd2b -Author: Chris Wilson -AuthorDate: Fri Jan 4 14:03:40 2013 +0000 -Commit: Chris Wilson -CommitDate: Fri Jan 4 14:03:40 2013 +0000 - - gobject: Fix my typo s/TEST/TEXT/ in the previous commit - - Again reported by Kouhei Sutou, who I am grateful for his deligence. - - util/cairo-gobject/cairo-gobject.h | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -commit a4f221498c20bd9bd6178fddc1ba481ff3fd6cb3 -Author: Kouhei Sutou -AuthorDate: Fri Jan 4 12:18:29 2013 +0000 -Commit: Chris Wilson -CommitDate: Fri Jan 4 12:18:29 2013 +0000 - - gobject: Fix "text_cluster_flags_get_type" typo - - The macro missed the text from the name, rendering it useless. - - util/cairo-gobject/cairo-gobject.h | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -commit 9dde964553f74ccbc037b13ca83d0abb46adb194 -Author: Henry Song -AuthorDate: Thu Jan 3 16:03:55 2013 -0800 -Commit: Martin Robinson -CommitDate: Thu Jan 3 16:37:18 2013 -0800 - - gl/msaa: Only clear parts of the stencil buffer we will use - - Writing to the stencil buffer can be expensive, so when using the - stencil buffer for clipping only clear the clip extent. When using the - stencil buffer to prevent overlapping rendering during stroking, only - clear the approximate stroke extents. - - src/cairo-gl-composite.c | 17 ++++++++++------- - src/cairo-gl-msaa-compositor.c | 34 ++++++++++++++++++++++++++++++---- - src/cairo-gl-private.h | 4 ++++ - 3 files changed, 44 insertions(+), 11 deletions(-) - -commit 5e9083f882859201c5df18fc870577a224f88cbb -Author: Alejandro G. Castro -AuthorDate: Wed Mar 7 14:38:52 2012 +0100 -Commit: Martin Robinson -CommitDate: Thu Jan 3 16:37:18 2013 -0800 - - gl/msaa: Avoid the stencil buffer when possible during masking - - In this case we can draw the clip path and avoid the stencil buffer, - which can be expensive. - - src/cairo-gl-msaa-compositor.c | 68 ++++++++++++++++++++++++++++++++---------- - 1 file changed, 53 insertions(+), 15 deletions(-) - -commit dd850583a7f57a666da6af218841bb10b536df46 -Author: Henry Song -AuthorDate: Tue Mar 13 08:43:24 2012 -0700 -Commit: Martin Robinson -CommitDate: Thu Jan 3 15:58:19 2013 -0800 - - gl/msaa: Add full support for masking with the SOURCE operator - - Since OpenGL does not have a means to represent a masking SOURCE - operation in one step, we use two steps combined with the ADD - operator. - - src/cairo-gl-composite.c | 108 +++++++++++++++++++++++++---------------- - src/cairo-gl-msaa-compositor.c | 84 +++++++++++++++++++++++++++++--- - src/cairo-gl-private.h | 9 ++++ - 3 files changed, 152 insertions(+), 49 deletions(-) - -commit c743e93451f467782b861c67a6894df26082d5c6 -Author: Chuanbo Weng -AuthorDate: Wed Jan 2 18:03:44 2013 +0100 -Commit: Martin Robinson -CommitDate: Thu Jan 3 11:40:36 2013 -0800 - - gl: Support the GL_IMG_texture_npot extension - - This extension, used by older PowerVR drivers, is functionally - equivalent to the GL_OES_TEXTURE_NPOT extension. - - src/cairo-gl-device.c | 3 ++- - 1 file changed, 2 insertions(+), 1 deletion(-) - -commit ae1724ced98b86aaf97c7be9c4294fa3823d7350 -Author: Chris Wilson -AuthorDate: Thu Jan 3 13:46:20 2013 +0000 -Commit: Chris Wilson -CommitDate: Thu Jan 3 15:07:18 2013 +0000 - - Add missing local slim proto for cairo_recording_surface_create - - Dependency introduced in 749ef6be4d11b95d666b0e5fe06df926b828d655 - - Signed-off-by: Chris Wilson - - src/cairoint.h | 1 + - 1 file changed, 1 insertion(+) - -commit 872a92b874270ac3b83b0e206fb5b15a7405502a -Author: Chris Wilson -AuthorDate: Thu Jan 3 13:30:13 2013 +0000 -Commit: Chris Wilson -CommitDate: Thu Jan 3 15:07:18 2013 +0000 - - scaled-font: Mention ownership of returned object from get_font_face() - - As suggested by Simon Sapin. - - Signed-off-by: Chris Wilson - - src/cairo-scaled-font.c | 3 ++- - 1 file changed, 2 insertions(+), 1 deletion(-) - -commit 734a541dc34565f40fe0ae4e93c81c4849198a79 -Author: Chris Wilson -AuthorDate: Thu Jan 3 13:01:34 2013 +0000 -Commit: Chris Wilson -CommitDate: Thu Jan 3 15:07:18 2013 +0000 - - xlib: Avoid copying the source twice if it is an image - - Signed-off-by: Chris Wilson - - src/cairo-xlib-source.c | 37 +++++++++++++++++++++++++++---------- - 1 file changed, 27 insertions(+), 10 deletions(-) - -commit ecc8c28b24cb5fcd85aee5d4c82b9ad72c87fa69 -Author: Kouhei Sutou -AuthorDate: Thu Jan 3 12:37:43 2013 +0000 -Commit: Chris Wilson -CommitDate: Thu Jan 3 15:07:18 2013 +0000 - - gobject: Add the correct macro name for the hint-metrics type - - s/CAIRO_GOBJECT_TYPE_HNT_METRICS/CAIRO_GOBJECT_TYPE_HINT_METRICS/ - - However, as we have already released the broken headers, we need to - preserve that mistake in case applications are already using. Since it - is just a #define, there is little associated cost with carrying both - the incorrect spelling and the corrected define. - - util/cairo-gobject/cairo-gobject.h | 2 ++ - 1 file changed, 2 insertions(+) - -commit 5bc1b1f6aac108d9a3963352ad774bb4fcd69e28 -Author: Chris Wilson -AuthorDate: Fri Aug 24 17:22:34 2012 +0100 -Commit: Chris Wilson -CommitDate: Thu Jan 3 15:07:18 2013 +0000 - - stroke: Make the incremental trapezoid stroker optionally available again - - Whilst it cannot handle self-intersecting strokes (which includes the - antialias region of neighbouring lines and joints), it is about 3x - faster to use than the more robust algorithm. As some backends delegate - the rendering, the quality may still be preserved and so they should be - responsible for choosing the appropriate method for generation of the - stroke geometry. - - Signed-off-by: Chris Wilson - - src/Makefile.sources | 1 + - src/cairo-cogl-surface.c | 6 +- - src/cairo-path-stroke-traps.c | 1120 ++++++++++++++++++++++++++++++++++++ - src/cairo-path-stroke.c | 12 +- - src/cairo-recording-surface.c | 12 +- - src/cairo-rectangle.c | 2 +- - src/cairo-stroke-style.c | 39 ++ - src/cairo-traps-compositor.c | 37 +- - src/cairo-traps-private.h | 9 + - src/cairo-traps.c | 252 ++++++++ - src/cairoint.h | 21 +- - src/test-base-compositor-surface.c | 8 +- - 12 files changed, 1489 insertions(+), 30 deletions(-) - -commit 74941f822015cc50cd8477d0cf97f1a70dbff60b -Author: Chris Wilson -AuthorDate: Wed Jan 2 22:27:55 2013 +0000 -Commit: Chris Wilson -CommitDate: Thu Jan 3 12:28:33 2013 +0000 - - xlib: Use SHM transport for ordinary image uploads - - In theory this should just save a single copy, however PutImage will - break up requests into a series of scanlines requests which is less - efficient than the single-shot transfer provided by ShmPutImage. - - Signed-off-by: Chris Wilson - - src/cairo-xlib-surface.c | 100 ++++++++++++++++++++++++++++++++++++----------- - 1 file changed, 77 insertions(+), 23 deletions(-) - -commit bf2a04c5ab91c93d4d188afd030b3004c67a180f -Author: Chris Wilson -AuthorDate: Thu Jan 3 12:24:14 2013 +0000 -Commit: Chris Wilson -CommitDate: Thu Jan 3 12:27:34 2013 +0000 - - xlib/shm: Fix typo in creation of a SHM image - - Pass along the size the caller requests, not the size of the related - drawable. - - Signed-off-by: Chris Wilson - - src/cairo-xlib-surface-shm.c | 8 +++----- - 1 file changed, 3 insertions(+), 5 deletions(-) - -commit c29ab389fb2b3b91c895f2df684b0e9af8225d12 -Author: Chris Wilson -AuthorDate: Sun Dec 30 12:32:45 2012 +0000 -Commit: Chris Wilson -CommitDate: Sun Dec 30 12:54:26 2012 +0000 - - gl: Provide a fast emitter for solid spans - - Signed-off-by: Chris Wilson - - src/cairo-gl-composite.c | 55 +++++++++++++++++++++++++++++++++++++++++++----- - 1 file changed, 50 insertions(+), 5 deletions(-) - -commit d3848521c497dbcd3d9ae0fab34fa70c72752e60 -Author: Chris Wilson -AuthorDate: Sun Dec 30 12:32:45 2012 +0000 -Commit: Chris Wilson -CommitDate: Sun Dec 30 12:47:02 2012 +0000 - - gl: Provide a fast emitter for solid glyphs - - Signed-off-by: Chris Wilson - - src/cairo-gl-composite.c | 62 ++++++++++++++++++++++++++++++++++++++---------- - 1 file changed, 49 insertions(+), 13 deletions(-) - -commit 127dd466695dcb05e6178e4ed2471dba1b229d17 -Author: Chris Wilson -AuthorDate: Sun Dec 30 12:21:11 2012 +0000 -Commit: Chris Wilson -CommitDate: Sun Dec 30 12:21:11 2012 +0000 - - gl: Use vfunc for vertex emission - - In order to overload the emitters in future to provide specialised - routines for the common types of operands, begin by switching the - current users over to a vfunc interface. - - Signed-off-by: Chris Wilson - - src/cairo-gl-composite.c | 107 +++++++++++++++++++++++++++---------- - src/cairo-gl-glyphs.c | 11 ++-- - src/cairo-gl-private.h | 48 ++++++++++------- - src/cairo-gl-spans-compositor.c | 115 ++++++++++++++++++++++------------------ - src/cairo-gl-surface.c | 2 +- - src/cairo-gl-traps-compositor.c | 21 ++++---- - 6 files changed, 190 insertions(+), 114 deletions(-) - -commit 9558cb62c6a3ed59a53f00f740a261251b9b64b2 -Author: Chris Wilson -AuthorDate: Sat Dec 29 18:30:48 2012 +0000 -Commit: Chris Wilson -CommitDate: Sat Dec 29 18:51:54 2012 +0000 - - perf/chart: Contract the default output filenames - - Signed-off-by: Chris Wilson - - perf/cairo-perf-chart.c | 4 +--- - 1 file changed, 1 insertion(+), 3 deletions(-) - -commit fbd4864995e261a4cfc5e53273b53ce8a22d72db -Author: Chris Wilson -AuthorDate: Sat Dec 29 18:30:48 2012 +0000 -Commit: Chris Wilson -CommitDate: Sat Dec 29 18:30:48 2012 +0000 - - perf/chart: Show the geometric average as an extra column - - Signed-off-by: Chris Wilson - - perf/cairo-perf-chart.c | 112 +++++++++++++++++++++++++++++++++++++++++++++++- - 1 file changed, 111 insertions(+), 1 deletion(-) - -commit 71028865fae38bf26c45aae72e0a6773a19a640d -Author: Chris Wilson -AuthorDate: Sat Dec 29 15:05:53 2012 +0000 -Commit: Chris Wilson -CommitDate: Sat Dec 29 15:05:53 2012 +0000 - - Revert "xlib/shm: Do not trigger a surplus event from XShmPutImage" - - This reverts commit c97f2d4acd5c4a1a4b839c72626f84e242e60b23. - - Testing suggests that keeping that event is a win; so do so. - - src/cairo-xlib-surface.c | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -commit c97f2d4acd5c4a1a4b839c72626f84e242e60b23 -Author: Chris Wilson -AuthorDate: Sat Dec 29 14:56:24 2012 +0000 -Commit: Chris Wilson -CommitDate: Sat Dec 29 14:56:24 2012 +0000 - - xlib/shm: Do not trigger a surplus event from XShmPutImage - - As our lazy event mechanism is sufficient for tracking when to reuse shm - memory, and the events are not necessary for ShmPut/ShmGetImage paths. - - Signed-off-by: Chris Wilson - - src/cairo-xlib-surface.c | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -commit 0c84a5474d4e90fc9361ccbb0ebc3d0580bad82b -Author: Chris Wilson -AuthorDate: Sat Dec 29 11:41:17 2012 +0000 -Commit: Chris Wilson -CommitDate: Sat Dec 29 14:55:17 2012 +0000 - - xlib/shm: Rate-limit events and only use as necessary - - Signed-off-by: Chris Wilson - - src/cairo-xlib-render-compositor.c | 4 +- - src/cairo-xlib-surface-shm.c | 110 ++++++++++++++++++++++++++----------- - 2 files changed, 79 insertions(+), 35 deletions(-) - -commit 21db1c99108dc84166cbd9641f3256b22f571ee3 -Author: Martin Robinson -AuthorDate: Fri Dec 28 14:10:29 2012 -0800 -Commit: Martin Robinson -CommitDate: Fri Dec 28 14:29:24 2012 -0800 - - gl: Cleanup selection of multisampling mode - - Fold the choice of multisampling mode into the cairo_gl_composite_t - structure itself. This makes it more similar to other settings. - - src/cairo-gl-composite.c | 20 +++++++++----------- - src/cairo-gl-msaa-compositor.c | 14 +++++++++----- - src/cairo-gl-private.h | 9 ++++----- - 3 files changed, 22 insertions(+), 21 deletions(-) - -commit 7d02e2d62d1d2d2852f256905af60f418216b9ea -Author: Chris Wilson -AuthorDate: Sun Dec 23 11:12:21 2012 +0000 -Commit: Chris Wilson -CommitDate: Sun Dec 23 11:19:16 2012 +0000 - - xlib/shm: Populate send_event and serial - - Hopefully this random choice is more meaningful than random junk. - - Bugzilla; https://bugs.freedesktop.org/show_bug.cgi?id=58672 - Signed-off-by: Chris Wilson - - src/cairo-xlib-surface-shm.c | 4 ++++ - 1 file changed, 4 insertions(+) - -commit e748c122435c1047894f73c14266bc81ad2edecd -Author: Adrian Johnson -AuthorDate: Sat Dec 22 18:34:43 2012 +1030 -Commit: Adrian Johnson -CommitDate: Sat Dec 22 18:34:43 2012 +1030 - - doc: Add CAIRO_MIME_TYPE_UNIQUE_ID to list of supported mime types - - src/cairo-surface.c | 3 ++- - 1 file changed, 2 insertions(+), 1 deletion(-) - -commit 4e751fcb031557e6ad720f5bf5f14e181564ab9b -Author: David Maxwell -AuthorDate: Thu Oct 11 08:52:36 2012 -0800 -Commit: Adrian Johnson -CommitDate: Sat Dec 22 14:36:38 2012 +1030 - - type1-subset: always include subroutine 4 (hint replacement idiom) - - http://lists.cairographics.org/archives/cairo/2012-December/023846.html - - src/cairo-type1-subset.c | 4 ++-- - 1 file changed, 2 insertions(+), 2 deletions(-) - -commit b94a519aad3d5b50aa6de47ee16ee6a099de9791 -Author: Behdad Esfahbod -AuthorDate: Fri Dec 21 18:40:08 2012 -0500 -Commit: Behdad Esfahbod -CommitDate: Fri Dec 21 18:47:16 2012 -0500 - - [ft] Fix resizing of bitmap fonts - - Say, you were asking cairo for a font at 200px. For bitmap-only fonts, - cairo was finding the closes strike size and using it. If the strike - was at 20px, well, that's what you were getting. We now scale that 20px - strike by a factor of 10 to get the correct size rendering. - - Note that by itself this patch doesn't change much on the Linux desktop. - The reason is that the size you are interested in (eg. 200px) is lost by - fontconfig. When you request a font at 200px, fontconfig returns a font - pattern that says 20px, and so the next layers thing you want a font at - 20px. To address that, one also needs a piece of fontconfig config that - puts the 200 back into the pixelsize. Something like this: - - - - false - - - - size - dpi - 0.0138888888888 - - - - - I'm going to try to upstream this config so it will be enabled by - default. The config can be a bit smarter. For example, if - metricshinting is enabled and the size difference is small, we may as - well not scale. - - The nice thing about this is that the configuration of whether and when - to scale bitmaps will be done in fontconfig, not cairo / Qt / ... code. - - src/cairo-ft-font.c | 66 +++++++++++++++++++++++++++-------------------------- - 1 file changed, 34 insertions(+), 32 deletions(-) - -commit 1404ed9692af1958b4090c46d1a27e0fe4a5616e -Author: Behdad Esfahbod -AuthorDate: Fri Dec 21 18:35:41 2012 -0500 -Commit: Behdad Esfahbod -CommitDate: Fri Dec 21 18:47:10 2012 -0500 - - [ft] Remove ancient check for FT_Bitmap_Size.y_ppem - - That member is available in the version of FreeType we require. - - configure.ac | 7 ------- - src/cairo-ft-font.c | 11 +---------- - 2 files changed, 1 insertion(+), 17 deletions(-) - -commit 867c876b0e7ce3dcc8afc7227ef6317701a6dda0 -Author: Behdad Esfahbod -AuthorDate: Wed Nov 7 14:30:35 2012 -0800 -Commit: Behdad Esfahbod -CommitDate: Fri Dec 21 18:46:56 2012 -0500 - - [Minor] Improve logging - - src/cairo-xlib-render-compositor.c | 2 ++ - src/cairoint.h | 2 +- - 2 files changed, 3 insertions(+), 1 deletion(-) - -commit 5d21c9e224617110678a5b854a6a41049a02fca2 -Author: Adam Jackson -AuthorDate: Tue Dec 18 13:33:13 2012 -0500 -Commit: Chris Wilson -CommitDate: Tue Dec 18 20:27:19 2012 +0000 - - xlib/shm: Fix memory leak - - Despite subclassing image surfaces, we never called down to the image - surface destructor, so we leaked a pixman_image_t every time. - - Bugzilla: https://bugzilla.redhat.com/show_bug.cgi?id=882976 - Signed-off-by: Adam Jackson - - src/cairo-xlib-surface-shm.c | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -commit 51435eeb0c4d9e53d76dae8b5af279ad518a05f8 -Author: Uli Schlachter -AuthorDate: Mon Dec 17 18:33:22 2012 +0100 -Commit: Uli Schlachter -CommitDate: Mon Dec 17 18:37:10 2012 +0100 - - xcb: Fix xcb-huge-subimage - - This teaches the xcb backend how to split up a PutImage request for a subimage - into multiple requests. The backend already does the same for "normal" PutImage - where it doesn't have to assemble the image from various rows. - - Signed-off-by: Uli Schlachter - - src/cairo-xcb-connection-core.c | 72 +++++++++++++++++++++++++++++++++-------- - 1 file changed, 58 insertions(+), 14 deletions(-) - -commit 5fb364287f96e4457d8df107ba3d0dc3f99f6f04 -Author: Uli Schlachter -AuthorDate: Mon Dec 17 18:29:21 2012 +0100 -Commit: Uli Schlachter -CommitDate: Mon Dec 17 18:37:10 2012 +0100 - - test: Add xcb-huge-subimage - - This creates an image surface with a non-natural stride and paints it to a - similar surface. - - In the xcb backend, this causes a call to _cairo_xcb_connection_put_subimage() - which tries to send a huge PutImage request. As a result, xcb kills the X11 - connection. - - Signed-off-by: Uli Schlachter - - test/Makefile.sources | 1 + - test/reference/xcb-huge-subimage.ref.png | Bin 0 -> 97 bytes - test/xcb-huge-subimage.c | 81 +++++++++++++++++++++++++++++++ - 3 files changed, 82 insertions(+) - -commit 749ef6be4d11b95d666b0e5fe06df926b828d655 -Author: Uli Schlachter -AuthorDate: Mon Dec 17 17:45:25 2012 +0100 -Commit: Uli Schlachter -CommitDate: Mon Dec 17 18:37:09 2012 +0100 - - context: Use recording surfaces for unbounded groups - - The old code uses an uninitialized variable for the extents of the group that is - created. This patch makes it use an unbounded recording surface instead. - - This has the implicit assumption that everything that is unbounded smells like a - recording surface. Let's see when this assumption breaks. :-) - - http://lists.cairographics.org/archives/cairo/2012-October/023585.html - - Signed-off-by: Uli Schlachter - - src/cairo-default-context.c | 23 ++++++++++++++--------- - 1 file changed, 14 insertions(+), 9 deletions(-) - -commit 433a5829d7c38a9301346fc5a643e623565c1625 -Author: Martin Robinson -AuthorDate: Mon Dec 17 17:53:33 2012 +0100 -Commit: Martin Robinson -CommitDate: Mon Dec 17 17:56:19 2012 +0100 - - Revert "gl/msaa: Share the depth/stencil buffer among all surfaces" - - This was pushed mistakenly. Sorry. - - This reverts commit a7d684e6fe4bbeea2262276aaa57bb2a47c401df. - - src/cairo-gl-device.c | 118 ++++++++++++++----------------------------------- - src/cairo-gl-private.h | 13 ------ - src/cairo-gl-surface.c | 31 ++----------- - 3 files changed, 38 insertions(+), 124 deletions(-) - -commit 000a137a6554cfc350407f3b719fb4aa3a1c33c6 -Author: Uli Schlachter -AuthorDate: Mon Dec 17 17:12:59 2012 +0100 -Commit: Uli Schlachter -CommitDate: Mon Dec 17 17:12:59 2012 +0100 - - boilerplate-xcb: Ignore MappingNotify events - - The boilerplate code makes sure that our tests didn't cause any X11 errors or - X11 events, because those might confuse API users. - - However, when the keyboard layout changes, every connection gets a MappingNotify - event. This means that the test and performance test suites failed when the - keyboard layout was changed while they are running. - - Fix this by ignoring MappingNotifies. - - Reported by Arthur Huillet on IRC. - - Signed-off-by: Uli Schlachter - - boilerplate/cairo-boilerplate-xcb.c | 10 ++++++++-- - 1 file changed, 8 insertions(+), 2 deletions(-) - -commit 9d9aa04b60e24542b6b2a4c6bf87115db7736c2f -Author: Martin Robinson -AuthorDate: Mon Dec 3 16:08:23 2012 -0800 -Commit: Martin Robinson -CommitDate: Mon Dec 10 10:18:15 2012 +0100 - - gl: Add BGRA download support for GLES2 - - Some OpenGLES2 drivers support downloading BGRA data. On little-endian - systems BGRA and GL_UNSIGNED_BYTe is equivalent to the typical - cairo_image_t format, so this can prevent CPU bit swizzling for - operations that involve images. - - src/cairo-gl-device.c | 18 ++++++++++++++++++ - src/cairo-gl-private.h | 1 + - src/cairo-gl-surface.c | 51 +++++++++++++++++++++++++------------------------- - 3 files changed, 44 insertions(+), 26 deletions(-) - -commit a7d684e6fe4bbeea2262276aaa57bb2a47c401df -Author: Martin Robinson -AuthorDate: Mon Mar 5 23:11:19 2012 -0800 -Commit: Martin Robinson -CommitDate: Sat Dec 8 13:31:13 2012 +0100 - - gl/msaa: Share the depth/stencil buffer among all surfaces - - Instead of allocating a depth/stencil buffer for all surfaces, share a - common buffer that's the size of the largest surface. This reduces - video memory usage when there are many GL surfaces. - - src/cairo-gl-device.c | 118 +++++++++++++++++++++++++++++++++++-------------- - src/cairo-gl-private.h | 13 ++++++ - src/cairo-gl-surface.c | 31 +++++++++++-- - 3 files changed, 124 insertions(+), 38 deletions(-) - -commit ba4a4eae051cd932e59e3092ef36d4f6cded0159 -Author: Chuanbo Weng -AuthorDate: Tue Oct 2 13:58:49 2012 +0200 -Commit: Martin Robinson -CommitDate: Wed Dec 5 16:17:10 2012 -0800 - - gl/msaa: Use GL_IMG_multisampled_render_to_texture when available - - Some OpenGLES platforms support GL_IMG_multisampled_render_to_texture - instead of GL_EXT_multisampled_render_to_texture. - - src/cairo-gl-device.c | 8 ++++++++ - src/cairo-gl-dispatch-private.h | 10 +++++++--- - src/cairo-gl-dispatch.c | 26 ++++++++++++++++++++++++++ - 3 files changed, 41 insertions(+), 3 deletions(-) - -commit 3bedff0c009e645fff2d6f40976b4483871e73e1 -Author: Henry Song -AuthorDate: Tue May 15 20:32:44 2012 +0200 -Commit: Martin Robinson -CommitDate: Wed Dec 5 15:56:35 2012 -0800 - - gl: Properly disable ctx->spans when necessary - - When compositing starts, if we are not using the spans compositor, we - should set the spans member of the context to false. - - src/cairo-gl-composite.c | 14 ++++++++++---- - 1 file changed, 10 insertions(+), 4 deletions(-) - -commit 18e7234c7e56ca26d7d7a2e29b1da2bb6944bb34 -Author: Henry Song -AuthorDate: Wed May 23 15:12:16 2012 +0200 -Commit: Martin Robinson -CommitDate: Wed Dec 5 15:30:28 2012 -0800 - - gl/msaa: Also setmsaa_active to true for non-texture surfaces - - This is important because there are places in the code where msaa_active - is used to decide whether or not to complete an operation with - multisampling or not. - - src/cairo-gl-device.c | 1 + - 1 file changed, 1 insertion(+) - -commit 9f43f096b22a13f02d638b86b4460c7ed66d3c96 -Author: Henry Song -AuthorDate: Sat Dec 1 17:08:56 2012 +0000 -Commit: Chris Wilson -CommitDate: Sat Dec 1 17:08:56 2012 +0000 - - gl: Flush context upon evicting a gradient - - As the random selection of a gradient can possible destroy the currently - active gradient, we need to flush the context in order to flush any - references to the texture before deletion. - - src/cairo-gl-gradient.c | 2 ++ - 1 file changed, 2 insertions(+) - -commit a0fb1391315033de54368715a8855aedea258e67 -Author: Chris Wilson -AuthorDate: Sat Dec 1 09:21:15 2012 +0000 -Commit: Chris Wilson -CommitDate: Sat Dec 1 09:23:37 2012 +0000 - - mempool: Reduce the assertion into an alignment adjustment for the base - - Instead of asserting that the caller passed in a chunk-aligned base - pointer, just perform the fixup whilst initialising the mempool. This - means that the caller (xcb!) cannot assume that the mempool->base is - then the same base pointer as passed in and so needs to store it - separately for use in computing SHM offsets. - - Signed-off-by: Chris Wilson - - src/cairo-mempool.c | 9 +++++++++ - src/cairo-xcb-shm.c | 14 +++++++------- - 2 files changed, 16 insertions(+), 7 deletions(-) - -commit 153b11612f34294241429b53722839984f367f2e -Author: Chris Wilson -AuthorDate: Wed Nov 28 09:57:29 2012 +0000 -Commit: Chris Wilson -CommitDate: Wed Nov 28 09:57:29 2012 +0000 - - script: Fix map-to-image/unmap stack manipulations - - The idiom (and expectation) for surface operators is that it leaves the - surface on the stack for the next operation. Also we need to hold onto a - surface reference for objects put onto the stack, yet for the - map-to-image return we did not own one. - - Signed-off-by: Chris Wilson - - util/cairo-script/cairo-script-operators.c | 6 +++--- - 1 file changed, 3 insertions(+), 3 deletions(-) - -commit dfbf80a57d161707d105d1b5711c85890fe18a6d -Author: Chris Wilson -AuthorDate: Tue Nov 27 12:25:56 2012 +0000 -Commit: Chris Wilson -CommitDate: Wed Nov 28 09:36:59 2012 +0000 - - trace: Do not forcibly add surfaces to the dictionary - - Adjust the stack manipulation to avoid moving an unknown surface to - the dictionary. - - Reported-by: Dongyeon Kim - Signed-off-by: Chris Wilson - - util/cairo-trace/trace.c | 50 +++++++++++++++++++++++++++++++----------------- - 1 file changed, 32 insertions(+), 18 deletions(-) - -commit 376d39121c0d4eba8f0a22be71f782ce18e50923 -Author: Chris Wilson -AuthorDate: Tue Nov 27 12:25:56 2012 +0000 -Commit: Chris Wilson -CommitDate: Tue Nov 27 12:25:56 2012 +0000 - - trace: Fix operand emission for map-to-image and unmap-image - - Reported-by: Dongyeon Kim - Signed-off-by: Chris Wilson - - util/cairo-trace/trace.c | 58 ++++++++++++++++++++++++++++-------------------- - 1 file changed, 34 insertions(+), 24 deletions(-) - -commit 62b795fe52c73ad58101c101aa77449f4b61a576 -Author: Zozó Teki -AuthorDate: Sat Nov 10 08:35:33 2012 +0000 -Commit: Chris Wilson -CommitDate: Sat Nov 10 08:37:23 2012 +0000 - - recording: Append new elements to the end of the bbtree chain - - I have noticed that some of my objects were lost when drawing them on - a recording surface and playing them back. Later elements with the same - extents as a prior one tend to disappear from the chain of headers - having similar extents. After doing some debugging, I found that they - are not properly added to the bbtree during playback, and were instead - clobbering the existing chain. - - src/cairo-recording-surface.c | 5 ++++- - 1 file changed, 4 insertions(+), 1 deletion(-) - -commit 6ed1da67b5814c5ff062831f17621a585f81d704 -Author: Chris Wilson -AuthorDate: Sun Nov 4 15:34:34 2012 +0000 -Commit: Chris Wilson -CommitDate: Sun Nov 4 15:34:34 2012 +0000 - - version: Post-release bump to 1.12.9 - - cairo-version.h | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -commit cc162915a55cc67587677352bd9e389f16117853 -Author: Chris Wilson -AuthorDate: Sun Nov 4 14:23:09 2012 +0000 -Commit: Chris Wilson -CommitDate: Sun Nov 4 14:23:09 2012 +0000 - - 1.12.8 release - - NEWS | 42 ++++++++++++++++++++++++++++++++++++++++++ - cairo-version.h | 2 +- - 2 files changed, 43 insertions(+), 1 deletion(-) - -commit cf07bd866dc3fdbfaf3d7e7fdc83cc2a4ef5698c -Author: Adrian Johnson -AuthorDate: Sat Nov 3 11:08:01 2012 +1030 -Commit: Adrian Johnson -CommitDate: Sat Nov 3 11:08:01 2012 +1030 - - type1-subset: remove unused variable - - src/cairo-type1-subset.c | 4 ---- - 1 file changed, 4 deletions(-) - -commit 9f537156adcab5e7a9b21cd2bb5cc7676db52713 -Author: Adrian Johnson -AuthorDate: Sat Nov 3 11:07:02 2012 +1030 -Commit: Adrian Johnson -CommitDate: Sat Nov 3 11:07:02 2012 +1030 - - type1-subset: fix memory leak - - src/cairo-type1-subset.c | 52 ++++++++++++++++++++++++++++++------------------ - 1 file changed, 33 insertions(+), 19 deletions(-) - -commit 724c6dfa9521e887682029add879c2fcdd518b14 -Author: Chris Wilson -AuthorDate: Fri Nov 2 16:54:46 2012 +0000 -Commit: Chris Wilson -CommitDate: Fri Nov 2 17:01:07 2012 +0000 - - xlib/shm: Need IncludeInferiors when creating the source fallback - - Reported-by: Benjamin Otte - Signed-off-by: Chris Wilson - - src/cairo-xlib-surface-shm.c | 14 ++++++++++++++ - 1 file changed, 14 insertions(+) - -commit 1f4d05b55c96347aa4240190fda27f951b00c539 -Author: Chris Wilson -AuthorDate: Fri Nov 2 14:52:03 2012 +0000 -Commit: Chris Wilson -CommitDate: Fri Nov 2 14:53:18 2012 +0000 - - stroke: Fix calling '_cairo_spline_intersect' for in-bounds checking of splines - - Fixes stroke-clipped, within reason. There still remains some - antialiasing noise (between rendering the circle piecewise and wholly) - worth investigating - but that is probably an artefact of switching - between analytical rendering modes in the scanline - rasterisation. - - Signed-off-by: Chris Wilson - - src/cairo-path-stroke-polygon.c | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -commit 2dd4ff32064c3c564e0902ae07330272e6676c22 -Author: Chris Wilson -AuthorDate: Fri Nov 2 14:48:40 2012 +0000 -Commit: Chris Wilson -CommitDate: Fri Nov 2 14:48:40 2012 +0000 - - test: Add stroke-clipped - - Exercise a bug in the determine of clip-bounds when stroking, as - reported by ed44. - - Signed-off-by: Chris Wilson - - test/Makefile.sources | 1 + - test/reference/stroke-clipped.ref.png | Bin 0 -> 5886 bytes - test/stroke-clipped.c | 54 ++++++++++++++++++++++++++++++++++ - 3 files changed, 55 insertions(+) - -commit e9d45705844f67f4c8342d68fe35ad08ea008e30 -Author: Chris Wilson -AuthorDate: Thu Nov 1 11:42:46 2012 +0000 -Commit: Chris Wilson -CommitDate: Thu Nov 1 11:42:46 2012 +0000 - - pen: Tighten checking for bevel (start==stop) joins - - From commit d7f5a1bec421d6c7b92d16daae681fa31ac7c212 - Author: Chris Wilson - Date: Wed Oct 31 09:27:52 2012 +0000 - - pen: First check whether the in/out edges lie within the single pen vertex - - makes a couple of tests much happier. - - Signed-off-by: Chris Wilson - - src/cairo-pen.c | 4 ++-- - 1 file changed, 2 insertions(+), 2 deletions(-) - -commit 90860241bb8f8eff3c1ab40641b1bfca0798b238 -Author: Chris Wilson -AuthorDate: Thu Nov 1 09:47:00 2012 +0000 -Commit: Chris Wilson -CommitDate: Thu Nov 1 09:47:00 2012 +0000 - - gl: Tune the default VBO size to reduce overhead on embedded devices - - Henry Song found that the 256k buffers were disadvantageous on his - embedded hardware. As there is no obvious right value for the default - VBO size, we can tune for the more obvious constraints. - - Based on a patch by Henry Song - Signed-off-by: Chris Wilson - - src/cairo-gl-private.h | 6 ++++-- - 1 file changed, 4 insertions(+), 2 deletions(-) - -commit 0c1ff1572f1fc4c11b429e39f7de798030530740 -Author: Chris Wilson -AuthorDate: Thu Nov 1 08:45:37 2012 +0000 -Commit: Chris Wilson -CommitDate: Thu Nov 1 08:45:37 2012 +0000 - - xlib: Fixup standalone header compilation for 'make check' - - Missing include of string.h - - Signed-off-by: Chris Wilson - - src/cairo-xlib-private.h | 1 + - 1 file changed, 1 insertion(+) - -commit b6daf47fa08c74d9672040b2b98ac6dd1f841429 -Author: Chris Wilson -AuthorDate: Thu Nov 1 08:39:01 2012 +0000 -Commit: Chris Wilson -CommitDate: Thu Nov 1 08:43:26 2012 +0000 - - spans: Do not assume that we manage to perform the clip geometrically - - Even for bounded masks, we may fail to perform the clipping - geometrically for a variety of reasons, the prime one being that the - clip has a mixture of antialias settings. So when compositing the - polygon, we need to check whether a clip path still remains and so - requires a clipmask. - - Fixes regression from - - commit cd1004ce19c7ea28c7fedb6464562a08416586c0 - Author: Chris Wilson - Date: Fri May 11 21:20:35 2012 +0100 - - traps,spans-compositor: Avoid mistreating unaligned clips as aligned - - and - - commit 4ea3ace6c810ba090464e48795fac5456f6cdc24 - Author: Chris Wilson - Date: Fri May 11 21:51:44 2012 +0100 - - spans: Only fallback for a clipmask if unbounded - - Reported-by: Dominik Röttsches - Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=56574 - Signed-off-by: Chris Wilson - - src/cairo-spans-compositor.c | 8 ++++++-- - 1 file changed, 6 insertions(+), 2 deletions(-) - -commit 5844dead01db9ddab7f10a4d685bc5ee874d0eba -Author: Chris Wilson -AuthorDate: Thu Nov 1 08:37:58 2012 +0000 -Commit: Chris Wilson -CommitDate: Thu Nov 1 08:37:58 2012 +0000 - - util/show-polygon: Show the limited range of each edge - - Signed-off-by: Chris Wilson - - util/show-polygon.c | 52 ++++++++++++++++++++++++++++++++++++++++++++++++---- - 1 file changed, 48 insertions(+), 4 deletions(-) - -commit 03adea2f50aa10d49ff578389927e7b37e265918 -Author: Chris Wilson -AuthorDate: Thu Nov 1 08:37:01 2012 +0000 -Commit: Chris Wilson -CommitDate: Thu Nov 1 08:37:01 2012 +0000 - - stroke: Precompute the line half-width - - As we regularly recompute stroke->line_width/2 we may as compute it once - during initialisation. - - Signed-off-by: Chris Wilson - - src/cairo-path-stroke.c | 17 +++++++++-------- - 1 file changed, 9 insertions(+), 8 deletions(-) - -commit dbc0d83f2a7a0e6658f3b97b5f9921c44ef6a11f -Author: Chris Wilson -AuthorDate: Wed Oct 31 15:18:21 2012 +0000 -Commit: Chris Wilson -CommitDate: Wed Oct 31 15:18:21 2012 +0000 - - image: Add a couple of tracepoints for spans fallbacks - - References: https://bugs.freedesktop.org/show_bug.cgi?id=56574 - Signed-off-by: Chris Wilson - - src/cairo-image-compositor.c | 3 ++- - src/cairo-spans-compositor.c | 13 ++++++++++--- - 2 files changed, 12 insertions(+), 4 deletions(-) - -commit 9b7ed9b2cd6c9ee4dfab71aed9b7d97b720fceb0 -Author: Chris Wilson -AuthorDate: Wed Oct 31 13:15:07 2012 +0000 -Commit: Chris Wilson -CommitDate: Wed Oct 31 13:15:07 2012 +0000 - - xlib/shm: Fix bogus assertion without shm available - - In particular note that _cairo_xlib_surface_put_shm is indeed called and - is expected to be a no-op when shm is not available. - - Reported-by: Thomas Klausner - Signed-off-by: Chris Wilson - - src/cairo-xlib-surface-shm.c | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -commit d7f5a1bec421d6c7b92d16daae681fa31ac7c212 -Author: Chris Wilson -AuthorDate: Wed Oct 31 09:27:52 2012 +0000 -Commit: Chris Wilson -CommitDate: Wed Oct 31 09:27:52 2012 +0000 - - pen: First check whether the in/out edges lie within the single pen vertex - - In order to prevent underflow when searching for the closing pen vertex, - we first need to be sure that it does not simply lie next to the opening - pen vertex. As a result we were missing many cases that should have been - a bevel (in == out) and generating almost complete round caps instead. - - Reported-by: Dominik Röttsches - Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=56432 - Signed-off-by: Chris Wilson - - src/cairo-pen.c | 60 +++++++++++++++++--------------- - test/reference/arc-looping-dash.ref.png | Bin 502 -> 464 bytes - test/reference/caps-tails-curve.ref.png | Bin 54750 -> 54314 bytes - test/reference/reflected-stroke.ref.png | Bin 5139 -> 5116 bytes - 4 files changed, 32 insertions(+), 28 deletions(-) - -commit 66625cb46c985321c46b79d2163a4d676d6700ba -Author: Chris Wilson -AuthorDate: Tue Oct 30 12:40:41 2012 +0000 -Commit: Chris Wilson -CommitDate: Tue Oct 30 12:40:41 2012 +0000 - - xlib: Apply the image offsets to the destination rather the source - - So that we can specify the entire source surface as the region to copy - and not introduce clipping errors. - - Fixes regression from - commit c068691ff57c2f6cd750a54db17393c0e132cb00 - Author: Chris Wilson - Date: Fri Aug 17 21:33:54 2012 +0100 - - xlib/shm: Use an impromptu upload ShmSegment - - Reported-by: John Lindgren - Reported-by: Kalev Lember - Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=56547 - Signed-off-by: Chris Wilson - - src/cairo-xlib-render-compositor.c | 22 ++++++++++------------ - 1 file changed, 10 insertions(+), 12 deletions(-) - -commit 65176b7380f0d633da514be1febe16f17b99d876 -Author: Kevin Tardif -AuthorDate: Tue Oct 30 00:27:27 2012 -0400 -Commit: Adrian Johnson -CommitDate: Tue Oct 30 20:50:00 2012 +1030 - - type1-subset, cff-subset: Plugged 2 memory leaks - - - _cairo_type1_font_subset_fini doesn't free font->cleartext - - _cairo_cff_font_create can exit without freeing font->font_name and/or - font->data; _cairo_cff_font_load_opentype_cff is called to allocate - font_name, then _cairo_cff_font_load_cff is called to allocate - font->data, then _cairo_cff_font_load_cff's return status is checked - and if it failed, it jumps to fail1. This can cause font_name to leak - since the fail1 target only frees the font variable. In addition, - _cairo_cff_font_load_cff can fail -after- allocating data, and then - data won't be freed either. - - Bug 56566 - - src/cairo-cff-subset.c | 6 +++--- - src/cairo-type1-subset.c | 2 ++ - 2 files changed, 5 insertions(+), 3 deletions(-) - -commit 0c800dc3f64ee030df1cd0a6a1dcd6df71502dea -Author: Adrian Johnson -AuthorDate: Tue Oct 30 19:23:30 2012 +1030 -Commit: Adrian Johnson -CommitDate: Tue Oct 30 19:23:30 2012 +1030 - - type1-subset: ensure subroutine numnber is an integer - - src/cairo-type1-subset.c | 21 ++++++++++++--------- - 1 file changed, 12 insertions(+), 9 deletions(-) - -commit 5a6e1d680a5bf1c4091e74f999abd611abd92334 -Author: Adrian Johnson -AuthorDate: Sun Oct 28 20:58:52 2012 +1030 -Commit: Adrian Johnson -CommitDate: Sun Oct 28 22:13:31 2012 +1030 - - type1-subset: restore correct callothersub behavior - - that was removed in d57e652f. Without this subsetting of subroutines - won't work for some fonts. - - src/cairo-type1-subset.c | 35 +++++++++++++++++++++++++++++------ - 1 file changed, 29 insertions(+), 6 deletions(-) - -commit 0e2458697848cf8c89c9d57fa9b64f0ea7bd0877 -Author: Chris Wilson -AuthorDate: Sun Oct 28 10:08:39 2012 +0000 -Commit: Chris Wilson -CommitDate: Sun Oct 28 10:13:04 2012 +0000 - - xlib/shm: Use shmstr.h instead of shmproto.h if available - - Before it was known as shmproto.h, the wire protocol definition was to - be found in shmstr.h, so if we don't have the current version of libXext - try to use the older includes. - - Reported-by: Sebastian Haas - Signed-off-by: Chris Wilson - - configure.ac | 2 +- - src/cairo-xlib-surface-shm.c | 6 +++++- - 2 files changed, 6 insertions(+), 2 deletions(-) - -commit f18199fcfb3b052c198041fc05156ae3d9e6aee7 -Author: Chris Wilson -AuthorDate: Sun Oct 28 10:04:12 2012 +0000 -Commit: Chris Wilson -CommitDate: Sun Oct 28 10:13:04 2012 +0000 - - xlib/shm: Check for XShm headers - - Not all version of libXext ship the same set of headers, so play safe - and check during configure that we have the headers we depend upon in - the code. - - Reported-by: Sebastian Haas - Signed-off-by: Chris Wilson - - configure.ac | 4 ++ - src/cairo-xlib-surface-shm.c | 99 ++++++++++++++++++++++++++++++++++++++++++-- - 2 files changed, 100 insertions(+), 3 deletions(-) - -commit d57e652f08f5ff7c334d01bc071962e6a131928f -Author: Adrian Johnson -AuthorDate: Fri Oct 26 23:00:01 2012 +1030 -Commit: Adrian Johnson -CommitDate: Fri Oct 26 23:00:01 2012 +1030 - - type1-subset: parse all operators - - The PDF at bug 56265 contained a Type 1 font that used the "div" - operator to compute the glyph width. As the "div" operator was - not handled by the charstring parser this resulted in an incorrect - glyph width in the PDF output. - - Fix this by upgrading the charstring parsing to handle all Type 1 - operators. - - src/cairo-type1-subset.c | 167 ++++++++++++++++++++++++++++------------------- - 1 file changed, 100 insertions(+), 67 deletions(-) - -commit fdd2082f923012a1354be7086d03f78fb166695b -Author: Chris Wilson -AuthorDate: Fri Oct 26 10:51:31 2012 +0100 -Commit: Chris Wilson -CommitDate: Fri Oct 26 11:31:14 2012 +0100 - - xlib: Check for both X.org and Xorg ServerVendors - - Martin Husemann reported that on his NetBSD machine the vendor was being - reported as "The Xorg Foundation", a non-conformist separatist split of - the Peoples' Liberation Army^W^W^W "The X.Org Foundation". Simply check - for both during initialisation. - - Reported-by: Martin Husemann - Signed-off-by: Chris Wilson - - src/cairo-xlib-display.c | 2 +- - src/cairo-xlib-private.h | 7 +++++++ - src/cairo-xlib-surface-shm.c | 2 +- - 3 files changed, 9 insertions(+), 2 deletions(-) - -commit 00feb8ce530a472abbde445b52d9ae8c99ec97f0 -Author: Chris Wilson -AuthorDate: Fri Oct 26 10:51:31 2012 +0100 -Commit: Chris Wilson -CommitDate: Fri Oct 26 10:59:05 2012 +0100 - - xlib/shm: Sanity check that the server handles XSendEvent with ShmCompletion - - Uli Schlachter suggested it would be wiser to complement our blacklist - of known broken X/libXext with an explicit roundtrip to check for a - BadValue error return when we try to use XSendEvent. - - Suggested-by: Uli Schlachter - Reported-by: Martin Husemann - Signed-off-by: Chris Wilson - - src/cairo-xlib-surface-shm.c | 77 +++++++++++++++++++++++++++++++++++++++----- - 1 file changed, 69 insertions(+), 8 deletions(-) - -commit e43f53bf7f3d371116f31f22ab9754b08b5abe7f -Author: Chris Wilson -AuthorDate: Mon Oct 22 13:47:11 2012 +0100 -Commit: Chris Wilson -CommitDate: Mon Oct 22 13:47:11 2012 +0100 - - version: Post release bump to 1.12.7 - - cairo-version.h | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -commit fab6958eff35a94cf46e38f19a7e75e10aa2b182 -Author: Chris Wilson -AuthorDate: Mon Oct 22 11:07:15 2012 +0100 -Commit: Chris Wilson -CommitDate: Mon Oct 22 11:07:15 2012 +0100 - - 1.12.6 release - - NEWS | 35 +++++++++++++++++++++++++++++++++++ - cairo-version.h | 2 +- - 2 files changed, 36 insertions(+), 1 deletion(-) - -commit d49b2284b505e93cd415af4da3cd2cc2d3d168d3 -Author: Gilles Espinasse -AuthorDate: Sat Oct 20 20:22:51 2012 +0200 -Commit: Chris Wilson -CommitDate: Sun Oct 21 17:32:53 2012 +0100 - - configure: fix unrecognized -Wno option - - gcc-4.4 and later accept every -Wno option. So we can test for the - option without no in the name to check if the option is supported. - - Each time a warning is emitted and without this fix, on gcc-4.4 that will - add this warning: - cc1: warning: unrecognized command line option "-Wno-unused-but-set-variable" - - bugs.freedesktop.org #51633, rediffed after 1.12.4 - - Of course this assumes that all compilers will behave like gcc, which is - reasonably implicit in the set of warning flags. - - Signed-off-by: Gilles Espinasse - [ickle: slight modification to test both -W and -Wno variants to ideally - preserve compatability with non-GCC compilers sharing GCC options!] - - build/configure.ac.warnings | 11 +++++++---- - 1 file changed, 7 insertions(+), 4 deletions(-) - -commit b12a94b98306d87689bad23dad4c0ec033037046 -Author: Gilles Espinasse -AuthorDate: Sat Oct 20 20:22:50 2012 +0200 -Commit: Chris Wilson -CommitDate: Sun Oct 21 09:36:28 2012 +0100 - - configure: fix PKG_CHECK_MODULES tests displaying no no - - Inside PKG_CHECK_MODULES, AC_MSG_RESULT(no) is already displayed, so the - caller should not use another AC_MSG_RESULT(no). - - Add a comment that empty ACTION-IF-NOT-FOUND is not allowed for - PKG_CHECK_MODULES, but a simple : is enough. - - This is bugs.freedesktop.org #51628, rediffed after 1.12.4 - - Signed-off-by: Gilles Espinasse - - build/aclocal.pkg.m4 | 2 ++ - configure.ac | 41 +++++++++++++++++------------------------ - 2 files changed, 19 insertions(+), 24 deletions(-) - -commit 813143c2205c12923519ce6dcf3c8e10f63f1085 -Author: Gilles Espinasse -AuthorDate: Sat Oct 20 23:06:44 2012 +0200 -Commit: Chris Wilson -CommitDate: Sun Oct 21 09:34:08 2012 +0100 - - ft: Fix compilation on 1.12 without FT_Get_X11_Font_Format - - Signed-off-by: Gilles Espinasse - - configure.ac | 2 +- - src/cairo-ft-font.c | 23 +++++++++++++++++------ - 2 files changed, 18 insertions(+), 7 deletions(-) - -commit c565bad8901dbe66e1402cdc2418986e96e698e3 -Author: Chris Wilson -AuthorDate: Fri Oct 19 12:22:58 2012 +0100 -Commit: Chris Wilson -CommitDate: Fri Oct 19 12:22:58 2012 +0100 - - pen: Relax invisibility criteria from half-tolerance to quarter-tolerance - - Inkscape is one user who sets geometric tolerance to 1.25 pixels when - stroking sub-pixel lines. Whilst we wait for inkscape to set sensible - values for their tolerance, we have to allow through the current values - in order to prevent the fine strokes from disappearing. - - Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=56099 - Signed-off-by: Chris Wilson - - src/cairo-pen.c | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -commit 5041b462d084de8552336275914d30c23bf5dd35 -Author: Chris Wilson -AuthorDate: Fri Oct 19 12:04:50 2012 +0100 -Commit: Chris Wilson -CommitDate: Fri Oct 19 12:04:50 2012 +0100 - - xlib/shm: Sync the XShmAttach before removing the ShmSegment id - - Whilst reading through other users of XShm, it became apparent that - IPC_RMID behaves differently across the platforms. Linux allows - processes to attach to an existing ShmSegment id after a IPC_RMID, but - for others the IPC_RMID takes immediate effect. On those platforms - without a "deferred" IPC_RMID, we then need to perform the XShmAttach - synchronously before perfomring the IPC_RMID. - - Reported-by: Thomas Klausner - Signed-off-by: Chris Wilson - - configure.ac | 32 ++++++++++++++++++++++++++++++++ - src/cairo-xlib-surface-shm.c | 3 +++ - 2 files changed, 35 insertions(+) - -commit d5f9c694b9145f0464c8bd58d844bddedcb77d5e -Author: Uli Schlachter -AuthorDate: Tue Oct 16 17:09:42 2012 +0200 -Commit: Uli Schlachter -CommitDate: Tue Oct 16 17:09:42 2012 +0200 - - test: Define optional exception classes - - According to musl libc author: - - "C99 requires the FE_ macros to be defined if and only if the exception they - correspond to is supported" - - So we define these macros to 0 if they are not supported. Support for these FPU - exceptions is not necessary for correct functionality, but makes some tests less - effective. - - Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=55771 - Signed-off-by: Uli Schlachter - - test/cairo-test.c | 3 --- - test/cairo-test.h | 20 ++++++++++++++++++++ - test/invalid-matrix.c | 4 ---- - 3 files changed, 20 insertions(+), 7 deletions(-) - -commit db488a1703d4ef3bcbd54138b51c01600a2f4d3a -Author: Chris Wilson -AuthorDate: Thu Oct 11 17:00:57 2012 +0100 -Commit: Chris Wilson -CommitDate: Thu Oct 11 17:00:57 2012 +0100 - - recording: Copy across the is-clear? during snapshotting - - Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=55799 - Signed-off-by: Chris Wilson - - src/cairo-recording-surface.c | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -commit ed720007ba6be17434eb68b604fd36bd91c0d894 -Author: Henry Song -AuthorDate: Thu Oct 11 16:57:57 2012 +0100 -Commit: Chris Wilson -CommitDate: Thu Oct 11 16:57:57 2012 +0100 - - recording: copy reverses its dst and src parameters - - Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=55799 - - src/cairo-recording-surface.c | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -commit 26c8accd41163d86711ba900bec7d9cd6591d8a3 -Author: Chris Wilson -AuthorDate: Thu Oct 11 16:52:07 2012 +0100 -Commit: Chris Wilson -CommitDate: Thu Oct 11 16:56:15 2012 +0100 - - xlib: Reorder CloseDisplay hooks - - As we may utilize X extensions as we shutdown and release resources - during CloseDisplay, we need to run our own callback first. If we run - last, than we reinstantiate the extensions which often have the - unfortunate habit of then persisting with stale data across the next - Display connection, causing invalid requests to be generated and raise - XErrors. - - Signed-off-by: Chris Wilson - - src/cairo-xlib-display.c | 34 +++++++++++++++++----------------- - 1 file changed, 17 insertions(+), 17 deletions(-) - -commit fbf528f46deaebc7d8cf38fc61be9e016f207575 -Author: Chris Wilson -AuthorDate: Tue Oct 9 17:37:53 2012 +0100 -Commit: Chris Wilson -CommitDate: Thu Oct 11 16:56:14 2012 +0100 - - compositor: Reduce glyph "overlap" if the inked pixels are opaque - - We can ignore the issue of overdraw if when we paint the glyphs, the - result is opaque. - - Signed-off-by: Chris Wilson - - src/cairo-composite-rectangles.c | 7 +++++++ - 1 file changed, 7 insertions(+) - -commit 66500ef29fea41ccda554f85d82a6aa3de774903 -Author: Henry Song -AuthorDate: Thu Sep 27 19:22:23 2012 +0000 -Commit: Chris Wilson -CommitDate: Thu Oct 11 16:56:13 2012 +0100 - - gl/traps: ensure RGBA surface before upload image to texture for GLES2 - - As GLESv2 may only use an RGBA surface as its source for texture - uploads, we therefore need to perform a conversion. - - src/cairo-gl-traps-compositor.c | 32 ++++++++++++++++++++++++++++++++ - 1 file changed, 32 insertions(+) - -commit 188c34b40d6f08851b4076ad11aefe69d4a78a25 -Author: Henry Song -AuthorDate: Thu Sep 27 18:25:52 2012 +0000 -Commit: Chris Wilson -CommitDate: Thu Oct 11 16:56:13 2012 +0100 - - gl: gles2 only supports GL_DEPTH24_STENCIL8_OES - - Patch also provided by U. Artie Eoff - Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=50355 - - src/cairo-gl-device.c | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -commit f78a9269228f2f48e8eb496e341ef990db39c6c3 -Author: Alexis Ballier -AuthorDate: Fri Sep 21 08:22:55 2012 -0300 -Commit: Uli Schlachter -CommitDate: Mon Oct 8 22:00:31 2012 +0200 - - cairo-sphinx: protect -ldl link with CAIRO_HAS_DL like in cairo-trace. - - Signed-off-by: Uli Schlachter - - util/cairo-sphinx/Makefile.am | 2 ++ - 1 file changed, 2 insertions(+) - -commit 3d2712d56a22f2a86fb80da94c3e55be8d26a330 -Author: Alexis Ballier -AuthorDate: Fri Sep 21 08:22:54 2012 -0300 -Commit: Uli Schlachter -CommitDate: Mon Oct 8 21:59:39 2012 +0200 - - cairo-fdr: protect -ldl link with CAIRO_HAS_DL like in cairo-trace. - - Signed-off-by: Uli Schlachter - - util/cairo-fdr/Makefile.am | 2 ++ - 1 file changed, 2 insertions(+) - -commit 9ab9916114db9917108198111d3232a18ae505ed -Author: Adrian Johnson -AuthorDate: Sun Oct 7 23:54:20 2012 +1030 -Commit: Adrian Johnson -CommitDate: Sun Oct 7 23:54:20 2012 +1030 - - remove debug code - - src/cairo-type1-subset.c | 2 -- - 1 file changed, 2 deletions(-) - -commit 9c2a92c70836b8534ef8c26d943fa17f891da105 -Author: Adrian Johnson -AuthorDate: Sun Oct 7 23:50:54 2012 +1030 -Commit: Adrian Johnson -CommitDate: Sun Oct 7 23:50:54 2012 +1030 - - type1: convert '.' to locale specific decimal point before using sscanf - - src/cairo-type1-subset.c | 31 +++++++++++++++++++++++++++---- - 1 file changed, 27 insertions(+), 4 deletions(-) - -commit 0d5f63755e7ceb1bb5678fcf1f4661f3435470fb -Author: David Maxwell -AuthorDate: Sun Oct 7 00:01:53 2012 -0800 -Commit: Adrian Johnson -CommitDate: Sun Oct 7 19:26:17 2012 +1030 - - type1-subset: always subset subroutines 0-3 (Flex/hint replacement) - - http://lists.cairographics.org/archives/cairo/2012-October/023576.html - - src/cairo-type1-subset.c | 6 ++++++ - 1 file changed, 6 insertions(+) - -commit 599e78ea2ee146c74fc7ffcee32a055dabbefdda -Author: David Maxwell -AuthorDate: Tue Oct 2 16:16:28 2012 -0800 -Commit: Adrian Johnson -CommitDate: Sun Oct 7 16:22:28 2012 +1030 - - type1: lenIV support - - http://lists.cairographics.org/archives/cairo/2012-October/023557.html - - src/cairo-type1-subset.c | 42 ++++++++++++++++++++++++++++++++++++++---- - 1 file changed, 38 insertions(+), 4 deletions(-) - -commit cffbdf50ce0117d62d6e157369c60e4a8572fd21 -Author: David Maxwell -AuthorDate: Tue Oct 2 16:16:28 2012 -0800 -Commit: Adrian Johnson -CommitDate: Sun Oct 7 16:22:13 2012 +1030 - - type1: buildchar stack fix - - http://lists.cairographics.org/archives/cairo/2012-October/023557.html - - src/cairo-type1-subset.c | 1 + - 1 file changed, 1 insertion(+) - -commit e29bb5f295d055068a24b629fa1bd5f06a93431b -Author: Chris Wilson -AuthorDate: Sat Oct 6 18:53:41 2012 +0100 -Commit: Chris Wilson -CommitDate: Sat Oct 6 18:53:41 2012 +0100 - - win32: Use the image surface below the fallback when unmapping an HDC - - As for a native window, the surface does not have an image delegate - itself but instead installs a fallback surface during map_to_image. So - during unmap_image, we then need to unmap from the fallback surface - instead. - - Signed-off-by: Chris Wilson - - src/win32/cairo-win32-display-surface.c | 1 + - 1 file changed, 1 insertion(+) - -commit 0251f0951d8dcdd198912326c11489823989a3eb -Author: Uli Schlachter -AuthorDate: Sat Oct 6 15:00:51 2012 +0200 -Commit: Uli Schlachter -CommitDate: Sat Oct 6 15:00:51 2012 +0200 - - xcb: Clear the result of create_similar_image - - The documentation of cairo_surface_create_similar_image() states that the - image's contents are initially all 0. However, the implementation didn't live up - to the documentation. - - This was found via the corresponding assert in - cairo_surface_create_similar_image(). - - There are some cairo-xcb-internal users of this function which cleared the image - right after creating it. Obviously, this isn't needed anymore. - - Fixes: Nothing. The existing call in the testsuite to - cairo_surface_create_similar_image() doesn't hit this issue, since it creates a - too small image to hit the SHM-case. - - Signed-off-by: Uli Schlachter - - src/cairo-xcb-surface-render.c | 14 -------------- - src/cairo-xcb-surface.c | 5 +++++ - 2 files changed, 5 insertions(+), 14 deletions(-) - -commit 15ef4a3248bbf32d05da7ed2480a2ce58c26d9bc -Author: Chris Wilson -AuthorDate: Fri Oct 5 19:46:41 2012 +0100 -Commit: Chris Wilson -CommitDate: Fri Oct 5 19:46:41 2012 +0100 - - xlib/shm: Note the bug is an interaction between libXext and xorg - - Søren thought it was bit harsh to lay the blame solely on xorg for it - crashing due to an unexpected input value, and that we should mention - libXext was also partly to blame for incorrectly setting the SEND_EVENT - bit in the ShmCompletionEvent. - - Signed-off-by: Chris Wilson - - src/cairo-xlib-surface-shm.c | 9 ++++++--- - 1 file changed, 6 insertions(+), 3 deletions(-) - -commit b1532f465e05d566f6d160c5ca916a5a12614067 -Author: Chris Wilson -AuthorDate: Fri Oct 5 19:20:18 2012 +0100 -Commit: Chris Wilson -CommitDate: Fri Oct 5 19:20:18 2012 +0100 - - xlib/shm: Avoid using XSendEvent with old versions of Xorg - - Søren Sandmann Pedersen pointed out that all versions of Xorg prior to - and including xorg-1.11.0 contained a bug that would cause them to crash - if they ever processed an event sent by XSendEvent. This was fixed in - - commit 2d2dce558d24eeea0eb011ec9ebaa6c5c2273c39 - Author: Sam Spilsbury - Date: Wed Sep 14 09:58:34 2011 +0800 - - Remove the SendEvent bit (0x80) before doing range checks on event type. - - so make sure we do not use XSendEvent prior to that commit, which - fortuitously is quite easy as we only do so along the ShmPixmap path. - - Reported-by: Søren Sandmann Pedersen - Signed-off-by: Chris Wilson - - src/cairo-xlib-surface-shm.c | 21 +++++++++++++++++++++ - 1 file changed, 21 insertions(+) - -commit dba46f4eab716c0148d278ba7cae0cb075b5df01 -Author: Chris Wilson -AuthorDate: Fri Oct 5 17:24:56 2012 +0100 -Commit: Chris Wilson -CommitDate: Fri Oct 5 17:24:56 2012 +0100 - - version: Post release bump to 1.12.5 - - cairo-version.h | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -commit 117abd85ac7ff41e484fe0d98f16704ec30abd09 -Author: Chris Wilson -AuthorDate: Fri Oct 5 16:44:00 2012 +0100 -Commit: Chris Wilson -CommitDate: Fri Oct 5 16:44:00 2012 +0100 - - 1.12.4 release - - NEWS | 69 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ - cairo-version.h | 2 +- - 2 files changed, 70 insertions(+), 1 deletion(-) - -commit 6c6a69761048cfad210160035ae32ccb49967d5d -Author: Chris Wilson -AuthorDate: Fri Oct 5 14:55:28 2012 +0100 -Commit: Chris Wilson -CommitDate: Fri Oct 5 14:55:28 2012 +0100 - - win32: Compile fix for mismatched surface types - - win32/cairo-win32-display-surface.c:472: error: structure has no member - named 'base' - - Signed-off-by: Chris Wilson - - src/win32/cairo-win32-display-surface.c | 4 ++-- - 1 file changed, 2 insertions(+), 2 deletions(-) - -commit ccf694d060dd9ea41939fc1c5847d23d3a422b75 -Author: Chris Wilson -AuthorDate: Fri Oct 5 13:36:30 2012 +0100 -Commit: Chris Wilson -CommitDate: Fri Oct 5 13:36:30 2012 +0100 - - xlib/shm: Discard SHM surfaces upon CloseDisplay - - Fixes xlib-surface-source - Signed-off-by: Chris Wilson - - src/cairo-xlib-surface-shm.c | 14 ++++++++++++++ - 1 file changed, 14 insertions(+) - -commit 8488ae022de45b441f29c3e90e16d5cca3082d20 -Author: Chris Wilson -AuthorDate: Fri Oct 5 13:08:26 2012 +0100 -Commit: Chris Wilson -CommitDate: Fri Oct 5 13:29:06 2012 +0100 - - test: Refresh reference images for slight alteration of curves - - test/reference/a1-fill.base.ref.png | Bin 328 -> 0 bytes - test/reference/a1-tiger.traps.argb32.ref.png | Bin 20406 -> 20326 bytes - test/reference/a1-tiger.traps.rgb24.ref.png | Bin 20406 -> 20326 bytes - test/reference/arc-direction.base.ref.png | Bin 5864 -> 0 bytes - test/reference/arc-looping-dash.argb32.ref.png | Bin 464 -> 0 bytes - .../reference/arc-looping-dash.base.argb32.ref.png | Bin 470 -> 0 bytes - test/reference/arc-looping-dash.base.rgb24.ref.png | Bin 470 -> 0 bytes - test/reference/arc-looping-dash.ref.png | Bin 348 -> 502 bytes - test/reference/arc-looping-dash.rgb24.ref.png | Bin 464 -> 0 bytes - .../arc-looping-dash.traps.argb32.ref.png | Bin 470 -> 496 bytes - .../reference/arc-looping-dash.traps.rgb24.ref.png | Bin 470 -> 496 bytes - test/reference/bug-bo-ricotz.base.ref.png | Bin 2125 -> 0 bytes - test/reference/bug-bo-ricotz.traps.argb32.ref.png | Bin 2128 -> 2125 bytes - test/reference/bug-bo-ricotz.traps.rgb24.ref.png | Bin 2128 -> 2125 bytes - test/reference/bug-spline.ref.png | Bin 5476 -> 5577 bytes - test/reference/caps-joins-alpha.argb32.ref.png | Bin 2662 -> 0 bytes - .../reference/caps-joins-alpha.base.argb32.ref.png | Bin 2278 -> 0 bytes - test/reference/caps-joins-alpha.base.rgb24.ref.png | Bin 2278 -> 0 bytes - test/reference/caps-joins-alpha.ref.png | Bin 2345 -> 2643 bytes - test/reference/caps-joins-alpha.rgb24.ref.png | Bin 2662 -> 0 bytes - .../caps-joins-alpha.traps.argb32.ref.png | Bin 2278 -> 2265 bytes - .../reference/caps-joins-alpha.traps.rgb24.ref.png | Bin 2278 -> 2265 bytes - test/reference/caps-joins-curve.argb32.ref.png | Bin 6217 -> 0 bytes - .../reference/caps-joins-curve.base.argb32.ref.png | Bin 5368 -> 0 bytes - test/reference/caps-joins-curve.base.rgb24.ref.png | Bin 5368 -> 0 bytes - test/reference/caps-joins-curve.ref.png | Bin 4527 -> 6228 bytes - test/reference/caps-joins-curve.rgb24.ref.png | Bin 6217 -> 0 bytes - .../caps-joins-curve.traps.argb32.ref.png | Bin 5368 -> 5327 bytes - .../reference/caps-joins-curve.traps.rgb24.ref.png | Bin 5368 -> 5327 bytes - test/reference/caps-joins.base.argb32.ref.png | Bin 2374 -> 2363 bytes - test/reference/caps-joins.base.rgb24.ref.png | Bin 2374 -> 2363 bytes - test/reference/caps-joins.traps.argb32.ref.png | Bin 2374 -> 2363 bytes - test/reference/caps-joins.traps.rgb24.ref.png | Bin 2374 -> 2363 bytes - test/reference/caps-sub-paths.base.argb32.ref.png | Bin 166 -> 166 bytes - test/reference/caps-sub-paths.base.rgb24.ref.png | Bin 166 -> 166 bytes - test/reference/caps-sub-paths.traps.argb32.ref.png | Bin 166 -> 166 bytes - test/reference/caps-sub-paths.traps.rgb24.ref.png | Bin 166 -> 166 bytes - test/reference/caps-tails-curve.argb32.ref.png | Bin 53311 -> 0 bytes - .../reference/caps-tails-curve.base.argb32.ref.png | Bin 50228 -> 0 bytes - test/reference/caps-tails-curve.base.rgb24.ref.png | Bin 50228 -> 0 bytes - test/reference/caps-tails-curve.ref.png | Bin 41476 -> 54750 bytes - test/reference/caps-tails-curve.rgb24.ref.png | Bin 53311 -> 0 bytes - .../caps-tails-curve.traps.argb32.ref.png | Bin 50228 -> 50617 bytes - .../reference/caps-tails-curve.traps.rgb24.ref.png | Bin 50228 -> 50617 bytes - test/reference/caps.base.argb32.ref.png | Bin 1601 -> 1637 bytes - test/reference/caps.base.rgb24.ref.png | Bin 1601 -> 1637 bytes - test/reference/caps.traps.argb32.ref.png | Bin 1601 -> 1637 bytes - test/reference/caps.traps.rgb24.ref.png | Bin 1601 -> 1637 bytes - test/reference/clear-source.base.argb32.ref.png | Bin 882 -> 882 bytes - test/reference/clear-source.base.rgb24.ref.png | Bin 882 -> 882 bytes - test/reference/clear-source.traps.argb32.ref.png | Bin 882 -> 882 bytes - test/reference/clear-source.traps.rgb24.ref.png | Bin 882 -> 882 bytes - test/reference/clip-operator.base.argb32.ref.png | Bin 8182 -> 8136 bytes - test/reference/clip-operator.traps.argb32.ref.png | Bin 8160 -> 8114 bytes - test/reference/clip-polygons.base.ref.png | Bin 1296 -> 0 bytes - test/reference/clip-polygons.traps.argb32.ref.png | Bin 1336 -> 1268 bytes - test/reference/clip-polygons.traps.rgb24.ref.png | Bin 1336 -> 1268 bytes - test/reference/clip-rectilinear.base.ref.png | Bin 440 -> 0 bytes - test/reference/clip-stroke.ref.png | Bin 1445 -> 1419 bytes - .../close-path-current-point.base.argb32.ref.png | Bin 2008 -> 1904 bytes - .../close-path-current-point.base.rgb24.ref.png | Bin 2008 -> 1904 bytes - .../close-path-current-point.traps.argb32.ref.png | Bin 2008 -> 1904 bytes - .../close-path-current-point.traps.rgb24.ref.png | Bin 2008 -> 1904 bytes - test/reference/curve-to-as-line-to.argb32.ref.png | Bin 109 -> 0 bytes - .../curve-to-as-line-to.base.argb32.ref.png | Bin 107 -> 95 bytes - .../curve-to-as-line-to.base.rgb24.ref.png | Bin 107 -> 95 bytes - test/reference/curve-to-as-line-to.rgb24.ref.png | Bin 109 -> 0 bytes - .../curve-to-as-line-to.traps.argb32.ref.png | Bin 107 -> 95 bytes - .../curve-to-as-line-to.traps.rgb24.ref.png | Bin 107 -> 95 bytes - test/reference/dash-caps-joins.argb32.ref.png | Bin 5157 -> 0 bytes - test/reference/dash-caps-joins.base.argb32.ref.png | Bin 4521 -> 4483 bytes - test/reference/dash-caps-joins.base.rgb24.ref.png | Bin 4521 -> 4483 bytes - test/reference/dash-caps-joins.ref.png | Bin 4030 -> 5089 bytes - test/reference/dash-caps-joins.rgb24.ref.png | Bin 5157 -> 0 bytes - .../reference/dash-caps-joins.traps.argb32.ref.png | Bin 4521 -> 4483 bytes - test/reference/dash-caps-joins.traps.rgb24.ref.png | Bin 4521 -> 4483 bytes - test/reference/dash-curve.argb32.ref.png | Bin 41040 -> 0 bytes - test/reference/dash-curve.base.argb32.ref.png | Bin 40040 -> 0 bytes - test/reference/dash-curve.base.rgb24.ref.png | Bin 40040 -> 0 bytes - test/reference/dash-curve.ref.png | Bin 22615 -> 40945 bytes - test/reference/dash-curve.rgb24.ref.png | Bin 41040 -> 0 bytes - test/reference/dash-curve.traps.argb32.ref.png | Bin 40040 -> 39925 bytes - test/reference/dash-curve.traps.rgb24.ref.png | Bin 40040 -> 39925 bytes - .../dash-infinite-loop.base.argb32.ref.png | Bin 835 -> 642 bytes - .../dash-infinite-loop.base.rgb24.ref.png | Bin 835 -> 642 bytes - .../dash-infinite-loop.traps.argb32.ref.png | Bin 835 -> 642 bytes - .../dash-infinite-loop.traps.rgb24.ref.png | Bin 835 -> 642 bytes - test/reference/dash-scale.argb32.ref.png | Bin 8913 -> 0 bytes - test/reference/dash-scale.base.argb32.ref.png | Bin 7621 -> 0 bytes - test/reference/dash-scale.base.rgb24.ref.png | Bin 7621 -> 0 bytes - test/reference/dash-scale.ref.png | Bin 6314 -> 8831 bytes - test/reference/dash-scale.rgb24.ref.png | Bin 8913 -> 0 bytes - test/reference/dash-scale.traps.argb32.ref.png | Bin 7621 -> 7627 bytes - test/reference/dash-scale.traps.rgb24.ref.png | Bin 7621 -> 7627 bytes - test/reference/dash-state.base.argb32.ref.png | Bin 7628 -> 7509 bytes - test/reference/dash-state.base.rgb24.ref.png | Bin 7628 -> 7509 bytes - test/reference/dash-state.traps.argb32.ref.png | Bin 7628 -> 7509 bytes - test/reference/dash-state.traps.rgb24.ref.png | Bin 7628 -> 7509 bytes - .../reference/dash-zero-length.base.argb32.ref.png | Bin 219 -> 219 bytes - test/reference/dash-zero-length.base.rgb24.ref.png | Bin 199 -> 199 bytes - test/reference/dash-zero-length.rgb24.ref.png | Bin 210 -> 208 bytes - .../dash-zero-length.traps.argb32.ref.png | Bin 219 -> 219 bytes - .../reference/dash-zero-length.traps.rgb24.ref.png | Bin 199 -> 199 bytes - test/reference/degenerate-arc.base.argb32.ref.png | Bin 547 -> 574 bytes - test/reference/degenerate-arc.base.rgb24.ref.png | Bin 547 -> 574 bytes - test/reference/degenerate-arc.ref.png | Bin 646 -> 692 bytes - test/reference/degenerate-arc.traps.argb32.ref.png | Bin 547 -> 574 bytes - test/reference/degenerate-arc.traps.rgb24.ref.png | Bin 547 -> 574 bytes - test/reference/degenerate-curve-to.argb32.ref.png | Bin 280 -> 0 bytes - .../degenerate-curve-to.base.argb32.ref.png | Bin 283 -> 282 bytes - .../degenerate-curve-to.base.rgb24.ref.png | Bin 283 -> 282 bytes - test/reference/degenerate-curve-to.ref.png | Bin 227 -> 285 bytes - test/reference/degenerate-curve-to.rgb24.ref.png | Bin 280 -> 0 bytes - .../degenerate-curve-to.traps.argb32.ref.png | Bin 283 -> 282 bytes - .../degenerate-curve-to.traps.rgb24.ref.png | Bin 283 -> 282 bytes - test/reference/degenerate-dash.argb32.ref.png | Bin 2086 -> 0 bytes - test/reference/degenerate-dash.base.argb32.ref.png | Bin 1898 -> 1911 bytes - test/reference/degenerate-dash.base.rgb24.ref.png | Bin 1898 -> 1911 bytes - test/reference/degenerate-dash.ref.png | Bin 1845 -> 1985 bytes - test/reference/degenerate-dash.rgb24.ref.png | Bin 2086 -> 0 bytes - .../reference/degenerate-dash.traps.argb32.ref.png | Bin 1898 -> 1911 bytes - test/reference/degenerate-dash.traps.rgb24.ref.png | Bin 1898 -> 1911 bytes - test/reference/degenerate-path.argb32.ref.png | Bin 250 -> 251 bytes - test/reference/degenerate-path.base.argb32.ref.png | Bin 249 -> 237 bytes - test/reference/degenerate-path.base.rgb24.ref.png | Bin 217 -> 204 bytes - test/reference/degenerate-path.rgb24.ref.png | Bin 219 -> 219 bytes - .../reference/degenerate-path.traps.argb32.ref.png | Bin 249 -> 237 bytes - test/reference/degenerate-path.traps.rgb24.ref.png | Bin 217 -> 204 bytes - .../degenerate-rel-curve-to.argb32.ref.png | Bin 277 -> 0 bytes - .../degenerate-rel-curve-to.base.argb32.ref.png | Bin 278 -> 278 bytes - .../degenerate-rel-curve-to.base.rgb24.ref.png | Bin 278 -> 278 bytes - test/reference/degenerate-rel-curve-to.ref.png | Bin 227 -> 278 bytes - .../degenerate-rel-curve-to.rgb24.ref.png | Bin 277 -> 0 bytes - .../degenerate-rel-curve-to.traps.argb32.ref.png | Bin 278 -> 278 bytes - .../degenerate-rel-curve-to.traps.rgb24.ref.png | Bin 278 -> 278 bytes - test/reference/drunkard-tails.argb32.ref.png | Bin 6116 -> 0 bytes - test/reference/drunkard-tails.base.argb32.ref.png | Bin 6036 -> 6176 bytes - test/reference/drunkard-tails.base.rgb24.ref.png | Bin 6036 -> 6176 bytes - test/reference/drunkard-tails.ref.png | Bin 3853 -> 6261 bytes - test/reference/drunkard-tails.rgb24.ref.png | Bin 6116 -> 0 bytes - test/reference/drunkard-tails.traps.argb32.ref.png | Bin 6036 -> 6176 bytes - test/reference/drunkard-tails.traps.rgb24.ref.png | Bin 6036 -> 6176 bytes - .../ft-text-vertical-layout-type3.argb32.ref.png | Bin 3610 -> 0 bytes - .../ft-text-vertical-layout-type3.ref.png | Bin 3222 -> 3608 bytes - .../ft-text-vertical-layout-type3.rgb24.ref.png | Bin 3610 -> 0 bytes - test/reference/halo-transform.traps.argb32.ref.png | Bin 15063 -> 15122 bytes - test/reference/halo-transform.traps.rgb24.ref.png | Bin 15063 -> 15122 bytes - test/reference/joins-loop.base.argb32.ref.png | Bin 4202 -> 4191 bytes - test/reference/joins-loop.base.rgb24.ref.png | Bin 4202 -> 4191 bytes - test/reference/joins-loop.traps.argb32.ref.png | Bin 4202 -> 4191 bytes - test/reference/joins-loop.traps.rgb24.ref.png | Bin 4202 -> 4191 bytes - test/reference/joins-retrace.argb32.ref.png | Bin 4997 -> 0 bytes - test/reference/joins-retrace.base.argb32.ref.png | Bin 4667 -> 4566 bytes - test/reference/joins-retrace.base.rgb24.ref.png | Bin 4667 -> 4566 bytes - test/reference/joins-retrace.ref.png | Bin 3951 -> 4900 bytes - test/reference/joins-retrace.rgb24.ref.png | Bin 4997 -> 0 bytes - test/reference/joins-retrace.traps.argb32.ref.png | Bin 4667 -> 4566 bytes - test/reference/joins-retrace.traps.rgb24.ref.png | Bin 4667 -> 4566 bytes - test/reference/joins-star.base.argb32.ref.png | Bin 3583 -> 3542 bytes - test/reference/joins-star.base.rgb24.ref.png | Bin 3583 -> 3542 bytes - test/reference/joins-star.traps.argb32.ref.png | Bin 3583 -> 3542 bytes - test/reference/joins-star.traps.rgb24.ref.png | Bin 3583 -> 3542 bytes - test/reference/joins.argb32.ref.png | Bin 6970 -> 0 bytes - test/reference/joins.base.argb32.ref.png | Bin 5684 -> 5732 bytes - test/reference/joins.base.rgb24.ref.png | Bin 5684 -> 5732 bytes - test/reference/joins.ref.png | Bin 4880 -> 7153 bytes - test/reference/joins.rgb24.ref.png | Bin 6970 -> 0 bytes - test/reference/joins.traps.argb32.ref.png | Bin 5684 -> 5732 bytes - test/reference/joins.traps.rgb24.ref.png | Bin 5684 -> 5732 bytes - .../large-twin-antialias-mixed.base.argb32.ref.png | Bin 16660 -> 16630 bytes - .../large-twin-antialias-mixed.base.rgb24.ref.png | Bin 16660 -> 16630 bytes - ...large-twin-antialias-mixed.traps.argb32.ref.png | Bin 16660 -> 16630 bytes - .../large-twin-antialias-mixed.traps.rgb24.ref.png | Bin 16660 -> 16630 bytes - .../leaky-dashed-rectangle.traps.argb32.ref.png | Bin 344 -> 345 bytes - .../leaky-dashed-rectangle.traps.rgb24.ref.png | Bin 344 -> 345 bytes - ...width-large-overlap-dashed.traps.argb32.ref.png | Bin 343 -> 340 bytes - ...-width-large-overlap-dashed.traps.rgb24.ref.png | Bin 343 -> 340 bytes - .../line-width-large-overlap-rotated.base.ref.png | Bin 404 -> 0 bytes - ...idth-large-overlap-rotated.traps.argb32.ref.png | Bin 427 -> 404 bytes - ...width-large-overlap-rotated.traps.rgb24.ref.png | Bin 427 -> 404 bytes - .../line-width-overlap-dashed.traps.argb32.ref.png | Bin 401 -> 407 bytes - .../line-width-overlap-dashed.traps.rgb24.ref.png | Bin 401 -> 407 bytes - .../long-dashed-lines.base.argb32.ref.png | Bin 2071 -> 2079 bytes - .../reference/long-dashed-lines.base.rgb24.ref.png | Bin 2071 -> 2079 bytes - .../long-dashed-lines.traps.argb32.ref.png | Bin 2071 -> 2079 bytes - .../long-dashed-lines.traps.rgb24.ref.png | Bin 2071 -> 2079 bytes - test/reference/miter-precision.base.argb32.ref.png | Bin 818 -> 823 bytes - test/reference/miter-precision.base.rgb24.ref.png | Bin 818 -> 823 bytes - .../reference/miter-precision.traps.argb32.ref.png | Bin 818 -> 823 bytes - test/reference/miter-precision.traps.rgb24.ref.png | Bin 818 -> 823 bytes - .../operator-alpha-alpha.base.argb32.ref.png | Bin 3441 -> 3402 bytes - .../operator-alpha-alpha.base.rgb24.ref.png | Bin 3441 -> 3402 bytes - .../operator-alpha-alpha.traps.argb32.ref.png | Bin 3441 -> 3402 bytes - .../operator-alpha-alpha.traps.rgb24.ref.png | Bin 3441 -> 3402 bytes - test/reference/operator-clear.rgb24.ref.png | Bin 947 -> 946 bytes - test/reference/operator-source.argb32.ref.png | Bin 5612 -> 5614 bytes - test/reference/operator-source.rgb24.ref.png | Bin 3975 -> 4012 bytes - .../reference/overlapping-dash-caps.argb32.ref.png | Bin 3986 -> 0 bytes - .../overlapping-dash-caps.base.argb32.ref.png | Bin 3952 -> 3967 bytes - .../overlapping-dash-caps.base.rgb24.ref.png | Bin 3952 -> 3967 bytes - test/reference/overlapping-dash-caps.ref.png | Bin 2424 -> 3979 bytes - test/reference/overlapping-dash-caps.rgb24.ref.png | Bin 3986 -> 0 bytes - .../overlapping-dash-caps.traps.argb32.ref.png | Bin 3952 -> 3967 bytes - .../overlapping-dash-caps.traps.rgb24.ref.png | Bin 3952 -> 3967 bytes - test/reference/random-clip.ref.png | Bin 525962 -> 526034 bytes - .../record-extend-none-similar.base.argb32.ref.png | Bin 293 -> 279 bytes - .../record-extend-none-similar.base.rgb24.ref.png | Bin 293 -> 279 bytes - ...record-extend-none-similar.traps.argb32.ref.png | Bin 293 -> 279 bytes - .../record-extend-none-similar.traps.rgb24.ref.png | Bin 293 -> 279 bytes - .../record-extend-pad-similar.base.argb32.ref.png | Bin 298 -> 283 bytes - .../record-extend-pad-similar.base.rgb24.ref.png | Bin 298 -> 283 bytes - .../record-extend-pad-similar.traps.argb32.ref.png | Bin 298 -> 283 bytes - .../record-extend-pad-similar.traps.rgb24.ref.png | Bin 298 -> 283 bytes - ...cord-extend-reflect-similar.base.argb32.ref.png | Bin 335 -> 283 bytes - ...ecord-extend-reflect-similar.base.rgb24.ref.png | Bin 335 -> 283 bytes - ...ord-extend-reflect-similar.traps.argb32.ref.png | Bin 335 -> 283 bytes - ...cord-extend-reflect-similar.traps.rgb24.ref.png | Bin 335 -> 283 bytes - ...ecord-extend-repeat-similar.base.argb32.ref.png | Bin 286 -> 283 bytes - ...record-extend-repeat-similar.base.rgb24.ref.png | Bin 286 -> 283 bytes - ...cord-extend-repeat-similar.traps.argb32.ref.png | Bin 286 -> 283 bytes - ...ecord-extend-repeat-similar.traps.rgb24.ref.png | Bin 286 -> 283 bytes - .../record-fill-alpha.base.argb32.ref.png | Bin 2824 -> 2853 bytes - .../reference/record-fill-alpha.base.rgb24.ref.png | Bin 2824 -> 2853 bytes - ...ecord-paint-alpha-clip-mask.base.argb32.ref.png | Bin 330 -> 337 bytes - ...record-paint-alpha-clip-mask.base.rgb24.ref.png | Bin 330 -> 337 bytes - .../record-paint-alpha-clip.base.argb32.ref.png | Bin 269 -> 299 bytes - .../record-paint-alpha-clip.base.rgb24.ref.png | Bin 269 -> 299 bytes - .../record-select-font-face.base.argb32.ref.png | Bin 2250 -> 1417 bytes - .../record-select-font-face.base.rgb24.ref.png | Bin 2250 -> 1417 bytes - .../record-self-intersecting.base.argb32.ref.png | Bin 208 -> 168 bytes - .../record-self-intersecting.base.rgb24.ref.png | Bin 208 -> 168 bytes - .../record-text-transform.base.argb32.ref.png | Bin 5579 -> 5281 bytes - .../record-text-transform.base.rgb24.ref.png | Bin 5579 -> 5281 bytes - .../record1414x-fill-alpha.base.argb32.ref.png | Bin 4191 -> 4138 bytes - .../record1414x-fill-alpha.base.rgb24.ref.png | Bin 4191 -> 4138 bytes - ...ecord1414x-paint-alpha-clip-mask.argb32.ref.png | Bin 473 -> 560 bytes - ...1414x-paint-alpha-clip-mask.base.argb32.ref.png | Bin 466 -> 514 bytes - ...d1414x-paint-alpha-clip-mask.base.rgb24.ref.png | Bin 466 -> 514 bytes - ...record1414x-paint-alpha-clip-mask.rgb24.ref.png | Bin 473 -> 560 bytes - ...ecord1414x-paint-alpha-clip.base.argb32.ref.png | Bin 380 -> 402 bytes - ...record1414x-paint-alpha-clip.base.rgb24.ref.png | Bin 380 -> 402 bytes - ...414x-paint-alpha-solid-clip.base.argb32.ref.png | Bin 317 -> 317 bytes - ...1414x-paint-alpha-solid-clip.base.rgb24.ref.png | Bin 317 -> 317 bytes - ...ecord1414x-select-font-face.base.argb32.ref.png | Bin 3177 -> 2018 bytes - ...record1414x-select-font-face.base.rgb24.ref.png | Bin 3177 -> 2018 bytes - ...cord1414x-self-intersecting.base.argb32.ref.png | Bin 353 -> 385 bytes - ...ecord1414x-self-intersecting.base.rgb24.ref.png | Bin 353 -> 385 bytes - .../record1414x-text-transform.base.argb32.ref.png | Bin 8706 -> 8368 bytes - .../record1414x-text-transform.base.rgb24.ref.png | Bin 8706 -> 8368 bytes - .../record2x-fill-alpha.base.argb32.ref.png | Bin 5896 -> 5724 bytes - .../record2x-fill-alpha.base.rgb24.ref.png | Bin 5896 -> 5724 bytes - .../record2x-paint-alpha-clip-mask.argb32.ref.png | Bin 503 -> 534 bytes - ...ord2x-paint-alpha-clip-mask.base.argb32.ref.png | Bin 488 -> 501 bytes - ...cord2x-paint-alpha-clip-mask.base.rgb24.ref.png | Bin 488 -> 501 bytes - .../record2x-paint-alpha-clip-mask.rgb24.ref.png | Bin 503 -> 534 bytes - .../record2x-select-font-face.base.argb32.ref.png | Bin 4407 -> 3096 bytes - .../record2x-select-font-face.base.rgb24.ref.png | Bin 4407 -> 3096 bytes - .../record2x-text-transform.base.argb32.ref.png | Bin 13476 -> 13174 bytes - .../record2x-text-transform.base.rgb24.ref.png | Bin 13476 -> 13174 bytes - .../record90-fill-alpha.base.argb32.ref.png | Bin 2658 -> 2628 bytes - .../record90-fill-alpha.base.rgb24.ref.png | Bin 2658 -> 2628 bytes - ...ord90-paint-alpha-clip-mask.base.argb32.ref.png | Bin 332 -> 343 bytes - ...cord90-paint-alpha-clip-mask.base.rgb24.ref.png | Bin 332 -> 343 bytes - .../record90-paint-alpha-clip.base.argb32.ref.png | Bin 279 -> 327 bytes - .../record90-paint-alpha-clip.base.rgb24.ref.png | Bin 279 -> 327 bytes - ...rd90-paint-alpha-solid-clip.base.argb32.ref.png | Bin 254 -> 279 bytes - ...ord90-paint-alpha-solid-clip.base.rgb24.ref.png | Bin 254 -> 279 bytes - .../record90-select-font-face.base.argb32.ref.png | Bin 2272 -> 1480 bytes - .../record90-select-font-face.base.rgb24.ref.png | Bin 2272 -> 1480 bytes - .../record90-self-intersecting.base.argb32.ref.png | Bin 208 -> 208 bytes - .../record90-self-intersecting.base.rgb24.ref.png | Bin 208 -> 208 bytes - .../record90-text-transform.base.argb32.ref.png | Bin 5811 -> 5481 bytes - .../record90-text-transform.base.rgb24.ref.png | Bin 5811 -> 5481 bytes - test/reference/reflected-stroke.argb32.ref.png | Bin 5119 -> 0 bytes - .../reference/reflected-stroke.base.argb32.ref.png | Bin 4994 -> 5053 bytes - test/reference/reflected-stroke.base.rgb24.ref.png | Bin 4994 -> 5053 bytes - test/reference/reflected-stroke.ref.png | Bin 3410 -> 5139 bytes - test/reference/reflected-stroke.rgb24.ref.png | Bin 5119 -> 0 bytes - .../reflected-stroke.traps.argb32.ref.png | Bin 4994 -> 5053 bytes - .../reference/reflected-stroke.traps.rgb24.ref.png | Bin 4994 -> 5053 bytes - .../rounded-rectangle-stroke.base.argb32.ref.png | Bin 1060 -> 856 bytes - .../rounded-rectangle-stroke.base.rgb24.ref.png | Bin 1060 -> 856 bytes - .../rounded-rectangle-stroke.traps.argb32.ref.png | Bin 1060 -> 856 bytes - .../rounded-rectangle-stroke.traps.rgb24.ref.png | Bin 1060 -> 856 bytes - .../spline-decomposition.base.argb32.ref.png | Bin 19075 -> 19089 bytes - .../spline-decomposition.base.rgb24.ref.png | Bin 19075 -> 19089 bytes - .../spline-decomposition.traps.argb32.ref.png | Bin 19075 -> 19089 bytes - .../spline-decomposition.traps.rgb24.ref.png | Bin 19075 -> 19089 bytes - test/reference/stroke-ctm-caps.argb32.ref.png | Bin 942 -> 0 bytes - test/reference/stroke-ctm-caps.base.argb32.ref.png | Bin 873 -> 835 bytes - test/reference/stroke-ctm-caps.base.rgb24.ref.png | Bin 873 -> 835 bytes - test/reference/stroke-ctm-caps.ref.png | Bin 921 -> 896 bytes - test/reference/stroke-ctm-caps.rgb24.ref.png | Bin 942 -> 0 bytes - .../reference/stroke-ctm-caps.traps.argb32.ref.png | Bin 873 -> 835 bytes - test/reference/stroke-ctm-caps.traps.rgb24.ref.png | Bin 873 -> 835 bytes - .../reference/subsurface-scale.base.argb32.ref.png | Bin 5921 -> 5919 bytes - test/reference/subsurface-scale.base.ref.png | Bin 5216 -> 0 bytes - test/reference/subsurface-scale.base.rgb24.ref.png | Bin 5921 -> 5919 bytes - .../subsurface-scale.traps.argb32.ref.png | Bin 5921 -> 5919 bytes - .../reference/subsurface-scale.traps.rgb24.ref.png | Bin 5921 -> 5919 bytes - test/reference/subsurface.base.argb32.ref.png | Bin 1811 -> 1801 bytes - test/reference/subsurface.base.rgb24.ref.png | Bin 1811 -> 1801 bytes - test/reference/subsurface.traps.argb32.ref.png | Bin 1811 -> 1801 bytes - test/reference/subsurface.traps.rgb24.ref.png | Bin 1811 -> 1801 bytes - .../surface-pattern-operator.base.argb32.ref.png | Bin 5184 -> 5107 bytes - .../surface-pattern-operator.traps.argb32.ref.png | Bin 5184 -> 5107 bytes - test/reference/twin-antialias-gray.argb32.ref.png | Bin 3990 -> 0 bytes - .../twin-antialias-gray.base.argb32.ref.png | Bin 4392 -> 4320 bytes - .../twin-antialias-gray.base.rgb24.ref.png | Bin 4392 -> 4320 bytes - test/reference/twin-antialias-gray.ref.png | Bin 2292 -> 3948 bytes - test/reference/twin-antialias-gray.rgb24.ref.png | Bin 3990 -> 0 bytes - .../twin-antialias-gray.traps.argb32.ref.png | Bin 4392 -> 4320 bytes - .../twin-antialias-gray.traps.rgb24.ref.png | Bin 4392 -> 4320 bytes - .../twin-antialias-mixed.base.argb32.ref.png | Bin 2230 -> 2340 bytes - .../twin-antialias-mixed.base.rgb24.ref.png | Bin 2230 -> 2340 bytes - .../twin-antialias-mixed.traps.argb32.ref.png | Bin 2230 -> 2340 bytes - .../twin-antialias-mixed.traps.rgb24.ref.png | Bin 2230 -> 2340 bytes - .../twin-antialias-subpixel.argb32.ref.png | Bin 3990 -> 0 bytes - .../twin-antialias-subpixel.base.argb32.ref.png | Bin 4392 -> 4320 bytes - .../twin-antialias-subpixel.base.rgb24.ref.png | Bin 4392 -> 4320 bytes - test/reference/twin-antialias-subpixel.ref.png | Bin 2292 -> 3948 bytes - .../twin-antialias-subpixel.rgb24.ref.png | Bin 3990 -> 0 bytes - .../twin-antialias-subpixel.traps.argb32.ref.png | Bin 4392 -> 4320 bytes - .../twin-antialias-subpixel.traps.rgb24.ref.png | Bin 4392 -> 4320 bytes - test/reference/twin.argb32.ref.png | Bin 3990 -> 0 bytes - test/reference/twin.base.argb32.ref.png | Bin 4392 -> 4320 bytes - test/reference/twin.base.rgb24.ref.png | Bin 4392 -> 4320 bytes - test/reference/twin.ref.png | Bin 2292 -> 3948 bytes - test/reference/twin.rgb24.ref.png | Bin 3990 -> 0 bytes - test/reference/twin.traps.argb32.ref.png | Bin 4392 -> 4320 bytes - test/reference/twin.traps.rgb24.ref.png | Bin 4392 -> 4320 bytes - .../unantialiased-shapes.traps.argb32.ref.png | Bin 3977 -> 3932 bytes - .../unantialiased-shapes.traps.rgb24.ref.png | Bin 3977 -> 3932 bytes - test/reference/unbounded-operator.rgb24.ref.png | Bin 1333 -> 1333 bytes - .../unbounded-operator.traps.argb32.ref.png | Bin 2648 -> 2764 bytes - .../unbounded-operator.traps.rgb24.ref.png | Bin 1269 -> 1302 bytes - .../reference/unclosed-strokes.base.argb32.ref.png | Bin 1482 -> 1452 bytes - test/reference/unclosed-strokes.base.rgb24.ref.png | Bin 1482 -> 1452 bytes - .../unclosed-strokes.traps.argb32.ref.png | Bin 1482 -> 1452 bytes - .../reference/unclosed-strokes.traps.rgb24.ref.png | Bin 1482 -> 1452 bytes - test/reference/user-font.argb32.ref.png | Bin 6478 -> 0 bytes - test/reference/user-font.base.argb32.ref.png | Bin 6080 -> 5785 bytes - test/reference/user-font.base.rgb24.ref.png | Bin 6080 -> 5785 bytes - test/reference/user-font.ref.png | Bin 4939 -> 6209 bytes - test/reference/user-font.rgb24.ref.png | Bin 6478 -> 0 bytes - test/reference/user-font.traps.argb32.ref.png | Bin 6080 -> 5785 bytes - test/reference/user-font.traps.rgb24.ref.png | Bin 6080 -> 5785 bytes - 347 files changed, 0 insertions(+), 0 deletions(-) - -commit d6a05676849509049fc54eea2559803b6247a6fe -Author: Chris Wilson -AuthorDate: Wed Oct 3 17:38:21 2012 +0100 -Commit: Chris Wilson -CommitDate: Wed Oct 3 17:38:21 2012 +0100 - - stroke: Remove redundant code for computing culling extents - - Same code repeated! - - Signed-off-by: Chris Wilson - - src/cairo-path-stroke.c | 91 ++++++++++++++++++------------------------------- - src/cairo-rectangle.c | 16 ++------- - 2 files changed, 35 insertions(+), 72 deletions(-) - -commit 8020e0bc8cbd3e5ac188eb305b74ae1c1f362a31 -Author: Chris Wilson -AuthorDate: Wed Oct 3 17:01:41 2012 +0100 -Commit: Chris Wilson -CommitDate: Wed Oct 3 17:08:06 2012 +0100 - - recording: Perform an explicit during snapshot - - In order to avoid recursing upon our source mutex when doing a snapshot, - we can perform an explicit copy of the command array. This should also - be faster than performing a replay as well. - - Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=50443 - Signed-off-by: Chris Wilson - - src/cairo-recording-surface.c | 312 +++++++++++++++++++++++++++++++++++++++++- - 1 file changed, 311 insertions(+), 1 deletion(-) - -commit 797441093a8346003552e0cf89aef2a644ff53ab -Author: Chris Wilson -AuthorDate: Thu Sep 27 15:21:42 2012 +0100 -Commit: Chris Wilson -CommitDate: Thu Sep 27 15:29:36 2012 +0100 - - tor: Fudge the edge if it is projected into a point - - If we generate an edge (through polygon-intersect) where its end-points - lie outside the line definition then it is possible for that line to be - degenerate under sample grid projection. Apply a fudge factor to prevent - explosions as otherwise we reject an edge whose height is not strictly - 0. - - Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=54822 - Signed-off-by: Chris Wilson - - src/cairo-tor-scan-converter.c | 2 +- - src/cairo-tor22-scan-converter.c | 2 +- - 2 files changed, 2 insertions(+), 2 deletions(-) - -commit cabb3c3bdf3153719b0ee538ea1b66137dc89085 -Author: Chris Wilson -AuthorDate: Thu Sep 27 12:21:00 2012 +0100 -Commit: Chris Wilson -CommitDate: Thu Sep 27 12:21:00 2012 +0100 - - spans-compositor: Remove polygon limits after construction - - Signed-off-by: Chris Wilson - - src/cairo-spans-compositor.c | 10 +++++++--- - 1 file changed, 7 insertions(+), 3 deletions(-) - -commit c05147b215072f9bd5e951011f68d9e647cf001f -Author: Chris Wilson -AuthorDate: Thu Sep 27 11:41:58 2012 +0100 -Commit: Chris Wilson -CommitDate: Thu Sep 27 11:41:58 2012 +0100 - - test: Refresh reference image for clip-disjoint-quad - - Rather than using the traps reference for all target as this then - generates false negatives with the spans compositor. - - Signed-off-by: Chris Wilson - - test/reference/clip-disjoint-quad.ref.png | Bin 1542 -> 1592 bytes - test/reference/clip-disjoint-quad.traps.ref.png | Bin 0 -> 1542 bytes - 2 files changed, 0 insertions(+), 0 deletions(-) - -commit ef0b2e43ee299a1c2e7ecfbdf36a610c4ec53d0e -Author: Chris Wilson -AuthorDate: Thu Sep 27 11:35:40 2012 +0100 -Commit: Chris Wilson -CommitDate: Thu Sep 27 11:35:40 2012 +0100 - - composite-rectangles: Update unbounded (clip extents) after reducing clip - - So that the composite-rectangles remains consistent with the reduced - clip in case the individual compositors try to optimise their rendering - strategies based on the reduced clip and the overall extents. - - Signed-off-by: Chris Wilson - - src/cairo-composite-rectangles.c | 17 ++++++++++++++++- - 1 file changed, 16 insertions(+), 1 deletion(-) - -commit 36536d3eb83a8f942bcf1afba4d0815fbeaca10f -Author: Chris Wilson -AuthorDate: Thu Sep 27 11:14:18 2012 +0100 -Commit: Chris Wilson -CommitDate: Thu Sep 27 11:14:18 2012 +0100 - - spans-compositor: Use the tight clip-boxes for polygon construction - - If we will be reducing the clip intersection to a single clip box check - during construction, it helps if we use the tight clip box. - - Signed-off-by: Chris Wilson - - src/cairo-spans-compositor.c | 29 +++++++++++++++++++---------- - 1 file changed, 19 insertions(+), 10 deletions(-) - -commit 7e856071a27b06a6ae35b6445635da9276975c69 -Author: Chris Wilson -AuthorDate: Thu Sep 27 11:13:23 2012 +0100 -Commit: Chris Wilson -CommitDate: Thu Sep 27 11:13:23 2012 +0100 - - polygon-intersect: Exclude non-overlapping clip boxes from consideration - - Signed-off-by: Chris Wilson - - src/cairo-polygon-intersect.c | 22 ++++++++++++++-------- - 1 file changed, 14 insertions(+), 8 deletions(-) - -commit 3969f2c687aa94721e02d50c2f9e1b4d62a546f7 -Author: Chris Wilson -AuthorDate: Thu Sep 27 09:56:36 2012 +0100 -Commit: Chris Wilson -CommitDate: Thu Sep 27 09:58:50 2012 +0100 - - test: Add clip-disjoint-quad - - Exercises a bug in the polygon intersection code demonstrated by Søren - Sandmann. - - Signed-off-by: Chris Wilson - - test/Makefile.sources | 1 + - test/clip-disjoint-quad.c | 83 ++++++++++++++++++++++++++++++ - test/reference/clip-disjoint-quad.ref.png | Bin 0 -> 1542 bytes - 3 files changed, 84 insertions(+) - -commit 9735d1d716262a0c4f0a77363ce8c7d6064fa7d6 -Author: Uli Schlachter -AuthorDate: Tue Sep 25 11:58:18 2012 +0200 -Commit: Uli Schlachter -CommitDate: Tue Sep 25 11:58:18 2012 +0200 - - mark_dirty: Check surface status - - This problem was introduced in commit "xlib: Implement SHM fallbacks and fast - upload paths". Before, cairo_surface_mark_dirty() directly called - cairo_surface_mark_dirty_rectangle() with special "magical arguments" and thus - didn't need any checks on the surface status. - - Fixes: api-special-cases - - Signed-off-by: Uli Schlachter - - src/cairo-surface.c | 7 +++++++ - 1 file changed, 7 insertions(+) - -commit 2be125817ade58ca25cc6cc6b23e2f4dbea722c6 -Author: Uli Schlachter -AuthorDate: Tue Sep 25 11:40:22 2012 +0200 -Commit: Uli Schlachter -CommitDate: Tue Sep 25 11:44:54 2012 +0200 - - surface: Check reference count right before free - - This makes sure that nothing took a reference during finishing and during - detaching user and mime-data. - - Signed-off-by: Uli Schlachter - - src/cairo-surface.c | 6 +++--- - 1 file changed, 3 insertions(+), 3 deletions(-) - -commit f2720e2ba1f68e9ec8f8822e41f4045663e99ad8 -Author: Uli Schlachter -AuthorDate: Tue Sep 25 11:39:42 2012 +0200 -Commit: Uli Schlachter -CommitDate: Tue Sep 25 11:39:42 2012 +0200 - - xcb: Add a missing check for FillRectangles - - Fixes: big-empty-box big-little-box operator operator-alpha - surface-pattern-operator unbounded-operator - - Signed-off-by: Uli Schlachter - - src/cairo-xcb-surface-render.c | 13 +++++++++---- - 1 file changed, 9 insertions(+), 4 deletions(-) - -commit b264ae76bd2621363cbc1e2b5bcdc4b0583d4b1f -Author: Uli Schlachter -AuthorDate: Tue Sep 25 11:34:52 2012 +0200 -Commit: Uli Schlachter -CommitDate: Tue Sep 25 11:34:52 2012 +0200 - - xcb: Check if traps are supported before using them - - This code tried to optimize the clip away by intersecting the boxes with the - clip polygon. However, it also did so when the server didn't support traps. - - Fixes: clip-stroke-unbounded clip-fill-nz-unbounded clip-fill-eo-unbounded - clip-fill clip-fill-rule a1-clip-fill-rule clip-group-shapes-circles - clip-intersect clip-nesting clip-operator clip-push-group clip-polygons - clip-shape clip-text clip-twice inverted-clip mask random-clip - rotate-clip-image-surface-paint trap-clip unantialiased-shapes - - Signed-off-by: Uli Schlachter - - src/cairo-xcb-surface-render.c | 3 ++- - 1 file changed, 2 insertions(+), 1 deletion(-) - -commit 0ccbb83eb892aca51838aeb1da45070b385a6d88 -Author: Uli Schlachter -AuthorDate: Tue Sep 25 11:31:04 2012 +0200 -Commit: Uli Schlachter -CommitDate: Tue Sep 25 11:31:04 2012 +0200 - - xcb: Check the right flag for FillRectangles - - Fixes: operator-source - - Signed-off-by: Uli Schlachter - - src/cairo-xcb-surface-render.c | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -commit b33d83ad49343ce226f76ceb6c83659c72442e91 -Author: Uli Schlachter -AuthorDate: Tue Sep 25 11:12:58 2012 +0200 -Commit: Uli Schlachter -CommitDate: Tue Sep 25 11:27:59 2012 +0200 - - xcb: Verify extension support before sending - - This commit adds lots of asserts. These asserts verify for each extension - request that we send that the server really supports this. - - Sadly, this causes 28 assertion failures in the test suite with xcb-render-0.0. - - Signed-off-by: Uli Schlachter - - src/cairo-xcb-connection-render.c | 20 ++++++++++++++++++++ - src/cairo-xcb-connection-shm.c | 4 ++++ - 2 files changed, 24 insertions(+) - -commit de31018bdd1cc78fd54cf9fd7b220117008c33a8 -Author: Uli Schlachter -AuthorDate: Sat Sep 15 15:43:16 2012 +0200 -Commit: Uli Schlachter -CommitDate: Mon Sep 24 09:44:10 2012 +0200 - - xcb: Switch to compositor architecture - - This commit removes the hand-written code in cairo-xcb-surface.c and instead - makes use of cairo_compositor_t. Surprisingly, this doesn't break a single test - case. :-) - - Signed-off-by: Uli Schlachter - - src/cairo-xcb-private.h | 59 ++++----- - src/cairo-xcb-surface-render.c | 75 +++++------ - src/cairo-xcb-surface.c | 277 ++++++++++++++++++++--------------------- - 3 files changed, 197 insertions(+), 214 deletions(-) - -commit 6300579a8b2c0e38a0c1abae89675bf6cb769902 -Author: Uli Schlachter -AuthorDate: Sat Sep 15 14:56:51 2012 +0200 -Commit: Uli Schlachter -CommitDate: Mon Sep 24 09:44:10 2012 +0200 - - xcb: Remove unimplemented cairo compositor - - Signed-off-by: Uli Schlachter - - src/Makefile.sources | 1 - - src/cairo-xcb-private.h | 44 -------------------- - src/cairo-xcb-surface-cairo.c | 94 ------------------------------------------- - src/cairo-xcb-surface.c | 32 --------------- - 4 files changed, 171 deletions(-) - -commit 8d86ea4dcbefc982e4a694f1d8e90a90b3695c10 -Author: Uli Schlachter -AuthorDate: Sat Sep 15 14:37:51 2012 +0200 -Commit: Uli Schlachter -CommitDate: Mon Sep 24 09:42:43 2012 +0200 - - xcb: Fix a warn_unused_result warning - - cairo-xcb-surface.c: In function '_drawable_changed': - cairo-xcb-surface.c:1434:39: warning: ignoring return value of '_cairo_surface_begin_modification', declared with attribute warn_unused_result [-Wunused-result] - - Signed-off-by: Uli Schlachter - - src/cairo-xcb-surface.c | 3 ++- - 1 file changed, 2 insertions(+), 1 deletion(-) - -commit d6253dd53127368797dfd43084450e70b4921f77 -Author: Uli Schlachter -AuthorDate: Sat Sep 15 14:36:06 2012 +0200 -Commit: Uli Schlachter -CommitDate: Mon Sep 24 09:42:43 2012 +0200 - - Remove an unimplemented function declaration - - This was added in commit 2458120dee350cd1b49f999f64b17a895a4b6607. - - Signed-off-by: Uli Schlachter - - src/cairo-pattern-private.h | 3 --- - 1 file changed, 3 deletions(-) - -commit 08e3f4614b688331534d72f46c9c3e9f292d0216 -Author: Uli Schlachter -AuthorDate: Sat Sep 15 14:33:54 2012 +0200 -Commit: Uli Schlachter -CommitDate: Mon Sep 24 09:42:43 2012 +0200 - - Fix make check - - The inline functions in cairo-backend-private.h tried to dereference a cairo_t, - which wasn't defined. Fix this by including cairo-private.h. - - In cairo-mempool-private.h, size_t is used but stddef.h is not included. - - Fixes: - - CHECK cairo-backend-private.h - In file included from headers-standalone-tmp.c:1:0: - ./cairo-backend-private.h: In function ‘_cairo_backend_to_user’: - ./cairo-backend-private.h:179:7: error: dereferencing pointer to incomplete type - ./cairo-backend-private.h: In function ‘_cairo_backend_to_user_distance’: - ./cairo-backend-private.h:185:7: error: dereferencing pointer to incomplete type - ./cairo-backend-private.h: In function ‘_cairo_user_to_backend’: - ./cairo-backend-private.h:191:7: error: dereferencing pointer to incomplete type - ./cairo-backend-private.h: In function ‘_cairo_user_to_backend_distance’: - ./cairo-backend-private.h:197:7: error: dereferencing pointer to incomplete type - CHECK cairo-mempool-private.h - In file included from headers-standalone-tmp.c:1:0: - ./cairo-mempool-private.h:61:5: error: unknown type name ‘size_t’ - ./cairo-mempool-private.h:62:5: error: unknown type name ‘size_t’ - ./cairo-mempool-private.h:68:8: error: unknown type name ‘size_t’ - ./cairo-mempool-private.h:73:44: error: unknown type name ‘size_t’ - - Signed-off-by: Uli Schlachter - - src/cairo-backend-private.h | 1 + - src/cairo-mempool-private.h | 2 ++ - 2 files changed, 3 insertions(+) - -commit 1054840d864da7efcac2ee02d43a526ed6a6760c -Author: Behdad Esfahbod -AuthorDate: Sat Sep 22 15:59:36 2012 -0400 -Commit: Behdad Esfahbod -CommitDate: Sat Sep 22 15:59:36 2012 -0400 - - Fix malloc-stats for newer glibc - - util/malloc-stats.c | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -commit 38c6084758b178177cff8a3b6a9e0b5be60c80a2 -Author: Behdad Esfahbod -AuthorDate: Mon Sep 17 16:26:08 2012 -0400 -Commit: Behdad Esfahbod -CommitDate: Mon Sep 17 16:27:04 2012 -0400 - - [util/malloc-stats] Use tighter spacing. - - util/malloc-stats.c | 6 +++--- - 1 file changed, 3 insertions(+), 3 deletions(-) - -commit 59248fb2628e86ff62abfbf122b88c2a299ec393 -Author: Weng Xuetian -AuthorDate: Thu Sep 13 22:56:57 2012 +0100 -Commit: Chris Wilson -CommitDate: Thu Sep 13 22:57:45 2012 +0100 - - xlib: Reset fallback counter when discarding the fallback - - References: https://bugs.freedesktop.org/show_bug.cgi?id=54657 - - src/cairo-xlib-surface.c | 2 ++ - 1 file changed, 2 insertions(+) - -commit 5c59d989f9037f94c80ccd7929dc05f4a95be4df -Author: Chris Wilson -AuthorDate: Thu Sep 13 22:50:11 2012 +0100 -Commit: Chris Wilson -CommitDate: Thu Sep 13 22:54:18 2012 +0100 - - xlib: Destroy the fallback damage along with the fallback surface - - Whenever we discard the fallback surface, we need to destroy the - associated damage tracking, so move this into the common discard - routine. - - This should fix the issue when trying to flush the fallback before - the user modifies any foreign Drawables. The current code issued the - flush and then explicitly discard the fallback, but unless it was idle - at the time of the flush the associated damage would not have also been - destroyed. Asserts followed. - - References: https://bugs.freedesktop.org/show_bug.cgi?id=54657 - Signed-off-by: Chris Wilson - - src/cairo-xlib-surface.c | 13 +++++-------- - 1 file changed, 5 insertions(+), 8 deletions(-) - -commit 97282ef51a01ae2ac3a7a8bf3ebce841a60dc907 -Author: Chris Wilson -AuthorDate: Thu Sep 13 17:00:24 2012 +0100 -Commit: Chris Wilson -CommitDate: Thu Sep 13 17:00:24 2012 +0100 - - xlib: Do not call _cairo_xlib_surface_flush directly - - Use the higher level layer to be sure we detach any snapshots and other - cached data that is invalidated along with the change of Drawable. - - Pointed out by the eternally wise Uli Schlachter. - - Signed-off-by: Chris Wilson - - src/cairo-xlib-surface.c | 4 ++-- - 1 file changed, 2 insertions(+), 2 deletions(-) - -commit 69d97d97bea86e7f4223d857803fb7f0ec0d369f -Author: Chris Wilson -AuthorDate: Thu Sep 13 16:45:46 2012 +0100 -Commit: Chris Wilson -CommitDate: Thu Sep 13 16:45:46 2012 +0100 - - xlib: Force the fallback flush before updating the external Drawable - - _cairo_surface_begin_modification() performs an internal flush, for - which the xlib backend skips flushing the fallback surface as it will - continue to use it for the subsequent operation. In the case where we - are flushing prior to updating the Drawable, we need to perform an - external flush which will trigger the posting of the damage from the - fallback surface. - - Reported-by: Weng Xuetian - References: https://bugs.freedesktop.org/show_bug.cgi?id=54657 - Signed-off-by: Chris Wilson - - src/cairo-xlib-surface.c | 4 ++-- - 1 file changed, 2 insertions(+), 2 deletions(-) - -commit 6ee216000ae487492fceda0fb3fecb20bb9a41f6 -Author: Chris Wilson -AuthorDate: Thu Sep 13 15:25:49 2012 +0100 -Commit: Chris Wilson -CommitDate: Thu Sep 13 15:30:27 2012 +0100 - - xlib: Explicitly discard the fallback shm pixmap upon user modification - - If the user changes the size of the underlying drawable, we much make - sure that we discard the current ShmPixmap in order to create a new - fallback pixmap of the correct size next time. - - Reported-by: Weng Xuetian - Bugzilla: https://bugs.freedesktop.org/show_bug.cgi - Signed-off-by: Chris Wilson - - src/cairo-xlib-surface.c | 38 +++++++++++++++++++++++++++++--------- - 1 file changed, 29 insertions(+), 9 deletions(-) - -commit e2c4bb9465e6261eb79f24af52d339df0b563b55 -Author: Chris Wilson -AuthorDate: Thu Sep 13 12:40:49 2012 +0100 -Commit: Chris Wilson -CommitDate: Thu Sep 13 12:40:49 2012 +0100 - - xlib: Fix regression in cairo_xlib_surface_set_drawable() - - In commit 0bfd2acd35547fc2bd0de99cc67d153f0170697d - Author: Chris Wilson - Date: Mon Aug 13 01:34:12 2012 +0100 - - xlib: Implement SHM fallbacks and fast upload paths - - I made the mistake of inverting the logic for - cairo_xlib_surface_set_drawable() causing it then to never update. - - Thanks to Uli Schlachter for spotting my error. - - References: https://bugs.freedesktop.org/show_bug.cgi?id=54657 - Reported-by: Weng Xuetian - Signed-off-by: Chris Wilson - - src/cairo-xlib-surface.c | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -commit 77330f6b841b6938e0da44b32692cd64b0f53cbd -Author: Chris Wilson -AuthorDate: Tue Sep 11 18:20:45 2012 +0100 -Commit: Chris Wilson -CommitDate: Tue Sep 11 18:24:33 2012 +0100 - - xcb: Always flush the fallback damage to foreign drawables - - We need to flush any fallback to a foreign drawable upon finish. - However, we must be careful not to attach the snapshot in that case or - else we end up with an expected reference. This is similar to the - treatment of xlib/shm in commit f864e2d70. - - Reported-by: Henry Song - Signed-off-by: Chris Wilson - - src/cairo-xcb-surface.c | 5 +++-- - 1 file changed, 3 insertions(+), 2 deletions(-) - -commit 93774ac0348df04c3fa84f5bc01fe35c87a62089 -Author: Andrea Canciani -AuthorDate: Wed Sep 5 17:52:50 2012 +0200 -Commit: Andrea Canciani -CommitDate: Mon Sep 10 23:16:08 2012 +0200 - - test: Add degenerate closed path case to get-path-extents - - This is a testcase to ensure that we do not regress - https://bugs.freedesktop.org/show_bug.cgi?id=54549 (which is already - fixed by b0c466e27afcec230b2c9436eeb924c05123a544). - - test/get-path-extents.c | 8 ++++++++ - 1 file changed, 8 insertions(+) - -commit f34b87f6d76cbea93acd4a8c73c8c6a6b412a302 -Author: Chris Wilson -AuthorDate: Mon Sep 10 15:09:18 2012 +0100 -Commit: Chris Wilson -CommitDate: Mon Sep 10 15:09:18 2012 +0100 - - path: Convert from backend coordinates back into user coordinates - - Fixes regression from commit 83bfd85a1378e61b8bdc3f554f5e07900311f61f - Author: Chris Wilson - Date: Fri Apr 23 19:45:26 2010 +0100 - - Implement cairo_backend_t - - As there exists no public API to perform the operation we needed, and we - failed to create one, the constructed path failed to correctly remove - the device offset. - - Fixes copy-path under device translation. - - Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=54732 - Reported-by: Benjamin Berg - Signed-off-by: Chris Wilson - - src/cairo-path.c | 11 ++++++----- - 1 file changed, 6 insertions(+), 5 deletions(-) - -commit df6780442feba5c0c9404353177f24913b58bd32 -Author: Chris Wilson -AuthorDate: Mon Sep 10 15:03:47 2012 +0100 -Commit: Chris Wilson -CommitDate: Mon Sep 10 15:09:15 2012 +0100 - - context: Add missing functions to transform between user and backend coordinates - - Signed-off-by: Chris Wilson - - src/cairo-backend-private.h | 29 +++++++++++++++++++++++++++ - src/cairo-default-context.c | 44 +++++++++++++++++++++++++++++++++++++++++ - src/cairo-gstate-private.h | 10 ++++++++++ - src/cairo-gstate.c | 7 +++++++ - src/skia/cairo-skia-context.cpp | 4 ++++ - 5 files changed, 94 insertions(+) - -commit f864e2d70f53a1feeee5e32bf9724b1e544025a6 -Author: Chris Wilson -AuthorDate: Sat Sep 8 16:39:05 2012 +0100 -Commit: Chris Wilson -CommitDate: Sat Sep 8 16:41:23 2012 +0100 - - xlib/shm: Explicitly release shm surface if we do not own the pixmap - - In this case we want to prevent the short-circuiting of the flush of the - ShmPixmap that is ordinarily performed during finish(). - - Signed-off-by: Chris Wilson - - src/cairo-xlib-surface.c | 11 +++++++++-- - 1 file changed, 9 insertions(+), 2 deletions(-) - -commit 558f0a5ab4a88937b8c212c13309d11cb1a101af -Author: Chris Wilson -AuthorDate: Sat Sep 8 15:12:58 2012 +0100 -Commit: Chris Wilson -CommitDate: Sat Sep 8 15:12:58 2012 +0100 - - image: Check for an error surface before dereferencing the backend - - As the surface->backend will be NULL in such an error surface, and we - may be legitimately doing boundary checks to reject the error surface. - The alternative would be to set an explicit error surface backend. - - Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=54664 - Signed-off-by: Chris Wilson - - src/cairo-image-surface-inline.h | 3 ++- - 1 file changed, 2 insertions(+), 1 deletion(-) - -commit b0c466e27afcec230b2c9436eeb924c05123a544 -Author: Chris Wilson -AuthorDate: Wed Sep 5 14:55:55 2012 +0100 -Commit: Chris Wilson -CommitDate: Wed Sep 5 14:55:55 2012 +0100 - - path: Update last_move_point after move-to - - Reported-and-tested-by: Jussi Kukkonen - Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=54549 - Signed-off-by: Chris Wilson - - src/cairo-path-fixed.c | 1 + - 1 file changed, 1 insertion(+) - -commit 83759e7d592c5d7b12b2341574fd584fe5e0fb5a -Author: Chris Wilson -AuthorDate: Tue Sep 4 14:42:34 2012 +0100 -Commit: Chris Wilson -CommitDate: Tue Sep 4 14:47:22 2012 +0100 - - default-context: Convert the relative path segments into the backend coordinates - - When transforming the incoming paths, the goal is to transform them from - user space onto the target coordinate system. Currently for relative - paths we used user_to_device_distance as we presumed that there was no - backend scale factor. However, Alex Larsson noticed that these then - broke when playing around with such a device transform... - - Reported-by: Alexander Larsson - Signed-off-by: Chris Wilson - - src/cairo-default-context.c | 10 +++++----- - src/cairo-gstate-private.h | 10 ++++++++++ - src/cairo-gstate.c | 7 +++++++ - 3 files changed, 22 insertions(+), 5 deletions(-) - -commit c0b1b178184ccfba0fe60c2a49901cadef9df36b -Author: Chris Wilson -AuthorDate: Mon Aug 27 13:21:35 2012 +0100 -Commit: Chris Wilson -CommitDate: Mon Aug 27 13:21:35 2012 +0100 - - xlib/shm: Masquerade as an ordinary ShmCompletionEvent - - Needs a bit of extra work to create the extension event, but this leaves - the application with only a single spurious event to filter. - - Signed-off-by: Chris Wilson - - src/cairo-xlib-private.h | 6 +-- - src/cairo-xlib-surface-shm.c | 109 ++++++++++++------------------------------- - 2 files changed, 32 insertions(+), 83 deletions(-) - -commit be2973e405764d4de4a44a01ff98db3e6495a361 -Author: Chris Wilson -AuthorDate: Sun Aug 26 11:59:46 2012 +0100 -Commit: Chris Wilson -CommitDate: Sun Aug 26 11:59:46 2012 +0100 - - bentley-ottmann: Cache the most recent edge colinearity check - - We frequently compare neighbouring edges for their colinearity (in case - we can skip over them in the active list) so we can record the last - comparison and reuse the result next time. - - Signed-off-by: Chris Wilson - - src/cairo-bentley-ottmann.c | 42 ++++++++++++++++++++++++++++++++---------- - 1 file changed, 32 insertions(+), 10 deletions(-) - -commit 637659fb511824eb8ac31ef85db10406295734e6 -Author: Chris Wilson -AuthorDate: Sun Aug 26 00:39:43 2012 +0100 -Commit: Chris Wilson -CommitDate: Sun Aug 26 11:16:32 2012 +0100 - - bentley-ottmann: hint that the insertion compare function should be inlined - - Albeit it too large for gcc to automatically inline, it is only used - from within a single function. Hopefully gcc can optimise better with - the hint. - - Signed-off-by: Chris Wilson - - src/cairo-bentley-ottmann.c | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -commit 3c6e4311fb3b9fe400555a8d97193fc87974899b -Author: Chris Wilson -AuthorDate: Sun Aug 26 00:35:52 2012 +0100 -Commit: Chris Wilson -CommitDate: Sun Aug 26 11:16:32 2012 +0100 - - bentley-ottmann: Only check the pairs of coordinates for equality. - - Signed-off-by: Chris Wilson - - src/cairo-bentley-ottmann.c | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -commit 535b4e970cdbb459be621cecafd7f91ca4698396 -Author: Chris Wilson -AuthorDate: Sun Aug 26 00:16:33 2012 +0100 -Commit: Chris Wilson -CommitDate: Sun Aug 26 11:16:32 2012 +0100 - - bentley-ottman: Remove a few superfluous status propagation - - For the traps it is simpler if we report the status at the end, and - no-op the accumulation of the trap after hitting the error condition. - - Signed-off-by: Chris Wilson - - src/cairo-bentley-ottmann.c | 69 ++++++++++++++------------------------------- - 1 file changed, 21 insertions(+), 48 deletions(-) - -commit b66065537cec5f03b33f7513f06e26630c28b5f1 -Author: Chris Wilson -AuthorDate: Sun Aug 26 10:21:22 2012 +0100 -Commit: Chris Wilson -CommitDate: Sun Aug 26 11:15:53 2012 +0100 - - stroke: Compute bounds for fallback stroker (typically dashing) - - Signed-off-by: Chris Wilson - - src/cairo-path-stroke.c | 42 +++++++++++++++++++++++++++++++++++------- - 1 file changed, 35 insertions(+), 7 deletions(-) - -commit 99593538a9d054aa1bb9fa620fced8c8b8ccdc9d -Author: Chris Wilson -AuthorDate: Sun Aug 26 10:50:50 2012 +0100 -Commit: Chris Wilson -CommitDate: Sun Aug 26 11:14:17 2012 +0100 - - stroke: Convert fallback stroker to new pen vertex finder - - Signed-off-by: Chris Wilson - - src/cairo-path-stroke.c | 173 ++++++++++++++++++++++++++---------------------- - 1 file changed, 95 insertions(+), 78 deletions(-) - -commit 4eb8e9f8618c5c5c002b7fd72c0370451ae1f511 -Author: Chris Wilson -AuthorDate: Sat Aug 25 23:57:56 2012 +0100 -Commit: Chris Wilson -CommitDate: Sun Aug 26 11:13:28 2012 +0100 - - stroke: Convert a very small round-join into a miter - - Avoid adding a bevel join if the miter point is within tolerance. - - Signed-off-by: Chris Wilson - - src/cairo-path-stroke-polygon.c | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -commit fa93fc63b652f04bcf7d5340a13023819ecf2140 -Author: Chris Wilson -AuthorDate: Sat Aug 25 23:54:36 2012 +0100 -Commit: Chris Wilson -CommitDate: Sun Aug 26 11:12:52 2012 +0100 - - stroke: Precompute the line half-width - - Signed-off-by: Chris Wilson - - src/cairo-path-stroke-polygon.c | 82 +++++++++++++++++++---------------------- - 1 file changed, 38 insertions(+), 44 deletions(-) - -commit 3cf6551ac71bac4d0ae1d0938bc0205dfc03f65c -Author: Chris Wilson -AuthorDate: Sat Aug 25 23:42:45 2012 +0100 -Commit: Chris Wilson -CommitDate: Sun Aug 26 11:10:42 2012 +0100 - - stroke: Use new pen vertex range finders - - Signed-off-by: Chris Wilson - - src/cairo-path-stroke-polygon.c | 93 ++++++++++++----------------------------- - 1 file changed, 27 insertions(+), 66 deletions(-) - -commit 74e9ae8cdff31e9a039b17f7dbe6e80f98e2c047 -Author: Chris Wilson -AuthorDate: Sat Aug 25 23:29:21 2012 +0100 -Commit: Chris Wilson -CommitDate: Sun Aug 26 11:10:07 2012 +0100 - - pen: Use bisection to speed up vertex finding - - Signed-off-by: Chris Wilson - - src/cairo-pen.c | 81 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ - src/cairoint.h | 12 +++++++++ - 2 files changed, 93 insertions(+) - -commit aeb039b16dc302192113a7f10c4b86e7d13eb221 -Author: Chris Wilson -AuthorDate: Sat Aug 25 12:57:01 2012 +0100 -Commit: Chris Wilson -CommitDate: Sun Aug 26 11:08:02 2012 +0100 - - stroke: Skip spline evaluation when stroking to a polygon - - If the spline is wholly outside the clip region, accounting for the - stroke width and additional rendering, then we can simplify that spline - with a straight line. - - Signed-off-by: Chris Wilson - - src/cairo-path-stroke-polygon.c | 37 +++++++++++++++++++++++++++++++++++++ - 1 file changed, 37 insertions(+) - -commit bdf83008f4b2c723fd8e65e2a92bc47a2e7bc442 -Author: Chris Wilson -AuthorDate: Sat Aug 25 08:39:30 2012 +0100 -Commit: Chris Wilson -CommitDate: Sun Aug 26 11:07:57 2012 +0100 - - compositor: Skip invisible strokes - - If the pen is reduced to a single point, it is effectively invisible - when rasterised, so skip the stroke composition. - - Signed-off-by: Chris Wilson - - src/cairo-compositor.c | 4 ++++ - src/cairo-pen.c | 34 +++++++++++++--------------------- - src/cairoint.h | 5 +++++ - 3 files changed, 22 insertions(+), 21 deletions(-) - -commit fc38d7375d4f0342ece91596d71f0ce56aa2c975 -Author: Chris Wilson -AuthorDate: Fri Aug 24 17:39:08 2012 +0100 -Commit: Chris Wilson -CommitDate: Fri Aug 24 17:39:35 2012 +0100 - - xlib/shm: Add missing release of the display after GetImage - - Signed-off-by: Chris Wilson - - src/cairo-xlib-surface.c | 4 +++- - 1 file changed, 3 insertions(+), 1 deletion(-) - -commit 5355eab17d026f5d5566e6de47c9dbffc5ece5d0 -Author: Chris Wilson -AuthorDate: Fri Aug 24 10:34:05 2012 +0100 -Commit: Chris Wilson -CommitDate: Fri Aug 24 11:38:58 2012 +0100 - - xlib/shm: Reduce the frequency at which we emit events - - Flushing the shm operation is a fairly rare event, as it is typically - only involved with mixed rendering on a similar image, and should be - triggering its own events. Therefore we should be able to reduce our - event emission to the critical points in order to limit the amount of - extra overhead we generate. - - Signed-off-by: Chris Wilson - - src/cairo-xlib-display.c | 4 ++-- - src/cairo-xlib-surface-shm.c | 2 +- - 2 files changed, 3 insertions(+), 3 deletions(-) - -commit 5c4087af810763ee98682b3bcc1c759ad8b4c27b -Author: Martin Robinson -AuthorDate: Tue Feb 28 10:50:16 2012 -0800 -Commit: Martin Robinson -CommitDate: Wed Aug 22 13:49:14 2012 -0700 - - gl: Add a non-thread-aware mode for GL devices - - GLX and EGL devices are thread-aware currently. This - is safe, but on certain GPUs can be very expensive. In - this patch, we expose a new API which turns off the - safety feature in cases where performance is a priority. - - src/cairo-egl-context.c | 2 ++ - src/cairo-gl-device.c | 13 +++++++++++++ - src/cairo-gl-private.h | 2 ++ - src/cairo-gl.h | 4 ++++ - src/cairo-glx-context.c | 7 ++++--- - 5 files changed, 25 insertions(+), 3 deletions(-) - -commit 97410990935bb4baacbc1584362a87733c483583 -Author: Martin Robinson -AuthorDate: Fri Aug 17 16:00:51 2012 -0700 -Commit: Martin Robinson -CommitDate: Wed Aug 22 10:42:18 2012 -0700 - - gl: Remove the shader language version abstraction - - Cairo only needs to support one version of the shader language API, - thanks to the dispatch table. This seems unlikely to change any time - soon. This makes the addition of new features, such as a uniform - location cache, simpler. - - src/cairo-gl-private.h | 6 +- - src/cairo-gl-shaders.c | 464 +++++++++++++++++-------------------------------- - 2 files changed, 159 insertions(+), 311 deletions(-) - -commit 5c77b4df146796d8280a4f5b16949e3db4a1f84a -Author: Chris Wilson -AuthorDate: Tue Aug 21 21:03:04 2012 +0100 -Commit: Chris Wilson -CommitDate: Tue Aug 21 22:20:02 2012 +0100 - - xlib/shm: Only check if we are expecting an event - - As the XCheckWindowEvent() has the unwanted side-effect of flushing the - output queue when there is no event available (libX11 seems to be - entirely anti-performant), we need to roll our own that only checks the - already available event queue. - - Signed-off-by: Chris Wilson - - src/cairo-xlib-display.c | 2 -- - src/cairo-xlib-private.h | 3 --- - src/cairo-xlib-surface-shm.c | 62 ++++++++++++++++++++++++++++++++------------ - 3 files changed, 46 insertions(+), 21 deletions(-) - -commit aa5c7123097c56e2c35bf88b8377bbdd1523fbce -Author: Chris Wilson -AuthorDate: Tue Aug 21 10:12:06 2012 +0100 -Commit: Chris Wilson -CommitDate: Tue Aug 21 10:34:23 2012 +0100 - - xlib/shm: Use a genuine event rather than an open-ended request - - Adding lots of requests without popping the replies causes xcb to - continually sort large lists of unprocessed data. Use an event instead - and regularly dequeue them. - - Signed-off-by: Chris Wilson - - src/cairo-xlib-display.c | 4 ++- - src/cairo-xlib-private.h | 3 ++ - src/cairo-xlib-surface-shm.c | 80 +++++++++++++++++++++++++++++++++----------- - 3 files changed, 66 insertions(+), 21 deletions(-) - -commit 30d09cd33a582a2dd3f3a544366892c724f67592 -Author: Chris Wilson -AuthorDate: Mon Aug 20 17:20:08 2012 +0100 -Commit: Chris Wilson -CommitDate: Mon Aug 20 17:20:08 2012 +0100 - - cairo-script: Attempt to fallback for unresolved patterns - - If we fail to resolve a particular pattern, try removing a few features - from the pattern and see if we can resolve that fallback and continue on - with the trace with a close approximation. - - This is then behaves very similar as if the pattern requested a specific - font that was not available on the system and so was substituted. - - Signed-off-by: Chris Wilson - - util/cairo-script/cairo-script-operators.c | 19 +++++++++++++++++-- - 1 file changed, 17 insertions(+), 2 deletions(-) - -commit a7d505d40f439208b30762be663f332c60bc0883 -Author: Chris Wilson -AuthorDate: Mon Aug 20 16:43:28 2012 +0100 -Commit: Chris Wilson -CommitDate: Mon Aug 20 16:43:28 2012 +0100 - - ft: Report FILE_NOT_FOUND if creating a font with a specified nonexistent file - - If the FcPattern used to create a font specifies an exact file to use - and it does not exist we will fail much later with an ambiguous - NO_MEMORY error. As suggested by Behdad Esfahbod we should report this - back to the user so that they can take the appropriate action rather - than providing an automatic fallback. - - Signed-off-by: Chris Wilson - - src/cairo-ft-font.c | 3 ++- - 1 file changed, 2 insertions(+), 1 deletion(-) - -commit ee7f5607192a3341df45199b1c7c8996f2b7347d -Author: Chris Wilson -AuthorDate: Mon Aug 20 14:21:23 2012 +0100 -Commit: Chris Wilson -CommitDate: Mon Aug 20 14:21:23 2012 +0100 - - stroker: Avoid emitting a miter join for across an elided degenerate segment - - Given the criteria of the rectlinear stroker that it only handles - horizontal and vertical line segments, and eliminates degenerate - segments before stroking, we must be careful not to apply a join between - two horizontal segments (for example if the intervening vertical segment - was degenerate and so elided). A miter join between two colinear - segments is empty, yet we were blissfully extending the line caps to - cover the join. - - Fixes: outline-tolerance - Bugzilla: https://bugzilla.mozilla.org/show_bug.cgi?id=407107 - Signed-off-by: Chris Wilson - - src/cairo-path-stroke-boxes.c | 18 +++++++++++------- - 1 file changed, 11 insertions(+), 7 deletions(-) - -commit 2a0d81743270aaff29e8951c896cde644fd4e576 -Author: Chris Wilson -AuthorDate: Mon Aug 20 13:34:33 2012 +0100 -Commit: Chris Wilson -CommitDate: Mon Aug 20 13:34:33 2012 +0100 - - tests: Add outline-tolerance - - From https://bugs.freedesktop.org/show_bug.cgi?id=53841: - - "Rectangle drawn incorrectly when it has zero height - and miter limit greater than 1.414" - - Signed-off-by: Chris Wilson - - test/Makefile.sources | 1 + - test/outline-tolerance.c | 52 +++++++++++++++++++++++++++++++ - test/reference/outline-tolerance.ref.png | Bin 0 -> 205 bytes - 3 files changed, 53 insertions(+) - -commit d6f8ce91dc449a29b0921a8787d9a3c9a687b429 -Author: Chris Wilson -AuthorDate: Sun Aug 19 23:55:28 2012 +0100 -Commit: Chris Wilson -CommitDate: Sun Aug 19 23:55:28 2012 +0100 - - xlib: Move the shm cleanup from CloseDisplay to finish() - - Make sure that we always detach the ShmSegments upon dispose, or else we - can trivially leak lots of memory when using serial Display connections. - - Signed-off-by: Chris Wilson - - src/cairo-xlib-display.c | 4 ++-- - 1 file changed, 2 insertions(+), 2 deletions(-) - -commit 43c5387d1b251938eeba458a95d63e2dc7178c2d -Author: Chris Wilson -AuthorDate: Sun Aug 19 12:41:15 2012 +0100 -Commit: Chris Wilson -CommitDate: Sun Aug 19 12:41:15 2012 +0100 - - ft: Only use a specified font filename if its accessible - - If we try to use a non-existent path, FT_New_Face returns an error. - Instead, just use fontconfig to generate a fallback pattern. - - Signed-off-by: Chris Wilson - - src/cairo-ft-font.c | 18 +++++++++++++----- - 1 file changed, 13 insertions(+), 5 deletions(-) - -commit b3448c3dff79d0eda2a921178c26eb87f1ba34ea -Author: Chris Wilson -AuthorDate: Sat Aug 18 09:28:17 2012 +0100 -Commit: Chris Wilson -CommitDate: Sat Aug 18 09:28:37 2012 +0100 - - xlib: Drop the false optimisation of using a potentially busy shm upload pixmap - - Signed-off-by: Chris Wilson - - src/cairo-xlib-render-compositor.c | 2 -- - 1 file changed, 2 deletions(-) - -commit 10ef077324bb4c23630dcdab5f281f6fca00b78e -Author: Chris Wilson -AuthorDate: Sat Aug 18 09:16:49 2012 +0100 -Commit: Chris Wilson -CommitDate: Sat Aug 18 09:16:49 2012 +0100 - - xlib/shm: Mark the ShmPixmap as active following an upload flush - - Signed-off-by: Chris Wilson - - src/cairo-xlib-surface-shm.c | 3 +++ - 1 file changed, 3 insertions(+) - -commit 99a0d38a33a3dd311a4cf4481b7286db4e8ec775 -Author: Chris Wilson -AuthorDate: Sat Aug 18 09:10:07 2012 +0100 -Commit: Chris Wilson -CommitDate: Sat Aug 18 09:10:07 2012 +0100 - - xlib/shm: Fix runtime checking of has-shm-pixmaps for !shm case - - Signed-off-by: Chris Wilson - - src/cairo-xlib-surface-shm.c | 3 +++ - 1 file changed, 3 insertions(+) - -commit ec01c71ecab46e0252d295f8d1f24f261b3f52af -Author: Chris Wilson -AuthorDate: Sat Aug 18 08:02:42 2012 +0100 -Commit: Chris Wilson -CommitDate: Sat Aug 18 08:06:26 2012 +0100 - - xlib/shm: Wrap the detection of shm with locking - - As we access a global error variable, we need to hold a mutex against - simultaneous checking of multiple Displays. This should already be true - as we hold our display mutex to serialize initialisation, so just add an - assertion. As the client may mix use of cairo in one thread with X from - another, we need to hold the Display lock and serialise whilst - manipulating the low-level state of the Display. - - Suggested-by: Uli Schlachter - Signed-off-by: Chris Wilson - - src/cairo-xlib-surface-shm.c | 6 ++++++ - 1 file changed, 6 insertions(+) - -commit 1bc9f673b61aa48369329606acc13aa5bce94a0a -Author: Chris Wilson -AuthorDate: Fri Aug 17 23:38:10 2012 +0100 -Commit: Chris Wilson -CommitDate: Sat Aug 18 00:06:06 2012 +0100 - - xlib/shm: Avoid using a synchronous ShmCreatePixmap if evading the readback - - Signed-off-by: Chris Wilson - - src/cairo-xlib-surface-shm.c | 5 ++++- - 1 file changed, 4 insertions(+), 1 deletion(-) - -commit 3da2d8a1e277ae76ea2ba2533850b1901c6b3b29 -Author: Chris Wilson -AuthorDate: Fri Aug 17 23:37:31 2012 +0100 -Commit: Chris Wilson -CommitDate: Sat Aug 18 00:06:06 2012 +0100 - - xlib: Only use CopyArea if the ShmPixmap and destination are the same depth - - Signed-off-by: Chris Wilson - - src/cairo-xlib-render-compositor.c | 6 +++++- - 1 file changed, 5 insertions(+), 1 deletion(-) - -commit 94815189a42e52a82c602e8f23e69e1826f51ce7 -Author: Chris Wilson -AuthorDate: Fri Aug 17 22:17:41 2012 +0100 -Commit: Chris Wilson -CommitDate: Fri Aug 17 23:43:26 2012 +0100 - - xlib/shm: Clear the similar image surface - - The upper layers check that the surface returned to userspace is - cleared; make it so. - - Signed-off-by: Chris Wilson - - src/cairo-xlib-surface-shm.c | 10 +++++++++- - 1 file changed, 9 insertions(+), 1 deletion(-) - -commit c068691ff57c2f6cd750a54db17393c0e132cb00 -Author: Chris Wilson -AuthorDate: Fri Aug 17 21:33:54 2012 +0100 -Commit: Chris Wilson -CommitDate: Fri Aug 17 23:43:26 2012 +0100 - - xlib/shm: Use an impromptu upload ShmSegment - - Reduce the number of copies required for uploading large image data. - Ultimately we want the client to allocate the similar-image itself to - acheive zero copy, this is just an intermediate step for legacy clients. - - Signed-off-by: Chris Wilson - - src/cairo-xlib-private.h | 11 +++++-- - src/cairo-xlib-render-compositor.c | 65 ++++++++++++++++++++++++++++++++++++-- - src/cairo-xlib-surface-shm.c | 39 +++++++++++++++-------- - src/cairo-xlib-surface.c | 5 ++- - 4 files changed, 98 insertions(+), 22 deletions(-) - -commit bc38108947a684fb6e7af99a48ebc8f79d05856a -Author: Chris Wilson -AuthorDate: Fri Aug 17 20:57:04 2012 +0100 -Commit: Chris Wilson -CommitDate: Fri Aug 17 23:20:01 2012 +0100 - - xlib/shm: Limit use of the impromptu fallback pixmap for uploads - - We want to avoid unnecessary readback and so only want to use the - ShmPixmap when uploading the complete surface. - - Signed-off-by: Chris Wilson - - src/cairo-xlib-fallback-compositor.c | 14 +++++++++----- - src/cairo-xlib-private.h | 3 ++- - src/cairo-xlib-render-compositor.c | 28 +++++++++++++++++++++++++++- - src/cairo-xlib-surface-shm.c | 8 +++++++- - src/cairo-xlib-surface.c | 4 ++-- - 5 files changed, 47 insertions(+), 10 deletions(-) - -commit 4af7a1c8637f3008a2265e063ab990eec07e02dd -Author: Chris Wilson -AuthorDate: Fri Aug 17 23:17:43 2012 +0100 -Commit: Chris Wilson -CommitDate: Fri Aug 17 23:20:01 2012 +0100 - - xlib/shm: Propagate the last-request to the synchronous create - - If we optimise away the pending frees we must be careful to propagate - the implied sync. - - Signed-off-by: Chris Wilson - - src/cairo-xlib-surface-shm.c | 9 ++++++--- - 1 file changed, 6 insertions(+), 3 deletions(-) - -commit 1a87c526bfb7c35f5f207ca4aca7cf50a3b96765 -Author: Chris Wilson -AuthorDate: Fri Aug 17 17:52:37 2012 +0100 -Commit: Chris Wilson -CommitDate: Fri Aug 17 17:52:37 2012 +0100 - - xcb: Migrate to the common mempool implementation - - Having extracted the code for use by the SHM allocator for xlib, remove - the now redundant copy from xcb. - - Signed-off-by: Chris Wilson - - src/cairo-xcb-shm.c | 385 +++------------------------------------------------- - 1 file changed, 21 insertions(+), 364 deletions(-) - -commit e568e7c18b6aa631e4aedd44c44a14bbe6d72976 -Author: Chris Wilson -AuthorDate: Fri Aug 17 15:38:16 2012 +0100 -Commit: Chris Wilson -CommitDate: Fri Aug 17 15:38:16 2012 +0100 - - xlib/shm: Fix up the shrinking of the priority queue - - Signed-off-by: Chris Wilson - - src/cairo-xlib-surface-shm.c | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -commit 7266d59ebc26c5ae80c04f0270fb88f33217ebd9 -Author: Chris Wilson -AuthorDate: Fri Aug 17 15:31:07 2012 +0100 -Commit: Chris Wilson -CommitDate: Fri Aug 17 15:31:07 2012 +0100 - - configure: Restore previous pixman required version of 0.22.0 - - With optional compile time support for pixman glyphs, our hard pixman - requirement is then just 0.22.0 for the radial fixes (iirc). - - Signed-off-by: Chris Wilson - - configure.ac | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -commit f42c0dcf7b37c8daf80e8075aa5286d137062a88 -Author: Chris Wilson -AuthorDate: Tue Aug 14 21:50:37 2012 +0100 -Commit: Chris Wilson -CommitDate: Fri Aug 17 13:58:09 2012 +0100 - - tor22: Add a simple method to quickly compute coverage (with saturation) - - Signed-off-by: Chris Wilson - - src/cairo-tor22-scan-converter.c | 2 ++ - 1 file changed, 2 insertions(+) - -commit 0bfd2acd35547fc2bd0de99cc67d153f0170697d -Author: Chris Wilson -AuthorDate: Mon Aug 13 01:34:12 2012 +0100 -Commit: Chris Wilson -CommitDate: Fri Aug 17 13:58:09 2012 +0100 - - xlib: Implement SHM fallbacks and fast upload paths - - Signed-off-by: Chris Wilson - - configure.ac | 4 +- - src/Makefile.sources | 3 + - src/cairo-cogl-surface.c | 8 +- - src/cairo-damage.c | 1 - - src/cairo-directfb-surface.c | 6 +- - src/cairo-gl-surface.c | 9 +- - src/cairo-image-compositor.c | 26 +- - src/cairo-image-surface-inline.h | 2 +- - src/cairo-image-surface-private.h | 6 + - src/cairo-image-surface.c | 2 +- - src/cairo-mempool-private.h | 83 +++ - src/cairo-mempool.c | 359 ++++++++++ - src/cairo-quartz-image-surface.c | 6 +- - src/cairo-scaled-font.c | 2 +- - src/cairo-surface-backend-private.h | 3 +- - src/cairo-surface-inline.h | 4 +- - src/cairo-surface-observer.c | 6 +- - src/cairo-surface-private.h | 3 + - src/cairo-surface-snapshot.c | 5 +- - src/cairo-surface-subsurface.c | 6 +- - src/cairo-surface.c | 101 ++- - src/cairo-xcb-surface.c | 6 +- - src/cairo-xlib-display.c | 9 +- - src/cairo-xlib-fallback-compositor.c | 190 +++++- - src/cairo-xlib-private.h | 59 ++ - src/cairo-xlib-render-compositor.c | 155 ++++- - src/cairo-xlib-source.c | 231 ++++--- - src/cairo-xlib-surface-shm.c | 1119 +++++++++++++++++++++++++++++++ - src/cairo-xlib-surface.c | 286 ++++++-- - src/cairo-xlib-xcb-surface.c | 5 +- - src/cairoint.h | 2 +- - src/drm/cairo-drm-gallium-surface.c | 6 +- - src/drm/cairo-drm-i915-private.h | 2 +- - src/drm/cairo-drm-i915-surface.c | 8 +- - src/drm/cairo-drm-i965-shader.c | 4 +- - src/drm/cairo-drm-i965-surface.c | 5 +- - src/drm/cairo-drm-intel-private.h | 3 +- - src/drm/cairo-drm-intel-surface.c | 5 +- - src/drm/cairo-drm-radeon-surface.c | 6 +- - src/win32/cairo-win32-display-surface.c | 5 +- - src/win32/cairo-win32-gdi-compositor.c | 4 +- - 41 files changed, 2517 insertions(+), 238 deletions(-) - -commit 140fafed89508c4685f3a464c9dbe8df769f2411 -Author: Daniel Stone -AuthorDate: Thu Aug 16 18:23:41 2012 +0100 -Commit: Chris Wilson -CommitDate: Thu Aug 16 20:11:44 2012 +0100 - - Fix broken XRender ARGB32 formats - - 46d79228 did indeed silence the compilation warning, but did so by never - creating an ARGB32 format, as PictStandardARGB32 is defined to 0. Fix - this by using PictStandardNUM as our canary value instead. - - This fixes GEdit and Chromium for me, both of which were only rendering - backgrounds and text in their GTK+ sections. - - Signed-off-by: Daniel Stone - - src/cairo-xlib-display.c | 5 ++--- - 1 file changed, 2 insertions(+), 3 deletions(-) - -commit 95b7f4fe3a5deea6766538d843c75626e4bb68cf -Author: Chris Wilson -AuthorDate: Sun Aug 12 19:10:04 2012 +0100 -Commit: Chris Wilson -CommitDate: Sun Aug 12 19:10:04 2012 +0100 - - image: Temporarily resurrect the old non-pixman glyph compositor - - As the easiest approach to making another snapshot that only depends - upon a stable pixman, make the new dependency a compile time option. - - Signed-off-by: Chris Wilson - - configure.ac | 7 +- - src/cairo-image-compositor.c | 285 +++++++++++++++++++++++++++++++++++++++++++ - 2 files changed, 291 insertions(+), 1 deletion(-) - -commit 16426dab486767cb16dfaf5158c5d4b3317546b0 -Author: Chris Wilson -AuthorDate: Sun Aug 12 16:12:47 2012 +0100 -Commit: Chris Wilson -CommitDate: Sun Aug 12 16:12:47 2012 +0100 - - skia: Compile fix for changes to map-to-image - - Signed-off-by: Chris Wilson - - src/skia/cairo-skia-surface.cpp | 16 +++++----------- - 1 file changed, 5 insertions(+), 11 deletions(-) - -commit d647d4f7db1f9b65f5d7f64574b1989b830aaa7c -Author: Chris Wilson -AuthorDate: Sat Aug 11 19:28:21 2012 +0100 -Commit: Chris Wilson -CommitDate: Sat Aug 11 19:29:19 2012 +0100 - - damage: Update tail pointer after allocating new chunk - - Reported and based on a patch by fmot.fics - - Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=53384 - Signed-off-by: Chris Wilson - - src/cairo-damage.c | 3 ++- - 1 file changed, 2 insertions(+), 1 deletion(-) - -commit adfe9b7eb67f642cda93f80cf9c97f1eaded0317 -Author: Chris Wilson -AuthorDate: Sat Aug 11 17:55:49 2012 +0100 -Commit: Chris Wilson -CommitDate: Sat Aug 11 18:25:27 2012 +0100 - - gl: Fudge gradient color generation to handle multiple stops at 0 - - In order to generate the correct left-hand border color, we need to - fudge the offsets of the color stops if multiple stops are defined at 0. - The reason is that pixman will generate our color ramp by using the - right-most color stop for the pixel centre, but in order to provide the - sample colour outside of the gradient we need pixel 0 to be have the - left-most color. - - Reported by Henry Song. - - src/cairo-gl-gradient.c | 29 +++++++++++++++++++++++++++++ - 1 file changed, 29 insertions(+) - -commit b0336e9aadbbface0a059887ac62b1398bc81e7b -Author: Chris Wilson -AuthorDate: Sat Aug 11 18:23:51 2012 +0100 -Commit: Chris Wilson -CommitDate: Sat Aug 11 18:25:27 2012 +0100 - - gl: Use a wide texture ramp to emulate a linear step function - - If the gradient contains a step function, we need an infinitely sharp - texture to emulate the correct output. Failing that, lets just use as - large a texture as can be reasonably handled by the hardware - - src/cairo-gl-gradient.c | 7 ++++--- - 1 file changed, 4 insertions(+), 3 deletions(-) - -commit 46d79228df5c5fda114e68d3df02eaa33b5a41c9 -Author: Chris Wilson -AuthorDate: Sat Aug 11 17:48:17 2012 +0100 -Commit: Chris Wilson -CommitDate: Sat Aug 11 17:48:17 2012 +0100 - - xlib: Silence compiler warning - - cairo-xlib-display.c: In function '_cairo_xlib_display_get_xrender_format': - cairo-xlib-display.c:519:21: warning: 'pict_format' may be used - uninitialized in this function [-Wmaybe-uninitialized] - - Signed-off-by: Chris Wilson - - src/cairo-xlib-display.c | 9 +++++---- - 1 file changed, 5 insertions(+), 4 deletions(-) - -commit 40e6be327861397a821e92ab626269e31fd13979 -Author: Chris Wilson -AuthorDate: Sat Aug 11 17:43:46 2012 +0100 -Commit: Chris Wilson -CommitDate: Sat Aug 11 17:43:46 2012 +0100 - - gl: Remove unused variable - - cairo-gl-glyphs.c: In function '_cairo_gl_composite_glyphs_with_clip': - cairo-gl-glyphs.c:442:9: warning: unused variable 'i' [-Wunused-variable] - - Signed-off-by: Chris Wilson - - src/cairo-gl-glyphs.c | 1 - - 1 file changed, 1 deletion(-) - -commit f59b0914f4ddbff0d116c918343a6726d5f4317b -Author: Chris Wilson -AuthorDate: Sat Aug 11 17:38:36 2012 +0100 -Commit: Chris Wilson -CommitDate: Sat Aug 11 17:42:17 2012 +0100 - - egl: s/EGL_KHR_surfaceless_opengl/EGL_KHR_surfaceless_context/ - - Mesa changed the name of the extension it invented, so check for the - real name and the old name before falling back to pbuffers which are not - supported by most EGL implementations. - - References: https://bugs.freedesktop.org/show_bug.cgi?id=53361 - Signed-off-by: Chris Wilson - - src/cairo-egl-context.c | 5 +++-- - 1 file changed, 3 insertions(+), 2 deletions(-) - -commit b438e583089229d934df48e6fbf0edcd1b23dcd4 -Author: Chris Wilson -AuthorDate: Sat Aug 11 17:37:52 2012 +0100 -Commit: Chris Wilson -CommitDate: Sat Aug 11 17:42:17 2012 +0100 - - trace: Fix propagation of CAIRO_TRACE_OUTDIR to children - - Signed-off-by: Chris Wilson - - util/cairo-trace/trace.c | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -commit 65854a001529932c4f2c85a4ee32095443153319 -Author: Adrian Johnson -AuthorDate: Fri Aug 3 18:23:55 2012 +0930 -Commit: Adrian Johnson -CommitDate: Fri Aug 3 18:23:55 2012 +0930 - - type1 subset: ensure encoding includes all glyphs - - Bug 53040 - - src/cairo-type1-subset.c | 4 ++-- - 1 file changed, 2 insertions(+), 2 deletions(-) - -commit 5dd0f2eb951f8fb1d50802c99c660de1de486154 -Author: Adrian Johnson -AuthorDate: Tue Jul 31 22:52:09 2012 +0930 -Commit: Adrian Johnson -CommitDate: Tue Jul 31 22:52:09 2012 +0930 - - cff subsetting: widths can be floating point - - Bug 52972 - - src/cairo-cff-subset.c | 22 +++++++++++----------- - 1 file changed, 11 insertions(+), 11 deletions(-) - -commit 1e9abd6e4e5d857c5e7a117d4e960b222a5f5578 -Author: Henry Song -AuthorDate: Thu Jul 26 18:31:20 2012 +0100 -Commit: Chris Wilson -CommitDate: Thu Jul 26 18:32:00 2012 +0100 - - gl: use absolute value for color difference between gradient stops - - src/cairo-gl-gradient.c | 8 ++++---- - 1 file changed, 4 insertions(+), 4 deletions(-) - -commit 652c632fb211cede74cef3813c7d6e8099d02089 -Author: Chris Wilson -AuthorDate: Wed Jul 25 17:03:54 2012 +0100 -Commit: Chris Wilson -CommitDate: Wed Jul 25 17:08:30 2012 +0100 - - gl: Fallback for copy_boxes if src/dst do not belong to the same device - - If the source and destination are on difference devices (GL contexts) we - can not simply texture from one to the other, and must either import the - source into the destination context (which has not yet been done) or - fallback through an image copy. - - This patch is based on the work by Henry Song, but moving the check from - the common compositor layer down into the GL backend. This should have - the same effect... - - Fixes gl-surface-source - - Suggested-by: Henry Song - Signed-off-by: Chris Wilson - - src/cairo-gl-spans-compositor.c | 9 +++++++-- - 1 file changed, 7 insertions(+), 2 deletions(-) - -commit f3abb1079a9766646dd0eda2f8a1633f8efff516 -Author: Henry Song -AuthorDate: Wed Jul 25 16:12:22 2012 +0100 -Commit: Chris Wilson -CommitDate: Wed Jul 25 17:08:30 2012 +0100 - - gl: translate proper matrix depending up type of gl_operand - - Fixes radial-gradiant-mask-source. - - src/cairo-gl-operand.c | 22 ++++++++++++++++++++-- - 1 file changed, 20 insertions(+), 2 deletions(-) - -commit d00539ca13fbd36dea07b386211ad49ef744d5ee -Author: Andrea Canciani -AuthorDate: Tue Jul 24 10:21:08 2012 +0200 -Commit: Andrea Canciani -CommitDate: Tue Jul 24 11:06:30 2012 +0200 - - quartz: Use the correct transform when replaying recording surfaces - - Recording surfaces should be replayed with the transform matrix used - in the pattern, otherwise the image surface will be transformed, - introducing artifacts. - - Fixes record{1414x,2x}-paint-alpha-{,solid-clip,clip}, - record2x-{self-intersecting,text-transform} and record90-paint-alpha. - - src/cairo-quartz-surface.c | 16 ++++++++++------ - 1 file changed, 10 insertions(+), 6 deletions(-) - -commit 44a07a66135c4f534c909bd84f24cf7c0275a914 -Author: Henry (Yu) Song - SISA -AuthorDate: Mon Jul 23 16:28:28 2012 +0000 -Commit: Andrea Canciani -CommitDate: Tue Jul 24 11:06:30 2012 +0200 - - quartz: Never acquire recording surfaces - - We need to replay if the source/mask surface is a recording surface - otherwise, a crash happens if it is unbounded. - - Fixes crashes in recordxx-xxx tests - - src/cairo-quartz-surface.c | 86 ++++++++++++++++++++++++++++++++++++---------- - 1 file changed, 67 insertions(+), 19 deletions(-) - -commit 459c060b6fcc0a3b7e6f0e544fe83f954a5ca716 -Author: Henry (Yu) Song - SISA -AuthorDate: Tue Jul 24 02:05:15 2012 +0000 -Commit: Andrea Canciani -CommitDate: Tue Jul 24 11:06:29 2012 +0200 - - clip: Transform clip path in _cairo_clip_intersect_clip_path_transformed() - - _cairo_clip_intersect_clip_path_transformed() completely ignored the - transformation matrix instead of transforming all the clip paths with - it. - - This caused bugs when replaying recording surfaces. - - Fixes record{2x,1414x,90}-paint-alpha-clip-mask. - - src/cairo-clip.c | 2 ++ - 1 file changed, 2 insertions(+) - -commit 5f1dd8b3684db5aed42f355fa41310639e7d395d -Author: Andrea Canciani -AuthorDate: Tue Jul 24 09:56:52 2012 +0200 -Commit: Andrea Canciani -CommitDate: Tue Jul 24 10:45:52 2012 +0200 - - xcb: Fix make check - - The xcb private header uses the ASSERT_NOT_REACHED macro. - This macro is defined in cairoint.h, which needs to be included. - - Fixes: - - CHECK cairo-xcb-private.h - In file included from headers-standalone-tmp.c:1: - ./cairo-xcb-private.h: In function ‘_cairo_xcb_connection_shm_put_image’: - ./cairo-xcb-private.h:636: error: ‘ASSERT_NOT_REACHED’ undeclared (first use in this function) - ./cairo-xcb-private.h:636: error: (Each undeclared identifier is reported only once - ./cairo-xcb-private.h:636: error: for each function it appears in.) - - src/cairo-xcb-private.h | 2 ++ - 1 file changed, 2 insertions(+) - -commit 21e3f2e9034b64131075d82a4e34868dc72f2249 -Author: Chuanbo Weng -AuthorDate: Thu Jul 12 18:08:51 2012 +0100 -Commit: Chris Wilson -CommitDate: Thu Jul 12 18:15:00 2012 +0100 - - gl: copy_boxes() does not support copying from a non-texture source - - So check for the appropriate surface type at the start and return - UNSUPPORTED if we cannot handle it directly. We will then fallback to - pushing the image instead. - - Together with the previous patch, fixes 8 fails in cairo-test-suite. - - src/cairo-gl-spans-compositor.c | 3 +++ - 1 file changed, 3 insertions(+) - -commit 77f8bd3199b546b3ba039afc90337159636b63f6 -Author: Chuanbo Weng -AuthorDate: Thu Jul 12 18:07:42 2012 +0100 -Commit: Chris Wilson -CommitDate: Thu Jul 12 18:14:59 2012 +0100 - - gl: Create a new texture surface if the source surface type is gl-window - - When the source surface type is gl-window, we should return unsupported - and then create a new texture surface for it. Based on the code of - Henry's tree. - - src/cairo-gl-operand.c | 3 +++ - 1 file changed, 3 insertions(+) - -commit ac2668dd087ce32d86d3bd44f7886638e76b5b8a -Author: Dongyeon Kim -AuthorDate: Thu Jul 12 18:13:43 2012 +0100 -Commit: Chris Wilson -CommitDate: Thu Jul 12 18:14:59 2012 +0100 - - gl: Set is_clear flag to FALSE after map_to_image - - In _cairo_gl_surface_map_to_image(), the image surface data has been - filled by glReadPixels, so is_clear flag should be set to FALSE. - Otherwise mapped image surface does not get drawn as it is presumed - clear and so returns true from nothing_to_do(). - - src/cairo-gl-surface.c | 1 + - 1 file changed, 1 insertion(+) - -commit 70c2125e2c968358a8c7ddaa4e356e9b0de9c323 -Author: Chris Wilson -AuthorDate: Thu Jul 12 18:11:21 2012 +0100 -Commit: Chris Wilson -CommitDate: Thu Jul 12 18:14:59 2012 +0100 - - perf/chart: Render a solid bar if the column is too narrow for the gradient - - Signed-off-by: Chris Wilson - - perf/cairo-perf-chart.c | 53 +++++++++++++++++++++++++++++-------------------- - 1 file changed, 31 insertions(+), 22 deletions(-) - -commit 6aed048484801285ca7bd5afd825294f1ab7ce6d -Author: Chris Wilson -AuthorDate: Wed Jul 11 11:51:36 2012 +0100 -Commit: Chris Wilson -CommitDate: Wed Jul 11 11:51:36 2012 +0100 - - gl: Add the compile fix that I forgot to add to the previous commit - - src/cairo-gl-device.c | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -commit bdb9c2cb4389d7bcbd3602f8ce8fb457fb1003bd -Author: Henry Song -AuthorDate: Wed Jul 11 10:05:51 2012 +0100 -Commit: Chris Wilson -CommitDate: Wed Jul 11 10:05:51 2012 +0100 - - gl: Destroy glyph cache surface during finish - - We must destroy glyph cache surface in device_finish instead of in - device_destroy because in device_destroy device status is - DEVICE_FINISHED and the operation is invalid. - - src/cairo-gl-device.c | 6 +++--- - 1 file changed, 3 insertions(+), 3 deletions(-) - -commit 64a236246bf4276606ce69c79702f15373c5425d -Author: Henry Song -AuthorDate: Tue Jul 10 16:12:25 2012 +0100 -Commit: Chris Wilson -CommitDate: Tue Jul 10 16:14:54 2012 +0100 - - gl: generate correct gradient color texture - - Pixman generates gradient color at the center of pixel. We need to - adjust such accordingly in GL when generating gradient texture - - src/cairo-gl-gradient.c | 4 ++-- - 1 file changed, 2 insertions(+), 2 deletions(-) - -commit 6938592ec7e1a1b4cfccb11521ecdfdb8579f380 -Author: Chris Wilson -AuthorDate: Mon Jul 9 21:50:34 2012 +0100 -Commit: Chris Wilson -CommitDate: Mon Jul 9 21:57:03 2012 +0100 - - xlib: If a sample accesses outside of a repeating image, upload it all - - Fixes bug-51910 - - Reported-by: Albertas Vyšniauskas - Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=51910 - Signed-off-by: Chris Wilson - - src/cairo-xlib-source.c | 20 +++++++++++++------- - 1 file changed, 13 insertions(+), 7 deletions(-) - -commit ff22ab4c10e169e457887fae4fbd5394d45b939e -Author: Chris Wilson -AuthorDate: Mon Jul 9 16:13:49 2012 +0100 -Commit: Chris Wilson -CommitDate: Mon Jul 9 21:57:03 2012 +0100 - - test: Add example from bug-51910 - - The calculation of the required source extents blows up under xlib. - - Signed-off-by: Chris Wilson - - test/Makefile.sources | 1 + - test/bug-51910.c | 91 +++++++++++++++++++++++++++++++++++++++ - test/reference/bug-51910.ref.png | Bin 0 -> 1987 bytes - 3 files changed, 92 insertions(+) - -commit 7b6f9fd14091d23a69b06c422262d293268035d0 -Author: Chris Wilson -AuthorDate: Fri Jun 29 19:57:21 2012 +0100 -Commit: Chris Wilson -CommitDate: Mon Jul 9 21:57:03 2012 +0100 - - test: Add a simple exercise for raster sampling of subpixel geometry - - Test that the rasteriser doesn't incorrectly merge disjoint geometry at - the subpixel level. - - Signed-off-by: Chris Wilson - - test/Makefile.sources | 1 + - test/reference/sample-diagonal.ref.png | Bin 0 -> 272 bytes - test/reference/sample-horizontal.ref.png | Bin 0 -> 209 bytes - test/reference/sample-vertical.ref.png | Bin 0 -> 209 bytes - test/sample.c | 117 +++++++++++++++++++++++++++++++ - 5 files changed, 118 insertions(+) - -commit 1cac6e7fcc88b8545a9c56bf3265f37418957bb7 -Author: Adrian Johnson -AuthorDate: Thu Jul 5 22:41:28 2012 +0930 -Commit: Adrian Johnson -CommitDate: Thu Jul 5 22:41:28 2012 +0930 - - cff: initialise variable to prevent valgrind warning - - src/cairo-cff-subset.c | 1 + - 1 file changed, 1 insertion(+) - -commit 49c8e1b6744aa9cd296fff07d5be0ba7dcc69ff7 -Author: Adrian Johnson -AuthorDate: Thu Jul 5 21:59:33 2012 +0930 -Commit: Adrian Johnson -CommitDate: Thu Jul 5 21:59:33 2012 +0930 - - cff: use correct size for buffer - - Bug 51443 - - src/cairo-cff-subset.c | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -commit 77106a038bcd0dd503d383729f14134f76a664b2 -Author: Adrian Johnson -AuthorDate: Wed Jul 4 19:54:18 2012 +0930 -Commit: Adrian Johnson -CommitDate: Wed Jul 4 19:54:18 2012 +0930 - - cff: convert '.' to locale specific decimal point before using sscanf - - to fix bug when decoding cff real numbers. - - Bug 51443 - - src/cairo-cff-subset.c | 26 +++++++++++++++++++++++++- - 1 file changed, 25 insertions(+), 1 deletion(-) - -commit 64d65f72e5dbc1d9fa2cb4738d93eadc7fd5d7c0 -Author: Chris Wilson -AuthorDate: Fri Jun 29 10:25:13 2012 +0100 -Commit: Chris Wilson -CommitDate: Fri Jun 29 10:33:08 2012 +0100 - - boilerplate/gl: Round fractional window sizes up - - A few test cases purposely create fractional surface sizes which can not - be natively supported by the raster backends such as GL. For these - backends we need to consistent in creating a surface that is large - enough to contain the test, so we need to use ceil() rather than - implicit truncation to integers. - - A consequence of the misalignment between the Window size and the - surface size (where one was using ceil and the other not) is that the - first row of the cairo surface would not be visible on the output. - - Based on a patch by Chuanbo Wen to fix 5 test cases, such as - group-unaligned. - - Signed-off-by: Chris Wilson - - boilerplate/cairo-boilerplate-glx.c | 23 ++++++++++++++--------- - 1 file changed, 14 insertions(+), 9 deletions(-) - -commit cb85631c63539f259d6a3c1c04db904cbbf01d93 -Author: Chris Wilson -AuthorDate: Mon Jun 25 14:07:33 2012 +0100 -Commit: Chris Wilson -CommitDate: Fri Jun 29 10:33:08 2012 +0100 - - ft: Indentation fixup for _get_bitmap_surface() - - Signed-off-by: Chris Wilson - - src/cairo-ft-font.c | 14 +++++++------- - 1 file changed, 7 insertions(+), 7 deletions(-) - -commit 1bdee6b1ad00a2e5916bffea71719977f37f1982 -Author: Chuanbo Weng -AuthorDate: Tue Jun 26 08:02:35 2012 +0800 -Commit: Chris Wilson -CommitDate: Tue Jun 26 10:14:05 2012 +0100 - - gl: Set correct operation extents. - - The dst_x and dst_y should be considered when setting clip extents, - because they are not always be zero. (for example, in clip-operator.c) - - src/cairo-gl-glyphs.c | 7 ++++++- - 1 file changed, 6 insertions(+), 1 deletion(-) - -commit 9f52261dd7941ec7b338b050479da25c2571f9ac -Author: Uli Schlachter -AuthorDate: Sun Jun 3 19:35:37 2012 +0200 -Commit: Uli Schlachter -CommitDate: Mon Jun 25 21:18:18 2012 +0200 - - xcb: Correctly handle a recording surface's extents - - The size of the target area doesn't really have much to do with the size of the - recording surface that we are painting from. Thus, let's use the recording - surface's size instead. - - Since we apply the transformation before replaying the recording surface, we - need to transform the recording surface's size via the inverse of our pattern - matrix to get the size in the target surface. This makes this a little more - complex. - - Signed-off-by: Uli Schlachter - - src/cairo-xcb-surface-render.c | 48 ++++++++++++++++++++++++++++++++---------- - 1 file changed, 37 insertions(+), 11 deletions(-) - -commit e704f64d8fcceb220c8c99092c19c2cfd4bd9330 -Author: Uli Schlachter -AuthorDate: Sun Jun 3 16:53:49 2012 +0200 -Commit: Uli Schlachter -CommitDate: Mon Jun 25 21:18:18 2012 +0200 - - xcb: Handle recording surfaces differently - - Let's say we are painting recording surface 'source' to xcb surface 'target' by - replaying the source to a temporary surface 'tmp'. - - Previously, the xcb backend replayed the recording surface to tmp with just a - translation and then used that as its source surface with the pattern's - transformation. That means 'tmp' used the same coordinate system as 'source'. - - This patch changes this so that the transformation is applied during the replay - and painting from 'tmp' to 'target' is just a simple translation, so 'tmp' now - uses the same coordinate system as 'target'. - - This should produce way less better results, because transforming a recording - surface should have less artifacts than transforming a raster surface. - - Fixes: record1414x-* record2x-* record90-* ps-surface-source - - Breaks (or rather, "exposes unrelated bug that I have not yet figured out in"): - record-extend-*-similar - - Signed-off-by: Uli Schlachter - - src/cairo-xcb-surface-render.c | 10 +++------- - 1 file changed, 3 insertions(+), 7 deletions(-) - -commit 13d61d7bdb7ec37ebb7324187aca1b9b9b1600cf -Author: Chuanbo Weng -AuthorDate: Sun Jun 24 12:13:02 2012 +0100 -Commit: Chris Wilson -CommitDate: Sun Jun 24 12:13:02 2012 +0100 - - gl: Set correct clip rectangle for non-texture destination surfaces - - When the desintation surface is not a texture, it is flipped in the Y - axis. So we need to correct the Y coordinates when using glScissor to - the set the clip region. - - Fixes 14 cases in cairo-test-suite, for example partial-clip-text-top - - src/cairo-gl-composite.c | 27 ++++++++++++++++++++++----- - 1 file changed, 22 insertions(+), 5 deletions(-) - -commit 166e6f199e909d8aea13cdd4c858d48faad26247 -Author: Chris Wilson -AuthorDate: Sun Jun 24 11:33:47 2012 +0100 -Commit: Chris Wilson -CommitDate: Sun Jun 24 11:53:25 2012 +0100 - - stroke: Skip inserting a round-join if within tolerance - - If the angle between two segments is small we can simply replace the - round-join with a bevel-join. This is done automatically by the - insertion of the triangle fan as it will not be able to find a point - around the pen between the two vectors. However, we can make that search - cheaper by inspecting whether the bisection angle is small enough that - the bevel-join will be within geometric tolerance of the round-join. - - Signed-off-by: Chris Wilson - - src/cairo-path-stroke-polygon.c | 14 +++++++++----- - 1 file changed, 9 insertions(+), 5 deletions(-) - -commit b7bd5ae4f3da44131261711bb236cd7aa24a3ae3 -Author: Chris Wilson -AuthorDate: Sun Jun 24 11:27:16 2012 +0100 -Commit: Chris Wilson -CommitDate: Sun Jun 24 11:53:18 2012 +0100 - - stroke: Use round-joins near inflection points of splines - - Near an inflection, the angle between two segments of a spline increases - rapidly (as the radius of curvature decreases for the cusp). The angle - may increase so much that a simple line connecting the two outside - points of the spline is not within the user specified geometric - tolerance (with the result that you can generate severe ugliness around - a cusp). Extend the current detection of the exact inflection to cover - the sharp joins near the cusp by inspecting whether the bisection angle - is larger than acceptable. - - Fixes bug-spline. - - Signed-off-by: Chris Wilson - - src/cairo-path-stroke-polygon.c | 17 ++++++++++++++--- - 1 file changed, 14 insertions(+), 3 deletions(-) - -commit 3d482e266febcf7da75f5662e518380460068ce1 -Author: Chris Wilson -AuthorDate: Sun Jun 24 11:50:26 2012 +0100 -Commit: Chris Wilson -CommitDate: Sun Jun 24 11:53:09 2012 +0100 - - test: Exercise bug in joining together spline segments around cusps - - Carl Worth demonstrated a glaring bug in the new stroking code, - introduced in commit 545f30856aac98199 (stroke: Convert the outlines - into contour and then into a polygon), whereby only a bevel join was - being used to connect segments around a sharp inflection point. - - This adds the two examples he reported to the test suite. - - test/Makefile.sources | 1 + - test/bug-spline.c | 96 ++++++++++++++++++++++++++++++++++++++ - test/reference/bug-spline.ref.png | Bin 0 -> 5476 bytes - 3 files changed, 97 insertions(+) - -commit 185a3518968d5ca0babb798fe10f247171a1e001 -Author: Chris Wilson -AuthorDate: Wed Jun 20 09:15:29 2012 +0100 -Commit: Chris Wilson -CommitDate: Wed Jun 20 09:20:06 2012 +0100 - - gl: Trim the glyph mask to the operation extents - - In the case we try to use an unbounded operation, passing a NULL clip - causes that operation to clear the rest of the surface. Instead we need - to trim the _cairo_surface_mask() to the operation extents. - - Fixes overlapping-glyphs. - - Suggested-by: Chuanbo Weng - Signed-off-by: Chris Wilson - - src/cairo-gl-glyphs.c | 5 +++++ - 1 file changed, 5 insertions(+) - -commit 35e4ffd91cc73fb17c47a12010f515941d6f4d3d -Author: Chris Wilson -AuthorDate: Fri Jun 15 10:52:25 2012 +0100 -Commit: Chris Wilson -CommitDate: Fri Jun 15 10:52:25 2012 +0100 - - image: Fix up glyphs compositing - - Jose Dapena Paz reported an assertion following the uninitialised status - value being returned. Also the function failed to free its allocations. - - Based on a patch by Jose Dapena Paz . - Reported-by: Jose Dapena Paz - Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=51104 - Signed-off-by: Chris Wilson - - src/cairo-image-compositor.c | 60 ++++++++++++++++++-------------------------- - 1 file changed, 24 insertions(+), 36 deletions(-) - -commit 9bc1ea44316d448110c1d128a9f74147f775943d -Author: Henry Song -AuthorDate: Thu Jun 14 23:07:34 2012 +0100 -Commit: Chris Wilson -CommitDate: Thu Jun 14 23:07:34 2012 +0100 - - subsurface: Disable subsurface-set-snapshot as it creates a ref cycle - - _cairo_surface_subsurface_set_snapshot () sets the subsurface as the - snapshot of its target. This creates a reference cycle (as the target - is already referenced by the surface) and thus a memory leak (assuming - the likely case that user doesn't call finish). - - Test case: subsurface-similar-repeat. - - So make this call as a no-op for the time being until the bug is fixed. - - src/cairo-surface-subsurface.c | 6 ++++++ - 1 file changed, 6 insertions(+) - -commit 13ba74a00d34b232f76ecb9efc96eea1227ce649 -Author: Andrea Canciani -AuthorDate: Thu Jun 14 08:12:41 2012 +0200 -Commit: Andrea Canciani -CommitDate: Thu Jun 14 08:12:41 2012 +0200 - - quart-image: Fix compilation - - quartz-image uses _cairo_surface_is_image(), which is now declared in - cairo-image-surface-inline.h. - - Fixes: - cairo-quartz-image-surface.c: In function 'cairo_quartz_image_surface_create': - cairo-quartz-image-surface.c:312: error: implicit declaration of function '_cairo_surface_is_image' - cairo-quartz-image-surface.c:312: warning: nested extern declaration of '_cairo_surface_is_image' - - src/cairo-quartz-image-surface.c | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -commit 615205cf072935401dac46813b597e70bc8f0a8c -Author: Søren Sandmann Pedersen -AuthorDate: Mon Apr 30 09:41:44 2012 -0400 -Commit: Søren Sandmann Pedersen -CommitDate: Sat Jun 9 15:52:59 2012 -0400 - - Use the new pixman_glyph_cache_t API that will be in pixman 0.28.0 - - This new pixman API allows glyphs to be cached and composited in one - go, which reduces overhead compared to individual calls to - pixman_image_composite_region32(). - - Notes: - - - There is an explicit call to _cairo_image_scaled_glyph_fini(). This - could instead be done with a private, but I chose not to do that - since we don't need to store any actual data; we only need - notification when the glyph dies. - - - The slowdown in poppler-reseau is real and stable across runs. I'm - not too concerned about it because this benchmark is only one run - and so it is dominated by glyph cache setup costs and FreeType - rasterizing. - - Performance results, image backend: - - Speedups - firefox-talos-gfx 5571.55 -> 4265.57: 1.31x speedup - gnome-terminal-vim 1875.82 -> 1715.14: 1.09x speedup - evolution 1128.24 -> 1047.68: 1.08x speedup - xfce4-terminal-a1 1364.38 -> 1277.48: 1.07x speedup - - Slowdowns - poppler-reseau 374.42 -> 394.29: 1.05x slowdown - - Performance results, image16 backend: - - Speedups - firefox-talos-gfx 5387.25 -> 4065.39: 1.33x speedup - gnome-terminal-vim 2116.66 -> 1962.79: 1.08x speedup - evolution 987.50 -> 924.27: 1.07x speedup - xfce4-terminal-a1 1856.85 -> 1748.25: 1.06x speedup - gvim 1484.07 -> 1398.75: 1.06x speedup - - Slowdowns - poppler-reseau 371.37 -> 393.99: 1.06x slowdown - - Also bump pixman requirement to 0.27.1. - - configure.ac | 2 +- - src/cairo-image-compositor.c | 361 +++++++++++++---------------------------- - src/cairo-mutex-list-private.h | 1 + - src/cairo-scaled-font.c | 2 + - src/cairoint.h | 4 + - 5 files changed, 121 insertions(+), 249 deletions(-) - -commit f228769dfe5a8b5d73c49a41e95e31ed73a77fb3 -Author: Chris Wilson -AuthorDate: Fri Jun 8 17:22:41 2012 +0100 -Commit: Chris Wilson -CommitDate: Fri Jun 8 17:26:11 2012 +0100 - - polygon-reduce: Reduce broken stopped-edge continuation - - This is hopefully a lesser used path and the attempted optimisation to - continue a stopped edge with a colinear stopped edge highly unlikely and - lost in the noise of the general inefficiency of the routine. As it was - broken, rather than attempt to rectify the "optimisation" remove it. - - Reported-by: Evangelos Foutras - Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=50852 - Signed-off-by: Chris Wilson - - src/cairo-polygon-reduce.c | 157 +++++++++++++++------------------------------ - 1 file changed, 52 insertions(+), 105 deletions(-) - -commit fc501fd6b5c378006cd8970c1dd30ee753817b6d -Author: Chris Wilson -AuthorDate: Fri Jun 8 17:22:17 2012 +0100 -Commit: Chris Wilson -CommitDate: Fri Jun 8 17:26:11 2012 +0100 - - tor-scan-converter: Always recompute min-height following edge removal - - Signed-off-by: Chris Wilson - - src/cairo-tor-scan-converter.c | 9 ++++++--- - 1 file changed, 6 insertions(+), 3 deletions(-) - -commit 1bc696a8fda55ee75139f7d0123d348bbd96d2af -Author: Chris Wilson -AuthorDate: Fri Jun 8 17:20:32 2012 +0100 -Commit: Chris Wilson -CommitDate: Fri Jun 8 17:26:11 2012 +0100 - - spans-compositor: After polygon intersection the fill rule is always non-zero - - As it turns out due to the rules of polygon intersection, there is never - any overlapping spans so the choice is arbitrary. However, lets be - consistent with the rest of the code. - - Signed-off-by: Chris Wilson - - src/cairo-spans-compositor.c | 2 ++ - 1 file changed, 2 insertions(+) - -commit 37532b47c0ef6528fb6696fe97be337d9ad0a900 -Author: Chris Wilson -AuthorDate: Thu Jun 7 15:14:31 2012 +0100 -Commit: Chris Wilson -CommitDate: Thu Jun 7 15:15:55 2012 +0100 - - scaled-font: Take lock around disposing of an empty page upon alloc failure - - Spotted by code inspection whilst looking at #50705 - - References: https://bugs.freedesktop.org/show_bug.cgi?id=50705 - Signed-off-by: Chris Wilson - - src/cairo-scaled-font.c | 2 ++ - 1 file changed, 2 insertions(+) - -commit 2f1d6b27e8b78c77346a5b603114b54400e57d83 -Author: Adrian Johnson -AuthorDate: Thu Jun 7 19:18:52 2012 +0930 -Commit: Adrian Johnson -CommitDate: Thu Jun 7 19:18:52 2012 +0930 - - cff-subsetting: Ignore charset for non cid fonts - - Fixes crash in https://bugzilla.gnome.org/show_bug.cgi?id=677422 - - src/cairo-cff-subset.c | 16 +++++++++------- - 1 file changed, 9 insertions(+), 7 deletions(-) - -commit 9fa047c0ea49d94f9f27947931fe21b70f6463d5 -Author: Chris Wilson -AuthorDate: Mon Jun 4 20:16:12 2012 +0100 -Commit: Chris Wilson -CommitDate: Mon Jun 4 20:18:03 2012 +0100 - - composite-rectangles,scaled-font: Use accurate extents if the font is broken - - If the font metrics appear broken, i.e. key values are being reported as - zero, skip approximating the bbox of the glyph string. - - References: https://bugs.freedesktop.org/show_bug.cgi?id=50688 - Signed-off-by: Chris Wilson - - src/cairo-composite-rectangles.c | 5 +++-- - src/cairo-scaled-font.c | 11 ++++++++++- - src/cairoint.h | 2 +- - 3 files changed, 14 insertions(+), 4 deletions(-) - -commit 0210499578898ba5bab8dbd323455c6735419a5a -Author: Adrian Johnson -AuthorDate: Sat Jun 2 10:48:34 2012 +0930 -Commit: Adrian Johnson -CommitDate: Sat Jun 2 19:01:18 2012 +0930 - - pdf: fix the offset of padded images - - Bug 50598 - - src/cairo-pdf-surface-private.h | 2 -- - src/cairo-pdf-surface.c | 16 ++++++++++++---- - 2 files changed, 12 insertions(+), 6 deletions(-) - -commit f1b546b1a2b3c4a87ca00ce0d6fa6ce88c84d20c -Author: Chris Wilson -AuthorDate: Fri Jun 1 17:46:25 2012 +0100 -Commit: Chris Wilson -CommitDate: Fri Jun 1 18:17:33 2012 +0100 - - Erradicate internal use of cairo_surface_get_type() - - Signed-off-by: Chris Wilson - - src/cairo-pdf-surface.c | 4 ++-- - src/cairo-ps-surface.c | 4 ++-- - src/cairo-quartz-image-surface.c | 4 ++-- - src/cairo-surface.c | 1 - - src/cairoint.h | 1 - - 5 files changed, 6 insertions(+), 8 deletions(-) - -commit e23d179e08367dc03c5c8f242bbc3af0749d4920 -Author: Chris Wilson -AuthorDate: Fri Jun 1 17:46:25 2012 +0100 -Commit: Chris Wilson -CommitDate: Fri Jun 1 17:46:25 2012 +0100 - - Erradicate internal use of cairo_surface_get_content() - - Signed-off-by: Chris Wilson - - src/cairo-pdf-surface.c | 9 ++++----- - src/cairo-ps-surface.c | 2 +- - src/cairo-surface.c | 1 - - src/cairo-svg-surface.c | 2 +- - src/cairoint.h | 1 - - 5 files changed, 6 insertions(+), 9 deletions(-) - -commit 4b5d3436a36e7a2fe29131dff58b50999cd972bb -Author: Søren Sandmann Pedersen -AuthorDate: Fri Jun 1 08:13:17 2012 +0100 -Commit: Chris Wilson -CommitDate: Fri Jun 1 08:13:17 2012 +0100 - - image: Fix bugs related to glyph mask creation - - In addition to fixing a bug 7d8d98b91ccf7165be853c36e6d5ef releated to - expanding a8 glyphs into a8r8g8b8, this commit also added an - optimization where if the first glyph had format a8r8g8b8, the mask - was created in this format from the beginning instead of later - converting from a8 to a8r8g8b8. - - However, the optimization had two bugs in it: - - (1) The computed stride was 3 * width, not 4 * times width, and - (2) In the case where the mask was allocated on the stack, it was - allocated as PIXMAN_a8 and not a8r8g8b8. - - The commit fixes both bugs. - - src/cairo-image-compositor.c | 4 ++-- - 1 file changed, 2 insertions(+), 2 deletions(-) - -commit c0a92bf8329c5a8aee76ac96034435d4fce043dc -Author: Chris Wilson -AuthorDate: Thu May 31 18:30:58 2012 +0100 -Commit: Chris Wilson -CommitDate: Thu May 31 18:30:58 2012 +0100 - - surface: replace map-to-image clone's use of user_data with parent pointer - - Removes an another undeclared PLT entry and prevents mixing of user_data - with internal state. - - Signed-off-by: Chris Wilson - - src/cairo-image-surface-inline.h | 6 ++++++ - src/cairo-image-surface-private.h | 3 --- - src/cairo-image-surface.c | 12 +----------- - 3 files changed, 7 insertions(+), 14 deletions(-) - -commit 9e933d4b8790f0f8309bdd980f4558d51ccec168 -Author: Chris Wilson -AuthorDate: Thu May 31 18:25:09 2012 +0100 -Commit: Chris Wilson -CommitDate: Thu May 31 18:25:09 2012 +0100 - - gl: Add missing cairo-private to _cairo_gl_composite_with_clip - - Signed-off-by: Chris Wilson - - src/cairo-gl-private.h | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -commit 9275b4d5aa45320bc3804980337c7aff6c34c029 -Author: Chris Wilson -AuthorDate: Thu May 31 18:22:11 2012 +0100 -Commit: Chris Wilson -CommitDate: Thu May 31 18:22:11 2012 +0100 - - surface: Eliminate PLT entries for map-to-image - - Use the internal symbols internally. - - Signed-off-by: Chris Wilson - - src/cairo-surface.c | 16 ++++++++++++---- - 1 file changed, 12 insertions(+), 4 deletions(-) - -commit 2c6ba9a8733044ad8685e6e8312e945a7a49ce3a -Author: Chris Wilson -AuthorDate: Thu May 31 18:08:05 2012 +0100 -Commit: Chris Wilson -CommitDate: Thu May 31 18:10:36 2012 +0100 - - image: silence make check - - The check for standalone headers requires that the - cairo-image-surface-inline.h include the cairo-surface-private.h - - Signed-off-by: Chris Wilson - - src/cairo-image-surface-inline.h | 1 + - src/cairo-surface-private.h | 3 +++ - src/cairoint.h | 3 --- - 3 files changed, 4 insertions(+), 3 deletions(-) - -commit 98c3ed1dbd9036cb8d6f64d170d213a865e2094a -Author: Chuanbo Weng -AuthorDate: Wed May 30 22:51:03 2012 +0800 -Commit: Chris Wilson -CommitDate: Thu May 31 11:38:19 2012 +0100 - - gl: Do correct translation and lerp in gl-traps-compositor. - - Coordinate translation is necessary in composite_boxes(), composite() - and composite_traps(). The translation value should set to correct - value in traps_to_operand(). Also fix the bug in lerp(). - - src/cairo-gl-traps-compositor.c | 22 ++++++++++++++-------- - 1 file changed, 14 insertions(+), 8 deletions(-) - -commit 7d8d98b91ccf7165be853c36e6d5ef0714f4a986 -Author: Chris Wilson -AuthorDate: Thu May 31 11:19:23 2012 +0100 -Commit: Chris Wilson -CommitDate: Thu May 31 11:25:11 2012 +0100 - - image: Upconvert glyphs through a WHITE source when adding to the glyph mask - - We need to scale the channels of the glyph into the destination (and - indeed expand a8 into a8r8g8b8) when adding into the mask. Normally we - have matching formats for the glyph surfaces and the temporary mask, - for which we can continue to take the faster path. - - Reported-by: Søren Sandmann - Signed-off-by: Chris Wilson - - src/cairo-image-compositor.c | 74 ++++++++++++++++++++++++++++++++------------ - 1 file changed, 55 insertions(+), 19 deletions(-) - -commit 3f325764e547713bb25aef56d8ffa624bfae75d1 -Author: Adrian Johnson -AuthorDate: Thu May 31 17:46:31 2012 +0930 -Commit: Adrian Johnson -CommitDate: Thu May 31 17:46:31 2012 +0930 - - pdf: Don't use extents when acquiring a RASTER_SOURCE pattern - - because the pdf surface reuses the image each time the pattern is used. - - src/cairo-pdf-surface.c | 17 ++++------------- - 1 file changed, 4 insertions(+), 13 deletions(-) - -commit 43105a89d881a9f86f887c91c022ffc9477c6678 -Author: Chris Wilson -AuthorDate: Thu May 31 08:49:39 2012 +0100 -Commit: Chris Wilson -CommitDate: Thu May 31 08:49:39 2012 +0100 - - test: Restore bug-seams reference - - An overzealous update after converting antialiasing missed the object of - this test was exactly to point out an error due to the antialiasing. So - restore it back to the prestine reference and mark the image backend as - failing. - - Signed-off-by: Chris Wilson - - test/reference/bug-seams.argb32.ref.png | Bin 1647 -> 0 bytes - test/reference/bug-seams.rgb24.ref.png | Bin 1647 -> 0 bytes - 2 files changed, 0 insertions(+), 0 deletions(-) - -commit 25317dbd88e96bb49fa760b50fe705a6a79ee2ec -Author: Yuanhan Liu -AuthorDate: Wed May 30 20:55:22 2012 +0800 -Commit: Chris Wilson -CommitDate: Wed May 30 14:02:21 2012 +0100 - - configure.ac: remove annoying change of INSTALL file - - Every time we run ./autogen.sh, the INSTALL file would be replace by - /usr/share/automake-1.11/INSTALL, which changes the file. This is very - annoying since it messes up the result of 'git diff' and git always - wants to commit it. - - Declare it as foreign would fix this annoying issue. Since it's not a - GNU project, it makes sense to do so. - - Signed-off-by: Yuanhan Liu - - configure.ac | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -commit f3a1ee5edd1a46e3c316d8555262bce556bc1480 -Author: Chris Wilson -AuthorDate: Wed May 30 11:10:34 2012 +0100 -Commit: Chris Wilson -CommitDate: Wed May 30 11:10:34 2012 +0100 - - gl: Do no access ctx after release during map-to-image - - Based on a patch by Yuanhan Liu. - - Signed-off-by: Chris Wilson - - src/cairo-gl-surface.c | 16 ++++++++-------- - 1 file changed, 8 insertions(+), 8 deletions(-) - -commit 9340fcd965dedf714f658c6ad441787d75c05e59 -Author: Yuanhan Liu -AuthorDate: Wed May 30 15:13:46 2012 +0800 -Commit: Chris Wilson -CommitDate: Wed May 30 10:43:09 2012 +0100 - - gl: use _cairo_gl_operand_copy to fix unblanced reference count - - Use _cairo_gl_operand_copy to do the operand copy instead of by - something like *operand = surface->operand. - - This would fix a crash introduced by operator-source test case, which - forgot to do reference while copying operand but did dereference while - destroying surface at combine_clip_as_traps(). - - Signed-off-by: Yuanhan Liu - [ickle: drop the extra reference for the owned surface] - Signed-off-by: Chris Wilson - - src/cairo-gl-operand.c | 4 ++-- - 1 file changed, 2 insertions(+), 2 deletions(-) - -commit f3ae8302072dbcee38be4e0a9397e5aaa4084ecf -Author: Adrian Johnson -AuthorDate: Sun May 27 22:59:13 2012 +0930 -Commit: Adrian Johnson -CommitDate: Sun May 27 22:59:13 2012 +0930 - - pdf: merge _emit_recording_surface and _emit_recording_subsurface into the one function - - src/cairo-pdf-surface.c | 112 +++++++++++------------------------------------- - 1 file changed, 26 insertions(+), 86 deletions(-) - -commit 5dd119c1fef0c30bc71311ca9ccacf1f6e8017cf -Author: Adrian Johnson -AuthorDate: Sun May 27 22:32:41 2012 +0930 -Commit: Adrian Johnson -CommitDate: Sun May 27 22:32:41 2012 +0930 - - ps: check if EXTEND_PAD group can be painted with EXTEND_NONE - - src/cairo-ps-surface.c | 31 +++++++++++++++++++++++++------ - 1 file changed, 25 insertions(+), 6 deletions(-) - -commit fcfa45c9f79ccd855d0a16ee1b0f0fa3b4da7809 -Author: Adrian Johnson -AuthorDate: Sun May 27 11:53:43 2012 +0930 -Commit: Adrian Johnson -CommitDate: Sun May 27 11:55:09 2012 +0930 - - pdf: fix smask gradient bbox - - src/cairo-pdf-surface.c | 29 ++++++++++++++++++++++++++--- - 1 file changed, 26 insertions(+), 3 deletions(-) - -commit 29a42ae6827dd17d002304aba552ffb83d3f8a2f -Author: Chris Wilson -AuthorDate: Sat May 26 15:16:13 2012 +0100 -Commit: Chris Wilson -CommitDate: Sat May 26 15:21:23 2012 +0100 - - surface: Kill imagesurf temporary variable - - The local alias to &image->base is more confusing that the code it - replaces. - - Signed-off-by: Chris Wilson - - src/cairo-surface.c | 19 +++++-------------- - 1 file changed, 5 insertions(+), 14 deletions(-) - -commit 11e276753f0d335027a7727bf17006d612b4e4c2 -Author: Chris Wilson -AuthorDate: Sat May 26 15:20:56 2012 +0100 -Commit: Chris Wilson -CommitDate: Sat May 26 15:21:23 2012 +0100 - - image: Propagate errors from clone_subimage - - Signed-off-by: Chris Wilson - - src/cairo-image-surface.c | 26 +++++++++++++++++++------- - 1 file changed, 19 insertions(+), 7 deletions(-) - -commit fc33cc3c3af1fc616ae445a15d2b146a29090b0f -Author: Andrea Canciani -AuthorDate: Fri Jan 6 19:47:08 2012 +0100 -Commit: Andrea Canciani -CommitDate: Sat May 26 16:07:47 2012 +0200 - - quartz: Provide a valid implementation of map_to_image - - and reuse it to implement acquire_source. - - Fixes - - cairo-quartz-surface.c: In function '_cairo_quartz_surface_map_to_image': - cairo-quartz-surface.c:1568: warning: return from incompatible pointer type - cairo-quartz-surface.c:1576: warning: return from incompatible pointer type - - src/cairo-quartz-surface.c | 203 ++++++++++++++++----------------------------- - 1 file changed, 71 insertions(+), 132 deletions(-) - -commit a8a4a8dfd450a8ce97998b5e5e09971d07a957f4 -Author: Andrea Canciani -AuthorDate: Fri Jan 6 20:13:39 2012 +0100 -Commit: Andrea Canciani -CommitDate: Sat May 26 16:07:33 2012 +0200 - - quartz: Mark surfaces created clear as is_clear - - This might provide a speedup when clearing an already clear surface - and is required by cairo_surface_create_similar(). - - Fixes zero-mask. - - src/cairo-quartz-surface.c | 3 +++ - 1 file changed, 3 insertions(+) - -commit 3735881e38d2bee941128725b8cdde6779d60a30 -Author: Andrea Canciani -AuthorDate: Tue Apr 10 22:58:18 2012 +0200 -Commit: Andrea Canciani -CommitDate: Sat May 26 16:07:26 2012 +0200 - - quartz: Silence warning - - cairo-quartz-surface.c:177: warning: enumeration value - 'CAIRO_FORMAT_RGB30' not handled in switch - - src/cairo-quartz-surface.c | 5 +++-- - 1 file changed, 3 insertions(+), 2 deletions(-) - -commit 13b7364836e14b811bbeb3ba0849e6d6c0fb1dd3 -Author: Andrea Canciani -AuthorDate: Wed Jan 11 17:17:29 2012 +0100 -Commit: Andrea Canciani -CommitDate: Sat May 26 16:07:00 2012 +0200 - - surface: Use the internal map/unmap - - In many places Cairo maps/unmaps surfaces to perform operations on the - raw image, but it doesn't care about the format being invalid. All of - these are appropriate users of _cairo_surface_map_to_image(). - - src/cairo-fallback-compositor.c | 56 +++++++++++++++++++++++------------------ - src/cairo-gl-operand.c | 8 +++--- - src/cairo-surface-observer.c | 6 ++--- - src/cairo-surface.c | 2 -- - src/cairo-xlib-source.c | 16 ++++++------ - src/cairoint.h | 2 -- - 6 files changed, 46 insertions(+), 44 deletions(-) - -commit 37c5c2dbe55f64ee84ab248eb0072d5d7c5145cc -Author: Andrea Canciani -AuthorDate: Wed Jan 11 20:51:29 2012 +0100 -Commit: Andrea Canciani -CommitDate: Sat May 26 16:06:39 2012 +0200 - - surface: Only use non-NULL extents for internal mapping - - _cairo_surface_map_to_image() requires the input extents to be - non-NULL. - - src/cairo-gl-operand.c | 5 ++++- - src/cairo-xlib-source.c | 13 ++++++++++--- - 2 files changed, 14 insertions(+), 4 deletions(-) - -commit d6fb8d2134c989d2ad455ec37ce4f623d4769c46 -Author: Andrea Canciani -AuthorDate: Wed Jan 11 17:17:15 2012 +0100 -Commit: Andrea Canciani -CommitDate: Sat May 26 16:06:31 2012 +0200 - - surface: Make backend-specific map/unmap functions symmetric - - Map allocates a surface. Symmetrically, unmap should destroy it. - - src/cairo-gl-surface.c | 17 ++++++++++++----- - src/cairo-image-surface.c | 3 +++ - src/cairo-os2-surface.c | 1 + - src/cairo-quartz-image-surface.c | 7 ++----- - src/cairo-quartz-surface.c | 1 + - src/cairo-surface-observer.c | 12 ++---------- - src/cairo-surface-subsurface.c | 12 ++---------- - src/cairo-surface.c | 2 +- - src/cairo-xcb-surface.c | 13 ++++++++++--- - src/cairo-xlib-surface.c | 17 ++++++++++++----- - src/cairo-xlib-xcb-surface.c | 10 ++-------- - 11 files changed, 48 insertions(+), 47 deletions(-) - -commit df7829e2cca07c3bfcddda1c66ca56280edceaf4 -Author: Andrea Canciani -AuthorDate: Tue Apr 10 20:15:04 2012 +0200 -Commit: Andrea Canciani -CommitDate: Sat May 26 16:06:26 2012 +0200 - - surface: Make map_to_image return cairo_image_surface_t* - - This makes it easier to check that the funciton is returning the - correct type of surfaces. - - src/cairo-directfb-surface.c | 13 +++++++------ - src/cairo-gl-surface.c | 16 ++++++++-------- - src/cairo-image-surface-inline.h | 6 ++++++ - src/cairo-image-surface-private.h | 2 +- - src/cairo-image-surface.c | 4 ++-- - src/cairo-os2-surface.c | 2 +- - src/cairo-quartz-image-surface.c | 2 +- - src/cairo-quartz-surface.c | 2 +- - src/cairo-surface-backend-private.h | 2 +- - src/cairo-surface-observer.c | 2 +- - src/cairo-surface-subsurface.c | 2 +- - src/cairo-surface.c | 2 +- - src/cairo-xcb-surface.c | 18 +++++++++++------- - src/cairo-xlib-surface.c | 4 ++-- - src/cairo-xlib-xcb-surface.c | 2 +- - src/skia/cairo-skia-surface.cpp | 3 ++- - src/win32/cairo-win32-display-surface.c | 8 ++++---- - 17 files changed, 51 insertions(+), 39 deletions(-) - -commit 10c0a1c68c34677273d2f48c5d5a6c1c15a320c0 -Author: Andrea Canciani -AuthorDate: Sun Jan 8 15:30:03 2012 +0100 -Commit: Andrea Canciani -CommitDate: Sat May 26 16:06:21 2012 +0200 - - surface: Define private map/unmap functions - - Cairo backends often need to map/unmap to a raster surface but they - don't care about the pixel format, as Pixman will be doing the format - handling. - - Cairo users cannot know how to access the raw data if the format is - invalid. - - The two different scenarios call for different guarantees on the - returned surface. - - The private map/unmap functions also makes it possible to simply - return the status upon unmapping. - - src/cairo-image-surface-private.h | 7 ++ - src/cairo-image-surface.c | 41 +++++++ - src/cairo-surface.c | 239 ++++++++++++++++++++++++++------------ - src/cairoint.h | 8 ++ - 4 files changed, 222 insertions(+), 73 deletions(-) - -commit 3e9895e95100ced3a6fcbedcba75e50ca450b4f0 -Author: Andrea Canciani -AuthorDate: Mon May 7 19:05:05 2012 +0200 -Commit: Andrea Canciani -CommitDate: Sat May 26 16:05:07 2012 +0200 - - png: Implement conversion of CAIRO_FORMAT_RGB30 to string - - Fixes - - png.c:55: warning: enumeration value ‘CAIRO_FORMAT_RGB30’ not handled - in switch - - test/png.c | 1 + - 1 file changed, 1 insertion(+) - -commit afcbb7a2c5c8a05d11e054e09c8c4e53b571a435 -Author: Andrea Canciani -AuthorDate: Mon May 14 10:44:31 2012 +0200 -Commit: Andrea Canciani -CommitDate: Sat May 26 16:04:33 2012 +0200 - - build: Do not replace existing files - - The existing INSTALL file is currently being replaced at every - autogen.sh run with the default one. - - This is not desired, because INSTALL contains some cairo-specific - information. - - autogen.sh | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -commit 38d03ea7488097f2b1194f546bd1331af189b809 -Author: Andrea Canciani -AuthorDate: Mon May 14 10:40:49 2012 +0200 -Commit: Andrea Canciani -CommitDate: Sat May 26 16:03:00 2012 +0200 - - build: Allow autogen-eration on systems without GTK-doc - - The autogen.sh script fails if it cannot run gtkdocize. The absence of - this command should not cause cairo builds to fail, it should only - prevent the build of its documentation. - - Fixes: - *** No GTK-Doc found, please install it *** - - on systems without gtkdoc tools. - - Fixes https://bugs.freedesktop.org/show_bug.cgi?id=50356 - - autogen.sh | 6 +++--- - 1 file changed, 3 insertions(+), 3 deletions(-) - -commit 465319ce828f922edce46b6e7628da543b20d5e4 -Author: Chris Wilson -AuthorDate: Thu May 24 20:39:34 2012 +0100 -Commit: Chris Wilson -CommitDate: Thu May 24 20:39:34 2012 +0100 - - gl: Use core GL_STENCIL8_DEPTH24 for gl_flavor=desktop - - Jesse complained that --enable-gl --enable-glesv2 wasn't pulling in the - right headers, and in particular GL_STENCIL8_DEPTH24_OES was undefined - but being used. In this case we can simply use the identical - GL_STENCIL8_DEPTH24 instead. - - Reported-by: Jesse Barnes - Signed-off-by: Chris Wilson - - src/cairo-gl-device.c | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -commit 52b7622a6c28193e4259293591b0c78070839f6c -Author: Martin Robinson -AuthorDate: Wed May 23 13:59:02 2012 -0700 -Commit: Martin Robinson -CommitDate: Wed May 23 13:59:02 2012 -0700 - - gl: Fix compilation failure for flush cleanup. - - src/cairo-gl-composite.c | 4 ++-- - 1 file changed, 2 insertions(+), 2 deletions(-) - -commit bf9c295953fbe86434a8beefa6994c7a07e723fc -Author: Martin Robinson -AuthorDate: Wed May 23 11:46:25 2012 -0700 -Commit: Martin Robinson -CommitDate: Wed May 23 12:40:57 2012 -0700 - - gl: Simplify switching between primitive types - - Simplify the code that switches between primitive types by adding - a new member to the context which tracks the currently active - primitive type. - - src/cairo-gl-composite.c | 67 ++++++++++++++++++++++++------------------------ - src/cairo-gl-device.c | 1 + - src/cairo-gl-private.h | 7 +++++ - 3 files changed, 41 insertions(+), 34 deletions(-) - -commit f78696249f13c56a1a738b4645d8e2978d67d5ce -Author: Chris Wilson -AuthorDate: Wed May 23 12:45:54 2012 +0100 -Commit: Chris Wilson -CommitDate: Wed May 23 12:45:54 2012 +0100 - - test: Increase surface size for get-path-extents - - Whilst generating a glyph run from a string, any glyphs that are far - outside the surface (including a substantial guard region) are culled. - This affects the path extents. Workaround this by increasing the surface - size. - - Signed-off-by: Chris Wilson - - test/get-path-extents.c | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -commit 3ae8bce832cbd21831a26aeb4ac0d808900711f5 -Author: Chris Wilson -AuthorDate: Wed May 23 12:26:50 2012 +0100 -Commit: Chris Wilson -CommitDate: Wed May 23 12:27:47 2012 +0100 - - test/record90: Rotate the reference so that it is wholly visible - - Signed-off-by: Chris Wilson - - test/record90.c | 2 +- - test/reference/record90-self-intersecting.argb32.ref.png | Bin 167 -> 0 bytes - test/reference/record90-self-intersecting.ref.png | Bin 0 -> 244 bytes - test/reference/record90-self-intersecting.rgb24.ref.png | Bin 167 -> 0 bytes - 4 files changed, 1 insertion(+), 1 deletion(-) - -commit e73830915b508efa587c6b706d7501a674fdec94 -Author: Chris Wilson -AuthorDate: Wed May 23 12:20:50 2012 +0100 -Commit: Chris Wilson -CommitDate: Wed May 23 12:20:50 2012 +0100 - - test: Refresh unbounded-operator - - Apparently this too suffered from bug-bo-collins and is fixed by - (bo-rectangular: Emit subsummed boxes for overlapping edges). - - Signed-off-by: Chris Wilson - - test/reference/unbounded-operator.argb32.ref.png | Bin 2666 -> 2781 bytes - test/reference/unbounded-operator.rgb24.ref.png | Bin 1300 -> 1333 bytes - 2 files changed, 0 insertions(+), 0 deletions(-) - -commit c09be681123388d562822d677db631101a8faa07 -Author: Chris Wilson -AuthorDate: Wed May 23 11:38:07 2012 +0100 -Commit: Chris Wilson -CommitDate: Wed May 23 11:50:34 2012 +0100 - - bo-rectangular: Emit subsummed boxes for overlapping edges - - Fixes bug-bo-collins - - Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=49446 - Signed-off-by: Chris Wilson - - src/cairo-bentley-ottmann-rectangular.c | 5 +++-- - 1 file changed, 3 insertions(+), 2 deletions(-) - -commit 7b2f787d1999bcc351b2e2904322020732939f5f -Author: Chris Wilson -AuthorDate: Wed May 23 11:48:30 2012 +0100 -Commit: Chris Wilson -CommitDate: Wed May 23 11:50:34 2012 +0100 - - test: Exercise rectangular bo bug - - Reported-by: S. Christian Collins - Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=49446 - Signed-off-by: Chris Wilson - - test/Makefile.sources | 1 + - test/bug-bo-collins.c | 76 ++++++++++++++++++++++++++++++++++ - test/reference/bug-bo-collins.ref.png | Bin 0 -> 248 bytes - 3 files changed, 77 insertions(+) - -commit aed94a5bc650f579368b4b814a8729570c32147e -Author: Chris Wilson -AuthorDate: Sat May 19 10:20:20 2012 +0100 -Commit: Chris Wilson -CommitDate: Mon May 21 11:32:23 2012 +0100 - - gl: Replace vbo with static allocation and immediate arrays - - Some drivers have terrible latency issues when using VBO and for our - dynamic use-case (we never reuse a VBO currently) there is little - benefit from using a VBO and often a loss of performance from doing so. - And there is the benefit from reducing the number of our own code paths. - - src/cairo-gl-composite.c | 29 +++++------------------------ - src/cairo-gl-device.c | 9 +++------ - src/cairo-gl-private.h | 8 +++----- - 3 files changed, 11 insertions(+), 35 deletions(-) - -commit a845ebe32d68a4701fd0645c576a2dc65c82ca8f -Author: Chris Wilson -AuthorDate: Sun May 20 12:11:27 2012 +0100 -Commit: Chris Wilson -CommitDate: Sun May 20 12:12:03 2012 +0100 - - test: Fix leak from xcb-snapshort-assert - - ==12598== 1,344 (768 direct, 576 indirect) bytes in 2 blocks are - definitely lost in loss record 512 of 519 - ==12598== at 0x402894D: malloc (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so) - ==12598== by 0x4C76501: _cairo_image_surface_create_for_pixman_image (cairo-image-surface.c:176) - ==12598== by 0x4C76953: _cairo_image_surface_create_with_pixman_format (cairo-image-surface.c:345) - ==12598== by 0x44CFAC: draw (xcb-snapshot-assert.c:36) - ==12598== by 0x40E14C: cairo_test_for_target (cairo-test.c:923) - ==12598== by 0x40EEA7: _cairo_test_context_run_for_target (cairo-test.c:1545) - ==12598== by 0x40BD53: main (cairo-test-runner.c:254) - - Signed-off-by: Chris Wilson - - test/xcb-snapshot-assert.c | 10 +++++++++- - 1 file changed, 9 insertions(+), 1 deletion(-) - -commit 2879e656b9b9283308ed4eaf3ad820460ac1df8b -Author: Chris Wilson -AuthorDate: Sun May 20 10:24:06 2012 +0100 -Commit: Chris Wilson -CommitDate: Sun May 20 10:55:26 2012 +0100 - - wideint: Fix compilation failure for bare use of uint64_t for !HAVE_UINT64_T - - Reported-by: Hakki Dogusan - Signed-off-by: Chris Wilson - - src/cairo-wideint-private.h | 4 ++-- - 1 file changed, 2 insertions(+), 2 deletions(-) - -commit dad69ce4d5568f94621ae60ccdcc683d5bbd0efd -Author: Chris Wilson -AuthorDate: Sun May 20 10:54:07 2012 +0100 -Commit: Chris Wilson -CommitDate: Sun May 20 10:55:25 2012 +0100 - - win32: Fix return value for cairo_time_get - - Without uint64_t we need to construct a cairo_int64_t from the struct of - smaller 32-bit types rather than just casting the larger 64-bit value. - - Reported-by: Hakki Dogusan - Signed-off-by: Chris Wilson - - src/cairo-time.c | 21 ++++++++++++++++++++- - 1 file changed, 20 insertions(+), 1 deletion(-) - -commit 5a7a9c93e7f807ae8ee7504ff308e9676dbe8d25 -Author: Chris Wilson -AuthorDate: Sun May 20 10:33:17 2012 +0100 -Commit: Chris Wilson -CommitDate: Sun May 20 10:41:12 2012 +0100 - - image: Tidy lerp8x4 - - Signed-off-by: Chris Wilson - - src/cairo-image-compositor.c | 13 ++++--------- - 1 file changed, 4 insertions(+), 9 deletions(-) - -commit ced090871bbc4c052fd4ac627cdd8fc7e80f0d62 -Author: Martin Robinson -AuthorDate: Thu May 17 14:37:57 2012 -0700 -Commit: Martin Robinson -CommitDate: Thu May 17 14:52:10 2012 -0700 - - gl/msaa: Improve fallback detection - - Rename should_fall_back to can_use_msaa_compositor to make it - more comprehensible and also modify the logic to fall back - when the antialias mode is not "fast" or "default." - - src/cairo-gl-msaa-compositor.c | 29 ++++++++++++++++------------- - 1 file changed, 16 insertions(+), 13 deletions(-) - -commit 707bb8663980e66e8406351b68c230b63a0265c6 -Author: Martin Robinson -AuthorDate: Mon Apr 2 13:45:15 2012 -0700 -Commit: Martin Robinson -CommitDate: Thu May 17 14:21:25 2012 -0700 - - gl/msaa: Lazily flush the context - - Instead of conservatively flushing after every single drawing - operation. Wait until we are certain we need to flush, which - in the case of the MSAA compositor is when we start compositing - with a different type of geometry. - - src/cairo-gl-composite.c | 37 ++++++++++++++++++++++++------------- - src/cairo-gl-msaa-compositor.c | 4 ---- - 2 files changed, 24 insertions(+), 17 deletions(-) - -commit 4b3ad4e8dacdfb84636f188b2dc7afe3ad6966c5 -Author: Martin Robinson -AuthorDate: Mon Mar 12 15:28:23 2012 -0700 -Commit: Martin Robinson -CommitDate: Thu May 17 14:02:18 2012 -0700 - - gl/msaa: Implement glyph rendering - - Instead of falling back to the traps compositor to do glyph - rendering, handle it in the MSAA compositor. This allows using - the stencil buffer or scissor to clip and simplifies the MSAA - code path. - - src/cairo-gl-glyphs.c | 56 +++++++++++++++++++--------- - src/cairo-gl-msaa-compositor.c | 83 +++++++++++++++++++++++++++++++++++++++--- - src/cairo-gl-private.h | 11 ++++++ - 3 files changed, 128 insertions(+), 22 deletions(-) - -commit e3f5b14fbabba2128de4ee2d8513800aa145fb2f -Author: Martin Robinson -AuthorDate: Tue Feb 21 09:36:52 2012 -0800 -Commit: Martin Robinson -CommitDate: Thu May 17 13:56:38 2012 -0700 - - gl/msaa: Wait to clip until compositing begins - - The MSAA compositors clips in a unique way We'd like to - share this method with the text rendering path, so we move - it to cairo-gl-composite so that it works in a way very - similar to clipping with the spans and traps compositors. - - src/cairo-gl-composite.c | 164 +++++++++++++++++++++++++++++++++++------ - src/cairo-gl-device.c | 1 + - src/cairo-gl-msaa-compositor.c | 155 +++++++------------------------------- - src/cairo-gl-private.h | 12 +++ - 4 files changed, 181 insertions(+), 151 deletions(-) - -commit 29b243325c0af760249a414bdce2e6afb64186a7 -Author: Martin Robinson -AuthorDate: Mon Jan 23 13:07:59 2012 -0800 -Commit: Martin Robinson -CommitDate: Thu May 17 13:13:40 2012 -0700 - - gl/msaa: Support for non-texture surfaces - - Add full support for non-texture surfaces, by correctly - querying primitives for stencil and multisample bits. - - src/cairo-gl-device.c | 8 ++++++++ - src/cairo-gl-msaa-compositor.c | 40 ++++++++++++++++++++++++++++++++++++++++ - src/cairo-gl-operand.c | 3 +++ - src/cairo-gl-private.h | 2 ++ - src/cairo-gl-surface.c | 5 +---- - 5 files changed, 54 insertions(+), 4 deletions(-) - -commit 9208dd6230aa3c236a91105f8dc5d5caf69fe591 -Author: Henry (Yu) Song -AuthorDate: Fri Dec 16 15:56:45 2011 -0800 -Commit: Martin Robinson -CommitDate: Thu May 17 13:08:46 2012 -0700 - - gl/msaa: Support the OpenGLES EXT multisampling extension - - Add support for OpenGLES GPUs that support the EXT multisampling - extension. - - src/cairo-gl-device.c | 165 ++++++++++++++++++++++++++++++---------- - src/cairo-gl-dispatch-private.h | 7 +- - src/cairo-gl-msaa-compositor.c | 12 +++ - src/cairo-gl-operand.c | 4 + - src/cairo-gl-private.h | 13 ++-- - 5 files changed, 152 insertions(+), 49 deletions(-) - -commit ac8d50f04ca24fb24f354dea597513ec43f5ebb6 -Author: Henry (Yu) Song -AuthorDate: Thu Dec 22 17:24:01 2011 -0800 -Commit: Martin Robinson -CommitDate: Thu May 17 12:49:55 2012 -0700 - - gl/msaa: Use unsigned short to build the index array - - Some GPUs have trouble accepting vertex index data as - integers. Using unsigned shorts expands support. - - src/cairo-gl-composite.c | 10 +++++----- - src/cairo-gl-device.c | 2 +- - 2 files changed, 6 insertions(+), 6 deletions(-) - -commit 5ae53c933ae4baefdedb8ca795ee25dfcba9f5b0 -Author: Henry (Yu) Song -AuthorDate: Fri Dec 23 08:44:16 2011 -0800 -Commit: Martin Robinson -CommitDate: Thu May 17 11:22:25 2012 -0700 - - gl/msaa: Implement paint via masking - - Instead of falling back to the spans compositor, let the msaa - compositor handle painting. This ensure clipping is handled - in a consistent way with the rest of the msaa compositor. - - src/cairo-gl-msaa-compositor.c | 51 ++++++++++++++++++++++++++++++++---------- - 1 file changed, 39 insertions(+), 12 deletions(-) - -commit 4d9064d578434cadfae2b248ef29075a1a1be8b8 -Author: Henry (Yu) Song -AuthorDate: Fri Dec 16 15:56:00 2011 -0800 -Commit: Martin Robinson -CommitDate: Thu May 17 11:06:47 2012 -0700 - - gl/msaa: Add ARB multisampling support - - This implementation is not very efficient at the moment and does not - work with platforms using the incompatible IMG extension (mobile - GPUs). Performance improvements and mobile GPU support will follow. - - src/cairo-gl-composite.c | 14 ++- - src/cairo-gl-device.c | 236 ++++++++++++++++++++++++++++++++++------ - src/cairo-gl-dispatch-private.h | 4 + - src/cairo-gl-msaa-compositor.c | 28 ++++- - src/cairo-gl-operand.c | 40 +++++++ - src/cairo-gl-private.h | 38 ++++++- - src/cairo-gl-surface.c | 21 +++- - 7 files changed, 334 insertions(+), 47 deletions(-) - -commit 50f08352f463d86022a0d7544d461fe2e5ac9076 -Author: Adrian Johnson -AuthorDate: Wed May 16 20:55:17 2012 +0930 -Commit: Adrian Johnson -CommitDate: Wed May 16 20:57:47 2012 +0930 - - pdf: check if EXTEND_PAD group can be painted with EXTEND_NONE - - to avoid the fallback - - src/cairo-pdf-surface.c | 26 ++++++++++++++++++++++---- - 1 file changed, 22 insertions(+), 4 deletions(-) - -commit e41dffb329e4a6fcb4e75fb501843838a499c4c8 -Author: Chris Wilson -AuthorDate: Mon May 14 17:46:32 2012 +0100 -Commit: Chris Wilson -CommitDate: Mon May 14 18:11:28 2012 +0100 - - stroke: Don't drop clockwise==0 lines - - If the join indicates the pair of edges are parallel, we may be - considering the final segment of the spline with a different tangent - vector than the slope of the final edge and so lead to false dropping of - an edge. This has the effect that the line segments between 'arc arc arc - arc' (a rounded rectangle) are no longer horizontal or vertical. As path - construction tries to eliminate joins between colinear segments, this - optimisation should not be required anyway. - - Signed-off-by: Chris Wilson - - src/cairo-path-stroke-polygon.c | 14 +++----------- - test/reference/arc-direction.traps.argb32.ref.png | Bin 6380 -> 0 bytes - test/reference/arc-direction.traps.rgb24.ref.png | Bin 6380 -> 0 bytes - .../reference/close-path-current-point.argb32.ref.png | Bin 2324 -> 0 bytes - test/reference/close-path-current-point.ref.png | Bin 1675 -> 2109 bytes - test/reference/close-path-current-point.rgb24.ref.png | Bin 2324 -> 0 bytes - test/reference/fallback.traps.argb32.ref.png | Bin 4070 -> 4156 bytes - test/reference/fallback.traps.rgb24.ref.png | Bin 3141 -> 3332 bytes - test/reference/halo.argb32.ref.png | Bin 8726 -> 0 bytes - test/reference/halo.ref.png | Bin 7297 -> 8774 bytes - test/reference/halo.rgb24.ref.png | Bin 8726 -> 0 bytes - test/reference/halo.traps.argb32.ref.png | Bin 8726 -> 0 bytes - test/reference/halo.traps.rgb24.ref.png | Bin 8726 -> 0 bytes - .../reference/rounded-rectangle-stroke.argb32.ref.png | Bin 951 -> 0 bytes - test/reference/rounded-rectangle-stroke.ref.png | Bin 569 -> 833 bytes - test/reference/rounded-rectangle-stroke.rgb24.ref.png | Bin 951 -> 0 bytes - 16 files changed, 3 insertions(+), 11 deletions(-) - -commit 099420a07c33c66daf5392d4ca1df06585791751 -Author: Chris Wilson -AuthorDate: Mon May 14 17:50:54 2012 +0100 -Commit: Chris Wilson -CommitDate: Mon May 14 17:57:24 2012 +0100 - - spans: Debug input paths and polygons - - Signed-off-by: Chris Wilson - - src/cairo-spans-compositor.c | 3 +++ - src/cairoint.h | 2 ++ - 2 files changed, 5 insertions(+) - -commit f7d937670c22db79e597cade89e84c840b58e25e -Author: Chris Wilson -AuthorDate: Mon May 14 16:03:40 2012 +0100 -Commit: Chris Wilson -CommitDate: Mon May 14 16:09:29 2012 +0100 - - arc: Use user endpoint for final step - - Eliminate numerical inaccuracy from accumulating angle through - the floating point step value by using the exact end-value for the last - arc segment. - - Signed-off-by: Chris Wilson - - src/cairo-arc.c | 29 +++++++++++++++++------------ - 1 file changed, 17 insertions(+), 12 deletions(-) - -commit 6867383017fcea0b1d5a4671b32382037ba9be3f -Author: Alexandros Frantzis -AuthorDate: Thu May 3 13:41:29 2012 +0300 -Commit: Chris Wilson -CommitDate: Sat May 12 11:09:26 2012 +0100 - - gl: Provide a shader implementation of repeat wrap modes - - In OpenGL ES 2.0, repeat wrap modes (GL_REPEAT and GL_MIRRORED REPEAT) are - only available for NPOT textures if the GL_OES_texture_npot is supported. - This commit adds a shader implementation of these wrap modes for use by - devices that do not support GL_OES_texture_npot. - - src/cairo-gl-composite.c | 10 ++++-- - src/cairo-gl-device.c | 16 +++++---- - src/cairo-gl-private.h | 1 + - src/cairo-gl-shaders.c | 84 +++++++++++++++++++++++++++++++++++++++++------- - 4 files changed, 90 insertions(+), 21 deletions(-) - -commit 82f69d1ef798c2ebff13ec2b548c4877bf5e0e5b -Author: Alexandros Frantzis -AuthorDate: Thu May 3 13:03:26 2012 +0300 -Commit: Chris Wilson -CommitDate: Sat May 12 11:06:21 2012 +0100 - - gl: Simplify GL wrap parameter setting code - - src/cairo-gl-composite.c | 29 +++++++++++++++-------------- - 1 file changed, 15 insertions(+), 14 deletions(-) - -commit 6cd1f5040fed1385c2990a68d6017a7ca6c37103 -Author: Chris Wilson -AuthorDate: Fri May 11 22:38:27 2012 +0100 -Commit: Chris Wilson -CommitDate: Fri May 11 23:14:21 2012 +0100 - - clip: Apply clip boxes to the clip surface - - As we convert the unaligned clip boxes to a region, we need to process - the intersection of the boxes with the clip surface as a separate step. - - Fixes tighten-box for the base compositor. - - Signed-off-by: Chris Wilson - - src/cairo-clip-surface.c | 86 +++++++++++++++++++--- - test/reference/tighten-bounds.base.argb32.ref.png | Bin 8490 -> 8512 bytes - test/reference/tighten-bounds.base.rgb24.ref.png | Bin 7847 -> 7873 bytes - 3 files changed, 77 insertions(+), 9 deletions(-) - -commit 4ea3ace6c810ba090464e48795fac5456f6cdc24 -Author: Chris Wilson -AuthorDate: Fri May 11 21:51:44 2012 +0100 -Commit: Chris Wilson -CommitDate: Fri May 11 21:53:55 2012 +0100 - - spans: Only fallback for a clipmask if unbounded - - For a bounded operation with a clip we will already have performed the - clip geometrically. - - Signed-off-by: Chris Wilson - - src/cairo-spans-compositor.c | 3 ++- - test/reference/clip-operator.argb32.ref.png | Bin 8216 -> 8257 bytes - test/reference/clip-operator.rgb24.ref.png | Bin 3293 -> 3288 bytes - test/reference/random-clip.ref.png | Bin 529871 -> 525962 bytes - test/reference/trap-clip.argb32.ref.png | Bin 5810 -> 5826 bytes - test/reference/trap-clip.rgb24.ref.png | Bin 5433 -> 5435 bytes - 6 files changed, 2 insertions(+), 1 deletion(-) - -commit cd1004ce19c7ea28c7fedb6464562a08416586c0 -Author: Chris Wilson -AuthorDate: Fri May 11 21:20:35 2012 +0100 -Commit: Chris Wilson -CommitDate: Fri May 11 21:31:13 2012 +0100 - - traps,spans-compositor: Avoid mistreating unaligned clips as aligned - - An unaligned clip requires careful handling, and so exclude processing - along the fast paths. - - Signed-off-by: Chris Wilson - - src/cairo-spans-compositor.c | 24 ++++++++++++++++++++++-- - src/cairo-traps-compositor.c | 2 +- - 2 files changed, 23 insertions(+), 3 deletions(-) - -commit de1150cc0e1cb11710b196806335817255cb4abe -Author: Chris Wilson -AuthorDate: Fri May 11 20:51:58 2012 +0100 -Commit: Chris Wilson -CommitDate: Fri May 11 21:31:13 2012 +0100 - - spans-compositor: Add tracepoints for debugging - - Signed-off-by: Chris Wilson - - src/cairo-spans-compositor.c | 22 +++++++++++++++++++++- - 1 file changed, 21 insertions(+), 1 deletion(-) - -commit 197e5b7324c569d3e8cd652dbf5a281a57317cbe -Author: Chris Wilson -AuthorDate: Fri May 11 20:25:29 2012 +0100 -Commit: Chris Wilson -CommitDate: Fri May 11 21:31:13 2012 +0100 - - spans-compositor: Handle unaligned unbounded boxes - - Signed-off-by: Chris Wilson - - src/cairo-spans-compositor.c | 67 +++++++++++++++++++++++++++++++++----------- - 1 file changed, 51 insertions(+), 16 deletions(-) - -commit 2d26f7da777b7ac01e5c469e52a17fa7d0cf4a8d -Author: Chris Wilson -AuthorDate: Fri May 11 21:26:33 2012 +0100 -Commit: Chris Wilson -CommitDate: Fri May 11 21:31:13 2012 +0100 - - test: Fix tighten-bounds reference images - - Uli Schlachter spotted that I had inadvertently committed (606e9e1c9) a - broken set of test images for the tighten-bounds case and so masked a - nasty bug with the mishandling of unaligned clips. - - Reported-by: Uli Schlachter - Signed-off-by: Chris Wilson - - test/reference/tighten-bounds.argb32.ref.png | Bin 9115 -> 9115 bytes - test/reference/tighten-bounds.rgb24.ref.png | Bin 8256 -> 8365 bytes - test/reference/tighten-bounds.traps.argb32.ref.png | Bin 8769 -> 8486 bytes - test/reference/tighten-bounds.traps.rgb24.ref.png | Bin 8179 -> 7856 bytes - 4 files changed, 0 insertions(+), 0 deletions(-) - -commit 117a44a33526a7738cac6643ea35fb73dc8a710f -Author: Chris Wilson -AuthorDate: Fri May 11 17:17:05 2012 +0100 -Commit: Chris Wilson -CommitDate: Fri May 11 17:30:42 2012 +0100 - - gl: Reject SOURCE + mask in composite_boxes() - - As SOURCE requires a bounded operation and the GL compositor only - implements a simple operation (i.e. it just blits from source to - destination instead of applying a linear interpolation as required), we - need to reject the operation and fallback. In the future, we should - make the linear interpolation available through a GL shader or as a - dual-source blend (better). - - Spotted-by: Chuanbo Weng - Signed-off-by: Chris Wilson - - src/cairo-gl-spans-compositor.c | 14 ++++++++++---- - 1 file changed, 10 insertions(+), 4 deletions(-) - -commit 0196327b30dd01ce0169a7bc67024b932368af4e -Author: Chuanbo Weng -AuthorDate: Fri May 11 23:58:05 2012 +0800 -Commit: Chris Wilson -CommitDate: Fri May 11 17:11:55 2012 +0100 - - gl: Convert CLEAR to DEST_OUT when there's a mask for composite_boxes. - - As Cairo's CLEAR sematics are for a bounded operation, and GL's uses the - simple semantics for its CLEAR composite, we need to convert the - operation into an equivalent DEST_OUT when we have a mask. - - src/cairo-gl-spans-compositor.c | 14 +++++++++++++- - 1 file changed, 13 insertions(+), 1 deletion(-) - -commit 9ecf2f7c4f6451d4a2c145a82184ba185be0a421 -Author: Chris Wilson -AuthorDate: Thu May 10 21:01:36 2012 +0100 -Commit: Chris Wilson -CommitDate: Thu May 10 21:01:36 2012 +0100 - - damage: Prevent reducing an error object - - Signed-off-by: Chris Wilson - - src/cairo-damage.c | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -commit f4631dca371865f9aa747c61937c09d495f165e0 -Author: Chris Wilson -AuthorDate: Thu May 10 21:00:49 2012 +0100 -Commit: Chris Wilson -CommitDate: Thu May 10 21:00:49 2012 +0100 - - damage: Prevent accumulating damage to an error object - - Signed-off-by: Chris Wilson - - src/cairo-damage.c | 3 +++ - 1 file changed, 3 insertions(+) - -commit 50e51389bd4108942fdc7a5f029b3171b0c1f11a -Author: Chris Wilson -AuthorDate: Thu May 10 20:57:30 2012 +0100 -Commit: Chris Wilson -CommitDate: Thu May 10 20:58:33 2012 +0100 - - damage: Avoid freeing the NIL error object - - Signed-off-by: Chris Wilson - - src/cairo-damage.c | 3 +++ - 1 file changed, 3 insertions(+) - -commit 3bff546ebe0859c65ba608a956a55b5647bfd37f -Author: Uli Schlachter -AuthorDate: Sun May 6 21:48:42 2012 +0200 -Commit: Uli Schlachter -CommitDate: Wed May 9 16:59:58 2012 +0200 - - c_surface_set_mime_data: Remove duplicate "Since" - - This fixes the following message from "make check": - - ./cairo-surface.c (1192): ERROR: cairo_surface_set_mime_data: Duplicate 'Since' - field - - Signed-off-by: Uli Schlachter - - src/cairo-surface.c | 2 -- - 1 file changed, 2 deletions(-) - -commit fcccb1a65aeab7b1bf199e728b58af9bf21e197b -Author: Uli Schlachter -AuthorDate: Sun May 6 21:45:32 2012 +0200 -Commit: Uli Schlachter -CommitDate: Wed May 9 16:59:58 2012 +0200 - - check-doc-syntax: Find duplicate "Since:" tags - - It makes no sense to say more than one time when some symbol was introduced. - - Signed-off-by: Uli Schlachter - - src/check-doc-syntax.awk | 5 ++++- - 1 file changed, 4 insertions(+), 1 deletion(-) - -commit a184de906490e743430919c55a2d5099987d4d69 -Author: Uli Schlachter -AuthorDate: Sun May 6 21:41:28 2012 +0200 -Commit: Uli Schlachter -CommitDate: Wed May 9 16:59:58 2012 +0200 - - check-doc-syntax: Make this work again - - Commit ed90616b77570 changed the way the awk script gets invoked. Due to a - missing "test", this resulted in the awk script never getting invoked at all. - - Signed-off-by: Uli Schlachter - - src/check-doc-syntax.sh | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -commit 3e02dccb97ad12a13db0b66aba3927c78f6d08e9 -Author: Henry (Yu) Song -AuthorDate: Mon Dec 12 17:08:52 2011 -0800 -Commit: Martin Robinson -CommitDate: Tue May 8 12:48:30 2012 -0700 - - gl/msaa: Add support for unbounded operators - - When filling and stroking with an unbounded operator, first fill - and stroke to a temporary surface and then paint the entire surface - back to the original target. - - src/cairo-gl-msaa-compositor.c | 100 +++++++++++++++++++++++++++++++++++++++++ - 1 file changed, 100 insertions(+) - -commit b099f8b0c70dc0208135cdeda76be9ab33e61d9b -Author: Henry (Yu) Song -AuthorDate: Fri Oct 14 14:32:28 2011 -0700 -Commit: Martin Robinson -CommitDate: Tue May 8 12:13:42 2012 -0700 - - gl/msaa: Support for masking - - Add support for masking in the OpenGL MSAA compositor. This is - accomplished simply by properly setting up the masking source, - emitting the entire bounded composite region, and unforking - vertex emission. - - src/cairo-gl-composite.c | 53 ++++++++++++++---------- - src/cairo-gl-msaa-compositor.c | 92 +++++++++++++++++++++++++++++++++++++++++- - 2 files changed, 122 insertions(+), 23 deletions(-) - -commit 929a96ed034b4e6f811da9b718a7b11e9d1b9d16 -Author: Henry (Yu) Song -AuthorDate: Thu Oct 13 15:51:29 2011 -0700 -Commit: Martin Robinson -CommitDate: Tue May 8 11:42:29 2012 -0700 - - gl/msaa: Support for texture sources - - Add support for texture sources, by unforking _cairo_gl_composite_begin. - _cairo_gl_composite_begin_tristrip is now just a small wrapper. Also - properly emit the source texture coordinates when emitting tristrip - vertices. - - src/cairo-gl-composite.c | 73 ++++++++---------------------------------- - src/cairo-gl-msaa-compositor.c | 4 +-- - src/cairo-gl-private.h | 4 --- - 3 files changed, 15 insertions(+), 66 deletions(-) - -commit a60bb83f28a27c065f21f6a8466408df4565a0b1 -Author: Henry (Yu) Song -AuthorDate: Tue Oct 11 09:08:38 2011 -0700 -Commit: Martin Robinson -CommitDate: Tue May 8 11:06:31 2012 -0700 - - gl/msaa: Prevent stroke overlap - - When stroking we do not send our polygon to the tessellator, so - it may have overlapping stroke components. Use the stencil buffer - to prevent stroke components from overlapping. - - src/cairo-gl-msaa-compositor.c | 36 ++++++++++++++++++++++++++++++++++++ - 1 file changed, 36 insertions(+) - -commit 138e595c1192c03ebc1b2c89851ce938b18abd2f -Author: Uli Schlachter -AuthorDate: Tue May 1 14:48:43 2012 +0200 -Commit: Uli Schlachter -CommitDate: Sat May 5 10:14:54 2012 +0200 - - Remove some dead code - - This code could never be executed, because the status variable doesn't get set - since the last time it is checked and errors get returned to the caller. - - This was noticed while looking into the build log provided by - http://lists.cairographics.org/archives/cairo/2012-April/022993.html - - Reported-by: Ryan Schmidt - Signed-off-by: Uli Schlachter - - src/cairo-scaled-font-subsets.c | 5 ----- - 1 file changed, 5 deletions(-) - -commit 494cfd7eb9d994a5e2024e299986e66a3ef9a562 -Author: Uli Schlachter -AuthorDate: Tue May 1 14:38:51 2012 +0200 -Commit: Uli Schlachter -CommitDate: Sat May 5 10:14:54 2012 +0200 - - Remove some unused functions - - All of these are unused since af9fbd176b145f0424 "Introduce a new compositor - architecture". Since no one complained yet, I guess that means that we don't - need these any more. :-) - - This was noticed while looking into the build log provided by - http://lists.cairographics.org/archives/cairo/2012-April/022993.html - - Signed-off-by: Uli Schlachter - - src/cairo-botor-scan-converter.c | 36 -------------------------------- - src/cairo-path-stroke-polygon.c | 44 ---------------------------------------- - 2 files changed, 80 deletions(-) - -commit 748dcdef4b67097c079a3ff98f970451428c24f3 -Author: Chuanbo Weng -AuthorDate: Fri May 4 08:53:20 2012 +0800 -Commit: Chris Wilson -CommitDate: Fri May 4 10:15:01 2012 +0100 - - gl: fix the translate value in copy_boxes. - - Fixes 36 test cases (such as push-group-color) - - Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=48221 - - src/cairo-gl-spans-compositor.c | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -commit db4ee947c3fc2c057dd8e84cdfcb779e7c62e5d5 -Author: Chris Wilson -AuthorDate: Tue May 1 14:41:25 2012 +0100 -Commit: Chris Wilson -CommitDate: Tue May 1 16:55:22 2012 +0100 - - Split finish into multiple stages - - In order to handle the snapshot copy-on-write losing a race with another - thread using the snapshot as a source, we may find the target acquires a - fresh reference as we attempt to finalize it. - - Signed-off-by: Chris Wilson - - src/cairo-surface.c | 32 +++++++++++++++++++++++--------- - 1 file changed, 23 insertions(+), 9 deletions(-) - -commit 52dfa038b9e0c106aa3f9f08abeb7f53e72a762a -Author: Chris Wilson -AuthorDate: Tue May 1 15:06:46 2012 +0100 -Commit: Chris Wilson -CommitDate: Tue May 1 16:55:22 2012 +0100 - - snapshot: Avoid triggering assertion for grabbing the target during destroy - - If the source wins the race to acquire the original surface as it is - being destroyed, it triggers an assertion. - - Signed-off-by: Chris Wilson - - src/cairo-surface-inline.h | 8 ++++++++ - src/cairo-surface-snapshot-inline.h | 3 ++- - 2 files changed, 10 insertions(+), 1 deletion(-) - -commit f62f8f907d14a7267f136f299208029c7b904eaa -Author: Chris Wilson -AuthorDate: Tue May 1 14:57:18 2012 +0100 -Commit: Chris Wilson -CommitDate: Tue May 1 16:55:22 2012 +0100 - - snapshot: Hold a reference to target whilst querying - - Due to race with cow and accessing target from multiple threads, we need - to be careful that we always acquire a reference for our access to - the snapshot target. - - Signed-off-by: Chris Wilson - - src/cairo-surface-snapshot.c | 51 +++++++++++++++++++++++++++++++++++++------- - 1 file changed, 43 insertions(+), 8 deletions(-) - -commit af3c8abbce529b0928742cc219e5e8e21191eee7 -Author: Søren Sandmann Pedersen -AuthorDate: Mon Apr 30 12:02:38 2012 -0400 -Commit: Søren Sandmann Pedersen -CommitDate: Mon Apr 30 12:02:38 2012 -0400 - - Revert "Use pixman glyphs" - - This was pushed accidentally - apologies. - - This reverts commit 752c3b69e008b7d219da8cc5c657cf995732d3b8. - - src/cairo-image-compositor.c | 313 ++++++++++++++++++++++++++++------------- - src/cairo-mutex-list-private.h | 1 - - src/cairo-scaled-font.c | 2 - - src/cairoint.h | 4 - - 4 files changed, 212 insertions(+), 108 deletions(-) - -commit 752c3b69e008b7d219da8cc5c657cf995732d3b8 -Author: Søren Sandmann Pedersen -AuthorDate: Mon Apr 30 09:41:44 2012 -0400 -Commit: Søren Sandmann Pedersen -CommitDate: Mon Apr 30 09:41:44 2012 -0400 - - Use pixman glyphs - - src/cairo-image-compositor.c | 313 +++++++++++++---------------------------- - src/cairo-mutex-list-private.h | 1 + - src/cairo-scaled-font.c | 2 + - src/cairoint.h | 4 + - 4 files changed, 108 insertions(+), 212 deletions(-) - -commit 821a9af33cf43dc6a8266f4e677171f2b1ebacba -Author: Chris Wilson -AuthorDate: Sun Apr 29 20:54:07 2012 +0100 -Commit: Chris Wilson -CommitDate: Sun Apr 29 20:54:07 2012 +0100 - - version: Post release bump to 1.12.3 - - cairo-version.h | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -commit dbc0efad7e565558a3abf7f69d7675efddc4688d -Author: Chris Wilson -AuthorDate: Sun Apr 29 19:49:12 2012 +0100 -Commit: Chris Wilson -CommitDate: Sun Apr 29 19:49:12 2012 +0100 - - version: bump for cairo-1.12.2 release - - NEWS | 40 ++++++++++++++++++++++++++++++++++++++++ - cairo-version.h | 2 +- - 2 files changed, 41 insertions(+), 1 deletion(-) - -commit ed90616b7757087154d1c191858444ecc9188935 -Author: Chris Wilson -AuthorDate: Sun Apr 29 13:21:36 2012 +0100 -Commit: Chris Wilson -CommitDate: Sun Apr 29 19:29:12 2012 +0100 - - check-doc-syntax: Only parse the source files for incorrect tags - - Signed-off-by: Chris Wilson - - src/check-doc-syntax.sh | 13 ++++++++----- - 1 file changed, 8 insertions(+), 5 deletions(-) - -commit c16cdf0b4e2bada9b955111886eb7c9cb3878994 -Author: Chris Wilson -AuthorDate: Sun Apr 29 13:18:43 2012 +0100 -Commit: Chris Wilson -CommitDate: Sun Apr 29 19:29:12 2012 +0100 - - check-doc-syntax: Fix handling of return value in make check - - src/check-doc-syntax.sh | 2 ++ - 1 file changed, 2 insertions(+) - -commit a1d4f416e403359b713f6d10d557a190458bbb16 -Author: Chris Wilson -AuthorDate: Sun Apr 29 15:49:40 2012 +0100 -Commit: Chris Wilson -CommitDate: Sun Apr 29 15:55:16 2012 +0100 - - path-stroke-boxes: Fix degenerate end-caps for anti-clockwise paths - - Signed-off-by: Chris Wilson - - src/cairo-path-stroke-boxes.c | 60 ++++++++++++++++++++----------------------- - 1 file changed, 28 insertions(+), 32 deletions(-) - -commit 71df65f95a238c53fa0a64759b41af85c0b1b059 -Author: Chris Wilson -AuthorDate: Sun Apr 29 14:51:17 2012 +0100 -Commit: Chris Wilson -CommitDate: Sun Apr 29 15:55:16 2012 +0100 - - test: Update degenerate-solid-dash reference - - Looking at the base output for cairo-1.0 reveals we have an issue with - the placement of degenerate end-caps. - - test/reference/degenerate-solid-dash.ref.png | Bin 405 -> 407 bytes - test/reference/line-width-large-overlap-dashed.ref.png | Bin 338 -> 340 bytes - .../reference/line-width-large-overlap-dashed.xfail.png | Bin 343 -> 0 bytes - test/reference/line-width-overlap-dashed.ref.png | Bin 0 -> 407 bytes - test/reference/rectilinear-dash.argb32.ref.png | Bin 291 -> 0 bytes - test/reference/rectilinear-dash.rgb24.ref.png | Bin 291 -> 0 bytes - 6 files changed, 0 insertions(+), 0 deletions(-) - -commit f5df96748e39d1f1a3fddf63712318377211b12b -Author: Chris Wilson -AuthorDate: Sun Apr 29 14:32:14 2012 +0100 -Commit: Chris Wilson -CommitDate: Sun Apr 29 14:32:14 2012 +0100 - - gstate: Correctly compact degenerate dash segments - - The danger of the incomplete test masking the failure to correctly skip - the degenerate elements in the final dash state. - - Fixes the fixed degenerate-solid-dash. - Signed-off-by: Chris Wilson - - src/cairo-gstate.c | 37 ++++++++++++++++++------------------- - 1 file changed, 18 insertions(+), 19 deletions(-) - -commit ba21231491dbed0252858ee8c2755db7b6f1c970 -Author: Chris Wilson -AuthorDate: Sun Apr 29 14:23:11 2012 +0100 -Commit: Chris Wilson -CommitDate: Sun Apr 29 14:23:11 2012 +0100 - - test: Fix array lengths for degenerate-solid-dash - - The latter arrays were meant to test compaction. - - Signed-off-by: Chris Wilson - - test/degenerate-solid-dash.c | 4 ++-- - test/reference/degenerate-solid-dash.ref.png | Bin 358 -> 405 bytes - 2 files changed, 2 insertions(+), 2 deletions(-) - -commit 9176e640d7cb5cae5d89722aa560fba19bc08a8c -Author: Chris Wilson -AuthorDate: Sun Apr 29 13:40:48 2012 +0100 -Commit: Chris Wilson -CommitDate: Sun Apr 29 14:02:17 2012 +0100 - - gstate: Reduce degenerate dash to solid - - If the dash specifies that the pen is always on (i.e. the total of the - off segments is zero), then we can eliminate the dash pattern. - - Signed-off-by: Chris Wilson - - src/cairo-gstate.c | 35 ++++++++++++++++++++++++++++++----- - 1 file changed, 30 insertions(+), 5 deletions(-) - -commit 47368d5e83f95dfed500f81068d7346a93145a20 -Author: Chris Wilson -AuthorDate: Sun Apr 29 14:01:11 2012 +0100 -Commit: Chris Wilson -CommitDate: Sun Apr 29 14:02:17 2012 +0100 - - image: Add a little bit of debugging to show number of boxes being drawn - - Signed-off-by: Chris Wilson - - src/cairo-image-compositor.c | 6 +++--- - 1 file changed, 3 insertions(+), 3 deletions(-) - -commit 0c14ce6dca3031320d2b9fb419aaf4e153d158d6 -Author: Chris Wilson -AuthorDate: Sun Apr 29 13:55:10 2012 +0100 -Commit: Chris Wilson -CommitDate: Sun Apr 29 13:56:43 2012 +0100 - - test: Exercise degenerate dashes that are wholly solid - - Signed-off-by: Chris Wilson - - test/Makefile.sources | 1 + - test/degenerate-solid-dash.c | 69 +++++++++++++++++++++++++++ - test/reference/degenerate-solid-dash.ref.png | Bin 0 -> 358 bytes - 3 files changed, 70 insertions(+) - -commit d2f740ccbd9c5416a2590e3cca888eecf046c162 -Author: Chris Wilson -AuthorDate: Sun Apr 29 12:38:37 2012 +0100 -Commit: Chris Wilson -CommitDate: Sun Apr 29 12:40:10 2012 +0100 - - test: Exercise clip inversion imperfections - - Signed-off-by: Chris Wilson - - test/Makefile.sources | 1 + - test/inverted-clip.c | 56 +++++++++++++++++++++++++++ - test/reference/inverted-clip.base.xfail.png | Bin 0 -> 1293 bytes - test/reference/inverted-clip.traps.xfail.png | Bin 0 -> 1283 bytes - test/reference/inverted-clip.xfail.png | Bin 0 -> 1293 bytes - 5 files changed, 57 insertions(+) - -commit 4a9a6b7efb4abb81b228db8c998a6c9e9f383ba0 -Author: Chris Wilson -AuthorDate: Sun Apr 29 12:22:20 2012 +0100 -Commit: Chris Wilson -CommitDate: Sun Apr 29 12:22:20 2012 +0100 - - Satisfy check-doc-syntax.awk for unimplemented functions - - ./cairo.c (634): ERROR: cairo_set_opacity: missing 'Since' field - ./cairo.c (3578): ERROR: cairo_get_opacity: missing 'Since' field - - Signed-off-by: Chris Wilson - - src/cairo.c | 4 ++++ - 1 file changed, 4 insertions(+) - -commit ec400daf9ec3bbd8403324db7fcdaf175e185e7b -Author: Chris Wilson -AuthorDate: Sat Apr 28 23:15:52 2012 +0100 -Commit: Chris Wilson -CommitDate: Sat Apr 28 23:16:32 2012 +0100 - - image: Avoid overflow when computing lerp spans for a8 - - Reported-by: Benjamin Otte - Signed-off-by: Chris Wilson - - src/cairo-image-compositor.c | 16 ++++++++-------- - 1 file changed, 8 insertions(+), 8 deletions(-) - -commit a18506acf0ca4a5b6f56cc9a8e0ffb3dd0eaabab -Author: Chris Wilson -AuthorDate: Fri Apr 27 22:13:01 2012 +0100 -Commit: Chris Wilson -CommitDate: Fri Apr 27 22:13:01 2012 +0100 - - Update the remaining backends to handle a NULL extents for _cairo_surface_get_source - - Signed-off-by: Chris Wilson - - src/cairo-gl-surface.c | 8 +++++--- - src/cairo-image-surface.c | 8 +++++--- - src/cairo-script-surface.c | 8 +++++--- - src/cairo-xcb-surface.c | 8 +++++--- - src/cairo-xlib-surface.c | 8 +++++--- - 5 files changed, 25 insertions(+), 15 deletions(-) - -commit 7eb33099d34234dcccb8f96caba94b38fa385f16 -Author: Chris Wilson -AuthorDate: Fri Apr 27 12:39:40 2012 +0100 -Commit: Chris Wilson -CommitDate: Fri Apr 27 14:10:50 2012 +0100 - - snapshot: Perform the cow under a mutex - - In order to prevent a race between concurrent destroy and use in another - thread, we need to acquire a reference to the snapshot->target under a - mutex. Whilst we hold that reference, it prevents the internal destroy - mechanism from freeing the memory we are using (if we have a pointer to - the original surface) and the client drops their final reference. - - Oh boy, talk about opening a can of worms... - - Signed-off-by: Chris Wilson - - src/cairo-analysis-surface.c | 12 +++--------- - src/cairo-image-source.c | 33 ++++++++++++++++++++++++++++----- - src/cairo-pattern.c | 4 +--- - src/cairo-pdf-surface.c | 24 ++++++++++++++++-------- - src/cairo-ps-surface.c | 33 +++++++++++++++++++++------------ - src/cairo-script-surface.c | 5 +++-- - src/cairo-surface-snapshot-inline.h | 9 ++++++++- - src/cairo-surface-snapshot-private.h | 2 ++ - src/cairo-surface-snapshot.c | 7 ++++++- - src/cairo-surface-subsurface.c | 3 ++- - src/cairo-surface.c | 5 ++++- - src/cairo-traps-compositor.c | 11 ++--------- - 12 files changed, 96 insertions(+), 52 deletions(-) - -commit 455b4de1fc6be05f985b43c2f8f83eeed2b2a191 -Author: Chris Wilson -AuthorDate: Fri Apr 27 11:41:41 2012 +0100 -Commit: Chris Wilson -CommitDate: Fri Apr 27 11:41:41 2012 +0100 - - image: Allow a snapshot to steal the original memory upon finish - - Signed-off-by: Chris Wilson - - src/cairo-image-surface.c | 18 ++++++++++++++++++ - src/cairo-surface-private.h | 1 + - src/cairo-surface.c | 3 +++ - 3 files changed, 22 insertions(+) - -commit 957a9cc619965178a8927d114fe852034fc2385c -Author: Chris Wilson -AuthorDate: Thu Apr 26 08:54:39 2012 +0100 -Commit: Chris Wilson -CommitDate: Thu Apr 26 08:54:39 2012 +0100 - - image: Fix typo in _blit_spans() - - The height is 'h' not 'y'! - - Signed-off-by: Chris Wilson - - src/cairo-image-compositor.c | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -commit fe428fc7f03316f2577b95f6a4f525bacca09948 -Author: Chris Wilson -AuthorDate: Fri Apr 20 17:30:22 2012 +0100 -Commit: Chris Wilson -CommitDate: Wed Apr 25 20:56:20 2012 +0100 - - xlib: Fix inline conversion for TrueColor PutImage - - Signed-off-by: Chris Wilson - - src/cairo-xlib-surface.c | 3 +-- - 1 file changed, 1 insertion(+), 2 deletions(-) - -commit 9e81c5b737cda9dc539b2cf497c20ac48ddb91ac -Author: Chris Wilson -AuthorDate: Wed Apr 25 20:41:16 2012 +0100 -Commit: Chris Wilson -CommitDate: Wed Apr 25 20:51:20 2012 +0100 - - xlib: Allow applications to create 0x0 surfaces - - Although 0x0 is not a legimate surface size, we do allow applications - the flexibility to reset the size before drawing. As we previously never - checked the size against minimum legal constraints, applications expect - to be able to create seemingly illegal surfaces, and so we must continue - to provide backwards compatibility. - - Many thanks to Pauli Nieminen for trawling through the protocol traces, - diving into the depths of libreoffice and identifying the regression. - - Fixes https://bugs.freedesktop.org/show_bug.cgi?id=49118 (presentation - mode in loimpress is blank). - - Reported-by: Eric Valette - Signed-off-by: Chris Wilson - - src/cairo-xlib-surface.c | 9 ++++++++- - 1 file changed, 8 insertions(+), 1 deletion(-) - -commit f736cd144305f7c9147912f6ec081962b3191e3d -Author: Jeff Mahoney -AuthorDate: Mon Apr 23 22:04:48 2012 +0100 -Commit: Chris Wilson -CommitDate: Mon Apr 23 22:13:57 2012 +0100 - - pdf: Fix wrong allocation in _cairo_pdf_surface_add_source_surface - - _cairo_pdf_surface_add_source_surface allocates unique_id with - size unique_id_length but then copies surface_key.unique_id_length into it. - - This causes e.g. evince to crash predictably while trying to print with: - *** buffer overflow detected ***: evince terminated - - We should be using surface_key.unique_id_length instead. - - Reported-by: Dominique Leuenberger - Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=49089 - Signed-off-by: Jeff Mahoney - - src/cairo-pdf-surface.c | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -commit e6a04c2f6749756bb032e9beb6c2ad0a12f8093d -Author: Alexandros Frantzis -AuthorDate: Mon Apr 23 17:15:31 2012 +0300 -Commit: Chris Wilson -CommitDate: Mon Apr 23 20:21:40 2012 +0100 - - gl: Fix creation of gradient ramps for GLESv2 - - glTexImage2D is not allowed to perform an implicit format conversion - with GLESv2, so fixup the internal format to match the incoming pixel - format. - - src/cairo-gl-gradient.c | 12 +++++++++++- - 1 file changed, 11 insertions(+), 1 deletion(-) - -commit 1ca8c049cad59fcf9355ff091e1eec0471afa444 -Author: Dimiter Stanev -AuthorDate: Mon Apr 23 19:10:44 2012 +0100 -Commit: Chris Wilson -CommitDate: Mon Apr 23 19:10:44 2012 +0100 - - win32: compilation fix for recent private/inline header separation - - src/win32/cairo-win32-display-surface.c | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -commit abedc6b46ad283f896e078479174312cb87e6700 -Author: Adrian Johnson -AuthorDate: Mon Apr 23 13:20:47 2012 +0930 -Commit: Adrian Johnson -CommitDate: Mon Apr 23 13:22:16 2012 +0930 - - ps: support all image types - - If the image is not rgb24/argb32/a8/a1, create a new image with the - same CAIRO_CONTENT and paint image to the new image. - - src/cairo-ps-surface.c | 41 +++++++++++++++++++++++++++++++++++++---- - 1 file changed, 37 insertions(+), 4 deletions(-) - -commit 33f9e433eef13a2b39a8213c6997399f3a5896a8 -Author: Adrian Johnson -AuthorDate: Mon Apr 23 13:07:18 2012 +0930 -Commit: Adrian Johnson -CommitDate: Mon Apr 23 13:21:52 2012 +0930 - - pdf: support all image types - - If the image is not rgb24/argb32/a8/a1, create a new image with the - same CAIRO_CONTENT and paint image to the new image. - - src/cairo-pdf-surface.c | 41 +++++++++++++++++++++++++++++++---------- - 1 file changed, 31 insertions(+), 10 deletions(-) - -commit c0b523eb652b2c4ba41cb27132d46ad9211b5df4 -Author: Chris Wilson -AuthorDate: Sat Apr 21 10:16:30 2012 +0100 -Commit: Chris Wilson -CommitDate: Sat Apr 21 10:18:26 2012 +0100 - - stroke(boxes): Convert the dash step back into device units before incrementing - - Reported-by: Carlos Garcia Campos - Signed-off-by: Chris Wilson - - src/cairo-path-stroke-boxes.c | 2 +- - .../rectilinear-dash-scale-unaligned.ref.png | Bin 5010 -> 3738 bytes - .../rectilinear-dash-scale-unaligned.traps.ref.png | Bin 4552 -> 3289 bytes - test/reference/rectilinear-dash-scale.ref.png | Bin 921 -> 651 bytes - 4 files changed, 1 insertion(+), 1 deletion(-) - -commit 99f3fea6d92fab684b145b2eb62fc7e6705aca73 -Author: Chris Wilson -AuthorDate: Thu Apr 19 17:53:11 2012 +0100 -Commit: Chris Wilson -CommitDate: Thu Apr 19 17:53:11 2012 +0100 - - gl: Uses the inline clip function, so update its include - - Fixes build from 0770dda52be9c1bf464a84cb5566ef46d7e9df5a. - - Signed-off-by: Chris Wilson - - src/cairo-gl-msaa-compositor.c | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -commit 0046967224640c0a390b4a7b376bbd631ed32a5c -Author: Chris Wilson -AuthorDate: Thu Apr 19 16:12:55 2012 +0100 -Commit: Chris Wilson -CommitDate: Thu Apr 19 16:12:55 2012 +0100 - - dash: Increment dash_remain by the next segment to reduce accumulation errors - - Signed-off-by: Chris Wilson - - src/cairo-stroke-dash.c | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -commit 5e39a8098b88b2e8d25eb46c6bbe8656c9e0260c -Author: Chris Wilson -AuthorDate: Thu Apr 19 15:48:01 2012 +0100 -Commit: Chris Wilson -CommitDate: Thu Apr 19 15:48:01 2012 +0100 - - dash: Use a epsilon compare for stepping the dash - - Due to rounding errors that may creep in comparing against 0.0 is - dangerous and may result in an infinite loop whilst generating dashes - that consumes all memory. - - Reported-and-tested-by: Uli Schlachter - Signed-off-by: Chris Wilson - - src/cairo-fixed-private.h | 2 ++ - src/cairo-stroke-dash.c | 2 +- - 2 files changed, 3 insertions(+), 1 deletion(-) - -commit 57cfdfd9796531a576060e9304715920e0fdb8fe -Author: Chris Wilson -AuthorDate: Thu Apr 19 11:59:54 2012 +0100 -Commit: Chris Wilson -CommitDate: Thu Apr 19 13:17:29 2012 +0100 - - Split cairo-list into struct+inlines - - References: https://bugs.freedesktop.org/show_bug.cgi?id=48577 - Signed-off-by: Chris Wilson - - src/Makefile.sources | 1 + - src/cairo-botor-scan-converter.c | 2 +- - src/cairo-gstate.c | 1 + - src/cairo-list-inline.h | 209 +++++++++++++++++++++++++++++++++++++ - src/cairo-list-private.h | 167 ----------------------------- - src/cairo-observer.c | 2 + - src/cairo-path-fixed.c | 1 + - src/cairo-pattern-inline.h | 2 + - src/cairo-pattern.c | 1 + - src/cairo-ps-surface.c | 1 + - src/cairo-rtree-private.h | 2 +- - src/cairo-scaled-font.c | 1 + - src/cairo-script-surface.c | 2 +- - src/cairo-surface-observer.c | 1 + - src/cairo-surface.c | 1 + - src/cairo-xcb-connection.c | 2 +- - src/cairo-xcb-screen.c | 1 + - src/cairo-xcb-shm.c | 1 + - src/cairo-xcb-surface-render.c | 1 + - src/cairo-xcb-surface.c | 1 + - src/cairo-xlib-display.c | 1 + - src/cairo-xlib-render-compositor.c | 1 + - src/cairo-xlib-screen.c | 1 + - src/cairo-xlib-surface.c | 1 + - src/cairo-xlib-xcb-surface.c | 1 + - 25 files changed, 234 insertions(+), 171 deletions(-) - -commit df62accbda19276c68753e799a32443b47d4e939 -Author: Chris Wilson -AuthorDate: Thu Apr 19 11:59:54 2012 +0100 -Commit: Chris Wilson -CommitDate: Thu Apr 19 13:17:29 2012 +0100 - - Split cairo-surface-subsurface-private into struct+inlines - - References: https://bugs.freedesktop.org/show_bug.cgi?id=48577 - Signed-off-by: Chris Wilson - - src/Makefile.sources | 1 + - src/cairo-analysis-surface.c | 2 +- - src/cairo-cogl-surface.c | 2 +- - src/cairo-gl-operand.c | 2 +- - src/cairo-paginated-surface.c | 2 +- - src/cairo-surface-observer.c | 2 +- - src/cairo-surface-subsurface-inline.h | 72 ++++++++++++++++++++++++++++++++++ - src/cairo-surface-subsurface-private.h | 32 +-------------- - src/cairo-xlib-source.c | 2 +- - 9 files changed, 80 insertions(+), 37 deletions(-) - -commit 590202dbfba709cfdd8ad3c241e7af06b3c542e9 -Author: Chris Wilson -AuthorDate: Thu Apr 19 11:59:54 2012 +0100 -Commit: Chris Wilson -CommitDate: Thu Apr 19 13:17:29 2012 +0100 - - Split cairo-error-private into struct+inlines - - References: https://bugs.freedesktop.org/show_bug.cgi?id=48577 - Signed-off-by: Chris Wilson - - src/Makefile.sources | 1 + - src/cairo-error-inline.h | 52 +++++++++++++++++++++++++++++++++++++++++++++++ - src/cairo-error-private.h | 7 ------- - 3 files changed, 53 insertions(+), 7 deletions(-) - -commit 2e7d60e0a29494d94a05205ec83f3dae2041811f -Author: Chris Wilson -AuthorDate: Thu Apr 19 11:59:54 2012 +0100 -Commit: Chris Wilson -CommitDate: Thu Apr 19 12:55:44 2012 +0100 - - Split cairo-pattern-private into struct+inlines - - References: https://bugs.freedesktop.org/show_bug.cgi?id=48577 - Signed-off-by: Chris Wilson - - src/Makefile.sources | 1 + - src/cairo-image-source.c | 2 +- - src/cairo-mask-compositor.c | 2 +- - src/cairo-pattern-inline.h | 63 ++++++++++++++++++++++++++++++++++++++++++++ - src/cairo-pattern-private.h | 20 -------------- - src/cairo-spans-compositor.c | 2 +- - src/cairo-traps-compositor.c | 2 +- - src/cairo-xlib-source.c | 2 +- - 8 files changed, 69 insertions(+), 25 deletions(-) - -commit 306117ea7c69f9125fa062e4c5e5f9086b98d832 -Author: Chris Wilson -AuthorDate: Thu Apr 19 11:59:54 2012 +0100 -Commit: Chris Wilson -CommitDate: Thu Apr 19 12:51:03 2012 +0100 - - Split cairo-recording-surface-private into struct+inlines - - References: https://bugs.freedesktop.org/show_bug.cgi?id=48577 - Signed-off-by: Chris Wilson - - src/Makefile.sources | 1 + - src/cairo-beos-surface.cpp | 1 + - src/cairo-cogl-surface.c | 2 +- - src/cairo-gl-surface-legacy.c | 1 + - src/cairo-image-surface-inline.h | 82 +++++++++++++++++++++++++++++++++++++++ - src/cairo-image-surface-private.h | 35 ----------------- - src/cairo-image-surface.c | 10 ++--- - src/cairo-skia-surface.cpp | 1 + - src/cairo-surface.c | 2 +- - src/cairo-tee-surface.c | 2 +- - src/drm/cairo-drm-surface.c | 1 + - src/skia/cairo-skia-context.cpp | 1 + - 12 files changed, 96 insertions(+), 43 deletions(-) - -commit 8653c2692e684a60370b99e545123ba2a7b00bc8 -Author: Chris Wilson -AuthorDate: Thu Apr 19 11:59:54 2012 +0100 -Commit: Chris Wilson -CommitDate: Thu Apr 19 12:46:34 2012 +0100 - - Split cairo-recording-surface-private into struct+inlines - - References: https://bugs.freedesktop.org/show_bug.cgi?id=48577 - Signed-off-by: Chris Wilson - - src/Makefile.sources | 2 + - src/cairo-analysis-surface.c | 4 +- - src/cairo-image-source.c | 2 +- - src/cairo-pattern.c | 4 +- - src/cairo-pdf-surface.c | 2 +- - src/cairo-ps-surface.c | 2 +- - src/cairo-recording-surface-inline.h | 68 ++++++++++++++++++++++++++++++++ - src/cairo-recording-surface-private.h | 26 ------------ - src/cairo-recording-surface.c | 2 +- - src/cairo-script-surface.c | 4 +- - src/cairo-spans-compositor.c | 2 +- - src/cairo-surface-snapshot-inline.h | 2 +- - src/cairo-surface-snapshot-private.h | 18 --------- - src/cairo-surface-snapshot.c | 2 +- - src/cairo-svg-surface.c | 2 +- - src/cairo-tee-surface.c | 2 +- - src/cairo-traps-compositor.c | 4 +- - src/cairo-vg-surface.c | 2 +- - src/cairo-xcb-surface-render.c | 4 +- - src/cairo-xlib-source.c | 2 +- - src/cairo-xml-surface.c | 2 +- - src/win32/cairo-win32-printing-surface.c | 2 +- - 22 files changed, 93 insertions(+), 67 deletions(-) - -commit 3266f936dee59b7c3a990e518899a72d0e103f62 -Author: Chris Wilson -AuthorDate: Thu Apr 19 11:59:54 2012 +0100 -Commit: Chris Wilson -CommitDate: Thu Apr 19 12:41:20 2012 +0100 - - Split cairo-surface-snapshot-private into struct+inlines - - References: https://bugs.freedesktop.org/show_bug.cgi?id=48577 - Signed-off-by: Chris Wilson - - src/cairo-surface-snapshot-inline.h | 59 +++++++++++++++++++++++++++++++++++++ - 1 file changed, 59 insertions(+) - -commit 356c7cb2e3da8d95a4bc6c40d0b1895657fd59ce -Author: Chris Wilson -AuthorDate: Thu Apr 19 11:59:54 2012 +0100 -Commit: Chris Wilson -CommitDate: Thu Apr 19 12:35:20 2012 +0100 - - Split cairo-surface-observer-private into struct+inlines - - References: https://bugs.freedesktop.org/show_bug.cgi?id=48577 - Signed-off-by: Chris Wilson - - src/Makefile.sources | 1 + - src/cairo-surface-observer-inline.h | 59 ++++++++++++++++++++++++++++++++++++ - src/cairo-surface-observer-private.h | 21 +------------ - src/cairo-surface-observer.c | 1 + - 4 files changed, 62 insertions(+), 20 deletions(-) - -commit f3623cf0220aa32c12c3ba3988a5dfef6605d6b3 -Author: Chris Wilson -AuthorDate: Thu Apr 19 11:59:54 2012 +0100 -Commit: Chris Wilson -CommitDate: Thu Apr 19 12:27:44 2012 +0100 - - Split cairo-surface-private into struct+inlines - - References: https://bugs.freedesktop.org/show_bug.cgi?id=48577 - Signed-off-by: Chris Wilson - - src/Makefile.sources | 1 + - src/cairo-surface-inline.h | 52 ++++++++++++++++++++++++++++++++++ - src/cairo-surface-private.h | 9 ------ - src/win32/cairo-win32-gdi-compositor.c | 1 + - 4 files changed, 54 insertions(+), 9 deletions(-) - -commit 6736d0bf000a42ce426b45c923d7066bf0a27089 -Author: Chris Wilson -AuthorDate: Thu Apr 19 11:59:54 2012 +0100 -Commit: Chris Wilson -CommitDate: Thu Apr 19 12:25:42 2012 +0100 - - Split cairo-contour-privates into struct+inlines - - References: https://bugs.freedesktop.org/show_bug.cgi?id=48577 - Signed-off-by: Chris Wilson - - src/Makefile.sources | 1 + - src/cairo-contour-inline.h | 80 +++++++++++++++++++++++++++++++++++++++++ - src/cairo-contour-private.h | 35 ------------------ - src/cairo-contour.c | 1 + - src/cairo-path-stroke-polygon.c | 1 + - 5 files changed, 83 insertions(+), 35 deletions(-) - -commit afa180935bedb5c3db06706d893b2bcd89b2215b -Author: Chris Wilson -AuthorDate: Thu Apr 19 11:59:54 2012 +0100 -Commit: Chris Wilson -CommitDate: Thu Apr 19 12:22:07 2012 +0100 - - Split cairo-combsort-privates into struct+inlines - - References: https://bugs.freedesktop.org/show_bug.cgi?id=48577 - Signed-off-by: Chris Wilson - - src/Makefile.sources | 2 +- - src/cairo-bentley-ottmann-rectangular.c | 2 +- - src/cairo-bentley-ottmann-rectilinear.c | 2 +- - src/cairo-bentley-ottmann.c | 2 +- - src/cairo-botor-scan-converter.c | 2 +- - src/cairo-boxes-intersect.c | 2 +- - src/cairo-combsort-inline.h | 94 +++++++++++++++++++++++++++++++++ - src/cairo-combsort-private.h | 94 --------------------------------- - src/cairo-contour.c | 2 +- - src/cairo-polygon-intersect.c | 2 +- - src/cairo-polygon-reduce.c | 2 +- - src/cairo-recording-surface.c | 2 +- - src/cairo-rectangular-scan-converter.c | 2 +- - src/cairo-surface-observer.c | 2 +- - 14 files changed, 106 insertions(+), 106 deletions(-) - -commit 0770dda52be9c1bf464a84cb5566ef46d7e9df5a -Author: Chris Wilson -AuthorDate: Thu Apr 19 11:59:54 2012 +0100 -Commit: Chris Wilson -CommitDate: Thu Apr 19 12:19:19 2012 +0100 - - Split cairo-clip-privates into struct+inlines - - References: https://bugs.freedesktop.org/show_bug.cgi?id=48577 - Signed-off-by: Chris Wilson - - src/Makefile.sources | 1 + - src/cairo-clip-boxes.c | 1 + - src/cairo-clip-inline.h | 83 ++++++++++++++++++++++++++++++++++ - src/cairo-clip-polygon.c | 1 + - src/cairo-clip-private.h | 42 ----------------- - src/cairo-clip.c | 1 + - src/cairo-composite-rectangles.c | 1 + - src/cairo-default-context.c | 1 + - src/cairo-gstate.c | 1 + - src/cairo-mask-compositor.c | 1 + - src/cairo-spans-compositor.c | 1 + - src/cairo-surface-clipper.c | 1 + - src/cairo-surface-offset.c | 1 + - src/cairo-surface-subsurface.c | 1 + - src/cairo-surface-wrapper.c | 1 + - src/cairo-surface.c | 1 + - src/cairo-traps-compositor.c | 1 + - src/cairo-xcb-surface-render.c | 1 + - src/cairo-xlib-core-compositor.c | 1 + - src/win32/cairo-win32-gdi-compositor.c | 1 + - 20 files changed, 101 insertions(+), 42 deletions(-) - -commit e9c9e28cd19df8a5875f62fc74087500182399f0 -Author: Chris Wilson -AuthorDate: Thu Apr 19 11:59:54 2012 +0100 -Commit: Chris Wilson -CommitDate: Thu Apr 19 12:16:53 2012 +0100 - - Split cairo-box-privates into struct+inlines - - References: https://bugs.freedesktop.org/show_bug.cgi?id=48577 - Signed-off-by: Chris Wilson - - src/Makefile.sources | 2 +- - src/cairo-analysis-surface.c | 2 +- - src/cairo-box-inline.h | 121 +++++++++++++++++++++++++++++++++++++++ - src/cairo-box-private.h | 121 --------------------------------------- - src/cairo-boxes.c | 2 +- - src/cairo-clip-boxes.c | 2 +- - src/cairo-cogl-surface.c | 2 +- - src/cairo-path-bounds.c | 2 +- - src/cairo-path-fixed.c | 2 +- - src/cairo-path-stroke-boxes.c | 2 +- - src/cairo-path-stroke-polygon.c | 2 +- - src/cairo-path-stroke-tristrip.c | 2 +- - src/cairo-path-stroke.c | 2 +- - src/cairo-rectangle.c | 2 +- - src/cairo-spline.c | 2 +- - src/cairo-traps-compositor.c | 2 +- - 16 files changed, 135 insertions(+), 135 deletions(-) - -commit f830268b952ecd06bf3adf7bf62dc4b5c4139e5c -Author: Chris Wilson -AuthorDate: Thu Apr 19 12:04:01 2012 +0100 -Commit: Chris Wilson -CommitDate: Thu Apr 19 12:14:26 2012 +0100 - - boxes: Remove unused inline function - - Signed-off-by: Chris Wilson - - src/cairo-boxes-private.h | 8 -------- - 1 file changed, 8 deletions(-) - -commit 9417fec04a172a7c44be38c1b3d032c3fee4f0d6 -Author: Chris Wilson -AuthorDate: Wed Apr 18 20:44:43 2012 +0100 -Commit: Chris Wilson -CommitDate: Thu Apr 19 10:51:39 2012 +0100 - - image: Split inline SRC composition - - Currently we construct a mask for the entire line and try to process it - in one call to pixman (two without the LERP operator). An alternative - approach is split the row into separate composite operations for the - clear (which we can skip), fully opaque and partial spans. - - As the source operator is typically mostly opaque or clear, this is a - good win as we are able to utilise more fast paths. In the worst case, - it degrades to the old method of constructing a whole mask for a row. - It may reduce performance for having to process lots of spans though - (this is where the pixman spans interface should help). However, such - geometry is rare and typically handled elsewhere. - - And the existing code has a bug where it was clearing the destination - for clear regions of the mask outside of the spans. - - Signed-off-by: Chris Wilson - - src/cairo-image-compositor.c | 154 +++++++++++++++++++++++++++---------------- - 1 file changed, 96 insertions(+), 58 deletions(-) - -commit 70fc52cb80f21fff0ba960236f24b997692cce64 -Author: Chris Wilson -AuthorDate: Wed Apr 18 15:24:41 2012 +0100 -Commit: Chris Wilson -CommitDate: Wed Apr 18 15:29:00 2012 +0100 - - stroke(boxes): Apply user scale factors to dash segments - - Fixes tests/rectilinear-dash-scale* - - Reported-by: Guillaume Ayoub - Reported-by: Carlos Garcia Campos - Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=48818 - Signed-off-by: Chris Wilson - - src/cairo-path-stroke-boxes.c | 11 +++++++---- - 1 file changed, 7 insertions(+), 4 deletions(-) - -commit 5ff32f70c14d89cb776a1a9da91089c258dbbf68 -Author: Chris Wilson -AuthorDate: Wed Apr 18 15:20:57 2012 +0100 -Commit: Chris Wilson -CommitDate: Wed Apr 18 15:29:00 2012 +0100 - - test: Add rectilinear-dash-scale - - Exercise rectilinear dashes under a non-uniform scale factors. - - References: https://bugs.freedesktop.org/show_bug.cgi?id=48818 - Signed-off-by: Chris Wilson - - test/Makefile.sources | 1 + - test/rectilinear-dash-scale.c | 196 +++++++++++++++++++++ - .../rectilinear-dash-scale-unaligned.ref.png | Bin 0 -> 5010 bytes - .../rectilinear-dash-scale-unaligned.traps.ref.png | Bin 0 -> 4552 bytes - test/reference/rectilinear-dash-scale.ref.png | Bin 0 -> 921 bytes - 5 files changed, 197 insertions(+) - -commit 4f125a1bd069095f3a97f009e7d7af2681353fb1 -Author: Nis Martensen -AuthorDate: Thu Apr 12 23:20:59 2012 +0200 -Commit: Nis Martensen -CommitDate: Mon Apr 16 22:11:36 2012 +0200 - - typo - - doc/public/check-doc-coverage.sh | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -commit 905a88bf517bdc1b110587551ea7f1739bd90627 -Author: Nis Martensen -AuthorDate: Fri Apr 13 20:22:59 2012 +0200 -Commit: Uli Schlachter -CommitDate: Mon Apr 16 21:55:18 2012 +0200 - - doc: add missing chapters - - Signed-off-by: Uli Schlachter - - doc/public/cairo-docs.xml | 3 +++ - 1 file changed, 3 insertions(+) - -commit 80d1e68bb31be030f8102f28545bb622fa2050d8 -Author: Nis Martensen -AuthorDate: Fri Apr 13 20:36:03 2012 +0200 -Commit: Uli Schlachter -CommitDate: Mon Apr 16 21:55:18 2012 +0200 - - doc: do not use / in section title - - The Title: field is used to determine the file name of the generated - html. Due to the slash a subdirectory is created and all relative links - in the generated file are broken. - - Use a hyphen instead. - - Signed-off-by: Uli Schlachter - - src/cairo-xlib-surface.c | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -commit 40d6c580cd029f3d330ba28a7728ff36498920cb -Author: Javier Jardón -AuthorDate: Tue Sep 13 16:30:10 2011 +0100 -Commit: Chris Wilson -CommitDate: Sat Apr 14 15:06:24 2012 +0100 - - configure.ac: Do not generate template files when building docs - - It's not needed as all the api documentation is inline - - configure.ac | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -commit 7b25b2eb4b83f411935e51ed398cebfb3a9c3c59 -Author: Javier Jardón -AuthorDate: Tue Sep 13 16:20:12 2011 +0100 -Commit: Chris Wilson -CommitDate: Sat Apr 14 15:04:19 2012 +0100 - - autogen.sh: User autoreconf instead custom script - - autogen.sh | 194 +++++-------------------------------------------------------- - 1 file changed, 14 insertions(+), 180 deletions(-) - -commit aa90a8f84f7dff67d57a8c0863331bf04e3b546e -Author: Javier Jardón -AuthorDate: Tue Sep 13 16:15:49 2011 +0100 -Commit: Chris Wilson -CommitDate: Sat Apr 14 15:04:06 2012 +0100 - - configure.ac: generate xz tarballs by default - - build/Makefile.am.releasing | 2 +- - configure.ac | 4 ++-- - 2 files changed, 3 insertions(+), 3 deletions(-) - -commit 3616a5f992e6d12fc7f005b7b67ab2101d248470 -Author: Javier Jardón -AuthorDate: Tue Sep 13 16:13:41 2011 +0100 -Commit: Chris Wilson -CommitDate: Sat Apr 14 15:02:10 2012 +0100 - - configure.ac: Update autotools configuration - - Do not use autoconf deprecated macros - Use new libtool syntax - honor aclocal flags - - Makefile.am | 2 +- - configure.ac | 16 +++++++++++----- - 2 files changed, 12 insertions(+), 6 deletions(-) - -commit 93d42e82a43a0e2f531331b127ec82d8a3b6eded -Author: Chris Wilson -AuthorDate: Sat Apr 14 14:52:42 2012 +0100 -Commit: Chris Wilson -CommitDate: Sat Apr 14 14:54:07 2012 +0100 - - Revert accidental push of ps debugging API. - - This reverts commits - 6ad8c96fd81e06cea6ada4a83e7c5614f150f914, - a3f97d1d2e77a0fee4ca03d5dc9968952a440561, - 25abe582982caeb07d1e0af4acca53bb110a33bf - - I should know better by now than to push without checking for outstanding - changes. - - boilerplate/cairo-boilerplate-pdf.c | 19 ++++++++++----- - boilerplate/cairo-boilerplate-ps.c | 40 +++++++++++++++++++++++++------ - src/cairo-pdf-surface.c | 21 ---------------- - src/cairo-pdf.h | 5 ---- - src/cairo-ps-surface.c | 48 ------------------------------------- - src/cairo-ps.h | 10 -------- - 6 files changed, 46 insertions(+), 97 deletions(-) - -commit d486ea30f1a58640a1178de74f705a73845b1cda -Author: Marcus Meissner -AuthorDate: Sat Apr 14 14:47:02 2012 +0100 -Commit: Chris Wilson -CommitDate: Sat Apr 14 14:48:32 2012 +0100 - - configure: Conditionally include -flto - - As some systems fail to create working binaries with when linked with - lto, perform a check during configure. - - Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=39114 - - build/configure.ac.warnings | 13 ++++++++++++- - 1 file changed, 12 insertions(+), 1 deletion(-) - -commit 25abe582982caeb07d1e0af4acca53bb110a33bf -Author: Chris Wilson -AuthorDate: Thu Apr 12 10:51:38 2012 +0100 -Commit: Chris Wilson -CommitDate: Thu Apr 12 12:22:17 2012 +0100 - - pdf (debug API): Export the ability to force fallbacks - - We need to occasionally force fallbacks whilst testing the PDF - output, so export a debug interface to do so in order to avoid poking - around inside cairo internals. - - References: https://bugs.freedesktop.org/show_bug.cgi?id=48577 - Signed-off-by: Chris Wilson - - boilerplate/cairo-boilerplate-pdf.c | 19 ++++++------------- - src/cairo-pdf-surface.c | 21 +++++++++++++++++++++ - src/cairo-pdf.h | 5 +++++ - 3 files changed, 32 insertions(+), 13 deletions(-) - -commit a3f97d1d2e77a0fee4ca03d5dc9968952a440561 -Author: Chris Wilson -AuthorDate: Thu Apr 12 10:51:38 2012 +0100 -Commit: Chris Wilson -CommitDate: Thu Apr 12 12:22:15 2012 +0100 - - ps (debug API): Export the ability to force fallbacks - - We need to occasionally force fallbacks whilst testing the PostScript - output, so export a debug interface to do so in order to avoid poking - around inside cairo internals. - - References: https://bugs.freedesktop.org/show_bug.cgi?id=48577 - Signed-off-by: Chris Wilson - - boilerplate/cairo-boilerplate-ps.c | 20 ++++++-------------- - src/cairo-ps-surface.c | 21 +++++++++++++++++++++ - src/cairo-ps.h | 3 +++ - 3 files changed, 30 insertions(+), 14 deletions(-) - -commit 6ad8c96fd81e06cea6ada4a83e7c5614f150f914 -Author: Chris Wilson -AuthorDate: Thu Apr 12 10:51:38 2012 +0100 -Commit: Chris Wilson -CommitDate: Thu Apr 12 12:21:22 2012 +0100 - - ps (API): Export the ability to set the creation date of the surface - - A PostScript surface embeds a CreationDate comment into its document - description pre-amble. Normally this is set to the time the surface is - written out, except we set this to a constant value in the boilerplate - for the purposes of mimicking a reference file. It may also be useful - for external applications, so make it a public export. - - References: https://bugs.freedesktop.org/show_bug.cgi?id=48577 - Signed-off-by: Chris Wilson - - boilerplate/cairo-boilerplate-ps.c | 20 +------------------- - src/cairo-ps-surface.c | 27 +++++++++++++++++++++++++++ - src/cairo-ps.h | 7 +++++++ - 3 files changed, 35 insertions(+), 19 deletions(-) - -commit bf5adaf3942388e58ad3bda30173e53b214df885 -Author: Nis Martensen -AuthorDate: Tue Apr 10 22:09:23 2012 +0200 -Commit: Uli Schlachter -CommitDate: Thu Apr 12 10:23:28 2012 +0200 - - doc: add returns statement to cairo_surface_supports_mime_type - - Signed-off-by: Uli Schlachter - - src/cairo-surface.c | 3 +++ - 1 file changed, 3 insertions(+) - -commit a6a5b1fd0b0e32bc03e4742a0441d03e352ea8bc -Author: Nis Martensen -AuthorDate: Tue Apr 10 22:02:54 2012 +0200 -Commit: Uli Schlachter -CommitDate: Thu Apr 12 10:23:27 2012 +0200 - - doc: no separate cairo-xcb-xrender section - - There is already a cairo-xcb section and there are no symbols that - should be documented in an extra -xrender section. It is not mentioned - in cairo-sections.txt either. So simply delete it. - - Signed-off-by: Uli Schlachter - - src/cairo-xcb-surface-render.c | 13 ------------- - 1 file changed, 13 deletions(-) - -commit c04f5a353f0b05326915f370b05480eeda27ebac -Author: Nis Martensen -AuthorDate: Sun Mar 11 00:36:58 2012 +0100 -Commit: Uli Schlachter -CommitDate: Thu Apr 12 10:23:26 2012 +0200 - - add unused symbols to sections doc - - Signed-off-by: Uli Schlachter - - doc/public/cairo-sections.txt | 32 +++++++++++++++++++++++++++++++- - 1 file changed, 31 insertions(+), 1 deletion(-) - -commit 07fc63676dfdaa57ed919ad7be8f59c97c615473 -Author: Uli Schlachter -AuthorDate: Wed Apr 11 21:37:55 2012 +0200 -Commit: Uli Schlachter -CommitDate: Wed Apr 11 21:37:55 2012 +0200 - - xlib: Disable fallback compositor with xlib-xcb - - When xlib-xcb is enabled, this is just dead code which is never used. Thus, this - shouldn't hurt. However, this does include cairo-xlib-private.h. Shouldn't be a - problem? Well, that header contains static inline functions which some compiler - on Solaris will emit even when they are unused. - - This brings us to the real problem: That static inline function refers to a - function which isn't compiled with xlib-xcb and thus linking fails with - undefined symbols. - - This can be reproduced with GCC by adding a call to - _cairo_xlib_screen_put_gc(NULL, NULL, 0, 0); to - _cairo_xlib_fallback_compositor_get. - - Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=48489 - Signed-off-by: Uli Schlachter - - src/cairo-xlib-fallback-compositor.c | 4 ++++ - 1 file changed, 4 insertions(+) - -commit 09de481ce5f6ed1c38c0d5bf3af7c60642c4c947 -Author: Gilles Espinasse -AuthorDate: Sat Apr 7 23:09:51 2012 +0200 -Commit: Uli Schlachter -CommitDate: Tue Apr 10 17:46:13 2012 +0200 - - Cosmetic configure fix - - 'how to allow undefined symbols in shared libraries' test should use CAIRO_CC_TRY_FLAG_SILENT or configure display is a bit out of order like this - - checking how to allow undefined symbols in shared libraries used by test suite... checking whether gcc supports -Wl,--allow-shlib-undefined... yes - -Wl,--allow-shlib-undefined - - Signed-off-by: Gilles Espinasse - Signed-off-by: Uli Schlachter - - build/configure.ac.warnings | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -commit c7b86ab97be1d3d3ccf43b652832f148a2fcf290 -Author: Adrian Johnson -AuthorDate: Tue Apr 10 22:34:05 2012 +0930 -Commit: Adrian Johnson -CommitDate: Tue Apr 10 22:34:05 2012 +0930 - - any2ppm: fix missing enumeration warning - - test/any2ppm.c | 1 + - 1 file changed, 1 insertion(+) - -commit b74e8ebd50da443537a031132ebc86728f79e5f5 -Author: Maarten Bosmans -AuthorDate: Mon Apr 9 21:33:52 2012 +0200 -Commit: Chris Wilson -CommitDate: Tue Apr 10 12:09:02 2012 +0100 - - Add _cairo_win32_print_gdi_error to boilerplate code - - This function is not exported in libcairo, so can't be used from the - library. - - boilerplate/cairo-boilerplate-win32-printing.c | 30 ++++++++++++++++++++++++-- - 1 file changed, 28 insertions(+), 2 deletions(-) - -commit 0bb3e0769a49f639ae86a9577394fc51709441f5 -Author: Maarten Bosmans -AuthorDate: Mon Apr 9 21:33:51 2012 +0200 -Commit: Chris Wilson -CommitDate: Tue Apr 10 12:08:24 2012 +0100 - - test: Only use alarm() when SIGALRM is also defined - - On some platforms (mingw) the alarm() configure check succeeds, but the - alarm function doesn't actually work. - - test/cairo-test.c | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -commit 9fcbe25c2dcf831783bb0fd20af9754c0b5c409b -Author: Maarten Bosmans -AuthorDate: Mon Apr 9 21:33:50 2012 +0200 -Commit: Chris Wilson -CommitDate: Tue Apr 10 12:07:49 2012 +0100 - - Protect code using dlfcn.h with CAIRO_HAS_DLSYM - - configure.ac | 1 + - util/Makefile.am | 4 ++++ - 2 files changed, 5 insertions(+) - -commit 3f32419257bb2e380dd63a3b1a850b512a617776 -Author: Maarten Bosmans -AuthorDate: Mon Apr 9 21:33:49 2012 +0200 -Commit: Chris Wilson -CommitDate: Tue Apr 10 12:07:34 2012 +0100 - - test: Give some functions in any2ppm a prefix - - The function name _write is too generic and can clash with already - defined functions. - - test/any2ppm.c | 14 +++++++------- - 1 file changed, 7 insertions(+), 7 deletions(-) - -commit 038e4991912656a3239ca82d60056ca129016ba6 -Author: Adrian Johnson -AuthorDate: Mon Apr 9 18:01:44 2012 +0930 -Commit: Adrian Johnson -CommitDate: Mon Apr 9 21:27:08 2012 +0930 - - pdf: avoid unnecessary use of patterns in mask groups - - src/cairo-pdf-surface.c | 188 +++++++++++++++++++++++++++--------------------- - 1 file changed, 106 insertions(+), 82 deletions(-) - -commit 2007f0eccec5df72b7069fc43878fa0c1ce89527 -Author: Adrian Johnson -AuthorDate: Mon Apr 9 20:03:15 2012 +0930 -Commit: Adrian Johnson -CommitDate: Mon Apr 9 21:27:08 2012 +0930 - - test: disable subsurface tests with vector backends - - due to a subsurface snapshot bug causing recursion in the pdf backend. - - test/subsurface-image-repeat.c | 2 +- - test/subsurface-modify-child.c | 2 +- - test/subsurface-modify-parent.c | 2 +- - test/subsurface-outside-target.c | 2 +- - test/subsurface-pad.c | 2 +- - test/subsurface-reflect.c | 2 +- - test/subsurface-repeat.c | 2 +- - test/subsurface-scale.c | 2 +- - test/subsurface-similar-repeat.c | 2 +- - test/subsurface.c | 2 +- - 10 files changed, 10 insertions(+), 10 deletions(-) - -commit 7cb5053c0694992320b5f7ea3b91ea497431813b -Author: Chris Wilson -AuthorDate: Mon Apr 9 12:49:20 2012 +0100 -Commit: Chris Wilson -CommitDate: Mon Apr 9 12:49:20 2012 +0100 - - analysis: Apply the integer translation to the bbox as well - - The bbox is used to compute the ink extents (and so the pattern extents - of a recording surface) and if given an integer translation we failed to - transform the bbox into the target space. - - Fixes mask (pdf). - - Signed-off-by: Chris Wilson - - src/cairo-analysis-surface.c | 8 ++++++++ - 1 file changed, 8 insertions(+) - -commit de61681574eb7d6e0e497ea7f25797e3d9b20ac4 -Author: Chris Wilson -AuthorDate: Mon Apr 9 12:47:34 2012 +0100 -Commit: Chris Wilson -CommitDate: Mon Apr 9 12:47:34 2012 +0100 - - build: Disable -Wset-but-unused-variable - - This is too noisy in the current build, and masking more important - warnings. - - Signed-off-by: Chris Wilson - - build/configure.ac.warnings | 5 +++++ - 1 file changed, 5 insertions(+) - -commit 113ec6bf0c8ed1ff12293d1ed2a2de9bd5b9904b -Author: Chris Wilson -AuthorDate: Sun Apr 8 17:58:13 2012 +0100 -Commit: Chris Wilson -CommitDate: Sun Apr 8 18:02:05 2012 +0100 - - traps: Clip the trapezoid extents against the clip extents - - Just in case the clip polygon turns out to be much larger than the - operation extents (silly us for not reducing it correctly) and lead to - catastrophe, such as: - - Program received signal SIGSEGV, Segmentation fault. - pixman_fill_sse2 (bits=, stride=4, bpp=8, x=0, y=0, - width=3, height=-34811, data=0) at pixman-sse2.c:3369 - 3369 *(uint16_t *)d = data; - - Signed-off-by: Chris Wilson - - src/cairo-traps-compositor.c | 9 +++++++-- - 1 file changed, 7 insertions(+), 2 deletions(-) - -commit 6f28f0b33cb12f3b2dd48c87da0018bd00c17107 -Author: Chris Wilson -AuthorDate: Sun Apr 8 11:28:59 2012 +0100 -Commit: Chris Wilson -CommitDate: Sun Apr 8 11:30:56 2012 +0100 - - stroke: Fix misuse of half_line_x for vertical caps on dashes - - A typo using half_line_x instead of half_line_y when emitting dashed - segments of the rectilinear stroke. - - Signed-off-by: Chris Wilson - - src/cairo-path-stroke-boxes.c | 8 ++++---- - 1 file changed, 4 insertions(+), 4 deletions(-) - -commit 8657ca10e34b0034602680b4304d47ecf90ccbfd -Author: Adrian Johnson -AuthorDate: Fri Apr 6 21:20:40 2012 +0930 -Commit: Adrian Johnson -CommitDate: Fri Apr 6 21:24:22 2012 +0930 - - fix _cairo_pattern_get_ink_extents to work with snapshot recording surfaces - - It had caused pdf bbox sizes to regress to page size bboxes. - - src/cairo-pattern.c | 4 ++++ - 1 file changed, 4 insertions(+) - -commit 8886220b5027296f5b3b95e9c2f93509108d3b9e -Author: Adrian Johnson -AuthorDate: Fri Apr 6 09:43:53 2012 +0930 -Commit: Adrian Johnson -CommitDate: Fri Apr 6 09:45:56 2012 +0930 - - type1-subset: if font name is prefixed with a subset tag, strip it off - - src/cairo-type1-subset.c | 11 +++++++++++ - 1 file changed, 11 insertions(+) - -commit a6d955fcc46ae2da8d6f3b2cadeae64c03066461 -Author: Adrian Johnson -AuthorDate: Fri Apr 6 09:23:50 2012 +0930 -Commit: Adrian Johnson -CommitDate: Fri Apr 6 09:23:50 2012 +0930 - - fix indentation in cairo_type1_font_subset_parse_charstring - - src/cairo-type1-subset.c | 147 ++++++++++++++++++++++++----------------------- - 1 file changed, 74 insertions(+), 73 deletions(-) - -commit 70b2856ed3d31b41e69b3d82fb9c5c11c2b3d3d4 -Author: Adrian Johnson -AuthorDate: Fri Apr 6 09:13:35 2012 +0930 -Commit: Adrian Johnson -CommitDate: Fri Apr 6 09:13:35 2012 +0930 - - type1-subset: use fallback font if glyph widths are calculated - - Bug 48349 has a pdf file with a Type 1 font where the glyph widths are - of the form: - - 34 9302 19 div hsbw - - src/cairo-type1-subset.c | 6 ++++++ - 1 file changed, 6 insertions(+) - -commit 7a262fd398c8a1f3c9052e8d9ec459e27ff91b4d -Author: Adrian Johnson -AuthorDate: Wed Apr 4 19:53:09 2012 +0930 -Commit: Adrian Johnson -CommitDate: Wed Apr 4 19:53:09 2012 +0930 - - fix bug in _cairo_image_analyze_color - - src/cairo-image-surface.c | 5 ++++- - 1 file changed, 4 insertions(+), 1 deletion(-) - -commit cc247c346b75353f16ab40ac74c54cdd9663d16b -Author: Henry (Yu) Song -AuthorDate: Mon Apr 2 14:29:47 2012 -0700 -Commit: Martin Robinson -CommitDate: Mon Apr 2 14:39:54 2012 -0700 - - gl: Remove an unused variable - - src/cairo-gl-gradient.c | 1 - - 1 file changed, 1 deletion(-) - -commit c77112c5464d7ff21052527f82f4d729cc509291 -Author: Uli Schlachter -AuthorDate: Mon Apr 2 20:43:00 2012 +0200 -Commit: Uli Schlachter -CommitDate: Mon Apr 2 21:02:24 2012 +0200 - - xcb: Fix SHM in _get_image() - - Commit 2283ab9 introduced a logic error. Instead of falling back to the non-SHM - path when getting the image via SHM failed, we now did the fallback when getting - the image via SHM worked (which means that the SHM operation was a waste of - time). - - Signed-off-by: Uli Schlachter - - src/cairo-xcb-surface.c | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -commit d18542b735bb777b444152f0ef06de18993635bd -Author: Kalev Lember -AuthorDate: Wed Mar 28 19:47:24 2012 +0300 -Commit: Chris Wilson -CommitDate: Thu Mar 29 21:13:21 2012 +0100 - - win32: Avoid redefining ssize_t - - ... if it's already defined by system headers. mingw-w64 includes a - ssize_t definition, so we'll have to make sure not to redefine it in - that case. - - util/cairo-missing/cairo-missing.h | 2 ++ - 1 file changed, 2 insertions(+) - -commit a965b0f95fdeb567f7ccb51f7c8c47735a61e2d9 -Author: Henry (Yu) Song -AuthorDate: Thu Mar 29 01:08:51 2012 +0000 -Commit: Chris Wilson -CommitDate: Thu Mar 29 15:06:11 2012 +0100 - - gl: fix y-axis origin when map_to_image() for non texture GL surface - - We need to fix y-axis origin when map a GL surface to image surface for - non-texture GL surface. - - Test cases: extended-blend-alpha-mask, extended-blend-mask. - Although the image outputs is not right, but the image on the first grid - (upper-left corner) is correct comparing to image output. - - src/cairo-gl-surface.c | 8 +++++++- - 1 file changed, 7 insertions(+), 1 deletion(-) - -commit af6e084dd78fcbb8ecce46c57f655f5e24343b8c -Author: Chris Wilson -AuthorDate: Thu Mar 29 14:48:24 2012 +0100 -Commit: Chris Wilson -CommitDate: Thu Mar 29 14:48:24 2012 +0100 - - cairoint: Mark PDF surface as requiring the deflate stream output - - Signed-off-by: Chris Wilson - - src/cairoint.h | 9 +++++++-- - 1 file changed, 7 insertions(+), 2 deletions(-) + src/cairo-image-compositor.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) -commit 169cc39dff6f49af6e39281912e577b0d6bda8ea -Author: Chris Wilson -AuthorDate: Thu Mar 29 11:58:35 2012 +0100 -Commit: Chris Wilson -CommitDate: Thu Mar 29 11:58:35 2012 +0100 +commit 56da7adc3c85be0325481ecd23746dc49e60d239 +Author: Hans Breuer +AuthorDate: Thu Oct 16 20:51:07 2014 +0200 +Commit: Bryce Harrington +CommitDate: Thu Nov 20 12:26:52 2014 -0800 - test: update two reference images highlighted to be wrong due to source extents + win32: Fix compilation of 'cairo-path-stroke-traps.c' with MSVC8 - Signed-off-by: Chris Wilson - - test/reference/operator-source.argb32.ref.png | Bin 5625 -> 5612 bytes - test/reference/operator-source.rgb24.ref.png | Bin 3967 -> 3975 bytes - test/reference/overlapping-boxes.argb32.ref.png | Bin 192 -> 179 bytes - test/reference/overlapping-boxes.rgb24.ref.png | Bin 185 -> 170 bytes - 4 files changed, 0 insertions(+), 0 deletions(-) - -commit f0e40af05b81bf26dcf36cb262c34603b6420d1c -Author: Andrea Canciani -AuthorDate: Tue Mar 27 11:32:55 2012 +0200 -Commit: Andrea Canciani -CommitDate: Thu Mar 29 11:03:19 2012 +0200 - - doc: Silence last 'missing Since field' errors + "The issue here is that Visual Studio 2005+ is quite strict on type + conversions (so it wants code to be clear enough on conversions)." - Some APIs are public but not yet supported, hence they might chenge - without notice. State their "Since" status as "to be determined". + Fixes: https://bugs.freedesktop.org/show_bug.cgi?id=84908 - src/cairo-beos-surface.cpp | 4 ++++ - src/cairo-gl-surface.c | 2 ++ - 2 files changed, 6 insertions(+) + src/cairo-path-stroke-traps.c | 10 ++++++---- + 1 file changed, 6 insertions(+), 4 deletions(-) -commit 5174c585def3e2ec06a4679644973a489f92bef2 -Author: Andrea Canciani -AuthorDate: Sat Mar 24 17:58:57 2012 +0100 -Commit: Andrea Canciani -CommitDate: Thu Mar 29 11:03:19 2012 +0200 +commit 2c5af590ddbb08e0a46b7e37c5f0230b1805cd37 +Author: Bryce Harrington +AuthorDate: Thu Nov 20 12:19:47 2014 -0800 +Commit: Bryce Harrington +CommitDate: Thu Nov 20 12:22:06 2014 -0800 - doc: Silence warnings about 'Since' field in private functions - - A 'Since' field on non-public functions is not very meaningful, - because their signature, implementation and semantic is subject to - change without any visibility outside of cairo. + Refactor ARRAY_LENGTH macro definitions in test code - src/cairo-font-options.c | 8 -------- - 1 file changed, 8 deletions(-) + 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 dc1f5f1b002dd61c4c7b27dbaadb9f52dd34ec14 -Author: Andrea Canciani -AuthorDate: Thu Feb 16 14:30:08 2012 +0100 -Commit: Andrea Canciani -CommitDate: Thu Mar 29 11:03:19 2012 +0200 +commit 7edc5a8844b96862b866901568eb83fa56f4755b +Author: Bryce Harrington +AuthorDate: Fri Nov 14 18:10:16 2014 -0800 +Commit: Bryce Harrington +CommitDate: Thu Nov 20 12:22:06 2014 -0800 - doc: Add since documentation for enumeration values + test: Use ARRAY_LENGTH macro - src/cairo-pdf.h | 4 +- - src/cairo-ps.h | 4 +- - src/cairo-region.c | 8 +- - src/cairo-script.h | 4 +- - src/cairo-svg.h | 4 +- - src/cairo.h | 265 +++++++++++++++++++++++++++-------------------------- - 6 files changed, 145 insertions(+), 144 deletions(-) + test/bug-spline.c | 3 +-- + test/caps-tails-curve.c | 2 +- + test/tiger.c | 2 +- + 3 files changed, 3 insertions(+), 4 deletions(-) -commit 2470065edf80fa3a41159990a5dac3e45ac80a09 -Author: Andrea Canciani -AuthorDate: Tue Mar 27 11:47:11 2012 +0200 -Commit: Andrea Canciani -CommitDate: Thu Mar 29 11:03:18 2012 +0200 +commit ae608035c7b7133826a608d45e067c3875a1aceb +Author: Adrian Johnson +AuthorDate: Thu Nov 20 10:16:06 2014 +1030 +Commit: Adrian Johnson +CommitDate: Thu Nov 20 10:16:06 2014 +1030 - doc: Fix some wrong versions + pdf-operators: fix bug with RTL text - The script from the previous commit reported that some 'Since' fields - indicate incorrect versions. + bug 86461 - src/cairo-quartz-surface.c | 6 +++--- - src/cairo-script-surface.c | 2 +- - src/cairo-script.h | 2 +- - 3 files changed, 5 insertions(+), 5 deletions(-) + src/cairo-pdf-operators.c | 6 +++++- + 1 file changed, 5 insertions(+), 1 deletion(-) -commit 1d3d64469f3ddac282860f66b24a35cf2253fa46 -Author: Andrea Canciani -AuthorDate: Tue Mar 27 11:48:19 2012 +0200 -Commit: Andrea Canciani -CommitDate: Thu Mar 29 11:03:18 2012 +0200 +commit 121f384c0e231c9c5d9c937b216d342bfc7810a6 +Author: Ravi Nanjundappa +AuthorDate: Tue Nov 11 15:07:57 2014 +0530 +Commit: Bryce Harrington +CommitDate: Wed Nov 12 10:38:52 2014 -0800 - doc: Add "since" tag to documentation + 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 following Python script was used to compute "Since: 1.X" tags, - based on the first version where a symbol became officially supported. + The proposed changes fixes the warning about the documentation style used in cairo. - This script requires a concatenation of the the cairo public headers - for the officially supported beckends to be available as - "../../includes/1.X.0.h". - - from sys import argv - import re - - syms = {} - - def stripcomments(text): - def replacer(match): - s = match.group(0) - if s.startswith('/'): - return "" - else: - return s - pattern = re.compile( - r'//.*?$|/\*.*?\*/|\'(?:\\.|[^\\\'])*\'|"(?:\\.|[^\\"])*"', - re.DOTALL | re.MULTILINE - ) - return re.sub(pattern, replacer, text) - - for minor in range(12,-2,-2): - version = "1.%d" % minor - names = re.split('([A-Za-z0-9_]+)', stripcomments(open("../../includes/%s.0.h" % version).read())) - for s in names: syms[s] = version - - for filename in argv[1:]: - is_public = False - lines = open(filename, "r").read().split("\n") - newlines = [] - for i in range(len(lines)): - if lines[i] == "/**": - last_sym = lines[i+1][2:].strip().replace(":", "") - is_public = last_sym.lower().startswith("cairo") - elif is_public and lines[i] == " **/": - if last_sym in syms: - v = syms[last_sym] - if re.search("Since", newlines[-1]): newlines = newlines[:-1] - if newlines[-1].strip() != "*": newlines.append(" *") - newlines.append(" * Since: %s" % v) - else: - print "%s (%d): Cannot determine the version in which '%s' was introduced" % (filename, i, last_sym) - newlines.append(lines[i]) - - out = open(filename, "w") - out.write("\n".join(newlines)) - out.close() - - src/cairo-debug.c | 2 + - src/cairo-font-face.c | 10 ++ - src/cairo-font-options.c | 30 ++++++ - src/cairo-ft-font.c | 14 +++ - src/cairo-image-surface.c | 8 ++ - src/cairo-matrix.c | 24 +++++ - src/cairo-misc.c | 2 + - src/cairo-path.c | 2 + - src/cairo-pattern.c | 32 ++++++ - src/cairo-pdf-surface.c | 2 + - src/cairo-pdf.h | 2 +- - src/cairo-png.c | 10 ++ - src/cairo-ps-surface.c | 2 + - src/cairo-ps.h | 2 + - src/cairo-quartz-font.c | 2 + - src/cairo-quartz-surface.c | 2 + - src/cairo-region.c | 2 + - src/cairo-scaled-font.c | 12 +++ - src/cairo-script-surface.c | 16 +++ - src/cairo-surface.c | 26 +++++ - src/cairo-svg-surface.c | 2 + - src/cairo-svg.h | 2 + - src/cairo-version.c | 16 +++ - src/cairo-xlib-surface.c | 14 +++ - src/cairo.c | 174 ++++++++++++++++++++++++++++++++ - src/cairo.h | 66 ++++++++++++ - src/win32/cairo-win32-display-surface.c | 4 + - src/win32/cairo-win32-font.c | 14 +++ - src/win32/cairo-win32-surface.c | 2 + - 29 files changed, 495 insertions(+), 1 deletion(-) + Signed-off-by: Ravi Nanjundappa -commit 79740139e05375c4ce3542b571bc6a1e9d9137a7 -Author: Andrea Canciani -AuthorDate: Thu Feb 16 18:52:16 2012 +0100 -Commit: Andrea Canciani -CommitDate: Thu Mar 29 11:03:18 2012 +0200 + src/cairo-pattern.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +commit a03f2ff72054c9530f98738aac729354a3f56102 +Author: Adam Jackson +AuthorDate: Fri Oct 31 13:21:15 2014 -0400 +Commit: Bryce Harrington +CommitDate: Thu Nov 6 12:56:18 2014 -0800 - doc: Do not use the '@' prefix on some tags + xcb: Don't crash when swapping a 0-sized glyph - Make the 'Since' and 'Returns' tags consistent by removing the '@' - prefix. + 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. - Fixes some "missing 'Since' field" warnings. + Signed-off-by: Adam Jackson - src/cairo-image-surface.c | 2 +- - src/cairo-script-surface.c | 2 +- - src/cairo-surface.c | 10 +++++----- - src/cairo-user-font.c | 2 +- - src/cairo-version.c | 8 ++++---- - 5 files changed, 12 insertions(+), 12 deletions(-) + src/cairo-xcb-surface-render.c | 6 ++++++ + 1 file changed, 6 insertions(+) -commit bbafcb3de8c01e2946e565f6ec7e31a3b325dbad -Author: Andrea Canciani -AuthorDate: Thu Feb 16 18:53:14 2012 +0100 -Commit: Andrea Canciani -CommitDate: Thu Mar 29 11:03:18 2012 +0200 +commit 3cf862f6d973755cd9824c2224fbe0a623c47ff1 +Author: Adam Jackson +AuthorDate: Fri Oct 31 13:21:14 2014 -0400 +Commit: Bryce Harrington +CommitDate: Thu Nov 6 12:56:13 2014 -0800 - doc: Make the documentation name match the function name + 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. - Fixes the 'symbol not found' errors caused by mismatches between the - documentation name and the name in the code. + Signed-off-by: Adam Jackson - src/cairo-scaled-font-subsets-private.h | 8 ++++---- - src/cairo-traps.c | 2 +- - src/cairo-xlib-display.c | 2 +- - 3 files changed, 6 insertions(+), 6 deletions(-) + src/cairo-xlib-render-compositor.c | 6 ++++++ + 1 file changed, 6 insertions(+) -commit 7f635e4ead0c5bc689438a3c52742feba92c09ed -Author: Andrea Canciani -AuthorDate: Sat Mar 24 17:48:07 2012 +0100 -Commit: Andrea Canciani -CommitDate: Thu Mar 29 11:03:18 2012 +0200 +commit adbeb3d53c6c6e8ddcc63988200da4c5c9627717 +Author: Adrian Johnson +AuthorDate: Fri Oct 31 22:43:32 2014 +1030 +Commit: Adrian Johnson +CommitDate: Fri Oct 31 22:55:14 2014 +1030 - doc: Make doc ids more consistent my always putting ':' after them + Improve performance of cpu_to_be32 and be32_to_cpu - This makes the documentations comments more consistent and fixes many - reports of 'invalid doc id'. + 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/cairo-arc.c | 2 +- - src/cairo-gstate.c | 2 +- - src/cairo-path-stroke.c | 2 +- - src/cairo-pattern.c | 36 ++++++++++++++++++------------------ - src/cairo-quartz-font.c | 4 ++-- - src/cairo-quartz-surface.c | 6 +++--- - src/cairo-recording-surface.c | 2 +- - src/cairo-surface-snapshot.c | 2 +- - src/cairo-surface.c | 2 +- - src/cairo.c | 8 ++++---- - src/win32/cairo-win32-surface.c | 4 ++-- - 11 files changed, 35 insertions(+), 35 deletions(-) + src/cairoint.h | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) -commit eaac0fa87e588c3e29c177baa016e754588ad6c2 -Author: Andrea Canciani -AuthorDate: Fri Mar 23 11:57:38 2012 +0100 -Commit: Andrea Canciani -CommitDate: Thu Mar 29 11:03:18 2012 +0200 +commit e4b78424ac82588bcb9b855d5b6d5872050d33f9 +Author: Adrian Johnson +AuthorDate: Fri Oct 31 19:06:42 2014 +1030 +Commit: Adrian Johnson +CommitDate: Fri Oct 31 19:26:05 2014 +1030 - doc: Manually fix remaining warnings about symmetry + pdf-operators: only wrap text strings for PS output - The Python script is unable to fix all of the warnings, because some - point to comments that are not actually documentation. + 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. - Fixes the remaining 'documentation comment not closed with **/' - warnings. + Bug 85662 - src/cairo-gl-surface-legacy.c | 2 +- - src/cairo-qt-surface.cpp | 2 +- - src/cairo-skia-surface.cpp | 4 ++-- - src/cairo-wideint.c | 3 ++- - 4 files changed, 6 insertions(+), 5 deletions(-) + 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 f717341ab9fec1f4a72fe18f5e712272c831d978 -Author: Andrea Canciani -AuthorDate: Thu Feb 16 00:31:47 2012 +0100 -Commit: Andrea Canciani -CommitDate: Thu Mar 29 11:03:18 2012 +0200 +commit b4e218c3e8402e149115a59406796b751118237f +Author: Bryce Harrington +AuthorDate: Tue Oct 21 15:26:34 2014 -0700 +Commit: Bryce Harrington +CommitDate: Wed Oct 29 15:45:17 2014 -0700 - doc: Make documentation comments symmetric + Drop the target-specific huge-radial.pdf.*.ref.png images - Documentation comments should always start with "/**" and end with - "**/". This is not required by gtk-doc, but it makes the - documentations formatting more consistent and simplifies the checking - of documentation comments. - - The following Python script tries to enforce this. - - from sys import argv - from sre import search - - for filename in argv[1:]: - in_doc = False - lines = open(filename, "r").read().split("\n") - for i in range(len(lines)): - ls = lines[i].strip() - if ls == "/**": - in_doc = True - elif in_doc and ls == "*/": - lines[i] = " **/" - if ls.endswith("*/"): - in_doc = False - - out = open(filename, "w") - out.write("\n".join(lines)) - out.close() - - This fixes most 'documentation comment not closed with **/' warnings - by check-doc-syntax.awk. - - src/cairo-beos-surface.cpp | 2 +- - src/cairo-device.c | 2 +- - src/cairo-font-face.c | 2 +- - src/cairo-font-options.c | 2 +- - src/cairo-ft-font.c | 6 +++--- - src/cairo-gl.h | 2 +- - src/cairo-gstate.c | 2 +- - src/cairo-image-surface.c | 4 ++-- - src/cairo-malloc-private.h | 10 +++++----- - src/cairo-matrix.c | 2 +- - src/cairo-misc.c | 14 +++++++------- - src/cairo-path-stroke.c | 2 +- - src/cairo-path.c | 2 +- - src/cairo-pattern.c | 12 ++++++------ - src/cairo-pdf-surface.c | 8 ++++---- - src/cairo-pdf.h | 2 +- - src/cairo-png.c | 4 ++-- - src/cairo-ps-surface.c | 6 +++--- - src/cairo-ps.h | 2 +- - src/cairo-quartz-font.c | 6 +++--- - src/cairo-quartz-image-surface.c | 2 +- - src/cairo-quartz-surface.c | 4 ++-- - src/cairo-recording-surface.c | 4 ++-- - src/cairo-region.c | 4 ++-- - src/cairo-scaled-font.c | 2 +- - src/cairo-script-surface.c | 4 ++-- - src/cairo-surface.c | 22 +++++++++++----------- - src/cairo-svg-surface.c | 6 +++--- - src/cairo-svg.h | 2 +- - src/cairo-types-private.h | 2 +- - src/cairo-user-font.c | 4 ++-- - src/cairo-version.c | 16 ++++++++-------- - src/cairo-xcb-surface-render.c | 2 +- - src/cairo-xcb-surface.c | 4 ++-- - src/cairo-xlib-surface.c | 8 ++++---- - src/cairo.c | 16 ++++++++-------- - src/cairo.h | 2 +- - src/win32/cairo-win32-display-surface.c | 4 ++-- - src/win32/cairo-win32-font.c | 4 ++-- - src/win32/cairo-win32-surface.c | 6 +++--- - 40 files changed, 105 insertions(+), 105 deletions(-) - -commit c0fc24c889b09b734383c9250a3663d83510479e -Author: Andrea Canciani -AuthorDate: Sat Mar 24 17:53:23 2012 +0100 -Commit: Andrea Canciani -CommitDate: Thu Mar 29 11:03:18 2012 +0200 - - doc: Make informational comments syntactically different from docs + 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 - This avoids confusion with the documentation comments and fixes some - malformed docs reports. + Signed-off-by: Bryce Harrington - src/cairo-qt-surface.cpp | 30 +++++++++++++++--------------- - 1 file changed, 15 insertions(+), 15 deletions(-) + 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 71123cffe0d10c71d1c7069a125024609ba60f1d -Author: Andrea Canciani -AuthorDate: Fri Mar 23 11:45:15 2012 +0100 -Commit: Andrea Canciani -CommitDate: Thu Mar 29 11:03:18 2012 +0200 +commit f7d0f80d2d880bea6b2fdbff579b21100355c1be +Author: Bryce Harrington +AuthorDate: Wed Oct 29 15:27:19 2014 -0700 +Commit: Bryce Harrington +CommitDate: Wed Oct 29 15:27:19 2014 -0700 - doc: Add script to enforce stricter validation of documentation comments + RELEASING: Be explicit as to which tag is pushed - src/Makefile.am | 4 +- - src/check-doc-syntax.awk | 105 +++++++++++++++++++++++++++++++++++++++++++++++ - src/check-doc-syntax.sh | 4 ++ - 3 files changed, 111 insertions(+), 2 deletions(-) + RELEASING | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) -commit d304f0e57be8036719c3709e2419487326369105 -Author: Chris Wilson -AuthorDate: Thu Mar 29 00:32:36 2012 +0100 -Commit: Chris Wilson -CommitDate: Thu Mar 29 00:51:46 2012 +0100 +commit caa4c9fdeb3aecd9a4288114e75d24ec931cd01b +Author: Ravi Nanjundappa +AuthorDate: Mon Oct 27 10:54:13 2014 +0530 +Commit: Bryce Harrington +CommitDate: Tue Oct 28 22:24:55 2014 -0700 - composite-rectangles: Trim extents for SOURCE and CLEAR to the mask - - The SOURCE and CLEAR are the odd pair in Cairo's range of operators that - are bound by the shape/mask, but are unbound by the source. This - regularly leads to bugs as only track the bound/unbound rectangles and - confuse the meaning when bound only by the mask. + Fix warnings from check-doc-syntax.sh - What is required is that the unbound extents in this case is only - trimmed by the mask (the bounded extents are still the intersection of - all). + $ ./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_...:') - Fixes bug-source-cu + The warnings are about the documentation style used in cairo - Signed-off-by: Chris Wilson - - src/cairo-composite-rectangles.c | 18 +++++++++++++++--- - 1 file changed, 15 insertions(+), 3 deletions(-) - -commit 5b3d878c82fc862038c8e6730f34de317d734bd0 -Author: Chris Wilson -AuthorDate: Thu Mar 29 00:47:37 2012 +0100 -Commit: Chris Wilson -CommitDate: Thu Mar 29 00:51:46 2012 +0100 + Signed-off-by: Ravi Nanjundappa - test: Add test case for tracking source operator extents + src/cairo-pattern.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) - test/Makefile.sources | 1 + - test/bug-source-cu.c | 81 ++++++++++++++++++++++ - test/reference/bug-source-cu.argb32.ref.png | Bin 0 -> 3815 bytes - test/reference/bug-source-cu.rgb24.ref.png | Bin 0 -> 3211 bytes - test/reference/bug-source-cu.traps.argb32.ref.png | Bin 0 -> 3816 bytes - test/reference/bug-source-cu.traps.rgb24.ref.png | Bin 0 -> 3212 bytes - 6 files changed, 82 insertions(+) - -commit fba21ef2a4c4eb343668267fda713aedbb6af2a4 -Author: Henry (Yu) Song -AuthorDate: Tue Mar 27 21:25:37 2012 +0000 -Commit: Chris Wilson -CommitDate: Tue Mar 27 23:29:12 2012 +0100 +commit f9b65ae1fc91bc558a01c2ad7be5a121c6f10818 +Author: Adrian Johnson +AuthorDate: Tue Oct 21 22:35:12 2014 +1030 +Commit: Adrian Johnson +CommitDate: Tue Oct 21 22:42:34 2014 +1030 - gl: use font's antialias option to check whether it needs mask + build: fix regression on mingw + + 7cfebce1 removed the filename extension for executables. + + Patch from http://sourceforge.net/p/inkscape/mailman/message/32939144/ - There is need to loop over number of glyphs to check wether the glyph - image is a ARGB32 as the font's antialias option can be used for checking. - If antialias is SUBPIXEL or BEST, the glyph surface will be ARGB32, - otherwise it will be A8 format. Therefore we will only be using - component-alpha at SUBPIXEL (or better) font quality and only then need - a mask for multiple pass glyph composition. + Bug 85120 - src/cairo-gl-glyphs.c | 24 ++++++++---------------- - 1 file changed, 8 insertions(+), 16 deletions(-) + build/aclocal.float.m4 | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) -commit 06ffa0199c483e1e637f436079b1f2ed4c9e7baf -Author: Uli Schlachter -AuthorDate: Tue Mar 27 21:23:30 2012 +0200 -Commit: Uli Schlachter -CommitDate: Tue Mar 27 21:25:07 2012 +0200 +commit 2de69581c28bf115852037ca41eba13cb7335976 +Author: Massimo Valentini +AuthorDate: Sun Oct 19 09:19:10 2014 +0200 +Commit: Chris Wilson +CommitDate: Sun Oct 19 12:47:23 2014 +0100 - README: Note that xcb is no longer experimental + tor-scan-converter: can't do_fullrow when intersection in row + 0.5subrow - Signed-off-by: Uli Schlachter + 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 - README | 14 +++++++------- - 1 file changed, 7 insertions(+), 7 deletions(-) + src/cairo-tor-scan-converter.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) -commit c4d1063e0310fa1b0c3ab749ed1b4e15431c450b -Author: Uli Schlachter -AuthorDate: Mon Mar 26 20:17:10 2012 +0200 -Commit: Uli Schlachter -CommitDate: Mon Mar 26 20:17:10 2012 +0200 +commit 51892e91d40175d790541ac7f2e5706648649a5e +Author: Bryce Harrington +AuthorDate: Sat Oct 18 19:10:32 2014 -0700 +Commit: Bryce Harrington +CommitDate: Sat Oct 18 19:10:32 2014 -0700 - xcb/xlib: Add missing "Since: 1.12" + Revert "Add execution bit for make-cairo-test-constructors.sh" - Signed-off-by: Uli Schlachter + This reverts commit 5c17bf1a33b8e76edeb23121342e0f163fe9d6ad. + + Script is sourced in the makefile, no need for +x. - src/cairo-xcb-connection.c | 4 ++++ - src/cairo-xcb-surface.c | 12 ++++++++++++ - src/cairo-xlib-display.c | 2 ++ - 3 files changed, 18 insertions(+) + test/make-cairo-test-constructors.sh | 0 + 1 file changed, 0 insertions(+), 0 deletions(-) -commit f5f8915df25112ad895d85cb6255d0bf01e24c63 -Author: Behdad Esfahbod -AuthorDate: Sun Mar 25 15:11:57 2012 -0400 -Commit: Behdad Esfahbod -CommitDate: Sun Mar 25 15:11:57 2012 -0400 +commit 1013d18a01aa10dadb8996b9a327eb39b219acbd +Author: Adrian Johnson +AuthorDate: Sun Oct 19 12:08:55 2014 +1030 +Commit: Adrian Johnson +CommitDate: Sun Oct 19 12:08:55 2014 +1030 - Fix another typo + pdf: fix compiler warning - src/cairo-gl.h | 2 +- + src/cairo-pdf-surface.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) -commit 81c848c83945c19c8cf769daeaa831c086c264f2 -Author: Behdad Esfahbod -AuthorDate: Sun Mar 25 15:02:36 2012 -0400 -Commit: Behdad Esfahbod -CommitDate: Sun Mar 25 15:02:36 2012 -0400 +commit 99a35dd273f3deb4ae54310f1ed1746bfd9fae70 +Author: Adrian Johnson +AuthorDate: Sun Oct 19 11:34:34 2014 +1030 +Commit: Adrian Johnson +CommitDate: Sun Oct 19 11:54:25 2014 +1030 - More typo fixes + 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-malloc-private.h | 22 +++++++++++----------- - 1 file changed, 11 insertions(+), 11 deletions(-) + src/cairo-cff-subset.c | 35 +++++++++++++++++++---------------- + src/cairo-image-info.c | 32 +++++++++++++------------------- + src/cairoint.h | 26 ++++++++++++++++++++++++++ + 3 files changed, 58 insertions(+), 35 deletions(-) -commit 73cde7a0f6d86f1e72d080757f863caddb0530e6 -Author: Behdad Esfahbod -AuthorDate: Sun Mar 25 15:00:44 2012 -0400 -Commit: Behdad Esfahbod -CommitDate: Sun Mar 25 15:00:44 2012 -0400 +commit 5c17bf1a33b8e76edeb23121342e0f163fe9d6ad +Author: Bryce Harrington +AuthorDate: Fri Oct 17 12:04:56 2014 -0700 +Commit: Bryce Harrington +CommitDate: Fri Oct 17 15:50:31 2014 -0700 - Fix typos + Add execution bit for make-cairo-test-constructors.sh + + This is referenced in the Makefile but not set as executable - src/cairo-malloc-private.h | 6 +++--- - 1 file changed, 3 insertions(+), 3 deletions(-) + test/make-cairo-test-constructors.sh | 0 + 1 file changed, 0 insertions(+), 0 deletions(-) -commit ede11b2954db19e3ca9d31cef7d04a7bf0e42ddc -Author: Behdad Esfahbod -AuthorDate: Sun Mar 25 14:37:14 2012 -0400 -Commit: Behdad Esfahbod -CommitDate: Sun Mar 25 14:38:39 2012 -0400 +commit f05e9332b389d33b5ae654e04576ccf2f389786f +Author: Adrian Johnson +AuthorDate: Fri Oct 17 22:04:39 2014 +1030 +Commit: Adrian Johnson +CommitDate: Fri Oct 17 22:04:39 2014 +1030 - Fix math in comments + Update mime type documentation. - src/cairo-arc.c | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) + src/cairo-surface.c | 28 +++++++++++++++++++++++++++- + 1 file changed, 27 insertions(+), 1 deletion(-) -commit 2721d05d69e42eef592ea0394df89cdc91414330 -Author: Behdad Esfahbod -AuthorDate: Thu Sep 22 13:02:44 2011 -0400 -Commit: Behdad Esfahbod -CommitDate: Sun Mar 25 14:38:38 2012 -0400 +commit 9102c0b0af808e52908e4f03bd9db479339c7b7e +Author: Bryce Harrington +AuthorDate: Thu Oct 16 11:41:40 2014 -0700 +Commit: Bryce Harrington +CommitDate: Thu Oct 16 11:41:40 2014 -0700 - Typo + 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. - src/cairo-arc.c | 2 +- + RELEASING | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) -commit 841b4057bc7afdc9fbac36b178dd5f15bbfc0f90 -Author: Chris Wilson -AuthorDate: Fri Mar 23 20:16:44 2012 +0000 -Commit: Chris Wilson -CommitDate: Fri Mar 23 20:16:44 2012 +0000 +commit 92bc5376a82b618d11451c1ca088fbb0d37ca270 +Author: Bryce Harrington +AuthorDate: Mon Oct 13 19:57:09 2014 -0700 +Commit: Bryce Harrington +CommitDate: Mon Oct 13 19:57:09 2014 -0700 - version: Post release bump to 1.12.1 + Start 1.14.1 development cairo-version.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff -Nru cairo-1.14.6/ChangeLog.pre-1.14 cairo-1.15.10/ChangeLog.pre-1.14 --- cairo-1.14.6/ChangeLog.pre-1.14 1970-01-01 00:00:00.000000000 +0000 +++ cairo-1.15.10/ChangeLog.pre-1.14 2017-12-11 21:03:32.000000000 +0000 @@ -0,0 +1,18778 @@ +commit f6fd372a8b31a0bebbdfe36090d6ffc7bab9a2f8 +Author: Bryce Harrington +AuthorDate: Mon Oct 13 18:54:12 2014 -0700 +Commit: Bryce Harrington +CommitDate: 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 +AuthorDate: Mon Oct 13 18:45:53 2014 -0700 +Commit: Bryce Harrington +CommitDate: 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 +AuthorDate: Mon Oct 13 18:30:23 2014 -0700 +Commit: Bryce Harrington +CommitDate: 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 +AuthorDate: Mon Oct 13 18:20:45 2014 -0700 +Commit: Bryce Harrington +CommitDate: 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 +AuthorDate: Sun Oct 12 21:04:37 2014 +1030 +Commit: Adrian Johnson +CommitDate: Sun Oct 12 21:06:45 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 +AuthorDate: Thu Oct 9 19:46:16 2014 -0700 +Commit: Bryce Harrington +CommitDate: Fri Oct 10 18:09:14 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 +AuthorDate: Thu Oct 9 19:46:15 2014 -0700 +Commit: Bryce Harrington +CommitDate: Fri Oct 10 18:09:09 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 +AuthorDate: Thu Oct 9 19:46:14 2014 -0700 +Commit: Bryce Harrington +CommitDate: Fri Oct 10 18:09:05 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 +AuthorDate: Thu Oct 9 19:46:13 2014 -0700 +Commit: Bryce Harrington +CommitDate: Fri Oct 10 18:09:01 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 +AuthorDate: Thu Oct 9 19:46:12 2014 -0700 +Commit: Bryce Harrington +CommitDate: Fri Oct 10 18:08:56 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 +AuthorDate: Thu Oct 9 19:46:11 2014 -0700 +Commit: Bryce Harrington +CommitDate: Fri Oct 10 18:08:48 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 +AuthorDate: Thu Oct 9 17:55:09 2014 -0700 +Commit: Bryce Harrington +CommitDate: Thu Oct 9 18:28:53 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 +AuthorDate: Thu Oct 9 17:47:10 2014 -0700 +Commit: Bryce Harrington +CommitDate: Thu Oct 9 18:28:52 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 +AuthorDate: Wed Oct 8 20:08:47 2014 -0700 +Commit: Bryce Harrington +CommitDate: Thu Oct 9 13:51:49 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 +AuthorDate: Thu Oct 9 10:43:15 2014 +0100 +Commit: Chris Wilson +CommitDate: Thu Oct 9 10:57:17 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 +AuthorDate: Thu Oct 9 10:54:58 2014 +0100 +Commit: Chris Wilson +CommitDate: Thu Oct 9 10:56:28 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 +AuthorDate: Fri Oct 3 12:34:06 2014 -0700 +Commit: Bryce Harrington +CommitDate: 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 +AuthorDate: Fri Oct 3 12:20:13 2014 -0700 +Commit: Bryce Harrington +CommitDate: 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 +AuthorDate: Fri Oct 3 11:52:32 2014 -0700 +Commit: Bryce Harrington +CommitDate: Fri Oct 3 11:55:59 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 +AuthorDate: Fri Oct 3 09:56:24 2014 +0200 +Commit: Bryce Harrington +CommitDate: Fri Oct 3 11:38:48 2014 -0700 + + 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 +AuthorDate: Thu Oct 2 18:10:00 2014 +0200 +Commit: Bryce Harrington +CommitDate: Fri Oct 3 11:38:44 2014 -0700 + + 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 +AuthorDate: Thu Oct 2 13:08:50 2014 +0100 +Commit: Chris Wilson +CommitDate: 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 +AuthorDate: Thu Oct 2 09:16:04 2014 +0100 +Commit: Chris Wilson +CommitDate: 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 +AuthorDate: Thu Oct 2 08:17:14 2014 +0100 +Commit: Chris Wilson +CommitDate: Thu Oct 2 08:46:44 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 +AuthorDate: Thu Oct 2 07:52:05 2014 +0100 +Commit: Chris Wilson +CommitDate: Thu Oct 2 08:46:44 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 +AuthorDate: Wed Oct 1 12:59:29 2014 +0100 +Commit: Chris Wilson +CommitDate: Thu Oct 2 08:46:44 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 +AuthorDate: Thu Oct 2 00:20:52 2014 +0100 +Commit: Chris Wilson +CommitDate: Thu Oct 2 08:46:44 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 +AuthorDate: Wed Oct 1 22:50:10 2014 +0100 +Commit: Chris Wilson +CommitDate: Thu Oct 2 00:06:27 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 +AuthorDate: Tue Sep 30 16:18:34 2014 +0100 +Commit: Chris Wilson +CommitDate: 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 +AuthorDate: Tue Sep 30 16:14:57 2014 +0100 +Commit: Chris Wilson +CommitDate: Tue Sep 30 16:15:33 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 +AuthorDate: Tue Sep 30 14:30:45 2014 +0100 +Commit: Chris Wilson +CommitDate: Tue Sep 30 14:33:50 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 +AuthorDate: Tue Sep 30 14:06:21 2014 +0100 +Commit: Chris Wilson +CommitDate: Tue Sep 30 14:06:36 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 +AuthorDate: Tue Sep 30 10:22:41 2014 +0100 +Commit: Chris Wilson +CommitDate: Tue Sep 30 13:57:05 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 +AuthorDate: Tue Sep 30 12:25:56 2014 +0100 +Commit: Chris Wilson +CommitDate: 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 +AuthorDate: Tue Sep 30 08:44:43 2014 +0100 +Commit: Chris Wilson +CommitDate: Tue Sep 30 12:01:13 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 +AuthorDate: Tue Sep 30 11:47:44 2014 +0100 +Commit: Chris Wilson +CommitDate: 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 +AuthorDate: Mon Sep 22 10:19:17 2014 +0530 +Commit: Bryce Harrington +CommitDate: Mon Sep 29 16:08:23 2014 -0700 + + 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 +AuthorDate: Thu Sep 25 08:38:50 2014 +0530 +Commit: Bryce Harrington +CommitDate: Mon Sep 29 15:59:26 2014 -0700 + + 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 +AuthorDate: Mon Sep 22 12:53:08 2014 +0100 +Commit: Chris Wilson +CommitDate: Mon Sep 29 08:42:17 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 +AuthorDate: Mon Sep 29 08:37:56 2014 +0100 +Commit: Chris Wilson +CommitDate: Mon Sep 29 08:42:17 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 +AuthorDate: Tue Apr 2 21:00:20 2013 +0200 +Commit: Bryce Harrington +CommitDate: Wed Sep 24 12:20:53 2014 -0700 + + 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 +AuthorDate: Wed Sep 24 11:37:58 2014 -0700 +Commit: Bryce Harrington +CommitDate: Wed Sep 24 12:12:47 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 +AuthorDate: Tue Sep 23 12:58:27 2014 +0100 +Commit: Chris Wilson +CommitDate: Wed Sep 24 12:35:47 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 +AuthorDate: Wed Sep 24 09:57:31 2014 +0100 +Commit: Chris Wilson +CommitDate: Wed Sep 24 12:35:47 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 +AuthorDate: Tue Sep 23 16:41:36 2014 -0700 +Commit: Bryce Harrington +CommitDate: 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 +AuthorDate: Tue Sep 23 12:40:25 2014 -0700 +Commit: Bryce Harrington +CommitDate: 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 +AuthorDate: Mon Mar 24 19:08:10 2014 +1030 +Commit: Bryce Harrington +CommitDate: Tue Sep 23 11:40:03 2014 -0700 + + 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 +AuthorDate: Mon Sep 22 15:48:49 2014 -0700 +Commit: Bryce Harrington +CommitDate: 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 +AuthorDate: Mon Sep 22 15:41:24 2014 -0700 +Commit: Bryce Harrington +CommitDate: 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 +AuthorDate: Mon Sep 22 15:06:54 2014 -0700 +Commit: Bryce Harrington +CommitDate: 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 +AuthorDate: Thu Jul 31 17:58:15 2014 -0700 +Commit: Bryce Harrington +CommitDate: Fri Sep 19 17:23:50 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 +AuthorDate: Thu Jul 31 17:43:03 2014 -0700 +Commit: Bryce Harrington +CommitDate: Fri Sep 19 17:23:50 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 +AuthorDate: Mon Aug 19 19:38:26 2013 -0700 +Commit: Bryce Harrington +CommitDate: Fri Sep 19 17:23:50 2014 -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 +AuthorDate: Tue Sep 16 10:18:02 2014 +0530 +Commit: Bryce Harrington +CommitDate: Fri Sep 19 15:46:14 2014 -0700 + + 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 +AuthorDate: Thu Sep 18 13:18:48 2014 -0700 +Commit: Bryce Harrington +CommitDate: Thu Sep 18 13:18:48 2014 -0700 + + NEWS: Drop unfinished thought + + NEWS | 1 - + 1 file changed, 1 deletion(-) + +commit 54670ec13d64efa94f552b5473c1f15a9db1cecd +Author: Bryce Harrington +AuthorDate: Wed Sep 17 20:27:13 2014 -0700 +Commit: Bryce Harrington +CommitDate: Wed Sep 17 20:33:22 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 +AuthorDate: Wed Sep 17 20:25:37 2014 -0700 +Commit: Bryce Harrington +CommitDate: 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 +AuthorDate: Wed Sep 17 20:04:01 2014 -0700 +Commit: Bryce Harrington +CommitDate: 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 +AuthorDate: Wed Sep 17 17:14:01 2014 -0700 +Commit: Bryce Harrington +CommitDate: Wed Sep 17 17:30:04 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 +AuthorDate: Sun Sep 14 22:02:12 2014 +0930 +Commit: Adrian Johnson +CommitDate: 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ý +AuthorDate: Wed Sep 3 22:53:55 2014 +0200 +Commit: Uli Schlachter +CommitDate: Fri Sep 12 18:19:44 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ß +AuthorDate: Fri Sep 5 17:03:26 2014 +0200 +Commit: Bryce Harrington +CommitDate: Thu Sep 11 13:00:13 2014 -0700 + + 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 +AuthorDate: Fri Sep 5 12:15:02 2014 +0530 +Commit: Bryce Harrington +CommitDate: Thu Sep 11 12:53:05 2014 -0700 + + 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 +AuthorDate: Wed Aug 20 09:52:45 2014 -0700 +Commit: Bryce Harrington +CommitDate: Thu Aug 28 13:16:47 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 +AuthorDate: Wed Aug 20 09:38:37 2014 -0700 +Commit: Bryce Harrington +CommitDate: Wed Aug 27 21:14:26 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 +AuthorDate: Mon Aug 25 09:28:40 2014 +0530 +Commit: Bryce Harrington +CommitDate: Wed Aug 27 20:39:57 2014 -0700 + + 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 +AuthorDate: Thu Aug 21 18:18:34 2014 +0530 +Commit: Bryce Harrington +CommitDate: Wed Aug 27 20:39:49 2014 -0700 + + 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 +AuthorDate: Mon Aug 25 08:55:24 2014 +0100 +Commit: Chris Wilson +CommitDate: 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 +AuthorDate: Sat Aug 23 14:16:55 2014 +0100 +Commit: Chris Wilson +CommitDate: Sat Aug 23 14:20:43 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 +AuthorDate: Sat Aug 23 14:38:36 2014 +0200 +Commit: Uli Schlachter +CommitDate: 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 +AuthorDate: Tue Aug 19 14:59:14 2014 -0700 +Commit: Bryce Harrington +CommitDate: Thu Aug 21 12:56:42 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 +AuthorDate: Wed Aug 20 11:45:19 2014 +0530 +Commit: Bryce Harrington +CommitDate: Thu Aug 21 12:34:10 2014 -0700 + + 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 +AuthorDate: Tue Aug 19 00:09:50 2014 +0930 +Commit: Adrian Johnson +CommitDate: 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 +AuthorDate: Wed Aug 6 09:49:59 2014 +0530 +Commit: Bryce Harrington +CommitDate: Thu Aug 14 16:10:14 2014 -0700 + + 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 +AuthorDate: Tue Aug 5 14:31:37 2014 +0530 +Commit: Bryce Harrington +CommitDate: Thu Aug 14 16:10:09 2014 -0700 + + 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 +AuthorDate: Thu Jul 24 14:19:21 2014 +0530 +Commit: Bryce Harrington +CommitDate: Thu Aug 14 16:09:20 2014 -0700 + + 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 +AuthorDate: Tue Aug 12 15:48:04 2014 -0700 +Commit: Bryce Harrington +CommitDate: Thu Aug 14 12:59:07 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 +AuthorDate: Tue Aug 12 14:16:46 2014 +0530 +Commit: Bryce Harrington +CommitDate: Thu Aug 14 12:00:08 2014 -0700 + + 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 +AuthorDate: Mon Jul 21 17:10:16 2014 +0200 +Commit: Bryce Harrington +CommitDate: Fri Aug 1 13:11:31 2014 -0700 + + 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 +AuthorDate: Fri Aug 1 11:29:29 2014 +0100 +Commit: Chris Wilson +CommitDate: Fri Aug 1 11:30:42 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 +AuthorDate: Fri Jul 18 18:46:26 2014 -0700 +Commit: Bryce Harrington +CommitDate: Fri Jul 25 12:16:53 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 +AuthorDate: Thu Jul 24 18:41:03 2014 -0700 +Commit: Bryce Harrington +CommitDate: Thu Jul 24 18:41:37 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 +AuthorDate: Mon Jul 21 15:05:14 2014 -0700 +Commit: Bryce Harrington +CommitDate: Thu Jul 24 18:41:37 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 +AuthorDate: Wed Jul 23 12:12:04 2014 -0400 +Commit: Behdad Esfahbod +CommitDate: 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 +AuthorDate: Wed Jul 23 12:09:17 2014 -0400 +Commit: Behdad Esfahbod +CommitDate: Wed Jul 23 12:09:45 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 +AuthorDate: Mon Jul 14 15:54:38 2014 -0400 +Commit: Behdad Esfahbod +CommitDate: Mon Jul 14 15:55:12 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 +AuthorDate: Tue Jul 8 15:53:41 2014 -0700 +Commit: Bryce Harrington +CommitDate: Fri Jul 11 18:34:43 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 +AuthorDate: Tue Jul 8 13:14:20 2014 -0700 +Commit: Bryce Harrington +CommitDate: Fri Jul 11 18:34:43 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 +AuthorDate: Tue Jul 8 12:39:02 2014 -0700 +Commit: Bryce Harrington +CommitDate: Fri Jul 11 18:34:43 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 +AuthorDate: Fri Jul 11 11:05:43 2014 -0400 +Commit: Behdad Esfahbod +CommitDate: Fri Jul 11 11:07:25 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 +AuthorDate: Fri Jul 11 10:58:14 2014 -0400 +Commit: Behdad Esfahbod +CommitDate: Fri Jul 11 11:07:25 2014 -0400 + + chmod a+x cairo-trace + + configure.ac | 2 ++ + 1 file changed, 2 insertions(+) + +commit e279709bf32f13314b8008e6f640d2fab8cc8a78 +Author: Ravi Nanjundappa +AuthorDate: Thu Jul 10 16:14:46 2014 +0530 +Commit: Bryce Harrington +CommitDate: Thu Jul 10 12:08:01 2014 -0700 + + 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 +AuthorDate: Wed Jul 9 15:50:57 2014 +0530 +Commit: Bryce Harrington +CommitDate: Wed Jul 9 16:51:22 2014 -0700 + + .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 +AuthorDate: Wed Jul 9 16:33:53 2014 -0400 +Commit: Jeff Muizelaar +CommitDate: Wed Jul 9 16:35:30 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 +AuthorDate: Tue Jul 8 17:44:56 2014 -0700 +Commit: Bryce Harrington +CommitDate: Tue Jul 8 17:47:23 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 +AuthorDate: Mon Jun 30 17:05:26 2014 +0530 +Commit: Bryce Harrington +CommitDate: Tue Jul 8 11:09:04 2014 -0700 + + 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 +AuthorDate: Wed Jul 2 14:13:58 2014 +0530 +Commit: Bryce Harrington +CommitDate: Mon Jul 7 03:53:13 2014 -0700 + + 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 +AuthorDate: Mon Jun 30 14:17:18 2014 -0400 +Commit: Jeff Muizelaar +CommitDate: 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 +AuthorDate: Mon May 19 14:59:29 2014 +0530 +Commit: Bryce Harrington +CommitDate: Thu Jun 5 16:12:30 2014 -0700 + + 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 +AuthorDate: Fri May 9 21:22:04 2014 +0200 +Commit: Bryce Harrington +CommitDate: Thu Jun 5 16:09:45 2014 -0700 + + 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 +AuthorDate: Tue May 13 10:15:12 2014 +0200 +Commit: Bryce Harrington +CommitDate: Thu Jun 5 13:16:24 2014 -0700 + + 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 +AuthorDate: Sun May 25 20:22:16 2014 -0700 +Commit: Bryce Harrington +CommitDate: Thu Jun 5 13:14:11 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 +AuthorDate: Mon May 12 14:59:03 2014 +0530 +Commit: Bryce Harrington +CommitDate: Mon May 19 17:37:38 2014 -0700 + + 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 +AuthorDate: Tue May 6 15:44:21 2014 +0530 +Commit: Bryce Harrington +CommitDate: Fri May 16 11:56:27 2014 -0700 + + 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 +AuthorDate: Thu May 15 15:59:58 2014 +0530 +Commit: Bryce Harrington +CommitDate: Fri May 16 11:54:43 2014 -0700 + + 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 +AuthorDate: Wed May 7 17:15:22 2014 +0200 +Commit: Bryce Harrington +CommitDate: Fri May 16 11:11:34 2014 -0700 + + 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 +AuthorDate: Wed May 7 17:16:09 2014 +0200 +Commit: Bryce Harrington +CommitDate: Fri May 16 11:11:30 2014 -0700 + + 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 +AuthorDate: Sun May 11 20:06:17 2014 -0700 +Commit: Bryce Harrington +CommitDate: Mon May 12 10:19:33 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 +AuthorDate: Mon May 5 12:34:21 2014 +0530 +Commit: Bryce Harrington +CommitDate: Tue May 6 10:22:43 2014 -0700 + + 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 +AuthorDate: Tue May 6 10:18:19 2014 -0700 +Commit: Bryce Harrington +CommitDate: 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 +AuthorDate: Fri May 2 18:53:41 2014 +0200 +Commit: Bryce Harrington +CommitDate: Tue May 6 10:14:53 2014 -0700 + + 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 +AuthorDate: Wed Apr 23 08:32:19 2014 +0530 +Commit: Bryce Harrington +CommitDate: Wed Apr 30 13:01:35 2014 -0700 + + 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 +AuthorDate: Tue Apr 22 17:53:12 2014 +0530 +Commit: Bryce Harrington +CommitDate: Tue Apr 22 09:51:45 2014 -0700 + + 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 +AuthorDate: Thu Apr 17 23:59:36 2014 -0700 +Commit: Bryce Harrington +CommitDate: Fri Apr 18 12:33:45 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 +AuthorDate: Wed Apr 16 17:37:18 2014 -0700 +Commit: Bryce Harrington +CommitDate: Fri Apr 18 10:09:10 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 +AuthorDate: Fri Apr 11 10:39:39 2014 +0200 +Commit: Uli Schlachter +CommitDate: Thu Apr 17 11:32:56 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 +AuthorDate: Sat Apr 12 12:07:23 2014 +0200 +Commit: Uli Schlachter +CommitDate: Thu Apr 17 11:32:49 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 +AuthorDate: Fri Mar 14 20:24:51 2014 +0000 +Commit: Bryce Harrington +CommitDate: Wed Apr 16 17:27:50 2014 -0700 + + 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 +AuthorDate: Fri Mar 14 15:31:34 2014 +0100 +Commit: Uli Schlachter +CommitDate: Fri Mar 21 14:10:19 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 +AuthorDate: Fri Mar 14 13:47:38 2014 +0100 +Commit: Uli Schlachter +CommitDate: Fri Mar 21 14:09:37 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 +AuthorDate: Thu Feb 27 10:56:20 2014 +0100 +Commit: Bryce Harrington +CommitDate: Thu Mar 13 17:12:43 2014 -0700 + + 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 +AuthorDate: Thu Mar 13 15:22:40 2014 -0700 +Commit: Bryce Harrington +CommitDate: Thu Mar 13 17:12:37 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 +AuthorDate: Tue Feb 25 17:43:22 2014 -0800 +Commit: Bryce Harrington +CommitDate: Thu Mar 13 15:13:52 2014 -0700 + + 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 +AuthorDate: Tue Feb 25 17:09:03 2014 -0800 +Commit: Bryce Harrington +CommitDate: Thu Mar 13 15:13:34 2014 -0700 + + 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 +AuthorDate: Tue Feb 25 14:43:06 2014 -0800 +Commit: Bryce Harrington +CommitDate: Thu Mar 13 15:13:04 2014 -0700 + + 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 +AuthorDate: Tue Feb 25 13:20:49 2014 -0800 +Commit: Bryce Harrington +CommitDate: Thu Mar 13 15:12:58 2014 -0700 + + 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 +AuthorDate: Tue Feb 25 13:17:00 2014 -0800 +Commit: Bryce Harrington +CommitDate: Thu Mar 13 15:12:50 2014 -0700 + + 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 +AuthorDate: Thu Mar 6 09:45:08 2014 +0100 +Commit: Uli Schlachter +CommitDate: Thu Mar 6 09:51:56 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 +AuthorDate: Thu Mar 6 08:34:10 2014 +0000 +Commit: Chris Wilson +CommitDate: Thu Mar 6 08:35:20 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 +AuthorDate: Wed Mar 5 12:50:36 2014 -0800 +Commit: Bryce Harrington +CommitDate: 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 +AuthorDate: Wed Mar 5 01:13:59 2014 -0800 +Commit: Behdad Esfahbod +CommitDate: 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 +AuthorDate: Mon Apr 29 18:31:08 2013 +0900 +Commit: Bryce Harrington +CommitDate: Mon Mar 3 17:21:37 2014 -0800 + + 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 +AuthorDate: Mon Mar 3 01:16:25 2014 +0100 +Commit: Benjamin Otte +CommitDate: 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 +AuthorDate: Wed Feb 26 18:55:25 2014 -0800 +Commit: Bryce Harrington +CommitDate: 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 +AuthorDate: Wed Feb 26 18:44:46 2014 -0800 +Commit: Bryce Harrington +CommitDate: 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 +AuthorDate: Wed Feb 26 18:42:41 2014 -0800 +Commit: Bryce Harrington +CommitDate: 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 +AuthorDate: Wed Feb 26 18:40:12 2014 -0800 +Commit: Bryce Harrington +CommitDate: 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 +AuthorDate: Wed Feb 26 18:36:15 2014 -0800 +Commit: Bryce Harrington +CommitDate: 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 +AuthorDate: Wed Feb 19 11:25:16 2014 -0800 +Commit: Bryce Harrington +CommitDate: Tue Feb 25 12:14:36 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 +AuthorDate: Tue Feb 18 21:13:53 2014 -0800 +Commit: Bryce Harrington +CommitDate: Tue Feb 25 12:14:09 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 +AuthorDate: Tue Feb 18 21:01:07 2014 -0800 +Commit: Bryce Harrington +CommitDate: Tue Feb 25 12:13:56 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 +AuthorDate: Tue Feb 18 20:56:09 2014 -0800 +Commit: Bryce Harrington +CommitDate: Tue Feb 25 12:13:50 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 +AuthorDate: Tue Feb 18 20:13:57 2014 -0800 +Commit: Bryce Harrington +CommitDate: Tue Feb 25 12:13:40 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 +AuthorDate: Tue Feb 18 18:10:20 2014 -0800 +Commit: Bryce Harrington +CommitDate: Tue Feb 25 12:13:34 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 +AuthorDate: Tue Feb 18 17:37:22 2014 -0800 +Commit: Bryce Harrington +CommitDate: Tue Feb 25 12:13:10 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 +AuthorDate: Tue Feb 4 10:47:40 2014 +0000 +Commit: Behdad Esfahbod +CommitDate: Wed Feb 5 08:40:38 2014 -0500 + + 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 +AuthorDate: Wed Jan 29 17:07:04 2014 -0800 +Commit: Bryce Harrington +CommitDate: Fri Jan 31 11:26:02 2014 -0800 + + cairo-script: Compare status with CSI enums + + CSI_STATUS_SUCCESS is defined as equivalent to CAIRO_STATUS_SUCCESS. + We should prefer the former when comparing against csi_status_t + variables, else we'll get a warning: + + cairo-script-interpreter.c:637:23: warning: comparison between + ‘csi_status_t’ and ‘enum _cairo_status’ [-Wenum-compare] + + Signed-off-by: Bryce Harrington + Reviewed-by: Chris Wilson + + util/cairo-script/cairo-script-interpreter.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 18d66c88a2f1068fb490efa33ead93d0e2d71c41 +Author: Bryce Harrington +AuthorDate: Wed Jan 29 10:22:51 2014 -0800 +Commit: Bryce Harrington +CommitDate: Fri Jan 31 11:25:57 2014 -0800 + + cairo-script: Error if asked to decompress with missing compression lib + + This quells the following warning: + + warning: enumeration value ‘LZO’ not handled in switch [-Wswitch-enum] + + The LZO enum value is defined and used elsewhere, even if lzo support + isn't available. + + This situation might arise if cairo scripts were generated on one system + with lzo, and then replayed on a system without it. For now simply + error out if this occurs. + + Signed-off-by: Bryce Harrington + Reviewed-by: Chris Wilson + + util/cairo-script/cairo-script-file.c | 8 ++++---- + util/cairo-script/cairo-script-operators.c | 16 ++++++++-------- + 2 files changed, 12 insertions(+), 12 deletions(-) + +commit 1ce452db4ca348944ca88edfdadb6c53a4d55733 +Author: Bryce Harrington +AuthorDate: Wed Jan 29 10:10:24 2014 -0800 +Commit: Bryce Harrington +CommitDate: Fri Jan 31 11:25:53 2014 -0800 + + cairo-trace: Stringify CAIRO_STATUS_JBIG2_GLOBAL_MISSING + + This error enum was added last September when JBIG2 support was added. + Support it as well in the tracing code. This fixes this warning: + + trace.c:1544:5: warning: enumeration value + ‘CAIRO_STATUS_JBIG2_GLOBAL_MISSING’ not handled in switch [-Wswitch] + + Signed-off-by: Bryce Harrington + Reviewed-by: Chris Wilson + + util/cairo-trace/trace.c | 1 + + 1 file changed, 1 insertion(+) + +commit 9a29805f4e666577e5fe72fec62ecc76719862d9 +Author: Bryce Harrington +AuthorDate: Wed Jan 29 10:04:41 2014 -0800 +Commit: Bryce Harrington +CommitDate: Fri Jan 31 11:25:48 2014 -0800 + + test: Drop unused path variable in two recently added tests + + Signed-off-by: Bryce Harrington + Reviewed-by: Chris Wilson + + test/paint-with-alpha-group-clip.c | 2 -- + test/rotate-stroke-box.c | 2 -- + 2 files changed, 4 deletions(-) + +commit 0723290a6f7261be51312d0c53a7d4188a31bb1c +Author: Bryce Harrington +AuthorDate: Wed Jan 29 10:01:50 2014 -0800 +Commit: Bryce Harrington +CommitDate: Fri Jan 31 11:25:43 2014 -0800 + + test: Handle error in fgets call in ps-eps test + + Most likely this is just a theoretical problem since we just checked + feof, but this quells the following warning: + + ps-eps.c:216:8: warning: ignoring return value of ‘fgets’, declared with + attribute warn_unused_result [-Wunused-result] + + Signed-off-by: Bryce Harrington + Reviewed-by: Chris Wilson + + test/ps-eps.c | 6 +++++- + 1 file changed, 5 insertions(+), 1 deletion(-) + +commit 1b522f81e22fd320e6962ffb54121c10ece39275 +Author: Bryce Harrington +AuthorDate: Wed Jan 29 09:57:24 2014 -0800 +Commit: Bryce Harrington +CommitDate: Fri Jan 31 11:25:32 2014 -0800 + + test: Replace deprecated rsvg_init() in any2ppm test + + As of libsvg 2.35 calling g_type_init() is sufficient. + + Signed-off-by: Bryce Harrington + Reviewed-by: Chris Wilson + + configure.ac | 2 +- + test/any2ppm.c | 1 - + 2 files changed, 1 insertion(+), 2 deletions(-) + +commit 5de25951a43f51cade42549ae60e52ffb391d61e +Author: Behdad Esfahbod +AuthorDate: Mon Jan 27 17:34:00 2014 -0500 +Commit: Behdad Esfahbod +CommitDate: Mon Jan 27 17:34:00 2014 -0500 + + Preserve current-point in copy_path()/append_path() sequence + + Fixes path-currentpoint test. + + src/cairo-path-fixed.c | 3 +++ + 1 file changed, 3 insertions(+) + +commit 8d2e24479a1efbeeddced3574c1d9e92b8ee578d +Author: Behdad Esfahbod +AuthorDate: Mon Jan 27 17:31:12 2014 -0500 +Commit: Behdad Esfahbod +CommitDate: Mon Jan 27 17:32:58 2014 -0500 + + [tests] Add path-currentpoint + + Checks whether copy_path()/append_path() preserves current-point. + Currently failing. + + test/Makefile.sources | 1 + + test/path-currentpoint.c | 89 ++++++++++++++++++++++++++++++++++++++++++++++++ + 2 files changed, 90 insertions(+) + +commit 2a7f133639bed86a29dd9693cb78c0aa42eaff30 +Author: Uli Schlachter +AuthorDate: Sun Jan 19 20:06:25 2014 +0100 +Commit: Uli Schlachter +CommitDate: Sun Jan 19 20:06:25 2014 +0100 + + cairo svg: Use \n instead of /n in bitmap fonts + + Signed-off-by: Uli Schlachter + + src/cairo-svg-surface.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit b56b971141bf22ee3452b7f6f5e2dfd373b99e13 +Author: Adrian Johnson +AuthorDate: Sat Jan 11 20:49:05 2014 +1030 +Commit: Adrian Johnson +CommitDate: Sat Jan 11 21:03:58 2014 +1030 + + type1: strip space from end of font name + + src/cairo-type1-subset.c | 3 +++ + 1 file changed, 3 insertions(+) + +commit ee0e2b9272f6f21092fde7bee9b9237e682d4147 +Author: Adrian Johnson +AuthorDate: Sat Jan 11 20:57:44 2014 +1030 +Commit: Adrian Johnson +CommitDate: Sat Jan 11 21:03:58 2014 +1030 + + ps: add font DSC comments + + src/cairo-ps-surface.c | 34 +++++++++++++++++++++++++--------- + 1 file changed, 25 insertions(+), 9 deletions(-) + +commit 2d3ee70ed37ed2120d5c5f75277172620e32084c +Author: Adrian Johnson +AuthorDate: Sat Jan 11 19:09:55 2014 +1030 +Commit: Adrian Johnson +CommitDate: Sat Jan 11 20:57:34 2014 +1030 + + ps: cairo_set_page_size does not need to be in eps output + + src/cairo-ps-surface.c | 68 ++++++++++++++++++++++++++------------------------ + 1 file changed, 36 insertions(+), 32 deletions(-) + +commit 26d0edbc35504624cbe96e95e338351e219bb262 +Author: Adrian Johnson +AuthorDate: Sat Jan 11 10:42:33 2014 +1030 +Commit: Adrian Johnson +CommitDate: Sat Jan 11 10:46:46 2014 +1030 + + ps: use setpagedevice to set page size + + https://bugs.freedesktop.org/show_bug.cgi?id=73452 + + src/cairo-ps-surface.c | 40 +++++++++++++++++++++++++++++++++++++++- + 1 file changed, 39 insertions(+), 1 deletion(-) + +commit 97f6e2005d9cbc9c9dd7cc21445df7c08e084c83 +Author: Marek Kasik +AuthorDate: Thu Jan 9 17:28:32 2014 +0100 +Commit: Adrian Johnson +CommitDate: Fri Jan 10 20:51:08 2014 +1030 + + font: Generate PDFs with correct font names + + Escape PostScript names of loaded fonts. These can not + contain white spaces and delimiter characters when saving + them to a PostScript file or a PDF file. + + src/cairo-cff-subset.c | 2 ++ + src/cairo-scaled-font-subsets-private.h | 15 +++++++++++++ + src/cairo-scaled-font-subsets.c | 40 +++++++++++++++++++++++++++++++++ + src/cairo-truetype-subset.c | 35 +++-------------------------- + src/cairo-type1-subset.c | 9 +++----- + 5 files changed, 63 insertions(+), 38 deletions(-) + +commit f81b1406755a1e63f0c44996ca9ce3802b1877ba +Author: Adrian Johnson +AuthorDate: Wed Jan 8 07:45:20 2014 +1030 +Commit: Adrian Johnson +CommitDate: Wed Jan 8 07:45:20 2014 +1030 + + ps: fix imagemask with pattern source failure on some printers + + When /PaintProc is invoked the pattern dict is pushed onto the stack. + Ensure this dict is removed. + + https://bugs.freedesktop.org/show_bug.cgi?id=69485 + + src/cairo-ps-surface.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +commit 2afc941d7ffad3bd37a915e82342640772d4df5b +Author: Adrian Johnson +AuthorDate: Fri Jan 3 21:06:24 2014 +1030 +Commit: Adrian Johnson +CommitDate: Fri Jan 3 22:19:40 2014 +1030 + + ps: remove duplicate /Interpolate from image dictionary + + http://lists.freedesktop.org/archives/poppler/2014-January/010748.html + + src/cairo-ps-surface.c | 2 -- + 1 file changed, 2 deletions(-) + +commit 2974416dfc56e1b3a59001e482679f8601abd7d5 +Author: Adrian Johnson +AuthorDate: Thu Dec 26 17:18:41 2013 +1030 +Commit: Adrian Johnson +CommitDate: Thu Dec 26 17:18:41 2013 +1030 + + Add test for paint with alpha and clipping bug + + Add test case for https://bugs.freedesktop.org/show_bug.cgi?id=68382 + + Something has regressed in the recording surface. All the recording + surface based backends lose the alpha from the paint_With_alpha. + + test/Makefile.sources | 1 + + test/paint-with-alpha-group-clip.c | 62 +++++++++++++++++++++ + test/reference/paint-with-alpha-group-clip.ref.png | Bin 0 -> 135 bytes + 3 files changed, 63 insertions(+) + +commit 5cafaa7b3bc045a7a26a11986c16fd9419a09922 +Author: Adrian Johnson +AuthorDate: Thu Dec 26 15:28:29 2013 +1030 +Commit: Adrian Johnson +CommitDate: Thu Dec 26 15:28:29 2013 +1030 + + pdf: fix rectangle stroke with non rectilinear pen + + src/cairo-pdf-operators.c | 4 +++- + 1 file changed, 3 insertions(+), 1 deletion(-) + +commit acd78d721e9d1c9c74c88889fbc4580700962ed1 +Author: Adrian Johnson +AuthorDate: Thu Dec 26 15:27:30 2013 +1030 +Commit: Adrian Johnson +CommitDate: Thu Dec 26 15:27:30 2013 +1030 + + Add test for rectangle path optimization with non rectilinear pen + + This fails on pdf/ps. + + test/Makefile.sources | 1 + + test/reference/rotate-stroke-box.ref.png | Bin 0 -> 150 bytes + test/rotate-stroke-box.c | 51 +++++++++++++++++++++++++++++++ + 3 files changed, 52 insertions(+) + +commit 040a9f678bfb0f0b89a0273b729c4e9f2bc23e4f +Author: Behdad Esfahbod +AuthorDate: Mon Dec 16 19:27:02 2013 -0500 +Commit: Behdad Esfahbod +CommitDate: Mon Dec 16 19:27:38 2013 -0500 + + Check for XRenderSolidFill() + + configure.ac | 2 +- + src/cairo-xlib-xrender-private.h | 4 ++++ + 2 files changed, 5 insertions(+), 1 deletion(-) + +commit dcbe16eb40b488f89f2398181f4c3f8a65f84b52 +Author: Adrian Johnson +AuthorDate: Sat Dec 7 15:48:26 2013 +1030 +Commit: Adrian Johnson +CommitDate: Sat Dec 7 15:54:49 2013 +1030 + + pdf/ps: avoid outputting excess decimal places in matrices + + Sometimes as a result of rounding errors in matrix transformations the + matrices in ps/pdf output look like: + + 0.000000000000000061 1 1 -0.000000000000000061 0 842 cm + + This patch rounds to zero matrix elements that are very small compared to + other elements in the same matrix. + + src/cairo-output-stream-private.h | 5 +++++ + src/cairo-output-stream.c | 39 ++++++++++++++++++++++++++++++++++ + src/cairo-pdf-operators.c | 17 +++++---------- + src/cairo-pdf-surface.c | 44 +++++++++++++++++---------------------- + src/cairo-ps-surface.c | 40 ++++++++++++++--------------------- + 5 files changed, 84 insertions(+), 61 deletions(-) + +commit 31eff5c6eb57ad379689748fd8c60a5ffe0ba481 +Author: Uli Schlachter +AuthorDate: Sat Nov 16 19:05:35 2013 +0100 +Commit: Uli Schlachter +CommitDate: Sat Nov 16 19:05:35 2013 +0100 + + Correct usage of CAIRO_STACK_ARRAY_LENGTH + + This macro wants the array type as its argument and calls sizeof() on it + internally. + + Signed-off-by: Uli Schlachter + + src/cairo-xcb-surface-render.c | 2 +- + src/cairo-xlib-render-compositor.c | 2 +- + src/cairo-xlib-surface-shm.c | 4 ++-- + 3 files changed, 4 insertions(+), 4 deletions(-) + +commit 8c73949e44d4201fafc899693964c934f7072fa6 +Author: Henry Song +AuthorDate: Tue Nov 12 09:53:29 2013 -0800 +Commit: Martin Robinson +CommitDate: Wed Nov 13 17:09:29 2013 -0800 + + gl: Fix one off issue in context cleanup + + ctx->vertex_shaders is only CAIRO_GL_VAR_TYPE_MAX large, so we should + abort the loop before the index is equal to CAIRO_GL_VAR_TYPE_MAX. + + Signed-off-by: Martin Robinson + + src/cairo-gl-shaders.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 56a195a76554abe1d5567c733ba679058fe01303 +Author: Bryce Harrington +AuthorDate: Wed Oct 30 18:43:42 2013 -0700 +Commit: Bryce Harrington +CommitDate: Thu Oct 31 20:34:15 2013 -0700 + + Fix SSIZE_T definition problem when making with MSYS on Windows7 + + Patch provided by Martin Schlemmer on the + mailing list. + + Reviewed-by: Bryce Harrington + + util/cairo-missing/cairo-missing.h | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 66f4140e73e423bfed640cfde5cb50c08cf29e2e +Author: Kouhei Sutou +AuthorDate: Mon Oct 28 22:37:54 2013 +0900 +Commit: Bryce Harrington +CommitDate: Thu Oct 31 20:34:04 2013 -0700 + + cairo_create(): Add finished surface check + + Without this change, the following program crashes: + + #include + #include + + int + main(int argc, char **argv) + { + cairo_t *cr; + cairo_surface_t *finished_surface; + + finished_surface = cairo_svg_surface_create ("/tmp/xxx.svg", 1.0, 1.0); + cairo_surface_finish (finished_surface); + + cr = cairo_create (finished_surface); + cairo_destroy (cr); + + cairo_surface_destroy (finished_surface); + + return 0; + } + + Reviewed-by: Bryce Harrington + + src/cairo.c | 2 ++ + 1 file changed, 2 insertions(+) + +commit b9263fea14c4c6266140205c0bffb3ae93750999 +Author: egag +AuthorDate: Wed Oct 9 14:14:02 2013 +0200 +Commit: Bryce Harrington +CommitDate: Thu Oct 31 20:33:33 2013 -0700 + + Fixes stroke-clipped, i.c. of a dashed stroke + + Similar to 1f4d05b55c96347aa4240190fda27f951b00c539 + 'Fix calling '_cairo_spline_intersect' for in-bounds checking of splines' + + Reviewed-by: Bryce Harrington + + src/cairo-path-stroke-traps.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 98fef3cef2d0f7f463a2e4f9f1b35b09f7b6ea77 +Author: Søren Sandmann Pedersen +AuthorDate: Wed Oct 9 15:53:16 2013 -0400 +Commit: Søren Sandmann Pedersen +CommitDate: Tue Oct 22 14:27:43 2013 -0400 + + _cairo_color_double_to_short(): Use standard rounding algorithm + + The _cairo_color_double_to_short() function converts a double + precision floating point value in the range of [0.0, 1.0] to a + uint16_t integer by dividing the [0.0, 1.0] range into 65536 + equal-sized intervals and then associating each interval with an + integer. + + Under the assumption that an integer i corresponds to the real value i + / 65535.0 this algorithm introduces more error than necessary as can + be seen from the following picture showing the analogous + transformation for two-bit integers: + + +-----------+-----------+-----------+-----------+ + 0b00 | 0b01 | 0b10 | 0b11 + +-----------+-----------+-----------+-----------+ + + which shows that some floating point values are not converted to the + integer that would minimize the error in value that that integer + corresponds to. + + Instead, this patch uses standard rounding, which makes the diagram + look like this: + + +-------+---------------+---------------+-------+ + 0b00 | 0b01 | 0b10 | 0b11 + +-------+---------------+---------------+-------+ + + It's clear that if the values corresponding to the given integers are + fixed, then it's not possible to decrease the resulting error by + moving any of the interval boundaries. + + See this thread for more information: + + http://lists.freedesktop.org/archives/cairo/2013-October/024691.html + + Reference images updated: + + pthread-similar.ref.png + record-paint-alpha.ref.png + record90-paint-alpha.argb32.ref + record90-paint-alpha.rgb24.ref.png + xcb-huge-image-shm.ref.png + xcb-huge-subimage.ref.png + + All of these have only one-step differences to the old images. + + src/cairo-color.c | 11 +++-------- + test/reference/pthread-similar.ref.png | Bin 170 -> 176 bytes + test/reference/record-paint-alpha.ref.png | Bin 256 -> 245 bytes + test/reference/record90-paint-alpha.argb32.ref.png | Bin 105 -> 105 bytes + test/reference/record90-paint-alpha.rgb24.ref.png | Bin 105 -> 105 bytes + test/reference/xcb-huge-image-shm.ref.png | Bin 97 -> 97 bytes + test/reference/xcb-huge-subimage.ref.png | Bin 97 -> 97 bytes + 7 files changed, 3 insertions(+), 8 deletions(-) + +commit 6f05ecf488314e4b0c6c6b0110963c449bebe7d7 +Author: Adrian Johnson +AuthorDate: Fri Oct 11 19:59:50 2013 +1030 +Commit: Adrian Johnson +CommitDate: Fri Oct 11 19:59:50 2013 +1030 + + type1-subset: don't rename glyphs used by seac operator + + Bug 70364 + + src/cairo-type1-subset.c | 13 +++++++------ + 1 file changed, 7 insertions(+), 6 deletions(-) + +commit f1eefee985b4361386a167e80d9836593ade59b9 +Author: Chris Wilson +AuthorDate: Sun Oct 6 09:57:44 2013 +0100 +Commit: Chris Wilson +CommitDate: Sun Oct 6 09:57:44 2013 +0100 + + win32: Reorder font declarations to be in natural order + + Reported-by: John Emmas + Signed-off-by: Chris Wilson + + src/win32/cairo-win32-font.c | 90 +++++++++++++++++++++----------------------- + 1 file changed, 43 insertions(+), 47 deletions(-) + +commit 49366c5e9e7d5afd0daef4c53a41472e020145eb +Author: Uli Schlachter +AuthorDate: Thu Oct 3 17:53:34 2013 +0200 +Commit: Uli Schlachter +CommitDate: Thu Oct 3 17:53:34 2013 +0200 + + cairo-xlib: Fix out of bounds array access in format cache + + The cairo-xlib backend maintains a mapping form cairo_format_t to xrender + formats. This is done via an array. The size of this array is + CAIRO_FORMAT_RGB16_565 + 1 which evaluates to 5. + + However, CAIRO_FORMAT_RGB30 has the numeric value 5, too. Thus, using this value + as an index into the array would actually read the following force_precision + field from cairo_xlib_display_t. + + This could be triggered by passing CAIRO_FORMAT_RGB30 to + _cairo_xlib_display_get_xrender_format(). From a quick look, I didn't find any + code which would allow doing this, but neither did I find anything allowing + CAIRO_FORMAT_RGB16_565, so it's better to handle this correctly than assert()ing + for this to never happen. + + Signed-off-by: Uli Schlachter + + src/cairo-xlib-private.h | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 217bed84dda43f018e59a4d9a229f63095e1aa06 +Author: Uli Schlachter +AuthorDate: Thu Oct 3 17:44:27 2013 +0200 +Commit: Uli Schlachter +CommitDate: Thu Oct 3 17:44:27 2013 +0200 + + Revert "[xlib] Fast-path the likely case of retrieving a known xrender_format" + + This reverts commit 09a2b2ed3189fe12483cbd673c24ceddc2c20f3f. + + Back in 2009, _cairo_xlib_display_get_xrender_format() had to acquire a lock to + do its job. The above commit added a fast-path which avoided the lock in most + cases. + + However, in 2010 commit f74ad37e66bbdcc4d727ed6d931dde870d84c2f4 modified the + locking in the cairo-xlib backend and now this function never takes any locks. + + Thus, the fast-path that was added a year earlier now just does the same thing + that the regular code does and the list of cached formats was checked twice. + Reverting the earlier commit fixes this. + + Signed-off-by: Uli Schlachter + + src/cairo-xlib-display.c | 6 ------ + 1 file changed, 6 deletions(-) + +commit 592e6a98031cccfae8551bcd86c1f5134726a4f6 +Author: Uli Schlachter +AuthorDate: Sun Sep 15 14:05:42 2013 +0200 +Commit: Uli Schlachter +CommitDate: Thu Oct 3 16:59:11 2013 +0200 + + README: Don't mention XFAIL_TESTS anymore + + The variable XFAIL_TESTS is not used anymore since commit e90073f7ddc. + + Instead, we now have special reference images that show the wrong output and the + test suite fails a test if it does not match the expected, wrong output. + + Signed-off-by: Uli Schlachter + + test/README | 19 +++++++++---------- + 1 file changed, 9 insertions(+), 10 deletions(-) + +commit bc89be2fff92968a1b585e75371ae2a8a26592e9 +Author: Uli Schlachter +AuthorDate: Sun Sep 29 13:12:55 2013 +0200 +Commit: Uli Schlachter +CommitDate: Thu Oct 3 16:58:52 2013 +0200 + + Remove XFAIL_TESTS from Makefile.am + + The variable XFAIL_TESTS is not used anymore since commit e90073f7ddc. + + The description for the known failures are moved into the respective tests as + comments. + + The following descriptions were dropped: + + - surface-pattern-big: Didn't really explain the failure + - big-line: Test isn't failing any more + - self-intersecting: Only XFAIL on quartz, but description doesn't match this + + The following tests don't have a xfail reference image and seem to fail just + because of not having a reference image at all (I kept their description for + now): + + big-trap, long-lines, self-copy-overlap + + Signed-off-by: Uli Schlachter + + test/Makefile.am | 73 ------------------------------------------ + test/alpha-similar.c | 4 +++ + test/big-trap.c | 1 + + test/degenerate-dash.c | 5 +++ + test/degenerate-path.c | 4 +++ + test/device-offset-scale.c | 4 +++ + test/in-fill-empty-trapezoid.c | 5 +++ + test/long-lines.c | 1 + + test/scale-offset-image.c | 1 + + test/self-copy-overlap.c | 5 +++ + 10 files changed, 30 insertions(+), 73 deletions(-) + +commit 5e6e4536716197ea0605732d32959c57ea8bb140 +Author: Adrian Johnson +AuthorDate: Sun Sep 29 22:23:31 2013 +0930 +Commit: Adrian Johnson +CommitDate: Sun Sep 29 22:23:31 2013 +0930 + + pdf: stencil masks may be opaque + + src/cairo-pdf-surface.c | 11 +++++++---- + 1 file changed, 7 insertions(+), 4 deletions(-) + +commit d3a8d5a9c266b79b0059dd309b5e3eff3ce81a64 +Author: Adrian Johnson +AuthorDate: Sun Sep 29 22:18:06 2013 +0930 +Commit: Adrian Johnson +CommitDate: Sun Sep 29 22:18:06 2013 +0930 + + pdf: Support stencil masks with jpeg/jpx/jbig2 embedding + + src/cairo-pdf-surface.c | 204 +++++++++++++++++++++++++++++++----------------- + 1 file changed, 131 insertions(+), 73 deletions(-) + +commit 07940ecd6055e29addcdb4c14e4449a06a30bf4a +Author: Adrian Johnson +AuthorDate: Sun Sep 29 12:42:59 2013 +0930 +Commit: Adrian Johnson +CommitDate: Sun Sep 29 13:08:02 2013 +0930 + + pdf: combine source and mask images into single image + + Since PDF stores the alpha component of images in a separate stream + which can have a different resolution and encoding to the color + components we can optimize the case where the source and mask are both images. + + If the source and mask are both images with the same extents and the + source is opaque, combine the images into a single PDF image (ie the + source is written the the image stream and the mask is written to the + smask stream). + + src/cairo-pdf-surface-private.h | 2 + + src/cairo-pdf-surface.c | 466 +++++++++++++++++++++++++++++----------- + 2 files changed, 347 insertions(+), 121 deletions(-) + +commit c1ac8db7e60bcec8235b09729b34154e95790534 +Author: Chris Wilson +AuthorDate: Fri Sep 27 16:35:08 2013 +0100 +Commit: Chris Wilson +CommitDate: Fri Sep 27 16:37:24 2013 +0100 + + trace: Fix operand emission + + Recent updates (in the past couple of years) to firefox have exposed + numerous bugs in the way we emit the operands. A few off-by-ones, + missing surfaces and outright bugs all of which are intermixed into + producing a corrupt stack. + + Reported-by: Siarhei Siamashka + Signed-off-by: Chris Wilson + + util/cairo-trace/trace.c | 232 +++++++++++++++++++++++++++++++++++++---------- + 1 file changed, 182 insertions(+), 50 deletions(-) + +commit 0c2faf6621c4983e2ec2bea7c722a5cd3d89cc6d +Author: Uli Schlachter +AuthorDate: Fri Sep 27 15:37:08 2013 +0200 +Commit: Uli Schlachter +CommitDate: Fri Sep 27 15:42:24 2013 +0200 + + fill_reduces_to_source(): Handle failure of color_to_pixel() + + The function color_to_pixel() can fail for unsupported pixman image formats, but + fill_reduces_to_source() ignored this possibility. + + Fix this by using the return value of color_to_pixel(): + + Fixes the following compiler warnings: + + cairo-image-compositor.c: In function 'fill_boxes': + cairo-image-compositor.c:349:15: warning: 'pixel' may be used uninitialized in this function [-Wmaybe-uninitialized] + cairo-image-compositor.c: In function 'fill_rectangles': + cairo-image-compositor.c:304:18: warning: 'pixel' may be used uninitialized in this function [-Wmaybe-uninitialized] + + Signed-off-by: Uli Schlachter + + src/cairo-image-compositor.c | 3 +-- + 1 file changed, 1 insertion(+), 2 deletions(-) + +commit 38a925460b35c82833dc4d508e7a0e7e84242318 +Author: Bryce Harrington +AuthorDate: Thu Sep 26 10:58:56 2013 -0700 +Commit: Bryce Harrington +CommitDate: Thu Sep 26 10:59:14 2013 -0700 + + test: Drop unnecessary math.h include + + Commit 0ac81988 refactored away fmin; nothing else from math.h is + needed. + + test/pixman-downscale.c | 1 - + 1 file changed, 1 deletion(-) + +commit 337ab1f8d9e29086bfb4001508b28835b41c6390 +Author: Chris Wilson +AuthorDate: Tue Sep 17 16:28:19 2013 +0100 +Commit: Chris Wilson +CommitDate: Tue Sep 17 16:37:47 2013 +0100 + + font: Push the last reference dec into the backend->destroy() callback + + In order to close a race between locking the backend and resurrecting a + font via the cache, we need to keep the font face alive until after we + take the backend lock. Once we have that lock, we can drop our reference + and test if that was the last. Otherwise we must abort the destroy(). + + This fixes the double-free exposed by multithreaded applications trying + to create and destroy the same font concurrently. + + Reported-by: Weeble + Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=69470 + Signed-off-by: Chris Wilson + + src/cairo-font-face.c | 43 +++++++++++++++++++++++++++++++------------ + src/cairo-ft-font.c | 18 ++++++++---------- + src/cairo-quartz-font.c | 3 ++- + src/cairo-toy-font-face.c | 7 ++++--- + src/cairo-user-font.c | 2 +- + src/cairoint.h | 7 +++++-- + src/win32/cairo-win32-font.c | 7 ++++--- + 7 files changed, 55 insertions(+), 32 deletions(-) + +commit 0ac81988c199df1a6652dc0ea72627122bf95c6c +Author: Chris Wilson +AuthorDate: Tue Sep 17 08:32:29 2013 +0100 +Commit: Chris Wilson +CommitDate: Tue Sep 17 08:37:38 2013 +0100 + + test/pixman-downscale: Open-code fmin() + + fmin() requires a bump to either _XOPEN_SOURCE_ >= 600 (POSIX 2004) or + c99 - which is a needless dependency for a single simple routine. + + Signed-off-by: Chris Wilson + + test/pixman-downscale.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 9c75065ecefe18557c9d56e1c973215f01f3cd40 +Author: Uli Schlachter +AuthorDate: Mon Sep 16 12:45:21 2013 +0200 +Commit: Uli Schlachter +CommitDate: Mon Sep 16 12:59:03 2013 +0200 + + xcb: Remove useless error handling + + All the *_reply() functions in XCB return a pointer to their result and as last + argument they get a xcb_generic_error_t** where pointers to errors are stored, + if any occurs. + + However, a request can either fail or succeed. This means that if the returned + result is a NULL pointer, then an error occurred and the other way around: If + the error pointer is set to non-NULL, then the function must have returned NULL. + + Thus, all the code, which just checks if an error occurred and which does not + care about the exact error code, does not need to get the error pointer at all. + In this case, xcb will free() the error internally. + + While doing this, I noticed that _cairo_xcb_connection_get_image() always + succeeds and thus its return value can be replaced with the GetImage result. + + Signed-off-by: Uli Schlachter + + src/cairo-xcb-connection-core.c | 32 ++++++++++---------------------- + src/cairo-xcb-connection-shm.c | 6 ++---- + src/cairo-xcb-private.h | 5 ++--- + src/cairo-xcb-surface.c | 23 ++++++++--------------- + 4 files changed, 22 insertions(+), 44 deletions(-) + +commit 440624cdf2bd55ac1620e697cc481a8fbbb1c657 +Author: Uli Schlachter +AuthorDate: Sun Sep 15 15:00:02 2013 +0200 +Commit: Uli Schlachter +CommitDate: Mon Sep 16 12:58:44 2013 +0200 + + test/multi-page: Fix use-after-free + + Commit f9dcd07d22a5269 changed the way the file name is allocated and introduced + a use-after-free in doing so. + + Signed-off-by: Uli Schlachter + + test/multi-page.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +commit 1d00550784d052e9b72b3c91d5769f771033037c +Author: Uli Schlachter +AuthorDate: Sun Sep 15 14:50:20 2013 +0200 +Commit: Uli Schlachter +CommitDate: Mon Sep 16 12:58:38 2013 +0200 + + image: Handle PIXMAN_a8r8g8b8_sRGB in switch + + Fixes the following compiler warning: + + cairo-image-surface.c: In function '_cairo_format_from_pixman_format': + cairo-image-surface.c:93: warning: enumeration value 'PIXMAN_a8r8g8b8_sRGB' not + handled in switch + + Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=58726 + Signed-off-by: Uli Schlachter + + src/cairo-image-surface.c | 3 +++ + 1 file changed, 3 insertions(+) + +commit 966bf2fe6a8c29f4d10b20f982a4ab198a441c78 +Author: Uli Schlachter +AuthorDate: Sun Sep 15 16:58:05 2013 +0200 +Commit: Uli Schlachter +CommitDate: Mon Sep 16 12:57:57 2013 +0200 + + check-doc-syntax: Don't hardcode path to awk + + Instead of expecting awk in /usr/bin, this commit changes the code to call awk + through a shell so that $PATH is searched. + + Since this awk script shouldn't really be called manually, this is done by + removing the shebang from the awk script, marking it non-executable and fixing + up the caller. + + Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=67674 + Reviewed-by: Bryce Harrington + Signed-off-by: Uli Schlachter + + src/check-doc-syntax.awk | 2 -- + src/check-doc-syntax.sh | 2 +- + 2 files changed, 1 insertion(+), 3 deletions(-) + +commit a8a805b8d9bbbfed9986ecc71e76859a5353730f +Author: Uli Schlachter +AuthorDate: Fri Sep 13 22:18:08 2013 +0200 +Commit: Uli Schlachter +CommitDate: Mon Sep 16 12:55:01 2013 +0200 + + cairo-gobject: Require at least glib 2.14 + + cairo-gobject uses g_once_init_enter() and g_once_init_leave(). These functions + were added in glib 2.14 and thus cairo needs at least this version for its + gobject helper functions. + + Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=69239 + Signed-off-by: Uli Schlachter + + configure.ac | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 412a4c34d9207c339fd16a99756ea96082dc993f +Author: Adrian Johnson +AuthorDate: Sun Sep 15 21:27:50 2013 +0930 +Commit: Adrian Johnson +CommitDate: Sun Sep 15 21:27:50 2013 +0930 + + test: update mime-data to test jbig2 mime types + + test/global.jb2 | Bin 0 -> 151 bytes + test/image1.jb2 | Bin 0 -> 143 bytes + test/image2.jb2 | Bin 0 -> 92 bytes + test/mime-data.c | 97 ++++++++++++++++++++++++++- + test/reference/mime-data.base.argb32.ref.png | Bin 185 -> 243 bytes + test/reference/mime-data.base.rgb24.ref.png | Bin 185 -> 243 bytes + test/reference/mime-data.pdf.ref.png | Bin 6482 -> 7563 bytes + test/reference/mime-data.ps.ref.png | Bin 4554 -> 4705 bytes + test/reference/mime-data.ref.png | Bin 185 -> 243 bytes + test/reference/mime-data.script.ref.png | Bin 2041 -> 2130 bytes + test/reference/mime-data.svg.ref.png | Bin 6264 -> 6437 bytes + 11 files changed, 96 insertions(+), 1 deletion(-) + +commit 5c0caa6f82374ec38a33d5f25a725f60bc121887 +Author: Adrian Johnson +AuthorDate: Sat Sep 14 20:59:56 2013 +0930 +Commit: Adrian Johnson +CommitDate: Sun Sep 15 20:50:46 2013 +0930 + + pdf: support JBIG2 mime data + + JBIG2 images may have shared global data that is stored in a separate + stream in PDF. The CAIRO_MIME_TYPE_JBIG2 mime type is for the JBIG2 + data for each image. All images that use global data must also set + CAIRO_MIME_TYPE_JBIG2_GLOBAL_ID to a unique identifier. One of the + images must also set CAIRO_MIME_TYPE_JBIG2_GLOBAL to the global + data. The global data will be shared by all JBIG2 images with the same + CAIRO_MIME_TYPE_JBIG2_GLOBAL_ID. + + src/cairo-device.c | 1 + + src/cairo-error-private.h | 1 + + src/cairo-image-info-private.h | 5 ++ + src/cairo-image-info.c | 135 +++++++++++++++++++++++++++++ + src/cairo-misc.c | 2 + + src/cairo-pdf-surface-private.h | 8 ++ + src/cairo-pdf-surface.c | 182 ++++++++++++++++++++++++++++++++++++++++ + src/cairo-region.c | 1 + + src/cairo-spans.c | 2 + + src/cairo-surface.c | 4 +- + src/cairo.c | 4 +- + src/cairo.h | 6 ++ + 12 files changed, 349 insertions(+), 2 deletions(-) + +commit 2d6705671a900251f00c6b59375bd4d23ec6b4d0 +Author: Adrian Johnson +AuthorDate: Fri Sep 13 22:14:49 2013 +0930 +Commit: Adrian Johnson +CommitDate: Fri Sep 13 22:14:49 2013 +0930 + + ps: fix embedding of mime data + + src/cairo-ps-surface.c | 16 ++++++++++------ + 1 file changed, 10 insertions(+), 6 deletions(-) + +commit 266d6e71566ac8c5e360c0b32fb78e23e6a06168 +Author: Adrian Johnson +AuthorDate: Fri Sep 13 21:32:42 2013 +0930 +Commit: Adrian Johnson +CommitDate: Fri Sep 13 22:01:02 2013 +0930 + + pdf: fix embedding of mime data that has been broken since 0a10982f + + For some reason the mime-data test is not detecting this failure. + + src/cairo-pdf-surface.c | 23 ++++++++++++----------- + 1 file changed, 12 insertions(+), 11 deletions(-) + +commit 5390c2bbca3f1331f4fc831ba1381cc64e0162c6 +Author: Bryce W. Harrington +AuthorDate: Thu Sep 12 22:55:02 2013 +0000 +Commit: Uli Schlachter +CommitDate: Fri Sep 13 12:58:11 2013 +0200 + + test: Document use of -k and CAIRO_TEST_TARGET to run test subsets + + Signed-off-by: Bryce Harrington + Signed-off-by: Uli Schlachter + + test/README | 6 ++++++ + 1 file changed, 6 insertions(+) + +commit 640eb0206738e1d1bfd9beebaf0dcb6ac0e07584 +Author: Bryce W. Harrington +AuthorDate: Thu Sep 12 22:55:02 2013 +0000 +Commit: Uli Schlachter +CommitDate: Fri Sep 13 12:57:42 2013 +0200 + + test: Space out keywords for clarity + + As another nitpick, a comma alone is legal for separating keywords, but + most tests use a comma and a space. Update the few tests that don't, + to make this consistent. + + Signed-off-by: Bryce Harrington + Signed-off-by: Uli Schlachter + + test/image-bug-710072.c | 4 ++-- + test/mesh-pattern-accuracy.c | 2 +- + test/mesh-pattern-conical.c | 2 +- + test/mesh-pattern-control-points.c | 2 +- + test/mesh-pattern-fold.c | 2 +- + test/mesh-pattern-overlap.c | 2 +- + test/mesh-pattern-transformed.c | 2 +- + test/mesh-pattern.c | 2 +- + test/record1414x.c | 4 ++-- + 9 files changed, 11 insertions(+), 11 deletions(-) + +commit a6ace0cf6b96930c08397c64bffabc4b201ab4e8 +Author: Bryce W. Harrington +AuthorDate: Thu Sep 12 22:55:02 2013 +0000 +Commit: Uli Schlachter +CommitDate: Fri Sep 13 12:57:17 2013 +0200 + + test: Comma separate keywords + + The parser accepts spaces as separtors between keywords, so this is nit + picky. But only a minority of tests don't follow the comma convention, + so change them to be consistent. + + Signed-off-by: Bryce Harrington + Signed-off-by: Uli Schlachter + + test/a1-bug.c | 2 +- + test/arc-direction.c | 2 +- + test/caps-joins-curve.c | 2 +- + test/caps-tails-curve.c | 2 +- + test/caps.c | 8 ++++---- + test/clip-empty-group.c | 2 +- + test/drunkard-tails.c | 2 +- + test/joins.c | 2 +- + test/partial-coverage.c | 22 +++++++++++----------- + test/rectilinear-dash-scale.c | 4 ++-- + test/rectilinear-dash.c | 2 +- + test/scale-offset-image.c | 2 +- + test/scale-offset-similar.c | 2 +- + test/unclosed-strokes.c | 2 +- + 14 files changed, 28 insertions(+), 28 deletions(-) + +commit aacc5e76ed39b69595194a23e94bbd6483dd88a6 +Author: Bryce W. Harrington +AuthorDate: Thu Sep 12 22:55:01 2013 +0000 +Commit: Uli Schlachter +CommitDate: Fri Sep 13 12:56:16 2013 +0200 + + gitignore: Ignore build chaff when configuring with --enable-gtk-doc + + When this flag is enabled in configure, a couple extra build files are + created, which git should just ignore. + + Signed-off-by: Bryce Harrington + Signed-off-by: Uli Schlachter + + .gitignore | 2 ++ + 1 file changed, 2 insertions(+) + +commit ac5f3e2b8ef1937b3e6e3a3f03773cf471e46cc3 +Author: Bryce Harrington +AuthorDate: Wed Sep 11 09:59:01 2013 -0700 +Commit: Uli Schlachter +CommitDate: Wed Sep 11 19:32:08 2013 +0200 + + test: Move cairo_pattern_set_filter to after cairo_set_source_surface + + Also update the image.arg32 reference images, since for now we're just + accepting pixman's output as truth. This fixes up several tests: + + was is + Tests run: 420 420 + Passed: 224 261 + Failed: 195 159 + Expected Failed: 0 0 + Error: 0 0 + Crashed: 0 0 + Untested: 0 0 + Total: 420 420 + + Thanks to psychon for finding the code error in the test. + + test/pixman-downscale.c | 2 +- + test/reference/pixman-downscale-fast-95.ref.png | Bin 685 -> 299 bytes + test/reference/pixman-downscale-nearest-95.ref.png | Bin 685 -> 299 bytes + 3 files changed, 1 insertion(+), 1 deletion(-) + +commit ade7089f72e0d147db961dec88d3cb1b2280a438 +Author: Bryce Harrington +AuthorDate: Wed Jul 10 17:27:28 2013 -0700 +Commit: Uli Schlachter +CommitDate: Wed Sep 11 19:32:08 2013 +0200 + + test: Exercise image scaling quality when downscaling + + This adds testcases for the various cairo filter options, each of which + match to corresponding pixman filters. Use the 'downscale' keyword if + invoking tests using cairo-test-suite. + + The 24-pixel reference images were produced from quad-color.png using + Gimp's Scale Image command with Interpolation set to None. It is + assumed that all filters should handle a 1:4 scaling cleanly with no + antialiased blurring. + + The 95-pixel reference images assume differing types of antialiasing + based on the quality level. We are using the image.argb32 output as + reference here. Potentially some other rendering algorithm could + conceivably provide better results in the future. + + The 96-pixel reference images are simply copies of the original + quad-color.png file. It is assumed that 1:1 downscaling operations + should produce no visible change to the original image. + + Signed-off-by: Bryce Harrington + + test/pixman-downscale.c | 146 +++++++++++++++++++-- + test/reference/pixman-downscale-24.ref.png | Bin 191 -> 0 bytes + test/reference/pixman-downscale-95.ref.png | Bin 285 -> 0 bytes + test/reference/pixman-downscale-96.ref.png | Bin 301 -> 0 bytes + test/reference/pixman-downscale-best-24.ref.png | Bin 0 -> 191 bytes + test/reference/pixman-downscale-best-95.ref.png | Bin 0 -> 685 bytes + test/reference/pixman-downscale-best-96.ref.png | Bin 0 -> 301 bytes + .../reference/pixman-downscale-bilinear-24.ref.png | Bin 0 -> 191 bytes + .../reference/pixman-downscale-bilinear-95.ref.png | Bin 0 -> 685 bytes + .../reference/pixman-downscale-bilinear-96.ref.png | Bin 0 -> 301 bytes + test/reference/pixman-downscale-fast-24.ref.png | Bin 0 -> 191 bytes + test/reference/pixman-downscale-fast-95.ref.png | Bin 0 -> 685 bytes + test/reference/pixman-downscale-fast-96.ref.png | Bin 0 -> 301 bytes + test/reference/pixman-downscale-good-24.ref.png | Bin 0 -> 191 bytes + test/reference/pixman-downscale-good-95.ref.png | Bin 0 -> 685 bytes + test/reference/pixman-downscale-good-96.ref.png | Bin 0 -> 301 bytes + test/reference/pixman-downscale-nearest-24.ref.png | Bin 0 -> 191 bytes + test/reference/pixman-downscale-nearest-95.ref.png | Bin 0 -> 685 bytes + test/reference/pixman-downscale-nearest-96.ref.png | Bin 0 -> 301 bytes + 19 files changed, 132 insertions(+), 14 deletions(-) + +commit 0f554c36d3edf341a9aef8eedfde57f3be635500 +Author: Bryce Harrington +AuthorDate: Wed Jul 10 16:29:56 2013 -0700 +Commit: Uli Schlachter +CommitDate: Wed Sep 11 19:32:08 2013 +0200 + + test: Test a variety of scales when downscaling + + Downscaling from 96 to 24 is easy since it's an even multiple, so try + scaling by -1 pixel too. + + This adds a 1:1 scaling test case as well, which should pass through the + image unchanged. + + Signed-off-by: Bryce Harrington + + test/pixman-downscale.c | 21 +++++++++++++++++---- + test/reference/pixman-downscale-24.ref.png | Bin 0 -> 191 bytes + test/reference/pixman-downscale-95.ref.png | Bin 0 -> 285 bytes + test/reference/pixman-downscale-96.ref.png | Bin 0 -> 301 bytes + test/reference/pixman-downscale.ref.png | Bin 191 -> 0 bytes + 5 files changed, 17 insertions(+), 4 deletions(-) + +commit 642b6d80917feeea878a11f8aaf179b7a1e5392d +Author: Bryce Harrington +AuthorDate: Wed Jul 10 10:19:21 2013 -0700 +Commit: Uli Schlachter +CommitDate: Wed Sep 11 19:32:08 2013 +0200 + + test: Add test for image downscaling + + This adds pixman-downscale.c, which tests correctness of PNG images + scaled down using pixman routines. + + Signed-off-by: Bryce Harrington + + test/Makefile.sources | 1 + + test/pixman-downscale.c | 73 ++++++++++++++++++++++++++++++++ + test/quad-color.png | Bin 0 -> 301 bytes + test/reference/pixman-downscale.ref.png | Bin 0 -> 191 bytes + 4 files changed, 74 insertions(+) + +commit 7270f22af3d1ad53f033023438e915e11bf88407 +Author: Martin Robinson +AuthorDate: Wed Sep 11 08:52:31 2013 -0700 +Commit: Martin Robinson +CommitDate: Wed Sep 11 08:52:31 2013 -0700 + + gl: Extend oversize check to cairo_gl_surface_create_for_texture + + If a texture is too large to render to via a framebuffer, then eagerly + fail with an error surface. + + src/cairo-gl-surface.c | 5 +++++ + 1 file changed, 5 insertions(+) + +commit 279d5a2ed1aaa6d5dbfbeab9e4b4ffa6a66aa6f3 +Author: Uli Schlachter +AuthorDate: Wed Sep 11 15:28:29 2013 +0200 +Commit: Uli Schlachter +CommitDate: Wed Sep 11 15:28:29 2013 +0200 + + recording: Correctly determine alpha of all surfaces + + This code has special cases for recording and image surfaces. For all other + kinds of source surfaces, has_bilevel_alpha was not modified, even though the + source surface could have an alpha channel. + + Fix this by using the same checks as in the general path at the end of this + function. + + Signed-off-by: Uli Schlachter + + src/cairo-recording-surface.c | 3 +++ + 1 file changed, 3 insertions(+) + +commit a6f51fed985f7db37c672bab0b5dab3f89e78282 +Author: Uli Schlachter +AuthorDate: Wed Sep 11 15:24:53 2013 +0200 +Commit: Uli Schlachter +CommitDate: Wed Sep 11 15:24:53 2013 +0200 + + recording: Fix unitialized variable 'free_me' + + This variable should be NULL by default and gets set only if a new reference to + a surface was acquired through _cairo_surface_snapshot_get_target(). This works, + because cairo_surface_destroy(NULL) is well-defined and doesn't do anything. + + Fixes the following compiler warning: + + cairo-recording-surface.c:1642:24: warning: 'free_me' may be used uninitialized + in this function [-Wmaybe-uninitialized] + + Signed-off-by: Uli Schlachter + + src/cairo-recording-surface.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 8addb4798c918000eaa6f6dab138e0abb0efa946 +Author: Adrian Johnson +AuthorDate: Sun Apr 8 10:57:23 2012 +0930 +Commit: Adrian Johnson +CommitDate: Wed Sep 11 21:18:45 2013 +0930 + + pdf: avoid making groups a transparency group if not required + + If the group contains only a combination of clear and opaque alpha and + only OPERATOR_OVER is used in the group and to paint the group, a + transparency group is not required. This allows the pdf viewer to + replay the group in place. + + src/cairo-pdf-surface-private.h | 2 + + src/cairo-pdf-surface.c | 125 +++++++++++++++++++++++++--------- + src/cairo-recording-surface-private.h | 8 +++ + src/cairo-recording-surface.c | 113 ++++++++++++++++++++++++++++++ + 4 files changed, 215 insertions(+), 33 deletions(-) + +commit 53255625c07d8f24403f0cb1b5a4dbaac142e4da +Author: Bryce W. Harrington +AuthorDate: Sun Sep 8 20:10:04 2013 +0000 +Commit: Uli Schlachter +CommitDate: Mon Sep 9 21:28:35 2013 +0200 + + svg, test: Refer to output filename by variable, not a hardcoded value + + Signed-off-by: Bryce Harrington + Signed-off-by: Uli Schlachter + + test/svg-surface.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit f9dcd07d22a5269bf799317a36bb2887d8f9af64 +Author: Bryce W. Harrington +AuthorDate: Sun Sep 8 20:10:03 2013 +0000 +Commit: Uli Schlachter +CommitDate: Mon Sep 9 21:25:12 2013 +0200 + + test: Ensure output dirs exist, falling back to current dir if needed + + This change makes several tests behave more like ps-eps.c, et al by + making them attempt to mkdir "output", and in case of trouble use "." + instead. filenames are now allocated at runtime due to this change, so + ensure the corresponding free()'s are in place as well. + + This should facilitate running the test suite with a relative path + outside cairo's source tree, such as when employing the CAIRO_REF_DIR + environment variable. + + Signed-off-by: Bryce Harrington + Signed-off-by: Uli Schlachter + + test/create-for-stream.c | 14 +++++++++++--- + test/fallback-resolution.c | 20 +------------------- + test/multi-page.c | 9 ++++++--- + test/pdf-features.c | 6 +++++- + test/pdf-mime-data.c | 6 +++++- + test/pdf-surface-source.c | 6 +++++- + test/png.c | 8 +++++++- + test/ps-eps.c | 20 +------------------- + test/ps-features.c | 8 +++++--- + test/ps-surface-source.c | 6 +++++- + test/svg-clip.c | 6 +++++- + test/svg-surface-source.c | 6 +++++- + test/svg-surface.c | 6 +++++- + 13 files changed, 66 insertions(+), 55 deletions(-) + +commit be7f1ac98f62669743f381df8845886d29a9f7f4 +Author: Bryce W. Harrington +AuthorDate: Sun Sep 8 20:10:03 2013 +0000 +Commit: Uli Schlachter +CommitDate: Mon Sep 9 21:21:43 2013 +0200 + + test: Make cairo_test_mkdir() usable throughout tests. + + Signed-off-by: Bryce Harrington + Signed-off-by: Uli Schlachter + + test/cairo-test.c | 10 +++++----- + test/cairo-test.h | 3 +++ + 2 files changed, 8 insertions(+), 5 deletions(-) + +commit 6731023f1bba7e26dbbc06defdbb37ac5267e9db +Author: Bryce W. Harrington +AuthorDate: Sun Sep 8 20:10:03 2013 +0000 +Commit: Uli Schlachter +CommitDate: Mon Sep 9 21:15:50 2013 +0200 + + test: Fix several tests to place output files in the output directory + + The standard location for test output is cairo/test/output. The harness + itself was updated to write automatically generated images in this + directory, however a number of tests generate their own local output + files. + + This patch updates these tests to write their output into + CAIRO_TEST_OUTPUT_DIR (which defaults to cairo/test/output) as well, in + the interest of decluttering the test directory. + + Signed-off-by: Bryce Harrington + Signed-off-by: Uli Schlachter + + test/create-for-stream.c | 6 +++--- + test/multi-page.c | 5 +++-- + test/pdf-features.c | 3 ++- + test/pdf-mime-data.c | 9 +++++---- + test/pdf-surface-source.c | 4 +++- + test/png.c | 3 ++- + test/ps-features.c | 3 ++- + test/ps-surface-source.c | 4 +++- + test/svg-clip.c | 3 ++- + test/svg-surface-source.c | 4 +++- + test/svg-surface.c | 3 ++- + 11 files changed, 30 insertions(+), 17 deletions(-) + +commit f3574b8b3b3e9dbd9fca927096e5a8205e57033d +Author: Bryce W. Harrington +AuthorDate: Sun Sep 8 20:10:03 2013 +0000 +Commit: Uli Schlachter +CommitDate: Mon Sep 9 21:15:12 2013 +0200 + + test: Don't ignore test output files left in test directory + + Tests should be placing output files in the output/ directory now, + although not all tests follow this standard practice. Drop the + "*.out.*" from .gitignore to make improper test behavior more evident. + + Signed-off-by: Bryce Harrington + Signed-off-by: Uli Schlachter + + test/.gitignore | 4 ---- + 1 file changed, 4 deletions(-) + +commit f52165a7bb3de56fe2a06771f554f3997e176b94 +Author: Adrian Johnson +AuthorDate: Fri Sep 6 08:00:46 2013 +0930 +Commit: Adrian Johnson +CommitDate: Fri Sep 6 08:00:46 2013 +0930 + + svg: Don't embed CMYK Jpeg images + + None of the SVG viewers I tried (rsvg, firefox, inkscape) support CMYK + Jpeg images. + + Bug 68965 + + src/cairo-svg-surface.c | 3 +++ + 1 file changed, 3 insertions(+) + +commit 8e1a1ed8631dd55b4344d5682e6c69e923e0401f +Author: Adrian Johnson +AuthorDate: Fri Sep 6 07:54:28 2013 +0930 +Commit: Adrian Johnson +CommitDate: Fri Sep 6 07:54:28 2013 +0930 + + Downscaling requires pixman 0.30 + + configure.ac | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 0266cb821fbf0bdd307af7bbcbbd22c4a14201fc +Author: Chris Wilson +AuthorDate: Thu Sep 5 16:13:56 2013 +0100 +Commit: Chris Wilson +CommitDate: Thu Sep 5 16:13:56 2013 +0100 + + script: Add support for replaying device-scale + + Signed-off-by: Chris Wilson + + util/cairo-script/cairo-script-operators.c | 48 ++++++++++++++++++++++++++++++ + 1 file changed, 48 insertions(+) + +commit a4164142f2a21fb005533d1c5b3cf668c99d1259 +Author: Chris Wilson +AuthorDate: Thu Sep 5 16:12:26 2013 +0100 +Commit: Chris Wilson +CommitDate: Thu Sep 5 16:12:26 2013 +0100 + + trace: Record set-device-scale + + Signed-off-by: Chris Wilson + + util/cairo-trace/trace.c | 12 ++++++++++++ + 1 file changed, 12 insertions(+) + +commit 935c64a43409a80d9b19d491f9133004152de9bb +Author: Alexander Larsson +AuthorDate: Tue Aug 27 15:10:38 2013 +0200 +Commit: Chris Wilson +CommitDate: Thu Sep 5 16:11:10 2013 +0100 + + surface: Inherit device scale in cairo_surface_create_similar() + + Without this most code that uses similar surfaces for offscreen + rendering will render in a pixelized fashion if the final + target uses a device scale. + + src/cairo-surface.c | 7 +++++++ + 1 file changed, 7 insertions(+) + +commit bc792a5e0e196dd9761649b14c9206465b42ef1d +Author: Alexander Larsson +AuthorDate: Tue Aug 27 14:46:16 2013 +0200 +Commit: Chris Wilson +CommitDate: Thu Sep 5 16:11:09 2013 +0100 + + surface: Merge scratch construction into _cairo_surface_create_scratch + + We merge _cairo_surface_create_similar_scratch and + _cairo_surface_create_similar_solid into a single function named + _cairo_surface_create_scratch, to avoid confusion with + cairo_surface_create_similar which now will have a different + behaviour wrt the sizes and the device-scale. + + _create_scratch assumes the width and height are in backend + coordinates, while create_similar does not. + + src/cairo-clip-surface.c | 20 +++++------ + src/cairo-default-context.c | 10 +++--- + src/cairo-gl-traps-compositor.c | 18 +++++----- + src/cairo-mask-compositor.c | 14 ++++---- + src/cairo-shape-mask-compositor.c | 27 +++++++------- + src/cairo-spans-compositor.c | 10 +++--- + src/cairo-surface-subsurface.c | 9 ++--- + src/cairo-surface-wrapper.c | 4 +-- + src/cairo-surface.c | 75 +++++++++++++++++---------------------- + src/cairo-traps-compositor.c | 33 +++++++++-------- + src/cairo-xcb-surface-render.c | 20 +++++------ + src/cairo-xlib-source.c | 36 ++++++++++--------- + src/cairoint.h | 16 +++------ + 13 files changed, 145 insertions(+), 147 deletions(-) + +commit bdccf4fe51bca785f73205ccd26c4d020669e312 +Author: Alexander Larsson +AuthorDate: Tue Aug 27 14:33:14 2013 +0200 +Commit: Chris Wilson +CommitDate: Thu Sep 5 16:11:08 2013 +0100 + + surface: Opencode create_similar + + We copy the _cairo_surface_create_similar_solid code into + cairo_surface_create_similar so that we can separate these later + as one wants to use backend sizes and one not. + + src/cairo-surface.c | 33 ++++++++++++++++++++++++++++++--- + 1 file changed, 30 insertions(+), 3 deletions(-) + +commit 5f70148467ff2767dc3c6d45f4af1223d7daa301 +Author: Chris Wilson +AuthorDate: Mon Jun 3 15:20:05 2013 +0100 +Commit: Chris Wilson +CommitDate: Thu Sep 5 16:08:20 2013 +0100 + + test: Allow CAIRO_TEST_MODE to independently enable extended testing + + Such as CAIRO_TEST_MODE=scale for testing application of + cairo_surface_set_device_offset. + + CAIRO_TEST_MODE=similar - test rendering through similar surfaces + CAIRO_TEST_MODE=offset - test rendering with a device offset + CAIRO_TEST_MODE=scale - test rendering with a device scale + + test/cairo-test-runner.c | 22 ++++++++++++++++++---- + 1 file changed, 18 insertions(+), 4 deletions(-) + +commit 690c61aa54c27e4d35b04d0173abd5931fce507d +Author: Alexander Larsson +AuthorDate: Mon Jun 3 15:38:22 2013 +0200 +Commit: Chris Wilson +CommitDate: Thu Sep 5 16:08:20 2013 +0100 + + tests: Add device scale test to "full" testrun similar to offsets + + test/cairo-test-private.h | 2 +- + test/cairo-test-runner.c | 66 ++++++++++++++++++++++++++--------------------- + test/cairo-test.c | 66 ++++++++++++++++++++++++++++------------------- + 3 files changed, 77 insertions(+), 57 deletions(-) + +commit 7ab34f302be72d9dda54d936b6d69bc7c534c885 +Author: Alexander Larsson +AuthorDate: Thu May 30 19:45:59 2013 +0200 +Commit: Chris Wilson +CommitDate: Thu Sep 5 16:08:19 2013 +0100 + + surface: expose the device scale + + This adds the new public functions + cairo_surface_set_device_scale and cairo_surface_get_device_scale and + updates old users of the internal functions. + + src/cairo-default-context.c | 6 ++--- + src/cairo-paginated-surface.c | 2 +- + src/cairo-surface-subsurface.c | 12 +++++----- + src/cairo-surface.c | 52 +++++++++++++++++++++++++++++++----------- + src/cairo.h | 10 ++++++++ + src/cairoint.h | 7 ++---- + 6 files changed, 61 insertions(+), 28 deletions(-) + +commit 38217d67fc2226778dde8d05817cb916691d4d22 +Author: Chris Wilson +AuthorDate: Mon Jun 3 20:32:45 2013 +0100 +Commit: Chris Wilson +CommitDate: Thu Sep 5 16:08:19 2013 +0100 + + spans,traps: Undo device transform from source matrix for recording replays + + As the replay of the recording surface applies the device_transform of + the matrix once again to all its operations, we end up with a repeated + transform through the source matrix of the recording surface. We need to + remove one of these, and the easiest way to do that appears to be to + undo the application to the source matrix. + + Signed-off-by: Chris Wilson + + src/cairo-spans-compositor.c | 13 +++++++++++-- + src/cairo-traps-compositor.c | 15 ++++++++++++--- + 2 files changed, 23 insertions(+), 5 deletions(-) + +commit f0e2cd4494b1ac9a351d095fbeb53d702342d35c +Author: Alexander Larsson +AuthorDate: Fri May 31 16:44:29 2013 +0200 +Commit: Chris Wilson +CommitDate: Thu Sep 5 16:08:19 2013 +0100 + + gstate: Handle device scale on surface as source + + When creating a transformed pattern we must apply the device + transform *before* the transform set on the pattern itself, otherwise + e.g. its translation will not be affected by the device scale. + + We also fix up the device_transform related handling in + _cairo_default_context_pop_group(). With a device scale we can + no longer just use the device_transform_inverse to unset the + device offset for the extents, so we make that a simple translate + instead. + + We also remove some weird code that tries to handle the device + transform but seems unnecessary (maybe a workaround for applying + the device transform in the wrong order?). With that code removed + things work fine, but with it things get translated wrongly when + there is a scale. + + src/cairo-default-context.c | 23 ++++++++--------------- + src/cairo-gstate.c | 2 +- + src/cairo-pattern-private.h | 4 ++++ + src/cairo-pattern.c | 10 ++++++++++ + 4 files changed, 23 insertions(+), 16 deletions(-) + +commit 900fc4a890026e46a3b0a00967632f57074b8b93 +Author: Alexander Larsson +AuthorDate: Thu May 30 20:53:29 2013 +0200 +Commit: Chris Wilson +CommitDate: Thu Sep 5 16:08:19 2013 +0100 + + gstate: Move device-scale font scaling to gstate + + If we do this in surface it will be applied twice then + we chain to a different surface, like e.g. a subsurface. + + We also remove a hack in cairo-surface-wrapper where it compensated + for the device scale not being applied. + + v2: Compute the backend CTM in ensure_scaled_font(). + + src/cairo-gstate.c | 8 +++++++- + src/cairo-surface-wrapper.c | 5 ++--- + src/cairo-surface.c | 31 ++++--------------------------- + 3 files changed, 13 insertions(+), 31 deletions(-) + +commit 25eaec0a3874a2090e1bb97547a328eb5c00b0b1 +Author: Alexander Larsson +AuthorDate: Thu May 30 20:53:15 2013 +0200 +Commit: Chris Wilson +CommitDate: Thu Sep 5 16:08:19 2013 +0100 + + subsurface: Handle device scales + + src/cairo-surface-subsurface.c | 21 ++++++++++++++++++--- + 1 file changed, 18 insertions(+), 3 deletions(-) + +commit 633d573889ad685c8f07e9ee72f6a1d240dfacf2 +Author: Alexander Larsson +AuthorDate: Thu May 30 19:48:33 2013 +0200 +Commit: Chris Wilson +CommitDate: Thu Sep 5 16:08:19 2013 +0100 + + default-context: Inherit device scale in push_group surface + + Without this we will only render to part of the newly created + surface and then copy+scale that part back, which causes fuzziness. + + src/cairo-default-context.c | 4 ++++ + 1 file changed, 4 insertions(+) + +commit db7e551a6bf06a0aa7e2e6b3744b7663807d003f +Author: Alexander Larsson +AuthorDate: Thu May 30 19:47:19 2013 +0200 +Commit: Chris Wilson +CommitDate: Thu Sep 5 16:08:19 2013 +0100 + + gstate: Respect device transform in stroke + + We need to apply the device transform to the ctm when stroking, as + otherwise line widths are not affected by the device scale. + + src/cairo-gstate.c | 15 ++++++++++++--- + 1 file changed, 12 insertions(+), 3 deletions(-) + +commit fb57ea13e04d82866cbc8e86c83261148bb3e231 +Author: Krzysztof Kosiński +AuthorDate: Thu Sep 5 16:02:14 2013 +0100 +Commit: Chris Wilson +CommitDate: Thu Sep 5 16:08:19 2013 +0100 + + image: Use convolution filters for sample reconstruction when downscaling + + I had a look at how complex would it be to add correct downscaling to + Cairo now that Pixman supports convolution filters. It turns out it + this is rather easy. Here is an initial, minimal attempt. It uses + convolution filters only if the image is being downscaled by more than + half a pixel in at least one dimension. + + Some discussion: + + 1. The sampling and reconstruction kernels are picked in a way that + gives comparable quality when upscaling and downscaling. I paired box + sampling with bilinear reconstruction and impulse (point) sampling + with box reconstruction. This gives the expected result for NEAREST + filter. BEST filter uses Lanczos3 for both kernels. + + > Do we need to use a reconstruction filter for NEAREST at all? Or maybe + > differentiate between NEAREST and FAST in that case? + + If impulse (point) sampling is used, there must be some reconstruction + filter, otherwise no image is produced. That's because the sampling + grid does not match the data grid, and since there is no + reconstruction filter, values between data points are undefined. The + alternative is to use box sampling + no reconstruction. + + 2. Subsampling bits are always set to 1, since this doesn't seem to + affect quality at all. + + 3. I am not sure whether this code works correctly for matrices with a + skew component. It should be OK for any combination of scale, rotation + and translation. + + 4. This patch causes new failures in the test suite: + - recording-surface*: possibly an effect of improved quality. + - surface-pattern-scale-down*, surface-pattern-big-scale-down: the + reference images should be updated. + - pthread-same-source: I have no idea why this is failing, since this + test shouldn't even trigger the new code. + - large-source-roi: this test attempts to downscale an image which is + 30000 pixels wide down to 7 pixels. The filter parameters seem to be + created correctly, but they might trigger an overflow somewhere in the + convolution code; the output rectangle is white instead of red, as if + nothing was drawn. + - device-offset-scale: there are subtle differences which look like + convolution-related smoothing; I'm not sure whether this is OK or not. + + src/cairo-image-source.c | 65 ++++++++++++++++++++++++++++++++++++++++-------- + 1 file changed, 55 insertions(+), 10 deletions(-) + +commit 28ad0f9f3bec65e462e29a1d0b1757a86d16c129 +Author: Chris Wilson +AuthorDate: Thu Sep 5 15:56:55 2013 +0100 +Commit: Chris Wilson +CommitDate: Thu Sep 5 16:08:19 2013 +0100 + + Bump version for new development tree, 1.13.1 + + cairo-version.h | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +commit 59e2a93b3c8a7b83d537bb2a4bbdd5f0f36a0cbc +Author: Chris Wilson +AuthorDate: Mon Aug 26 18:46:19 2013 +0100 +Commit: Chris Wilson +CommitDate: Mon Aug 26 18:46:19 2013 +0100 + + Post-release version bump + + cairo-version.h | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 8e11a42e3e9b679dce97ac45cd8b47322536a253 +Author: Chris Wilson +AuthorDate: Mon Aug 26 15:30:20 2013 +0100 +Commit: Chris Wilson +CommitDate: Mon Aug 26 17:56:27 2013 +0100 + + 1.12.16 release + + NEWS | 55 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ + cairo-version.h | 2 +- + 2 files changed, 56 insertions(+), 1 deletion(-) + +commit b710a4730940e54ac7ffd5073eecf950997a0484 +Author: Chris Wilson +AuthorDate: Mon Aug 26 17:18:38 2013 +0100 +Commit: Chris Wilson +CommitDate: Mon Aug 26 17:56:27 2013 +0100 + + Make "make check" happy + + A recursive include should hide the bare header from + check-preprocessor-syntax.sh + + Signed-off-by: Chris Wilson + + src/cairo-pixman-private.h | 6 ++++++ + 1 file changed, 6 insertions(+) + +commit fb8881e84bb24b2a54ee5aa449b6f5638de36404 +Author: Chris Wilson +AuthorDate: Fri Aug 23 12:48:08 2013 +0100 +Commit: Chris Wilson +CommitDate: Fri Aug 23 12:53:27 2013 +0100 + + win32: Prevent double-free of similar images + + Based on a patch and analysis by Michael Henning. + + When we create a similar-image surface for win32, we set up a couple of + back references from the image to the win32 surface, and vice versa. We + need to be careful when decoupling the reference cycle to avoid chasing + around the loop upon destruction. Currently we handled destroying the + similar-image via the parent win32 surface, but similar precaution is + required when destroying the surface via the similar-image. + + Reported-by: Michael Henning + Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=63787 + Signed-off-by: Chris Wilson + + src/cairo-image-surface.c | 3 ++- + src/win32/cairo-win32-display-surface.c | 3 ++- + 2 files changed, 4 insertions(+), 2 deletions(-) + +commit 054f34111d220541bc785b30207387541fdd31d2 +Author: Chris Wilson +AuthorDate: Thu Aug 15 14:28:44 2013 +0000 +Commit: Chris Wilson +CommitDate: Fri Aug 23 12:53:27 2013 +0100 + + Provide backwards compatibilty with old pixman + + The goal is to allow compilation against older pixman to ease regression + testing. + + Signed-off-by: Chris Wilson + + configure.ac | 2 +- + src/Makefile.sources | 1 + + src/cairo-ft-font.c | 6 +++-- + src/cairo-image-compositor.c | 44 +++++++++++++++++++++++-------------- + src/cairo-image-surface.c | 5 +++++ + src/cairo-pixman-private.h | 45 ++++++++++++++++++++++++++++++++++++++ + src/cairo-xlib-render-compositor.c | 1 + + src/cairo-xlib-surface.c | 1 + + 8 files changed, 86 insertions(+), 19 deletions(-) + +commit 95f320e3f26b2a1552a53ebad14dd5086ccf0c60 +Author: Martin Robinson +AuthorDate: Mon Jul 29 11:14:34 2013 -0700 +Commit: Martin Robinson +CommitDate: Mon Aug 19 14:54:28 2013 -0700 + + gl: Return surface in error when creating oversized texture surfaces + + When creating a texture surface that is larger than the maximum + framebuffer or texture dimensions of the context, return a surface in + error. Previously the code failed an assertion, but this prevents an + application from easily detecting when to fall back. + + Reviewed-by: Chris Wilson + + src/cairo-gl-surface.c | 33 +++++++++++------ + test/Makefile.sources | 1 + + test/gl-oversized-surface.c | 88 +++++++++++++++++++++++++++++++++++++++++++++ + 3 files changed, 111 insertions(+), 11 deletions(-) + +commit b5e1373c5845c859ebf82ef4d5e065f6cdd68faf +Author: Henry Song +AuthorDate: Mon Aug 19 12:14:46 2013 -0700 +Commit: Martin Robinson +CommitDate: Mon Aug 19 12:56:58 2013 -0700 + + gl/msaa: Clean up msaa depth/stencil buffer for OpenGLES + + OpenGLES also uses the depth/stencil buffer when doing multisampling, so + it's a leak to only clean up the buffer for desktop OpenGL. + + src/cairo-gl-surface.c | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +commit 54a51968e82ec4e6a8d81d5451232641275439df +Author: Uli Schlachter +AuthorDate: Mon Aug 12 16:33:19 2013 +0200 +Commit: Uli Schlachter +CommitDate: Tue Aug 13 19:25:17 2013 +0200 + + surface_get_extents: Reject finished or error surface + + This fixes a crash in the api-special-cases with xlib-xcb when calling + cairo_clip_extents() on a context that refers to a finished surface. + + The crash was a simple NULL pointer dereference, because the underlying xcb + surface that was used in xlib-xcb was gone and set to NULL already. + + Signed-off-by: Uli Schlachter + + src/cairo-surface.c | 12 ++++++++++++ + 1 file changed, 12 insertions(+) + +commit 3c4e0f0f1a338fbbd802cdb3b65b8ea3abc758d1 +Author: Uli Schlachter +AuthorDate: Mon Aug 12 15:59:18 2013 +0200 +Commit: Uli Schlachter +CommitDate: Tue Aug 13 19:21:57 2013 +0200 + + push_group: Refuse working with unusable surface + + Make cairo_push_group() fail when the context's target surface is finished. + + This fixes the api-special-cases for the xcb backend: + + Detected error during xcb run: error=9, seqno=0x13c, major=53, minor=0 + + The problem was that the Pixmap for the cairo surface was already freed and + cairo still tried to use it again as the drawable in a CreatePixmap request. + + Signed-off-by: Uli Schlachter + Reviewed-by: Chris Wilson + + src/cairo-default-context.c | 5 +++++ + 1 file changed, 5 insertions(+) + +commit 18633b081026eb88931af6130b3e716fdb954e19 +Author: Uli Schlachter +AuthorDate: Mon Aug 12 15:40:00 2013 +0200 +Commit: Uli Schlachter +CommitDate: Tue Aug 13 19:21:02 2013 +0200 + + surface: Error out on finished surfaces + + Finished surfaces and surfaces with an error status must not be usable anymore, + so refuse to work on them. + + This improves the result for api-special-cases. + + Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=68014 + + Signed-off-by: Uli Schlachter + + src/cairo-surface.c | 19 +++++++++++++++++++ + 1 file changed, 19 insertions(+) + +commit b64c83e891f2417a1b28034a55659260a1769ba7 +Author: Uli Schlachter +AuthorDate: Mon Aug 12 14:30:59 2013 +0200 +Commit: Uli Schlachter +CommitDate: Tue Aug 13 19:17:56 2013 +0200 + + api-special-cases: Also test contexts + + This adds code to the api-special-cases test which also tests the behavior of + cairo when the cairo context or the surface that is target is in an error state + or finished. These new tests call into all public entry points defined in + cairo.h which receive a cairo_t * as their first argument. + + Currently this causes a new crash in the testsuite: + + cairo-surface.c:394: + _cairo_surface_begin_modification: Assertion `! surface->finished' failed. + + Reported-by: christophe.troestler@umons.ac.be + References: https://bugs.freedesktop.org/show_bug.cgi?id=68014 + Signed-off-by: Uli Schlachter + + test/api-special-cases.c | 1174 +++++++++++++++++++++++++++++++++++++++++++++- + 1 file changed, 1153 insertions(+), 21 deletions(-) + +commit e438071e9debeca81f97c6fcdc1c2a91a969761d +Author: Bryce W. Harrington +AuthorDate: Tue Jul 9 21:22:59 2013 +0000 +Commit: Uli Schlachter +CommitDate: Sun Aug 11 16:37:02 2013 +0200 + + perf: Move macro-benchmark documentation to cairo-traces + + The macro benchmarks were moved to a separate repository some time ago, + but the perf README still refers to these tests as if they were still + present, which may lead to some confusion. Instead, consolodate the + macro benchmark documentation with the macro benchmarks, and focus this + README on just the (still in tree) micro-benchmarks. + + Signed-off-by: Bryce Harrington + Signed-off-by: Uli Schlachter + + perf/README | 89 ++++++++++++++----------------------------------------------- + 1 file changed, 20 insertions(+), 69 deletions(-) + +commit 4e133af60c1af42307724eb6a88b23056741d7e2 +Author: Bryce W. Harrington +AuthorDate: Tue Jul 9 21:23:52 2013 +0000 +Commit: Uli Schlachter +CommitDate: Sun Aug 11 16:33:43 2013 +0200 + + HACKING: Make mention of the separate cairo-traces repo + + Signed-off-by: Bryce Harrington + Signed-off-by: Uli Schlachter + + HACKING | 9 +++++---- + 1 file changed, 5 insertions(+), 4 deletions(-) + +commit 46d9db96d460fea72f0420102e8a90c6a7231f79 +Author: Behdad Esfahbod +AuthorDate: Sun Aug 4 20:08:46 2013 -0400 +Commit: Behdad Esfahbod +CommitDate: Sun Aug 4 20:12:06 2013 -0400 + + [ft] Ensure alignment of bitmaps received from FreeType + + src/cairo-ft-font.c | 9 +++++++++ + 1 file changed, 9 insertions(+) + +commit 34a747e7bdeba1cfe17318f80fbe6720d47bc023 +Author: Behdad Esfahbod +AuthorDate: Sun Aug 4 19:59:06 2013 -0400 +Commit: Behdad Esfahbod +CommitDate: Sun Aug 4 20:11:51 2013 -0400 + + [ft] Fix alignment + + src/cairo-ft-font.c | 9 +++------ + 1 file changed, 3 insertions(+), 6 deletions(-) + +commit 3cd6c5966aca1d202744fe44083800bc2a4a831d +Author: Behdad Esfahbod +AuthorDate: Mon Jul 29 22:47:26 2013 -0400 +Commit: Behdad Esfahbod +CommitDate: Mon Jul 29 22:47:26 2013 -0400 + + Revert accidentally committed stuff + + build/configure.ac.pthread | 6 +++--- + 1 file changed, 3 insertions(+), 3 deletions(-) + +commit 0554d76402321b25cc952180e4d19436a9038d1a +Author: Behdad Esfahbod +AuthorDate: Mon Jul 29 22:41:46 2013 -0400 +Commit: Behdad Esfahbod +CommitDate: Mon Jul 29 22:41:46 2013 -0400 + + [ft] Add missing include + + build/configure.ac.pthread | 6 +++--- + src/cairo-ft-font.c | 1 + + 2 files changed, 4 insertions(+), 3 deletions(-) + +commit 7d26341072b13a78d4b3fe58779057ac020be487 +Author: Behdad Esfahbod +AuthorDate: Mon Jul 29 19:20:33 2013 -0400 +Commit: Behdad Esfahbod +CommitDate: Mon Jul 29 19:20:33 2013 -0400 + + [ft] Fix math + + src/cairo-ft-font.c | 9 ++------- + 1 file changed, 2 insertions(+), 7 deletions(-) + +commit 9444ef09ccde2735258cc1bd2f1912119a32dd88 +Author: Behdad Esfahbod +AuthorDate: Mon Jul 29 19:09:29 2013 -0400 +Commit: Behdad Esfahbod +CommitDate: Mon Jul 29 19:10:46 2013 -0400 + + Support 2bit and 4bit embedded bitmaps + + src/cairo-ft-font.c | 52 +++++++++++++++++++++++++++++++++++++++++++++++++++- + 1 file changed, 51 insertions(+), 1 deletion(-) + +commit 274863be08f6c8df6d411df9db725d34f7fbabea +Author: Adrian Johnson +AuthorDate: Sun Jul 28 09:30:05 2013 +0930 +Commit: Adrian Johnson +CommitDate: Sun Jul 28 09:30:05 2013 +0930 + + type1-subset: Don't try to rename non winansi glyphs + + When the latin subset contains glyphs that use the seac operator to + combine two glyphs, additional non winansi glyphs are added to the + subset. These extra glyphs do not have a winansi name so they can't + be renamed. + + Based on a patch by Salvador Ortiz. + + Bug 67324 + + src/cairo-type1-subset.c | 12 ++++++++++-- + 1 file changed, 10 insertions(+), 2 deletions(-) + +commit 03c81d414d4edb710c91f96ddb7dbf73e5432583 +Author: Henry Song +AuthorDate: Mon Jul 8 11:36:25 2013 -0700 +Commit: Martin Robinson +CommitDate: Mon Jul 15 19:27:29 2013 -0700 + + gl/msaa: Always use scissor when clipping + + Even when using the stencil buffer for clipping, always scissor the clip + extents. This simplifies the code a bit. + + src/cairo-gl-composite.c | 10 +++++----- + 1 file changed, 5 insertions(+), 5 deletions(-) + +commit 8c710ed87244321dc18447936d629decc25d3d09 +Author: Henry Song +AuthorDate: Sun Jul 7 11:00:28 2013 -0700 +Commit: Martin Robinson +CommitDate: Mon Jul 15 19:27:24 2013 -0700 + + gl/msaa: Disable stencil and scissor during framebuffer blit + + When blitting the framebuffer during transitions to and from + multi-sampling mode, we need to disable the stencil and scissor test so + that the entire surface is preserved. This fixes the bitmap-font test + for the MSAA compositor. + + src/cairo-gl-device.c | 28 ++++++++++++++++++++++++++++ + 1 file changed, 28 insertions(+) + +commit be2c09a1f59ad677a2b4718d26687873093b466c +Author: Henry Song +AuthorDate: Wed Jul 3 12:22:55 2013 -0700 +Commit: Martin Robinson +CommitDate: Mon Jul 15 19:27:19 2013 -0700 + + gl/msaa: Properly destroy stencil buffer clip cache + + When replacing the stencil buffer clip cache or destroying a surface, + destroy the cached clip. This prevents the clip from leaking. + + src/cairo-gl-composite.c | 5 ++++- + src/cairo-gl-surface.c | 2 ++ + 2 files changed, 6 insertions(+), 1 deletion(-) + +commit 2cc353c3dbe01b4d8f65d6de800f2b1d6004a1c2 +Author: Behdad Esfahbod +AuthorDate: Wed Nov 7 14:34:42 2012 -0800 +Commit: Behdad Esfahbod +CommitDate: Fri Jul 5 16:03:25 2013 -0600 + + Towards support loading color glyphs from FreeType + + See comments. + + src/cairo-ft-font.c | 41 ++++++++++++++++++++++++++++++++++++++--- + 1 file changed, 38 insertions(+), 3 deletions(-) + +commit e738079302a968b7b1fb9101cd4d92a8887bedce +Author: Behdad Esfahbod +AuthorDate: Fri Jul 5 15:22:18 2013 -0600 +Commit: Behdad Esfahbod +CommitDate: Fri Jul 5 15:59:45 2013 -0600 + + [ft] Fix wrong assumptions + + If subpixel rendering is enabled, but FT returns a 8bit gray bitmap + (perhaps because the font has 8bit embedded bitmaps) we were hitting + the assertions because the assumptions made were wrong. Fix up. + + src/cairo-ft-font.c | 10 +++------- + 1 file changed, 3 insertions(+), 7 deletions(-) + +commit a0f556f37fb7016aa304b7cf0e811c0d38f0b969 +Author: Behdad Esfahbod +AuthorDate: Fri Jul 5 15:12:14 2013 -0600 +Commit: Behdad Esfahbod +CommitDate: Fri Jul 5 15:59:45 2013 -0600 + + [ft] Fix memory bug in copying bitmaps + + src/cairo-ft-font.c | 4 +--- + 1 file changed, 1 insertion(+), 3 deletions(-) + +commit 9f9796920f5994090a19de357defe5e72ac61297 +Author: Uli Schlachter +AuthorDate: Fri Jun 21 20:38:43 2013 +0200 +Commit: Uli Schlachter +CommitDate: Thu Jul 4 21:57:12 2013 +0200 + + xcb: Fix some uninitialized variable warnings + + Signed-off-by: Uli Schlachter + + src/cairo-xcb-surface-render.c | 6 +++--- + 1 file changed, 3 insertions(+), 3 deletions(-) + +commit 2170bdbb12f38e372ea2ce1c6492c60cb35f22e4 +Author: Uli Schlachter +AuthorDate: Fri Jun 21 20:36:09 2013 +0200 +Commit: Uli Schlachter +CommitDate: Thu Jul 4 21:57:12 2013 +0200 + + image compositor: Always finish the span renderer + + In some obscure conditions that I don't really understand, the image compositor + did not finish a span renderer that it created. This could then cause the last + row of the span to be ignored. + + Fixes: clip-complex-bug61492 + + Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=61592 + Signed-off-by: Uli Schlachter + + src/cairo-image-compositor.c | 7 ++++--- + 1 file changed, 4 insertions(+), 3 deletions(-) + +commit 9058e9ae283ae39a6a4f78dc3dbf8ab46b2ef291 +Author: Uli Schlachter +AuthorDate: Fri Jun 21 20:34:27 2013 +0200 +Commit: Uli Schlachter +CommitDate: Thu Jul 4 21:57:12 2013 +0200 + + Add new test for bug 61592 + + This test exercises some clipping-related failure that Seongwon Cho reported. + + Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=61592 + Signed-off-by: Uli Schlachter + + test/Makefile.sources | 3 +- + test/clip-complex-bug61592.c | 60 +++++++++++++++++++++++++++ + test/reference/clip-complex-bug61492.ref.png | Bin 0 -> 105 bytes + 3 files changed, 62 insertions(+), 1 deletion(-) + +commit 54bee5e0fc1fd1fa85b9f389a73502a7145e0846 +Author: Uli Schlachter +AuthorDate: Fri Jun 21 15:18:58 2013 +0200 +Commit: Uli Schlachter +CommitDate: Thu Jul 4 21:57:12 2013 +0200 + + Fix caps-tails-curve reference images + + Commit d7f5a1bec fixed a bug. This caused 12 new test failures for the + test-traps test target: + + caps-tails-curve degenerate-arc degenerate-path joins subsurface + subsurface-scale twin twin-antialias-gray twin-antialias-mixed + twin-antialias-none twin-antialias-subpixel user-font + + Most of these are indeed (new?) bugs. However, caps-tails-curve actually started + producing the expected result and the reference image just wrongly captures the + old state of things. + + At the time of that commit, just taking the output from test-traps as the new + reference image works fine for all backends. However, with current git, + something introduced more antialiasing noise and now test-traps changed again + while cairo-xcb stayed with the old result. Thus, we also need a new reference + image to fix this test. + + (The wrong reference images come from commit 8488ae02 which turned test-traps' + results into reference images) + + Signed-off-by: Uli Schlachter + + .../reference/caps-tails-curve.traps.argb32.ref.png | Bin 50617 -> 49798 bytes + test/reference/caps-tails-curve.traps.rgb24.ref.png | Bin 50617 -> 49798 bytes + test/reference/caps-tails-curve.xcb.ref.png | Bin 0 -> 50367 bytes + 3 files changed, 0 insertions(+), 0 deletions(-) + +commit 8b55703d760a0032772d7f9b1d17438b2db3f1b4 +Author: Chris Wilson +AuthorDate: Thu Jul 4 10:04:30 2013 +0100 +Commit: Chris Wilson +CommitDate: Thu Jul 4 10:04:30 2013 +0100 + + test: Amend check-refs.sh to support out-of-tree builds + + test/Makefile.am | 4 ++-- + test/check-refs.sh | 19 ++++--------------- + 2 files changed, 6 insertions(+), 17 deletions(-) + +commit 8b4151a5e59cd2036e32c0eeb13afe420a434e19 +Author: Chris Wilson +AuthorDate: Thu Jul 4 10:02:46 2013 +0100 +Commit: Chris Wilson +CommitDate: Thu Jul 4 10:02:46 2013 +0100 + + test: Remove conflicting .ref.png, .argb32.ref.png, .rgb24.ref.png + + Where a content specific reference image exists, prefer to have both + content reference images (i.e. both argb32.ref and rgb24.ref) rather + than a mix of .ref and argb32/rgb24. + + test/reference/a8-clear.ref.png | Bin 272 -> 0 bytes + test/reference/aliasing.ref.png | Bin 76314 -> 0 bytes + test/reference/alpha-similar.argb32.ref.png | Bin 0 -> 99 bytes + test/reference/alpha-similar.ref.png | Bin 99 -> 0 bytes + test/reference/arc-direction.ref.png | Bin 4124 -> 0 bytes + test/reference/big-line.ref.png | Bin 897 -> 0 bytes + test/reference/bitmap-font.argb32.ref.png | Bin 0 -> 950 bytes + test/reference/bitmap-font.ref.png | Bin 950 -> 0 bytes + test/reference/bug-40410.ref.png | Bin 428 -> 0 bytes + test/reference/bug-bo-ricotz.ref.png | Bin 2108 -> 0 bytes + test/reference/bug-extents.ref.png | Bin 6364 -> 0 bytes + test/reference/caps-joins.ref.png | Bin 2621 -> 0 bytes + test/reference/caps-sub-paths.ref.png | Bin 176 -> 0 bytes + test/reference/caps.ref.png | Bin 1687 -> 0 bytes + test/reference/clear-source.ref.png | Bin 779 -> 0 bytes + test/reference/clip-disjoint-hatching.ref.png | Bin 4390 -> 0 bytes + .../clip-fill-rule-pixel-aligned.argb32.ref.png | Bin 0 -> 195 bytes + test/reference/clip-fill-rule-pixel-aligned.ref.png | Bin 195 -> 0 bytes + test/reference/clip-fill.ref.png | Bin 836 -> 0 bytes + test/reference/clip-group-shapes-circles.ref.png | Bin 1178 -> 0 bytes + test/reference/clip-image.ref.png | Bin 2679 -> 0 bytes + test/reference/clip-intersect.ref.png | Bin 201 -> 0 bytes + test/reference/clip-mixed-antialias.ref.png | Bin 981 -> 0 bytes + test/reference/clip-polygons.ref.png | Bin 1355 -> 0 bytes + test/reference/clip-push-group.ref.png | Bin 166 -> 0 bytes + test/reference/clip-shape.ref.png | Bin 2249 -> 0 bytes + test/reference/clip-text.ref.png | Bin 796 -> 0 bytes + test/reference/clip-unbounded.argb32.ref.png | Bin 0 -> 100 bytes + test/reference/clip-unbounded.ref.png | Bin 100 -> 0 bytes + test/reference/clipped-group.ref.png | Bin 289 -> 0 bytes + test/reference/close-path.ref.png | Bin 271 -> 0 bytes + test/reference/copy-path.ref.png | Bin 513 -> 0 bytes + test/reference/create-from-png.ref.png | Bin 131 -> 0 bytes + test/reference/culled-glyphs.ref.png | Bin 434 -> 0 bytes + test/reference/dash-infinite-loop.ref.png | Bin 626 -> 0 bytes + test/reference/dash-offset-negative.ref.png | Bin 171 -> 0 bytes + test/reference/dash-state.ref.png | Bin 7642 -> 0 bytes + test/reference/dash-zero-length.ref.png | Bin 232 -> 0 bytes + test/reference/degenerate-linear-gradient.ref.png | Bin 322 -> 0 bytes + test/reference/degenerate-pen.ref.png | Bin 752 -> 0 bytes + test/reference/device-offset-positive.argb32.ref.png | Bin 0 -> 139 bytes + test/reference/device-offset-positive.ref.png | Bin 139 -> 0 bytes + test/reference/device-offset.argb32.ref.png | Bin 0 -> 137 bytes + test/reference/device-offset.ref.png | Bin 137 -> 0 bytes + test/reference/extend-pad-border.ref.png | Bin 616 -> 0 bytes + test/reference/fill-alpha-pattern.ref.png | Bin 2962 -> 0 bytes + test/reference/fill-alpha.ref.png | Bin 2167 -> 0 bytes + test/reference/fill-and-stroke-alpha-add.ref.png | Bin 536 -> 0 bytes + test/reference/fill-and-stroke-alpha.ref.png | Bin 462 -> 0 bytes + test/reference/fill-image.ref.png | Bin 972 -> 0 bytes + test/reference/fill-missed-stop.ref.png | Bin 455 -> 0 bytes + test/reference/fill-rule.ref.png | Bin 1769 -> 0 bytes + test/reference/filter-bilinear-extents.ref.png | Bin 1340 -> 0 bytes + test/reference/font-matrix-translation.ref.png | Bin 874 -> 0 bytes + test/reference/ft-show-glyphs-positioning.ref.png | Bin 3297 -> 0 bytes + test/reference/ft-show-glyphs-table.ref.png | Bin 9893 -> 0 bytes + test/reference/ft-text-vertical-layout-type1.ref.png | Bin 3591 -> 0 bytes + test/reference/glyph-cache-pressure.ref.png | Bin 2863 -> 0 bytes + test/reference/gradient-alpha.ref.png | Bin 147 -> 0 bytes + test/reference/gradient-constant-alpha.ref.png | Bin 117 -> 0 bytes + test/reference/gradient-zero-stops.argb32.ref.png | Bin 0 -> 105 bytes + test/reference/gradient-zero-stops.ref.png | Bin 105 -> 0 bytes + test/reference/group-unaligned.ref.png | Bin 325 -> 0 bytes + test/reference/halo-transform.ref.png | Bin 11313 -> 0 bytes + test/reference/horizontal-clip.ref.png | Bin 129 -> 0 bytes + test/reference/huge-linear.ref.png | Bin 1619 -> 0 bytes + test/reference/infinite-join.ref.png | Bin 142 -> 0 bytes + test/reference/joins-loop.ref.png | Bin 3112 -> 0 bytes + test/reference/joins-star.ref.png | Bin 4028 -> 0 bytes + test/reference/large-twin-antialias-mixed.ref.png | Bin 10740 -> 0 bytes + test/reference/leaky-dashed-stroke.ref.png | Bin 5627 -> 0 bytes + test/reference/leaky-polygon.ref.png | Bin 281 -> 0 bytes + .../reference/line-width-large-overlap-rotated.ref.png | Bin 406 -> 0 bytes + test/reference/line-width-overlap-rotated.ref.png | Bin 719 -> 0 bytes + test/reference/line-width-scale.ref.png | Bin 3568 -> 0 bytes + test/reference/line-width-tolerance.ref.png | Bin 192 -> 0 bytes + test/reference/line-width.ref.png | Bin 201 -> 0 bytes + test/reference/linear-gradient-reflect.ref.png | Bin 216 -> 0 bytes + test/reference/linear-gradient-subset.ref.png | Bin 802 -> 0 bytes + test/reference/linear-gradient.ref.png | Bin 961 -> 0 bytes + test/reference/long-dashed-lines.ref.png | Bin 1453 -> 0 bytes + test/reference/mask-ctm.argb32.ref.png | Bin 0 -> 129 bytes + test/reference/mask-ctm.ref.png | Bin 129 -> 0 bytes + test/reference/mask-surface-ctm.argb32.ref.png | Bin 0 -> 129 bytes + test/reference/mask-surface-ctm.ref.png | Bin 129 -> 0 bytes + test/reference/mask-transformed-image.ref.png | Bin 4516 -> 0 bytes + test/reference/mask-transformed-similar.ref.png | Bin 4516 -> 0 bytes + test/reference/miter-precision.ref.png | Bin 878 -> 0 bytes + test/reference/nil-surface.argb32.ref.png | Bin 0 -> 107 bytes + test/reference/nil-surface.ref.png | Bin 107 -> 0 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.argb32.ref.png | Bin 0 -> 238 bytes + test/reference/operator.ref.png | Bin 238 -> 0 bytes + test/reference/over-above-source.ref.png | Bin 511 -> 0 bytes + test/reference/over-around-source.ref.png | Bin 578 -> 0 bytes + test/reference/over-below-source.ref.png | Bin 413 -> 0 bytes + test/reference/over-between-source.ref.png | Bin 561 -> 0 bytes + test/reference/paint-with-alpha-clip-mask.ref.png | Bin 348 -> 0 bytes + test/reference/partial-clip-text-bottom.ref.png | Bin 259 -> 0 bytes + test/reference/partial-clip-text-left.ref.png | Bin 293 -> 0 bytes + test/reference/partial-clip-text-right.ref.png | Bin 155 -> 0 bytes + test/reference/partial-clip-text-top.ref.png | Bin 173 -> 0 bytes + test/reference/pass-through.argb32.ref.png | Bin 0 -> 221 bytes + test/reference/pass-through.ref.png | Bin 221 -> 0 bytes + test/reference/path-append.ref.png | Bin 4424 -> 0 bytes + test/reference/path-stroke-twice.ref.png | Bin 209 -> 0 bytes + test/reference/pixman-rotate.argb32.ref.png | Bin 0 -> 260 bytes + test/reference/pixman-rotate.ref.png | Bin 260 -> 0 bytes + test/reference/pthread-show-text.ref.png | Bin 29759 -> 0 bytes + test/reference/push-group-color.ref.png | Bin 2676 -> 0 bytes + test/reference/push-group.ref.png | Bin 2829 -> 0 bytes + test/reference/random-intersections-curves-eo.ref.png | Bin 156491 -> 0 bytes + test/reference/random-intersections-curves-nz.ref.png | Bin 151310 -> 0 bytes + test/reference/random-intersections-eo.ref.png | Bin 85197 -> 0 bytes + test/reference/random-intersections-nonzero.ref.png | Bin 83247 -> 0 bytes + test/reference/record-paint-alpha-clip.ref.png | Bin 299 -> 0 bytes + test/reference/record-select-font-face.ref.png | Bin 2245 -> 0 bytes + test/reference/recording-surface-over.ref.png | Bin 3072 -> 0 bytes + test/reference/rectilinear-miter-limit.ref.png | Bin 145 -> 0 bytes + test/reference/rel-path.ref.png | Bin 177 -> 0 bytes + test/reference/rotate-clip-image-surface-paint.ref.png | Bin 312 -> 0 bytes + test/reference/rotated-clip.ref.png | Bin 2713 -> 0 bytes + test/reference/rounded-rectangle-fill.ref.png | Bin 563 -> 0 bytes + test/reference/scale-offset-image.ref.png | Bin 7688 -> 0 bytes + test/reference/scale-offset-similar.ref.png | Bin 7688 -> 0 bytes + .../scale-source-surface-paint.argb32.ref.png | Bin 0 -> 147 bytes + test/reference/scale-source-surface-paint.ref.png | Bin 147 -> 0 bytes + test/reference/select-font-face.ref.png | Bin 2245 -> 0 bytes + test/reference/self-copy.ref.png | Bin 258 -> 0 bytes + test/reference/set-source.argb32.ref.png | Bin 0 -> 120 bytes + test/reference/set-source.ref.png | Bin 120 -> 0 bytes + test/reference/shape-general-convex.ref.png | Bin 1869 -> 0 bytes + test/reference/shape-sierpinski.ref.png | Bin 43504 -> 0 bytes + test/reference/show-glyphs-advance.ref.png | Bin 1395 -> 0 bytes + test/reference/show-text-current-point.ref.png | Bin 2185 -> 0 bytes + test/reference/skew-extreme.ref.png | Bin 904 -> 0 bytes + test/reference/smask-fill.ref.png | Bin 1134 -> 0 bytes + test/reference/smask-image-mask.ref.png | Bin 643 -> 0 bytes + test/reference/smask-mask.ref.png | Bin 2523 -> 0 bytes + test/reference/smask-paint.ref.png | Bin 2639 -> 0 bytes + test/reference/smask-stroke.ref.png | Bin 1598 -> 0 bytes + test/reference/smask-text.ref.png | Bin 1623 -> 0 bytes + test/reference/smask.ref.png | Bin 3401 -> 0 bytes + .../source-surface-scale-paint.argb32.ref.png | Bin 0 -> 139 bytes + test/reference/source-surface-scale-paint.ref.png | Bin 139 -> 0 bytes + test/reference/spline-decomposition.ref.png | Bin 10005 -> 0 bytes + test/reference/stroke-image.ref.png | Bin 972 -> 0 bytes + test/reference/stroke-pattern.ref.png | Bin 1417 -> 0 bytes + test/reference/subsurface-scale.ref.png | Bin 5216 -> 0 bytes + test/reference/subsurface.ref.png | Bin 1281 -> 0 bytes + test/reference/surface-pattern-scale-down.ref.png | Bin 1784 -> 0 bytes + test/reference/surface-pattern-scale-up.ref.png | Bin 4017 -> 0 bytes + test/reference/surface-pattern.ref.png | Bin 11100 -> 0 bytes + test/reference/text-antialias-gray.ref.png | Bin 975 -> 0 bytes + test/reference/text-antialias-subpixel-bgr.ref.png | Bin 1001 -> 0 bytes + test/reference/text-antialias-subpixel-rgb.ref.png | Bin 1004 -> 0 bytes + test/reference/text-antialias-subpixel-vbgr.ref.png | Bin 992 -> 0 bytes + test/reference/text-antialias-subpixel-vrgb.ref.png | Bin 1004 -> 0 bytes + test/reference/text-antialias-subpixel.ref.png | Bin 1004 -> 0 bytes + test/reference/text-glyph-range.ref.png | Bin 1729 -> 0 bytes + test/reference/text-pattern.ref.png | Bin 3444 -> 0 bytes + test/reference/tiger.ref.png | Bin 71094 -> 0 bytes + test/reference/transforms.ref.png | Bin 341 -> 0 bytes + test/reference/trap-clip.ref.png | Bin 5741 -> 0 bytes + test/reference/twin-antialias-mixed.ref.png | Bin 1639 -> 0 bytes + test/reference/twin-antialias-none.ref.png | Bin 694 -> 0 bytes + test/reference/unclosed-strokes.ref.png | Bin 1432 -> 0 bytes + test/reference/user-font-proxy.ref.png | Bin 14023 -> 0 bytes + test/reference/user-font-rescale.ref.png | Bin 14852 -> 0 bytes + test/reference/world-map-fill.ref.png | Bin 45440 -> 0 bytes + test/reference/world-map-stroke.ref.png | Bin 43370 -> 0 bytes + test/reference/world-map.ref.png | Bin 65880 -> 0 bytes + test/reference/zero-mask.argb32.ref.png | Bin 0 -> 402 bytes + test/reference/zero-mask.ref.png | Bin 402 -> 0 bytes + 175 files changed, 0 insertions(+), 0 deletions(-) + +commit 9eb1237e006bb19098144cc045c0a03d167a82b4 +Author: Chris Wilson +AuthorDate: Thu Jul 4 09:40:37 2013 +0100 +Commit: Chris Wilson +CommitDate: Thu Jul 4 09:40:37 2013 +0100 + + test: Add a few reference images found lurking on my machine + + test/reference/bug-seams.image.xfail.png | Bin 0 -> 1647 bytes + test/reference/record1414x-fill-alpha.ref.png | Bin 0 -> 4212 bytes + test/reference/record2x-fill-alpha.ref.png | Bin 0 -> 5950 bytes + test/reference/record90-fill-alpha.ref.png | Bin 0 -> 2650 bytes + 4 files changed, 0 insertions(+), 0 deletions(-) + +commit 3255462a238dfb6d9f1336f04918d51f2cb6ea18 +Author: Chris Wilson +AuthorDate: Thu Jul 4 09:24:25 2013 +0100 +Commit: Chris Wilson +CommitDate: Thu Jul 4 09:27:56 2013 +0100 + + test: Remove all identical (cmp & pdiff) reference images + + Courtesy of the improved check-ref-dups written by Bryce Harrington: + + Running make check on the codebase (with default configuration) with the + redundant images removed produces essentially the same test results: + + Before + ------ + Tests run: 13687 + Passed: 9216 + Failed: 3566 + Expected Failed: 312 + Error: 1 + Crashed: 17 + Untested: 575 + Total: 13687 + + After + ----- + Tests run: 13689 + Passed: 9216 + Failed: 3566 + Expected Failed: 312 + Error: 1 + Crashed: 19 + Untested: 575 + Total: 13689 + + (with the exception being the pthread tests misbehaving between runs) + + test/reference/a1-clip-fill-equal.argb32.ref.png | Bin 120 -> 0 bytes + test/reference/a1-clip-fill-equal.mask.argb32.ref.png | Bin 120 -> 0 bytes + test/reference/a1-clip-fill-equal.mask.rgb24.ref.png | Bin 120 -> 0 bytes + test/reference/a1-clip-fill-equal.rgb24.ref.png | Bin 120 -> 0 bytes + test/reference/a1-clip-fill-equal.traps.argb32.ref.png | Bin 120 -> 0 bytes + test/reference/a1-clip-fill-equal.traps.rgb24.ref.png | Bin 120 -> 0 bytes + test/reference/a1-clip-fill-rule.mask.argb32.ref.png | Bin 236 -> 0 bytes + test/reference/a1-clip-fill-rule.mask.rgb24.ref.png | Bin 218 -> 0 bytes + test/reference/a1-clip-fill-rule.traps.argb32.ref.png | Bin 236 -> 0 bytes + test/reference/a1-clip-fill-rule.traps.rgb24.ref.png | Bin 218 -> 0 bytes + test/reference/a1-clip-fill.argb32.ref.png | Bin 120 -> 0 bytes + test/reference/a1-clip-fill.mask.argb32.ref.png | Bin 120 -> 0 bytes + test/reference/a1-clip-fill.mask.rgb24.ref.png | Bin 120 -> 0 bytes + test/reference/a1-clip-fill.rgb24.ref.png | Bin 120 -> 0 bytes + test/reference/a1-clip-fill.traps.argb32.ref.png | Bin 120 -> 0 bytes + test/reference/a1-clip-fill.traps.rgb24.ref.png | Bin 120 -> 0 bytes + test/reference/a1-clip-paint.argb32.ref.png | Bin 120 -> 0 bytes + test/reference/a1-clip-paint.mask.argb32.ref.png | Bin 120 -> 0 bytes + test/reference/a1-clip-paint.mask.rgb24.ref.png | Bin 120 -> 0 bytes + test/reference/a1-clip-paint.rgb24.ref.png | Bin 120 -> 0 bytes + test/reference/a1-clip-paint.traps.argb32.ref.png | Bin 120 -> 0 bytes + test/reference/a1-clip-paint.traps.rgb24.ref.png | Bin 120 -> 0 bytes + test/reference/a1-clip-stroke.argb32.ref.png | Bin 120 -> 0 bytes + test/reference/a1-clip-stroke.mask.argb32.ref.png | Bin 120 -> 0 bytes + test/reference/a1-clip-stroke.mask.rgb24.ref.png | Bin 120 -> 0 bytes + test/reference/a1-clip-stroke.rgb24.ref.png | Bin 120 -> 0 bytes + test/reference/a1-clip-stroke.traps.argb32.ref.png | Bin 120 -> 0 bytes + test/reference/a1-clip-stroke.traps.rgb24.ref.png | Bin 120 -> 0 bytes + test/reference/a1-fill.argb32.ref.png | Bin 328 -> 0 bytes + test/reference/a1-fill.mask.argb32.ref.png | Bin 328 -> 0 bytes + test/reference/a1-fill.mask.rgb24.ref.png | Bin 328 -> 0 bytes + test/reference/a1-fill.rgb24.ref.png | Bin 328 -> 0 bytes + test/reference/a1-fill.traps.argb32.ref.png | Bin 328 -> 0 bytes + test/reference/a1-fill.traps.ref.png | Bin 328 -> 0 bytes + test/reference/a1-fill.traps.rgb24.ref.png | Bin 328 -> 0 bytes + test/reference/a1-image-sample.argb32.ref.png | Bin 122 -> 0 bytes + test/reference/a1-image-sample.mask.argb32.ref.png | Bin 122 -> 0 bytes + test/reference/a1-image-sample.mask.rgb24.ref.png | Bin 122 -> 0 bytes + test/reference/a1-image-sample.rgb24.ref.png | Bin 122 -> 0 bytes + test/reference/a1-image-sample.traps.argb32.ref.png | Bin 122 -> 0 bytes + test/reference/a1-image-sample.traps.rgb24.ref.png | Bin 122 -> 0 bytes + .../a1-image-sample.xlib-fallback.rgb24.ref.png | Bin 122 -> 0 bytes + .../a1-image-sample.xlib-window.rgb24.ref.png | Bin 122 -> 0 bytes + test/reference/a1-line-width.argb32.ref.png | Bin 154 -> 0 bytes + test/reference/a1-line-width.mask.argb32.ref.png | Bin 154 -> 0 bytes + test/reference/a1-line-width.mask.rgb24.ref.png | Bin 154 -> 0 bytes + test/reference/a1-line-width.rgb24.ref.png | Bin 154 -> 0 bytes + test/reference/a1-line-width.traps.argb32.ref.png | Bin 154 -> 0 bytes + test/reference/a1-line-width.traps.rgb24.ref.png | Bin 154 -> 0 bytes + test/reference/a1-mask-sample.argb32.ref.png | Bin 122 -> 0 bytes + test/reference/a1-mask-sample.mask.argb32.ref.png | Bin 122 -> 0 bytes + test/reference/a1-mask-sample.mask.rgb24.ref.png | Bin 122 -> 0 bytes + test/reference/a1-mask-sample.rgb24.ref.png | Bin 122 -> 0 bytes + test/reference/a1-mask-sample.traps.argb32.ref.png | Bin 122 -> 0 bytes + test/reference/a1-mask-sample.traps.rgb24.ref.png | Bin 122 -> 0 bytes + test/reference/a1-mask.argb32.ref.png | Bin 106 -> 0 bytes + test/reference/a1-mask.mask.argb32.ref.png | Bin 106 -> 0 bytes + test/reference/a1-mask.mask.rgb24.ref.png | Bin 106 -> 0 bytes + test/reference/a1-mask.pdf.ref.png | Bin 106 -> 0 bytes + test/reference/a1-mask.ps.ref.png | Bin 106 -> 0 bytes + test/reference/a1-mask.rgb24.ref.png | Bin 106 -> 0 bytes + test/reference/a1-mask.traps.argb32.ref.png | Bin 106 -> 0 bytes + test/reference/a1-mask.traps.rgb24.ref.png | Bin 106 -> 0 bytes + .../a1-rasterisation-rectangles.argb32.ref.png | Bin 1729 -> 0 bytes + .../a1-rasterisation-rectangles.mask.argb32.ref.png | Bin 1729 -> 0 bytes + .../a1-rasterisation-rectangles.mask.rgb24.ref.png | Bin 1729 -> 0 bytes + .../a1-rasterisation-rectangles.rgb24.ref.png | Bin 1729 -> 0 bytes + .../a1-rasterisation-rectangles.traps.argb32.ref.png | Bin 1729 -> 0 bytes + .../a1-rasterisation-rectangles.traps.rgb24.ref.png | Bin 1729 -> 0 bytes + .../a1-rasterisation-triangles.argb32.ref.png | Bin 1729 -> 0 bytes + .../a1-rasterisation-triangles.mask.argb32.ref.png | Bin 1729 -> 0 bytes + .../a1-rasterisation-triangles.mask.rgb24.ref.png | Bin 1729 -> 0 bytes + .../reference/a1-rasterisation-triangles.rgb24.ref.png | Bin 1729 -> 0 bytes + .../a1-rasterisation-triangles.traps.argb32.ref.png | Bin 1729 -> 0 bytes + .../a1-rasterisation-triangles.traps.rgb24.ref.png | Bin 1729 -> 0 bytes + test/reference/a1-rectilinear-grid.argb32.ref.png | Bin 207 -> 0 bytes + test/reference/a1-rectilinear-grid.mask.argb32.ref.png | Bin 207 -> 0 bytes + test/reference/a1-rectilinear-grid.mask.rgb24.ref.png | Bin 207 -> 0 bytes + test/reference/a1-rectilinear-grid.rgb24.ref.png | Bin 207 -> 0 bytes + .../reference/a1-rectilinear-grid.traps.argb32.ref.png | Bin 207 -> 0 bytes + test/reference/a1-rectilinear-grid.traps.rgb24.ref.png | Bin 207 -> 0 bytes + test/reference/a1-sample.argb32.ref.png | Bin 786 -> 0 bytes + test/reference/a1-sample.mask.argb32.ref.png | Bin 786 -> 0 bytes + test/reference/a1-sample.mask.rgb24.ref.png | Bin 786 -> 0 bytes + test/reference/a1-sample.rgb24.ref.png | Bin 786 -> 0 bytes + test/reference/a1-sample.traps.argb32.ref.png | Bin 786 -> 0 bytes + test/reference/a1-sample.traps.rgb24.ref.png | Bin 786 -> 0 bytes + test/reference/a1-traps-sample.argb32.ref.png | Bin 120 -> 0 bytes + test/reference/a1-traps-sample.mask.argb32.ref.png | Bin 120 -> 0 bytes + test/reference/a1-traps-sample.mask.rgb24.ref.png | Bin 120 -> 0 bytes + test/reference/a1-traps-sample.rgb24.ref.png | Bin 120 -> 0 bytes + test/reference/a1-traps-sample.traps.argb32.ref.png | Bin 120 -> 0 bytes + test/reference/a1-traps-sample.traps.rgb24.ref.png | Bin 120 -> 0 bytes + test/reference/a8-clear.mask.argb32.ref.png | Bin 271 -> 0 bytes + test/reference/a8-clear.mask.rgb24.ref.png | Bin 271 -> 0 bytes + test/reference/a8-mask.argb32.ref.png | Bin 103 -> 0 bytes + test/reference/a8-mask.mask.argb32.ref.png | Bin 103 -> 0 bytes + test/reference/a8-mask.mask.rgb24.ref.png | Bin 103 -> 0 bytes + test/reference/a8-mask.rgb24.ref.png | Bin 103 -> 0 bytes + test/reference/a8-mask.traps.argb32.ref.png | Bin 103 -> 0 bytes + test/reference/a8-mask.traps.rgb24.ref.png | Bin 103 -> 0 bytes + test/reference/aliasing.mask.argb32.ref.png | Bin 104324 -> 0 bytes + test/reference/aliasing.mask.rgb24.ref.png | Bin 104324 -> 0 bytes + test/reference/alpha-similar.argb32.ref.png | Bin 99 -> 0 bytes + test/reference/alpha-similar.mask.argb32.ref.png | Bin 99 -> 0 bytes + test/reference/alpha-similar.mask.rgb24.ref.png | Bin 88 -> 0 bytes + test/reference/alpha-similar.traps.argb32.ref.png | Bin 99 -> 0 bytes + test/reference/alpha-similar.traps.rgb24.ref.png | Bin 88 -> 0 bytes + test/reference/api-special-cases.argb32.ref.png | Bin 95 -> 0 bytes + test/reference/api-special-cases.mask.argb32.ref.png | Bin 95 -> 0 bytes + test/reference/api-special-cases.mask.rgb24.ref.png | Bin 95 -> 0 bytes + test/reference/api-special-cases.rgb24.ref.png | Bin 95 -> 0 bytes + test/reference/api-special-cases.traps.argb32.ref.png | Bin 95 -> 0 bytes + test/reference/api-special-cases.traps.rgb24.ref.png | Bin 95 -> 0 bytes + test/reference/arc-direction.mask.argb32.ref.png | Bin 6380 -> 0 bytes + test/reference/arc-direction.mask.rgb24.ref.png | Bin 6380 -> 0 bytes + test/reference/arc-infinite-loop.argb32.ref.png | Bin 96 -> 0 bytes + test/reference/arc-infinite-loop.mask.argb32.ref.png | Bin 96 -> 0 bytes + test/reference/arc-infinite-loop.mask.rgb24.ref.png | Bin 96 -> 0 bytes + test/reference/arc-infinite-loop.rgb24.ref.png | Bin 96 -> 0 bytes + test/reference/arc-infinite-loop.traps.argb32.ref.png | Bin 96 -> 0 bytes + test/reference/arc-infinite-loop.traps.rgb24.ref.png | Bin 96 -> 0 bytes + test/reference/big-empty-box.traps.argb32.ref.png | Bin 111 -> 0 bytes + test/reference/big-empty-box.traps.rgb24.ref.png | Bin 108 -> 0 bytes + test/reference/big-empty-triangle.mask.argb32.ref.png | Bin 111 -> 0 bytes + test/reference/big-empty-triangle.mask.rgb24.ref.png | Bin 108 -> 0 bytes + test/reference/big-empty-triangle.traps.argb32.ref.png | Bin 111 -> 0 bytes + test/reference/big-empty-triangle.traps.rgb24.ref.png | Bin 108 -> 0 bytes + test/reference/big-line.mask.argb32.ref.png | Bin 977 -> 0 bytes + test/reference/big-line.mask.rgb24.ref.png | Bin 977 -> 0 bytes + test/reference/big-little-box.mask.argb32.ref.png | Bin 169 -> 0 bytes + test/reference/big-little-box.mask.rgb24.ref.png | Bin 160 -> 0 bytes + test/reference/big-little-box.traps.argb32.ref.png | Bin 169 -> 0 bytes + test/reference/big-little-box.traps.rgb24.ref.png | Bin 160 -> 0 bytes + test/reference/big-little-triangle.mask.argb32.ref.png | Bin 409 -> 0 bytes + test/reference/big-little-triangle.mask.rgb24.ref.png | Bin 328 -> 0 bytes + test/reference/bilevel-image.argb32.ref.png | Bin 105 -> 0 bytes + test/reference/bilevel-image.mask.argb32.ref.png | Bin 105 -> 0 bytes + test/reference/bilevel-image.mask.rgb24.ref.png | Bin 105 -> 0 bytes + test/reference/bilevel-image.rgb24.ref.png | Bin 105 -> 0 bytes + test/reference/bilevel-image.traps.argb32.ref.png | Bin 105 -> 0 bytes + test/reference/bilevel-image.traps.rgb24.ref.png | Bin 105 -> 0 bytes + test/reference/bitmap-font.argb32.ref.png | Bin 931 -> 0 bytes + test/reference/bitmap-font.mask.argb32.ref.png | Bin 931 -> 0 bytes + test/reference/bitmap-font.mask.rgb24.ref.png | Bin 871 -> 0 bytes + test/reference/bitmap-font.traps.argb32.ref.png | Bin 931 -> 0 bytes + test/reference/bitmap-font.traps.rgb24.ref.png | Bin 871 -> 0 bytes + test/reference/bug-40410.mask.argb32.ref.png | Bin 429 -> 0 bytes + test/reference/bug-40410.mask.rgb24.ref.png | Bin 429 -> 0 bytes + test/reference/bug-bo-rectangular.argb32.ref.png | Bin 950 -> 0 bytes + test/reference/bug-bo-rectangular.mask.argb32.ref.png | Bin 950 -> 0 bytes + test/reference/bug-bo-rectangular.mask.rgb24.ref.png | Bin 950 -> 0 bytes + test/reference/bug-bo-rectangular.rgb24.ref.png | Bin 950 -> 0 bytes + test/reference/bug-bo-rectangular.traps.argb32.ref.png | Bin 950 -> 0 bytes + test/reference/bug-bo-rectangular.traps.rgb24.ref.png | Bin 950 -> 0 bytes + test/reference/bug-bo-ricotz.mask.argb32.ref.png | Bin 2128 -> 0 bytes + test/reference/bug-bo-ricotz.mask.rgb24.ref.png | Bin 2128 -> 0 bytes + test/reference/bug-bo-ricotz.traps.argb32.ref.png | Bin 2125 -> 0 bytes + test/reference/bug-bo-ricotz.traps.rgb24.ref.png | Bin 2125 -> 0 bytes + test/reference/bug-extents.mask.argb32.ref.png | Bin 9251 -> 0 bytes + test/reference/bug-extents.mask.rgb24.ref.png | Bin 9251 -> 0 bytes + test/reference/caps-joins.mask.argb32.ref.png | Bin 2893 -> 0 bytes + test/reference/caps-joins.mask.rgb24.ref.png | Bin 2893 -> 0 bytes + test/reference/caps-sub-paths.mask.argb32.ref.png | Bin 168 -> 0 bytes + test/reference/caps-sub-paths.mask.rgb24.ref.png | Bin 168 -> 0 bytes + test/reference/caps.mask.argb32.ref.png | Bin 2115 -> 0 bytes + test/reference/caps.mask.rgb24.ref.png | Bin 2115 -> 0 bytes + test/reference/checkerboard.argb32.ref.png | Bin 142 -> 0 bytes + test/reference/checkerboard.mask.argb32.ref.png | Bin 142 -> 0 bytes + test/reference/checkerboard.mask.rgb24.ref.png | Bin 142 -> 0 bytes + test/reference/checkerboard.rgb24.ref.png | Bin 142 -> 0 bytes + test/reference/checkerboard.traps.argb32.ref.png | Bin 142 -> 0 bytes + test/reference/checkerboard.traps.rgb24.ref.png | Bin 142 -> 0 bytes + test/reference/clear-source.mask.argb32.ref.png | Bin 882 -> 0 bytes + test/reference/clear-source.mask.rgb24.ref.png | Bin 882 -> 0 bytes + test/reference/clear.mask.argb32.ref.png | Bin 692 -> 0 bytes + test/reference/clear.mask.rgb24.ref.png | Bin 617 -> 0 bytes + test/reference/clip-all.argb32.ref.png | Bin 95 -> 0 bytes + test/reference/clip-all.mask.argb32.ref.png | Bin 95 -> 0 bytes + test/reference/clip-all.mask.rgb24.ref.png | Bin 95 -> 0 bytes + test/reference/clip-all.rgb24.ref.png | Bin 95 -> 0 bytes + test/reference/clip-all.traps.argb32.ref.png | Bin 95 -> 0 bytes + test/reference/clip-all.traps.rgb24.ref.png | Bin 95 -> 0 bytes + test/reference/clip-complex-shape-eo-aa.argb32.ref.png | Bin 325 -> 0 bytes + .../clip-complex-shape-eo-aa.mask.argb32.ref.png | Bin 325 -> 0 bytes + .../clip-complex-shape-eo-aa.mask.rgb24.ref.png | Bin 325 -> 0 bytes + test/reference/clip-complex-shape-eo-aa.rgb24.ref.png | Bin 325 -> 0 bytes + .../clip-complex-shape-eo-aa.traps.argb32.ref.png | Bin 325 -> 0 bytes + .../clip-complex-shape-eo-aa.traps.rgb24.ref.png | Bin 325 -> 0 bytes + .../clip-complex-shape-eo-mono.argb32.ref.png | Bin 325 -> 0 bytes + .../clip-complex-shape-eo-mono.mask.argb32.ref.png | Bin 325 -> 0 bytes + .../clip-complex-shape-eo-mono.mask.rgb24.ref.png | Bin 325 -> 0 bytes + .../reference/clip-complex-shape-eo-mono.rgb24.ref.png | Bin 325 -> 0 bytes + .../clip-complex-shape-eo-mono.traps.argb32.ref.png | Bin 325 -> 0 bytes + .../clip-complex-shape-eo-mono.traps.rgb24.ref.png | Bin 325 -> 0 bytes + test/reference/clip-contexts.argb32.ref.png | Bin 98 -> 0 bytes + test/reference/clip-contexts.mask.argb32.ref.png | Bin 98 -> 0 bytes + test/reference/clip-contexts.mask.rgb24.ref.png | Bin 98 -> 0 bytes + test/reference/clip-contexts.rgb24.ref.png | Bin 98 -> 0 bytes + test/reference/clip-contexts.traps.argb32.ref.png | Bin 98 -> 0 bytes + test/reference/clip-contexts.traps.rgb24.ref.png | Bin 98 -> 0 bytes + test/reference/clip-device-offset.mask.argb32.ref.png | Bin 175 -> 0 bytes + test/reference/clip-device-offset.mask.rgb24.ref.png | Bin 168 -> 0 bytes + test/reference/clip-device-offset.traps.argb32.ref.png | Bin 175 -> 0 bytes + test/reference/clip-device-offset.traps.rgb24.ref.png | Bin 168 -> 0 bytes + test/reference/clip-empty-group.argb32.ref.png | Bin 103 -> 0 bytes + test/reference/clip-empty-group.mask.argb32.ref.png | Bin 103 -> 0 bytes + test/reference/clip-empty-group.mask.rgb24.ref.png | Bin 103 -> 0 bytes + test/reference/clip-empty-group.rgb24.ref.png | Bin 103 -> 0 bytes + test/reference/clip-empty-group.traps.argb32.ref.png | Bin 103 -> 0 bytes + test/reference/clip-empty-group.traps.rgb24.ref.png | Bin 103 -> 0 bytes + test/reference/clip-empty-save.argb32.ref.png | Bin 95 -> 0 bytes + test/reference/clip-empty-save.mask.argb32.ref.png | Bin 95 -> 0 bytes + test/reference/clip-empty-save.mask.rgb24.ref.png | Bin 95 -> 0 bytes + test/reference/clip-empty-save.rgb24.ref.png | Bin 95 -> 0 bytes + test/reference/clip-empty-save.traps.argb32.ref.png | Bin 95 -> 0 bytes + test/reference/clip-empty-save.traps.rgb24.ref.png | Bin 95 -> 0 bytes + test/reference/clip-empty.argb32.ref.png | Bin 95 -> 0 bytes + test/reference/clip-empty.mask.argb32.ref.png | Bin 95 -> 0 bytes + test/reference/clip-empty.mask.rgb24.ref.png | Bin 95 -> 0 bytes + test/reference/clip-empty.rgb24.ref.png | Bin 95 -> 0 bytes + test/reference/clip-empty.traps.argb32.ref.png | Bin 95 -> 0 bytes + test/reference/clip-empty.traps.rgb24.ref.png | Bin 95 -> 0 bytes + test/reference/clip-fill-no-op.argb32.ref.png | Bin 152 -> 0 bytes + test/reference/clip-fill-no-op.mask.argb32.ref.png | Bin 152 -> 0 bytes + test/reference/clip-fill-no-op.mask.rgb24.ref.png | Bin 152 -> 0 bytes + test/reference/clip-fill-no-op.rgb24.ref.png | Bin 152 -> 0 bytes + test/reference/clip-fill-no-op.traps.argb32.ref.png | Bin 152 -> 0 bytes + test/reference/clip-fill-no-op.traps.rgb24.ref.png | Bin 152 -> 0 bytes + .../clip-fill-rule-pixel-aligned.argb32.ref.png | Bin 176 -> 0 bytes + .../clip-fill-rule-pixel-aligned.mask.argb32.ref.png | Bin 176 -> 0 bytes + .../clip-fill-rule-pixel-aligned.mask.rgb24.ref.png | Bin 165 -> 0 bytes + .../clip-fill-rule-pixel-aligned.traps.argb32.ref.png | Bin 176 -> 0 bytes + .../clip-fill-rule-pixel-aligned.traps.rgb24.ref.png | Bin 165 -> 0 bytes + test/reference/clip-fill-rule.mask.argb32.ref.png | Bin 437 -> 0 bytes + test/reference/clip-fill-rule.mask.rgb24.ref.png | Bin 393 -> 0 bytes + ...clip-group-shapes-aligned-rectangles.argb32.ref.png | Bin 378 -> 0 bytes + ...group-shapes-aligned-rectangles.mask.argb32.ref.png | Bin 378 -> 0 bytes + ...-group-shapes-aligned-rectangles.mask.rgb24.ref.png | Bin 378 -> 0 bytes + .../clip-group-shapes-aligned-rectangles.rgb24.ref.png | Bin 378 -> 0 bytes + ...roup-shapes-aligned-rectangles.traps.argb32.ref.png | Bin 378 -> 0 bytes + ...group-shapes-aligned-rectangles.traps.rgb24.ref.png | Bin 378 -> 0 bytes + ...ip-group-shapes-unaligned-rectangles.argb32.ref.png | Bin 415 -> 0 bytes + ...lip-group-shapes-unaligned-rectangles.rgb24.ref.png | Bin 415 -> 0 bytes + test/reference/clip-intersect.mask.argb32.ref.png | Bin 200 -> 0 bytes + test/reference/clip-intersect.mask.rgb24.ref.png | Bin 200 -> 0 bytes + .../reference/clip-mixed-antialias.mask.argb32.ref.png | Bin 1084 -> 0 bytes + test/reference/clip-mixed-antialias.mask.rgb24.ref.png | Bin 1084 -> 0 bytes + test/reference/clip-nesting.mask.argb32.ref.png | Bin 1044 -> 0 bytes + test/reference/clip-polygons.traps.argb32.ref.png | Bin 1268 -> 0 bytes + test/reference/clip-polygons.traps.rgb24.ref.png | Bin 1268 -> 0 bytes + test/reference/clip-push-group.mask.argb32.ref.png | Bin 164 -> 0 bytes + test/reference/clip-push-group.mask.rgb24.ref.png | Bin 164 -> 0 bytes + test/reference/clip-rectilinear.argb32.ref.png | Bin 439 -> 0 bytes + test/reference/clip-rectilinear.rgb24.ref.png | Bin 439 -> 0 bytes + test/reference/clip-rectilinear.traps.argb32.ref.png | Bin 440 -> 0 bytes + test/reference/clip-rectilinear.traps.rgb24.ref.png | Bin 440 -> 0 bytes + .../clip-rotate-image-surface-paint.argb32.ref.png | Bin 202 -> 0 bytes + ...clip-rotate-image-surface-paint.mask.argb32.ref.png | Bin 202 -> 0 bytes + .../clip-rotate-image-surface-paint.mask.rgb24.ref.png | Bin 202 -> 0 bytes + .../clip-rotate-image-surface-paint.rgb24.ref.png | Bin 202 -> 0 bytes + ...lip-rotate-image-surface-paint.traps.argb32.ref.png | Bin 202 -> 0 bytes + ...clip-rotate-image-surface-paint.traps.rgb24.ref.png | Bin 202 -> 0 bytes + ...ate-image-surface-paint.xlib-fallback.rgb24.ref.png | Bin 202 -> 0 bytes + ...otate-image-surface-paint.xlib-window.rgb24.ref.png | Bin 202 -> 0 bytes + test/reference/clip-stroke-no-op.argb32.ref.png | Bin 152 -> 0 bytes + test/reference/clip-stroke-no-op.mask.argb32.ref.png | Bin 152 -> 0 bytes + test/reference/clip-stroke-no-op.mask.rgb24.ref.png | Bin 152 -> 0 bytes + test/reference/clip-stroke-no-op.rgb24.ref.png | Bin 152 -> 0 bytes + test/reference/clip-stroke-no-op.traps.argb32.ref.png | Bin 152 -> 0 bytes + test/reference/clip-stroke-no-op.traps.rgb24.ref.png | Bin 152 -> 0 bytes + test/reference/clip-twice-rectangle.argb32.ref.png | Bin 323 -> 0 bytes + .../reference/clip-twice-rectangle.mask.argb32.ref.png | Bin 323 -> 0 bytes + test/reference/clip-twice-rectangle.mask.rgb24.ref.png | Bin 323 -> 0 bytes + test/reference/clip-twice-rectangle.rgb24.ref.png | Bin 323 -> 0 bytes + .../clip-twice-rectangle.traps.argb32.ref.png | Bin 323 -> 0 bytes + .../reference/clip-twice-rectangle.traps.rgb24.ref.png | Bin 323 -> 0 bytes + test/reference/clip-unbounded.argb32.ref.png | Bin 100 -> 0 bytes + test/reference/clip-unbounded.mask.argb32.ref.png | Bin 100 -> 0 bytes + test/reference/clip-unbounded.mask.rgb24.ref.png | Bin 97 -> 0 bytes + test/reference/clip-unbounded.traps.argb32.ref.png | Bin 100 -> 0 bytes + test/reference/clip-unbounded.traps.rgb24.ref.png | Bin 97 -> 0 bytes + test/reference/clipped-surface.argb32.ref.png | Bin 345 -> 0 bytes + test/reference/clipped-surface.mask.argb32.ref.png | Bin 345 -> 0 bytes + test/reference/clipped-surface.mask.rgb24.ref.png | Bin 345 -> 0 bytes + test/reference/clipped-surface.rgb24.ref.png | Bin 345 -> 0 bytes + test/reference/clipped-surface.traps.argb32.ref.png | Bin 345 -> 0 bytes + test/reference/clipped-surface.traps.rgb24.ref.png | Bin 345 -> 0 bytes + test/reference/close-path.mask.argb32.ref.png | Bin 294 -> 0 bytes + test/reference/close-path.mask.rgb24.ref.png | Bin 294 -> 0 bytes + ...posite-integer-translate-over-repeat.argb32.ref.png | Bin 334 -> 0 bytes + ...e-integer-translate-over-repeat.mask.argb32.ref.png | Bin 334 -> 0 bytes + ...te-integer-translate-over-repeat.mask.rgb24.ref.png | Bin 334 -> 0 bytes + ...mposite-integer-translate-over-repeat.rgb24.ref.png | Bin 334 -> 0 bytes + ...-integer-translate-over-repeat.traps.argb32.ref.png | Bin 334 -> 0 bytes + ...e-integer-translate-over-repeat.traps.rgb24.ref.png | Bin 334 -> 0 bytes + .../composite-integer-translate-over.argb32.ref.png | Bin 13998 -> 0 bytes + ...omposite-integer-translate-over.mask.argb32.ref.png | Bin 13998 -> 0 bytes + ...composite-integer-translate-over.mask.rgb24.ref.png | Bin 13998 -> 0 bytes + .../composite-integer-translate-over.rgb24.ref.png | Bin 13998 -> 0 bytes + ...mposite-integer-translate-over.traps.argb32.ref.png | Bin 13998 -> 0 bytes + ...omposite-integer-translate-over.traps.rgb24.ref.png | Bin 13998 -> 0 bytes + .../composite-integer-translate-source.argb32.ref.png | Bin 13998 -> 0 bytes + ...posite-integer-translate-source.mask.argb32.ref.png | Bin 13998 -> 0 bytes + ...mposite-integer-translate-source.mask.rgb24.ref.png | Bin 13998 -> 0 bytes + .../composite-integer-translate-source.rgb24.ref.png | Bin 13998 -> 0 bytes + ...osite-integer-translate-source.traps.argb32.ref.png | Bin 13998 -> 0 bytes + ...posite-integer-translate-source.traps.rgb24.ref.png | Bin 13998 -> 0 bytes + test/reference/copy-disjoint.argb32.ref.png | Bin 1098 -> 0 bytes + test/reference/copy-disjoint.mask.argb32.ref.png | Bin 1098 -> 0 bytes + test/reference/copy-disjoint.mask.rgb24.ref.png | Bin 1098 -> 0 bytes + test/reference/copy-disjoint.rgb24.ref.png | Bin 1098 -> 0 bytes + test/reference/copy-disjoint.traps.argb32.ref.png | Bin 1098 -> 0 bytes + test/reference/copy-disjoint.traps.rgb24.ref.png | Bin 1098 -> 0 bytes + test/reference/copy-path.mask.argb32.ref.png | Bin 616 -> 0 bytes + test/reference/copy-path.mask.rgb24.ref.png | Bin 616 -> 0 bytes + test/reference/create-from-png-stream.argb32.ref.png | Bin 96 -> 0 bytes + .../create-from-png-stream.mask.argb32.ref.png | Bin 96 -> 0 bytes + .../create-from-png-stream.mask.rgb24.ref.png | Bin 96 -> 0 bytes + test/reference/create-from-png-stream.rgb24.ref.png | Bin 96 -> 0 bytes + .../create-from-png-stream.traps.argb32.ref.png | Bin 96 -> 0 bytes + .../create-from-png-stream.traps.rgb24.ref.png | Bin 96 -> 0 bytes + test/reference/culled-glyphs.mask.argb32.ref.png | Bin 440 -> 0 bytes + test/reference/culled-glyphs.mask.rgb24.ref.png | Bin 440 -> 0 bytes + test/reference/culled-glyphs.traps.argb32.ref.png | Bin 440 -> 0 bytes + test/reference/culled-glyphs.traps.rgb24.ref.png | Bin 440 -> 0 bytes + test/reference/dash-infinite-loop.mask.argb32.ref.png | Bin 877 -> 0 bytes + test/reference/dash-infinite-loop.mask.rgb24.ref.png | Bin 877 -> 0 bytes + test/reference/dash-no-dash.argb32.ref.png | Bin 119 -> 0 bytes + test/reference/dash-no-dash.mask.argb32.ref.png | Bin 119 -> 0 bytes + test/reference/dash-no-dash.mask.rgb24.ref.png | Bin 119 -> 0 bytes + test/reference/dash-no-dash.rgb24.ref.png | Bin 119 -> 0 bytes + test/reference/dash-no-dash.traps.argb32.ref.png | Bin 119 -> 0 bytes + test/reference/dash-no-dash.traps.rgb24.ref.png | Bin 119 -> 0 bytes + .../reference/dash-offset-negative.mask.argb32.ref.png | Bin 129 -> 0 bytes + test/reference/dash-offset-negative.mask.rgb24.ref.png | Bin 129 -> 0 bytes + test/reference/dash-offset.argb32.ref.png | Bin 794 -> 0 bytes + test/reference/dash-offset.mask.argb32.ref.png | Bin 794 -> 0 bytes + test/reference/dash-offset.mask.rgb24.ref.png | Bin 794 -> 0 bytes + test/reference/dash-offset.rgb24.ref.png | Bin 794 -> 0 bytes + test/reference/dash-offset.traps.argb32.ref.png | Bin 794 -> 0 bytes + test/reference/dash-offset.traps.rgb24.ref.png | Bin 794 -> 0 bytes + test/reference/dash-state.mask.argb32.ref.png | Bin 8027 -> 0 bytes + test/reference/dash-state.mask.rgb24.ref.png | Bin 8027 -> 0 bytes + test/reference/dash-zero-length.mask.argb32.ref.png | Bin 230 -> 0 bytes + test/reference/degenerate-arcs.argb32.ref.png | Bin 120 -> 0 bytes + test/reference/degenerate-arcs.mask.argb32.ref.png | Bin 120 -> 0 bytes + test/reference/degenerate-arcs.mask.rgb24.ref.png | Bin 120 -> 0 bytes + test/reference/degenerate-arcs.rgb24.ref.png | Bin 120 -> 0 bytes + test/reference/degenerate-arcs.traps.argb32.ref.png | Bin 120 -> 0 bytes + test/reference/degenerate-arcs.traps.rgb24.ref.png | Bin 120 -> 0 bytes + .../degenerate-linear-gradient.mask.argb32.ref.png | Bin 336 -> 0 bytes + .../degenerate-linear-gradient.mask.rgb24.ref.png | Bin 336 -> 0 bytes + .../degenerate-linear-gradient.traps.argb32.ref.png | Bin 336 -> 0 bytes + .../degenerate-linear-gradient.traps.rgb24.ref.png | Bin 336 -> 0 bytes + test/reference/degenerate-pen.mask.argb32.ref.png | Bin 1019 -> 0 bytes + test/reference/degenerate-pen.mask.rgb24.ref.png | Bin 1019 -> 0 bytes + .../degenerate-radial-gradient.argb32.ref.png | Bin 428 -> 0 bytes + .../degenerate-radial-gradient.mask.argb32.ref.png | Bin 428 -> 0 bytes + .../degenerate-radial-gradient.mask.rgb24.ref.png | Bin 428 -> 0 bytes + .../reference/degenerate-radial-gradient.rgb24.ref.png | Bin 428 -> 0 bytes + .../degenerate-radial-gradient.traps.argb32.ref.png | Bin 428 -> 0 bytes + .../degenerate-radial-gradient.traps.rgb24.ref.png | Bin 428 -> 0 bytes + test/reference/device-offset-fractional.argb32.ref.png | Bin 266 -> 0 bytes + .../device-offset-fractional.mask.argb32.ref.png | Bin 266 -> 0 bytes + .../device-offset-fractional.mask.rgb24.ref.png | Bin 266 -> 0 bytes + test/reference/device-offset-fractional.rgb24.ref.png | Bin 266 -> 0 bytes + .../device-offset-fractional.traps.argb32.ref.png | Bin 266 -> 0 bytes + .../device-offset-fractional.traps.rgb24.ref.png | Bin 266 -> 0 bytes + test/reference/device-offset-positive.argb32.ref.png | Bin 120 -> 0 bytes + .../device-offset-positive.mask.argb32.ref.png | Bin 120 -> 0 bytes + .../device-offset-positive.mask.rgb24.ref.png | Bin 111 -> 0 bytes + .../device-offset-positive.traps.argb32.ref.png | Bin 120 -> 0 bytes + .../device-offset-positive.traps.rgb24.ref.png | Bin 111 -> 0 bytes + test/reference/device-offset-scale.argb32.ref.png | Bin 109 -> 0 bytes + test/reference/device-offset-scale.mask.argb32.ref.png | Bin 109 -> 0 bytes + test/reference/device-offset-scale.mask.rgb24.ref.png | Bin 109 -> 0 bytes + test/reference/device-offset-scale.rgb24.ref.png | Bin 109 -> 0 bytes + .../reference/device-offset-scale.traps.argb32.ref.png | Bin 109 -> 0 bytes + test/reference/device-offset-scale.traps.rgb24.ref.png | Bin 109 -> 0 bytes + test/reference/device-offset.argb32.ref.png | Bin 118 -> 0 bytes + test/reference/device-offset.mask.argb32.ref.png | Bin 118 -> 0 bytes + test/reference/device-offset.mask.rgb24.ref.png | Bin 111 -> 0 bytes + test/reference/device-offset.traps.argb32.ref.png | Bin 118 -> 0 bytes + test/reference/device-offset.traps.rgb24.ref.png | Bin 111 -> 0 bytes + test/reference/extend-pad-border.mask.argb32.ref.png | Bin 495 -> 0 bytes + test/reference/extend-pad-border.mask.rgb24.ref.png | Bin 495 -> 0 bytes + test/reference/extend-pad-border.traps.argb32.ref.png | Bin 495 -> 0 bytes + test/reference/extend-pad-border.traps.rgb24.ref.png | Bin 495 -> 0 bytes + test/reference/extend-pad-similar.argb32.ref.png | Bin 279 -> 0 bytes + test/reference/extend-pad-similar.mask.argb32.ref.png | Bin 279 -> 0 bytes + test/reference/extend-pad-similar.mask.rgb24.ref.png | Bin 279 -> 0 bytes + test/reference/extend-pad-similar.rgb24.ref.png | Bin 279 -> 0 bytes + test/reference/extend-pad-similar.traps.argb32.ref.png | Bin 279 -> 0 bytes + test/reference/extend-pad-similar.traps.rgb24.ref.png | Bin 279 -> 0 bytes + test/reference/extend-pad.argb32.ref.png | Bin 279 -> 0 bytes + test/reference/extend-pad.mask.argb32.ref.png | Bin 279 -> 0 bytes + test/reference/extend-pad.mask.rgb24.ref.png | Bin 279 -> 0 bytes + test/reference/extend-pad.rgb24.ref.png | Bin 279 -> 0 bytes + test/reference/extend-pad.traps.argb32.ref.png | Bin 279 -> 0 bytes + test/reference/extend-pad.traps.rgb24.ref.png | Bin 279 -> 0 bytes + test/reference/extend-reflect-similar.argb32.ref.png | Bin 133406 -> 0 bytes + .../extend-reflect-similar.mask.argb32.ref.png | Bin 133406 -> 0 bytes + .../extend-reflect-similar.mask.rgb24.ref.png | Bin 133406 -> 0 bytes + test/reference/extend-reflect-similar.rgb24.ref.png | Bin 133406 -> 0 bytes + .../extend-reflect-similar.traps.argb32.ref.png | Bin 133406 -> 0 bytes + .../extend-reflect-similar.traps.rgb24.ref.png | Bin 133406 -> 0 bytes + test/reference/extend-reflect.argb32.ref.png | Bin 133406 -> 0 bytes + test/reference/extend-reflect.mask.argb32.ref.png | Bin 133406 -> 0 bytes + test/reference/extend-reflect.mask.rgb24.ref.png | Bin 133406 -> 0 bytes + test/reference/extend-reflect.rgb24.ref.png | Bin 133406 -> 0 bytes + test/reference/extend-reflect.traps.argb32.ref.png | Bin 133406 -> 0 bytes + test/reference/extend-reflect.traps.rgb24.ref.png | Bin 133406 -> 0 bytes + test/reference/extend-repeat-similar.argb32.ref.png | Bin 108603 -> 0 bytes + .../extend-repeat-similar.mask.argb32.ref.png | Bin 108603 -> 0 bytes + .../reference/extend-repeat-similar.mask.rgb24.ref.png | Bin 108603 -> 0 bytes + test/reference/extend-repeat-similar.rgb24.ref.png | Bin 108603 -> 0 bytes + .../extend-repeat-similar.traps.argb32.ref.png | Bin 108603 -> 0 bytes + .../extend-repeat-similar.traps.rgb24.ref.png | Bin 108603 -> 0 bytes + test/reference/extend-repeat.argb32.ref.png | Bin 108603 -> 0 bytes + test/reference/extend-repeat.mask.argb32.ref.png | Bin 108603 -> 0 bytes + test/reference/extend-repeat.mask.rgb24.ref.png | Bin 108603 -> 0 bytes + test/reference/extend-repeat.rgb24.ref.png | Bin 108603 -> 0 bytes + test/reference/extend-repeat.traps.argb32.ref.png | Bin 108603 -> 0 bytes + test/reference/extend-repeat.traps.rgb24.ref.png | Bin 108603 -> 0 bytes + .../extended-blend-alpha-mask.mask.argb32.ref.png | Bin 9221 -> 0 bytes + .../extended-blend-alpha-mask.mask.rgb24.ref.png | Bin 4597 -> 0 bytes + .../extended-blend-alpha-mask.traps.argb32.ref.png | Bin 9221 -> 0 bytes + .../extended-blend-alpha-mask.traps.rgb24.ref.png | Bin 4597 -> 0 bytes + .../reference/extended-blend-alpha.mask.argb32.ref.png | Bin 9406 -> 0 bytes + test/reference/extended-blend-alpha.mask.rgb24.ref.png | Bin 5740 -> 0 bytes + .../extended-blend-alpha.traps.argb32.ref.png | Bin 9406 -> 0 bytes + .../reference/extended-blend-alpha.traps.rgb24.ref.png | Bin 5740 -> 0 bytes + test/reference/extended-blend-mask.mask.argb32.ref.png | Bin 3971 -> 0 bytes + test/reference/extended-blend-mask.mask.rgb24.ref.png | Bin 3643 -> 0 bytes + .../reference/extended-blend-mask.traps.argb32.ref.png | Bin 3971 -> 0 bytes + test/reference/extended-blend-mask.traps.rgb24.ref.png | Bin 3643 -> 0 bytes + .../extended-blend-solid-alpha.mask.argb32.ref.png | Bin 9406 -> 0 bytes + .../extended-blend-solid-alpha.mask.rgb24.ref.png | Bin 5740 -> 0 bytes + .../extended-blend-solid-alpha.traps.argb32.ref.png | Bin 9406 -> 0 bytes + .../extended-blend-solid-alpha.traps.rgb24.ref.png | Bin 5740 -> 0 bytes + .../reference/extended-blend-solid.mask.argb32.ref.png | Bin 4063 -> 0 bytes + test/reference/extended-blend-solid.mask.rgb24.ref.png | Bin 3775 -> 0 bytes + .../extended-blend-solid.traps.argb32.ref.png | Bin 4063 -> 0 bytes + .../reference/extended-blend-solid.traps.rgb24.ref.png | Bin 3775 -> 0 bytes + test/reference/extended-blend.mask.argb32.ref.png | Bin 4063 -> 0 bytes + test/reference/extended-blend.mask.rgb24.ref.png | Bin 3775 -> 0 bytes + test/reference/extended-blend.traps.argb32.ref.png | Bin 4063 -> 0 bytes + test/reference/extended-blend.traps.rgb24.ref.png | Bin 3775 -> 0 bytes + test/reference/fill-alpha-pattern.mask.argb32.ref.png | Bin 3381 -> 0 bytes + test/reference/fill-alpha-pattern.mask.rgb24.ref.png | Bin 3381 -> 0 bytes + test/reference/fill-alpha.mask.argb32.ref.png | Bin 2736 -> 0 bytes + test/reference/fill-alpha.mask.rgb24.ref.png | Bin 2736 -> 0 bytes + .../fill-and-stroke-alpha-add.mask.argb32.ref.png | Bin 556 -> 0 bytes + .../fill-and-stroke-alpha-add.mask.rgb24.ref.png | Bin 556 -> 0 bytes + .../fill-and-stroke-alpha.mask.argb32.ref.png | Bin 508 -> 0 bytes + .../reference/fill-and-stroke-alpha.mask.rgb24.ref.png | Bin 508 -> 0 bytes + test/reference/fill-and-stroke.mask.argb32.ref.png | Bin 312 -> 0 bytes + test/reference/fill-and-stroke.mask.rgb24.ref.png | Bin 283 -> 0 bytes + .../fill-degenerate-sort-order.mask.argb32.ref.png | Bin 2400 -> 0 bytes + .../fill-degenerate-sort-order.mask.rgb24.ref.png | Bin 2049 -> 0 bytes + test/reference/fill-disjoint.argb32.ref.png | Bin 1098 -> 0 bytes + test/reference/fill-disjoint.mask.argb32.ref.png | Bin 1098 -> 0 bytes + test/reference/fill-disjoint.mask.rgb24.ref.png | Bin 1098 -> 0 bytes + test/reference/fill-disjoint.rgb24.ref.png | Bin 1098 -> 0 bytes + test/reference/fill-disjoint.traps.argb32.ref.png | Bin 1098 -> 0 bytes + test/reference/fill-disjoint.traps.rgb24.ref.png | Bin 1098 -> 0 bytes + test/reference/fill-empty.mask.argb32.ref.png | Bin 99 -> 0 bytes + test/reference/fill-empty.mask.rgb24.ref.png | Bin 97 -> 0 bytes + test/reference/fill-empty.traps.argb32.ref.png | Bin 99 -> 0 bytes + test/reference/fill-empty.traps.rgb24.ref.png | Bin 97 -> 0 bytes + test/reference/fill-image.mask.argb32.ref.png | Bin 1315 -> 0 bytes + test/reference/fill-image.mask.rgb24.ref.png | Bin 1315 -> 0 bytes + test/reference/fill-missed-stop.mask.argb32.ref.png | Bin 455 -> 0 bytes + test/reference/fill-missed-stop.mask.rgb24.ref.png | Bin 382 -> 0 bytes + test/reference/fill-rule.mask.argb32.ref.png | Bin 2065 -> 0 bytes + test/reference/fill-rule.mask.rgb24.ref.png | Bin 1803 -> 0 bytes + .../filter-bilinear-extents.mask.argb32.ref.png | Bin 1210 -> 0 bytes + .../filter-bilinear-extents.mask.rgb24.ref.png | Bin 1210 -> 0 bytes + .../filter-bilinear-extents.traps.argb32.ref.png | Bin 1210 -> 0 bytes + .../filter-bilinear-extents.traps.rgb24.ref.png | Bin 1210 -> 0 bytes + test/reference/filter-nearest-offset.argb32.ref.png | Bin 201 -> 0 bytes + .../filter-nearest-offset.mask.argb32.ref.png | Bin 201 -> 0 bytes + .../reference/filter-nearest-offset.mask.rgb24.ref.png | Bin 201 -> 0 bytes + test/reference/filter-nearest-offset.rgb24.ref.png | Bin 201 -> 0 bytes + .../filter-nearest-offset.traps.argb32.ref.png | Bin 201 -> 0 bytes + .../filter-nearest-offset.traps.rgb24.ref.png | Bin 201 -> 0 bytes + .../filter-nearest-transformed.argb32.ref.png | Bin 514 -> 0 bytes + .../filter-nearest-transformed.mask.argb32.ref.png | Bin 514 -> 0 bytes + .../filter-nearest-transformed.mask.rgb24.ref.png | Bin 514 -> 0 bytes + .../reference/filter-nearest-transformed.rgb24.ref.png | Bin 514 -> 0 bytes + .../filter-nearest-transformed.traps.argb32.ref.png | Bin 514 -> 0 bytes + .../filter-nearest-transformed.traps.rgb24.ref.png | Bin 514 -> 0 bytes + .../font-matrix-translation.mask.argb32.ref.png | Bin 865 -> 0 bytes + .../font-matrix-translation.mask.rgb24.ref.png | Bin 865 -> 0 bytes + .../font-matrix-translation.traps.argb32.ref.png | Bin 865 -> 0 bytes + .../font-matrix-translation.traps.rgb24.ref.png | Bin 865 -> 0 bytes + .../ft-show-glyphs-positioning.mask.argb32.ref.png | Bin 3243 -> 0 bytes + .../ft-show-glyphs-positioning.mask.rgb24.ref.png | Bin 3243 -> 0 bytes + .../ft-show-glyphs-positioning.traps.argb32.ref.png | Bin 3243 -> 0 bytes + .../ft-show-glyphs-positioning.traps.rgb24.ref.png | Bin 3243 -> 0 bytes + .../reference/ft-show-glyphs-table.mask.argb32.ref.png | Bin 9975 -> 0 bytes + test/reference/ft-show-glyphs-table.mask.rgb24.ref.png | Bin 9975 -> 0 bytes + .../ft-show-glyphs-table.traps.argb32.ref.png | Bin 9975 -> 0 bytes + .../reference/ft-show-glyphs-table.traps.rgb24.ref.png | Bin 9975 -> 0 bytes + test/reference/ft-text-antialias-none.argb32.ref.png | Bin 295 -> 0 bytes + .../ft-text-antialias-none.mask.argb32.ref.png | Bin 295 -> 0 bytes + .../ft-text-antialias-none.mask.rgb24.ref.png | Bin 295 -> 0 bytes + test/reference/ft-text-antialias-none.rgb24.ref.png | Bin 295 -> 0 bytes + .../ft-text-antialias-none.traps.argb32.ref.png | Bin 295 -> 0 bytes + .../ft-text-antialias-none.traps.rgb24.ref.png | Bin 295 -> 0 bytes + .../ft-text-vertical-layout-type1.mask.argb32.ref.png | Bin 3062 -> 0 bytes + .../ft-text-vertical-layout-type1.mask.rgb24.ref.png | Bin 3062 -> 0 bytes + test/reference/get-group-target.argb32.ref.png | Bin 113 -> 0 bytes + test/reference/get-group-target.mask.argb32.ref.png | Bin 113 -> 0 bytes + test/reference/get-group-target.mask.rgb24.ref.png | Bin 113 -> 0 bytes + test/reference/get-group-target.rgb24.ref.png | Bin 113 -> 0 bytes + test/reference/get-group-target.traps.argb32.ref.png | Bin 113 -> 0 bytes + test/reference/get-group-target.traps.rgb24.ref.png | Bin 113 -> 0 bytes + test/reference/gl-surface-source.mask.argb32.ref.png | Bin 377 -> 0 bytes + test/reference/gl-surface-source.mask.rgb24.ref.png | Bin 301 -> 0 bytes + test/reference/gl-surface-source.traps.argb32.ref.png | Bin 377 -> 0 bytes + test/reference/gl-surface-source.traps.rgb24.ref.png | Bin 301 -> 0 bytes + .../reference/glyph-cache-pressure.mask.argb32.ref.png | Bin 2858 -> 0 bytes + test/reference/glyph-cache-pressure.mask.rgb24.ref.png | Bin 2858 -> 0 bytes + .../glyph-cache-pressure.traps.argb32.ref.png | Bin 2858 -> 0 bytes + .../reference/glyph-cache-pressure.traps.rgb24.ref.png | Bin 2858 -> 0 bytes + test/reference/gradient-alpha.mask.argb32.ref.png | Bin 125 -> 0 bytes + test/reference/gradient-alpha.mask.rgb24.ref.png | Bin 119 -> 0 bytes + test/reference/gradient-alpha.traps.argb32.ref.png | Bin 125 -> 0 bytes + test/reference/gradient-alpha.traps.rgb24.ref.png | Bin 119 -> 0 bytes + .../gradient-constant-alpha.mask.argb32.ref.png | Bin 111 -> 0 bytes + .../gradient-constant-alpha.mask.rgb24.ref.png | Bin 106 -> 0 bytes + .../gradient-constant-alpha.traps.argb32.ref.png | Bin 111 -> 0 bytes + .../gradient-constant-alpha.traps.rgb24.ref.png | Bin 106 -> 0 bytes + .../gradient-zero-stops-mask.mask.argb32.ref.png | Bin 86 -> 0 bytes + .../gradient-zero-stops-mask.mask.rgb24.ref.png | Bin 86 -> 0 bytes + .../gradient-zero-stops-mask.traps.argb32.ref.png | Bin 86 -> 0 bytes + .../gradient-zero-stops-mask.traps.rgb24.ref.png | Bin 86 -> 0 bytes + test/reference/gradient-zero-stops.argb32.ref.png | Bin 86 -> 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 + .../reference/gradient-zero-stops.traps.argb32.ref.png | Bin 86 -> 0 bytes + test/reference/gradient-zero-stops.traps.rgb24.ref.png | Bin 86 -> 0 bytes + test/reference/group-clip.argb32.ref.png | Bin 191 -> 0 bytes + test/reference/group-clip.mask.argb32.ref.png | Bin 191 -> 0 bytes + test/reference/group-clip.mask.rgb24.ref.png | Bin 191 -> 0 bytes + test/reference/group-clip.rgb24.ref.png | Bin 191 -> 0 bytes + test/reference/group-clip.traps.argb32.ref.png | Bin 191 -> 0 bytes + test/reference/group-clip.traps.rgb24.ref.png | Bin 191 -> 0 bytes + test/reference/group-paint.argb32.ref.png | Bin 95 -> 0 bytes + test/reference/group-paint.mask.argb32.ref.png | Bin 95 -> 0 bytes + test/reference/group-paint.mask.rgb24.ref.png | Bin 95 -> 0 bytes + test/reference/group-paint.rgb24.ref.png | Bin 95 -> 0 bytes + test/reference/group-paint.traps.argb32.ref.png | Bin 95 -> 0 bytes + test/reference/group-paint.traps.rgb24.ref.png | Bin 95 -> 0 bytes + test/reference/group-unaligned.mask.argb32.ref.png | Bin 427 -> 0 bytes + test/reference/group-unaligned.mask.rgb24.ref.png | Bin 427 -> 0 bytes + test/reference/halo-transform.mask.argb32.ref.png | Bin 15063 -> 0 bytes + test/reference/halo-transform.mask.rgb24.ref.png | Bin 15063 -> 0 bytes + test/reference/halo-transform.traps.argb32.ref.png | Bin 15122 -> 0 bytes + test/reference/halo-transform.traps.rgb24.ref.png | Bin 15122 -> 0 bytes + test/reference/horizontal-clip.mask.argb32.ref.png | Bin 113 -> 0 bytes + test/reference/horizontal-clip.mask.rgb24.ref.png | Bin 113 -> 0 bytes + test/reference/horizontal-clip.traps.argb32.ref.png | Bin 113 -> 0 bytes + test/reference/horizontal-clip.traps.rgb24.ref.png | Bin 113 -> 0 bytes + test/reference/huge-linear.mask.argb32.ref.png | Bin 1600 -> 0 bytes + test/reference/huge-linear.mask.rgb24.ref.png | Bin 1600 -> 0 bytes + test/reference/huge-linear.traps.argb32.ref.png | Bin 1600 -> 0 bytes + test/reference/huge-linear.traps.rgb24.ref.png | Bin 1600 -> 0 bytes + test/reference/huge-radial.argb32.ref.png | Bin 41702 -> 0 bytes + test/reference/huge-radial.mask.argb32.ref.png | Bin 41702 -> 0 bytes + test/reference/huge-radial.mask.rgb24.ref.png | Bin 41702 -> 0 bytes + test/reference/huge-radial.rgb24.ref.png | Bin 41702 -> 0 bytes + test/reference/huge-radial.traps.argb32.ref.png | Bin 41702 -> 0 bytes + test/reference/huge-radial.traps.rgb24.ref.png | Bin 41702 -> 0 bytes + test/reference/image-bug-710072-aligned.argb32.ref.png | Bin 151 -> 0 bytes + .../image-bug-710072-aligned.mask.argb32.ref.png | Bin 151 -> 0 bytes + .../image-bug-710072-aligned.mask.rgb24.ref.png | Bin 151 -> 0 bytes + test/reference/image-bug-710072-aligned.rgb24.ref.png | Bin 151 -> 0 bytes + .../image-bug-710072-aligned.traps.argb32.ref.png | Bin 151 -> 0 bytes + .../image-bug-710072-aligned.traps.rgb24.ref.png | Bin 151 -> 0 bytes + ...mage-bug-710072-aligned.xlib-fallback.rgb24.ref.png | Bin 151 -> 0 bytes + .../image-bug-710072-aligned.xlib-window.rgb24.ref.png | Bin 151 -> 0 bytes + .../image-bug-710072-unaligned.argb32.ref.png | Bin 212 -> 0 bytes + .../image-bug-710072-unaligned.mask.argb32.ref.png | Bin 212 -> 0 bytes + .../image-bug-710072-unaligned.mask.rgb24.ref.png | Bin 212 -> 0 bytes + .../reference/image-bug-710072-unaligned.rgb24.ref.png | Bin 212 -> 0 bytes + .../reference/image-surface-source.mask.argb32.ref.png | Bin 377 -> 0 bytes + test/reference/image-surface-source.mask.rgb24.ref.png | Bin 301 -> 0 bytes + .../image-surface-source.traps.argb32.ref.png | Bin 377 -> 0 bytes + .../reference/image-surface-source.traps.rgb24.ref.png | Bin 301 -> 0 bytes + .../image-surface-source.xlib-fallback.rgb24.ref.png | Bin 301 -> 0 bytes + .../image-surface-source.xlib-window.rgb24.ref.png | Bin 301 -> 0 bytes + test/reference/implicit-close.argb32.ref.png | Bin 251 -> 0 bytes + test/reference/implicit-close.mask.argb32.ref.png | Bin 251 -> 0 bytes + test/reference/implicit-close.mask.rgb24.ref.png | Bin 251 -> 0 bytes + test/reference/implicit-close.rgb24.ref.png | Bin 251 -> 0 bytes + test/reference/infinite-join.mask.argb32.ref.png | Bin 164 -> 0 bytes + test/reference/infinite-join.mask.rgb24.ref.png | Bin 164 -> 0 bytes + test/reference/inverse-text.traps.argb32.ref.png | Bin 2162 -> 0 bytes + test/reference/inverse-text.traps.rgb24.ref.png | Bin 2162 -> 0 bytes + test/reference/joins-loop.mask.argb32.ref.png | Bin 4492 -> 0 bytes + test/reference/joins-loop.mask.rgb24.ref.png | Bin 4492 -> 0 bytes + test/reference/joins-star.mask.argb32.ref.png | Bin 4914 -> 0 bytes + test/reference/joins-star.mask.rgb24.ref.png | Bin 4914 -> 0 bytes + test/reference/large-clip.argb32.ref.png | Bin 305 -> 0 bytes + test/reference/large-clip.mask.argb32.ref.png | Bin 305 -> 0 bytes + test/reference/large-clip.mask.rgb24.ref.png | Bin 305 -> 0 bytes + test/reference/large-clip.rgb24.ref.png | Bin 305 -> 0 bytes + test/reference/large-clip.traps.argb32.ref.png | Bin 305 -> 0 bytes + test/reference/large-clip.traps.rgb24.ref.png | Bin 305 -> 0 bytes + test/reference/large-font.argb32.ref.png | Bin 6117 -> 0 bytes + test/reference/large-font.mask.argb32.ref.png | Bin 6117 -> 0 bytes + test/reference/large-font.mask.rgb24.ref.png | Bin 6117 -> 0 bytes + test/reference/large-font.rgb24.ref.png | Bin 6117 -> 0 bytes + test/reference/large-font.traps.argb32.ref.png | Bin 6117 -> 0 bytes + test/reference/large-font.traps.rgb24.ref.png | Bin 6117 -> 0 bytes + test/reference/large-source-roi.argb32.ref.png | Bin 93 -> 0 bytes + test/reference/large-source-roi.mask.argb32.ref.png | Bin 93 -> 0 bytes + test/reference/large-source-roi.mask.rgb24.ref.png | Bin 93 -> 0 bytes + test/reference/large-source-roi.rgb24.ref.png | Bin 93 -> 0 bytes + test/reference/large-source-roi.traps.argb32.ref.png | Bin 93 -> 0 bytes + test/reference/large-source-roi.traps.rgb24.ref.png | Bin 93 -> 0 bytes + test/reference/large-source.argb32.ref.png | Bin 112 -> 0 bytes + test/reference/large-source.mask.argb32.ref.png | Bin 112 -> 0 bytes + test/reference/large-source.mask.rgb24.ref.png | Bin 112 -> 0 bytes + test/reference/large-source.rgb24.ref.png | Bin 112 -> 0 bytes + test/reference/large-source.traps.argb32.ref.png | Bin 112 -> 0 bytes + test/reference/large-source.traps.rgb24.ref.png | Bin 112 -> 0 bytes + .../large-twin-antialias-mixed.mask.argb32.ref.png | Bin 16660 -> 0 bytes + .../large-twin-antialias-mixed.mask.rgb24.ref.png | Bin 16660 -> 0 bytes + test/reference/leaky-dash.argb32.ref.png | Bin 197 -> 0 bytes + test/reference/leaky-dash.mask.argb32.ref.png | Bin 197 -> 0 bytes + test/reference/leaky-dash.mask.rgb24.ref.png | Bin 197 -> 0 bytes + test/reference/leaky-dash.rgb24.ref.png | Bin 197 -> 0 bytes + test/reference/leaky-dash.traps.argb32.ref.png | Bin 197 -> 0 bytes + test/reference/leaky-dash.traps.rgb24.ref.png | Bin 197 -> 0 bytes + test/reference/leaky-dashed-rectangle.argb32.ref.png | Bin 357 -> 0 bytes + .../leaky-dashed-rectangle.mask.argb32.ref.png | Bin 357 -> 0 bytes + .../leaky-dashed-rectangle.mask.rgb24.ref.png | Bin 357 -> 0 bytes + test/reference/leaky-dashed-rectangle.rgb24.ref.png | Bin 357 -> 0 bytes + test/reference/leaky-dashed-stroke.mask.argb32.ref.png | Bin 9387 -> 0 bytes + test/reference/leaky-dashed-stroke.mask.rgb24.ref.png | Bin 9387 -> 0 bytes + test/reference/leaky-polygon.mask.argb32.ref.png | Bin 337 -> 0 bytes + test/reference/leaky-polygon.mask.rgb24.ref.png | Bin 337 -> 0 bytes + .../line-width-large-overlap-flipped.argb32.ref.png | Bin 305 -> 0 bytes + ...ine-width-large-overlap-flipped.mask.argb32.ref.png | Bin 305 -> 0 bytes + ...line-width-large-overlap-flipped.mask.rgb24.ref.png | Bin 305 -> 0 bytes + .../line-width-large-overlap-flipped.rgb24.ref.png | Bin 305 -> 0 bytes + ...ne-width-large-overlap-flipped.traps.argb32.ref.png | Bin 305 -> 0 bytes + ...ine-width-large-overlap-flipped.traps.rgb24.ref.png | Bin 305 -> 0 bytes + .../line-width-large-overlap-flopped.argb32.ref.png | Bin 305 -> 0 bytes + ...ine-width-large-overlap-flopped.mask.argb32.ref.png | Bin 305 -> 0 bytes + ...line-width-large-overlap-flopped.mask.rgb24.ref.png | Bin 305 -> 0 bytes + .../line-width-large-overlap-flopped.rgb24.ref.png | Bin 305 -> 0 bytes + ...ne-width-large-overlap-flopped.traps.argb32.ref.png | Bin 305 -> 0 bytes + ...ine-width-large-overlap-flopped.traps.rgb24.ref.png | Bin 305 -> 0 bytes + .../line-width-large-overlap-offset.argb32.ref.png | Bin 305 -> 0 bytes + ...line-width-large-overlap-offset.mask.argb32.ref.png | Bin 305 -> 0 bytes + .../line-width-large-overlap-offset.mask.rgb24.ref.png | Bin 305 -> 0 bytes + .../line-width-large-overlap-offset.rgb24.ref.png | Bin 305 -> 0 bytes + ...ine-width-large-overlap-offset.traps.argb32.ref.png | Bin 305 -> 0 bytes + ...line-width-large-overlap-offset.traps.rgb24.ref.png | Bin 305 -> 0 bytes + ...ine-width-large-overlap-rotated.mask.argb32.ref.png | Bin 427 -> 0 bytes + ...line-width-large-overlap-rotated.mask.rgb24.ref.png | Bin 427 -> 0 bytes + ...ne-width-large-overlap-rotated.traps.argb32.ref.png | Bin 404 -> 0 bytes + ...ine-width-large-overlap-rotated.traps.rgb24.ref.png | Bin 404 -> 0 bytes + test/reference/line-width-large-overlap.argb32.ref.png | Bin 305 -> 0 bytes + .../line-width-large-overlap.mask.argb32.ref.png | Bin 305 -> 0 bytes + .../line-width-large-overlap.mask.rgb24.ref.png | Bin 305 -> 0 bytes + test/reference/line-width-large-overlap.rgb24.ref.png | Bin 305 -> 0 bytes + .../line-width-large-overlap.traps.argb32.ref.png | Bin 305 -> 0 bytes + .../line-width-large-overlap.traps.rgb24.ref.png | Bin 305 -> 0 bytes + .../line-width-overlap-flipped.argb32.ref.png | Bin 324 -> 0 bytes + .../line-width-overlap-flipped.mask.argb32.ref.png | Bin 324 -> 0 bytes + .../line-width-overlap-flipped.mask.rgb24.ref.png | Bin 324 -> 0 bytes + .../reference/line-width-overlap-flipped.rgb24.ref.png | Bin 324 -> 0 bytes + .../line-width-overlap-flipped.traps.argb32.ref.png | Bin 324 -> 0 bytes + .../line-width-overlap-flipped.traps.rgb24.ref.png | Bin 324 -> 0 bytes + .../line-width-overlap-flopped.argb32.ref.png | Bin 324 -> 0 bytes + .../line-width-overlap-flopped.mask.argb32.ref.png | Bin 324 -> 0 bytes + .../line-width-overlap-flopped.mask.rgb24.ref.png | Bin 324 -> 0 bytes + .../reference/line-width-overlap-flopped.rgb24.ref.png | Bin 324 -> 0 bytes + .../line-width-overlap-flopped.traps.argb32.ref.png | Bin 324 -> 0 bytes + .../line-width-overlap-flopped.traps.rgb24.ref.png | Bin 324 -> 0 bytes + .../reference/line-width-overlap-offset.argb32.ref.png | Bin 348 -> 0 bytes + .../line-width-overlap-offset.mask.argb32.ref.png | Bin 348 -> 0 bytes + .../line-width-overlap-offset.mask.rgb24.ref.png | Bin 348 -> 0 bytes + test/reference/line-width-overlap-offset.rgb24.ref.png | Bin 348 -> 0 bytes + .../line-width-overlap-offset.traps.argb32.ref.png | Bin 365 -> 0 bytes + .../line-width-overlap-offset.traps.rgb24.ref.png | Bin 365 -> 0 bytes + .../line-width-overlap-rotated.mask.argb32.ref.png | Bin 828 -> 0 bytes + .../line-width-overlap-rotated.mask.rgb24.ref.png | Bin 828 -> 0 bytes + test/reference/line-width-overlap.argb32.ref.png | Bin 324 -> 0 bytes + test/reference/line-width-overlap.mask.argb32.ref.png | Bin 324 -> 0 bytes + test/reference/line-width-overlap.mask.rgb24.ref.png | Bin 324 -> 0 bytes + test/reference/line-width-overlap.rgb24.ref.png | Bin 324 -> 0 bytes + test/reference/line-width-overlap.traps.argb32.ref.png | Bin 324 -> 0 bytes + test/reference/line-width-overlap.traps.rgb24.ref.png | Bin 324 -> 0 bytes + test/reference/line-width-scale.mask.argb32.ref.png | Bin 5721 -> 0 bytes + test/reference/line-width-scale.mask.rgb24.ref.png | Bin 5721 -> 0 bytes + .../reference/line-width-tolerance.mask.argb32.ref.png | Bin 168 -> 0 bytes + test/reference/line-width-tolerance.mask.rgb24.ref.png | Bin 168 -> 0 bytes + test/reference/line-width.mask.argb32.ref.png | Bin 178 -> 0 bytes + test/reference/line-width.mask.rgb24.ref.png | Bin 178 -> 0 bytes + test/reference/linear-gradient-extend.argb32.ref.png | Bin 371 -> 0 bytes + .../linear-gradient-extend.mask.argb32.ref.png | Bin 371 -> 0 bytes + .../linear-gradient-extend.mask.rgb24.ref.png | Bin 371 -> 0 bytes + test/reference/linear-gradient-extend.rgb24.ref.png | Bin 371 -> 0 bytes + .../linear-gradient-extend.traps.argb32.ref.png | Bin 371 -> 0 bytes + .../linear-gradient-extend.traps.rgb24.ref.png | Bin 371 -> 0 bytes + test/reference/linear-gradient-large.argb32.ref.png | Bin 4076 -> 0 bytes + .../linear-gradient-large.mask.argb32.ref.png | Bin 4076 -> 0 bytes + .../reference/linear-gradient-large.mask.rgb24.ref.png | Bin 4076 -> 0 bytes + test/reference/linear-gradient-large.rgb24.ref.png | Bin 4076 -> 0 bytes + .../linear-gradient-large.traps.argb32.ref.png | Bin 4076 -> 0 bytes + .../linear-gradient-large.traps.rgb24.ref.png | Bin 4076 -> 0 bytes + .../linear-gradient-one-stop.mask.argb32.ref.png | Bin 225 -> 0 bytes + .../linear-gradient-one-stop.mask.rgb24.ref.png | Bin 174 -> 0 bytes + .../linear-gradient-one-stop.traps.argb32.ref.png | Bin 225 -> 0 bytes + .../linear-gradient-one-stop.traps.rgb24.ref.png | Bin 174 -> 0 bytes + .../linear-gradient-reflect.mask.argb32.ref.png | Bin 185 -> 0 bytes + .../linear-gradient-reflect.mask.rgb24.ref.png | Bin 185 -> 0 bytes + .../linear-gradient-reflect.traps.argb32.ref.png | Bin 185 -> 0 bytes + .../linear-gradient-reflect.traps.rgb24.ref.png | Bin 185 -> 0 bytes + .../linear-gradient-subset.mask.argb32.ref.png | Bin 820 -> 0 bytes + .../linear-gradient-subset.mask.rgb24.ref.png | Bin 820 -> 0 bytes + test/reference/linear-gradient.mask.argb32.ref.png | Bin 974 -> 0 bytes + test/reference/linear-gradient.mask.rgb24.ref.png | Bin 974 -> 0 bytes + test/reference/linear-uniform.argb32.ref.png | Bin 128 -> 0 bytes + test/reference/linear-uniform.mask.argb32.ref.png | Bin 128 -> 0 bytes + test/reference/linear-uniform.mask.rgb24.ref.png | Bin 128 -> 0 bytes + test/reference/linear-uniform.rgb24.ref.png | Bin 128 -> 0 bytes + test/reference/linear-uniform.traps.argb32.ref.png | Bin 128 -> 0 bytes + test/reference/linear-uniform.traps.rgb24.ref.png | Bin 128 -> 0 bytes + test/reference/long-dashed-lines.mask.argb32.ref.png | Bin 2548 -> 0 bytes + test/reference/long-dashed-lines.mask.rgb24.ref.png | Bin 2548 -> 0 bytes + test/reference/map-all-to-image.argb32.ref.png | Bin 86 -> 0 bytes + test/reference/map-all-to-image.mask.argb32.ref.png | Bin 86 -> 0 bytes + test/reference/map-all-to-image.mask.rgb24.ref.png | Bin 86 -> 0 bytes + test/reference/map-all-to-image.rgb24.ref.png | Bin 86 -> 0 bytes + test/reference/map-all-to-image.traps.argb32.ref.png | Bin 86 -> 0 bytes + test/reference/map-all-to-image.traps.rgb24.ref.png | Bin 86 -> 0 bytes + test/reference/map-bit-to-image.argb32.ref.png | Bin 103 -> 0 bytes + test/reference/map-bit-to-image.mask.argb32.ref.png | Bin 103 -> 0 bytes + test/reference/map-bit-to-image.mask.rgb24.ref.png | Bin 103 -> 0 bytes + test/reference/map-bit-to-image.rgb24.ref.png | Bin 103 -> 0 bytes + test/reference/map-bit-to-image.traps.argb32.ref.png | Bin 103 -> 0 bytes + test/reference/map-bit-to-image.traps.rgb24.ref.png | Bin 103 -> 0 bytes + test/reference/map-to-image-fill.argb32.ref.png | Bin 103 -> 0 bytes + test/reference/map-to-image-fill.mask.argb32.ref.png | Bin 103 -> 0 bytes + test/reference/map-to-image-fill.mask.rgb24.ref.png | Bin 103 -> 0 bytes + test/reference/map-to-image-fill.rgb24.ref.png | Bin 103 -> 0 bytes + test/reference/map-to-image-fill.traps.argb32.ref.png | Bin 103 -> 0 bytes + test/reference/map-to-image-fill.traps.rgb24.ref.png | Bin 103 -> 0 bytes + .../map-to-image-fill.xlib-fallback.rgb24.ref.png | Bin 103 -> 0 bytes + .../map-to-image-fill.xlib-window.rgb24.ref.png | Bin 103 -> 0 bytes + test/reference/mask-alpha.mask.argb32.ref.png | Bin 632 -> 0 bytes + test/reference/mask-alpha.mask.rgb24.ref.png | Bin 589 -> 0 bytes + test/reference/mask-ctm.argb32.ref.png | Bin 110 -> 0 bytes + test/reference/mask-ctm.mask.argb32.ref.png | Bin 110 -> 0 bytes + test/reference/mask-ctm.mask.rgb24.ref.png | Bin 105 -> 0 bytes + test/reference/mask-ctm.traps.argb32.ref.png | Bin 110 -> 0 bytes + test/reference/mask-ctm.traps.rgb24.ref.png | Bin 105 -> 0 bytes + test/reference/mask-surface-ctm.argb32.ref.png | Bin 110 -> 0 bytes + test/reference/mask-surface-ctm.mask.argb32.ref.png | Bin 110 -> 0 bytes + test/reference/mask-surface-ctm.mask.rgb24.ref.png | Bin 105 -> 0 bytes + test/reference/mask-surface-ctm.traps.argb32.ref.png | Bin 110 -> 0 bytes + test/reference/mask-surface-ctm.traps.rgb24.ref.png | Bin 105 -> 0 bytes + .../mask-transformed-image.mask.argb32.ref.png | Bin 3812 -> 0 bytes + .../mask-transformed-image.mask.rgb24.ref.png | Bin 3812 -> 0 bytes + .../mask-transformed-image.traps.argb32.ref.png | Bin 3812 -> 0 bytes + .../mask-transformed-image.traps.rgb24.ref.png | Bin 3812 -> 0 bytes + .../mask-transformed-similar.mask.argb32.ref.png | Bin 3812 -> 0 bytes + .../mask-transformed-similar.mask.rgb24.ref.png | Bin 3812 -> 0 bytes + .../mask-transformed-similar.traps.argb32.ref.png | Bin 3812 -> 0 bytes + .../mask-transformed-similar.traps.rgb24.ref.png | Bin 3812 -> 0 bytes + test/reference/mask.mask.argb32.ref.png | Bin 8565 -> 0 bytes + test/reference/mask.mask.rgb24.ref.png | Bin 7135 -> 0 bytes + test/reference/mesh-pattern-accuracy.argb32.ref.png | Bin 8086 -> 0 bytes + .../mesh-pattern-accuracy.mask.argb32.ref.png | Bin 8086 -> 0 bytes + .../reference/mesh-pattern-accuracy.mask.rgb24.ref.png | Bin 8086 -> 0 bytes + test/reference/mesh-pattern-accuracy.rgb24.ref.png | Bin 8086 -> 0 bytes + .../mesh-pattern-accuracy.traps.argb32.ref.png | Bin 8086 -> 0 bytes + .../mesh-pattern-accuracy.traps.rgb24.ref.png | Bin 8086 -> 0 bytes + test/reference/mesh-pattern-conical.argb32.ref.png | Bin 8655 -> 0 bytes + .../reference/mesh-pattern-conical.mask.argb32.ref.png | Bin 8655 -> 0 bytes + test/reference/mesh-pattern-conical.mask.rgb24.ref.png | Bin 8655 -> 0 bytes + test/reference/mesh-pattern-conical.rgb24.ref.png | Bin 8655 -> 0 bytes + .../mesh-pattern-conical.traps.argb32.ref.png | Bin 8655 -> 0 bytes + .../reference/mesh-pattern-conical.traps.rgb24.ref.png | Bin 8655 -> 0 bytes + .../mesh-pattern-control-points.argb32.ref.png | Bin 10665 -> 0 bytes + .../mesh-pattern-control-points.mask.argb32.ref.png | Bin 10665 -> 0 bytes + .../mesh-pattern-control-points.mask.rgb24.ref.png | Bin 10665 -> 0 bytes + .../mesh-pattern-control-points.rgb24.ref.png | Bin 10665 -> 0 bytes + .../mesh-pattern-control-points.traps.argb32.ref.png | Bin 10665 -> 0 bytes + .../mesh-pattern-control-points.traps.rgb24.ref.png | Bin 10665 -> 0 bytes + test/reference/mesh-pattern-fold.argb32.ref.png | Bin 52980 -> 0 bytes + test/reference/mesh-pattern-fold.mask.argb32.ref.png | Bin 52980 -> 0 bytes + test/reference/mesh-pattern-fold.mask.rgb24.ref.png | Bin 52980 -> 0 bytes + test/reference/mesh-pattern-fold.rgb24.ref.png | Bin 52980 -> 0 bytes + test/reference/mesh-pattern-fold.traps.argb32.ref.png | Bin 52980 -> 0 bytes + test/reference/mesh-pattern-fold.traps.rgb24.ref.png | Bin 52980 -> 0 bytes + test/reference/mesh-pattern-overlap.argb32.ref.png | Bin 9129 -> 0 bytes + .../reference/mesh-pattern-overlap.mask.argb32.ref.png | Bin 9129 -> 0 bytes + test/reference/mesh-pattern-overlap.mask.rgb24.ref.png | Bin 9129 -> 0 bytes + test/reference/mesh-pattern-overlap.rgb24.ref.png | Bin 9129 -> 0 bytes + .../mesh-pattern-overlap.traps.argb32.ref.png | Bin 9129 -> 0 bytes + .../reference/mesh-pattern-overlap.traps.rgb24.ref.png | Bin 9129 -> 0 bytes + test/reference/mesh-pattern-transformed.argb32.ref.png | Bin 14463 -> 0 bytes + .../mesh-pattern-transformed.mask.argb32.ref.png | Bin 14463 -> 0 bytes + .../mesh-pattern-transformed.mask.rgb24.ref.png | Bin 14463 -> 0 bytes + test/reference/mesh-pattern-transformed.rgb24.ref.png | Bin 14463 -> 0 bytes + .../mesh-pattern-transformed.traps.argb32.ref.png | Bin 14463 -> 0 bytes + .../mesh-pattern-transformed.traps.rgb24.ref.png | Bin 14463 -> 0 bytes + test/reference/mesh-pattern.argb32.ref.png | Bin 19566 -> 0 bytes + test/reference/mesh-pattern.mask.argb32.ref.png | Bin 19566 -> 0 bytes + test/reference/mesh-pattern.mask.rgb24.ref.png | Bin 19566 -> 0 bytes + test/reference/mesh-pattern.rgb24.ref.png | Bin 19566 -> 0 bytes + test/reference/mesh-pattern.traps.argb32.ref.png | Bin 19566 -> 0 bytes + test/reference/mesh-pattern.traps.rgb24.ref.png | Bin 19566 -> 0 bytes + test/reference/mime-data.argb32.ref.png | Bin 185 -> 0 bytes + test/reference/mime-data.mask.argb32.ref.png | Bin 185 -> 0 bytes + test/reference/mime-data.mask.rgb24.ref.png | Bin 185 -> 0 bytes + test/reference/mime-data.rgb24.ref.png | Bin 185 -> 0 bytes + test/reference/mime-data.traps.argb32.ref.png | Bin 185 -> 0 bytes + test/reference/mime-data.traps.rgb24.ref.png | Bin 185 -> 0 bytes + test/reference/miter-precision.mask.argb32.ref.png | Bin 1030 -> 0 bytes + test/reference/miter-precision.mask.rgb24.ref.png | Bin 1030 -> 0 bytes + test/reference/move-to-show-surface.argb32.ref.png | Bin 96 -> 0 bytes + .../reference/move-to-show-surface.mask.argb32.ref.png | Bin 96 -> 0 bytes + test/reference/move-to-show-surface.mask.rgb24.ref.png | Bin 96 -> 0 bytes + test/reference/move-to-show-surface.rgb24.ref.png | Bin 96 -> 0 bytes + .../move-to-show-surface.traps.argb32.ref.png | Bin 96 -> 0 bytes + .../reference/move-to-show-surface.traps.rgb24.ref.png | Bin 96 -> 0 bytes + test/reference/negative-stride-image.argb32.ref.png | Bin 81121 -> 0 bytes + .../negative-stride-image.mask.argb32.ref.png | Bin 81121 -> 0 bytes + .../reference/negative-stride-image.mask.rgb24.ref.png | Bin 81121 -> 0 bytes + test/reference/negative-stride-image.rgb24.ref.png | Bin 81121 -> 0 bytes + .../negative-stride-image.traps.argb32.ref.png | Bin 81121 -> 0 bytes + .../negative-stride-image.traps.rgb24.ref.png | Bin 81121 -> 0 bytes + test/reference/new-sub-path.mask.argb32.ref.png | Bin 408 -> 0 bytes + test/reference/new-sub-path.mask.rgb24.ref.png | Bin 371 -> 0 bytes + test/reference/nil-surface.argb32.ref.png | Bin 88 -> 0 bytes + test/reference/nil-surface.mask.argb32.ref.png | Bin 88 -> 0 bytes + test/reference/nil-surface.mask.rgb24.ref.png | Bin 87 -> 0 bytes + test/reference/nil-surface.traps.argb32.ref.png | Bin 88 -> 0 bytes + test/reference/nil-surface.traps.rgb24.ref.png | Bin 87 -> 0 bytes + test/reference/operator-alpha-alpha.argb32.ref.png | Bin 3441 -> 0 bytes + .../reference/operator-alpha-alpha.mask.argb32.ref.png | Bin 3441 -> 0 bytes + test/reference/operator-alpha-alpha.mask.rgb24.ref.png | Bin 3441 -> 0 bytes + test/reference/operator-alpha-alpha.rgb24.ref.png | Bin 3441 -> 0 bytes + test/reference/operator-alpha.argb32.ref.png | Bin 280 -> 0 bytes + test/reference/operator-alpha.mask.argb32.ref.png | Bin 280 -> 0 bytes + test/reference/operator-alpha.mask.rgb24.ref.png | Bin 205 -> 0 bytes + test/reference/operator-alpha.traps.argb32.ref.png | Bin 280 -> 0 bytes + test/reference/operator-alpha.traps.rgb24.ref.png | Bin 205 -> 0 bytes + test/reference/operator-clear.mask.argb32.ref.png | Bin 1071 -> 0 bytes + test/reference/operator.argb32.ref.png | Bin 238 -> 0 bytes + test/reference/operator.mask.argb32.ref.png | Bin 238 -> 0 bytes + test/reference/operator.mask.rgb24.ref.png | Bin 189 -> 0 bytes + test/reference/operator.traps.argb32.ref.png | Bin 238 -> 0 bytes + test/reference/operator.traps.rgb24.ref.png | Bin 189 -> 0 bytes + test/reference/over-above-source.mask.argb32.ref.png | Bin 564 -> 0 bytes + test/reference/over-above-source.mask.rgb24.ref.png | Bin 465 -> 0 bytes + test/reference/over-around-source.mask.argb32.ref.png | Bin 633 -> 0 bytes + test/reference/over-around-source.mask.rgb24.ref.png | Bin 499 -> 0 bytes + test/reference/over-below-source.mask.argb32.ref.png | Bin 447 -> 0 bytes + test/reference/over-below-source.mask.rgb24.ref.png | Bin 385 -> 0 bytes + test/reference/over-between-source.mask.argb32.ref.png | Bin 596 -> 0 bytes + test/reference/over-between-source.mask.rgb24.ref.png | Bin 463 -> 0 bytes + test/reference/overlapping-boxes.mask.argb32.ref.png | Bin 179 -> 0 bytes + test/reference/overlapping-boxes.mask.rgb24.ref.png | Bin 170 -> 0 bytes + test/reference/overlapping-glyphs.mask.argb32.ref.png | Bin 2717 -> 0 bytes + test/reference/overlapping-glyphs.mask.rgb24.ref.png | Bin 1663 -> 0 bytes + test/reference/paint-clip-fill-aa.argb32.ref.png | Bin 327 -> 0 bytes + test/reference/paint-clip-fill-aa.mask.argb32.ref.png | Bin 327 -> 0 bytes + test/reference/paint-clip-fill-aa.mask.rgb24.ref.png | Bin 327 -> 0 bytes + test/reference/paint-clip-fill-aa.rgb24.ref.png | Bin 327 -> 0 bytes + test/reference/paint-clip-fill-aa.traps.argb32.ref.png | Bin 327 -> 0 bytes + test/reference/paint-clip-fill-aa.traps.rgb24.ref.png | Bin 327 -> 0 bytes + test/reference/paint-clip-fill-mono.argb32.ref.png | Bin 327 -> 0 bytes + .../reference/paint-clip-fill-mono.mask.argb32.ref.png | Bin 327 -> 0 bytes + test/reference/paint-clip-fill-mono.mask.rgb24.ref.png | Bin 327 -> 0 bytes + test/reference/paint-clip-fill-mono.rgb24.ref.png | Bin 327 -> 0 bytes + .../paint-clip-fill-mono.traps.argb32.ref.png | Bin 327 -> 0 bytes + .../reference/paint-clip-fill-mono.traps.rgb24.ref.png | Bin 327 -> 0 bytes + test/reference/paint-repeat.argb32.ref.png | Bin 122 -> 0 bytes + test/reference/paint-repeat.mask.argb32.ref.png | Bin 122 -> 0 bytes + test/reference/paint-repeat.mask.rgb24.ref.png | Bin 122 -> 0 bytes + test/reference/paint-repeat.rgb24.ref.png | Bin 122 -> 0 bytes + test/reference/paint-repeat.traps.argb32.ref.png | Bin 122 -> 0 bytes + test/reference/paint-repeat.traps.rgb24.ref.png | Bin 122 -> 0 bytes + test/reference/paint-source-alpha.argb32.ref.png | Bin 224 -> 0 bytes + test/reference/paint-source-alpha.mask.argb32.ref.png | Bin 224 -> 0 bytes + test/reference/paint-source-alpha.mask.rgb24.ref.png | Bin 224 -> 0 bytes + test/reference/paint-source-alpha.rgb24.ref.png | Bin 224 -> 0 bytes + test/reference/paint-source-alpha.traps.argb32.ref.png | Bin 224 -> 0 bytes + test/reference/paint-source-alpha.traps.rgb24.ref.png | Bin 224 -> 0 bytes + test/reference/paint-with-alpha-clip.argb32.ref.png | Bin 290 -> 0 bytes + test/reference/paint-with-alpha-clip.rgb24.ref.png | Bin 290 -> 0 bytes + .../paint-with-alpha-solid-clip.argb32.ref.png | Bin 248 -> 0 bytes + .../paint-with-alpha-solid-clip.rgb24.ref.png | Bin 248 -> 0 bytes + test/reference/paint-with-alpha.argb32.ref.png | Bin 224 -> 0 bytes + test/reference/paint-with-alpha.mask.argb32.ref.png | Bin 224 -> 0 bytes + test/reference/paint-with-alpha.mask.rgb24.ref.png | Bin 224 -> 0 bytes + test/reference/paint-with-alpha.rgb24.ref.png | Bin 224 -> 0 bytes + test/reference/paint-with-alpha.traps.argb32.ref.png | Bin 224 -> 0 bytes + test/reference/paint-with-alpha.traps.rgb24.ref.png | Bin 224 -> 0 bytes + test/reference/paint.argb32.ref.png | Bin 93 -> 0 bytes + test/reference/paint.mask.argb32.ref.png | Bin 93 -> 0 bytes + test/reference/paint.mask.rgb24.ref.png | Bin 93 -> 0 bytes + test/reference/paint.rgb24.ref.png | Bin 93 -> 0 bytes + test/reference/paint.traps.argb32.ref.png | Bin 93 -> 0 bytes + test/reference/paint.traps.rgb24.ref.png | Bin 93 -> 0 bytes + .../partial-clip-text-bottom.mask.argb32.ref.png | Bin 261 -> 0 bytes + .../partial-clip-text-bottom.mask.rgb24.ref.png | Bin 261 -> 0 bytes + .../partial-clip-text-bottom.traps.argb32.ref.png | Bin 261 -> 0 bytes + .../partial-clip-text-bottom.traps.rgb24.ref.png | Bin 261 -> 0 bytes + .../partial-clip-text-left.mask.argb32.ref.png | Bin 301 -> 0 bytes + .../partial-clip-text-left.mask.rgb24.ref.png | Bin 301 -> 0 bytes + .../partial-clip-text-left.traps.argb32.ref.png | Bin 301 -> 0 bytes + .../partial-clip-text-left.traps.rgb24.ref.png | Bin 301 -> 0 bytes + .../partial-clip-text-right.mask.argb32.ref.png | Bin 155 -> 0 bytes + .../partial-clip-text-right.mask.rgb24.ref.png | Bin 155 -> 0 bytes + .../partial-clip-text-right.traps.argb32.ref.png | Bin 155 -> 0 bytes + .../partial-clip-text-right.traps.rgb24.ref.png | Bin 155 -> 0 bytes + .../partial-clip-text-top.mask.argb32.ref.png | Bin 181 -> 0 bytes + .../reference/partial-clip-text-top.mask.rgb24.ref.png | Bin 181 -> 0 bytes + .../partial-clip-text-top.traps.argb32.ref.png | Bin 181 -> 0 bytes + .../partial-clip-text-top.traps.rgb24.ref.png | Bin 181 -> 0 bytes + .../partial-coverage-half-reference.argb32.ref.png | Bin 189 -> 0 bytes + ...partial-coverage-half-reference.mask.argb32.ref.png | Bin 189 -> 0 bytes + .../partial-coverage-half-reference.mask.rgb24.ref.png | Bin 189 -> 0 bytes + .../partial-coverage-half-reference.rgb24.ref.png | Bin 189 -> 0 bytes + ...artial-coverage-half-reference.traps.argb32.ref.png | Bin 189 -> 0 bytes + ...partial-coverage-half-reference.traps.rgb24.ref.png | Bin 189 -> 0 bytes + .../partial-coverage-reference.argb32.ref.png | Bin 202 -> 0 bytes + .../partial-coverage-reference.mask.argb32.ref.png | Bin 202 -> 0 bytes + .../partial-coverage-reference.mask.rgb24.ref.png | Bin 202 -> 0 bytes + .../reference/partial-coverage-reference.rgb24.ref.png | Bin 202 -> 0 bytes + .../partial-coverage-reference.traps.argb32.ref.png | Bin 202 -> 0 bytes + .../partial-coverage-reference.traps.rgb24.ref.png | Bin 202 -> 0 bytes + ...ial-coverage-three-quarter-reference.argb32.ref.png | Bin 186 -> 0 bytes + ...overage-three-quarter-reference.mask.argb32.ref.png | Bin 186 -> 0 bytes + ...coverage-three-quarter-reference.mask.rgb24.ref.png | Bin 186 -> 0 bytes + ...tial-coverage-three-quarter-reference.rgb24.ref.png | Bin 186 -> 0 bytes + ...verage-three-quarter-reference.traps.argb32.ref.png | Bin 186 -> 0 bytes + ...overage-three-quarter-reference.traps.rgb24.ref.png | Bin 186 -> 0 bytes + test/reference/pass-through.argb32.ref.png | Bin 221 -> 0 bytes + test/reference/pass-through.mask.argb32.ref.png | Bin 221 -> 0 bytes + test/reference/pass-through.mask.rgb24.ref.png | Bin 158 -> 0 bytes + test/reference/pass-through.traps.argb32.ref.png | Bin 221 -> 0 bytes + test/reference/pass-through.traps.rgb24.ref.png | Bin 158 -> 0 bytes + test/reference/path-append.mask.argb32.ref.png | Bin 6144 -> 0 bytes + test/reference/path-append.mask.rgb24.ref.png | Bin 6144 -> 0 bytes + test/reference/path-stroke-twice.mask.argb32.ref.png | Bin 240 -> 0 bytes + test/reference/path-stroke-twice.mask.rgb24.ref.png | Bin 240 -> 0 bytes + test/reference/pattern-getters.argb32.ref.png | Bin 87 -> 0 bytes + test/reference/pattern-getters.mask.argb32.ref.png | Bin 87 -> 0 bytes + test/reference/pattern-getters.mask.rgb24.ref.png | Bin 87 -> 0 bytes + test/reference/pattern-getters.rgb24.ref.png | Bin 87 -> 0 bytes + test/reference/pattern-getters.traps.argb32.ref.png | Bin 87 -> 0 bytes + test/reference/pattern-getters.traps.rgb24.ref.png | Bin 87 -> 0 bytes + test/reference/pdf-surface-source.mask.argb32.ref.png | Bin 377 -> 0 bytes + test/reference/pdf-surface-source.mask.rgb24.ref.png | Bin 301 -> 0 bytes + test/reference/pdf-surface-source.traps.argb32.ref.png | Bin 377 -> 0 bytes + test/reference/pdf-surface-source.traps.rgb24.ref.png | Bin 301 -> 0 bytes + test/reference/pixman-rotate.argb32.ref.png | Bin 260 -> 0 bytes + test/reference/pixman-rotate.mask.argb32.ref.png | Bin 260 -> 0 bytes + test/reference/pixman-rotate.mask.rgb24.ref.png | Bin 225 -> 0 bytes + test/reference/pixman-rotate.traps.argb32.ref.png | Bin 260 -> 0 bytes + test/reference/pixman-rotate.traps.rgb24.ref.png | Bin 225 -> 0 bytes + test/reference/ps-surface-source.mask.argb32.ref.png | Bin 377 -> 0 bytes + test/reference/ps-surface-source.mask.rgb24.ref.png | Bin 301 -> 0 bytes + test/reference/ps-surface-source.traps.argb32.ref.png | Bin 377 -> 0 bytes + test/reference/ps-surface-source.traps.rgb24.ref.png | Bin 301 -> 0 bytes + test/reference/pthread-same-source.argb32.ref.png | Bin 1000 -> 0 bytes + test/reference/pthread-same-source.mask.argb32.ref.png | Bin 1000 -> 0 bytes + test/reference/pthread-same-source.mask.rgb24.ref.png | Bin 1000 -> 0 bytes + test/reference/pthread-same-source.rgb24.ref.png | Bin 1000 -> 0 bytes + .../reference/pthread-same-source.traps.argb32.ref.png | Bin 1000 -> 0 bytes + test/reference/pthread-same-source.traps.rgb24.ref.png | Bin 1000 -> 0 bytes + test/reference/pthread-show-text.mask.argb32.ref.png | Bin 30199 -> 0 bytes + test/reference/pthread-show-text.mask.rgb24.ref.png | Bin 30199 -> 0 bytes + test/reference/pthread-show-text.traps.argb32.ref.png | Bin 30199 -> 0 bytes + test/reference/pthread-show-text.traps.rgb24.ref.png | Bin 30199 -> 0 bytes + test/reference/pthread-similar.argb32.ref.png | Bin 170 -> 0 bytes + test/reference/pthread-similar.mask.argb32.ref.png | Bin 170 -> 0 bytes + test/reference/pthread-similar.mask.rgb24.ref.png | Bin 170 -> 0 bytes + test/reference/pthread-similar.rgb24.ref.png | Bin 170 -> 0 bytes + test/reference/pthread-similar.traps.argb32.ref.png | Bin 170 -> 0 bytes + test/reference/pthread-similar.traps.rgb24.ref.png | Bin 170 -> 0 bytes + test/reference/push-group-color.mask.argb32.ref.png | Bin 2892 -> 0 bytes + test/reference/push-group-color.mask.rgb24.ref.png | Bin 2892 -> 0 bytes + test/reference/push-group-path-offset.argb32.ref.png | Bin 186 -> 0 bytes + .../push-group-path-offset.mask.argb32.ref.png | Bin 186 -> 0 bytes + .../push-group-path-offset.mask.rgb24.ref.png | Bin 186 -> 0 bytes + test/reference/push-group-path-offset.rgb24.ref.png | Bin 186 -> 0 bytes + .../push-group-path-offset.traps.argb32.ref.png | Bin 186 -> 0 bytes + .../push-group-path-offset.traps.rgb24.ref.png | Bin 186 -> 0 bytes + test/reference/push-group.mask.argb32.ref.png | Bin 3062 -> 0 bytes + test/reference/push-group.mask.rgb24.ref.png | Bin 2899 -> 0 bytes + .../radial-gradient-mask-source.mask.argb32.ref.png | Bin 145713 -> 0 bytes + .../radial-gradient-mask-source.traps.argb32.ref.png | Bin 145713 -> 0 bytes + test/reference/radial-gradient-mask.argb32.ref.png | Bin 286065 -> 0 bytes + .../reference/radial-gradient-mask.mask.argb32.ref.png | Bin 286065 -> 0 bytes + test/reference/radial-gradient-mask.mask.rgb24.ref.png | Bin 286065 -> 0 bytes + test/reference/radial-gradient-mask.rgb24.ref.png | Bin 286065 -> 0 bytes + .../radial-gradient-mask.traps.argb32.ref.png | Bin 286065 -> 0 bytes + .../reference/radial-gradient-mask.traps.rgb24.ref.png | Bin 286065 -> 0 bytes + test/reference/radial-gradient-one-stop.argb32.ref.png | Bin 6306 -> 0 bytes + .../radial-gradient-one-stop.mask.argb32.ref.png | Bin 6306 -> 0 bytes + .../radial-gradient-one-stop.mask.rgb24.ref.png | Bin 6306 -> 0 bytes + test/reference/radial-gradient-one-stop.rgb24.ref.png | Bin 6306 -> 0 bytes + .../radial-gradient-one-stop.traps.argb32.ref.png | Bin 6306 -> 0 bytes + .../radial-gradient-one-stop.traps.rgb24.ref.png | Bin 6306 -> 0 bytes + .../radial-gradient-source.mask.argb32.ref.png | Bin 408848 -> 0 bytes + .../radial-gradient-source.mask.rgb24.ref.png | Bin 263908 -> 0 bytes + .../radial-gradient-source.traps.argb32.ref.png | Bin 408848 -> 0 bytes + .../radial-gradient-source.traps.rgb24.ref.png | Bin 263908 -> 0 bytes + test/reference/radial-gradient.argb32.ref.png | Bin 382283 -> 0 bytes + test/reference/radial-gradient.mask.argb32.ref.png | Bin 382283 -> 0 bytes + test/reference/radial-gradient.mask.rgb24.ref.png | Bin 382283 -> 0 bytes + test/reference/radial-gradient.rgb24.ref.png | Bin 382283 -> 0 bytes + test/reference/radial-gradient.traps.argb32.ref.png | Bin 382283 -> 0 bytes + test/reference/radial-gradient.traps.rgb24.ref.png | Bin 382283 -> 0 bytes + .../random-intersections-curves-eo.mask.argb32.ref.png | Bin 245848 -> 0 bytes + .../random-intersections-curves-eo.mask.rgb24.ref.png | Bin 245848 -> 0 bytes + .../random-intersections-curves-nz.mask.argb32.ref.png | Bin 265249 -> 0 bytes + .../random-intersections-curves-nz.mask.rgb24.ref.png | Bin 265249 -> 0 bytes + .../random-intersections-eo.mask.argb32.ref.png | Bin 136632 -> 0 bytes + .../random-intersections-eo.mask.rgb24.ref.png | Bin 136632 -> 0 bytes + .../random-intersections-nonzero.mask.argb32.ref.png | Bin 142139 -> 0 bytes + .../random-intersections-nonzero.mask.rgb24.ref.png | Bin 142139 -> 0 bytes + test/reference/raster-source.argb32.ref.png | Bin 1209 -> 0 bytes + test/reference/raster-source.mask.argb32.ref.png | Bin 1209 -> 0 bytes + test/reference/raster-source.mask.rgb24.ref.png | Bin 1209 -> 0 bytes + test/reference/raster-source.rgb24.ref.png | Bin 1209 -> 0 bytes + test/reference/raster-source.traps.argb32.ref.png | Bin 1209 -> 0 bytes + test/reference/raster-source.traps.rgb24.ref.png | Bin 1209 -> 0 bytes + .../record-extend-none-similar.argb32.ref.png | Bin 293 -> 0 bytes + .../record-extend-none-similar.image16.rgb24.ref.png | Bin 293 -> 0 bytes + .../reference/record-extend-none-similar.rgb24.ref.png | Bin 293 -> 0 bytes + test/reference/record-extend-none.argb32.ref.png | Bin 293 -> 0 bytes + .../reference/record-extend-none.image16.rgb24.ref.png | Bin 293 -> 0 bytes + test/reference/record-extend-none.rgb24.ref.png | Bin 293 -> 0 bytes + test/reference/record-extend-none.traps.argb32.ref.png | Bin 293 -> 0 bytes + test/reference/record-extend-none.traps.rgb24.ref.png | Bin 293 -> 0 bytes + .../reference/record-extend-pad-similar.argb32.ref.png | Bin 298 -> 0 bytes + .../record-extend-pad-similar.image16.rgb24.ref.png | Bin 298 -> 0 bytes + test/reference/record-extend-pad-similar.rgb24.ref.png | Bin 298 -> 0 bytes + test/reference/record-extend-pad.argb32.ref.png | Bin 298 -> 0 bytes + test/reference/record-extend-pad.image16.rgb24.ref.png | Bin 298 -> 0 bytes + test/reference/record-extend-pad.rgb24.ref.png | Bin 298 -> 0 bytes + test/reference/record-extend-pad.traps.argb32.ref.png | Bin 298 -> 0 bytes + test/reference/record-extend-pad.traps.rgb24.ref.png | Bin 298 -> 0 bytes + .../record-extend-reflect-similar.argb32.ref.png | Bin 335 -> 0 bytes + ...record-extend-reflect-similar.image16.rgb24.ref.png | Bin 335 -> 0 bytes + .../record-extend-reflect-similar.rgb24.ref.png | Bin 335 -> 0 bytes + test/reference/record-extend-reflect.argb32.ref.png | Bin 335 -> 0 bytes + .../record-extend-reflect.image16.rgb24.ref.png | Bin 335 -> 0 bytes + test/reference/record-extend-reflect.rgb24.ref.png | Bin 335 -> 0 bytes + .../record-extend-reflect.traps.argb32.ref.png | Bin 335 -> 0 bytes + .../record-extend-reflect.traps.rgb24.ref.png | Bin 335 -> 0 bytes + .../record-extend-repeat-similar.argb32.ref.png | Bin 286 -> 0 bytes + .../record-extend-repeat-similar.image16.rgb24.ref.png | Bin 286 -> 0 bytes + .../record-extend-repeat-similar.rgb24.ref.png | Bin 286 -> 0 bytes + test/reference/record-extend-repeat.argb32.ref.png | Bin 286 -> 0 bytes + .../record-extend-repeat.image16.rgb24.ref.png | Bin 286 -> 0 bytes + test/reference/record-extend-repeat.rgb24.ref.png | Bin 286 -> 0 bytes + .../record-extend-repeat.traps.argb32.ref.png | Bin 286 -> 0 bytes + .../reference/record-extend-repeat.traps.rgb24.ref.png | Bin 286 -> 0 bytes + test/reference/record-mesh.argb32.ref.png | Bin 15229 -> 0 bytes + test/reference/record-mesh.rgb24.ref.png | Bin 15229 -> 0 bytes + test/reference/record-mesh.traps.argb32.ref.png | Bin 15229 -> 0 bytes + test/reference/record-mesh.traps.rgb24.ref.png | Bin 15229 -> 0 bytes + .../record-paint-alpha-solid-clip.argb32.ref.png | Bin 248 -> 0 bytes + .../record-paint-alpha-solid-clip.rgb24.ref.png | Bin 248 -> 0 bytes + test/reference/record-paint-alpha.argb32.ref.png | Bin 224 -> 0 bytes + test/reference/record-paint-alpha.rgb24.ref.png | Bin 224 -> 0 bytes + test/reference/record-paint-alpha.traps.argb32.ref.png | Bin 224 -> 0 bytes + test/reference/record-paint-alpha.traps.rgb24.ref.png | Bin 224 -> 0 bytes + test/reference/record-paint.argb32.ref.png | Bin 93 -> 0 bytes + test/reference/record-paint.image16.rgb24.ref.png | Bin 93 -> 0 bytes + test/reference/record-paint.rgb24.ref.png | Bin 93 -> 0 bytes + test/reference/record-paint.traps.argb32.ref.png | Bin 93 -> 0 bytes + test/reference/record-paint.traps.rgb24.ref.png | Bin 93 -> 0 bytes + test/reference/record-self-intersecting.argb32.ref.png | Bin 168 -> 0 bytes + test/reference/record-self-intersecting.rgb24.ref.png | Bin 168 -> 0 bytes + test/reference/rectangle-rounding-error.argb32.ref.png | Bin 212 -> 0 bytes + .../rectangle-rounding-error.mask.argb32.ref.png | Bin 212 -> 0 bytes + .../rectangle-rounding-error.mask.rgb24.ref.png | Bin 212 -> 0 bytes + test/reference/rectangle-rounding-error.rgb24.ref.png | Bin 212 -> 0 bytes + .../rectangle-rounding-error.traps.argb32.ref.png | Bin 212 -> 0 bytes + .../rectangle-rounding-error.traps.rgb24.ref.png | Bin 212 -> 0 bytes + test/reference/rectilinear-fill.argb32.ref.png | Bin 151 -> 0 bytes + test/reference/rectilinear-fill.mask.argb32.ref.png | Bin 151 -> 0 bytes + test/reference/rectilinear-fill.mask.rgb24.ref.png | Bin 151 -> 0 bytes + test/reference/rectilinear-fill.rgb24.ref.png | Bin 151 -> 0 bytes + test/reference/rectilinear-fill.traps.argb32.ref.png | Bin 151 -> 0 bytes + test/reference/rectilinear-fill.traps.rgb24.ref.png | Bin 151 -> 0 bytes + test/reference/rectilinear-grid.argb32.ref.png | Bin 569 -> 0 bytes + test/reference/rectilinear-grid.mask.argb32.ref.png | Bin 569 -> 0 bytes + test/reference/rectilinear-grid.mask.rgb24.ref.png | Bin 569 -> 0 bytes + test/reference/rectilinear-grid.rgb24.ref.png | Bin 569 -> 0 bytes + .../rectilinear-miter-limit.mask.argb32.ref.png | Bin 145 -> 0 bytes + .../rectilinear-miter-limit.mask.rgb24.ref.png | Bin 145 -> 0 bytes + test/reference/rectilinear-stroke.argb32.ref.png | Bin 172 -> 0 bytes + test/reference/rectilinear-stroke.mask.argb32.ref.png | Bin 172 -> 0 bytes + test/reference/rectilinear-stroke.mask.rgb24.ref.png | Bin 172 -> 0 bytes + test/reference/rectilinear-stroke.rgb24.ref.png | Bin 172 -> 0 bytes + test/reference/rectilinear-stroke.traps.argb32.ref.png | Bin 172 -> 0 bytes + test/reference/rectilinear-stroke.traps.rgb24.ref.png | Bin 172 -> 0 bytes + test/reference/rel-path.mask.argb32.ref.png | Bin 197 -> 0 bytes + test/reference/rgb24-ignore-alpha.argb32.ref.png | Bin 97 -> 0 bytes + test/reference/rgb24-ignore-alpha.mask.argb32.ref.png | Bin 97 -> 0 bytes + test/reference/rgb24-ignore-alpha.mask.rgb24.ref.png | Bin 97 -> 0 bytes + test/reference/rgb24-ignore-alpha.rgb24.ref.png | Bin 97 -> 0 bytes + test/reference/rgb24-ignore-alpha.traps.argb32.ref.png | Bin 97 -> 0 bytes + test/reference/rgb24-ignore-alpha.traps.rgb24.ref.png | Bin 97 -> 0 bytes + ...rotate-clip-image-surface-paint.mask.argb32.ref.png | Bin 331 -> 0 bytes + .../rotate-clip-image-surface-paint.mask.rgb24.ref.png | Bin 331 -> 0 bytes + .../rotate-image-surface-paint.argb32.ref.png | Bin 220 -> 0 bytes + .../rotate-image-surface-paint.mask.argb32.ref.png | Bin 220 -> 0 bytes + .../rotate-image-surface-paint.mask.rgb24.ref.png | Bin 220 -> 0 bytes + .../reference/rotate-image-surface-paint.rgb24.ref.png | Bin 220 -> 0 bytes + .../rotate-image-surface-paint.traps.argb32.ref.png | Bin 220 -> 0 bytes + .../rotate-image-surface-paint.traps.rgb24.ref.png | Bin 220 -> 0 bytes + ...ate-image-surface-paint.xlib-fallback.rgb24.ref.png | Bin 220 -> 0 bytes + ...otate-image-surface-paint.xlib-window.rgb24.ref.png | Bin 220 -> 0 bytes + .../rounded-rectangle-fill.mask.argb32.ref.png | Bin 787 -> 0 bytes + .../rounded-rectangle-fill.mask.rgb24.ref.png | Bin 787 -> 0 bytes + .../scale-down-source-surface-paint.argb32.ref.png | Bin 96 -> 0 bytes + ...scale-down-source-surface-paint.mask.argb32.ref.png | Bin 96 -> 0 bytes + .../scale-down-source-surface-paint.mask.rgb24.ref.png | Bin 96 -> 0 bytes + .../scale-down-source-surface-paint.rgb24.ref.png | Bin 96 -> 0 bytes + ...cale-down-source-surface-paint.traps.argb32.ref.png | Bin 96 -> 0 bytes + ...scale-down-source-surface-paint.traps.rgb24.ref.png | Bin 96 -> 0 bytes + test/reference/scale-offset-image.mask.argb32.ref.png | Bin 9748 -> 0 bytes + test/reference/scale-offset-image.mask.rgb24.ref.png | Bin 9748 -> 0 bytes + .../reference/scale-offset-similar.mask.argb32.ref.png | Bin 9748 -> 0 bytes + test/reference/scale-offset-similar.mask.rgb24.ref.png | Bin 9748 -> 0 bytes + .../scale-source-surface-paint.argb32.ref.png | Bin 128 -> 0 bytes + .../scale-source-surface-paint.mask.argb32.ref.png | Bin 128 -> 0 bytes + .../scale-source-surface-paint.mask.rgb24.ref.png | Bin 117 -> 0 bytes + .../scale-source-surface-paint.traps.argb32.ref.png | Bin 128 -> 0 bytes + .../scale-source-surface-paint.traps.rgb24.ref.png | Bin 117 -> 0 bytes + test/reference/select-font-face.mask.argb32.ref.png | Bin 2250 -> 0 bytes + test/reference/select-font-face.mask.rgb24.ref.png | Bin 2250 -> 0 bytes + test/reference/select-font-face.traps.argb32.ref.png | Bin 2250 -> 0 bytes + test/reference/select-font-face.traps.rgb24.ref.png | Bin 2250 -> 0 bytes + test/reference/self-copy.mask.argb32.ref.png | Bin 257 -> 0 bytes + test/reference/self-copy.mask.rgb24.ref.png | Bin 257 -> 0 bytes + test/reference/self-intersecting.argb32.ref.png | Bin 168 -> 0 bytes + test/reference/self-intersecting.mask.argb32.ref.png | Bin 168 -> 0 bytes + test/reference/self-intersecting.mask.rgb24.ref.png | Bin 168 -> 0 bytes + test/reference/self-intersecting.rgb24.ref.png | Bin 168 -> 0 bytes + test/reference/set-source.argb32.ref.png | Bin 101 -> 0 bytes + test/reference/set-source.mask.argb32.ref.png | Bin 101 -> 0 bytes + test/reference/set-source.mask.rgb24.ref.png | Bin 101 -> 0 bytes + test/reference/set-source.traps.argb32.ref.png | Bin 101 -> 0 bytes + test/reference/set-source.traps.rgb24.ref.png | Bin 101 -> 0 bytes + .../reference/shape-general-convex.mask.argb32.ref.png | Bin 2742 -> 0 bytes + test/reference/shape-general-convex.mask.rgb24.ref.png | Bin 2742 -> 0 bytes + test/reference/shape-sierpinski.mask.argb32.ref.png | Bin 63714 -> 0 bytes + test/reference/shape-sierpinski.mask.rgb24.ref.png | Bin 63714 -> 0 bytes + test/reference/show-glyphs-advance.mask.argb32.ref.png | Bin 1394 -> 0 bytes + test/reference/show-glyphs-advance.mask.rgb24.ref.png | Bin 1394 -> 0 bytes + .../reference/show-glyphs-advance.traps.argb32.ref.png | Bin 1394 -> 0 bytes + test/reference/show-glyphs-advance.traps.rgb24.ref.png | Bin 1394 -> 0 bytes + test/reference/show-glyphs-many.argb32.ref.png | Bin 96 -> 0 bytes + test/reference/show-glyphs-many.mask.argb32.ref.png | Bin 96 -> 0 bytes + test/reference/show-glyphs-many.mask.rgb24.ref.png | Bin 96 -> 0 bytes + test/reference/show-glyphs-many.rgb24.ref.png | Bin 96 -> 0 bytes + test/reference/show-glyphs-many.traps.argb32.ref.png | Bin 96 -> 0 bytes + test/reference/show-glyphs-many.traps.rgb24.ref.png | Bin 96 -> 0 bytes + .../show-text-current-point.mask.argb32.ref.png | Bin 2151 -> 0 bytes + .../show-text-current-point.mask.rgb24.ref.png | Bin 2151 -> 0 bytes + .../show-text-current-point.traps.argb32.ref.png | Bin 2151 -> 0 bytes + .../show-text-current-point.traps.rgb24.ref.png | Bin 2151 -> 0 bytes + test/reference/skew-extreme.mask.argb32.ref.png | Bin 799 -> 0 bytes + test/reference/skew-extreme.mask.rgb24.ref.png | Bin 799 -> 0 bytes + test/reference/smask-fill.mask.argb32.ref.png | Bin 1197 -> 0 bytes + test/reference/smask-fill.mask.rgb24.ref.png | Bin 1197 -> 0 bytes + test/reference/smask-image-mask.mask.argb32.ref.png | Bin 619 -> 0 bytes + test/reference/smask-image-mask.mask.rgb24.ref.png | Bin 619 -> 0 bytes + test/reference/smask-image-mask.traps.argb32.ref.png | Bin 619 -> 0 bytes + test/reference/smask-image-mask.traps.rgb24.ref.png | Bin 619 -> 0 bytes + .../smask-image-mask.xlib-fallback.rgb24.ref.png | Bin 619 -> 0 bytes + .../smask-image-mask.xlib-window.rgb24.ref.png | Bin 619 -> 0 bytes + test/reference/smask-mask.mask.argb32.ref.png | Bin 2353 -> 0 bytes + test/reference/smask-mask.mask.rgb24.ref.png | Bin 2353 -> 0 bytes + test/reference/smask-mask.traps.argb32.ref.png | Bin 2353 -> 0 bytes + test/reference/smask-mask.traps.rgb24.ref.png | Bin 2353 -> 0 bytes + test/reference/smask-paint.mask.argb32.ref.png | Bin 2469 -> 0 bytes + test/reference/smask-paint.mask.rgb24.ref.png | Bin 2469 -> 0 bytes + test/reference/smask-paint.traps.argb32.ref.png | Bin 2469 -> 0 bytes + test/reference/smask-paint.traps.rgb24.ref.png | Bin 2469 -> 0 bytes + test/reference/smask-stroke.mask.argb32.ref.png | Bin 1709 -> 0 bytes + test/reference/smask-stroke.mask.rgb24.ref.png | Bin 1709 -> 0 bytes + test/reference/smask-text.traps.argb32.ref.png | Bin 1661 -> 0 bytes + test/reference/smask-text.traps.rgb24.ref.png | Bin 1661 -> 0 bytes + test/reference/smask.traps.argb32.ref.png | Bin 3393 -> 0 bytes + test/reference/smask.traps.rgb24.ref.png | Bin 3393 -> 0 bytes + .../solid-pattern-cache-stress.argb32.ref.png | Bin 87 -> 0 bytes + .../solid-pattern-cache-stress.mask.argb32.ref.png | Bin 87 -> 0 bytes + .../solid-pattern-cache-stress.mask.rgb24.ref.png | Bin 87 -> 0 bytes + .../reference/solid-pattern-cache-stress.rgb24.ref.png | Bin 87 -> 0 bytes + .../solid-pattern-cache-stress.traps.argb32.ref.png | Bin 87 -> 0 bytes + .../solid-pattern-cache-stress.traps.rgb24.ref.png | Bin 87 -> 0 bytes + test/reference/source-clip-scale.argb32.ref.png | Bin 136 -> 0 bytes + test/reference/source-clip-scale.mask.argb32.ref.png | Bin 136 -> 0 bytes + test/reference/source-clip-scale.mask.rgb24.ref.png | Bin 136 -> 0 bytes + test/reference/source-clip-scale.rgb24.ref.png | Bin 136 -> 0 bytes + test/reference/source-clip-scale.traps.argb32.ref.png | Bin 136 -> 0 bytes + test/reference/source-clip-scale.traps.rgb24.ref.png | Bin 136 -> 0 bytes + test/reference/source-clip.argb32.ref.png | Bin 111 -> 0 bytes + test/reference/source-clip.mask.argb32.ref.png | Bin 111 -> 0 bytes + test/reference/source-clip.mask.rgb24.ref.png | Bin 111 -> 0 bytes + test/reference/source-clip.rgb24.ref.png | Bin 111 -> 0 bytes + test/reference/source-clip.traps.argb32.ref.png | Bin 111 -> 0 bytes + test/reference/source-clip.traps.rgb24.ref.png | Bin 111 -> 0 bytes + .../source-surface-scale-paint.argb32.ref.png | Bin 120 -> 0 bytes + .../source-surface-scale-paint.mask.argb32.ref.png | Bin 120 -> 0 bytes + .../source-surface-scale-paint.mask.rgb24.ref.png | Bin 114 -> 0 bytes + .../source-surface-scale-paint.traps.argb32.ref.png | Bin 120 -> 0 bytes + .../source-surface-scale-paint.traps.rgb24.ref.png | Bin 114 -> 0 bytes + .../reference/spline-decomposition.mask.argb32.ref.png | Bin 19520 -> 0 bytes + test/reference/spline-decomposition.mask.rgb24.ref.png | Bin 19520 -> 0 bytes + test/reference/stride-12-image.argb32.ref.png | Bin 81121 -> 0 bytes + test/reference/stride-12-image.mask.argb32.ref.png | Bin 81121 -> 0 bytes + test/reference/stride-12-image.mask.rgb24.ref.png | Bin 81121 -> 0 bytes + test/reference/stride-12-image.rgb24.ref.png | Bin 81121 -> 0 bytes + test/reference/stride-12-image.traps.argb32.ref.png | Bin 81121 -> 0 bytes + test/reference/stride-12-image.traps.rgb24.ref.png | Bin 81121 -> 0 bytes + test/reference/stroke-image.mask.argb32.ref.png | Bin 1424 -> 0 bytes + test/reference/stroke-image.mask.rgb24.ref.png | Bin 1424 -> 0 bytes + test/reference/stroke-open-box.argb32.ref.png | Bin 148 -> 0 bytes + test/reference/stroke-open-box.mask.argb32.ref.png | Bin 148 -> 0 bytes + test/reference/stroke-open-box.mask.rgb24.ref.png | Bin 148 -> 0 bytes + test/reference/stroke-open-box.rgb24.ref.png | Bin 148 -> 0 bytes + test/reference/stroke-open-box.traps.argb32.ref.png | Bin 148 -> 0 bytes + test/reference/stroke-open-box.traps.rgb24.ref.png | Bin 148 -> 0 bytes + test/reference/stroke-pattern.mask.argb32.ref.png | Bin 1491 -> 0 bytes + test/reference/stroke-pattern.mask.rgb24.ref.png | Bin 1491 -> 0 bytes + test/reference/stroke-pattern.traps.argb32.ref.png | Bin 1487 -> 0 bytes + test/reference/stroke-pattern.traps.rgb24.ref.png | Bin 1487 -> 0 bytes + test/reference/subsurface-image-repeat.argb32.ref.png | Bin 915 -> 0 bytes + .../subsurface-image-repeat.mask.argb32.ref.png | Bin 915 -> 0 bytes + .../subsurface-image-repeat.mask.rgb24.ref.png | Bin 915 -> 0 bytes + test/reference/subsurface-image-repeat.rgb24.ref.png | Bin 915 -> 0 bytes + .../subsurface-image-repeat.traps.argb32.ref.png | Bin 915 -> 0 bytes + .../subsurface-image-repeat.traps.rgb24.ref.png | Bin 915 -> 0 bytes + ...subsurface-image-repeat.xlib-fallback.rgb24.ref.png | Bin 915 -> 0 bytes + .../subsurface-image-repeat.xlib-window.rgb24.ref.png | Bin 915 -> 0 bytes + test/reference/subsurface-modify-child.argb32.ref.png | Bin 197 -> 0 bytes + .../subsurface-modify-child.mask.argb32.ref.png | Bin 197 -> 0 bytes + .../subsurface-modify-child.mask.rgb24.ref.png | Bin 197 -> 0 bytes + test/reference/subsurface-modify-child.rgb24.ref.png | Bin 197 -> 0 bytes + .../subsurface-modify-child.traps.argb32.ref.png | Bin 197 -> 0 bytes + .../subsurface-modify-child.traps.rgb24.ref.png | Bin 197 -> 0 bytes + test/reference/subsurface-modify-parent.argb32.ref.png | Bin 197 -> 0 bytes + .../subsurface-modify-parent.mask.argb32.ref.png | Bin 197 -> 0 bytes + .../subsurface-modify-parent.mask.rgb24.ref.png | Bin 197 -> 0 bytes + test/reference/subsurface-modify-parent.rgb24.ref.png | Bin 197 -> 0 bytes + .../subsurface-modify-parent.traps.argb32.ref.png | Bin 197 -> 0 bytes + .../subsurface-modify-parent.traps.rgb24.ref.png | Bin 197 -> 0 bytes + .../subsurface-outside-target.mask.argb32.ref.png | Bin 2063 -> 0 bytes + .../subsurface-outside-target.mask.rgb24.ref.png | Bin 1648 -> 0 bytes + .../subsurface-outside-target.traps.argb32.ref.png | Bin 2063 -> 0 bytes + .../subsurface-outside-target.traps.rgb24.ref.png | Bin 1648 -> 0 bytes + test/reference/subsurface-pad.argb32.ref.png | Bin 181 -> 0 bytes + test/reference/subsurface-pad.mask.argb32.ref.png | Bin 181 -> 0 bytes + test/reference/subsurface-pad.mask.rgb24.ref.png | Bin 181 -> 0 bytes + test/reference/subsurface-pad.rgb24.ref.png | Bin 181 -> 0 bytes + test/reference/subsurface-pad.traps.argb32.ref.png | Bin 181 -> 0 bytes + test/reference/subsurface-pad.traps.rgb24.ref.png | Bin 181 -> 0 bytes + test/reference/subsurface-reflect.argb32.ref.png | Bin 210 -> 0 bytes + test/reference/subsurface-reflect.mask.argb32.ref.png | Bin 210 -> 0 bytes + test/reference/subsurface-reflect.mask.rgb24.ref.png | Bin 210 -> 0 bytes + test/reference/subsurface-reflect.rgb24.ref.png | Bin 210 -> 0 bytes + test/reference/subsurface-reflect.traps.argb32.ref.png | Bin 210 -> 0 bytes + test/reference/subsurface-reflect.traps.rgb24.ref.png | Bin 210 -> 0 bytes + test/reference/subsurface-repeat.argb32.ref.png | Bin 197 -> 0 bytes + test/reference/subsurface-repeat.mask.argb32.ref.png | Bin 197 -> 0 bytes + test/reference/subsurface-repeat.mask.rgb24.ref.png | Bin 197 -> 0 bytes + test/reference/subsurface-repeat.rgb24.ref.png | Bin 197 -> 0 bytes + test/reference/subsurface-repeat.traps.argb32.ref.png | Bin 197 -> 0 bytes + test/reference/subsurface-repeat.traps.rgb24.ref.png | Bin 197 -> 0 bytes + test/reference/subsurface-scale.mask.argb32.ref.png | Bin 5921 -> 0 bytes + test/reference/subsurface-scale.mask.rgb24.ref.png | Bin 5921 -> 0 bytes + .../reference/subsurface-similar-repeat.argb32.ref.png | Bin 197 -> 0 bytes + .../subsurface-similar-repeat.mask.argb32.ref.png | Bin 197 -> 0 bytes + .../subsurface-similar-repeat.mask.rgb24.ref.png | Bin 197 -> 0 bytes + test/reference/subsurface-similar-repeat.rgb24.ref.png | Bin 197 -> 0 bytes + .../subsurface-similar-repeat.traps.argb32.ref.png | Bin 197 -> 0 bytes + .../subsurface-similar-repeat.traps.rgb24.ref.png | Bin 197 -> 0 bytes + test/reference/subsurface.mask.argb32.ref.png | Bin 1811 -> 0 bytes + test/reference/subsurface.mask.rgb24.ref.png | Bin 1811 -> 0 bytes + .../surface-pattern-big-scale-down.argb32.ref.png | Bin 191 -> 0 bytes + .../surface-pattern-big-scale-down.mask.argb32.ref.png | Bin 191 -> 0 bytes + .../surface-pattern-big-scale-down.mask.rgb24.ref.png | Bin 191 -> 0 bytes + .../surface-pattern-big-scale-down.rgb24.ref.png | Bin 191 -> 0 bytes + ...surface-pattern-big-scale-down.traps.argb32.ref.png | Bin 191 -> 0 bytes + .../surface-pattern-big-scale-down.traps.rgb24.ref.png | Bin 191 -> 0 bytes + .../surface-pattern-operator.mask.argb32.ref.png | Bin 5217 -> 0 bytes + .../surface-pattern-operator.mask.rgb24.ref.png | Bin 1942 -> 0 bytes + ...rface-pattern-scale-down-extend-none.argb32.ref.png | Bin 329 -> 0 bytes + ...-pattern-scale-down-extend-none.mask.argb32.ref.png | Bin 329 -> 0 bytes + ...e-pattern-scale-down-extend-none.mask.rgb24.ref.png | Bin 329 -> 0 bytes + ...urface-pattern-scale-down-extend-none.rgb24.ref.png | Bin 329 -> 0 bytes + ...pattern-scale-down-extend-none.traps.argb32.ref.png | Bin 329 -> 0 bytes + ...-pattern-scale-down-extend-none.traps.rgb24.ref.png | Bin 329 -> 0 bytes + ...urface-pattern-scale-down-extend-pad.argb32.ref.png | Bin 320 -> 0 bytes + ...e-pattern-scale-down-extend-pad.mask.argb32.ref.png | Bin 320 -> 0 bytes + ...ce-pattern-scale-down-extend-pad.mask.rgb24.ref.png | Bin 320 -> 0 bytes + ...surface-pattern-scale-down-extend-pad.rgb24.ref.png | Bin 320 -> 0 bytes + ...-pattern-scale-down-extend-pad.traps.argb32.ref.png | Bin 320 -> 0 bytes + ...e-pattern-scale-down-extend-pad.traps.rgb24.ref.png | Bin 320 -> 0 bytes + ...ce-pattern-scale-down-extend-reflect.argb32.ref.png | Bin 328 -> 0 bytes + ...ttern-scale-down-extend-reflect.mask.argb32.ref.png | Bin 328 -> 0 bytes + ...attern-scale-down-extend-reflect.mask.rgb24.ref.png | Bin 328 -> 0 bytes + ...ace-pattern-scale-down-extend-reflect.rgb24.ref.png | Bin 328 -> 0 bytes + ...tern-scale-down-extend-reflect.traps.argb32.ref.png | Bin 328 -> 0 bytes + ...ttern-scale-down-extend-reflect.traps.rgb24.ref.png | Bin 328 -> 0 bytes + ...ace-pattern-scale-down-extend-repeat.argb32.ref.png | Bin 330 -> 0 bytes + ...attern-scale-down-extend-repeat.mask.argb32.ref.png | Bin 330 -> 0 bytes + ...pattern-scale-down-extend-repeat.mask.rgb24.ref.png | Bin 330 -> 0 bytes + ...face-pattern-scale-down-extend-repeat.rgb24.ref.png | Bin 330 -> 0 bytes + ...ttern-scale-down-extend-repeat.traps.argb32.ref.png | Bin 330 -> 0 bytes + ...attern-scale-down-extend-repeat.traps.rgb24.ref.png | Bin 330 -> 0 bytes + .../surface-pattern-scale-down.mask.argb32.ref.png | Bin 1326 -> 0 bytes + .../surface-pattern-scale-down.mask.rgb24.ref.png | Bin 1326 -> 0 bytes + .../surface-pattern-scale-down.traps.argb32.ref.png | Bin 1326 -> 0 bytes + .../surface-pattern-scale-down.traps.rgb24.ref.png | Bin 1326 -> 0 bytes + .../surface-pattern-scale-up.mask.argb32.ref.png | Bin 4020 -> 0 bytes + .../surface-pattern-scale-up.mask.rgb24.ref.png | Bin 4020 -> 0 bytes + .../surface-pattern-scale-up.traps.argb32.ref.png | Bin 4020 -> 0 bytes + .../surface-pattern-scale-up.traps.rgb24.ref.png | Bin 4020 -> 0 bytes + test/reference/surface-pattern.mask.argb32.ref.png | Bin 11088 -> 0 bytes + test/reference/surface-pattern.mask.rgb24.ref.png | Bin 11088 -> 0 bytes + test/reference/surface-pattern.traps.argb32.ref.png | Bin 11088 -> 0 bytes + test/reference/surface-pattern.traps.rgb24.ref.png | Bin 11088 -> 0 bytes + test/reference/svg-surface-source.mask.argb32.ref.png | Bin 377 -> 0 bytes + test/reference/svg-surface-source.mask.rgb24.ref.png | Bin 301 -> 0 bytes + test/reference/svg-surface-source.traps.argb32.ref.png | Bin 377 -> 0 bytes + test/reference/svg-surface-source.traps.rgb24.ref.png | Bin 301 -> 0 bytes + test/reference/text-antialias-gray.mask.argb32.ref.png | Bin 966 -> 0 bytes + test/reference/text-antialias-gray.mask.rgb24.ref.png | Bin 966 -> 0 bytes + .../reference/text-antialias-gray.traps.argb32.ref.png | Bin 966 -> 0 bytes + test/reference/text-antialias-gray.traps.rgb24.ref.png | Bin 966 -> 0 bytes + test/reference/text-antialias-none.argb32.ref.png | Bin 265 -> 0 bytes + test/reference/text-antialias-none.mask.argb32.ref.png | Bin 265 -> 0 bytes + test/reference/text-antialias-none.mask.rgb24.ref.png | Bin 265 -> 0 bytes + test/reference/text-antialias-none.rgb24.ref.png | Bin 265 -> 0 bytes + .../reference/text-antialias-none.traps.argb32.ref.png | Bin 265 -> 0 bytes + test/reference/text-antialias-none.traps.ref.png | Bin 265 -> 0 bytes + test/reference/text-antialias-none.traps.rgb24.ref.png | Bin 265 -> 0 bytes + .../text-antialias-subpixel-bgr.traps.argb32.ref.png | Bin 1005 -> 0 bytes + .../text-antialias-subpixel-bgr.traps.rgb24.ref.png | Bin 1005 -> 0 bytes + .../text-antialias-subpixel-rgb.traps.argb32.ref.png | Bin 1013 -> 0 bytes + .../text-antialias-subpixel-rgb.traps.rgb24.ref.png | Bin 1013 -> 0 bytes + .../text-antialias-subpixel-vbgr.traps.argb32.ref.png | Bin 985 -> 0 bytes + .../text-antialias-subpixel-vbgr.traps.rgb24.ref.png | Bin 985 -> 0 bytes + .../text-antialias-subpixel-vrgb.traps.argb32.ref.png | Bin 1009 -> 0 bytes + .../text-antialias-subpixel-vrgb.traps.rgb24.ref.png | Bin 1009 -> 0 bytes + .../text-antialias-subpixel.traps.argb32.ref.png | Bin 1013 -> 0 bytes + .../text-antialias-subpixel.traps.rgb24.ref.png | Bin 1013 -> 0 bytes + test/reference/text-glyph-range.mask.argb32.ref.png | Bin 1928 -> 0 bytes + test/reference/text-glyph-range.mask.rgb24.ref.png | Bin 1928 -> 0 bytes + test/reference/text-glyph-range.traps.argb32.ref.png | Bin 1979 -> 0 bytes + test/reference/text-glyph-range.traps.rgb24.ref.png | Bin 1979 -> 0 bytes + test/reference/text-pattern.mask.argb32.ref.png | Bin 3455 -> 0 bytes + test/reference/text-pattern.mask.rgb24.ref.png | Bin 2684 -> 0 bytes + test/reference/text-rotate.traps.argb32.ref.png | Bin 16597 -> 0 bytes + test/reference/text-rotate.traps.rgb24.ref.png | Bin 16597 -> 0 bytes + test/reference/text-transform.argb32.ref.png | Bin 5579 -> 0 bytes + test/reference/text-transform.mask.argb32.ref.png | Bin 5579 -> 0 bytes + test/reference/text-transform.mask.rgb24.ref.png | Bin 5579 -> 0 bytes + test/reference/text-transform.rgb24.ref.png | Bin 5579 -> 0 bytes + test/reference/text-transform.traps.argb32.ref.png | Bin 5579 -> 0 bytes + test/reference/text-transform.traps.rgb24.ref.png | Bin 5579 -> 0 bytes + test/reference/tiger.mask.argb32.ref.png | Bin 93916 -> 0 bytes + test/reference/tiger.mask.rgb24.ref.png | Bin 93916 -> 0 bytes + test/reference/transforms.mask.argb32.ref.png | Bin 348 -> 0 bytes + test/reference/transforms.mask.rgb24.ref.png | Bin 348 -> 0 bytes + test/reference/translate-show-surface.argb32.ref.png | Bin 96 -> 0 bytes + .../translate-show-surface.mask.argb32.ref.png | Bin 96 -> 0 bytes + .../translate-show-surface.mask.rgb24.ref.png | Bin 96 -> 0 bytes + test/reference/translate-show-surface.rgb24.ref.png | Bin 96 -> 0 bytes + .../translate-show-surface.traps.argb32.ref.png | Bin 96 -> 0 bytes + .../translate-show-surface.traps.rgb24.ref.png | Bin 96 -> 0 bytes + .../reference/twin-antialias-mixed.mask.argb32.ref.png | Bin 2230 -> 0 bytes + test/reference/twin-antialias-mixed.mask.rgb24.ref.png | Bin 2230 -> 0 bytes + test/reference/twin-antialias-none.mask.argb32.ref.png | Bin 690 -> 0 bytes + test/reference/twin-antialias-none.mask.rgb24.ref.png | Bin 690 -> 0 bytes + test/reference/unaligned-box.argb32.ref.png | Bin 496 -> 0 bytes + test/reference/unaligned-box.mask.argb32.ref.png | Bin 496 -> 0 bytes + test/reference/unaligned-box.mask.rgb24.ref.png | Bin 496 -> 0 bytes + test/reference/unaligned-box.rgb24.ref.png | Bin 496 -> 0 bytes + test/reference/unantialiased-shapes.argb32.ref.png | Bin 3926 -> 0 bytes + .../reference/unantialiased-shapes.mask.argb32.ref.png | Bin 3926 -> 0 bytes + test/reference/unantialiased-shapes.mask.rgb24.ref.png | Bin 3926 -> 0 bytes + test/reference/unantialiased-shapes.rgb24.ref.png | Bin 3926 -> 0 bytes + test/reference/unclosed-strokes.mask.argb32.ref.png | Bin 1901 -> 0 bytes + test/reference/unclosed-strokes.mask.rgb24.ref.png | Bin 1901 -> 0 bytes + test/reference/user-font-mask.argb32.ref.png | Bin 5476 -> 0 bytes + test/reference/user-font-mask.mask.argb32.ref.png | Bin 5476 -> 0 bytes + test/reference/user-font-mask.mask.rgb24.ref.png | Bin 5476 -> 0 bytes + test/reference/user-font-mask.rgb24.ref.png | Bin 5476 -> 0 bytes + test/reference/user-font-mask.traps.argb32.ref.png | Bin 5476 -> 0 bytes + test/reference/user-font-mask.traps.rgb24.ref.png | Bin 5476 -> 0 bytes + test/reference/user-font-proxy.mask.argb32.ref.png | Bin 16941 -> 0 bytes + test/reference/user-font-proxy.mask.rgb24.ref.png | Bin 16941 -> 0 bytes + test/reference/user-font-proxy.traps.argb32.ref.png | Bin 16854 -> 0 bytes + test/reference/user-font-proxy.traps.rgb24.ref.png | Bin 16854 -> 0 bytes + test/reference/user-font-rescale.mask.argb32.ref.png | Bin 14883 -> 0 bytes + test/reference/user-font-rescale.mask.rgb24.ref.png | Bin 14883 -> 0 bytes + test/reference/user-font-rescale.traps.argb32.ref.png | Bin 14883 -> 0 bytes + test/reference/user-font-rescale.traps.rgb24.ref.png | Bin 14883 -> 0 bytes + test/reference/white-in-noop.argb32.ref.png | Bin 95 -> 0 bytes + test/reference/white-in-noop.mask.argb32.ref.png | Bin 95 -> 0 bytes + test/reference/white-in-noop.mask.rgb24.ref.png | Bin 95 -> 0 bytes + test/reference/white-in-noop.rgb24.ref.png | Bin 95 -> 0 bytes + test/reference/white-in-noop.traps.argb32.ref.png | Bin 95 -> 0 bytes + test/reference/white-in-noop.traps.rgb24.ref.png | Bin 95 -> 0 bytes + test/reference/world-map-fill.mask.argb32.ref.png | Bin 57308 -> 0 bytes + test/reference/world-map-fill.mask.rgb24.ref.png | Bin 57308 -> 0 bytes + test/reference/xcb-huge-image-shm.argb32.ref.png | Bin 97 -> 0 bytes + test/reference/xcb-huge-image-shm.mask.argb32.ref.png | Bin 97 -> 0 bytes + test/reference/xcb-huge-image-shm.mask.rgb24.ref.png | Bin 97 -> 0 bytes + test/reference/xcb-huge-image-shm.rgb24.ref.png | Bin 97 -> 0 bytes + test/reference/xcb-huge-image-shm.traps.argb32.ref.png | Bin 97 -> 0 bytes + test/reference/xcb-huge-image-shm.traps.rgb24.ref.png | Bin 97 -> 0 bytes + .../xcb-huge-image-shm.xlib-fallback.rgb24.ref.png | Bin 97 -> 0 bytes + .../xcb-huge-image-shm.xlib-window.rgb24.ref.png | Bin 97 -> 0 bytes + test/reference/xcb-snapshot-assert.argb32.ref.png | Bin 97 -> 0 bytes + test/reference/xcb-snapshot-assert.mask.argb32.ref.png | Bin 97 -> 0 bytes + test/reference/xcb-snapshot-assert.mask.rgb24.ref.png | Bin 97 -> 0 bytes + test/reference/xcb-snapshot-assert.rgb24.ref.png | Bin 97 -> 0 bytes + .../reference/xcb-snapshot-assert.traps.argb32.ref.png | Bin 97 -> 0 bytes + test/reference/xcb-snapshot-assert.traps.rgb24.ref.png | Bin 97 -> 0 bytes + test/reference/xcb-stress-cache.argb32.ref.png | Bin 97 -> 0 bytes + test/reference/xcb-stress-cache.mask.argb32.ref.png | Bin 97 -> 0 bytes + test/reference/xcb-stress-cache.mask.rgb24.ref.png | Bin 97 -> 0 bytes + test/reference/xcb-stress-cache.rgb24.ref.png | Bin 97 -> 0 bytes + test/reference/xcb-stress-cache.traps.argb32.ref.png | Bin 97 -> 0 bytes + test/reference/xcb-stress-cache.traps.rgb24.ref.png | Bin 97 -> 0 bytes + test/reference/xcb-surface-source.mask.argb32.ref.png | Bin 377 -> 0 bytes + test/reference/xcb-surface-source.mask.rgb24.ref.png | Bin 301 -> 0 bytes + test/reference/xcb-surface-source.traps.argb32.ref.png | Bin 377 -> 0 bytes + test/reference/xcb-surface-source.traps.rgb24.ref.png | Bin 301 -> 0 bytes + test/reference/xcomposite-projection.argb32.ref.png | Bin 1108 -> 0 bytes + test/reference/xcomposite-projection.rgb24.ref.png | Bin 1108 -> 0 bytes + test/reference/xlib-expose-event.argb32.ref.png | Bin 40717 -> 0 bytes + test/reference/xlib-expose-event.mask.argb32.ref.png | Bin 40717 -> 0 bytes + test/reference/xlib-expose-event.mask.rgb24.ref.png | Bin 40717 -> 0 bytes + test/reference/xlib-expose-event.rgb24.ref.png | Bin 40717 -> 0 bytes + test/reference/xlib-expose-event.traps.argb32.ref.png | Bin 40717 -> 0 bytes + test/reference/xlib-expose-event.traps.rgb24.ref.png | Bin 40717 -> 0 bytes + test/reference/xlib-surface-source.mask.argb32.ref.png | Bin 377 -> 0 bytes + test/reference/xlib-surface-source.mask.rgb24.ref.png | Bin 301 -> 0 bytes + .../reference/xlib-surface-source.traps.argb32.ref.png | Bin 377 -> 0 bytes + test/reference/xlib-surface-source.traps.rgb24.ref.png | Bin 301 -> 0 bytes + test/reference/zero-alpha.argb32.ref.png | Bin 91 -> 0 bytes + test/reference/zero-alpha.mask.argb32.ref.png | Bin 91 -> 0 bytes + test/reference/zero-alpha.mask.rgb24.ref.png | Bin 91 -> 0 bytes + test/reference/zero-alpha.rgb24.ref.png | Bin 91 -> 0 bytes + test/reference/zero-alpha.traps.argb32.ref.png | Bin 91 -> 0 bytes + test/reference/zero-alpha.traps.rgb24.ref.png | Bin 91 -> 0 bytes + test/reference/zero-mask.argb32.ref.png | Bin 402 -> 0 bytes + test/reference/zero-mask.mask.argb32.ref.png | Bin 402 -> 0 bytes + test/reference/zero-mask.mask.rgb24.ref.png | Bin 382 -> 0 bytes + test/reference/zero-mask.traps.argb32.ref.png | Bin 402 -> 0 bytes + test/reference/zero-mask.traps.rgb24.ref.png | Bin 382 -> 0 bytes + 1477 files changed, 0 insertions(+), 0 deletions(-) + +commit 33895904d52f47d0d89156ca1e1ff7cc8f5887d2 +Author: Bryce W. Harrington +AuthorDate: Wed Jul 3 22:37:41 2013 +0000 +Commit: Chris Wilson +CommitDate: Thu Jul 4 09:27:56 2013 +0100 + + test: Add special cases for create-from-png and fallback-resolution + + These tests use reference images somewhat differently from other tests, + so treat them as special cases and avoid recommending deleting any of + their files. + + Add TODO's to each test to rework them to be more consistent with other + tests. + + Signed-off-by: Bryce Harrington + + test/check-refs.sh | 10 ++++++++++ + test/create-from-png.c | 5 +++++ + test/fallback-resolution.c | 1 + + 3 files changed, 16 insertions(+) + +commit 5577223489dc3f6e282c498d70f66f8ee9327474 +Author: Bryce W. Harrington +AuthorDate: Wed Jul 3 22:37:00 2013 +0000 +Commit: Chris Wilson +CommitDate: Thu Jul 4 09:27:56 2013 +0100 + + pdiff: Drop unused variable + + Fixes: + perceptualdiff.c:35:24: warning: unused variable ‘dim’ + [-Wunused-variable] + + Signed-off-by: Bryce Harrington + Signed-off-by: Bryce Harrington + + test/pdiff/perceptualdiff.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 319b8935826c8726b8c23f1c746a82b261b8cde1 +Author: Bryce W. Harrington +AuthorDate: Wed Jul 3 22:36:28 2013 +0000 +Commit: Chris Wilson +CommitDate: Thu Jul 4 09:27:55 2013 +0100 + + pdiff: Quell warning about signed/unsigned comparisons + + perceptualdiff.c:55:19: warning: comparison between signed and unsigned + integer expressions [-Wsign-compare] + perceptualdiff.c:60:16: warning: comparison between signed and unsigned + integer expressions [-Wsign-compare] + + Signed-off-by: Bryce Harrington + + test/pdiff/perceptualdiff.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +commit 9e4cac50c25cec0476413a991d98c897fce0aceb +Author: Bryce W. Harrington +AuthorDate: Wed Jul 3 22:35:47 2013 +0000 +Commit: Chris Wilson +CommitDate: Thu Jul 4 09:27:55 2013 +0100 + + test: Make check-ref-dups utilize perceptualdiff for comparisons + + The current sha1sum-based file checker does a blanket comparison of all + files with each other, which is fast but not directly helpful since it + doesn't distinguish between sibling files (which are allowable to be + duplicates). Also, it ignores files that may have byte differences + (such as PNG header differences) but are otherwise pixel-identical. + + This patch replaces the sha1sum-based checker with one that accounts for + the default fallback path and uses perceptualdiff to compare files that + are bytewise different and verify whether they actually are different. + + The intention is that the output of this command can be directly used to + remove redundant files, e.g.: + + cd test + make check-ref-dups | cut -d' ' -f2 | \ + while read f; do git rm "reference/$f"; done + + This should have no impact on make check's results (modulo any tests + that behave erratically), and will help trim down the size of the + tarball. + + Signed-off-by: Bryce Harrington + [ickle: rebase and add the suggested command to the Makefile] + + test/Makefile.am | 13 +++++++++---- + 1 file changed, 9 insertions(+), 4 deletions(-) + +commit 8d3c518e9db39b670fe89c4bf097871e1cf16955 +Author: Bryce W. Harrington +AuthorDate: Wed Jul 3 22:35:08 2013 +0000 +Commit: Chris Wilson +CommitDate: Thu Jul 4 09:04:17 2013 +0100 + + test: Use cmp to catch byte-by-byte identical files + + cmp runs faster than perceptualdiff, and catches files that are exact + copies of the reference image. We still use perceptualdiff for catching + files that aren't bytewise identical, but are still identical at the + pixel level. + + Signed-off-by: Bryce Harrington + + test/check-refs.sh | 20 ++++++++++++-------- + 1 file changed, 12 insertions(+), 8 deletions(-) + +commit b0be0d8d42b5b6ba80e59a869a8f72fd8556e91e +Author: Bryce W. Harrington +AuthorDate: Wed Jul 3 22:33:57 2013 +0000 +Commit: Chris Wilson +CommitDate: Thu Jul 4 09:04:05 2013 +0100 + + test: Add script to check for redundant reference images + + This script requires the perceptualdiff program, which can be built as + follows: + + cd test/pdiff && make perceptualdiff + + The script's output provides a list of target-specific or + format-specific images that are identical to their more generic + reference files, and thus are redundant and can be safely removed from + the archive without altering any test behaviors. + + Signed-off-by: Bryce Harrington + [ickle: applied Behdad's suggestion of renaming the script check-refs.sh] + + test/Makefile.am | 1 + + test/check-refs.sh | 60 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ + 2 files changed, 61 insertions(+) + +commit 7f1be42e85589ee07dacead012234c1a1eb1b395 +Author: Bryce W. Harrington +AuthorDate: Wed Jul 3 22:32:34 2013 +0000 +Commit: Chris Wilson +CommitDate: Thu Jul 4 08:57:45 2013 +0100 + + test: Fix make check-ref-dups due to move of ref images to reference/ + + The check-ref-dups target in Makefile.am was not updated with the new + path when the reference images were moved from test/ to + test/reference/. Now it produces output properly again. + + Signed-off-by: Bryce Harrington + + test/Makefile.am | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 7b8fc77bb974fbd4fbc697405a8b6aec748bb7f2 +Author: Eric Anholt +AuthorDate: Mon Jun 24 23:28:47 2013 -0700 +Commit: Chris Wilson +CommitDate: Fri Jun 28 11:53:04 2013 +0100 + + gl: Move glGetUniformLocation to shader compile time. + + The lookup of the string names has significant overhead, which is why GL + gives you glGetUniformLocation so that you reference uniforms by + constant integers in your high performance path. + + Reduces cairo-perf-trace runtime of firefox-planet-gnome by 1.06767% +/- + 0.289265% (n=72) on my IVB macbook air. + + Signed-off-by: Eric Anholt + Reviewed-by: Chris Wilson + + src/cairo-gl-composite.c | 2 +- + src/cairo-gl-operand.c | 30 ++++++++-------------- + src/cairo-gl-private.h | 19 +++++++++----- + src/cairo-gl-shaders.c | 67 +++++++++++++++++++++++++++++++++--------------- + 4 files changed, 70 insertions(+), 48 deletions(-) + +commit 4d9439132de85c0f0f4d5b5a474ea7164910251e +Author: Chris Wilson +AuthorDate: Fri Jun 21 20:18:40 2013 +0100 +Commit: Chris Wilson +CommitDate: Fri Jun 21 20:18:40 2013 +0100 + + check: Fix check-def.sh for variations in GCC's linker + + We now need to exclude bss and data sections from the symbol list. + + Signed-off-by: Chris Wilson + + src/check-def.sh | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 7b80613d6d483cdfd5d0c6311de0f8586092b408 +Author: Chris Wilson +AuthorDate: Fri Jun 21 17:30:47 2013 +0100 +Commit: Chris Wilson +CommitDate: Fri Jun 21 17:30:47 2013 +0100 + + test: Use the highest precision rendering for shapes for generating ref results + + The test-traps and test-base surfaces are used for generating the + reference results, and so they should opt for using the best rendering + paths through the traps- and base-compositors. + + Signed-off-by: Chris Wilson + + src/test-compositor-surface.c | 4 ++++ + 1 file changed, 4 insertions(+) + +commit 686ebd4a893d2e583d0cf11bd9f77681dbf0b21c +Author: Chris Wilson +AuthorDate: Fri Jun 21 16:58:38 2013 +0100 +Commit: Chris Wilson +CommitDate: Fri Jun 21 16:59:25 2013 +0100 + + cairo-perf-print: Do not free the uninitialised histogram + + Signed-off-by: Chris Wilson + + perf/cairo-perf-print.c | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +commit 5589e80e2bd6b82e5730cbf6b72aaf82a66b31c0 +Author: Chris Wilson +AuthorDate: Fri Jun 21 12:01:32 2013 +0100 +Commit: Chris Wilson +CommitDate: Fri Jun 21 12:01:32 2013 +0100 + + xml: Handle clip-boxes in the updated cairo_clip_t + + Edward Zimmerman pointed out that the xml surface had bitrotted slightly + and no longer understand the new clip layout - in particular that we can + have clips without a path, but just with boxes instead. + + Signed-off-by: Chris Wilson + + src/cairo-xml-surface.c | 77 +++++++++++++++++++++++++++++++++++++++++++++---- + 1 file changed, 72 insertions(+), 5 deletions(-) + +commit 2bfb9e9001bceaedffb2303c062af8e42045931e +Author: Chris Wilson +AuthorDate: Thu Jun 20 20:47:18 2013 +0100 +Commit: Chris Wilson +CommitDate: Thu Jun 20 20:47:18 2013 +0100 + + svg: Unwrap recording surfaces + + As a first step towards bring SVG uptodate with the various new + patterns, first we need to prevent SVG crashing when it mishandles an + unknown recording surface. + + Signed-off-by: Chris Wilson + + src/cairo-svg-surface.c | 16 ++++++++++++++-- + 1 file changed, 14 insertions(+), 2 deletions(-) + +commit b7331f0c52cc64f2c224eac502afa6c50a1a8d8b +Author: Chris Wilson +AuthorDate: Thu Jun 20 14:23:15 2013 +0100 +Commit: Chris Wilson +CommitDate: Thu Jun 20 14:26:21 2013 +0100 + + gstate: Speed up stroked path extents + + We can skip the intermediate evaluation of the trapezoids for + determining the extents of a stroked path by using the relatively new + functions for computing the contours of the stroke. Then we can simply + use the bbox of the points within the contours to retrieve the path + extents - which is already provided by the polygon holding the contours + of the stroke. This provides a faster result with less numerical + inaccuracy due to fewer stages required in the computation + + References: https://bugs.freedesktop.org/show_bug.cgi?id=62375 + Signed-off-by: Chris Wilson + + src/cairo-gstate.c | 24 ++++++++++++------------ + 1 file changed, 12 insertions(+), 12 deletions(-) + +commit 9ea5993b036f5930179263baaf3162eeebb7c153 +Author: Chris Wilson +AuthorDate: Thu Jun 20 14:11:38 2013 +0100 +Commit: Chris Wilson +CommitDate: Thu Jun 20 14:11:38 2013 +0100 + + test/get-path-extents: Check exact matches within tolerance + + When we refine geometry, we do so to a tolerance as specified by the + user. This means that we can not expect tessellated results to have + exact results, but always they should match within the specified + tolerance. + + Signed-off-by: Chris Wilson + + test/get-path-extents.c | 30 +++++++++++++++++++++--------- + 1 file changed, 21 insertions(+), 9 deletions(-) + +commit e079e4e2297810ceb10798cf310a7fafe39b18f0 +Author: Chris Wilson +AuthorDate: Thu Jun 20 14:02:14 2013 +0100 +Commit: Chris Wilson +CommitDate: Thu Jun 20 14:02:14 2013 +0100 + + image: Mark the data as owned after stealing the snapshot's image + + Victor Goya found that we ended up leaking memory after reading a PNG + into an image surface and drawing that onto a PDF surface. In + particular, he discovered that + + commit 0bfd2acd35547fc2bd0de99cc67d153f0170697d + Author: Chris Wilson + Date: Mon Aug 13 01:34:12 2012 +0100 + + xlib: Implement SHM fallbacks and fast upload paths + + introduced a path to steal the image data for a snapshot (and thereby + avoid a redundant copy), but that path then lead to the leak of the + "owned" data. + + Reported-by: Victor Goya + Signed-off-by: Chris Wilson + + src/cairo-image-surface.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit f39eef852491c10dec4089f9fb3d332a712da28c +Author: Chris Wilson +AuthorDate: Thu Jun 20 11:11:20 2013 +0100 +Commit: Chris Wilson +CommitDate: Thu Jun 20 11:11:20 2013 +0100 + + pdf: Fix compiler warning for use of unitialised variable along error path + + cairo-pdf-surface.c: In function '_cairo_pdf_surface_add_source_surface.isra.20': + cairo-pdf-surface.c:1461:10: warning: 'unique_id' may be used uninitialized in this function [-Wmaybe-uninitialized] + + Signed-off-by: Chris Wilson + + src/cairo-pdf-surface.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 80641f4adc3e2ca16e67110e7b82f42e88efd93e +Author: Chris Wilson +AuthorDate: Thu Jun 20 11:09:53 2013 +0100 +Commit: Chris Wilson +CommitDate: Thu Jun 20 11:09:53 2013 +0100 + + pdf: Improve consistency in use of cairo_int_status_t + + Suppress several compiler warning for mixing + cairo_status_t/cairo_int_status_t enums. + + Signed-off-by: Chris Wilson + + src/cairo-pdf-operators-private.h | 7 +- + src/cairo-pdf-surface.c | 256 ++++++++++++++++---------------- + src/cairo-ps-surface.c | 2 +- + src/cairo-type3-glyph-surface-private.h | 5 +- + 4 files changed, 136 insertions(+), 134 deletions(-) + +commit d4545910e2836eb6fc7dc2ed787b02aea514cb0b +Author: Bryce W. Harrington +AuthorDate: Thu Jun 20 03:16:01 2013 +0000 +Commit: Chris Wilson +CommitDate: Thu Jun 20 11:00:59 2013 +0100 + + test: Note naming scheme for XFAIL images in README + + Signed-off-by: Bryce Harrington + + test/README | 5 +++-- + 1 file changed, 3 insertions(+), 2 deletions(-) + +commit 982f288460591a8f2b8a78db89ae6e5495d2b3b8 +Author: Bryce W. Harrington +AuthorDate: Thu Jun 20 03:16:29 2013 +0000 +Commit: Chris Wilson +CommitDate: Thu Jun 20 11:00:37 2013 +0100 + + gl: Quell warning about incompatible pointer type + + mask is a cairo_surface_t pointer, and is cast to a cairo_gl_surface_t + pointer in the _cairo_gl_surface_draw_image() call. + texture.owns_surface also expects mask to be a cairo_gl_surface_t + pointer, so apply the same cast here as well. + + Fixes the following warning: + + cairo-gl-traps-compositor.c:370:35: warning: assignment from + incompatible pointer type [enabled by default] + + Ref.: 38bf7a65 + + Signed-off-by: Bryce Harrington + + src/cairo-gl-traps-compositor.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit aa764a3bbc3fe43191d877aaec42b73c7d55d040 +Author: Bryce W. Harrington +AuthorDate: Thu Jun 20 03:17:38 2013 +0000 +Commit: Chris Wilson +CommitDate: Thu Jun 20 11:00:23 2013 +0100 + + pdf: Assure compiler that data, data_size will always be initialized + + There are only three possible color states: COLOR, GRAYSCALE, or + MONOCHROME thus data and data_size will always be set to some value, + so assert the default is never reached. + + Fixes these warning: + cairo-pdf-surface.c:2517:32: warning: ‘data_size’ may be used + uninitialized in this function [-Wuninitialized] + cairo-pdf-surface.c:2338:19: note: ‘data_size’ was declared here + cairo-pdf-surface.c:2446:11: warning: ‘data’ may be used uninitialized + in this function [-Wuninitialized] + cairo-pdf-surface.c:2337:11: note: ‘data’ was declared here + + Signed-off-by: Bryce Harrington + + src/cairo-pdf-surface.c | 4 +++- + 1 file changed, 3 insertions(+), 1 deletion(-) + +commit 27cb80b84834f7262d70cd1f95dd6e940059f75a +Author: Bryce W. Harrington +AuthorDate: Thu Jun 20 03:18:11 2013 +0000 +Commit: Chris Wilson +CommitDate: Thu Jun 20 10:58:52 2013 +0100 + + type1-subset: Fix typos in function comment + + Signed-off-by: Bryce Harrington + + src/cairo-type1-subset.c | 14 +++++++------- + 1 file changed, 7 insertions(+), 7 deletions(-) + +commit f893acd60df816f3e0282affef6b58f59f84f48a +Author: Bryce W. Harrington +AuthorDate: Thu Jun 20 03:18:45 2013 +0000 +Commit: Chris Wilson +CommitDate: Thu Jun 20 10:57:57 2013 +0100 + + type1-subset: Quell warning about uninitialized array_start + + Since we explicitly set font->subset_subrs to false, there's no way the + warned code will be executed, but perhaps the compiler is confused by + the goto jump. + + Signed-off-by: Bryce Harrington + + src/cairo-type1-subset.c | 1 + + 1 file changed, 1 insertion(+) + +commit 519dff51db30e157f52ef5244a3afeea06340ff8 +Author: Chris Wilson +AuthorDate: Tue Jun 18 16:06:28 2013 +0100 +Commit: Chris Wilson +CommitDate: Tue Jun 18 16:08:27 2013 +0100 + + scaled-font: Prevent a recursive mutex lock for removing a failed glyph + + If we fail to create a glyph, and it is the only one in the glyph page, + we then pluck that page out of the global glyph cache. The cache destroy + callback tries to take the scaled_font lock again, causing a lockup. + Rework the error path to avoid taking that lock in this case - still a + potential lock ordering issue remains. + + Signed-off-by: Chris Wilson + + src/cairo-scaled-font.c | 4 ++++ + 1 file changed, 4 insertions(+) + +commit df1ca22ada340add2360677ff892ec043dad96f4 +Author: Chris Wilson +AuthorDate: Tue Jun 18 15:46:28 2013 +0100 +Commit: Chris Wilson +CommitDate: Tue Jun 18 15:48:26 2013 +0100 + + recording: Prevent invalid memory access with zero length command array + + If we try to sort a zero length array, we access invalid memory. + However, for a zero length command array, we can trivially compute the + number of visible indices, 0. + + Signed-off-by: Chris Wilson + + src/cairo-recording-surface.c | 3 +++ + 1 file changed, 3 insertions(+) + +commit c51b850bd836c2bec0a1bcc7b32136dc21bc2360 +Author: Chris Wilson +AuthorDate: Tue Jun 11 14:11:45 2013 +0100 +Commit: Chris Wilson +CommitDate: Tue Jun 11 14:11:45 2013 +0100 + + perf: Remove a debug artifact + + Remove the intentional #error for non-UNIX path used to remind me to fix + up configure.ac. + + Signed-off-by: Chris Wilson + + perf/cairo-perf-print.c | 1 - + 1 file changed, 1 deletion(-) + +commit 2c097e6e6b8375b7d488572cdb09b80dca06d42a +Author: Chris Wilson +AuthorDate: Tue Jun 11 11:57:04 2013 +0100 +Commit: Chris Wilson +CommitDate: Tue Jun 11 11:57:04 2013 +0100 + + perf: Avoid vertically stretching the histogram + + If we have more rows than the max_count in any column, we end up + stretching the histogram vertically, which makes it harder to read. + + Signed-off-by: Chris Wilson + + perf/cairo-stats.c | 9 ++++++--- + 1 file changed, 6 insertions(+), 3 deletions(-) + +commit b9f0ef4496eca31b47296543f48078b2a7034750 +Author: Chris Wilson +AuthorDate: Tue Jun 11 11:47:24 2013 +0100 +Commit: Chris Wilson +CommitDate: Tue Jun 11 11:47:24 2013 +0100 + + perf: Rescale the histogram for the terminal + + If running ./cairo-perf-print in a terminal, query the terminal size and + rescale the histogram to use the maximum available space. + + Signed-off-by: Chris Wilson + + configure.ac | 2 ++ + perf/cairo-perf-print.c | 37 +++++++++++++++++++++++++++++++++++-- + 2 files changed, 37 insertions(+), 2 deletions(-) + +commit 9a12c2e02369f0920c1f1f578eb8d228add77ea1 +Author: Chris Wilson +AuthorDate: Tue Jun 11 11:05:03 2013 +0100 +Commit: Chris Wilson +CommitDate: Tue Jun 11 11:30:43 2013 +0100 + + perf: Rudimentary histogram printing for cairo-perf-print + + If you call ./cairo-perf-print --histogram results.txt, it will then + print a histogram of the results, one per test. Ideally, you should see + a skewed distribution (with a negative skew representing that most results + run in optimal time), but random sampling errors (scheduling, + throttling, general inefficiency etc) will push it more towards a normal + distribution. + + For example, + | x | + | x xx | + | x xx | + | x xx | + | xxxx | + | xxxx x | + | x xxxxxx | + | x xxxxxx | + | xxxxxxxxx | + | xxxxxxxxx | + | xxxxxxxxx | + | xxxxxxxxxxxx | + | xxxxxxxxxxxx | + | xxxxxxxxxxxx | + | xxxxxxxxxxxxxx | + |x xxxxxxxxxxxxxx | + |x x xxxxxxxxxxxxxxx | + |x x xxxxxxxxxxxxxxx | + |x x xxxxxxxxxxxxxxxxx | + |xxx x xxxxxxxxxxxxxxxxxxx | + |xxx xxxxxxxxxxxxxxxxxxxxxxxxx | + |xxxxxx xxxx x x x x xxx xx xxxxx xxx x xxx x xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx| + .------------------------------------------------------------------------------. + xlib firefox-fishtank 8298.44 1.53% (829/946) + + Starts off reasonably, but quickly deteriorates as the integrated CPU/GPU + overheats and is forced to throttle. + + Signed-off-by: Chris Wilson + + perf/cairo-perf-print.c | 65 +++++++++++++++++++++++++++++---------- + perf/cairo-perf-report.c | 2 +- + perf/cairo-perf.h | 9 ++++++ + perf/cairo-stats.c | 80 ++++++++++++++++++++++++++++++++++++++++++++++++ + perf/cairo-stats.h | 16 ++++++++++ + 5 files changed, 155 insertions(+), 17 deletions(-) + +commit e519d6f9860c7f0bc51f1e8a17505f2dc372c938 +Author: Chris Wilson +AuthorDate: Tue Jun 11 10:00:56 2013 +0100 +Commit: Chris Wilson +CommitDate: Tue Jun 11 10:02:13 2013 +0100 + + recording: Fix inconsistent usage of types for indices + + We were wantonly mixing unsigned/signed integers for our index and + counters, leading to compiler warnings. Be bold, and use unsigned + consistently. + + Signed-off-by: Chris Wilson + + src/cairo-recording-surface-private.h | 4 ++-- + src/cairo-recording-surface.c | 18 +++++++++--------- + 2 files changed, 11 insertions(+), 11 deletions(-) + +commit b45c79ff8a8e7c5cf4af1498d854a85c818d9268 +Author: Bryce W. Harrington +AuthorDate: Mon Jun 10 19:01:09 2013 +0000 +Commit: Chris Wilson +CommitDate: Tue Jun 11 10:02:13 2013 +0100 + + image: Quell warning about signed/unsigned int comparison. + + Restore (int) cast that was dropped in e7e1ac23. + + Signed-off-by: Bryce Harrington + + src/cairo-image-compositor.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 5271f3199107f50f65608f3816c840da7445fb55 +Author: Bryce W. Harrington +AuthorDate: Sat Jun 8 01:42:20 2013 +0000 +Commit: Chris Wilson +CommitDate: Sat Jun 8 07:52:18 2013 +0100 + + test: Fix typo in sample_horizontal to use horizontal, not vertical. + + Triggers the following warning during build: + + sample.c:61:1: warning: ‘horizontal’ defined but not used + [-Wunused-function] + + Signed-off-by: Bryce Harrington + + test/sample.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 17dc312221c294b120bd159e01f5f566c6ec4a2d +Author: Chris Wilson +AuthorDate: Wed Jun 5 22:34:52 2013 +0100 +Commit: Chris Wilson +CommitDate: Wed Jun 5 22:34:52 2013 +0100 + + trace: Improve operand emission + + In particular fixing up a couple of corner cases in emitting the right + instructions for scaled-fonts and patterns. + + Signed-off-by: Chris Wilson + + util/cairo-trace/trace.c | 147 ++++++++++++++++++++++++++++------------------- + 1 file changed, 87 insertions(+), 60 deletions(-) + +commit e34b800214c78ec3d92de505d173fc617cf6220f +Author: Chris Wilson +AuthorDate: Tue Jun 4 11:47:07 2013 +0100 +Commit: Chris Wilson +CommitDate: Tue Jun 4 11:52:30 2013 +0100 + + test: Extend testing of joins for fine lines + + test/caps-joins.c | 55 ++++++++++++++++++++++++++--- + test/reference/caps-joins-05.ref.png | Bin 0 -> 2169 bytes + test/reference/caps-joins-05.traps.ref.png | Bin 0 -> 1714 bytes + test/reference/caps-joins-1.ref.png | Bin 0 -> 2105 bytes + test/reference/caps-joins-1.traps.ref.png | Bin 0 -> 1861 bytes + test/reference/caps-joins-2.ref.png | Bin 0 -> 2046 bytes + test/reference/caps-joins-2.traps.ref.png | Bin 0 -> 1631 bytes + 7 files changed, 51 insertions(+), 4 deletions(-) + +commit a2d852497364afa742518ac0d9feb0466dccc191 +Author: Chris Wilson +AuthorDate: Tue Jun 4 11:34:31 2013 +0100 +Commit: Chris Wilson +CommitDate: Tue Jun 4 11:52:26 2013 +0100 + + test: Expand testing of caps for fine strokes + + test/caps.c | 57 +++++++++++++++++++++++++++++++++-- + test/reference/caps-05.ref.png | Bin 0 -> 1375 bytes + test/reference/caps-05.traps.ref.png | Bin 0 -> 1126 bytes + test/reference/caps-1.ref.png | Bin 0 -> 1457 bytes + test/reference/caps-1.traps.ref.png | Bin 0 -> 1268 bytes + test/reference/caps-2.ref.png | Bin 0 -> 1509 bytes + test/reference/caps-2.traps.ref.png | Bin 0 -> 1231 bytes + 7 files changed, 54 insertions(+), 3 deletions(-) + +commit 85c2a0d76ab109f2bec8f7dccab577033e6d37b0 +Author: Chris Wilson +AuthorDate: Mon Jun 3 13:56:00 2013 +0100 +Commit: Chris Wilson +CommitDate: Mon Jun 3 13:56:00 2013 +0100 + + xlib: Unlike the visual when destroying it + + Otherwise we leave dangling pointers in the visual list, leading to + memory corruption when using low bitdepth servers. + + Signed-off-by: Chris Wilson + + src/cairo-list-inline.h | 8 +++++++- + src/cairo-xlib-visual.c | 3 +++ + 2 files changed, 10 insertions(+), 1 deletion(-) + +commit 41bef0fc385381b8c6b9091ec7ca2abe04cfc147 +Author: Chris Wilson +AuthorDate: Thu May 30 20:57:04 2013 +0100 +Commit: Chris Wilson +CommitDate: Thu May 30 21:05:23 2013 +0100 + + traps: Ensure that we correctly clip when using multiple clip boxes + + We need to be more careful when trying to discard a clip to be sure that + it is truly not required. In particular, we need to not throw a way a + clip region when it has more than one box intersecting the mask. + + Reported-by: Alexander Larsson + Bugzilla: https://bugzilla.gnome.org/show_bug.cgi?id=697357 + Signed-off-by: Chris Wilson + + src/cairo-composite-rectangles.c | 7 +++++++ + src/cairo-traps-compositor.c | 32 ++++++++++++++------------------ + 2 files changed, 21 insertions(+), 18 deletions(-) + +commit 631bf299256e11a17511977f357e0353fb5615f7 +Author: Chris Wilson +AuthorDate: Sat May 11 21:37:05 2013 +0100 +Commit: Chris Wilson +CommitDate: Tue May 14 11:36:27 2013 +0100 + + directfb: Correctly chain up map-to-image/unmap to the image backend + + Fixes the infinite recursion reported by jojo. + + Signed-off-by: Chris Wilson + + src/cairo-directfb-surface.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +commit 728e58e60f89076f626329ee3f006f011783f90b +Author: Martin Robinson +AuthorDate: Thu May 9 10:45:44 2013 -0700 +Commit: Martin Robinson +CommitDate: Mon May 13 15:24:55 2013 -0700 + + gles: Switch default framebuffer destinations properly + + Make _cairo_gl_context_bind_framebuffer handle different types of GLES + surfaces properly Since, the multisampling setting of a surface never changes + in for GLES, so the first thing we do when setting the destination is to + ignore the requested multisampling setting. This simplifies all + following logic. + + src/cairo-gl-device.c | 47 +++++++++++++++++++++++++++-------------------- + 1 file changed, 27 insertions(+), 20 deletions(-) + +commit 1704292e493b3c635e115df59d07330d19b39514 +Author: Martin Robinson +AuthorDate: Tue May 7 12:01:17 2013 -0700 +Commit: Martin Robinson +CommitDate: Tue May 7 12:01:17 2013 -0700 + + gl: Fix compiler warnings in the GL backend + + src/cairo-gl-composite.c | 5 ++++- + src/cairo-gl-glyphs.c | 3 ++- + src/cairo-gl-msaa-compositor.c | 6 ++++-- + 3 files changed, 10 insertions(+), 4 deletions(-) + +commit e83943ec9a06f20572e22105f4e6e44740893eb9 +Author: Martin Robinson +AuthorDate: Mon May 6 10:56:26 2013 -0700 +Commit: Martin Robinson +CommitDate: Mon May 6 10:56:26 2013 -0700 + + gl: Bind the default framebuffer before calling gl{Read|Draw}Buffer + + Fix more fallout from separating framebuffer binding from setting the + destination. In some cases it is sufficient to call + glDrawBuffer/glReadBuffer before binding the framebuffer, but the + masking-filling-stroking test of cairo-gl-smoke-tests fails if the order + is incorrect. + + src/cairo-gl-device.c | 6 ++++-- + 1 file changed, 4 insertions(+), 2 deletions(-) + +commit 32bd6aa46dc77c497f06d2ab3bf0c2ec218d9e19 +Author: Martin Robinson +AuthorDate: Fri Apr 26 15:21:37 2013 -0700 +Commit: Martin Robinson +CommitDate: Fri Apr 26 15:22:48 2013 -0700 + + gl: Update transformation when surface size changes + + In my previous commit I mistakenly removed the transformation matrix + update when cairo_gl_surface_set_size is called. This change restores + it. + + src/cairo-gl-device.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 8da704ca7c43dda796657e86c5221736b1983122 +Author: Martin Robinson +AuthorDate: Wed Apr 10 22:25:49 2013 +0000 +Commit: Martin Robinson +CommitDate: Fri Apr 26 15:03:46 2013 -0700 + + gl: Separate framebuffer bind from destination selection + + Disentangle the action of binding the framebuffer from setting the + destination. This straightens up the code a bit and avoids some redundant + operations (such as reacquiring the context) when simply switching from + the multi-sample framebuffer to the single-sample framebuffer and vice + versa. + + src/cairo-gl-device.c | 98 +++++++++++++++++++++++++++++--------------------- + src/cairo-gl-private.h | 9 ++--- + src/cairo-gl-surface.c | 2 +- + 3 files changed, 63 insertions(+), 46 deletions(-) + +commit 793f8223d4a71f3fc7e74722fb60659e7100a39d +Author: egag +AuthorDate: Wed Apr 24 12:07:47 2013 +0200 +Commit: Chris Wilson +CommitDate: Thu Apr 25 09:03:02 2013 +0100 + + xlib: Aquire display before using it in DEBUG message. + + src/cairo-xlib-surface.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +commit 498421bec90f68f3d7219b145860a71fd39f0c64 +Author: Henry Song +AuthorDate: Wed Apr 17 10:23:27 2013 -0700 +Commit: Martin Robinson +CommitDate: Wed Apr 17 10:27:58 2013 -0700 + + gl/msaa: Resolve multisampling on surface flush + + When flushing a surface, we must resolve multisampling for desktop GL. + This allows use of the original surface texture in any following raw GL + operations. This fixes accelerated canvas with WebKitGTK+ using the MSAA + compositor. + + src/cairo-gl-operand.c | 39 +++------------------------------------ + src/cairo-gl-private.h | 3 +++ + src/cairo-gl-surface.c | 35 +++++++++++++++++++++++++++++++++++ + 3 files changed, 41 insertions(+), 36 deletions(-) + +commit 2dd2c826a5b367d32cf2d48ed69754795990c5db +Author: Chris Wilson +AuthorDate: Tue Apr 16 10:58:56 2013 +0100 +Commit: Chris Wilson +CommitDate: Tue Apr 16 11:07:03 2013 +0100 + + png: Avoid marking the surface as in error after a png warning + + It turns out that libpng will continue to load an image after throwing a + warning, and that libpng16 now throws warnings for images that libpng15 + and earlier loaded without error. As we were happily loading those + images into cairo surfaces before, we are therefore being overzealous + in throwing an error now - so just squelch the warning. + + Signed-off-by: Chris Wilson + + src/cairo-png.c | 14 +++++++------- + 1 file changed, 7 insertions(+), 7 deletions(-) + +commit a64ce09715162c57d6e4b6a460d426af1d443cdc +Author: Chris Wilson +AuthorDate: Sat Apr 6 09:09:23 2013 +0100 +Commit: Chris Wilson +CommitDate: Sat Apr 6 09:09:23 2013 +0100 + + xlib: Trim uploads for surfaces extended by PAD + + Signed-off-by: Chris Wilson + + src/cairo-xlib-source.c | 3 +++ + 1 file changed, 3 insertions(+) + +commit 04b9d5d9b1ab8544fc0918d8ced90dc70641e727 +Author: Chris Wilson +AuthorDate: Sat Apr 6 09:07:24 2013 +0100 +Commit: Chris Wilson +CommitDate: Sat Apr 6 09:07:24 2013 +0100 + + xlib: Wrap errors generating sources in an error surface + + Once upon a time the wrapping was provided by the caller, but the + current requirement is that the error is propagated back as an error + surface. + + Bugzilla: http://bugs.freedesktop.org/show_bug.cgi?id=63196 + Signed-off-by: Chris Wilson + + src/cairo-xlib-source.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +commit f6efecdfefa161c68fc5bf193a6487fc1a5047d5 +Author: Martin Robinson +AuthorDate: Fri Mar 29 11:09:48 2013 -0700 +Commit: Martin Robinson +CommitDate: Thu Apr 4 12:04:50 2013 -0700 + + boilerplate/gl: Disable thread awareness + + This dramatically speeds up testing on NVidia and actually makes it + possible to run traces within a reasonable amount of time. + + cairo-perf-trace results for: + NVIDIA Corporation GeForce GTS 250/PCIe/SSE2 3.3.0 NVIDIA 310.14 + + Before: + test min(s) median(s) stddev. count + gvim 30.924 31.251 0.72% 5/6 + firefox-fishbowl 168.751 201.017 12.46% 8/8 + (exited early) + + After: + test min(s) median(s) stddev. count + gvim 1.294 1.325 1.79% 6/6 + firefox-fishbowl 18.540 19.104 1.54% 6/6 + + boilerplate/cairo-boilerplate-egl.c | 2 ++ + boilerplate/cairo-boilerplate-glx.c | 3 +++ + 2 files changed, 5 insertions(+) + +commit b00b9e82ab728eaf3b87dd1113387d8e8df0d7e3 +Author: Martin Robinson +AuthorDate: Thu Apr 4 12:03:19 2013 -0700 +Commit: Martin Robinson +CommitDate: Thu Apr 4 12:04:50 2013 -0700 + + boilerplate: Add a mode for running threaded perf tests + + This is useful because the GL backend runs much faster on some drivers + when thread awareness is disabled. + + boilerplate/cairo-boilerplate.h | 7 ++++++- + 1 file changed, 6 insertions(+), 1 deletion(-) + +commit e66e9ac12e3e11af76f14e8de3cfee72d4299864 +Author: Marc-André Lureau +AuthorDate: Tue Apr 2 00:32:56 2013 +0200 +Commit: Chris Wilson +CommitDate: Tue Apr 2 08:39:05 2013 +0100 + + win32: fix corrupted drawing + + Fix src bitmap coordinates, which origin is bottom-left. This is + apparently a bug in StretchDIBits(), according to some comments on + MSDN API documentation. + + The backend used to have this coordinate change in the past: + + if (!StretchDIBits (dst->dc, + /* dst x,y,w,h */ + dst_r.x, dst_r.y + dst_r.height - 1, + dst_r.width, - (int) dst_r.height, + /* src x,y,w,h */ + src_r.x, src_extents.height - src_r.y + 1, + src_r.width, - (int) src_r.height, + src_image->data, + &bi, + DIB_RGB_COLORS, + SRCCOPY)) + + https://bugs.freedesktop.org/show_bug.cgi?id=61876 + + src/win32/cairo-win32-gdi-compositor.c | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +commit 0446fae26d35dc4e31aadc498f0f9b48b21d2c45 +Author: Chris Wilson +AuthorDate: Sat Mar 23 11:19:14 2013 +0000 +Commit: Chris Wilson +CommitDate: Tue Apr 2 08:39:05 2013 +0100 + + perf: Iteratively prune outliers + + Signed-off-by: Chris Wilson + + perf/cairo-stats.c | 41 +++++++++++++++++++++++------------------ + 1 file changed, 23 insertions(+), 18 deletions(-) + +commit fdec6b37596d8b064ff082326d7189daa8208052 +Author: Michael Hutchinson +AuthorDate: Fri Mar 29 02:37:33 2013 +0100 +Commit: Benjamin Otte +CommitDate: Fri Mar 29 02:40:13 2013 +0100 + + quartz: Don't release memory we don't own + + This was causing crashes due to double frees. + + https://bugs.freedesktop.org/show_bug.cgi?id=62885 + + Signed-off-by: Benjamin Otte + + src/cairo-quartz-surface.c | 1 - + 1 file changed, 1 deletion(-) + +commit 9e0748e223cfb8c5557c73f3ab5068ec1323e7c2 +Author: Adrian Johnson +AuthorDate: Wed Mar 27 08:08:32 2013 +1030 +Commit: Adrian Johnson +CommitDate: Wed Mar 27 08:08:32 2013 +1030 + + pdf: fix typo in bbox check + + http://lists.cairographics.org/archives/cairo/2013-March/024186.html + + src/cairo-pdf-surface.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 59ccc3d72e839bd897111322765bb13696a97ef5 +Author: Nicola Fontana +AuthorDate: Fri Mar 1 14:16:45 2013 +0100 +Commit: Uli Schlachter +CommitDate: Sat Mar 23 19:47:54 2013 +0100 + + gobject: Add wrapper around cairo_matrix_t + + Reviewed-By: Benjamin Otte + Signed-off-by: Uli Schlachter + + util/cairo-gobject/cairo-gobject-structs.c | 4 +++- + util/cairo-gobject/cairo-gobject.h | 4 ++++ + 2 files changed, 7 insertions(+), 1 deletion(-) + +commit be5eabb66a475720020211a6d37bfeb75fc3242c +Author: Uli Schlachter +AuthorDate: Fri Mar 22 18:19:00 2013 +0100 +Commit: Uli Schlachter +CommitDate: Fri Mar 22 18:19:00 2013 +0100 + + xcb: Clear temporary replay image in recording playback + + This gets rid of random noise that we got from the X11 server due to + uninitialized memory. + + Fixes: pdf-surface-source, ps-surface-source, svg-surface-source + + Signed-off-by: Uli Schlachter + + src/cairo-xcb-surface-render.c | 9 +++++---- + 1 file changed, 5 insertions(+), 4 deletions(-) + +commit 41ef69a98c67a2cb8b64e8ef3bb986d57a0a2437 +Author: Uli Schlachter +AuthorDate: Fri Mar 22 14:14:29 2013 +0100 +Commit: Uli Schlachter +CommitDate: Fri Mar 22 14:14:29 2013 +0100 + + Fix "make check" standalone header check + + This fixes the following error: + + ./cairo-fixed-private.h: In function ‘_slow_segment_intersection’: + ./cairo-fixed-private.h:374:9: error: ‘FALSE’ undeclared (first use in this function) + ./cairo-fixed-private.h:374:9: note: each undeclared identifier is reported only once for each function it appears in + ./cairo-fixed-private.h:386:12: error: ‘TRUE’ undeclared (first use in this function) + + Signed-off-by: Uli Schlachter + + src/cairo-fixed-private.h | 1 + + 1 file changed, 1 insertion(+) + +commit b7c06fff1f597ba74fa6618766ec297d3a4bf880 +Author: Uli Schlachter +AuthorDate: Fri Mar 22 14:04:44 2013 +0100 +Commit: Uli Schlachter +CommitDate: Fri Mar 22 14:04:44 2013 +0100 + + boilerplate: rename xcb-render-0.0 to xcb-render-0_0 + + The test suite uses dots to separate the backend name from the content type. + Thus, the backend name must not contain any dots. + + The xlib backend already calls its RENDER 0.0 target xlib-render-0_0 for this + reason. This commit makes the xcb backend match this. + + Reported-by: Darxus + Signed-off-by: Uli Schlachter + + boilerplate/cairo-boilerplate-xcb.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +commit caf50c07e225ee3a3e149234601e7305b1437736 +Author: Uli Schlachter +AuthorDate: Fri Mar 22 13:58:04 2013 +0100 +Commit: Uli Schlachter +CommitDate: Fri Mar 22 14:02:09 2013 +0100 + + test: Fix handling of dots in CAIRO_TEST_TARGET + + Before this, the following happened: + + $ CAIRO_TEST_TARGET=image,xcb-render-0.0 make test + Cannot find target 'image'. + Known targets: image, [...] + + The reason for this is that _cairo_boilerplate_target_matches_name() doesn't get + a null-terminated string, but instead has a pointer to the end of the string. + However, strpbrk() expects a null-terminated argument and thus could return a + result which points past the end of the input. + + This commit fixes exactly this. + + Reported-by: Darxus + Signed-off-by: Uli Schlachter + + boilerplate/cairo-boilerplate.c | 2 ++ + 1 file changed, 2 insertions(+) + +commit 13bd8d09b44e50649f6fc4d58d036bc32c1d5c5b +Author: Behdad Esfahbod +AuthorDate: Thu Mar 21 16:48:43 2013 -0400 +Commit: Behdad Esfahbod +CommitDate: Thu Mar 21 16:49:02 2013 -0400 + + [ft] I meant fabs(), not abs() + + src/cairo-ft-font.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit ed6a293e3dd2e81c8e159bf685cce6ffbcd7c81c +Author: Henry Song +AuthorDate: Wed Mar 20 15:10:34 2013 +0000 +Commit: Martin Robinson +CommitDate: Wed Mar 20 08:40:58 2013 -0700 + + gl: Fix typo in gles2 shader cache lookup + + When comparing shader cache entries, it's important that we actually + compare the variable type hash. + + src/cairo-gl-shaders.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit ff233fd706e62edf267bee66113e2cb35183bcd9 +Author: Behdad Esfahbod +AuthorDate: Mon Mar 18 14:17:29 2013 -0400 +Commit: Behdad Esfahbod +CommitDate: Mon Mar 18 14:18:13 2013 -0400 + + [test] Set font size + + Previously this test was working because we were not scaling bitmap + fonts. We do now, so adjust test. + + test/bitmap-font.c | 1 + + 1 file changed, 1 insertion(+) + +commit be347acd5a198b4280f2699a1abfca241e7e610b +Author: Matt Sealey +AuthorDate: Mon Mar 11 10:24:52 2013 -0500 +Commit: Uli Schlachter +CommitDate: Mon Mar 18 14:02:02 2013 +0100 + + gitignore: negate gitignore for static pkgconfig files + + Commit 781f253 adds a rule cairo-*.*.* to .gitignore in the root dir. + Unfortunately this matches several src/cairo-*.pc.in files in the + src directory. + + The build system requires these files to be present, but the rule is + allowing them to be ignored. For example, when extracting a cgit + snapshot tarball and checking it into another git repository, these + files get left behind. Any accidental changes to these files will go + unnoticed by a 'git status' (possibly creating bad installs) and + any intentional changes could not be committed (git commit -a will + miss them, and every one will need to be forced). This is not really + desirable. + + We don't want to unignore *.pc.in here since there are many, many + autogenerated files with this name, and the cairo-*.*.* rule is in + general quite useful and doesn't warrant modification (although it + could be made a little more specific), so we just make these 4 files + a special case and negate the match with full filenames in src/. + + Signed-off-by: Matt Sealey + Signed-off-by: Uli Schlachter + + src/.gitignore | 4 ++++ + 1 file changed, 4 insertions(+) + +commit 0e999edff869bc08522a6a56c69efa9b5e1c33b5 +Author: Matthew Fischer +AuthorDate: Sat Mar 9 15:42:59 2013 -0700 +Commit: Uli Schlachter +CommitDate: Mon Mar 18 13:59:37 2013 +0100 + + Adding a simple usage statement to cairo-perf-chart + + Signed-off-by: Uli Schlachter + + perf/cairo-perf-chart.c | 29 +++++++++++++++++++++++++++++ + 1 file changed, 29 insertions(+) + +commit 592f5944239debfa3dacc410f675261947156baf +Author: Uli Schlachter +AuthorDate: Fri Mar 15 16:53:28 2013 +0100 +Commit: Uli Schlachter +CommitDate: Fri Mar 15 16:56:42 2013 +0100 + + test: Fix CAIRO_REF_DIR + + Ever since the test output was moved from test/ to test/output/, using + CAIRO_REF_DIR to make the test suite succeed no longer works. The test suite was + looking for the wrong file names. + + This patch makes this work again. However, I am not sure that this really is the + correct fix. It just seems to work. :-) + + Reported-by: Darxus + Signed-off-by: Uli Schlachter + + test/README | 2 +- + test/cairo-test.c | 5 ++--- + 2 files changed, 3 insertions(+), 4 deletions(-) + +commit c141615a7fa632a2435b49f3949ed1fc9962af1f +Author: Marek Kasik +AuthorDate: Fri Mar 15 14:46:19 2013 +0100 +Commit: Chris Wilson +CommitDate: Fri Mar 15 14:01:53 2013 +0000 + + cff-subset: Fix allocation of width arrays + + fd_default_width and fd_nominal_width + are arrays of doubles not arrays of ints. + + src/cairo-cff-subset.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +commit 01a8bf01c6508a4fea8d40371c3049e7a2f7908a +Author: Chris Wilson +AuthorDate: Fri Mar 15 09:08:00 2013 +0000 +Commit: Chris Wilson +CommitDate: Fri Mar 15 09:11:28 2013 +0000 + + mempool: Reduce an assert into an error return for get_buddy() + + If we ask for a buddy that is outside of our allocation that is an + error that should not happen with a power-of-two allocated zone... + However, since it has been seen in the wild, we can safely return that + there is no buddy rather than die in a too-late assert. + + Reported-by: Anton Eliasson + Signed-off-by: Chris Wilson + + src/cairo-mempool.c | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +commit 2c2dccf5a4d298c866f7c0faed2e10c65252c168 +Author: Martin Robinson +AuthorDate: Tue Mar 12 15:17:19 2013 -0700 +Commit: Martin Robinson +CommitDate: Thu Mar 14 10:32:43 2013 -0700 + + stroke: Use round-joins near inflection points of splines + + Similar to b7bd5ae4f3da44131261711bb236cd7aa24a3ae3, but applied to the + fallback stroke shaper. + + src/cairo-path-stroke.c | 36 ++++++++++++++++++++++++++++++++++++ + 1 file changed, 36 insertions(+) + +commit aadece05fb1cf80f0a1138368f4664e878a59204 +Author: Martin Robinson +AuthorDate: Tue Mar 12 15:16:01 2013 -0700 +Commit: Martin Robinson +CommitDate: Thu Mar 14 10:32:43 2013 -0700 + + stroke: Fix large line widths for fallback stroke shaper + + Fix the test case line-width-tolerance for the fallback stroke shaper. + Instead of drawing quads between spline points, draw triangle based on + the actual spline edges. This roughly follows the approach of the + tristrip and polygonal shapers. + + src/cairo-fixed-private.h | 34 ++++++++++++++++++ + src/cairo-path-stroke.c | 90 ++++++++++++++++++++++++++++++++++++++++++----- + 2 files changed, 116 insertions(+), 8 deletions(-) + +commit c60e23feb16a8745eaa6d213a89f61ded5707731 +Author: Martin Robinson +AuthorDate: Wed Mar 13 17:19:19 2013 -0700 +Commit: Martin Robinson +CommitDate: Thu Mar 14 09:44:35 2013 -0700 + + path: Fix a bug in line intersection + + Before the intersection code was not taking into account that both + quotients are required to be in the range (0,1) for the segments to + intersect or handling the case of negative numerators and denominators. + + src/cairo-path-fixed.c | 39 +++++++++++++++++++++++++++------------ + 1 file changed, 27 insertions(+), 12 deletions(-) + +commit 5ee136b2c067c92e85f04ba0c84966f7760f4556 +Author: Martin Robinson +AuthorDate: Fri Mar 8 10:29:55 2013 -0800 +Commit: Martin Robinson +CommitDate: Fri Mar 8 16:00:34 2013 -0800 + + gl: Setup operands when the vertex size changes + + Previously _cairo_gl_composite_setup_vbo was overwriting the old context + vertex_size, while _cairo_gl_context_setup_operand was relying on it to + determine if the vertex size changed. Instead of a fragile ordering of + statements, pass whether the vertex size changed as an argument to enforce + the calling order via method parameters. + + src/cairo-gl-composite.c | 29 +++++++++++++++++------------ + 1 file changed, 17 insertions(+), 12 deletions(-) + +commit f50ced2e7b4b2f4601dc9b9edf1a861401c302e4 +Author: Chris Wilson +AuthorDate: Fri Mar 8 14:25:26 2013 +0000 +Commit: Chris Wilson +CommitDate: Fri Mar 8 14:25:26 2013 +0000 + + gl: Fix typo s/bool/cairo_bool_t/ + + One quickly gets used to having stdbool.h available. + + src/cairo-egl-context.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 524e6fd3e82d952dfa850b832238a1f4f9ccb8bb +Author: Henry Song +AuthorDate: Thu Mar 7 16:33:27 2013 +0000 +Commit: Chris Wilson +CommitDate: Fri Mar 8 11:43:39 2013 +0000 + + gl: Export query for EGLContext and EGLDisplay from device + + Similar to glx, add query for the EGLContext and EGLDisplay to egl-based + cairo devices. + + src/cairo-egl-context.c | 33 +++++++++++++++++++++++++++++++++ + src/cairo-gl.h | 6 ++++++ + 2 files changed, 39 insertions(+) + +commit a8f1b456db744e33a10b2301df03528787e5b1ca +Author: Behdad Esfahbod +AuthorDate: Fri Mar 8 06:21:59 2013 -0500 +Commit: Behdad Esfahbod +CommitDate: Fri Mar 8 06:22:59 2013 -0500 + + [FT] Prefer downscaling bitmap glyphs to upscaling + + Say, you have bitmap strikes for sizes 50ppem and 100ppem. + To render at 60ppem, it's much better to downscale the 100ppem + bitmap than upscale 50ppem one. Prefer downscaling. + + src/cairo-ft-font.c | 15 ++++++++++++--- + 1 file changed, 12 insertions(+), 3 deletions(-) + +commit 4f00d2344c84a1017a1e7d76ccb2fa552c80a969 +Author: Jana Saout +AuthorDate: Fri Mar 1 20:10:28 2013 +1030 +Commit: Adrian Johnson +CommitDate: Fri Mar 1 20:10:28 2013 +1030 + + pdf: Fix crash + + Bug 61451 + + src/cairo-pdf-surface.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 7658eced9a45f42033c2b0b45cee70f6edb6ff20 +Author: Chris Wilson +AuthorDate: Sun Feb 24 17:07:54 2013 +0000 +Commit: Chris Wilson +CommitDate: Sun Feb 24 17:07:54 2013 +0000 + + xlib: Fix invocation of XRenderFindFormat() + + The 'count' parameter is an indication to libXrender of the number of + matches to skip before reporting (rather than a limit on the number to + report). As we only want the first match, always pass 0. + + Signed-off-by: Chris Wilson + + src/cairo-xlib-display.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 446a3dc5c0298e35b9a1e38460bc3804ab6e01ce +Author: Adrian Johnson +AuthorDate: Tue Feb 19 20:59:16 2013 +1030 +Commit: Adrian Johnson +CommitDate: Tue Feb 19 20:59:16 2013 +1030 + + pdf: add missing 'endobj' to shading dict + + https://bugs.launchpad.net/ubuntu/+source/libcairo/+bug/1051939 + + src/cairo-pdf-surface.c | 6 ++++-- + 1 file changed, 4 insertions(+), 2 deletions(-) + +commit e7e1ac235ff94d184d88c8c206b81343822f6a4e +Author: Chris Wilson +AuthorDate: Tue Feb 19 09:54:24 2013 +0000 +Commit: Chris Wilson +CommitDate: Tue Feb 19 09:54:24 2013 +0000 + + image: Compare against the true size of the embedded buffer + + When querying whether the run is small enough to fit inside the + pre-allocated temporary buffer, we need to avoid comparing against + sizeof(buf) as buf is a variable length array and so sizeof() is + meaningless. + + Reported-by: Edward Zimmermann + Signed-off-by: Chris Wilson + + src/cairo-image-compositor.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit fb1abbc4bc25c541cfb1084012a6a185c541c340 +Author: Chris Wilson +AuthorDate: Fri Feb 15 14:04:21 2013 +0000 +Commit: Chris Wilson +CommitDate: Fri Feb 15 14:08:11 2013 +0000 + + win32: Free the fallback upon finish + + Zozó Teki pointed out that we leak the fallback surface upon finish in + case it was active at the time as the preceding flush would only clear + the damage and not decouple the fallback surface. + + Signed-off-by: Chris Wilson + + src/win32/cairo-win32-display-surface.c | 3 +++ + 1 file changed, 3 insertions(+) + +commit 41e646e019911f8e566e4f9963036117750f862f +Author: Henry Song +AuthorDate: Tue Jan 29 17:30:25 2013 +0000 +Commit: Chris Wilson +CommitDate: Fri Feb 15 12:00:38 2013 +0000 + + gl: disable GL_DITHER + + GL_DITHER is enabled by default by spec. Leaving GL_DITHER enabled + causes color pixel mismatch on some drivers by comparing uploading then + readPixels and original image. + + src/cairo-gl-device.c | 2 ++ + 1 file changed, 2 insertions(+) + +commit 02b467a28703a0bd68b92fb26f7905bf6a25bf7d +Author: Chris Wilson +AuthorDate: Tue Feb 12 10:46:42 2013 +0000 +Commit: Chris Wilson +CommitDate: Tue Feb 12 10:46:42 2013 +0000 + + test: Exercise replaying a recording surface through a flip matrix + + test/Makefile.sources | 1 + + test/recordflip.c | 493 +++++++++++++++++++++ + test/reference/recordflip-fill-alpha.ref.png | Bin 0 -> 2790 bytes + .../recordflip-paint-alpha-clip-mask.ref.png | Bin 0 -> 340 bytes + test/reference/recordflip-paint-alpha-clip.ref.png | Bin 0 -> 291 bytes + .../recordflip-paint-alpha-solid-clip.ref.png | Bin 0 -> 280 bytes + test/reference/recordflip-paint-alpha.ref.png | Bin 0 -> 242 bytes + test/reference/recordflip-paint.ref.png | Bin 0 -> 93 bytes + test/reference/recordflip-select-font-face.ref.png | Bin 0 -> 2229 bytes + .../reference/recordflip-self-intersecting.ref.png | Bin 0 -> 168 bytes + test/reference/recordflip-text-transform.ref.png | Bin 0 -> 5606 bytes + 11 files changed, 494 insertions(+) + +commit a09b7c79278465ee1ad916697e0153eae640d8df +Author: Chris Wilson +AuthorDate: Tue Feb 12 10:25:03 2013 +0000 +Commit: Chris Wilson +CommitDate: Tue Feb 12 10:27:58 2013 +0000 + + path: Fix bbox computation for negative scale factors + + The fast path for transforming a path by a simple scale factor, forgot + to fix up the orientation of the box if that scale factor was negative. + + Reported-by: Edward Zimmermann + Signed-off-by: Chris Wilson + + src/cairo-path-fixed.c | 11 +++++++++++ + 1 file changed, 11 insertions(+) + +commit be1561dadece6e947a3ca78d1124197b4278ce96 +Author: Chris Wilson +AuthorDate: Tue Feb 12 10:24:08 2013 +0000 +Commit: Chris Wilson +CommitDate: Tue Feb 12 10:24:08 2013 +0000 + + recording: Avoid indirection through indices array if not reduced + + If we don't discard any elements, then the index array is simply a 1:1 + mapping of the element array, and we may as well bypass it. + + Signed-off-by: Chris Wilson + + src/cairo-recording-surface.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 14237f11439831377b59e8ea5717de5dd3e19e73 +Author: Chris Wilson +AuthorDate: Tue Feb 12 10:11:12 2013 +0000 +Commit: Chris Wilson +CommitDate: Tue Feb 12 10:11:12 2013 +0000 + + spans: Mark the surface as cleared in preparing for recording surface playback + + Signed-off-by: Chris Wilson + + src/cairo-spans-compositor.c | 7 ++++++- + 1 file changed, 6 insertions(+), 1 deletion(-) + +commit 7f3cca458a7546f913533f693b581325228aba4e +Author: Chris Wilson +AuthorDate: Sun Feb 10 14:18:47 2013 +0000 +Commit: Chris Wilson +CommitDate: Sun Feb 10 14:18:47 2013 +0000 + + Post release version bump to 1.12.15 + + cairo-version.h | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 0dac37c41473deafa4a2f154187c5c3d08b07c91 +Author: Chris Wilson +AuthorDate: Sun Feb 10 13:38:28 2013 +0000 +Commit: Chris Wilson +CommitDate: Sun Feb 10 13:38:28 2013 +0000 + + 1.12.14 release + + NEWS | 32 ++++++++++++++++++++++++++++++++ + cairo-version.h | 2 +- + 2 files changed, 33 insertions(+), 1 deletion(-) + +commit 93ddc3a28308bcd9e062178ceb453f26e9228fc4 +Author: Chris Wilson +AuthorDate: Sun Feb 10 13:13:31 2013 +0000 +Commit: Chris Wilson +CommitDate: Sun Feb 10 13:13:31 2013 +0000 + + tests: Update reference images after adjustments to polygon line clipping + + Signed-off-by: Chris Wilson + + test/reference/clip-nesting.rgb24.ref.png | Bin 937 -> 936 bytes + test/reference/record-fill-alpha.argb32.ref.png | Bin 2736 -> 0 bytes + test/reference/record-fill-alpha.ref.png | Bin 2839 -> 2812 bytes + test/reference/record-fill-alpha.rgb24.ref.png | Bin 2736 -> 0 bytes + test/reference/record1414x-fill-alpha.argb32.ref.png | Bin 4129 -> 0 bytes + test/reference/record1414x-fill-alpha.rgb24.ref.png | Bin 4129 -> 0 bytes + test/reference/record2x-fill-alpha.argb32.ref.png | Bin 5715 -> 0 bytes + test/reference/record2x-fill-alpha.rgb24.ref.png | Bin 5715 -> 0 bytes + test/reference/record90-fill-alpha.argb32.ref.png | Bin 2651 -> 0 bytes + test/reference/record90-fill-alpha.rgb24.ref.png | Bin 2651 -> 0 bytes + test/reference/rel-path.rgb24.ref.png | Bin 216 -> 216 bytes + 11 files changed, 0 insertions(+), 0 deletions(-) + +commit d4651676e1496f0354acb0ef045e8b65601edf6d +Author: Chris Wilson +AuthorDate: Fri Feb 8 22:17:13 2013 +0000 +Commit: Chris Wilson +CommitDate: Fri Feb 8 22:17:13 2013 +0000 + + win32: Clear the similar-image before returning to the user + + Our userspace API mandates that surfaces created for the user are + cleared before they are returned. Make it so for the win32 similar image + constructor. + + Reported-by: Michael Henning + Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=60519 + Signed-off-by: Chris Wilson + + src/win32/cairo-win32-display-surface.c | 10 +++++++++- + 1 file changed, 9 insertions(+), 1 deletion(-) + +commit 2d7ac9e737f37daf8490c27e6a04c65bba642645 +Author: Chris Wilson +AuthorDate: Fri Feb 8 15:19:14 2013 +0000 +Commit: Chris Wilson +CommitDate: Fri Feb 8 15:20:41 2013 +0000 + + xlib: Only apply the dst offset to the glyph strings once + + The elts offset is a delta from the previous glyph coordinate. So by + subtracting the dst origin everytime, we were accumulating a glyph + position error. Instead we just want to offset the starting coordinate + and then always use relative positions. + + Reported-by: Theo Veenker + Signed-off-by: Chris Wilson + + src/cairo-xlib-render-compositor.c | 12 ++++++------ + 1 file changed, 6 insertions(+), 6 deletions(-) + +commit ea16302e45ced56e6f12b8520e9f530e1ffc68c4 +Author: Chris Wilson +AuthorDate: Fri Feb 8 13:22:01 2013 +0000 +Commit: Chris Wilson +CommitDate: Fri Feb 8 13:22:01 2013 +0000 + + polygon: Avoid computing the unused intersection coordinates + + If we only ignore the result of the computed boundary intersection, + because the edge is inside that boundary, then we can simply forgo the + calculation. + + Signed-off-by: Chris Wilson + + src/cairo-polygon.c | 13 ++++++++----- + 1 file changed, 8 insertions(+), 5 deletions(-) + +commit 8cfbdf2f02ba01d5638a91c9f3f7fc228b402caa +Author: Chris Wilson +AuthorDate: Fri Feb 8 13:10:25 2013 +0000 +Commit: Chris Wilson +CommitDate: Fri Feb 8 13:13:30 2013 +0000 + + polygon: Only rely on the computed boundary intersections for crossing edges + + If we need to extrapolate the edge to the boundary, then we run the risk + of an overflow for an immaterial result. So if the edge does not cross + the boundary, we can simply use the corresponding end-point and not emit + the boundary segment. + + Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=60489 + Signed-off-by: Chris Wilson + + src/cairo-polygon.c | 35 +++++++++++++++++++++++++---------- + 1 file changed, 25 insertions(+), 10 deletions(-) + +commit 607a15db5df04d10e5be6d06599ec4e9d98d2446 +Author: Chris Wilson +AuthorDate: Thu Feb 7 21:40:30 2013 +0000 +Commit: Chris Wilson +CommitDate: Thu Feb 7 21:40:30 2013 +0000 + + gl: Mark up _cairo_gl_composite_set_operator* as private + + Add the cairo_private markup to hide the PLT entries and to keep make + check happy. + + Signed-off-by: Chris Wilson + + src/cairo-gl-private.h | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +commit 562cc8227feb99b75fb53df7800df66887be129d +Author: Ravi Nanjundappa +AuthorDate: Mon Feb 6 10:56:55 2012 +0530 +Commit: Martin Robinson +CommitDate: Thu Feb 7 13:25:33 2013 -0800 + + gl/spans: Handle SOURCE operations with opaque sources. + + SOURCE operations with an opaque are equivalent to OVER. + This can prevent us from falling back in certain cases. + + Signed-off-by: Chris Wilson + + src/cairo-gl-spans-compositor.c | 7 +++++++ + 1 file changed, 7 insertions(+) + +commit 4b6b28b5e8b9020c72a60b01ff3340a70dd59478 +Author: Chris Wilson +AuthorDate: Thu Feb 7 10:00:47 2013 +0000 +Commit: Chris Wilson +CommitDate: Thu Feb 7 10:02:31 2013 +0000 + + win32: Fix is_win98() + + Since the translation into a separate function, its condition was + reversed: that is almost everybody thought they were on a win98 machine + and so had no working AlphaBlend(). + + Signed-off-by: Chris Wilson + + src/win32/cairo-win32-device.c | 6 +++--- + 1 file changed, 3 insertions(+), 3 deletions(-) + +commit 4b54c09c056e5dee65f2cf4e87835eb9127e5b1c +Author: Chris Wilson +AuthorDate: Wed Feb 6 22:16:12 2013 +0000 +Commit: Chris Wilson +CommitDate: Thu Feb 7 10:02:31 2013 +0000 + + image: Substitute OVER spans for SOURCE with an opaque pattern + + Based on an idea from Ravi Nanjundappa + + Signed-off-by: Chris Wilson + + src/cairo-image-compositor.c | 12 ++++++++++-- + 1 file changed, 10 insertions(+), 2 deletions(-) + +commit 400ea9c2905461067df9e6d27c2e961d47f04676 +Author: Martin Robinson +AuthorDate: Wed Feb 6 12:53:14 2013 -0800 +Commit: Martin Robinson +CommitDate: Wed Feb 6 12:53:14 2013 -0800 + + gl/msaa: Properly fall back when using CLEAR operator + + There are some situations that the MSAA compositor doesn't support using + the CLEAR operator. We should properly fall back in those cases. + + src/cairo-gl-msaa-compositor.c | 7 +++++++ + 1 file changed, 7 insertions(+) + +commit 7bee1962f601009c507f987838de1a9dec3d9334 +Author: Adrian Johnson +AuthorDate: Tue Feb 5 21:57:52 2013 +1030 +Commit: Adrian Johnson +CommitDate: Tue Feb 5 21:57:52 2013 +1030 + + type1-subset: in latin subsets replace glyph names with standard names + + When using WinAnsiEncoding in PDF the glyphs are keyed by glyph + name. We need to ensure the correct names are used and can't assume + the glyph names in the font are correct. + + Bug 60248 + + src/cairo-type1-subset.c | 19 +++++++++++++++++-- + 1 file changed, 17 insertions(+), 2 deletions(-) + +commit 4cb181d985adbbf79e80ff695adc908810b41544 +Author: Henry Song +AuthorDate: Tue Jan 29 17:53:38 2013 +0000 +Commit: Chris Wilson +CommitDate: Mon Feb 4 10:49:37 2013 +0000 + + gl: do not force flush everytime uploading a glyph image to glyph cache + + In normal cases, we want to flush pending operations reading from the + texture before modifying its contents. However during uploading of + glyphs into the glyph cache, we repeatedly modify the texture as we + construct the vbo (whilst referencing it for that operation). We track + unused areas in the glyph cache so that if we run out of space, we can + explicitly flush the pending glyphs and start afresh and avoid having to + flush the operation in common case. + + src/cairo-gl-glyphs.c | 2 +- + src/cairo-gl-private.h | 3 ++- + src/cairo-gl-spans-compositor.c | 2 +- + src/cairo-gl-surface-legacy.c | 7 ++++--- + src/cairo-gl-surface.c | 16 ++++++++++------ + src/cairo-gl-traps-compositor.c | 9 ++++++--- + 6 files changed, 24 insertions(+), 15 deletions(-) + +commit 260c16331a2c7bedbcf35d7f2cbab2f1f4098c87 +Author: Chris Wilson +AuthorDate: Mon Feb 4 10:43:13 2013 +0000 +Commit: Chris Wilson +CommitDate: Mon Feb 4 10:49:36 2013 +0000 + + gl: Include the vertex ident in the shader cache hash + + As we may specialise the vertex program depending upon details of the + fragment shader, and may have more than one program for the same + combination of fragment sources, we need to include the vertex tag in + the cache entry. + + Signed-off-by: Chris Wilson + + src/cairo-gl-shaders.c | 49 ++++++++++++++++++++++++++++++------------------- + 1 file changed, 30 insertions(+), 19 deletions(-) + +commit 05ad89f91241b386f72f5b9bac3ebe62faff1d1b +Author: Chris Wilson +AuthorDate: Sun Feb 3 16:51:35 2013 +0000 +Commit: Chris Wilson +CommitDate: Mon Feb 4 09:57:53 2013 +0000 + + gl: Replace manual vertex transformation with VS computation of texcoords + + Not only is our point transformation code is quite slow (well at least + compared to a real GPU), but by deriving the texture coordinates from + the vertex position we can elide the multiple arrays that we need to + construct and pass to GL - improving performance by eliminating CPU + overhead from needless transforms and data shovelling. + + However, not all vertex emission is suitable. For instance, for glyphs + we need to emit discontiguous texture coordinates for each glyph, but + span generation is suitable - which fortuitously also has the largest + vertex density and so benefits the most. + + The only real concern is for hardware without true vertex shader support + (e.g. i915) but there we are already invoking the VS to transform the + vertex into the viewport. We would need to eliminate that transform as + well as manually compute the texture coordinates in order to eliminate + the vertex recomputation pass. + + Signed-off-by: Chris Wilson + + src/cairo-gl-composite.c | 70 ++++++++++++++++++++++++++++++----------- + src/cairo-gl-msaa-compositor.c | 21 ++++++++----- + src/cairo-gl-operand.c | 67 +++++++++++++++++++++++++++++---------- + src/cairo-gl-private.h | 24 ++++++++------ + src/cairo-gl-shaders.c | 31 +++++++++++++----- + src/cairo-gl-source.c | 3 +- + src/cairo-gl-spans-compositor.c | 6 ++-- + src/cairo-gl-traps-compositor.c | 3 +- + 8 files changed, 162 insertions(+), 63 deletions(-) + +commit d15a71f128c73ce1da19e6ff5a4e2fe044b58749 +Author: Chris Wilson +AuthorDate: Sun Feb 3 12:51:13 2013 +0000 +Commit: Chris Wilson +CommitDate: Sun Feb 3 12:51:13 2013 +0000 + + qt: Update for fallback compositor + + We now need to explicitly manage fallbacks and to provide an + implementation for map-to-image/unmap-image. + + src/cairo-qt-surface.cpp | 210 +++++++++++++++++++++++++++++++---------------- + 1 file changed, 140 insertions(+), 70 deletions(-) + +commit 10110d58cee179cded8e4c4ff8a8d02c477585bd +Author: Chris Wilson +AuthorDate: Sat Feb 2 08:47:26 2013 +0000 +Commit: Chris Wilson +CommitDate: Sat Feb 2 09:00:45 2013 +0000 + + surface: Prevent reads from the user-data arrays during teardown + + In a similar fashion to the previous commit, we also need to be wary of + users simply trying to read from a potentially freed user-data array. + + Signed-off-by: Chris Wilson + + src/cairo-surface.c | 8 +++++++- + 1 file changed, 7 insertions(+), 1 deletion(-) + +commit 18cff63e3d288bf2d7773760f2ab25c80a4a2bc1 +Author: Chris Wilson +AuthorDate: Sat Feb 2 08:47:26 2013 +0000 +Commit: Chris Wilson +CommitDate: Sat Feb 2 08:55:37 2013 +0000 + + surface: Prevent writes to the user-data arrays during teardown + + As we cleanup the user-data arrays, we call the user provided destroy + notifier callbacks. These callbacks are at liberty to write back into + the parent surface, and in particular try to write into the arrays that + we have just freed. This causes hard to control and fairly unpredictable + use-after-frees in the client, so lets just rule out the dangerous + behaviour. + + References:https://bugzilla.mozilla.org/show_bug.cgi?id=722975 + Signed-off-by: Chris Wilson + + src/cairo-surface.c | 9 +++++++++ + 1 file changed, 9 insertions(+) + +commit c391093f40472c2300f38d0e5857858f85586b60 +Author: Chris Wilson +AuthorDate: Fri Feb 1 16:31:49 2013 +0000 +Commit: Chris Wilson +CommitDate: Fri Feb 1 16:36:03 2013 +0000 + + image: Add a convenience function for creating an image from another's data + + The GL backend would like to extract a rectangle from another surface + and convert it to a different pixel format. The + _cairo_image_surface_create_from_image() does that by returning a new + image that has the contents of the specified rectangle in the source + + Signed-off-by: Chris Wilson + + src/cairo-image-surface-private.h | 7 +++++ + src/cairo-image-surface.c | 55 +++++++++++++++++++++++++++++++++++++++ + 2 files changed, 62 insertions(+) + +commit 15830fdb1087f18dcd6351de1034a5025b8ed343 +Author: Chris Wilson +AuthorDate: Thu Jan 31 18:50:39 2013 +0000 +Commit: Chris Wilson +CommitDate: Thu Jan 31 18:50:39 2013 +0000 + + NEWS: fix a couple of typos + + Reported-by: Thierry Vignaud + + NEWS | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +commit 28dbafd5643fcf637a556fc196b5b984d44d151d +Author: Chris Wilson +AuthorDate: Thu Jan 31 16:23:24 2013 +0000 +Commit: Chris Wilson +CommitDate: Thu Jan 31 16:23:24 2013 +0000 + + Post release version bump to 1.12.13 + + cairo-version.h | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit a201a1169f472e822a66275b7dffe62f241d8ec0 +Author: Chris Wilson +AuthorDate: Thu Jan 31 15:24:33 2013 +0000 +Commit: Chris Wilson +CommitDate: Thu Jan 31 15:24:33 2013 +0000 + + 1.12.12 release + + NEWS | 24 ++++++++++++++++++++++++ + cairo-version.h | 2 +- + 2 files changed, 25 insertions(+), 1 deletion(-) + +commit 350f9fb5366079113eb8bca947d480362c3ae6be +Author: Chris Wilson +AuthorDate: Thu Jan 31 15:15:03 2013 +0000 +Commit: Chris Wilson +CommitDate: Thu Jan 31 15:15:03 2013 +0000 + + test: Refresh refs for aa noise following reduction of the 2-stage compositing + + A side effect of + + commit c986a7310bb06582b7d8a566d5f007ba4e5e75bf + Author: Chris Wilson + Date: Thu Jan 24 08:55:54 2013 +0000 + + image: Enable inplace compositing with opacities for general routines + + is that we should in theory be reducing the rounding errors when + compositing coverage. + + Signed-off-by: Chris Wilson + + test/reference/bug-source-cu.rgb24.ref.png | Bin 3211 -> 3211 bytes + test/reference/clip-stroke-unbounded.argb32.ref.png | Bin 4128 -> 4127 bytes + test/reference/clip-stroke-unbounded.rgb24.ref.png | Bin 3546 -> 3566 bytes + test/reference/mask.argb32.ref.png | Bin 8579 -> 8565 bytes + test/reference/mask.rgb24.ref.png | Bin 7127 -> 7135 bytes + .../record-paint-alpha-clip-mask.argb32.ref.png | Bin 340 -> 0 bytes + test/reference/record-paint-alpha-clip-mask.ref.png | Bin 333 -> 318 bytes + .../record-paint-alpha-clip-mask.rgb24.ref.png | Bin 340 -> 0 bytes + test/reference/record-text-transform.argb32.ref.png | Bin 5579 -> 0 bytes + test/reference/record-text-transform.rgb24.ref.png | Bin 5579 -> 0 bytes + test/reference/record1414x-text-transform.ref.png | Bin 8706 -> 8365 bytes + test/reference/record2x-text-transform.ref.png | Bin 13476 -> 13072 bytes + .../record90-paint-alpha-clip-mask.argb32.ref.png | Bin 343 -> 0 bytes + .../record90-paint-alpha-clip-mask.ref.png | Bin 0 -> 316 bytes + .../record90-paint-alpha-clip-mask.rgb24.ref.png | Bin 343 -> 0 bytes + .../record90-paint-alpha-clip.argb32.ref.png | Bin 296 -> 0 bytes + test/reference/record90-paint-alpha-clip.ref.png | Bin 0 -> 320 bytes + .../record90-paint-alpha-clip.rgb24.ref.png | Bin 296 -> 0 bytes + .../record90-text-transform.argb32.ref.png | Bin 5811 -> 0 bytes + test/reference/record90-text-transform.ref.png | Bin 0 -> 5481 bytes + .../reference/record90-text-transform.rgb24.ref.png | Bin 5811 -> 0 bytes + .../recording-surface-extend-none.argb32.ref.png | Bin 3051 -> 3153 bytes + .../recording-surface-extend-none.rgb24.ref.png | Bin 3128 -> 3145 bytes + .../recording-surface-extend-pad.argb32.ref.png | Bin 10822 -> 11200 bytes + .../recording-surface-extend-pad.rgb24.ref.png | Bin 12582 -> 12586 bytes + .../recording-surface-extend-reflect.argb32.ref.png | Bin 23518 -> 23967 bytes + .../recording-surface-extend-reflect.rgb24.ref.png | Bin 23881 -> 23930 bytes + .../recording-surface-extend-repeat.argb32.ref.png | Bin 24047 -> 24091 bytes + .../recording-surface-extend-repeat.rgb24.ref.png | Bin 24038 -> 24075 bytes + .../reference/recording-surface-over.argb32.ref.png | Bin 0 -> 3153 bytes + test/reference/recording-surface-over.rgb24.ref.png | Bin 3128 -> 3145 bytes + .../recording-surface-source.argb32.ref.png | Bin 3044 -> 3153 bytes + .../recording-surface-source.rgb24.ref.png | Bin 3133 -> 3146 bytes + test/reference/stroke-clipped.ref.png | Bin 5886 -> 5790 bytes + 34 files changed, 0 insertions(+), 0 deletions(-) + +commit 22b7fae0368ba6cff23b2ebdf58bd7d1bfdfbd6f +Author: Chris Wilson +AuthorDate: Thu Jan 31 14:19:53 2013 +0000 +Commit: Chris Wilson +CommitDate: Thu Jan 31 14:19:53 2013 +0000 + + image: Add a reference for the clone's parent image + + We use the parent as a flag during map-to-image/umap-image that the + resultant image came from a fallback rather than as direct call + to the backend's map_to_image(). Whilst we use it as a simple flag, + we need to make sure the parent surface obeys the reference counting + semantics and is consistent for all callers. + + Unlike other users of the parent pointer, there is no resource sharing + between the two surfaces. + + Reported-by: Henry Song + Signed-off-by: Chris Wilson + + src/cairo-image-surface.c | 9 ++++++++- + 1 file changed, 8 insertions(+), 1 deletion(-) + +commit ec58fde294afd52c89fa5ed21ba2611edfdbd550 +Author: Chris Wilson +AuthorDate: Thu Jan 31 14:06:48 2013 +0000 +Commit: Chris Wilson +CommitDate: Thu Jan 31 14:06:48 2013 +0000 + + perf: Synchronize before stopping the timers + + Fixes a regression from + + commit 2855ff4666922f2c38505414270d47f659b0d499 + Author: Andrea Canciani + Date: Wed Aug 31 16:42:03 2011 +0200 + + perf: Reuse cairo-time + + which dropped the essential call to synchronize when refactoring the + code. + + Reported-by: Siarhei Siamashka + Signed-off-by: Chris Wilson + + perf/cairo-perf.c | 3 +++ + 1 file changed, 3 insertions(+) + +commit 2560c0b6577a6380ef175cf18bb804913784632c +Author: Chris Wilson +AuthorDate: Tue Jan 29 23:51:44 2013 +0000 +Commit: Chris Wilson +CommitDate: Tue Jan 29 23:51:44 2013 +0000 + + xlib/shm: More clarification of seqno required + + Everytime I read the predicate wrong, but hopefully, this time I have it + right! + + Signed-off-by: Chris Wilson + + src/cairo-xlib-surface-shm.c | 6 +++--- + 1 file changed, 3 insertions(+), 3 deletions(-) + +commit 91834fbdee40f46e18d071fd2671a7a642e6aa86 +Author: Chris Wilson +AuthorDate: Tue Jan 29 22:12:00 2013 +0000 +Commit: Chris Wilson +CommitDate: Tue Jan 29 22:26:00 2013 +0000 + + xlib/shm: Clarify testing of seqno + + Rename the seqno tests into seqno_passed(), seqno_before() and + seqno_after() in order to clarify their semantics. + + Signed-off-by: Chris Wilson + + src/cairo-xlib-source.c | 2 +- + src/cairo-xlib-surface-shm.c | 20 ++++++++++++++++---- + 2 files changed, 17 insertions(+), 5 deletions(-) + +commit 89092b97b50a7740058d0f72f94dfc6defe15ed6 +Author: Henry Song +AuthorDate: Tue Jan 29 13:21:00 2013 -0800 +Commit: Martin Robinson +CommitDate: Tue Jan 29 13:21:00 2013 -0800 + + gl/msaa: Don't emit alpha when emitting vertices + + The color attribute is disabled when not in spans mode, so the emitted + alpha is simply overwritten by the next vertex. Additionally, this can + potentially cause the alpha to be written past the end of the buffer. + + src/cairo-gl-composite.c | 24 +++++++++++------------- + 1 file changed, 11 insertions(+), 13 deletions(-) + +commit 74a19c527c1fa07ade2042a8d2acecbb5f6ccab1 +Author: Chris Wilson +AuthorDate: Tue Jan 29 10:31:05 2013 +0000 +Commit: Chris Wilson +CommitDate: Tue Jan 29 10:31:05 2013 +0000 + + configure: Include X11.h before testing for usability of Xrender.h + + On Solaris at least, the Xrender.h header is not standalone and requires + X11/X.h to be included first to define the essential types. + + Reported-by: Andreas F. Borchert + Bugzilla; https://bugs.freedesktop.org/show_bug.cgi?id=58199 + Signed-off-by: Chris Wilson + + configure.ac | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +commit 41ae904461e344fbfa3be3d276a7102bb4304b19 +Author: Chris Wilson +AuthorDate: Tue Jan 29 03:52:02 2013 +0000 +Commit: Chris Wilson +CommitDate: Tue Jan 29 03:52:02 2013 +0000 + + xlib/shm: Appease the compiler for a 'maybe used uninitialised' variable + + Initialise shm during its declaration so that it is indeed initialised + for the cleanup after every path. + + Signed-off-by: Chris Wilson + + src/cairo-xlib-render-compositor.c | 3 +-- + 1 file changed, 1 insertion(+), 2 deletions(-) + +commit 9b92625151ca75a6ee10f231f83b53f67a371947 +Author: Chris Wilson +AuthorDate: Tue Jan 29 03:49:56 2013 +0000 +Commit: Chris Wilson +CommitDate: Tue Jan 29 03:51:01 2013 +0000 + + xlib/shm: Simplify uploading of SHM image data + + Make sure that we simply copy from the SHM segment into the target + drawable, and not inadvertently stage it through another SHM buffer. + + Signed-off-by: Chris Wilson + + src/cairo-xlib-render-compositor.c | 22 ++++++++++++---------- + 1 file changed, 12 insertions(+), 10 deletions(-) + +commit c006b886d28a772d7a62cec52ab7e0c8196c36f6 +Author: Chris Wilson +AuthorDate: Tue Jan 29 03:01:31 2013 +0000 +Commit: Chris Wilson +CommitDate: Tue Jan 29 03:03:42 2013 +0000 + + xlib/shm: Force synchronisation for scratch SHM image buffers + + The scratch image buffers are used for uploads to the xserver and so we + must be careful not to overwrite active SHM segments. Unfortunately we + told the core SHM allocator that we would sync before using the images, + which was a lie. + + Reported-by: Michael Natterer + Signed-off-by: Chris Wilson + + src/cairo-xlib-surface-shm.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit fd59e6d86a3a1fc6720316f20deb8a0bd6f7b767 +Author: Chris Wilson +AuthorDate: Tue Jan 29 03:00:46 2013 +0000 +Commit: Chris Wilson +CommitDate: Tue Jan 29 03:00:46 2013 +0000 + + xlib/shm: Always request a CompletionEvent from ShmPutImage + + ...and treat is as an expected event for synchronisation. + + Signed-off-by: Chris Wilson + + src/cairo-xlib-surface-shm.c | 11 +++-------- + src/cairo-xlib-surface.c | 3 +-- + 2 files changed, 4 insertions(+), 10 deletions(-) + +commit a364a106b257c4493ba7b3badacc63599ba6064a +Author: Chris Wilson +AuthorDate: Tue Jan 29 02:52:10 2013 +0000 +Commit: Chris Wilson +CommitDate: Tue Jan 29 02:52:10 2013 +0000 + + xlib/shm: Tidy up destroying the mempool for a shm block + + Signed-off-by: Chris Wilson + + src/cairo-xlib-surface-shm.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 02a2baa8dcf49ad2d9766d43578ba216fab0d464 +Author: Chris Wilson +AuthorDate: Tue Jan 29 02:51:25 2013 +0000 +Commit: Chris Wilson +CommitDate: Tue Jan 29 02:51:25 2013 +0000 + + xlib/shm: Tidy creation of the proxy source for ShmPixmaps + + Signed-off-by: Chris Wilson + + src/cairo-xlib-source.c | 10 +++------- + 1 file changed, 3 insertions(+), 7 deletions(-) + +commit 30e950515171b25d9bc3da8d535cfe05d8be69c8 +Author: Chris Wilson +AuthorDate: Tue Jan 29 02:49:26 2013 +0000 +Commit: Chris Wilson +CommitDate: Tue Jan 29 02:49:26 2013 +0000 + + xlib/shm: Skip creating new SHM segments if the data is already in the xserver + + If the image is already inside a SHM segment, but the image format does + not match the surface, fallback to the XRender paths in order to perform + colorspace conversion on the data already inside the Xserver. + + Signed-off-by: Chris Wilson + + src/cairo-xlib-render-compositor.c | 4 ++++ + 1 file changed, 4 insertions(+) + +commit 1d1af825bb4fcfd7c4a54b65292734ba244e096d +Author: Chris Wilson +AuthorDate: Tue Jan 29 02:47:48 2013 +0000 +Commit: Chris Wilson +CommitDate: Tue Jan 29 02:47:48 2013 +0000 + + xlib/shm: Tighten mark-active to the actual CopyArea on the ShmPixmap + + Along the draw_image_boxes() upload path, we were actually marking the + ShmPixmap as still active for the subsequent drawing operation - which + could in theory never be submitted... + + Signed-off-by: Chris Wilson + + src/cairo-xlib-render-compositor.c | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +commit 3c18bae20ee2fea24d75f6986390ef8157d0207d +Author: Chris Wilson +AuthorDate: Mon Jan 28 10:03:54 2013 +0000 +Commit: Chris Wilson +CommitDate: Mon Jan 28 10:06:47 2013 +0000 + + perf; Do not allow the backends to optimize away the clear before sync + + The importance of writing to the scratch surface before retrieving an + image is that it makes that the write lands in the server queue, as well + as the GetImage, in order to serialise the timer against all the + operations. + + Reported-by: Siarhei Siamashka + Signed-off-by: Chris Wilson + + perf/cairo-perf-trace.c | 10 +++++++--- + 1 file changed, 7 insertions(+), 3 deletions(-) + +commit d9d5adec256b3935e4f261d81c37c77a2649248b +Author: Chris Wilson +AuthorDate: Sun Jan 27 16:51:52 2013 +0000 +Commit: Chris Wilson +CommitDate: Sun Jan 27 16:51:52 2013 +0000 + + image: And more fallout from c986a73, restore the absent short runs + + Signed-off-by: Chris Wilson + + src/cairo-image-compositor.c | 34 ++++++++++++++++------------------ + 1 file changed, 16 insertions(+), 18 deletions(-) + +commit 1ba9fb6fadcc1cb619af0ef974dffb0ff8672244 +Author: Chris Wilson +AuthorDate: Sun Jan 27 16:15:35 2013 +0000 +Commit: Chris Wilson +CommitDate: Sun Jan 27 16:29:41 2013 +0000 + + Mark _cairo_path_is_simple_quad as private + + Signed-off-by: Chris Wilson + + src/cairo-path-fixed-private.h | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 1d105f215a9c62f5b60541da209bf71182a2e9df +Author: Chris Wilson +AuthorDate: Sun Jan 27 16:29:44 2013 +0000 +Commit: Chris Wilson +CommitDate: Sun Jan 27 16:28:54 2013 +0000 + + image: Fix opaque span fills + + I should have realised the previous result was too good to be true! + + Signed-off-by: Chris Wilson + + src/cairo-image-compositor.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +commit c986a7310bb06582b7d8a566d5f007ba4e5e75bf +Author: Chris Wilson +AuthorDate: Thu Jan 24 08:55:54 2013 +0000 +Commit: Chris Wilson +CommitDate: Sat Jan 26 16:10:47 2013 +0000 + + image: Enable inplace compositing with opacities for general routines + + On a SNB i5-2500: + + Speedups + ======== + firefox-chalkboard 34284.16 -> 19637.40: 1.74x speedup + swfdec-giant-steps 778.35 -> 665.37: 1.17x speedup + ocitysmap 485.64 -> 431.94: 1.12x speedup + + Slowdowns + ========= + firefox-fishbowl 46878.98 -> 54407.14: 1.16x slowdown + + That slow down is due to overhead of the increased number of calls to + pixman_image_composite32() (pixman_transform_point for analyzing the + source extents in particular) outweighing any advantage gained by + performing the rasterisation in a single pass and eliding gaps. The + solution that has been floated in the past is for an interface into + pixman to only perform the analysis once and then to return a kernel to + use for all spans. + + Signed-off-by: Chris Wilson + + src/cairo-image-compositor.c | 190 +++++++++++++++++++++++++++++------ + src/cairo-spans-compositor-private.h | 2 +- + 2 files changed, 162 insertions(+), 30 deletions(-) + +commit cfe0e59663c71a6ecd0c976797ac32339e363af2 +Author: Martin Robinson +AuthorDate: Tue Jan 22 20:09:01 2013 -0800 +Commit: Martin Robinson +CommitDate: Fri Jan 25 16:30:11 2013 -0800 + + gl/msaa: Add a fast path for fills that are simple quads + + Instead of invoking Bentley-Ottman for fills that are simple + quadrilaterals, just pass the geometry straight to OpenGL. + + src/cairo-gl-msaa-compositor.c | 45 ++++++++++++-- + src/cairo-path-fixed-private.h | 17 ++++++ + src/cairo-path-fixed.c | 136 ++++++++++++++++++++++++++++++----------- + 3 files changed, 158 insertions(+), 40 deletions(-) + +commit 1e3424cfd1fea3f9aa2b1c8af4bb72239a94f365 +Author: Henry Song +AuthorDate: Tue Jan 22 14:54:38 2013 -0800 +Commit: Martin Robinson +CommitDate: Fri Jan 25 14:09:18 2013 -0800 + + gl: Use GL_ALPHA textures for CAIRO_CONTENT_ALPHA glyph caching + + It's safe to us GL_ALPHA for glyph caching surfaces, since Cairo only + uses them for texture uploading. This saves a little bit of memory. + + src/cairo-gl-glyphs.c | 16 ++++++++-------- + src/cairo-gl-private.h | 6 ++++++ + src/cairo-gl-surface.c | 38 +++++++++++++++++++++++++++++++------- + 3 files changed, 45 insertions(+), 15 deletions(-) + +commit a44b8bd70683a92d862b11c2d7359ce2b0a6a968 +Author: Henry Song +AuthorDate: Fri Jan 25 12:45:10 2013 -0800 +Commit: Martin Robinson +CommitDate: Fri Jan 25 12:45:10 2013 -0800 + + gl: Fix typos in multisampling detection + + Instead of looking for the EXT_framebuffer_multisample, this code should + look for GL_EXT_framebuffer_multisample. GL_ARB_framebuffer_object also + contains all necessary API for using multisampling, so we don't need to + check for both it and the GL_EXT_framebuffer_blit and + GL_EXT_framebuffer_multisample pair. + + src/cairo-gl-device.c | 6 +++--- + 1 file changed, 3 insertions(+), 3 deletions(-) + +commit bb4072046016610a510373df3b67cdeb2ac1b583 +Author: Henry Song +AuthorDate: Fri Jan 25 11:55:10 2013 -0800 +Commit: Martin Robinson +CommitDate: Fri Jan 25 11:55:10 2013 -0800 + + gl/msaa: Fix a memory leak in _clip_to_traps + + We need to clean up the polygon we create when decomposing a path into + trapezoids. + + src/cairo-gl-msaa-compositor.c | 2 ++ + 1 file changed, 2 insertions(+) + +commit 7054c9969cb0e41845635d6658935da223899f08 +Author: Henry Song +AuthorDate: Wed Jan 16 15:32:32 2013 +0100 +Commit: Martin Robinson +CommitDate: Wed Jan 23 16:55:38 2013 -0800 + + gl: Don't query the display when checking if the context changed + + If display has changed, the associated context must change. A + context is tied a display so we can avoid this check, eliminating + unnecessary work during context acquisition and release. + + src/cairo-egl-context.c | 13 ++++--------- + src/cairo-glx-context.c | 13 ++++--------- + 2 files changed, 8 insertions(+), 18 deletions(-) + +commit fa4f48cccb6c7f4e1afb2ff4b98b906b7d8d4afc +Author: Chris Wilson +AuthorDate: Wed Jan 23 15:04:26 2013 +0000 +Commit: Chris Wilson +CommitDate: Wed Jan 23 15:09:35 2013 +0000 + + xlib: Do not upload the whole image just because we want an entire row + + Fixes regression exposed by + + commit a73e7ff0186176bc82cd3ae1432c054c1fd3aebd + Author: Chris Wilson + Date: Sun Jan 6 11:29:27 2013 +0000 + + xlib: Simplify source creation by use of map-to-image + + but ultimately from + + commit 74941f822015cc50cd8477d0cf97f1a70dbff60b + Author: Chris Wilson + Date: Wed Jan 2 22:27:55 2013 +0000 + + xlib: Use SHM transport for ordinary image uploads + + Reported-by: Gökçen Eraslan + Reported-by: Guillaume Ayoub + Reported-by: Emmanuel Benisty + Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=59635 + Signed-off-by: Chris Wilson + + src/cairo-xlib-source.c | 8 +++++++- + src/cairo-xlib-surface.c | 24 +++++++++++------------- + 2 files changed, 18 insertions(+), 14 deletions(-) + +commit ed2fa6b16b03fccc3e21598cdb9157cbcebd1d37 +Author: Chris Wilson +AuthorDate: Wed Jan 16 20:58:46 2013 +0000 +Commit: Chris Wilson +CommitDate: Wed Jan 16 20:58:46 2013 +0000 + + version: Post-release bump to 1.12.11 + + cairo-version.h | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 2d6204c67d4d0d9c5d03087c4c1609a81ef1fdb7 +Author: Chris Wilson +AuthorDate: Wed Jan 16 20:22:38 2013 +0000 +Commit: Chris Wilson +CommitDate: Wed Jan 16 20:22:38 2013 +0000 + + 1.12.10 release + + NEWS | 49 +++++++++++++++++++++++++++++++++++++++++++++++++ + cairo-version.h | 2 +- + 2 files changed, 50 insertions(+), 1 deletion(-) + +commit 1dfea39841fc6d545e45420b1999239f29556c05 +Author: Martin Robinson +AuthorDate: Tue Jan 15 17:12:23 2013 -0800 +Commit: Martin Robinson +CommitDate: Tue Jan 15 17:14:01 2013 -0800 + + gl: Follow up fix for the previous commit + + Handle "fake" surfaces created by _cairo_gl_pattern_to_source which just + embed a GL backend operand. These surfaces do not have a backend, so we + should not fall back if a surface without a backend is not a texture + surface. + + src/cairo-gl-operand.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 769ea3b2c757adc9f8f348fdc93bb46f35c2f6b8 +Author: Henry Song +AuthorDate: Wed May 2 21:54:55 2012 +0200 +Commit: Martin Robinson +CommitDate: Tue Jan 15 15:09:03 2013 -0800 + + gl: Support for non-texture sources and masks + + If a GL surface is not a texture and is used as source or mask, + fall back to using an image surface as an intermediary. + + Fixes subsurface-image-repeat, subsurface-modify-child, + subsurface-modify-parent, subsurface-outside-target, subsurface-pad, + subsurface-reflect, subsurface-repeat, and subsurface-scale. + + src/cairo-gl-operand.c | 3 +++ + 1 file changed, 3 insertions(+) + +commit d01a502710296c9b15755f445f6fdda289a2df0b +Author: Martin Robinson +AuthorDate: Tue Jan 15 12:07:33 2013 -0800 +Commit: Martin Robinson +CommitDate: Tue Jan 15 12:07:33 2013 -0800 + + gl/msaa: Check for more extensions before using MSAA + + The MSAA compositor is implicitly relying on the existence of several + OpenGL extensions. This change makes those dependencies explicit. + + src/cairo-gl-device.c | 33 +++++++++++++++++---------------- + 1 file changed, 17 insertions(+), 16 deletions(-) + +commit 768b81b78eabbebb1bb443355441cac567739035 +Author: Chris Wilson +AuthorDate: Mon Jan 14 03:27:11 2013 +0000 +Commit: Chris Wilson +CommitDate: Mon Jan 14 03:27:11 2013 +0000 + + script: Set decompression length prior to calling decompressors + + Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=59224 + Signed-off-by: Chris Wilson + + util/cairo-script/cairo-script-operators.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 6639c1231072d71d33eb0952bae5f95e7480cd0d +Author: Chris Wilson +AuthorDate: Sun Jan 13 22:48:30 2013 +0000 +Commit: Chris Wilson +CommitDate: Sun Jan 13 22:48:30 2013 +0000 + + xlib: Initialise Pixmap for proxy sources + + So that we do not try to tell X to free a garbage pixmap and promptly + kill us. + + Signed-off-by: Chris Wilson + + src/cairo-xlib-source.c | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +commit fd34f420ec3ba02eb39f22f6551705ab23ebfc28 +Author: Chris Wilson +AuthorDate: Sun Jan 13 18:16:17 2013 +0000 +Commit: Chris Wilson +CommitDate: Sun Jan 13 18:37:08 2013 +0000 + + compositor: Pass back the internal failure + + In order to pass back a CAIRO_INT_STATUS_UNSUPPORTED, we need to use the + internal error surface creation functions as they do not assert on + private error codes. + + Signed-off-by: Chris Wilson + + src/cairo-mask-compositor.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +commit 14c32ee1cf6bfcaeb07d50a80b6d5a388a1f2885 +Author: Chris Wilson +AuthorDate: Sun Jan 13 18:11:31 2013 +0000 +Commit: Chris Wilson +CommitDate: Sun Jan 13 18:37:08 2013 +0000 + + compositor: Convert image surface into backend source + + Before passing a surface to the backend composite functions, they expect + them to be a native source. The copy'n'paste code for the mask + compositor forgot to perform the conversion upon the clip surfaces, + which originally were native to the backend and are now images. + + Signed-off-by: Chris Wilson + + src/cairo-mask-compositor.c | 61 ++++++++++++++++++++++++++++++++++----------- + 1 file changed, 46 insertions(+), 15 deletions(-) + +commit 7012334ebb424b619312e1fa397cc3b8a3ffd770 +Author: Chris Wilson +AuthorDate: Sun Jan 13 17:20:24 2013 +0000 +Commit: Chris Wilson +CommitDate: Sun Jan 13 18:37:08 2013 +0000 + + xlib: Handle lack of XRenderFillRectangles + + Remember to check for a supported render version before making a + FillRectangle request, and fallback to the core protocol where possible + instead. + + Signed-off-by: Chris Wilson + + src/cairo-xlib-core-compositor.c | 79 +++++++++++++++++++++++++++++--------- + src/cairo-xlib-private.h | 15 +++++++- + src/cairo-xlib-render-compositor.c | 30 ++++++++++++--- + src/cairo-xlib-source.c | 70 ++++++++++++++++++++++++++++----- + 4 files changed, 157 insertions(+), 37 deletions(-) + +commit 503b6b9e2ea65805a77d527c00cf242ec86d479b +Author: Chris Wilson +AuthorDate: Fri Jan 11 13:10:56 2013 +0000 +Commit: Chris Wilson +CommitDate: Fri Jan 11 13:18:26 2013 +0000 + + xlib: Only fallback through the mask intermediate if we can composite the mask + + Before rendering into the mask, we should first check whether the + subsequent call to composite the mask will trigger a fallback. In that + case, we should fallback earlier and do the operation in place. + + Signed-off-by: Chris Wilson + + src/cairo-compositor-private.h | 3 +++ + src/cairo-mask-compositor.c | 27 +++++++++++++++++++++++---- + src/cairo-xlib-render-compositor.c | 24 ++++++++++++------------ + 3 files changed, 38 insertions(+), 16 deletions(-) + +commit 1bcd59ef4c9dceaefa51ec6db1f5240d75940724 +Author: Martin Robinson +AuthorDate: Wed Jan 9 14:16:59 2013 -0800 +Commit: Martin Robinson +CommitDate: Wed Jan 9 14:33:41 2013 -0800 + + gl/msaa: Rely on the stencil buffer to cache the clip + + When using a texture surface the depth/stencil buffer is private to + cairo so we can rely on the fact that any previously painted clip is + still valid. + + We also only scissor when there's a previously painted clip on the + stencil buffer, otherwise we disable the scissor test. This fixes a few + test cases. + + src/cairo-gl-composite.c | 58 +++++++++++++++++++++++++++++------------- + src/cairo-gl-msaa-compositor.c | 4 +++ + src/cairo-gl-private.h | 1 + + 3 files changed, 46 insertions(+), 17 deletions(-) + +commit d524697ede85d36e4f88fa44d6a8b884685d804b +Author: Martin Robinson +AuthorDate: Tue Jan 8 17:08:52 2013 -0800 +Commit: Martin Robinson +CommitDate: Wed Jan 9 14:33:41 2013 -0800 + + gl/msaa: No need to set the clip when masking + + After 5e9083f882859201c5df18fc870577a224f88cbb there's no need to set a + clip on the cairo_gl_composite_t when masking. Clips are converted to + traps and rendered directly when masking now. + + src/cairo-gl-msaa-compositor.c | 1 - + 1 file changed, 1 deletion(-) + +commit 17418371b6755ef22b6d0c5787f71de3005e0730 +Author: Chris Wilson +AuthorDate: Wed Jan 9 15:06:28 2013 +0000 +Commit: Chris Wilson +CommitDate: Wed Jan 9 15:06:28 2013 +0000 + + xcb: _cairo_scaled_font_reset_cache does it own locking + + So we can drop ours. + + Signed-off-by: Chris Wilson + + src/cairo-xcb-surface-render.c | 2 -- + 1 file changed, 2 deletions(-) + +commit dd20c1f4d6419238bbb37fb93a48986f83c6e6c2 +Author: Chris Wilson +AuthorDate: Wed Jan 9 12:38:09 2013 +0000 +Commit: Chris Wilson +CommitDate: Wed Jan 9 12:38:09 2013 +0000 + + xlib: map-to-image requires an extents + + Signed-off-by: Chris Wilson + + src/cairo-xlib-source.c | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +commit 351a9e756d0863ae7408c6d43a622620daa0c354 +Author: Chris Wilson +AuthorDate: Wed Jan 9 12:31:10 2013 +0000 +Commit: Chris Wilson +CommitDate: Wed Jan 9 12:31:10 2013 +0000 + + stroke: Flip the dev slope as well for computing the cusp on a degeneracy + + Otherwise, the join think it starts and end in exactly the same + direction and elimiates the round capping. + + Signed-off-by: Chris Wilson + + src/cairo-path-stroke-traps.c | 2 ++ + 1 file changed, 2 insertions(+) + +commit 14720cd0dbc325a2140fbd5b2a7ce4b257ae5f5e +Author: Chris Wilson +AuthorDate: Wed Jan 9 12:11:25 2013 +0000 +Commit: Chris Wilson +CommitDate: Wed Jan 9 12:11:25 2013 +0000 + + gstate: Use the polygon intermediate for geometry queries + + Signed-off-by: Chris Wilson + + src/cairo-gstate.c | 24 ++++++++++++------------ + 1 file changed, 12 insertions(+), 12 deletions(-) + +commit a942938e90a219a0b88153f9fa96c606ce644ef1 +Author: Chris Wilson +AuthorDate: Wed Jan 9 00:36:13 2013 +0000 +Commit: Chris Wilson +CommitDate: Wed Jan 9 00:36:13 2013 +0000 + + scaled-font: Fix use after free when clearing the glyph cache + + Signed-off-by: Chris Wilson + + src/cairo-scaled-font.c | 5 +++-- + 1 file changed, 3 insertions(+), 2 deletions(-) + +commit c5b353c3725a1a8c116b790df4206f060d64eb5c +Author: Chris Wilson +AuthorDate: Tue Jan 8 22:56:28 2013 +0000 +Commit: Chris Wilson +CommitDate: Wed Jan 9 00:26:19 2013 +0000 + + scaled-font: Make reset-font-cache threadsafe + + Stop trying to workaround the destroy-callback requiring the font mutex + as we already hold the mutex whilst cleaning up the font caches. + + Signed-off-by: Chris Wilson + + src/cairo-scaled-font.c | 66 +++++++++++++++++++++++-------------------------- + 1 file changed, 31 insertions(+), 35 deletions(-) + +commit d1184b69e8871180b7b357a02d1a0bed3e68d897 +Author: Martin Robinson +AuthorDate: Thu Feb 2 20:38:51 2012 -0800 +Commit: Martin Robinson +CommitDate: Tue Jan 8 15:09:33 2013 -0800 + + gl: Do less work when acquiring and releasing devices + + After acquiring a GL device and the same GL context, surface, and + display combination is already active outside of Cairo, do not ask EGL + or GLX to change the current context as that may cause a flush on some + drivers. Also do not unset the context when releasing the device for the + same reason. + + src/cairo-egl-context.c | 64 ++++++++++++++--- + src/cairo-glx-context.c | 78 ++++++++++++++++---- + test/Makefile.sources | 1 + + test/gl-device-release.c | 182 +++++++++++++++++++++++++++++++++++++++++++++++ + 4 files changed, 301 insertions(+), 24 deletions(-) + +commit 7401455cb4136473521b9f33b09944aa0bc66971 +Author: Chris Wilson +AuthorDate: Tue Jan 8 17:52:04 2013 +0000 +Commit: Chris Wilson +CommitDate: Tue Jan 8 22:26:25 2013 +0000 + + image: Allocate a temporary buffer for inline span composition + + Allow the inpline span compositor to operate on wider images than its + temporary buffer by allocating a scanline mask. + + Signed-off-by: Chris Wilson + + src/cairo-image-compositor.c | 24 ++++++++++++++++++++---- + 1 file changed, 20 insertions(+), 4 deletions(-) + +commit 0d38518c38fec68a1fa8cf9d3ae946faa08d6c42 +Author: Chris Wilson +AuthorDate: Tue Jan 8 18:52:08 2013 +0000 +Commit: Chris Wilson +CommitDate: Tue Jan 8 18:52:08 2013 +0000 + + scaled-font: Remove a non-threadsafe double-freeze assert + + Sadly we cannot check ahead of acquiring the lock whether we hold the + lock. Just have to rely on lockdep. + + Signed-off-by: Chris Wilson + + src/cairo-scaled-font.c | 1 - + 1 file changed, 1 deletion(-) + +commit e4acba6d1ddfe1c6d27b5a77edccea9d69b178f8 +Author: Chris Wilson +AuthorDate: Tue Jan 8 16:38:11 2013 +0000 +Commit: Chris Wilson +CommitDate: Tue Jan 8 16:38:11 2013 +0000 + + xlib/shm: Only destroy an existing damage + + _cairo_damage_destroy() does not like to be passed a NULL. + + Signed-off-by: Chris Wilson + + src/cairo-xlib-surface-shm.c | 6 ++++-- + 1 file changed, 4 insertions(+), 2 deletions(-) + +commit 2ed484817ef3a5084dc65a2ae1acdef551acd107 +Author: Chris Wilson +AuthorDate: Tue Jan 8 16:06:02 2013 +0000 +Commit: Chris Wilson +CommitDate: Tue Jan 8 16:07:32 2013 +0000 + + xlib/shm: Discard damage upon shm finish + + Both to make sure we do not leak the memory, but to also prevent + _cairo_xlib_surface_put_shm() from operating upon the finished shm + surface after the display is closed. + + Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=58253 + Signed-off-by: Chris Wilson + + src/cairo-damage-private.h | 3 +++ + src/cairo-damage.c | 7 +++++++ + src/cairo-xlib-surface-shm.c | 3 +++ + 3 files changed, 13 insertions(+) + +commit b5dcc8ce4450de1e48fd0586fddb5ed658719b28 +Author: Chris Wilson +AuthorDate: Tue Jan 8 11:20:08 2013 +0000 +Commit: Chris Wilson +CommitDate: Tue Jan 8 15:03:25 2013 +0000 + + scaled-font: Hold the scaled font mutex whilst reaping from the global cache + + If we need to reap the global cache, this will call back into the scaled + font to free the glyph page. We therefore need to be careful not to run + concurrently with a user adding to the glyph page, ergo we need locking. + To complicate matters we need to be wary of a lock-inversion as we hold + the scaled_font lock whilst thawing the global cache. We prevent the + deadlock by careful ordering of the thaw-unlock and by inspecting the + current frozen state of the scaled-font before releasing the glyph + page. + + Signed-off-by: Chris Wilson + + src/cairo-scaled-font.c | 9 +++++++-- + 1 file changed, 7 insertions(+), 2 deletions(-) + +commit c4ea7b13b406bf0ea1dc9b337010131d3704bc4a +Author: Chris Wilson +AuthorDate: Tue Jan 8 13:35:43 2013 +0000 +Commit: Chris Wilson +CommitDate: Tue Jan 8 15:03:06 2013 +0000 + + scaled-font: Assert if attempting to finish a frozen font + + Signed-off-by: Chris Wilson + + src/cairo-scaled-font.c | 12 ++++++++++++ + 1 file changed, 12 insertions(+) + +commit 4d4bf8fddff49d349e03282ffa827f6f4659e3fe +Author: Chris Wilson +AuthorDate: Tue Jan 8 14:56:07 2013 +0000 +Commit: Chris Wilson +CommitDate: Tue Jan 8 15:02:27 2013 +0000 + + scaled-font: Free the cached glyphs from the font before taking the global lock + + In the case of a recording surface we may recurse into the global glyph + cache so we need to be careful and stage the ordering of how we free the + glyphs. So first we finish any information and surfaces from the scaled + font glyph cache (and so triggering recursion into other scaled fonts) + and then take the global cache and remove our pages. + + Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=54950 + Signed-off-by: Chris Wilson + + src/cairo-scaled-font.c | 21 ++++++++++++++++++++- + 1 file changed, 20 insertions(+), 1 deletion(-) + +commit 44a093eb95c950b0e8f2d7d1cdb9719cb8a550f7 +Author: Chris Wilson +AuthorDate: Tue Jan 8 14:58:41 2013 +0000 +Commit: Chris Wilson +CommitDate: Tue Jan 8 15:02:26 2013 +0000 + + scaled-font: Always hold the mutex even for single glyph probes + + The freeze/thaw routines have a side-effect of managing the global glyph + cache in addition to taking the mutex on the font. If we don't call + them, we may end up indefinitely keeping the global glyph cache frozen + (effectively leaking glyphs to the maximum of all open fonts) and + triggering asserts. + + Signed-off-by: Chris Wilson + + src/cairo-scaled-font.c | 41 +++++++++++++++++++++-------------------- + 1 file changed, 21 insertions(+), 20 deletions(-) + +commit 80cc532271d7e94ad02732841fbcdc811cce8754 +Author: Chris Wilson +AuthorDate: Tue Jan 8 13:47:23 2013 +0000 +Commit: Chris Wilson +CommitDate: Tue Jan 8 15:01:38 2013 +0000 + + script: Thaw the scaled font cache on the error path + + Signed-off-by: Chris Wilson + + src/cairo-script-surface.c | 4 +++- + 1 file changed, 3 insertions(+), 1 deletion(-) + +commit e1307da8616027004dd6c901017a667b1503781d +Author: Chris Wilson +AuthorDate: Tue Jan 8 12:53:24 2013 +0000 +Commit: Chris Wilson +CommitDate: Tue Jan 8 15:01:37 2013 +0000 + + script: Simply exchange source/dest images for _set_source_image + + But note we can only do the exchange if they do indeed match and + there are no other references (the objects are only on the stack). + + Signed-off-by: Chris Wilson + + util/cairo-script/cairo-script-operators.c | 19 ++++++++++++++----- + 1 file changed, 14 insertions(+), 5 deletions(-) + +commit 146da77d85b304651949a819bc8b0a74819f0416 +Author: Chris Wilson +AuthorDate: Tue Jan 8 12:19:33 2013 +0000 +Commit: Chris Wilson +CommitDate: Tue Jan 8 15:01:37 2013 +0000 + + script: Attempt to decompress images in place + + Signed-off-by: Chris Wilson + + perf/cairo-perf-trace.c | 16 +- + util/cairo-script/cairo-script-interpreter.h | 7 + + util/cairo-script/cairo-script-operators.c | 391 +++++++++++++++------------ + 3 files changed, 247 insertions(+), 167 deletions(-) + +commit 5f2e89660d5e38d8e2682945962521958f150825 +Author: Chris Wilson +AuthorDate: Mon Jan 7 13:11:06 2013 +0000 +Commit: Chris Wilson +CommitDate: Mon Jan 7 17:58:02 2013 +0000 + + image: Call pixman without a mask for opaque regions of inplace_spans + + Speedups + ======== + firefox-paintball 59462.09 -> 40928.76: 1.45x speedup + firefox-fishtank 43687.33 -> 34627.78: 1.26x speedup + firefox-tron 52526.00 -> 45754.73: 1.15x speedup + + However in order to avoid a regression with firefox-talos-svg we need to + prevent splitting up the scanline when using a gradient source. + + Signed-off-by: Chris Wilson + + src/cairo-image-compositor.c | 57 ++++++++++++++++++++++++++++++++++++-------- + 1 file changed, 47 insertions(+), 10 deletions(-) + +commit a73e7ff0186176bc82cd3ae1432c054c1fd3aebd +Author: Chris Wilson +AuthorDate: Sun Jan 6 11:29:27 2013 +0000 +Commit: Chris Wilson +CommitDate: Sun Jan 6 11:30:02 2013 +0000 + + xlib: Simplify source creation by use of map-to-image + + We were open-coding the functionality of map-to-image inside the source + creation routines. so refactor to actually use map-to-image instead. + + Signed-off-by: Chris Wilson + + src/cairo-xlib-source.c | 92 ++++++++++++++++++------------------------------- + 1 file changed, 33 insertions(+), 59 deletions(-) + +commit 4f142f3a7bf24b659c5caccab3a1aedd6b680909 +Author: Chris Wilson +AuthorDate: Sun Jan 6 10:32:25 2013 +0000 +Commit: Chris Wilson +CommitDate: Sun Jan 6 10:32:25 2013 +0000 + + xlib/shm: Only mark the shm pixmap as active if we upload into it + + Be more strict with when we mark the pixmap as active so that we only + wait for the actual XCopyArea involving the pixmap to complete. + + Signed-off-by: Chris Wilson + + src/cairo-xlib-surface-shm.c | 23 ++++++++++++++--------- + 1 file changed, 14 insertions(+), 9 deletions(-) + +commit 45a4b42a361eb791c571b201e11c3505a0a1a396 +Author: Chris Wilson +AuthorDate: Fri Jan 4 17:32:46 2013 +0000 +Commit: Chris Wilson +CommitDate: Sat Jan 5 21:10:35 2013 +0000 + + script: Recompress strings using LZO whilst binding traces + + Try using the lighter-weight LZO decompressor in an effort to speed up + replays (at the cost of making the bound traces slightly larger). + Presuming that with the slight increase in file size (from -1% to +10%), + the file data remains in the readahead buffer cache, replays see a + performance improvement of between 5-10%. + + Signed-off-by: Chris Wilson + + configure.ac | 12 ++ + util/cairo-script/Makefile.am | 2 +- + util/cairo-script/cairo-script-file.c | 32 ++++- + util/cairo-script/cairo-script-objects.c | 3 + + util/cairo-script/cairo-script-operators.c | 45 +++++-- + util/cairo-script/cairo-script-private.h | 5 + + util/cairo-script/cairo-script-scanner.c | 184 ++++++++++++++++++++++------- + 7 files changed, 227 insertions(+), 56 deletions(-) + +commit 9194904fa838a115b4dc58e5bff7a235cc2a9a7a +Author: Martin Robinson +AuthorDate: Fri Jan 4 16:31:01 2013 -0800 +Commit: Martin Robinson +CommitDate: Fri Jan 4 16:31:01 2013 -0800 + + gl: Better handling of clear surfaces + + When clearing a GL surface, set is_clear to true, and when mapping to an + image, handle is_clear like surfaces without modification. Additionally, + explicitly clear surfaces created via cairo_surface_create_similar. + + src/cairo-gl-surface.c | 43 +++++++++++++++++++++++++++++++++++++------ + 1 file changed, 37 insertions(+), 6 deletions(-) + +commit 9bff4508443abe002fcb0ffdb9b1897272f1c588 +Author: Martin Robinson +AuthorDate: Fri Jan 4 15:47:13 2013 -0800 +Commit: Martin Robinson +CommitDate: Fri Jan 4 16:29:51 2013 -0800 + + boilerplate/glx: Add a target with multisampling and stencil support + + Add a gl-window target that supports multisampling. This is useful for + testing the MSAA backend on the default framebuffer. + + boilerplate/cairo-boilerplate-glx.c | 170 ++++++++++++++++++++---------------- + 1 file changed, 96 insertions(+), 74 deletions(-) + +commit 8cd604e18adc1dbe22303d5c57dae374d7e8cd2b +Author: Chris Wilson +AuthorDate: Fri Jan 4 14:03:40 2013 +0000 +Commit: Chris Wilson +CommitDate: Fri Jan 4 14:03:40 2013 +0000 + + gobject: Fix my typo s/TEST/TEXT/ in the previous commit + + Again reported by Kouhei Sutou, who I am grateful for his deligence. + + util/cairo-gobject/cairo-gobject.h | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit a4f221498c20bd9bd6178fddc1ba481ff3fd6cb3 +Author: Kouhei Sutou +AuthorDate: Fri Jan 4 12:18:29 2013 +0000 +Commit: Chris Wilson +CommitDate: Fri Jan 4 12:18:29 2013 +0000 + + gobject: Fix "text_cluster_flags_get_type" typo + + The macro missed the text from the name, rendering it useless. + + util/cairo-gobject/cairo-gobject.h | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 9dde964553f74ccbc037b13ca83d0abb46adb194 +Author: Henry Song +AuthorDate: Thu Jan 3 16:03:55 2013 -0800 +Commit: Martin Robinson +CommitDate: Thu Jan 3 16:37:18 2013 -0800 + + gl/msaa: Only clear parts of the stencil buffer we will use + + Writing to the stencil buffer can be expensive, so when using the + stencil buffer for clipping only clear the clip extent. When using the + stencil buffer to prevent overlapping rendering during stroking, only + clear the approximate stroke extents. + + src/cairo-gl-composite.c | 17 ++++++++++------- + src/cairo-gl-msaa-compositor.c | 34 ++++++++++++++++++++++++++++++---- + src/cairo-gl-private.h | 4 ++++ + 3 files changed, 44 insertions(+), 11 deletions(-) + +commit 5e9083f882859201c5df18fc870577a224f88cbb +Author: Alejandro G. Castro +AuthorDate: Wed Mar 7 14:38:52 2012 +0100 +Commit: Martin Robinson +CommitDate: Thu Jan 3 16:37:18 2013 -0800 + + gl/msaa: Avoid the stencil buffer when possible during masking + + In this case we can draw the clip path and avoid the stencil buffer, + which can be expensive. + + src/cairo-gl-msaa-compositor.c | 68 ++++++++++++++++++++++++++++++++---------- + 1 file changed, 53 insertions(+), 15 deletions(-) + +commit dd850583a7f57a666da6af218841bb10b536df46 +Author: Henry Song +AuthorDate: Tue Mar 13 08:43:24 2012 -0700 +Commit: Martin Robinson +CommitDate: Thu Jan 3 15:58:19 2013 -0800 + + gl/msaa: Add full support for masking with the SOURCE operator + + Since OpenGL does not have a means to represent a masking SOURCE + operation in one step, we use two steps combined with the ADD + operator. + + src/cairo-gl-composite.c | 108 +++++++++++++++++++++++++---------------- + src/cairo-gl-msaa-compositor.c | 84 +++++++++++++++++++++++++++++--- + src/cairo-gl-private.h | 9 ++++ + 3 files changed, 152 insertions(+), 49 deletions(-) + +commit c743e93451f467782b861c67a6894df26082d5c6 +Author: Chuanbo Weng +AuthorDate: Wed Jan 2 18:03:44 2013 +0100 +Commit: Martin Robinson +CommitDate: Thu Jan 3 11:40:36 2013 -0800 + + gl: Support the GL_IMG_texture_npot extension + + This extension, used by older PowerVR drivers, is functionally + equivalent to the GL_OES_TEXTURE_NPOT extension. + + src/cairo-gl-device.c | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +commit ae1724ced98b86aaf97c7be9c4294fa3823d7350 +Author: Chris Wilson +AuthorDate: Thu Jan 3 13:46:20 2013 +0000 +Commit: Chris Wilson +CommitDate: Thu Jan 3 15:07:18 2013 +0000 + + Add missing local slim proto for cairo_recording_surface_create + + Dependency introduced in 749ef6be4d11b95d666b0e5fe06df926b828d655 + + Signed-off-by: Chris Wilson + + src/cairoint.h | 1 + + 1 file changed, 1 insertion(+) + +commit 872a92b874270ac3b83b0e206fb5b15a7405502a +Author: Chris Wilson +AuthorDate: Thu Jan 3 13:30:13 2013 +0000 +Commit: Chris Wilson +CommitDate: Thu Jan 3 15:07:18 2013 +0000 + + scaled-font: Mention ownership of returned object from get_font_face() + + As suggested by Simon Sapin. + + Signed-off-by: Chris Wilson + + src/cairo-scaled-font.c | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +commit 734a541dc34565f40fe0ae4e93c81c4849198a79 +Author: Chris Wilson +AuthorDate: Thu Jan 3 13:01:34 2013 +0000 +Commit: Chris Wilson +CommitDate: Thu Jan 3 15:07:18 2013 +0000 + + xlib: Avoid copying the source twice if it is an image + + Signed-off-by: Chris Wilson + + src/cairo-xlib-source.c | 37 +++++++++++++++++++++++++++---------- + 1 file changed, 27 insertions(+), 10 deletions(-) + +commit ecc8c28b24cb5fcd85aee5d4c82b9ad72c87fa69 +Author: Kouhei Sutou +AuthorDate: Thu Jan 3 12:37:43 2013 +0000 +Commit: Chris Wilson +CommitDate: Thu Jan 3 15:07:18 2013 +0000 + + gobject: Add the correct macro name for the hint-metrics type + + s/CAIRO_GOBJECT_TYPE_HNT_METRICS/CAIRO_GOBJECT_TYPE_HINT_METRICS/ + + However, as we have already released the broken headers, we need to + preserve that mistake in case applications are already using. Since it + is just a #define, there is little associated cost with carrying both + the incorrect spelling and the corrected define. + + util/cairo-gobject/cairo-gobject.h | 2 ++ + 1 file changed, 2 insertions(+) + +commit 5bc1b1f6aac108d9a3963352ad774bb4fcd69e28 +Author: Chris Wilson +AuthorDate: Fri Aug 24 17:22:34 2012 +0100 +Commit: Chris Wilson +CommitDate: Thu Jan 3 15:07:18 2013 +0000 + + stroke: Make the incremental trapezoid stroker optionally available again + + Whilst it cannot handle self-intersecting strokes (which includes the + antialias region of neighbouring lines and joints), it is about 3x + faster to use than the more robust algorithm. As some backends delegate + the rendering, the quality may still be preserved and so they should be + responsible for choosing the appropriate method for generation of the + stroke geometry. + + Signed-off-by: Chris Wilson + + src/Makefile.sources | 1 + + src/cairo-cogl-surface.c | 6 +- + src/cairo-path-stroke-traps.c | 1120 ++++++++++++++++++++++++++++++++++++ + src/cairo-path-stroke.c | 12 +- + src/cairo-recording-surface.c | 12 +- + src/cairo-rectangle.c | 2 +- + src/cairo-stroke-style.c | 39 ++ + src/cairo-traps-compositor.c | 37 +- + src/cairo-traps-private.h | 9 + + src/cairo-traps.c | 252 ++++++++ + src/cairoint.h | 21 +- + src/test-base-compositor-surface.c | 8 +- + 12 files changed, 1489 insertions(+), 30 deletions(-) + +commit 74941f822015cc50cd8477d0cf97f1a70dbff60b +Author: Chris Wilson +AuthorDate: Wed Jan 2 22:27:55 2013 +0000 +Commit: Chris Wilson +CommitDate: Thu Jan 3 12:28:33 2013 +0000 + + xlib: Use SHM transport for ordinary image uploads + + In theory this should just save a single copy, however PutImage will + break up requests into a series of scanlines requests which is less + efficient than the single-shot transfer provided by ShmPutImage. + + Signed-off-by: Chris Wilson + + src/cairo-xlib-surface.c | 100 ++++++++++++++++++++++++++++++++++++----------- + 1 file changed, 77 insertions(+), 23 deletions(-) + +commit bf2a04c5ab91c93d4d188afd030b3004c67a180f +Author: Chris Wilson +AuthorDate: Thu Jan 3 12:24:14 2013 +0000 +Commit: Chris Wilson +CommitDate: Thu Jan 3 12:27:34 2013 +0000 + + xlib/shm: Fix typo in creation of a SHM image + + Pass along the size the caller requests, not the size of the related + drawable. + + Signed-off-by: Chris Wilson + + src/cairo-xlib-surface-shm.c | 8 +++----- + 1 file changed, 3 insertions(+), 5 deletions(-) + +commit c29ab389fb2b3b91c895f2df684b0e9af8225d12 +Author: Chris Wilson +AuthorDate: Sun Dec 30 12:32:45 2012 +0000 +Commit: Chris Wilson +CommitDate: Sun Dec 30 12:54:26 2012 +0000 + + gl: Provide a fast emitter for solid spans + + Signed-off-by: Chris Wilson + + src/cairo-gl-composite.c | 55 +++++++++++++++++++++++++++++++++++++++++++----- + 1 file changed, 50 insertions(+), 5 deletions(-) + +commit d3848521c497dbcd3d9ae0fab34fa70c72752e60 +Author: Chris Wilson +AuthorDate: Sun Dec 30 12:32:45 2012 +0000 +Commit: Chris Wilson +CommitDate: Sun Dec 30 12:47:02 2012 +0000 + + gl: Provide a fast emitter for solid glyphs + + Signed-off-by: Chris Wilson + + src/cairo-gl-composite.c | 62 ++++++++++++++++++++++++++++++++++++++---------- + 1 file changed, 49 insertions(+), 13 deletions(-) + +commit 127dd466695dcb05e6178e4ed2471dba1b229d17 +Author: Chris Wilson +AuthorDate: Sun Dec 30 12:21:11 2012 +0000 +Commit: Chris Wilson +CommitDate: Sun Dec 30 12:21:11 2012 +0000 + + gl: Use vfunc for vertex emission + + In order to overload the emitters in future to provide specialised + routines for the common types of operands, begin by switching the + current users over to a vfunc interface. + + Signed-off-by: Chris Wilson + + src/cairo-gl-composite.c | 107 +++++++++++++++++++++++++++---------- + src/cairo-gl-glyphs.c | 11 ++-- + src/cairo-gl-private.h | 48 ++++++++++------- + src/cairo-gl-spans-compositor.c | 115 ++++++++++++++++++++++------------------ + src/cairo-gl-surface.c | 2 +- + src/cairo-gl-traps-compositor.c | 21 ++++---- + 6 files changed, 190 insertions(+), 114 deletions(-) + +commit 9558cb62c6a3ed59a53f00f740a261251b9b64b2 +Author: Chris Wilson +AuthorDate: Sat Dec 29 18:30:48 2012 +0000 +Commit: Chris Wilson +CommitDate: Sat Dec 29 18:51:54 2012 +0000 + + perf/chart: Contract the default output filenames + + Signed-off-by: Chris Wilson + + perf/cairo-perf-chart.c | 4 +--- + 1 file changed, 1 insertion(+), 3 deletions(-) + +commit fbd4864995e261a4cfc5e53273b53ce8a22d72db +Author: Chris Wilson +AuthorDate: Sat Dec 29 18:30:48 2012 +0000 +Commit: Chris Wilson +CommitDate: Sat Dec 29 18:30:48 2012 +0000 + + perf/chart: Show the geometric average as an extra column + + Signed-off-by: Chris Wilson + + perf/cairo-perf-chart.c | 112 +++++++++++++++++++++++++++++++++++++++++++++++- + 1 file changed, 111 insertions(+), 1 deletion(-) + +commit 71028865fae38bf26c45aae72e0a6773a19a640d +Author: Chris Wilson +AuthorDate: Sat Dec 29 15:05:53 2012 +0000 +Commit: Chris Wilson +CommitDate: Sat Dec 29 15:05:53 2012 +0000 + + Revert "xlib/shm: Do not trigger a surplus event from XShmPutImage" + + This reverts commit c97f2d4acd5c4a1a4b839c72626f84e242e60b23. + + Testing suggests that keeping that event is a win; so do so. + + src/cairo-xlib-surface.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit c97f2d4acd5c4a1a4b839c72626f84e242e60b23 +Author: Chris Wilson +AuthorDate: Sat Dec 29 14:56:24 2012 +0000 +Commit: Chris Wilson +CommitDate: Sat Dec 29 14:56:24 2012 +0000 + + xlib/shm: Do not trigger a surplus event from XShmPutImage + + As our lazy event mechanism is sufficient for tracking when to reuse shm + memory, and the events are not necessary for ShmPut/ShmGetImage paths. + + Signed-off-by: Chris Wilson + + src/cairo-xlib-surface.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 0c84a5474d4e90fc9361ccbb0ebc3d0580bad82b +Author: Chris Wilson +AuthorDate: Sat Dec 29 11:41:17 2012 +0000 +Commit: Chris Wilson +CommitDate: Sat Dec 29 14:55:17 2012 +0000 + + xlib/shm: Rate-limit events and only use as necessary + + Signed-off-by: Chris Wilson + + src/cairo-xlib-render-compositor.c | 4 +- + src/cairo-xlib-surface-shm.c | 110 ++++++++++++++++++++++++++----------- + 2 files changed, 79 insertions(+), 35 deletions(-) + +commit 21db1c99108dc84166cbd9641f3256b22f571ee3 +Author: Martin Robinson +AuthorDate: Fri Dec 28 14:10:29 2012 -0800 +Commit: Martin Robinson +CommitDate: Fri Dec 28 14:29:24 2012 -0800 + + gl: Cleanup selection of multisampling mode + + Fold the choice of multisampling mode into the cairo_gl_composite_t + structure itself. This makes it more similar to other settings. + + src/cairo-gl-composite.c | 20 +++++++++----------- + src/cairo-gl-msaa-compositor.c | 14 +++++++++----- + src/cairo-gl-private.h | 9 ++++----- + 3 files changed, 22 insertions(+), 21 deletions(-) + +commit 7d02e2d62d1d2d2852f256905af60f418216b9ea +Author: Chris Wilson +AuthorDate: Sun Dec 23 11:12:21 2012 +0000 +Commit: Chris Wilson +CommitDate: Sun Dec 23 11:19:16 2012 +0000 + + xlib/shm: Populate send_event and serial + + Hopefully this random choice is more meaningful than random junk. + + Bugzilla; https://bugs.freedesktop.org/show_bug.cgi?id=58672 + Signed-off-by: Chris Wilson + + src/cairo-xlib-surface-shm.c | 4 ++++ + 1 file changed, 4 insertions(+) + +commit e748c122435c1047894f73c14266bc81ad2edecd +Author: Adrian Johnson +AuthorDate: Sat Dec 22 18:34:43 2012 +1030 +Commit: Adrian Johnson +CommitDate: Sat Dec 22 18:34:43 2012 +1030 + + doc: Add CAIRO_MIME_TYPE_UNIQUE_ID to list of supported mime types + + src/cairo-surface.c | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +commit 4e751fcb031557e6ad720f5bf5f14e181564ab9b +Author: David Maxwell +AuthorDate: Thu Oct 11 08:52:36 2012 -0800 +Commit: Adrian Johnson +CommitDate: Sat Dec 22 14:36:38 2012 +1030 + + type1-subset: always include subroutine 4 (hint replacement idiom) + + http://lists.cairographics.org/archives/cairo/2012-December/023846.html + + src/cairo-type1-subset.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +commit b94a519aad3d5b50aa6de47ee16ee6a099de9791 +Author: Behdad Esfahbod +AuthorDate: Fri Dec 21 18:40:08 2012 -0500 +Commit: Behdad Esfahbod +CommitDate: Fri Dec 21 18:47:16 2012 -0500 + + [ft] Fix resizing of bitmap fonts + + Say, you were asking cairo for a font at 200px. For bitmap-only fonts, + cairo was finding the closes strike size and using it. If the strike + was at 20px, well, that's what you were getting. We now scale that 20px + strike by a factor of 10 to get the correct size rendering. + + Note that by itself this patch doesn't change much on the Linux desktop. + The reason is that the size you are interested in (eg. 200px) is lost by + fontconfig. When you request a font at 200px, fontconfig returns a font + pattern that says 20px, and so the next layers thing you want a font at + 20px. To address that, one also needs a piece of fontconfig config that + puts the 200 back into the pixelsize. Something like this: + + + + false + + + + size + dpi + 0.0138888888888 + + + + + I'm going to try to upstream this config so it will be enabled by + default. The config can be a bit smarter. For example, if + metricshinting is enabled and the size difference is small, we may as + well not scale. + + The nice thing about this is that the configuration of whether and when + to scale bitmaps will be done in fontconfig, not cairo / Qt / ... code. + + src/cairo-ft-font.c | 66 +++++++++++++++++++++++++++-------------------------- + 1 file changed, 34 insertions(+), 32 deletions(-) + +commit 1404ed9692af1958b4090c46d1a27e0fe4a5616e +Author: Behdad Esfahbod +AuthorDate: Fri Dec 21 18:35:41 2012 -0500 +Commit: Behdad Esfahbod +CommitDate: Fri Dec 21 18:47:10 2012 -0500 + + [ft] Remove ancient check for FT_Bitmap_Size.y_ppem + + That member is available in the version of FreeType we require. + + configure.ac | 7 ------- + src/cairo-ft-font.c | 11 +---------- + 2 files changed, 1 insertion(+), 17 deletions(-) + +commit 867c876b0e7ce3dcc8afc7227ef6317701a6dda0 +Author: Behdad Esfahbod +AuthorDate: Wed Nov 7 14:30:35 2012 -0800 +Commit: Behdad Esfahbod +CommitDate: Fri Dec 21 18:46:56 2012 -0500 + + [Minor] Improve logging + + src/cairo-xlib-render-compositor.c | 2 ++ + src/cairoint.h | 2 +- + 2 files changed, 3 insertions(+), 1 deletion(-) + +commit 5d21c9e224617110678a5b854a6a41049a02fca2 +Author: Adam Jackson +AuthorDate: Tue Dec 18 13:33:13 2012 -0500 +Commit: Chris Wilson +CommitDate: Tue Dec 18 20:27:19 2012 +0000 + + xlib/shm: Fix memory leak + + Despite subclassing image surfaces, we never called down to the image + surface destructor, so we leaked a pixman_image_t every time. + + Bugzilla: https://bugzilla.redhat.com/show_bug.cgi?id=882976 + Signed-off-by: Adam Jackson + + src/cairo-xlib-surface-shm.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 51435eeb0c4d9e53d76dae8b5af279ad518a05f8 +Author: Uli Schlachter +AuthorDate: Mon Dec 17 18:33:22 2012 +0100 +Commit: Uli Schlachter +CommitDate: Mon Dec 17 18:37:10 2012 +0100 + + xcb: Fix xcb-huge-subimage + + This teaches the xcb backend how to split up a PutImage request for a subimage + into multiple requests. The backend already does the same for "normal" PutImage + where it doesn't have to assemble the image from various rows. + + Signed-off-by: Uli Schlachter + + src/cairo-xcb-connection-core.c | 72 +++++++++++++++++++++++++++++++++-------- + 1 file changed, 58 insertions(+), 14 deletions(-) + +commit 5fb364287f96e4457d8df107ba3d0dc3f99f6f04 +Author: Uli Schlachter +AuthorDate: Mon Dec 17 18:29:21 2012 +0100 +Commit: Uli Schlachter +CommitDate: Mon Dec 17 18:37:10 2012 +0100 + + test: Add xcb-huge-subimage + + This creates an image surface with a non-natural stride and paints it to a + similar surface. + + In the xcb backend, this causes a call to _cairo_xcb_connection_put_subimage() + which tries to send a huge PutImage request. As a result, xcb kills the X11 + connection. + + Signed-off-by: Uli Schlachter + + test/Makefile.sources | 1 + + test/reference/xcb-huge-subimage.ref.png | Bin 0 -> 97 bytes + test/xcb-huge-subimage.c | 81 +++++++++++++++++++++++++++++++ + 3 files changed, 82 insertions(+) + +commit 749ef6be4d11b95d666b0e5fe06df926b828d655 +Author: Uli Schlachter +AuthorDate: Mon Dec 17 17:45:25 2012 +0100 +Commit: Uli Schlachter +CommitDate: Mon Dec 17 18:37:09 2012 +0100 + + context: Use recording surfaces for unbounded groups + + The old code uses an uninitialized variable for the extents of the group that is + created. This patch makes it use an unbounded recording surface instead. + + This has the implicit assumption that everything that is unbounded smells like a + recording surface. Let's see when this assumption breaks. :-) + + http://lists.cairographics.org/archives/cairo/2012-October/023585.html + + Signed-off-by: Uli Schlachter + + src/cairo-default-context.c | 23 ++++++++++++++--------- + 1 file changed, 14 insertions(+), 9 deletions(-) + +commit 433a5829d7c38a9301346fc5a643e623565c1625 +Author: Martin Robinson +AuthorDate: Mon Dec 17 17:53:33 2012 +0100 +Commit: Martin Robinson +CommitDate: Mon Dec 17 17:56:19 2012 +0100 + + Revert "gl/msaa: Share the depth/stencil buffer among all surfaces" + + This was pushed mistakenly. Sorry. + + This reverts commit a7d684e6fe4bbeea2262276aaa57bb2a47c401df. + + src/cairo-gl-device.c | 118 ++++++++++++++----------------------------------- + src/cairo-gl-private.h | 13 ------ + src/cairo-gl-surface.c | 31 ++----------- + 3 files changed, 38 insertions(+), 124 deletions(-) + +commit 000a137a6554cfc350407f3b719fb4aa3a1c33c6 +Author: Uli Schlachter +AuthorDate: Mon Dec 17 17:12:59 2012 +0100 +Commit: Uli Schlachter +CommitDate: Mon Dec 17 17:12:59 2012 +0100 + + boilerplate-xcb: Ignore MappingNotify events + + The boilerplate code makes sure that our tests didn't cause any X11 errors or + X11 events, because those might confuse API users. + + However, when the keyboard layout changes, every connection gets a MappingNotify + event. This means that the test and performance test suites failed when the + keyboard layout was changed while they are running. + + Fix this by ignoring MappingNotifies. + + Reported by Arthur Huillet on IRC. + + Signed-off-by: Uli Schlachter + + boilerplate/cairo-boilerplate-xcb.c | 10 ++++++++-- + 1 file changed, 8 insertions(+), 2 deletions(-) + +commit 9d9aa04b60e24542b6b2a4c6bf87115db7736c2f +Author: Martin Robinson +AuthorDate: Mon Dec 3 16:08:23 2012 -0800 +Commit: Martin Robinson +CommitDate: Mon Dec 10 10:18:15 2012 +0100 + + gl: Add BGRA download support for GLES2 + + Some OpenGLES2 drivers support downloading BGRA data. On little-endian + systems BGRA and GL_UNSIGNED_BYTe is equivalent to the typical + cairo_image_t format, so this can prevent CPU bit swizzling for + operations that involve images. + + src/cairo-gl-device.c | 18 ++++++++++++++++++ + src/cairo-gl-private.h | 1 + + src/cairo-gl-surface.c | 51 +++++++++++++++++++++++++------------------------- + 3 files changed, 44 insertions(+), 26 deletions(-) + +commit a7d684e6fe4bbeea2262276aaa57bb2a47c401df +Author: Martin Robinson +AuthorDate: Mon Mar 5 23:11:19 2012 -0800 +Commit: Martin Robinson +CommitDate: Sat Dec 8 13:31:13 2012 +0100 + + gl/msaa: Share the depth/stencil buffer among all surfaces + + Instead of allocating a depth/stencil buffer for all surfaces, share a + common buffer that's the size of the largest surface. This reduces + video memory usage when there are many GL surfaces. + + src/cairo-gl-device.c | 118 +++++++++++++++++++++++++++++++++++-------------- + src/cairo-gl-private.h | 13 ++++++ + src/cairo-gl-surface.c | 31 +++++++++++-- + 3 files changed, 124 insertions(+), 38 deletions(-) + +commit ba4a4eae051cd932e59e3092ef36d4f6cded0159 +Author: Chuanbo Weng +AuthorDate: Tue Oct 2 13:58:49 2012 +0200 +Commit: Martin Robinson +CommitDate: Wed Dec 5 16:17:10 2012 -0800 + + gl/msaa: Use GL_IMG_multisampled_render_to_texture when available + + Some OpenGLES platforms support GL_IMG_multisampled_render_to_texture + instead of GL_EXT_multisampled_render_to_texture. + + src/cairo-gl-device.c | 8 ++++++++ + src/cairo-gl-dispatch-private.h | 10 +++++++--- + src/cairo-gl-dispatch.c | 26 ++++++++++++++++++++++++++ + 3 files changed, 41 insertions(+), 3 deletions(-) + +commit 3bedff0c009e645fff2d6f40976b4483871e73e1 +Author: Henry Song +AuthorDate: Tue May 15 20:32:44 2012 +0200 +Commit: Martin Robinson +CommitDate: Wed Dec 5 15:56:35 2012 -0800 + + gl: Properly disable ctx->spans when necessary + + When compositing starts, if we are not using the spans compositor, we + should set the spans member of the context to false. + + src/cairo-gl-composite.c | 14 ++++++++++---- + 1 file changed, 10 insertions(+), 4 deletions(-) + +commit 18e7234c7e56ca26d7d7a2e29b1da2bb6944bb34 +Author: Henry Song +AuthorDate: Wed May 23 15:12:16 2012 +0200 +Commit: Martin Robinson +CommitDate: Wed Dec 5 15:30:28 2012 -0800 + + gl/msaa: Also setmsaa_active to true for non-texture surfaces + + This is important because there are places in the code where msaa_active + is used to decide whether or not to complete an operation with + multisampling or not. + + src/cairo-gl-device.c | 1 + + 1 file changed, 1 insertion(+) + +commit 9f43f096b22a13f02d638b86b4460c7ed66d3c96 +Author: Henry Song +AuthorDate: Sat Dec 1 17:08:56 2012 +0000 +Commit: Chris Wilson +CommitDate: Sat Dec 1 17:08:56 2012 +0000 + + gl: Flush context upon evicting a gradient + + As the random selection of a gradient can possible destroy the currently + active gradient, we need to flush the context in order to flush any + references to the texture before deletion. + + src/cairo-gl-gradient.c | 2 ++ + 1 file changed, 2 insertions(+) + +commit a0fb1391315033de54368715a8855aedea258e67 +Author: Chris Wilson +AuthorDate: Sat Dec 1 09:21:15 2012 +0000 +Commit: Chris Wilson +CommitDate: Sat Dec 1 09:23:37 2012 +0000 + + mempool: Reduce the assertion into an alignment adjustment for the base + + Instead of asserting that the caller passed in a chunk-aligned base + pointer, just perform the fixup whilst initialising the mempool. This + means that the caller (xcb!) cannot assume that the mempool->base is + then the same base pointer as passed in and so needs to store it + separately for use in computing SHM offsets. + + Signed-off-by: Chris Wilson + + src/cairo-mempool.c | 9 +++++++++ + src/cairo-xcb-shm.c | 14 +++++++------- + 2 files changed, 16 insertions(+), 7 deletions(-) + +commit 153b11612f34294241429b53722839984f367f2e +Author: Chris Wilson +AuthorDate: Wed Nov 28 09:57:29 2012 +0000 +Commit: Chris Wilson +CommitDate: Wed Nov 28 09:57:29 2012 +0000 + + script: Fix map-to-image/unmap stack manipulations + + The idiom (and expectation) for surface operators is that it leaves the + surface on the stack for the next operation. Also we need to hold onto a + surface reference for objects put onto the stack, yet for the + map-to-image return we did not own one. + + Signed-off-by: Chris Wilson + + util/cairo-script/cairo-script-operators.c | 6 +++--- + 1 file changed, 3 insertions(+), 3 deletions(-) + +commit dfbf80a57d161707d105d1b5711c85890fe18a6d +Author: Chris Wilson +AuthorDate: Tue Nov 27 12:25:56 2012 +0000 +Commit: Chris Wilson +CommitDate: Wed Nov 28 09:36:59 2012 +0000 + + trace: Do not forcibly add surfaces to the dictionary + + Adjust the stack manipulation to avoid moving an unknown surface to + the dictionary. + + Reported-by: Dongyeon Kim + Signed-off-by: Chris Wilson + + util/cairo-trace/trace.c | 50 +++++++++++++++++++++++++++++++----------------- + 1 file changed, 32 insertions(+), 18 deletions(-) + +commit 376d39121c0d4eba8f0a22be71f782ce18e50923 +Author: Chris Wilson +AuthorDate: Tue Nov 27 12:25:56 2012 +0000 +Commit: Chris Wilson +CommitDate: Tue Nov 27 12:25:56 2012 +0000 + + trace: Fix operand emission for map-to-image and unmap-image + + Reported-by: Dongyeon Kim + Signed-off-by: Chris Wilson + + util/cairo-trace/trace.c | 58 ++++++++++++++++++++++++++++-------------------- + 1 file changed, 34 insertions(+), 24 deletions(-) + +commit 62b795fe52c73ad58101c101aa77449f4b61a576 +Author: Zozó Teki +AuthorDate: Sat Nov 10 08:35:33 2012 +0000 +Commit: Chris Wilson +CommitDate: Sat Nov 10 08:37:23 2012 +0000 + + recording: Append new elements to the end of the bbtree chain + + I have noticed that some of my objects were lost when drawing them on + a recording surface and playing them back. Later elements with the same + extents as a prior one tend to disappear from the chain of headers + having similar extents. After doing some debugging, I found that they + are not properly added to the bbtree during playback, and were instead + clobbering the existing chain. + + src/cairo-recording-surface.c | 5 ++++- + 1 file changed, 4 insertions(+), 1 deletion(-) + +commit 6ed1da67b5814c5ff062831f17621a585f81d704 +Author: Chris Wilson +AuthorDate: Sun Nov 4 15:34:34 2012 +0000 +Commit: Chris Wilson +CommitDate: Sun Nov 4 15:34:34 2012 +0000 + + version: Post-release bump to 1.12.9 + + cairo-version.h | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit cc162915a55cc67587677352bd9e389f16117853 +Author: Chris Wilson +AuthorDate: Sun Nov 4 14:23:09 2012 +0000 +Commit: Chris Wilson +CommitDate: Sun Nov 4 14:23:09 2012 +0000 + + 1.12.8 release + + NEWS | 42 ++++++++++++++++++++++++++++++++++++++++++ + cairo-version.h | 2 +- + 2 files changed, 43 insertions(+), 1 deletion(-) + +commit cf07bd866dc3fdbfaf3d7e7fdc83cc2a4ef5698c +Author: Adrian Johnson +AuthorDate: Sat Nov 3 11:08:01 2012 +1030 +Commit: Adrian Johnson +CommitDate: Sat Nov 3 11:08:01 2012 +1030 + + type1-subset: remove unused variable + + src/cairo-type1-subset.c | 4 ---- + 1 file changed, 4 deletions(-) + +commit 9f537156adcab5e7a9b21cd2bb5cc7676db52713 +Author: Adrian Johnson +AuthorDate: Sat Nov 3 11:07:02 2012 +1030 +Commit: Adrian Johnson +CommitDate: Sat Nov 3 11:07:02 2012 +1030 + + type1-subset: fix memory leak + + src/cairo-type1-subset.c | 52 ++++++++++++++++++++++++++++++------------------ + 1 file changed, 33 insertions(+), 19 deletions(-) + +commit 724c6dfa9521e887682029add879c2fcdd518b14 +Author: Chris Wilson +AuthorDate: Fri Nov 2 16:54:46 2012 +0000 +Commit: Chris Wilson +CommitDate: Fri Nov 2 17:01:07 2012 +0000 + + xlib/shm: Need IncludeInferiors when creating the source fallback + + Reported-by: Benjamin Otte + Signed-off-by: Chris Wilson + + src/cairo-xlib-surface-shm.c | 14 ++++++++++++++ + 1 file changed, 14 insertions(+) + +commit 1f4d05b55c96347aa4240190fda27f951b00c539 +Author: Chris Wilson +AuthorDate: Fri Nov 2 14:52:03 2012 +0000 +Commit: Chris Wilson +CommitDate: Fri Nov 2 14:53:18 2012 +0000 + + stroke: Fix calling '_cairo_spline_intersect' for in-bounds checking of splines + + Fixes stroke-clipped, within reason. There still remains some + antialiasing noise (between rendering the circle piecewise and wholly) + worth investigating - but that is probably an artefact of switching + between analytical rendering modes in the scanline + rasterisation. + + Signed-off-by: Chris Wilson + + src/cairo-path-stroke-polygon.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 2dd4ff32064c3c564e0902ae07330272e6676c22 +Author: Chris Wilson +AuthorDate: Fri Nov 2 14:48:40 2012 +0000 +Commit: Chris Wilson +CommitDate: Fri Nov 2 14:48:40 2012 +0000 + + test: Add stroke-clipped + + Exercise a bug in the determine of clip-bounds when stroking, as + reported by ed44. + + Signed-off-by: Chris Wilson + + test/Makefile.sources | 1 + + test/reference/stroke-clipped.ref.png | Bin 0 -> 5886 bytes + test/stroke-clipped.c | 54 ++++++++++++++++++++++++++++++++++ + 3 files changed, 55 insertions(+) + +commit e9d45705844f67f4c8342d68fe35ad08ea008e30 +Author: Chris Wilson +AuthorDate: Thu Nov 1 11:42:46 2012 +0000 +Commit: Chris Wilson +CommitDate: Thu Nov 1 11:42:46 2012 +0000 + + pen: Tighten checking for bevel (start==stop) joins + + From commit d7f5a1bec421d6c7b92d16daae681fa31ac7c212 + Author: Chris Wilson + Date: Wed Oct 31 09:27:52 2012 +0000 + + pen: First check whether the in/out edges lie within the single pen vertex + + makes a couple of tests much happier. + + Signed-off-by: Chris Wilson + + src/cairo-pen.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +commit 90860241bb8f8eff3c1ab40641b1bfca0798b238 +Author: Chris Wilson +AuthorDate: Thu Nov 1 09:47:00 2012 +0000 +Commit: Chris Wilson +CommitDate: Thu Nov 1 09:47:00 2012 +0000 + + gl: Tune the default VBO size to reduce overhead on embedded devices + + Henry Song found that the 256k buffers were disadvantageous on his + embedded hardware. As there is no obvious right value for the default + VBO size, we can tune for the more obvious constraints. + + Based on a patch by Henry Song + Signed-off-by: Chris Wilson + + src/cairo-gl-private.h | 6 ++++-- + 1 file changed, 4 insertions(+), 2 deletions(-) + +commit 0c1ff1572f1fc4c11b429e39f7de798030530740 +Author: Chris Wilson +AuthorDate: Thu Nov 1 08:45:37 2012 +0000 +Commit: Chris Wilson +CommitDate: Thu Nov 1 08:45:37 2012 +0000 + + xlib: Fixup standalone header compilation for 'make check' + + Missing include of string.h + + Signed-off-by: Chris Wilson + + src/cairo-xlib-private.h | 1 + + 1 file changed, 1 insertion(+) + +commit b6daf47fa08c74d9672040b2b98ac6dd1f841429 +Author: Chris Wilson +AuthorDate: Thu Nov 1 08:39:01 2012 +0000 +Commit: Chris Wilson +CommitDate: Thu Nov 1 08:43:26 2012 +0000 + + spans: Do not assume that we manage to perform the clip geometrically + + Even for bounded masks, we may fail to perform the clipping + geometrically for a variety of reasons, the prime one being that the + clip has a mixture of antialias settings. So when compositing the + polygon, we need to check whether a clip path still remains and so + requires a clipmask. + + Fixes regression from + + commit cd1004ce19c7ea28c7fedb6464562a08416586c0 + Author: Chris Wilson + Date: Fri May 11 21:20:35 2012 +0100 + + traps,spans-compositor: Avoid mistreating unaligned clips as aligned + + and + + commit 4ea3ace6c810ba090464e48795fac5456f6cdc24 + Author: Chris Wilson + Date: Fri May 11 21:51:44 2012 +0100 + + spans: Only fallback for a clipmask if unbounded + + Reported-by: Dominik Röttsches + Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=56574 + Signed-off-by: Chris Wilson + + src/cairo-spans-compositor.c | 8 ++++++-- + 1 file changed, 6 insertions(+), 2 deletions(-) + +commit 5844dead01db9ddab7f10a4d685bc5ee874d0eba +Author: Chris Wilson +AuthorDate: Thu Nov 1 08:37:58 2012 +0000 +Commit: Chris Wilson +CommitDate: Thu Nov 1 08:37:58 2012 +0000 + + util/show-polygon: Show the limited range of each edge + + Signed-off-by: Chris Wilson + + util/show-polygon.c | 52 ++++++++++++++++++++++++++++++++++++++++++++++++---- + 1 file changed, 48 insertions(+), 4 deletions(-) + +commit 03adea2f50aa10d49ff578389927e7b37e265918 +Author: Chris Wilson +AuthorDate: Thu Nov 1 08:37:01 2012 +0000 +Commit: Chris Wilson +CommitDate: Thu Nov 1 08:37:01 2012 +0000 + + stroke: Precompute the line half-width + + As we regularly recompute stroke->line_width/2 we may as compute it once + during initialisation. + + Signed-off-by: Chris Wilson + + src/cairo-path-stroke.c | 17 +++++++++-------- + 1 file changed, 9 insertions(+), 8 deletions(-) + +commit dbc0d83f2a7a0e6658f3b97b5f9921c44ef6a11f +Author: Chris Wilson +AuthorDate: Wed Oct 31 15:18:21 2012 +0000 +Commit: Chris Wilson +CommitDate: Wed Oct 31 15:18:21 2012 +0000 + + image: Add a couple of tracepoints for spans fallbacks + + References: https://bugs.freedesktop.org/show_bug.cgi?id=56574 + Signed-off-by: Chris Wilson + + src/cairo-image-compositor.c | 3 ++- + src/cairo-spans-compositor.c | 13 ++++++++++--- + 2 files changed, 12 insertions(+), 4 deletions(-) + +commit 9b7ed9b2cd6c9ee4dfab71aed9b7d97b720fceb0 +Author: Chris Wilson +AuthorDate: Wed Oct 31 13:15:07 2012 +0000 +Commit: Chris Wilson +CommitDate: Wed Oct 31 13:15:07 2012 +0000 + + xlib/shm: Fix bogus assertion without shm available + + In particular note that _cairo_xlib_surface_put_shm is indeed called and + is expected to be a no-op when shm is not available. + + Reported-by: Thomas Klausner + Signed-off-by: Chris Wilson + + src/cairo-xlib-surface-shm.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit d7f5a1bec421d6c7b92d16daae681fa31ac7c212 +Author: Chris Wilson +AuthorDate: Wed Oct 31 09:27:52 2012 +0000 +Commit: Chris Wilson +CommitDate: Wed Oct 31 09:27:52 2012 +0000 + + pen: First check whether the in/out edges lie within the single pen vertex + + In order to prevent underflow when searching for the closing pen vertex, + we first need to be sure that it does not simply lie next to the opening + pen vertex. As a result we were missing many cases that should have been + a bevel (in == out) and generating almost complete round caps instead. + + Reported-by: Dominik Röttsches + Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=56432 + Signed-off-by: Chris Wilson + + src/cairo-pen.c | 60 +++++++++++++++++--------------- + test/reference/arc-looping-dash.ref.png | Bin 502 -> 464 bytes + test/reference/caps-tails-curve.ref.png | Bin 54750 -> 54314 bytes + test/reference/reflected-stroke.ref.png | Bin 5139 -> 5116 bytes + 4 files changed, 32 insertions(+), 28 deletions(-) + +commit 66625cb46c985321c46b79d2163a4d676d6700ba +Author: Chris Wilson +AuthorDate: Tue Oct 30 12:40:41 2012 +0000 +Commit: Chris Wilson +CommitDate: Tue Oct 30 12:40:41 2012 +0000 + + xlib: Apply the image offsets to the destination rather the source + + So that we can specify the entire source surface as the region to copy + and not introduce clipping errors. + + Fixes regression from + commit c068691ff57c2f6cd750a54db17393c0e132cb00 + Author: Chris Wilson + Date: Fri Aug 17 21:33:54 2012 +0100 + + xlib/shm: Use an impromptu upload ShmSegment + + Reported-by: John Lindgren + Reported-by: Kalev Lember + Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=56547 + Signed-off-by: Chris Wilson + + src/cairo-xlib-render-compositor.c | 22 ++++++++++------------ + 1 file changed, 10 insertions(+), 12 deletions(-) + +commit 65176b7380f0d633da514be1febe16f17b99d876 +Author: Kevin Tardif +AuthorDate: Tue Oct 30 00:27:27 2012 -0400 +Commit: Adrian Johnson +CommitDate: Tue Oct 30 20:50:00 2012 +1030 + + type1-subset, cff-subset: Plugged 2 memory leaks + + - _cairo_type1_font_subset_fini doesn't free font->cleartext + - _cairo_cff_font_create can exit without freeing font->font_name and/or + font->data; _cairo_cff_font_load_opentype_cff is called to allocate + font_name, then _cairo_cff_font_load_cff is called to allocate + font->data, then _cairo_cff_font_load_cff's return status is checked + and if it failed, it jumps to fail1. This can cause font_name to leak + since the fail1 target only frees the font variable. In addition, + _cairo_cff_font_load_cff can fail -after- allocating data, and then + data won't be freed either. + + Bug 56566 + + src/cairo-cff-subset.c | 6 +++--- + src/cairo-type1-subset.c | 2 ++ + 2 files changed, 5 insertions(+), 3 deletions(-) + +commit 0c800dc3f64ee030df1cd0a6a1dcd6df71502dea +Author: Adrian Johnson +AuthorDate: Tue Oct 30 19:23:30 2012 +1030 +Commit: Adrian Johnson +CommitDate: Tue Oct 30 19:23:30 2012 +1030 + + type1-subset: ensure subroutine numnber is an integer + + src/cairo-type1-subset.c | 21 ++++++++++++--------- + 1 file changed, 12 insertions(+), 9 deletions(-) + +commit 5a6e1d680a5bf1c4091e74f999abd611abd92334 +Author: Adrian Johnson +AuthorDate: Sun Oct 28 20:58:52 2012 +1030 +Commit: Adrian Johnson +CommitDate: Sun Oct 28 22:13:31 2012 +1030 + + type1-subset: restore correct callothersub behavior + + that was removed in d57e652f. Without this subsetting of subroutines + won't work for some fonts. + + src/cairo-type1-subset.c | 35 +++++++++++++++++++++++++++++------ + 1 file changed, 29 insertions(+), 6 deletions(-) + +commit 0e2458697848cf8c89c9d57fa9b64f0ea7bd0877 +Author: Chris Wilson +AuthorDate: Sun Oct 28 10:08:39 2012 +0000 +Commit: Chris Wilson +CommitDate: Sun Oct 28 10:13:04 2012 +0000 + + xlib/shm: Use shmstr.h instead of shmproto.h if available + + Before it was known as shmproto.h, the wire protocol definition was to + be found in shmstr.h, so if we don't have the current version of libXext + try to use the older includes. + + Reported-by: Sebastian Haas + Signed-off-by: Chris Wilson + + configure.ac | 2 +- + src/cairo-xlib-surface-shm.c | 6 +++++- + 2 files changed, 6 insertions(+), 2 deletions(-) + +commit f18199fcfb3b052c198041fc05156ae3d9e6aee7 +Author: Chris Wilson +AuthorDate: Sun Oct 28 10:04:12 2012 +0000 +Commit: Chris Wilson +CommitDate: Sun Oct 28 10:13:04 2012 +0000 + + xlib/shm: Check for XShm headers + + Not all version of libXext ship the same set of headers, so play safe + and check during configure that we have the headers we depend upon in + the code. + + Reported-by: Sebastian Haas + Signed-off-by: Chris Wilson + + configure.ac | 4 ++ + src/cairo-xlib-surface-shm.c | 99 ++++++++++++++++++++++++++++++++++++++++++-- + 2 files changed, 100 insertions(+), 3 deletions(-) + +commit d57e652f08f5ff7c334d01bc071962e6a131928f +Author: Adrian Johnson +AuthorDate: Fri Oct 26 23:00:01 2012 +1030 +Commit: Adrian Johnson +CommitDate: Fri Oct 26 23:00:01 2012 +1030 + + type1-subset: parse all operators + + The PDF at bug 56265 contained a Type 1 font that used the "div" + operator to compute the glyph width. As the "div" operator was + not handled by the charstring parser this resulted in an incorrect + glyph width in the PDF output. + + Fix this by upgrading the charstring parsing to handle all Type 1 + operators. + + src/cairo-type1-subset.c | 167 ++++++++++++++++++++++++++++------------------- + 1 file changed, 100 insertions(+), 67 deletions(-) + +commit fdd2082f923012a1354be7086d03f78fb166695b +Author: Chris Wilson +AuthorDate: Fri Oct 26 10:51:31 2012 +0100 +Commit: Chris Wilson +CommitDate: Fri Oct 26 11:31:14 2012 +0100 + + xlib: Check for both X.org and Xorg ServerVendors + + Martin Husemann reported that on his NetBSD machine the vendor was being + reported as "The Xorg Foundation", a non-conformist separatist split of + the Peoples' Liberation Army^W^W^W "The X.Org Foundation". Simply check + for both during initialisation. + + Reported-by: Martin Husemann + Signed-off-by: Chris Wilson + + src/cairo-xlib-display.c | 2 +- + src/cairo-xlib-private.h | 7 +++++++ + src/cairo-xlib-surface-shm.c | 2 +- + 3 files changed, 9 insertions(+), 2 deletions(-) + +commit 00feb8ce530a472abbde445b52d9ae8c99ec97f0 +Author: Chris Wilson +AuthorDate: Fri Oct 26 10:51:31 2012 +0100 +Commit: Chris Wilson +CommitDate: Fri Oct 26 10:59:05 2012 +0100 + + xlib/shm: Sanity check that the server handles XSendEvent with ShmCompletion + + Uli Schlachter suggested it would be wiser to complement our blacklist + of known broken X/libXext with an explicit roundtrip to check for a + BadValue error return when we try to use XSendEvent. + + Suggested-by: Uli Schlachter + Reported-by: Martin Husemann + Signed-off-by: Chris Wilson + + src/cairo-xlib-surface-shm.c | 77 +++++++++++++++++++++++++++++++++++++++----- + 1 file changed, 69 insertions(+), 8 deletions(-) + +commit e43f53bf7f3d371116f31f22ab9754b08b5abe7f +Author: Chris Wilson +AuthorDate: Mon Oct 22 13:47:11 2012 +0100 +Commit: Chris Wilson +CommitDate: Mon Oct 22 13:47:11 2012 +0100 + + version: Post release bump to 1.12.7 + + cairo-version.h | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit fab6958eff35a94cf46e38f19a7e75e10aa2b182 +Author: Chris Wilson +AuthorDate: Mon Oct 22 11:07:15 2012 +0100 +Commit: Chris Wilson +CommitDate: Mon Oct 22 11:07:15 2012 +0100 + + 1.12.6 release + + NEWS | 35 +++++++++++++++++++++++++++++++++++ + cairo-version.h | 2 +- + 2 files changed, 36 insertions(+), 1 deletion(-) + +commit d49b2284b505e93cd415af4da3cd2cc2d3d168d3 +Author: Gilles Espinasse +AuthorDate: Sat Oct 20 20:22:51 2012 +0200 +Commit: Chris Wilson +CommitDate: Sun Oct 21 17:32:53 2012 +0100 + + configure: fix unrecognized -Wno option + + gcc-4.4 and later accept every -Wno option. So we can test for the + option without no in the name to check if the option is supported. + + Each time a warning is emitted and without this fix, on gcc-4.4 that will + add this warning: + cc1: warning: unrecognized command line option "-Wno-unused-but-set-variable" + + bugs.freedesktop.org #51633, rediffed after 1.12.4 + + Of course this assumes that all compilers will behave like gcc, which is + reasonably implicit in the set of warning flags. + + Signed-off-by: Gilles Espinasse + [ickle: slight modification to test both -W and -Wno variants to ideally + preserve compatability with non-GCC compilers sharing GCC options!] + + build/configure.ac.warnings | 11 +++++++---- + 1 file changed, 7 insertions(+), 4 deletions(-) + +commit b12a94b98306d87689bad23dad4c0ec033037046 +Author: Gilles Espinasse +AuthorDate: Sat Oct 20 20:22:50 2012 +0200 +Commit: Chris Wilson +CommitDate: Sun Oct 21 09:36:28 2012 +0100 + + configure: fix PKG_CHECK_MODULES tests displaying no no + + Inside PKG_CHECK_MODULES, AC_MSG_RESULT(no) is already displayed, so the + caller should not use another AC_MSG_RESULT(no). + + Add a comment that empty ACTION-IF-NOT-FOUND is not allowed for + PKG_CHECK_MODULES, but a simple : is enough. + + This is bugs.freedesktop.org #51628, rediffed after 1.12.4 + + Signed-off-by: Gilles Espinasse + + build/aclocal.pkg.m4 | 2 ++ + configure.ac | 41 +++++++++++++++++------------------------ + 2 files changed, 19 insertions(+), 24 deletions(-) + +commit 813143c2205c12923519ce6dcf3c8e10f63f1085 +Author: Gilles Espinasse +AuthorDate: Sat Oct 20 23:06:44 2012 +0200 +Commit: Chris Wilson +CommitDate: Sun Oct 21 09:34:08 2012 +0100 + + ft: Fix compilation on 1.12 without FT_Get_X11_Font_Format + + Signed-off-by: Gilles Espinasse + + configure.ac | 2 +- + src/cairo-ft-font.c | 23 +++++++++++++++++------ + 2 files changed, 18 insertions(+), 7 deletions(-) + +commit c565bad8901dbe66e1402cdc2418986e96e698e3 +Author: Chris Wilson +AuthorDate: Fri Oct 19 12:22:58 2012 +0100 +Commit: Chris Wilson +CommitDate: Fri Oct 19 12:22:58 2012 +0100 + + pen: Relax invisibility criteria from half-tolerance to quarter-tolerance + + Inkscape is one user who sets geometric tolerance to 1.25 pixels when + stroking sub-pixel lines. Whilst we wait for inkscape to set sensible + values for their tolerance, we have to allow through the current values + in order to prevent the fine strokes from disappearing. + + Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=56099 + Signed-off-by: Chris Wilson + + src/cairo-pen.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 5041b462d084de8552336275914d30c23bf5dd35 +Author: Chris Wilson +AuthorDate: Fri Oct 19 12:04:50 2012 +0100 +Commit: Chris Wilson +CommitDate: Fri Oct 19 12:04:50 2012 +0100 + + xlib/shm: Sync the XShmAttach before removing the ShmSegment id + + Whilst reading through other users of XShm, it became apparent that + IPC_RMID behaves differently across the platforms. Linux allows + processes to attach to an existing ShmSegment id after a IPC_RMID, but + for others the IPC_RMID takes immediate effect. On those platforms + without a "deferred" IPC_RMID, we then need to perform the XShmAttach + synchronously before perfomring the IPC_RMID. + + Reported-by: Thomas Klausner + Signed-off-by: Chris Wilson + + configure.ac | 32 ++++++++++++++++++++++++++++++++ + src/cairo-xlib-surface-shm.c | 3 +++ + 2 files changed, 35 insertions(+) + +commit d5f9c694b9145f0464c8bd58d844bddedcb77d5e +Author: Uli Schlachter +AuthorDate: Tue Oct 16 17:09:42 2012 +0200 +Commit: Uli Schlachter +CommitDate: Tue Oct 16 17:09:42 2012 +0200 + + test: Define optional exception classes + + According to musl libc author: + + "C99 requires the FE_ macros to be defined if and only if the exception they + correspond to is supported" + + So we define these macros to 0 if they are not supported. Support for these FPU + exceptions is not necessary for correct functionality, but makes some tests less + effective. + + Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=55771 + Signed-off-by: Uli Schlachter + + test/cairo-test.c | 3 --- + test/cairo-test.h | 20 ++++++++++++++++++++ + test/invalid-matrix.c | 4 ---- + 3 files changed, 20 insertions(+), 7 deletions(-) + +commit db488a1703d4ef3bcbd54138b51c01600a2f4d3a +Author: Chris Wilson +AuthorDate: Thu Oct 11 17:00:57 2012 +0100 +Commit: Chris Wilson +CommitDate: Thu Oct 11 17:00:57 2012 +0100 + + recording: Copy across the is-clear? during snapshotting + + Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=55799 + Signed-off-by: Chris Wilson + + src/cairo-recording-surface.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit ed720007ba6be17434eb68b604fd36bd91c0d894 +Author: Henry Song +AuthorDate: Thu Oct 11 16:57:57 2012 +0100 +Commit: Chris Wilson +CommitDate: Thu Oct 11 16:57:57 2012 +0100 + + recording: copy reverses its dst and src parameters + + Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=55799 + + src/cairo-recording-surface.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 26c8accd41163d86711ba900bec7d9cd6591d8a3 +Author: Chris Wilson +AuthorDate: Thu Oct 11 16:52:07 2012 +0100 +Commit: Chris Wilson +CommitDate: Thu Oct 11 16:56:15 2012 +0100 + + xlib: Reorder CloseDisplay hooks + + As we may utilize X extensions as we shutdown and release resources + during CloseDisplay, we need to run our own callback first. If we run + last, than we reinstantiate the extensions which often have the + unfortunate habit of then persisting with stale data across the next + Display connection, causing invalid requests to be generated and raise + XErrors. + + Signed-off-by: Chris Wilson + + src/cairo-xlib-display.c | 34 +++++++++++++++++----------------- + 1 file changed, 17 insertions(+), 17 deletions(-) + +commit fbf528f46deaebc7d8cf38fc61be9e016f207575 +Author: Chris Wilson +AuthorDate: Tue Oct 9 17:37:53 2012 +0100 +Commit: Chris Wilson +CommitDate: Thu Oct 11 16:56:14 2012 +0100 + + compositor: Reduce glyph "overlap" if the inked pixels are opaque + + We can ignore the issue of overdraw if when we paint the glyphs, the + result is opaque. + + Signed-off-by: Chris Wilson + + src/cairo-composite-rectangles.c | 7 +++++++ + 1 file changed, 7 insertions(+) + +commit 66500ef29fea41ccda554f85d82a6aa3de774903 +Author: Henry Song +AuthorDate: Thu Sep 27 19:22:23 2012 +0000 +Commit: Chris Wilson +CommitDate: Thu Oct 11 16:56:13 2012 +0100 + + gl/traps: ensure RGBA surface before upload image to texture for GLES2 + + As GLESv2 may only use an RGBA surface as its source for texture + uploads, we therefore need to perform a conversion. + + src/cairo-gl-traps-compositor.c | 32 ++++++++++++++++++++++++++++++++ + 1 file changed, 32 insertions(+) + +commit 188c34b40d6f08851b4076ad11aefe69d4a78a25 +Author: Henry Song +AuthorDate: Thu Sep 27 18:25:52 2012 +0000 +Commit: Chris Wilson +CommitDate: Thu Oct 11 16:56:13 2012 +0100 + + gl: gles2 only supports GL_DEPTH24_STENCIL8_OES + + Patch also provided by U. Artie Eoff + Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=50355 + + src/cairo-gl-device.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit f78a9269228f2f48e8eb496e341ef990db39c6c3 +Author: Alexis Ballier +AuthorDate: Fri Sep 21 08:22:55 2012 -0300 +Commit: Uli Schlachter +CommitDate: Mon Oct 8 22:00:31 2012 +0200 + + cairo-sphinx: protect -ldl link with CAIRO_HAS_DL like in cairo-trace. + + Signed-off-by: Uli Schlachter + + util/cairo-sphinx/Makefile.am | 2 ++ + 1 file changed, 2 insertions(+) + +commit 3d2712d56a22f2a86fb80da94c3e55be8d26a330 +Author: Alexis Ballier +AuthorDate: Fri Sep 21 08:22:54 2012 -0300 +Commit: Uli Schlachter +CommitDate: Mon Oct 8 21:59:39 2012 +0200 + + cairo-fdr: protect -ldl link with CAIRO_HAS_DL like in cairo-trace. + + Signed-off-by: Uli Schlachter + + util/cairo-fdr/Makefile.am | 2 ++ + 1 file changed, 2 insertions(+) + +commit 9ab9916114db9917108198111d3232a18ae505ed +Author: Adrian Johnson +AuthorDate: Sun Oct 7 23:54:20 2012 +1030 +Commit: Adrian Johnson +CommitDate: Sun Oct 7 23:54:20 2012 +1030 + + remove debug code + + src/cairo-type1-subset.c | 2 -- + 1 file changed, 2 deletions(-) + +commit 9c2a92c70836b8534ef8c26d943fa17f891da105 +Author: Adrian Johnson +AuthorDate: Sun Oct 7 23:50:54 2012 +1030 +Commit: Adrian Johnson +CommitDate: Sun Oct 7 23:50:54 2012 +1030 + + type1: convert '.' to locale specific decimal point before using sscanf + + src/cairo-type1-subset.c | 31 +++++++++++++++++++++++++++---- + 1 file changed, 27 insertions(+), 4 deletions(-) + +commit 0d5f63755e7ceb1bb5678fcf1f4661f3435470fb +Author: David Maxwell +AuthorDate: Sun Oct 7 00:01:53 2012 -0800 +Commit: Adrian Johnson +CommitDate: Sun Oct 7 19:26:17 2012 +1030 + + type1-subset: always subset subroutines 0-3 (Flex/hint replacement) + + http://lists.cairographics.org/archives/cairo/2012-October/023576.html + + src/cairo-type1-subset.c | 6 ++++++ + 1 file changed, 6 insertions(+) + +commit 599e78ea2ee146c74fc7ffcee32a055dabbefdda +Author: David Maxwell +AuthorDate: Tue Oct 2 16:16:28 2012 -0800 +Commit: Adrian Johnson +CommitDate: Sun Oct 7 16:22:28 2012 +1030 + + type1: lenIV support + + http://lists.cairographics.org/archives/cairo/2012-October/023557.html + + src/cairo-type1-subset.c | 42 ++++++++++++++++++++++++++++++++++++++---- + 1 file changed, 38 insertions(+), 4 deletions(-) + +commit cffbdf50ce0117d62d6e157369c60e4a8572fd21 +Author: David Maxwell +AuthorDate: Tue Oct 2 16:16:28 2012 -0800 +Commit: Adrian Johnson +CommitDate: Sun Oct 7 16:22:13 2012 +1030 + + type1: buildchar stack fix + + http://lists.cairographics.org/archives/cairo/2012-October/023557.html + + src/cairo-type1-subset.c | 1 + + 1 file changed, 1 insertion(+) + +commit e29bb5f295d055068a24b629fa1bd5f06a93431b +Author: Chris Wilson +AuthorDate: Sat Oct 6 18:53:41 2012 +0100 +Commit: Chris Wilson +CommitDate: Sat Oct 6 18:53:41 2012 +0100 + + win32: Use the image surface below the fallback when unmapping an HDC + + As for a native window, the surface does not have an image delegate + itself but instead installs a fallback surface during map_to_image. So + during unmap_image, we then need to unmap from the fallback surface + instead. + + Signed-off-by: Chris Wilson + + src/win32/cairo-win32-display-surface.c | 1 + + 1 file changed, 1 insertion(+) + +commit 0251f0951d8dcdd198912326c11489823989a3eb +Author: Uli Schlachter +AuthorDate: Sat Oct 6 15:00:51 2012 +0200 +Commit: Uli Schlachter +CommitDate: Sat Oct 6 15:00:51 2012 +0200 + + xcb: Clear the result of create_similar_image + + The documentation of cairo_surface_create_similar_image() states that the + image's contents are initially all 0. However, the implementation didn't live up + to the documentation. + + This was found via the corresponding assert in + cairo_surface_create_similar_image(). + + There are some cairo-xcb-internal users of this function which cleared the image + right after creating it. Obviously, this isn't needed anymore. + + Fixes: Nothing. The existing call in the testsuite to + cairo_surface_create_similar_image() doesn't hit this issue, since it creates a + too small image to hit the SHM-case. + + Signed-off-by: Uli Schlachter + + src/cairo-xcb-surface-render.c | 14 -------------- + src/cairo-xcb-surface.c | 5 +++++ + 2 files changed, 5 insertions(+), 14 deletions(-) + +commit 15ef4a3248bbf32d05da7ed2480a2ce58c26d9bc +Author: Chris Wilson +AuthorDate: Fri Oct 5 19:46:41 2012 +0100 +Commit: Chris Wilson +CommitDate: Fri Oct 5 19:46:41 2012 +0100 + + xlib/shm: Note the bug is an interaction between libXext and xorg + + Søren thought it was bit harsh to lay the blame solely on xorg for it + crashing due to an unexpected input value, and that we should mention + libXext was also partly to blame for incorrectly setting the SEND_EVENT + bit in the ShmCompletionEvent. + + Signed-off-by: Chris Wilson + + src/cairo-xlib-surface-shm.c | 9 ++++++--- + 1 file changed, 6 insertions(+), 3 deletions(-) + +commit b1532f465e05d566f6d160c5ca916a5a12614067 +Author: Chris Wilson +AuthorDate: Fri Oct 5 19:20:18 2012 +0100 +Commit: Chris Wilson +CommitDate: Fri Oct 5 19:20:18 2012 +0100 + + xlib/shm: Avoid using XSendEvent with old versions of Xorg + + Søren Sandmann Pedersen pointed out that all versions of Xorg prior to + and including xorg-1.11.0 contained a bug that would cause them to crash + if they ever processed an event sent by XSendEvent. This was fixed in + + commit 2d2dce558d24eeea0eb011ec9ebaa6c5c2273c39 + Author: Sam Spilsbury + Date: Wed Sep 14 09:58:34 2011 +0800 + + Remove the SendEvent bit (0x80) before doing range checks on event type. + + so make sure we do not use XSendEvent prior to that commit, which + fortuitously is quite easy as we only do so along the ShmPixmap path. + + Reported-by: Søren Sandmann Pedersen + Signed-off-by: Chris Wilson + + src/cairo-xlib-surface-shm.c | 21 +++++++++++++++++++++ + 1 file changed, 21 insertions(+) + +commit dba46f4eab716c0148d278ba7cae0cb075b5df01 +Author: Chris Wilson +AuthorDate: Fri Oct 5 17:24:56 2012 +0100 +Commit: Chris Wilson +CommitDate: Fri Oct 5 17:24:56 2012 +0100 + + version: Post release bump to 1.12.5 + + cairo-version.h | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 117abd85ac7ff41e484fe0d98f16704ec30abd09 +Author: Chris Wilson +AuthorDate: Fri Oct 5 16:44:00 2012 +0100 +Commit: Chris Wilson +CommitDate: Fri Oct 5 16:44:00 2012 +0100 + + 1.12.4 release + + NEWS | 69 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ + cairo-version.h | 2 +- + 2 files changed, 70 insertions(+), 1 deletion(-) + +commit 6c6a69761048cfad210160035ae32ccb49967d5d +Author: Chris Wilson +AuthorDate: Fri Oct 5 14:55:28 2012 +0100 +Commit: Chris Wilson +CommitDate: Fri Oct 5 14:55:28 2012 +0100 + + win32: Compile fix for mismatched surface types + + win32/cairo-win32-display-surface.c:472: error: structure has no member + named 'base' + + Signed-off-by: Chris Wilson + + src/win32/cairo-win32-display-surface.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +commit ccf694d060dd9ea41939fc1c5847d23d3a422b75 +Author: Chris Wilson +AuthorDate: Fri Oct 5 13:36:30 2012 +0100 +Commit: Chris Wilson +CommitDate: Fri Oct 5 13:36:30 2012 +0100 + + xlib/shm: Discard SHM surfaces upon CloseDisplay + + Fixes xlib-surface-source + Signed-off-by: Chris Wilson + + src/cairo-xlib-surface-shm.c | 14 ++++++++++++++ + 1 file changed, 14 insertions(+) + +commit 8488ae022de45b441f29c3e90e16d5cca3082d20 +Author: Chris Wilson +AuthorDate: Fri Oct 5 13:08:26 2012 +0100 +Commit: Chris Wilson +CommitDate: Fri Oct 5 13:29:06 2012 +0100 + + test: Refresh reference images for slight alteration of curves + + test/reference/a1-fill.base.ref.png | Bin 328 -> 0 bytes + test/reference/a1-tiger.traps.argb32.ref.png | Bin 20406 -> 20326 bytes + test/reference/a1-tiger.traps.rgb24.ref.png | Bin 20406 -> 20326 bytes + test/reference/arc-direction.base.ref.png | Bin 5864 -> 0 bytes + test/reference/arc-looping-dash.argb32.ref.png | Bin 464 -> 0 bytes + .../reference/arc-looping-dash.base.argb32.ref.png | Bin 470 -> 0 bytes + test/reference/arc-looping-dash.base.rgb24.ref.png | Bin 470 -> 0 bytes + test/reference/arc-looping-dash.ref.png | Bin 348 -> 502 bytes + test/reference/arc-looping-dash.rgb24.ref.png | Bin 464 -> 0 bytes + .../arc-looping-dash.traps.argb32.ref.png | Bin 470 -> 496 bytes + .../reference/arc-looping-dash.traps.rgb24.ref.png | Bin 470 -> 496 bytes + test/reference/bug-bo-ricotz.base.ref.png | Bin 2125 -> 0 bytes + test/reference/bug-bo-ricotz.traps.argb32.ref.png | Bin 2128 -> 2125 bytes + test/reference/bug-bo-ricotz.traps.rgb24.ref.png | Bin 2128 -> 2125 bytes + test/reference/bug-spline.ref.png | Bin 5476 -> 5577 bytes + test/reference/caps-joins-alpha.argb32.ref.png | Bin 2662 -> 0 bytes + .../reference/caps-joins-alpha.base.argb32.ref.png | Bin 2278 -> 0 bytes + test/reference/caps-joins-alpha.base.rgb24.ref.png | Bin 2278 -> 0 bytes + test/reference/caps-joins-alpha.ref.png | Bin 2345 -> 2643 bytes + test/reference/caps-joins-alpha.rgb24.ref.png | Bin 2662 -> 0 bytes + .../caps-joins-alpha.traps.argb32.ref.png | Bin 2278 -> 2265 bytes + .../reference/caps-joins-alpha.traps.rgb24.ref.png | Bin 2278 -> 2265 bytes + test/reference/caps-joins-curve.argb32.ref.png | Bin 6217 -> 0 bytes + .../reference/caps-joins-curve.base.argb32.ref.png | Bin 5368 -> 0 bytes + test/reference/caps-joins-curve.base.rgb24.ref.png | Bin 5368 -> 0 bytes + test/reference/caps-joins-curve.ref.png | Bin 4527 -> 6228 bytes + test/reference/caps-joins-curve.rgb24.ref.png | Bin 6217 -> 0 bytes + .../caps-joins-curve.traps.argb32.ref.png | Bin 5368 -> 5327 bytes + .../reference/caps-joins-curve.traps.rgb24.ref.png | Bin 5368 -> 5327 bytes + test/reference/caps-joins.base.argb32.ref.png | Bin 2374 -> 2363 bytes + test/reference/caps-joins.base.rgb24.ref.png | Bin 2374 -> 2363 bytes + test/reference/caps-joins.traps.argb32.ref.png | Bin 2374 -> 2363 bytes + test/reference/caps-joins.traps.rgb24.ref.png | Bin 2374 -> 2363 bytes + test/reference/caps-sub-paths.base.argb32.ref.png | Bin 166 -> 166 bytes + test/reference/caps-sub-paths.base.rgb24.ref.png | Bin 166 -> 166 bytes + test/reference/caps-sub-paths.traps.argb32.ref.png | Bin 166 -> 166 bytes + test/reference/caps-sub-paths.traps.rgb24.ref.png | Bin 166 -> 166 bytes + test/reference/caps-tails-curve.argb32.ref.png | Bin 53311 -> 0 bytes + .../reference/caps-tails-curve.base.argb32.ref.png | Bin 50228 -> 0 bytes + test/reference/caps-tails-curve.base.rgb24.ref.png | Bin 50228 -> 0 bytes + test/reference/caps-tails-curve.ref.png | Bin 41476 -> 54750 bytes + test/reference/caps-tails-curve.rgb24.ref.png | Bin 53311 -> 0 bytes + .../caps-tails-curve.traps.argb32.ref.png | Bin 50228 -> 50617 bytes + .../reference/caps-tails-curve.traps.rgb24.ref.png | Bin 50228 -> 50617 bytes + test/reference/caps.base.argb32.ref.png | Bin 1601 -> 1637 bytes + test/reference/caps.base.rgb24.ref.png | Bin 1601 -> 1637 bytes + test/reference/caps.traps.argb32.ref.png | Bin 1601 -> 1637 bytes + test/reference/caps.traps.rgb24.ref.png | Bin 1601 -> 1637 bytes + test/reference/clear-source.base.argb32.ref.png | Bin 882 -> 882 bytes + test/reference/clear-source.base.rgb24.ref.png | Bin 882 -> 882 bytes + test/reference/clear-source.traps.argb32.ref.png | Bin 882 -> 882 bytes + test/reference/clear-source.traps.rgb24.ref.png | Bin 882 -> 882 bytes + test/reference/clip-operator.base.argb32.ref.png | Bin 8182 -> 8136 bytes + test/reference/clip-operator.traps.argb32.ref.png | Bin 8160 -> 8114 bytes + test/reference/clip-polygons.base.ref.png | Bin 1296 -> 0 bytes + test/reference/clip-polygons.traps.argb32.ref.png | Bin 1336 -> 1268 bytes + test/reference/clip-polygons.traps.rgb24.ref.png | Bin 1336 -> 1268 bytes + test/reference/clip-rectilinear.base.ref.png | Bin 440 -> 0 bytes + test/reference/clip-stroke.ref.png | Bin 1445 -> 1419 bytes + .../close-path-current-point.base.argb32.ref.png | Bin 2008 -> 1904 bytes + .../close-path-current-point.base.rgb24.ref.png | Bin 2008 -> 1904 bytes + .../close-path-current-point.traps.argb32.ref.png | Bin 2008 -> 1904 bytes + .../close-path-current-point.traps.rgb24.ref.png | Bin 2008 -> 1904 bytes + test/reference/curve-to-as-line-to.argb32.ref.png | Bin 109 -> 0 bytes + .../curve-to-as-line-to.base.argb32.ref.png | Bin 107 -> 95 bytes + .../curve-to-as-line-to.base.rgb24.ref.png | Bin 107 -> 95 bytes + test/reference/curve-to-as-line-to.rgb24.ref.png | Bin 109 -> 0 bytes + .../curve-to-as-line-to.traps.argb32.ref.png | Bin 107 -> 95 bytes + .../curve-to-as-line-to.traps.rgb24.ref.png | Bin 107 -> 95 bytes + test/reference/dash-caps-joins.argb32.ref.png | Bin 5157 -> 0 bytes + test/reference/dash-caps-joins.base.argb32.ref.png | Bin 4521 -> 4483 bytes + test/reference/dash-caps-joins.base.rgb24.ref.png | Bin 4521 -> 4483 bytes + test/reference/dash-caps-joins.ref.png | Bin 4030 -> 5089 bytes + test/reference/dash-caps-joins.rgb24.ref.png | Bin 5157 -> 0 bytes + .../reference/dash-caps-joins.traps.argb32.ref.png | Bin 4521 -> 4483 bytes + test/reference/dash-caps-joins.traps.rgb24.ref.png | Bin 4521 -> 4483 bytes + test/reference/dash-curve.argb32.ref.png | Bin 41040 -> 0 bytes + test/reference/dash-curve.base.argb32.ref.png | Bin 40040 -> 0 bytes + test/reference/dash-curve.base.rgb24.ref.png | Bin 40040 -> 0 bytes + test/reference/dash-curve.ref.png | Bin 22615 -> 40945 bytes + test/reference/dash-curve.rgb24.ref.png | Bin 41040 -> 0 bytes + test/reference/dash-curve.traps.argb32.ref.png | Bin 40040 -> 39925 bytes + test/reference/dash-curve.traps.rgb24.ref.png | Bin 40040 -> 39925 bytes + .../dash-infinite-loop.base.argb32.ref.png | Bin 835 -> 642 bytes + .../dash-infinite-loop.base.rgb24.ref.png | Bin 835 -> 642 bytes + .../dash-infinite-loop.traps.argb32.ref.png | Bin 835 -> 642 bytes + .../dash-infinite-loop.traps.rgb24.ref.png | Bin 835 -> 642 bytes + test/reference/dash-scale.argb32.ref.png | Bin 8913 -> 0 bytes + test/reference/dash-scale.base.argb32.ref.png | Bin 7621 -> 0 bytes + test/reference/dash-scale.base.rgb24.ref.png | Bin 7621 -> 0 bytes + test/reference/dash-scale.ref.png | Bin 6314 -> 8831 bytes + test/reference/dash-scale.rgb24.ref.png | Bin 8913 -> 0 bytes + test/reference/dash-scale.traps.argb32.ref.png | Bin 7621 -> 7627 bytes + test/reference/dash-scale.traps.rgb24.ref.png | Bin 7621 -> 7627 bytes + test/reference/dash-state.base.argb32.ref.png | Bin 7628 -> 7509 bytes + test/reference/dash-state.base.rgb24.ref.png | Bin 7628 -> 7509 bytes + test/reference/dash-state.traps.argb32.ref.png | Bin 7628 -> 7509 bytes + test/reference/dash-state.traps.rgb24.ref.png | Bin 7628 -> 7509 bytes + .../reference/dash-zero-length.base.argb32.ref.png | Bin 219 -> 219 bytes + test/reference/dash-zero-length.base.rgb24.ref.png | Bin 199 -> 199 bytes + test/reference/dash-zero-length.rgb24.ref.png | Bin 210 -> 208 bytes + .../dash-zero-length.traps.argb32.ref.png | Bin 219 -> 219 bytes + .../reference/dash-zero-length.traps.rgb24.ref.png | Bin 199 -> 199 bytes + test/reference/degenerate-arc.base.argb32.ref.png | Bin 547 -> 574 bytes + test/reference/degenerate-arc.base.rgb24.ref.png | Bin 547 -> 574 bytes + test/reference/degenerate-arc.ref.png | Bin 646 -> 692 bytes + test/reference/degenerate-arc.traps.argb32.ref.png | Bin 547 -> 574 bytes + test/reference/degenerate-arc.traps.rgb24.ref.png | Bin 547 -> 574 bytes + test/reference/degenerate-curve-to.argb32.ref.png | Bin 280 -> 0 bytes + .../degenerate-curve-to.base.argb32.ref.png | Bin 283 -> 282 bytes + .../degenerate-curve-to.base.rgb24.ref.png | Bin 283 -> 282 bytes + test/reference/degenerate-curve-to.ref.png | Bin 227 -> 285 bytes + test/reference/degenerate-curve-to.rgb24.ref.png | Bin 280 -> 0 bytes + .../degenerate-curve-to.traps.argb32.ref.png | Bin 283 -> 282 bytes + .../degenerate-curve-to.traps.rgb24.ref.png | Bin 283 -> 282 bytes + test/reference/degenerate-dash.argb32.ref.png | Bin 2086 -> 0 bytes + test/reference/degenerate-dash.base.argb32.ref.png | Bin 1898 -> 1911 bytes + test/reference/degenerate-dash.base.rgb24.ref.png | Bin 1898 -> 1911 bytes + test/reference/degenerate-dash.ref.png | Bin 1845 -> 1985 bytes + test/reference/degenerate-dash.rgb24.ref.png | Bin 2086 -> 0 bytes + .../reference/degenerate-dash.traps.argb32.ref.png | Bin 1898 -> 1911 bytes + test/reference/degenerate-dash.traps.rgb24.ref.png | Bin 1898 -> 1911 bytes + test/reference/degenerate-path.argb32.ref.png | Bin 250 -> 251 bytes + test/reference/degenerate-path.base.argb32.ref.png | Bin 249 -> 237 bytes + test/reference/degenerate-path.base.rgb24.ref.png | Bin 217 -> 204 bytes + test/reference/degenerate-path.rgb24.ref.png | Bin 219 -> 219 bytes + .../reference/degenerate-path.traps.argb32.ref.png | Bin 249 -> 237 bytes + test/reference/degenerate-path.traps.rgb24.ref.png | Bin 217 -> 204 bytes + .../degenerate-rel-curve-to.argb32.ref.png | Bin 277 -> 0 bytes + .../degenerate-rel-curve-to.base.argb32.ref.png | Bin 278 -> 278 bytes + .../degenerate-rel-curve-to.base.rgb24.ref.png | Bin 278 -> 278 bytes + test/reference/degenerate-rel-curve-to.ref.png | Bin 227 -> 278 bytes + .../degenerate-rel-curve-to.rgb24.ref.png | Bin 277 -> 0 bytes + .../degenerate-rel-curve-to.traps.argb32.ref.png | Bin 278 -> 278 bytes + .../degenerate-rel-curve-to.traps.rgb24.ref.png | Bin 278 -> 278 bytes + test/reference/drunkard-tails.argb32.ref.png | Bin 6116 -> 0 bytes + test/reference/drunkard-tails.base.argb32.ref.png | Bin 6036 -> 6176 bytes + test/reference/drunkard-tails.base.rgb24.ref.png | Bin 6036 -> 6176 bytes + test/reference/drunkard-tails.ref.png | Bin 3853 -> 6261 bytes + test/reference/drunkard-tails.rgb24.ref.png | Bin 6116 -> 0 bytes + test/reference/drunkard-tails.traps.argb32.ref.png | Bin 6036 -> 6176 bytes + test/reference/drunkard-tails.traps.rgb24.ref.png | Bin 6036 -> 6176 bytes + .../ft-text-vertical-layout-type3.argb32.ref.png | Bin 3610 -> 0 bytes + .../ft-text-vertical-layout-type3.ref.png | Bin 3222 -> 3608 bytes + .../ft-text-vertical-layout-type3.rgb24.ref.png | Bin 3610 -> 0 bytes + test/reference/halo-transform.traps.argb32.ref.png | Bin 15063 -> 15122 bytes + test/reference/halo-transform.traps.rgb24.ref.png | Bin 15063 -> 15122 bytes + test/reference/joins-loop.base.argb32.ref.png | Bin 4202 -> 4191 bytes + test/reference/joins-loop.base.rgb24.ref.png | Bin 4202 -> 4191 bytes + test/reference/joins-loop.traps.argb32.ref.png | Bin 4202 -> 4191 bytes + test/reference/joins-loop.traps.rgb24.ref.png | Bin 4202 -> 4191 bytes + test/reference/joins-retrace.argb32.ref.png | Bin 4997 -> 0 bytes + test/reference/joins-retrace.base.argb32.ref.png | Bin 4667 -> 4566 bytes + test/reference/joins-retrace.base.rgb24.ref.png | Bin 4667 -> 4566 bytes + test/reference/joins-retrace.ref.png | Bin 3951 -> 4900 bytes + test/reference/joins-retrace.rgb24.ref.png | Bin 4997 -> 0 bytes + test/reference/joins-retrace.traps.argb32.ref.png | Bin 4667 -> 4566 bytes + test/reference/joins-retrace.traps.rgb24.ref.png | Bin 4667 -> 4566 bytes + test/reference/joins-star.base.argb32.ref.png | Bin 3583 -> 3542 bytes + test/reference/joins-star.base.rgb24.ref.png | Bin 3583 -> 3542 bytes + test/reference/joins-star.traps.argb32.ref.png | Bin 3583 -> 3542 bytes + test/reference/joins-star.traps.rgb24.ref.png | Bin 3583 -> 3542 bytes + test/reference/joins.argb32.ref.png | Bin 6970 -> 0 bytes + test/reference/joins.base.argb32.ref.png | Bin 5684 -> 5732 bytes + test/reference/joins.base.rgb24.ref.png | Bin 5684 -> 5732 bytes + test/reference/joins.ref.png | Bin 4880 -> 7153 bytes + test/reference/joins.rgb24.ref.png | Bin 6970 -> 0 bytes + test/reference/joins.traps.argb32.ref.png | Bin 5684 -> 5732 bytes + test/reference/joins.traps.rgb24.ref.png | Bin 5684 -> 5732 bytes + .../large-twin-antialias-mixed.base.argb32.ref.png | Bin 16660 -> 16630 bytes + .../large-twin-antialias-mixed.base.rgb24.ref.png | Bin 16660 -> 16630 bytes + ...large-twin-antialias-mixed.traps.argb32.ref.png | Bin 16660 -> 16630 bytes + .../large-twin-antialias-mixed.traps.rgb24.ref.png | Bin 16660 -> 16630 bytes + .../leaky-dashed-rectangle.traps.argb32.ref.png | Bin 344 -> 345 bytes + .../leaky-dashed-rectangle.traps.rgb24.ref.png | Bin 344 -> 345 bytes + ...width-large-overlap-dashed.traps.argb32.ref.png | Bin 343 -> 340 bytes + ...-width-large-overlap-dashed.traps.rgb24.ref.png | Bin 343 -> 340 bytes + .../line-width-large-overlap-rotated.base.ref.png | Bin 404 -> 0 bytes + ...idth-large-overlap-rotated.traps.argb32.ref.png | Bin 427 -> 404 bytes + ...width-large-overlap-rotated.traps.rgb24.ref.png | Bin 427 -> 404 bytes + .../line-width-overlap-dashed.traps.argb32.ref.png | Bin 401 -> 407 bytes + .../line-width-overlap-dashed.traps.rgb24.ref.png | Bin 401 -> 407 bytes + .../long-dashed-lines.base.argb32.ref.png | Bin 2071 -> 2079 bytes + .../reference/long-dashed-lines.base.rgb24.ref.png | Bin 2071 -> 2079 bytes + .../long-dashed-lines.traps.argb32.ref.png | Bin 2071 -> 2079 bytes + .../long-dashed-lines.traps.rgb24.ref.png | Bin 2071 -> 2079 bytes + test/reference/miter-precision.base.argb32.ref.png | Bin 818 -> 823 bytes + test/reference/miter-precision.base.rgb24.ref.png | Bin 818 -> 823 bytes + .../reference/miter-precision.traps.argb32.ref.png | Bin 818 -> 823 bytes + test/reference/miter-precision.traps.rgb24.ref.png | Bin 818 -> 823 bytes + .../operator-alpha-alpha.base.argb32.ref.png | Bin 3441 -> 3402 bytes + .../operator-alpha-alpha.base.rgb24.ref.png | Bin 3441 -> 3402 bytes + .../operator-alpha-alpha.traps.argb32.ref.png | Bin 3441 -> 3402 bytes + .../operator-alpha-alpha.traps.rgb24.ref.png | Bin 3441 -> 3402 bytes + test/reference/operator-clear.rgb24.ref.png | Bin 947 -> 946 bytes + test/reference/operator-source.argb32.ref.png | Bin 5612 -> 5614 bytes + test/reference/operator-source.rgb24.ref.png | Bin 3975 -> 4012 bytes + .../reference/overlapping-dash-caps.argb32.ref.png | Bin 3986 -> 0 bytes + .../overlapping-dash-caps.base.argb32.ref.png | Bin 3952 -> 3967 bytes + .../overlapping-dash-caps.base.rgb24.ref.png | Bin 3952 -> 3967 bytes + test/reference/overlapping-dash-caps.ref.png | Bin 2424 -> 3979 bytes + test/reference/overlapping-dash-caps.rgb24.ref.png | Bin 3986 -> 0 bytes + .../overlapping-dash-caps.traps.argb32.ref.png | Bin 3952 -> 3967 bytes + .../overlapping-dash-caps.traps.rgb24.ref.png | Bin 3952 -> 3967 bytes + test/reference/random-clip.ref.png | Bin 525962 -> 526034 bytes + .../record-extend-none-similar.base.argb32.ref.png | Bin 293 -> 279 bytes + .../record-extend-none-similar.base.rgb24.ref.png | Bin 293 -> 279 bytes + ...record-extend-none-similar.traps.argb32.ref.png | Bin 293 -> 279 bytes + .../record-extend-none-similar.traps.rgb24.ref.png | Bin 293 -> 279 bytes + .../record-extend-pad-similar.base.argb32.ref.png | Bin 298 -> 283 bytes + .../record-extend-pad-similar.base.rgb24.ref.png | Bin 298 -> 283 bytes + .../record-extend-pad-similar.traps.argb32.ref.png | Bin 298 -> 283 bytes + .../record-extend-pad-similar.traps.rgb24.ref.png | Bin 298 -> 283 bytes + ...cord-extend-reflect-similar.base.argb32.ref.png | Bin 335 -> 283 bytes + ...ecord-extend-reflect-similar.base.rgb24.ref.png | Bin 335 -> 283 bytes + ...ord-extend-reflect-similar.traps.argb32.ref.png | Bin 335 -> 283 bytes + ...cord-extend-reflect-similar.traps.rgb24.ref.png | Bin 335 -> 283 bytes + ...ecord-extend-repeat-similar.base.argb32.ref.png | Bin 286 -> 283 bytes + ...record-extend-repeat-similar.base.rgb24.ref.png | Bin 286 -> 283 bytes + ...cord-extend-repeat-similar.traps.argb32.ref.png | Bin 286 -> 283 bytes + ...ecord-extend-repeat-similar.traps.rgb24.ref.png | Bin 286 -> 283 bytes + .../record-fill-alpha.base.argb32.ref.png | Bin 2824 -> 2853 bytes + .../reference/record-fill-alpha.base.rgb24.ref.png | Bin 2824 -> 2853 bytes + ...ecord-paint-alpha-clip-mask.base.argb32.ref.png | Bin 330 -> 337 bytes + ...record-paint-alpha-clip-mask.base.rgb24.ref.png | Bin 330 -> 337 bytes + .../record-paint-alpha-clip.base.argb32.ref.png | Bin 269 -> 299 bytes + .../record-paint-alpha-clip.base.rgb24.ref.png | Bin 269 -> 299 bytes + .../record-select-font-face.base.argb32.ref.png | Bin 2250 -> 1417 bytes + .../record-select-font-face.base.rgb24.ref.png | Bin 2250 -> 1417 bytes + .../record-self-intersecting.base.argb32.ref.png | Bin 208 -> 168 bytes + .../record-self-intersecting.base.rgb24.ref.png | Bin 208 -> 168 bytes + .../record-text-transform.base.argb32.ref.png | Bin 5579 -> 5281 bytes + .../record-text-transform.base.rgb24.ref.png | Bin 5579 -> 5281 bytes + .../record1414x-fill-alpha.base.argb32.ref.png | Bin 4191 -> 4138 bytes + .../record1414x-fill-alpha.base.rgb24.ref.png | Bin 4191 -> 4138 bytes + ...ecord1414x-paint-alpha-clip-mask.argb32.ref.png | Bin 473 -> 560 bytes + ...1414x-paint-alpha-clip-mask.base.argb32.ref.png | Bin 466 -> 514 bytes + ...d1414x-paint-alpha-clip-mask.base.rgb24.ref.png | Bin 466 -> 514 bytes + ...record1414x-paint-alpha-clip-mask.rgb24.ref.png | Bin 473 -> 560 bytes + ...ecord1414x-paint-alpha-clip.base.argb32.ref.png | Bin 380 -> 402 bytes + ...record1414x-paint-alpha-clip.base.rgb24.ref.png | Bin 380 -> 402 bytes + ...414x-paint-alpha-solid-clip.base.argb32.ref.png | Bin 317 -> 317 bytes + ...1414x-paint-alpha-solid-clip.base.rgb24.ref.png | Bin 317 -> 317 bytes + ...ecord1414x-select-font-face.base.argb32.ref.png | Bin 3177 -> 2018 bytes + ...record1414x-select-font-face.base.rgb24.ref.png | Bin 3177 -> 2018 bytes + ...cord1414x-self-intersecting.base.argb32.ref.png | Bin 353 -> 385 bytes + ...ecord1414x-self-intersecting.base.rgb24.ref.png | Bin 353 -> 385 bytes + .../record1414x-text-transform.base.argb32.ref.png | Bin 8706 -> 8368 bytes + .../record1414x-text-transform.base.rgb24.ref.png | Bin 8706 -> 8368 bytes + .../record2x-fill-alpha.base.argb32.ref.png | Bin 5896 -> 5724 bytes + .../record2x-fill-alpha.base.rgb24.ref.png | Bin 5896 -> 5724 bytes + .../record2x-paint-alpha-clip-mask.argb32.ref.png | Bin 503 -> 534 bytes + ...ord2x-paint-alpha-clip-mask.base.argb32.ref.png | Bin 488 -> 501 bytes + ...cord2x-paint-alpha-clip-mask.base.rgb24.ref.png | Bin 488 -> 501 bytes + .../record2x-paint-alpha-clip-mask.rgb24.ref.png | Bin 503 -> 534 bytes + .../record2x-select-font-face.base.argb32.ref.png | Bin 4407 -> 3096 bytes + .../record2x-select-font-face.base.rgb24.ref.png | Bin 4407 -> 3096 bytes + .../record2x-text-transform.base.argb32.ref.png | Bin 13476 -> 13174 bytes + .../record2x-text-transform.base.rgb24.ref.png | Bin 13476 -> 13174 bytes + .../record90-fill-alpha.base.argb32.ref.png | Bin 2658 -> 2628 bytes + .../record90-fill-alpha.base.rgb24.ref.png | Bin 2658 -> 2628 bytes + ...ord90-paint-alpha-clip-mask.base.argb32.ref.png | Bin 332 -> 343 bytes + ...cord90-paint-alpha-clip-mask.base.rgb24.ref.png | Bin 332 -> 343 bytes + .../record90-paint-alpha-clip.base.argb32.ref.png | Bin 279 -> 327 bytes + .../record90-paint-alpha-clip.base.rgb24.ref.png | Bin 279 -> 327 bytes + ...rd90-paint-alpha-solid-clip.base.argb32.ref.png | Bin 254 -> 279 bytes + ...ord90-paint-alpha-solid-clip.base.rgb24.ref.png | Bin 254 -> 279 bytes + .../record90-select-font-face.base.argb32.ref.png | Bin 2272 -> 1480 bytes + .../record90-select-font-face.base.rgb24.ref.png | Bin 2272 -> 1480 bytes + .../record90-self-intersecting.base.argb32.ref.png | Bin 208 -> 208 bytes + .../record90-self-intersecting.base.rgb24.ref.png | Bin 208 -> 208 bytes + .../record90-text-transform.base.argb32.ref.png | Bin 5811 -> 5481 bytes + .../record90-text-transform.base.rgb24.ref.png | Bin 5811 -> 5481 bytes + test/reference/reflected-stroke.argb32.ref.png | Bin 5119 -> 0 bytes + .../reference/reflected-stroke.base.argb32.ref.png | Bin 4994 -> 5053 bytes + test/reference/reflected-stroke.base.rgb24.ref.png | Bin 4994 -> 5053 bytes + test/reference/reflected-stroke.ref.png | Bin 3410 -> 5139 bytes + test/reference/reflected-stroke.rgb24.ref.png | Bin 5119 -> 0 bytes + .../reflected-stroke.traps.argb32.ref.png | Bin 4994 -> 5053 bytes + .../reference/reflected-stroke.traps.rgb24.ref.png | Bin 4994 -> 5053 bytes + .../rounded-rectangle-stroke.base.argb32.ref.png | Bin 1060 -> 856 bytes + .../rounded-rectangle-stroke.base.rgb24.ref.png | Bin 1060 -> 856 bytes + .../rounded-rectangle-stroke.traps.argb32.ref.png | Bin 1060 -> 856 bytes + .../rounded-rectangle-stroke.traps.rgb24.ref.png | Bin 1060 -> 856 bytes + .../spline-decomposition.base.argb32.ref.png | Bin 19075 -> 19089 bytes + .../spline-decomposition.base.rgb24.ref.png | Bin 19075 -> 19089 bytes + .../spline-decomposition.traps.argb32.ref.png | Bin 19075 -> 19089 bytes + .../spline-decomposition.traps.rgb24.ref.png | Bin 19075 -> 19089 bytes + test/reference/stroke-ctm-caps.argb32.ref.png | Bin 942 -> 0 bytes + test/reference/stroke-ctm-caps.base.argb32.ref.png | Bin 873 -> 835 bytes + test/reference/stroke-ctm-caps.base.rgb24.ref.png | Bin 873 -> 835 bytes + test/reference/stroke-ctm-caps.ref.png | Bin 921 -> 896 bytes + test/reference/stroke-ctm-caps.rgb24.ref.png | Bin 942 -> 0 bytes + .../reference/stroke-ctm-caps.traps.argb32.ref.png | Bin 873 -> 835 bytes + test/reference/stroke-ctm-caps.traps.rgb24.ref.png | Bin 873 -> 835 bytes + .../reference/subsurface-scale.base.argb32.ref.png | Bin 5921 -> 5919 bytes + test/reference/subsurface-scale.base.ref.png | Bin 5216 -> 0 bytes + test/reference/subsurface-scale.base.rgb24.ref.png | Bin 5921 -> 5919 bytes + .../subsurface-scale.traps.argb32.ref.png | Bin 5921 -> 5919 bytes + .../reference/subsurface-scale.traps.rgb24.ref.png | Bin 5921 -> 5919 bytes + test/reference/subsurface.base.argb32.ref.png | Bin 1811 -> 1801 bytes + test/reference/subsurface.base.rgb24.ref.png | Bin 1811 -> 1801 bytes + test/reference/subsurface.traps.argb32.ref.png | Bin 1811 -> 1801 bytes + test/reference/subsurface.traps.rgb24.ref.png | Bin 1811 -> 1801 bytes + .../surface-pattern-operator.base.argb32.ref.png | Bin 5184 -> 5107 bytes + .../surface-pattern-operator.traps.argb32.ref.png | Bin 5184 -> 5107 bytes + test/reference/twin-antialias-gray.argb32.ref.png | Bin 3990 -> 0 bytes + .../twin-antialias-gray.base.argb32.ref.png | Bin 4392 -> 4320 bytes + .../twin-antialias-gray.base.rgb24.ref.png | Bin 4392 -> 4320 bytes + test/reference/twin-antialias-gray.ref.png | Bin 2292 -> 3948 bytes + test/reference/twin-antialias-gray.rgb24.ref.png | Bin 3990 -> 0 bytes + .../twin-antialias-gray.traps.argb32.ref.png | Bin 4392 -> 4320 bytes + .../twin-antialias-gray.traps.rgb24.ref.png | Bin 4392 -> 4320 bytes + .../twin-antialias-mixed.base.argb32.ref.png | Bin 2230 -> 2340 bytes + .../twin-antialias-mixed.base.rgb24.ref.png | Bin 2230 -> 2340 bytes + .../twin-antialias-mixed.traps.argb32.ref.png | Bin 2230 -> 2340 bytes + .../twin-antialias-mixed.traps.rgb24.ref.png | Bin 2230 -> 2340 bytes + .../twin-antialias-subpixel.argb32.ref.png | Bin 3990 -> 0 bytes + .../twin-antialias-subpixel.base.argb32.ref.png | Bin 4392 -> 4320 bytes + .../twin-antialias-subpixel.base.rgb24.ref.png | Bin 4392 -> 4320 bytes + test/reference/twin-antialias-subpixel.ref.png | Bin 2292 -> 3948 bytes + .../twin-antialias-subpixel.rgb24.ref.png | Bin 3990 -> 0 bytes + .../twin-antialias-subpixel.traps.argb32.ref.png | Bin 4392 -> 4320 bytes + .../twin-antialias-subpixel.traps.rgb24.ref.png | Bin 4392 -> 4320 bytes + test/reference/twin.argb32.ref.png | Bin 3990 -> 0 bytes + test/reference/twin.base.argb32.ref.png | Bin 4392 -> 4320 bytes + test/reference/twin.base.rgb24.ref.png | Bin 4392 -> 4320 bytes + test/reference/twin.ref.png | Bin 2292 -> 3948 bytes + test/reference/twin.rgb24.ref.png | Bin 3990 -> 0 bytes + test/reference/twin.traps.argb32.ref.png | Bin 4392 -> 4320 bytes + test/reference/twin.traps.rgb24.ref.png | Bin 4392 -> 4320 bytes + .../unantialiased-shapes.traps.argb32.ref.png | Bin 3977 -> 3932 bytes + .../unantialiased-shapes.traps.rgb24.ref.png | Bin 3977 -> 3932 bytes + test/reference/unbounded-operator.rgb24.ref.png | Bin 1333 -> 1333 bytes + .../unbounded-operator.traps.argb32.ref.png | Bin 2648 -> 2764 bytes + .../unbounded-operator.traps.rgb24.ref.png | Bin 1269 -> 1302 bytes + .../reference/unclosed-strokes.base.argb32.ref.png | Bin 1482 -> 1452 bytes + test/reference/unclosed-strokes.base.rgb24.ref.png | Bin 1482 -> 1452 bytes + .../unclosed-strokes.traps.argb32.ref.png | Bin 1482 -> 1452 bytes + .../reference/unclosed-strokes.traps.rgb24.ref.png | Bin 1482 -> 1452 bytes + test/reference/user-font.argb32.ref.png | Bin 6478 -> 0 bytes + test/reference/user-font.base.argb32.ref.png | Bin 6080 -> 5785 bytes + test/reference/user-font.base.rgb24.ref.png | Bin 6080 -> 5785 bytes + test/reference/user-font.ref.png | Bin 4939 -> 6209 bytes + test/reference/user-font.rgb24.ref.png | Bin 6478 -> 0 bytes + test/reference/user-font.traps.argb32.ref.png | Bin 6080 -> 5785 bytes + test/reference/user-font.traps.rgb24.ref.png | Bin 6080 -> 5785 bytes + 347 files changed, 0 insertions(+), 0 deletions(-) + +commit d6a05676849509049fc54eea2559803b6247a6fe +Author: Chris Wilson +AuthorDate: Wed Oct 3 17:38:21 2012 +0100 +Commit: Chris Wilson +CommitDate: Wed Oct 3 17:38:21 2012 +0100 + + stroke: Remove redundant code for computing culling extents + + Same code repeated! + + Signed-off-by: Chris Wilson + + src/cairo-path-stroke.c | 91 ++++++++++++++++++------------------------------- + src/cairo-rectangle.c | 16 ++------- + 2 files changed, 35 insertions(+), 72 deletions(-) + +commit 8020e0bc8cbd3e5ac188eb305b74ae1c1f362a31 +Author: Chris Wilson +AuthorDate: Wed Oct 3 17:01:41 2012 +0100 +Commit: Chris Wilson +CommitDate: Wed Oct 3 17:08:06 2012 +0100 + + recording: Perform an explicit during snapshot + + In order to avoid recursing upon our source mutex when doing a snapshot, + we can perform an explicit copy of the command array. This should also + be faster than performing a replay as well. + + Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=50443 + Signed-off-by: Chris Wilson + + src/cairo-recording-surface.c | 312 +++++++++++++++++++++++++++++++++++++++++- + 1 file changed, 311 insertions(+), 1 deletion(-) + +commit 797441093a8346003552e0cf89aef2a644ff53ab +Author: Chris Wilson +AuthorDate: Thu Sep 27 15:21:42 2012 +0100 +Commit: Chris Wilson +CommitDate: Thu Sep 27 15:29:36 2012 +0100 + + tor: Fudge the edge if it is projected into a point + + If we generate an edge (through polygon-intersect) where its end-points + lie outside the line definition then it is possible for that line to be + degenerate under sample grid projection. Apply a fudge factor to prevent + explosions as otherwise we reject an edge whose height is not strictly + 0. + + Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=54822 + Signed-off-by: Chris Wilson + + src/cairo-tor-scan-converter.c | 2 +- + src/cairo-tor22-scan-converter.c | 2 +- + 2 files changed, 2 insertions(+), 2 deletions(-) + +commit cabb3c3bdf3153719b0ee538ea1b66137dc89085 +Author: Chris Wilson +AuthorDate: Thu Sep 27 12:21:00 2012 +0100 +Commit: Chris Wilson +CommitDate: Thu Sep 27 12:21:00 2012 +0100 + + spans-compositor: Remove polygon limits after construction + + Signed-off-by: Chris Wilson + + src/cairo-spans-compositor.c | 10 +++++++--- + 1 file changed, 7 insertions(+), 3 deletions(-) + +commit c05147b215072f9bd5e951011f68d9e647cf001f +Author: Chris Wilson +AuthorDate: Thu Sep 27 11:41:58 2012 +0100 +Commit: Chris Wilson +CommitDate: Thu Sep 27 11:41:58 2012 +0100 + + test: Refresh reference image for clip-disjoint-quad + + Rather than using the traps reference for all target as this then + generates false negatives with the spans compositor. + + Signed-off-by: Chris Wilson + + test/reference/clip-disjoint-quad.ref.png | Bin 1542 -> 1592 bytes + test/reference/clip-disjoint-quad.traps.ref.png | Bin 0 -> 1542 bytes + 2 files changed, 0 insertions(+), 0 deletions(-) + +commit ef0b2e43ee299a1c2e7ecfbdf36a610c4ec53d0e +Author: Chris Wilson +AuthorDate: Thu Sep 27 11:35:40 2012 +0100 +Commit: Chris Wilson +CommitDate: Thu Sep 27 11:35:40 2012 +0100 + + composite-rectangles: Update unbounded (clip extents) after reducing clip + + So that the composite-rectangles remains consistent with the reduced + clip in case the individual compositors try to optimise their rendering + strategies based on the reduced clip and the overall extents. + + Signed-off-by: Chris Wilson + + src/cairo-composite-rectangles.c | 17 ++++++++++++++++- + 1 file changed, 16 insertions(+), 1 deletion(-) + +commit 36536d3eb83a8f942bcf1afba4d0815fbeaca10f +Author: Chris Wilson +AuthorDate: Thu Sep 27 11:14:18 2012 +0100 +Commit: Chris Wilson +CommitDate: Thu Sep 27 11:14:18 2012 +0100 + + spans-compositor: Use the tight clip-boxes for polygon construction + + If we will be reducing the clip intersection to a single clip box check + during construction, it helps if we use the tight clip box. + + Signed-off-by: Chris Wilson + + src/cairo-spans-compositor.c | 29 +++++++++++++++++++---------- + 1 file changed, 19 insertions(+), 10 deletions(-) + +commit 7e856071a27b06a6ae35b6445635da9276975c69 +Author: Chris Wilson +AuthorDate: Thu Sep 27 11:13:23 2012 +0100 +Commit: Chris Wilson +CommitDate: Thu Sep 27 11:13:23 2012 +0100 + + polygon-intersect: Exclude non-overlapping clip boxes from consideration + + Signed-off-by: Chris Wilson + + src/cairo-polygon-intersect.c | 22 ++++++++++++++-------- + 1 file changed, 14 insertions(+), 8 deletions(-) + +commit 3969f2c687aa94721e02d50c2f9e1b4d62a546f7 +Author: Chris Wilson +AuthorDate: Thu Sep 27 09:56:36 2012 +0100 +Commit: Chris Wilson +CommitDate: Thu Sep 27 09:58:50 2012 +0100 + + test: Add clip-disjoint-quad + + Exercises a bug in the polygon intersection code demonstrated by Søren + Sandmann. + + Signed-off-by: Chris Wilson + + test/Makefile.sources | 1 + + test/clip-disjoint-quad.c | 83 ++++++++++++++++++++++++++++++ + test/reference/clip-disjoint-quad.ref.png | Bin 0 -> 1542 bytes + 3 files changed, 84 insertions(+) + +commit 9735d1d716262a0c4f0a77363ce8c7d6064fa7d6 +Author: Uli Schlachter +AuthorDate: Tue Sep 25 11:58:18 2012 +0200 +Commit: Uli Schlachter +CommitDate: Tue Sep 25 11:58:18 2012 +0200 + + mark_dirty: Check surface status + + This problem was introduced in commit "xlib: Implement SHM fallbacks and fast + upload paths". Before, cairo_surface_mark_dirty() directly called + cairo_surface_mark_dirty_rectangle() with special "magical arguments" and thus + didn't need any checks on the surface status. + + Fixes: api-special-cases + + Signed-off-by: Uli Schlachter + + src/cairo-surface.c | 7 +++++++ + 1 file changed, 7 insertions(+) + +commit 2be125817ade58ca25cc6cc6b23e2f4dbea722c6 +Author: Uli Schlachter +AuthorDate: Tue Sep 25 11:40:22 2012 +0200 +Commit: Uli Schlachter +CommitDate: Tue Sep 25 11:44:54 2012 +0200 + + surface: Check reference count right before free + + This makes sure that nothing took a reference during finishing and during + detaching user and mime-data. + + Signed-off-by: Uli Schlachter + + src/cairo-surface.c | 6 +++--- + 1 file changed, 3 insertions(+), 3 deletions(-) + +commit f2720e2ba1f68e9ec8f8822e41f4045663e99ad8 +Author: Uli Schlachter +AuthorDate: Tue Sep 25 11:39:42 2012 +0200 +Commit: Uli Schlachter +CommitDate: Tue Sep 25 11:39:42 2012 +0200 + + xcb: Add a missing check for FillRectangles + + Fixes: big-empty-box big-little-box operator operator-alpha + surface-pattern-operator unbounded-operator + + Signed-off-by: Uli Schlachter + + src/cairo-xcb-surface-render.c | 13 +++++++++---- + 1 file changed, 9 insertions(+), 4 deletions(-) + +commit b264ae76bd2621363cbc1e2b5bcdc4b0583d4b1f +Author: Uli Schlachter +AuthorDate: Tue Sep 25 11:34:52 2012 +0200 +Commit: Uli Schlachter +CommitDate: Tue Sep 25 11:34:52 2012 +0200 + + xcb: Check if traps are supported before using them + + This code tried to optimize the clip away by intersecting the boxes with the + clip polygon. However, it also did so when the server didn't support traps. + + Fixes: clip-stroke-unbounded clip-fill-nz-unbounded clip-fill-eo-unbounded + clip-fill clip-fill-rule a1-clip-fill-rule clip-group-shapes-circles + clip-intersect clip-nesting clip-operator clip-push-group clip-polygons + clip-shape clip-text clip-twice inverted-clip mask random-clip + rotate-clip-image-surface-paint trap-clip unantialiased-shapes + + Signed-off-by: Uli Schlachter + + src/cairo-xcb-surface-render.c | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +commit 0ccbb83eb892aca51838aeb1da45070b385a6d88 +Author: Uli Schlachter +AuthorDate: Tue Sep 25 11:31:04 2012 +0200 +Commit: Uli Schlachter +CommitDate: Tue Sep 25 11:31:04 2012 +0200 + + xcb: Check the right flag for FillRectangles + + Fixes: operator-source + + Signed-off-by: Uli Schlachter + + src/cairo-xcb-surface-render.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit b33d83ad49343ce226f76ceb6c83659c72442e91 +Author: Uli Schlachter +AuthorDate: Tue Sep 25 11:12:58 2012 +0200 +Commit: Uli Schlachter +CommitDate: Tue Sep 25 11:27:59 2012 +0200 + + xcb: Verify extension support before sending + + This commit adds lots of asserts. These asserts verify for each extension + request that we send that the server really supports this. + + Sadly, this causes 28 assertion failures in the test suite with xcb-render-0.0. + + Signed-off-by: Uli Schlachter + + src/cairo-xcb-connection-render.c | 20 ++++++++++++++++++++ + src/cairo-xcb-connection-shm.c | 4 ++++ + 2 files changed, 24 insertions(+) + +commit de31018bdd1cc78fd54cf9fd7b220117008c33a8 +Author: Uli Schlachter +AuthorDate: Sat Sep 15 15:43:16 2012 +0200 +Commit: Uli Schlachter +CommitDate: Mon Sep 24 09:44:10 2012 +0200 + + xcb: Switch to compositor architecture + + This commit removes the hand-written code in cairo-xcb-surface.c and instead + makes use of cairo_compositor_t. Surprisingly, this doesn't break a single test + case. :-) + + Signed-off-by: Uli Schlachter + + src/cairo-xcb-private.h | 59 ++++----- + src/cairo-xcb-surface-render.c | 75 +++++------ + src/cairo-xcb-surface.c | 277 ++++++++++++++++++++--------------------- + 3 files changed, 197 insertions(+), 214 deletions(-) + +commit 6300579a8b2c0e38a0c1abae89675bf6cb769902 +Author: Uli Schlachter +AuthorDate: Sat Sep 15 14:56:51 2012 +0200 +Commit: Uli Schlachter +CommitDate: Mon Sep 24 09:44:10 2012 +0200 + + xcb: Remove unimplemented cairo compositor + + Signed-off-by: Uli Schlachter + + src/Makefile.sources | 1 - + src/cairo-xcb-private.h | 44 -------------------- + src/cairo-xcb-surface-cairo.c | 94 ------------------------------------------- + src/cairo-xcb-surface.c | 32 --------------- + 4 files changed, 171 deletions(-) + +commit 8d86ea4dcbefc982e4a694f1d8e90a90b3695c10 +Author: Uli Schlachter +AuthorDate: Sat Sep 15 14:37:51 2012 +0200 +Commit: Uli Schlachter +CommitDate: Mon Sep 24 09:42:43 2012 +0200 + + xcb: Fix a warn_unused_result warning + + cairo-xcb-surface.c: In function '_drawable_changed': + cairo-xcb-surface.c:1434:39: warning: ignoring return value of '_cairo_surface_begin_modification', declared with attribute warn_unused_result [-Wunused-result] + + Signed-off-by: Uli Schlachter + + src/cairo-xcb-surface.c | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +commit d6253dd53127368797dfd43084450e70b4921f77 +Author: Uli Schlachter +AuthorDate: Sat Sep 15 14:36:06 2012 +0200 +Commit: Uli Schlachter +CommitDate: Mon Sep 24 09:42:43 2012 +0200 + + Remove an unimplemented function declaration + + This was added in commit 2458120dee350cd1b49f999f64b17a895a4b6607. + + Signed-off-by: Uli Schlachter + + src/cairo-pattern-private.h | 3 --- + 1 file changed, 3 deletions(-) + +commit 08e3f4614b688331534d72f46c9c3e9f292d0216 +Author: Uli Schlachter +AuthorDate: Sat Sep 15 14:33:54 2012 +0200 +Commit: Uli Schlachter +CommitDate: Mon Sep 24 09:42:43 2012 +0200 + + Fix make check + + The inline functions in cairo-backend-private.h tried to dereference a cairo_t, + which wasn't defined. Fix this by including cairo-private.h. + + In cairo-mempool-private.h, size_t is used but stddef.h is not included. + + Fixes: + + CHECK cairo-backend-private.h + In file included from headers-standalone-tmp.c:1:0: + ./cairo-backend-private.h: In function ‘_cairo_backend_to_user’: + ./cairo-backend-private.h:179:7: error: dereferencing pointer to incomplete type + ./cairo-backend-private.h: In function ‘_cairo_backend_to_user_distance’: + ./cairo-backend-private.h:185:7: error: dereferencing pointer to incomplete type + ./cairo-backend-private.h: In function ‘_cairo_user_to_backend’: + ./cairo-backend-private.h:191:7: error: dereferencing pointer to incomplete type + ./cairo-backend-private.h: In function ‘_cairo_user_to_backend_distance’: + ./cairo-backend-private.h:197:7: error: dereferencing pointer to incomplete type + CHECK cairo-mempool-private.h + In file included from headers-standalone-tmp.c:1:0: + ./cairo-mempool-private.h:61:5: error: unknown type name ‘size_t’ + ./cairo-mempool-private.h:62:5: error: unknown type name ‘size_t’ + ./cairo-mempool-private.h:68:8: error: unknown type name ‘size_t’ + ./cairo-mempool-private.h:73:44: error: unknown type name ‘size_t’ + + Signed-off-by: Uli Schlachter + + src/cairo-backend-private.h | 1 + + src/cairo-mempool-private.h | 2 ++ + 2 files changed, 3 insertions(+) + +commit 1054840d864da7efcac2ee02d43a526ed6a6760c +Author: Behdad Esfahbod +AuthorDate: Sat Sep 22 15:59:36 2012 -0400 +Commit: Behdad Esfahbod +CommitDate: Sat Sep 22 15:59:36 2012 -0400 + + Fix malloc-stats for newer glibc + + util/malloc-stats.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 38c6084758b178177cff8a3b6a9e0b5be60c80a2 +Author: Behdad Esfahbod +AuthorDate: Mon Sep 17 16:26:08 2012 -0400 +Commit: Behdad Esfahbod +CommitDate: Mon Sep 17 16:27:04 2012 -0400 + + [util/malloc-stats] Use tighter spacing. + + util/malloc-stats.c | 6 +++--- + 1 file changed, 3 insertions(+), 3 deletions(-) + +commit 59248fb2628e86ff62abfbf122b88c2a299ec393 +Author: Weng Xuetian +AuthorDate: Thu Sep 13 22:56:57 2012 +0100 +Commit: Chris Wilson +CommitDate: Thu Sep 13 22:57:45 2012 +0100 + + xlib: Reset fallback counter when discarding the fallback + + References: https://bugs.freedesktop.org/show_bug.cgi?id=54657 + + src/cairo-xlib-surface.c | 2 ++ + 1 file changed, 2 insertions(+) + +commit 5c59d989f9037f94c80ccd7929dc05f4a95be4df +Author: Chris Wilson +AuthorDate: Thu Sep 13 22:50:11 2012 +0100 +Commit: Chris Wilson +CommitDate: Thu Sep 13 22:54:18 2012 +0100 + + xlib: Destroy the fallback damage along with the fallback surface + + Whenever we discard the fallback surface, we need to destroy the + associated damage tracking, so move this into the common discard + routine. + + This should fix the issue when trying to flush the fallback before + the user modifies any foreign Drawables. The current code issued the + flush and then explicitly discard the fallback, but unless it was idle + at the time of the flush the associated damage would not have also been + destroyed. Asserts followed. + + References: https://bugs.freedesktop.org/show_bug.cgi?id=54657 + Signed-off-by: Chris Wilson + + src/cairo-xlib-surface.c | 13 +++++-------- + 1 file changed, 5 insertions(+), 8 deletions(-) + +commit 97282ef51a01ae2ac3a7a8bf3ebce841a60dc907 +Author: Chris Wilson +AuthorDate: Thu Sep 13 17:00:24 2012 +0100 +Commit: Chris Wilson +CommitDate: Thu Sep 13 17:00:24 2012 +0100 + + xlib: Do not call _cairo_xlib_surface_flush directly + + Use the higher level layer to be sure we detach any snapshots and other + cached data that is invalidated along with the change of Drawable. + + Pointed out by the eternally wise Uli Schlachter. + + Signed-off-by: Chris Wilson + + src/cairo-xlib-surface.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +commit 69d97d97bea86e7f4223d857803fb7f0ec0d369f +Author: Chris Wilson +AuthorDate: Thu Sep 13 16:45:46 2012 +0100 +Commit: Chris Wilson +CommitDate: Thu Sep 13 16:45:46 2012 +0100 + + xlib: Force the fallback flush before updating the external Drawable + + _cairo_surface_begin_modification() performs an internal flush, for + which the xlib backend skips flushing the fallback surface as it will + continue to use it for the subsequent operation. In the case where we + are flushing prior to updating the Drawable, we need to perform an + external flush which will trigger the posting of the damage from the + fallback surface. + + Reported-by: Weng Xuetian + References: https://bugs.freedesktop.org/show_bug.cgi?id=54657 + Signed-off-by: Chris Wilson + + src/cairo-xlib-surface.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +commit 6ee216000ae487492fceda0fb3fecb20bb9a41f6 +Author: Chris Wilson +AuthorDate: Thu Sep 13 15:25:49 2012 +0100 +Commit: Chris Wilson +CommitDate: Thu Sep 13 15:30:27 2012 +0100 + + xlib: Explicitly discard the fallback shm pixmap upon user modification + + If the user changes the size of the underlying drawable, we much make + sure that we discard the current ShmPixmap in order to create a new + fallback pixmap of the correct size next time. + + Reported-by: Weng Xuetian + Bugzilla: https://bugs.freedesktop.org/show_bug.cgi + Signed-off-by: Chris Wilson + + src/cairo-xlib-surface.c | 38 +++++++++++++++++++++++++++++--------- + 1 file changed, 29 insertions(+), 9 deletions(-) + +commit e2c4bb9465e6261eb79f24af52d339df0b563b55 +Author: Chris Wilson +AuthorDate: Thu Sep 13 12:40:49 2012 +0100 +Commit: Chris Wilson +CommitDate: Thu Sep 13 12:40:49 2012 +0100 + + xlib: Fix regression in cairo_xlib_surface_set_drawable() + + In commit 0bfd2acd35547fc2bd0de99cc67d153f0170697d + Author: Chris Wilson + Date: Mon Aug 13 01:34:12 2012 +0100 + + xlib: Implement SHM fallbacks and fast upload paths + + I made the mistake of inverting the logic for + cairo_xlib_surface_set_drawable() causing it then to never update. + + Thanks to Uli Schlachter for spotting my error. + + References: https://bugs.freedesktop.org/show_bug.cgi?id=54657 + Reported-by: Weng Xuetian + Signed-off-by: Chris Wilson + + src/cairo-xlib-surface.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 77330f6b841b6938e0da44b32692cd64b0f53cbd +Author: Chris Wilson +AuthorDate: Tue Sep 11 18:20:45 2012 +0100 +Commit: Chris Wilson +CommitDate: Tue Sep 11 18:24:33 2012 +0100 + + xcb: Always flush the fallback damage to foreign drawables + + We need to flush any fallback to a foreign drawable upon finish. + However, we must be careful not to attach the snapshot in that case or + else we end up with an expected reference. This is similar to the + treatment of xlib/shm in commit f864e2d70. + + Reported-by: Henry Song + Signed-off-by: Chris Wilson + + src/cairo-xcb-surface.c | 5 +++-- + 1 file changed, 3 insertions(+), 2 deletions(-) + +commit 93774ac0348df04c3fa84f5bc01fe35c87a62089 +Author: Andrea Canciani +AuthorDate: Wed Sep 5 17:52:50 2012 +0200 +Commit: Andrea Canciani +CommitDate: Mon Sep 10 23:16:08 2012 +0200 + + test: Add degenerate closed path case to get-path-extents + + This is a testcase to ensure that we do not regress + https://bugs.freedesktop.org/show_bug.cgi?id=54549 (which is already + fixed by b0c466e27afcec230b2c9436eeb924c05123a544). + + test/get-path-extents.c | 8 ++++++++ + 1 file changed, 8 insertions(+) + +commit f34b87f6d76cbea93acd4a8c73c8c6a6b412a302 +Author: Chris Wilson +AuthorDate: Mon Sep 10 15:09:18 2012 +0100 +Commit: Chris Wilson +CommitDate: Mon Sep 10 15:09:18 2012 +0100 + + path: Convert from backend coordinates back into user coordinates + + Fixes regression from commit 83bfd85a1378e61b8bdc3f554f5e07900311f61f + Author: Chris Wilson + Date: Fri Apr 23 19:45:26 2010 +0100 + + Implement cairo_backend_t + + As there exists no public API to perform the operation we needed, and we + failed to create one, the constructed path failed to correctly remove + the device offset. + + Fixes copy-path under device translation. + + Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=54732 + Reported-by: Benjamin Berg + Signed-off-by: Chris Wilson + + src/cairo-path.c | 11 ++++++----- + 1 file changed, 6 insertions(+), 5 deletions(-) + +commit df6780442feba5c0c9404353177f24913b58bd32 +Author: Chris Wilson +AuthorDate: Mon Sep 10 15:03:47 2012 +0100 +Commit: Chris Wilson +CommitDate: Mon Sep 10 15:09:15 2012 +0100 + + context: Add missing functions to transform between user and backend coordinates + + Signed-off-by: Chris Wilson + + src/cairo-backend-private.h | 29 +++++++++++++++++++++++++++ + src/cairo-default-context.c | 44 +++++++++++++++++++++++++++++++++++++++++ + src/cairo-gstate-private.h | 10 ++++++++++ + src/cairo-gstate.c | 7 +++++++ + src/skia/cairo-skia-context.cpp | 4 ++++ + 5 files changed, 94 insertions(+) + +commit f864e2d70f53a1feeee5e32bf9724b1e544025a6 +Author: Chris Wilson +AuthorDate: Sat Sep 8 16:39:05 2012 +0100 +Commit: Chris Wilson +CommitDate: Sat Sep 8 16:41:23 2012 +0100 + + xlib/shm: Explicitly release shm surface if we do not own the pixmap + + In this case we want to prevent the short-circuiting of the flush of the + ShmPixmap that is ordinarily performed during finish(). + + Signed-off-by: Chris Wilson + + src/cairo-xlib-surface.c | 11 +++++++++-- + 1 file changed, 9 insertions(+), 2 deletions(-) + +commit 558f0a5ab4a88937b8c212c13309d11cb1a101af +Author: Chris Wilson +AuthorDate: Sat Sep 8 15:12:58 2012 +0100 +Commit: Chris Wilson +CommitDate: Sat Sep 8 15:12:58 2012 +0100 + + image: Check for an error surface before dereferencing the backend + + As the surface->backend will be NULL in such an error surface, and we + may be legitimately doing boundary checks to reject the error surface. + The alternative would be to set an explicit error surface backend. + + Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=54664 + Signed-off-by: Chris Wilson + + src/cairo-image-surface-inline.h | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +commit b0c466e27afcec230b2c9436eeb924c05123a544 +Author: Chris Wilson +AuthorDate: Wed Sep 5 14:55:55 2012 +0100 +Commit: Chris Wilson +CommitDate: Wed Sep 5 14:55:55 2012 +0100 + + path: Update last_move_point after move-to + + Reported-and-tested-by: Jussi Kukkonen + Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=54549 + Signed-off-by: Chris Wilson + + src/cairo-path-fixed.c | 1 + + 1 file changed, 1 insertion(+) + +commit 83759e7d592c5d7b12b2341574fd584fe5e0fb5a +Author: Chris Wilson +AuthorDate: Tue Sep 4 14:42:34 2012 +0100 +Commit: Chris Wilson +CommitDate: Tue Sep 4 14:47:22 2012 +0100 + + default-context: Convert the relative path segments into the backend coordinates + + When transforming the incoming paths, the goal is to transform them from + user space onto the target coordinate system. Currently for relative + paths we used user_to_device_distance as we presumed that there was no + backend scale factor. However, Alex Larsson noticed that these then + broke when playing around with such a device transform... + + Reported-by: Alexander Larsson + Signed-off-by: Chris Wilson + + src/cairo-default-context.c | 10 +++++----- + src/cairo-gstate-private.h | 10 ++++++++++ + src/cairo-gstate.c | 7 +++++++ + 3 files changed, 22 insertions(+), 5 deletions(-) + +commit c0b1b178184ccfba0fe60c2a49901cadef9df36b +Author: Chris Wilson +AuthorDate: Mon Aug 27 13:21:35 2012 +0100 +Commit: Chris Wilson +CommitDate: Mon Aug 27 13:21:35 2012 +0100 + + xlib/shm: Masquerade as an ordinary ShmCompletionEvent + + Needs a bit of extra work to create the extension event, but this leaves + the application with only a single spurious event to filter. + + Signed-off-by: Chris Wilson + + src/cairo-xlib-private.h | 6 +-- + src/cairo-xlib-surface-shm.c | 109 ++++++++++++------------------------------- + 2 files changed, 32 insertions(+), 83 deletions(-) + +commit be2973e405764d4de4a44a01ff98db3e6495a361 +Author: Chris Wilson +AuthorDate: Sun Aug 26 11:59:46 2012 +0100 +Commit: Chris Wilson +CommitDate: Sun Aug 26 11:59:46 2012 +0100 + + bentley-ottmann: Cache the most recent edge colinearity check + + We frequently compare neighbouring edges for their colinearity (in case + we can skip over them in the active list) so we can record the last + comparison and reuse the result next time. + + Signed-off-by: Chris Wilson + + src/cairo-bentley-ottmann.c | 42 ++++++++++++++++++++++++++++++++---------- + 1 file changed, 32 insertions(+), 10 deletions(-) + +commit 637659fb511824eb8ac31ef85db10406295734e6 +Author: Chris Wilson +AuthorDate: Sun Aug 26 00:39:43 2012 +0100 +Commit: Chris Wilson +CommitDate: Sun Aug 26 11:16:32 2012 +0100 + + bentley-ottmann: hint that the insertion compare function should be inlined + + Albeit it too large for gcc to automatically inline, it is only used + from within a single function. Hopefully gcc can optimise better with + the hint. + + Signed-off-by: Chris Wilson + + src/cairo-bentley-ottmann.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 3c6e4311fb3b9fe400555a8d97193fc87974899b +Author: Chris Wilson +AuthorDate: Sun Aug 26 00:35:52 2012 +0100 +Commit: Chris Wilson +CommitDate: Sun Aug 26 11:16:32 2012 +0100 + + bentley-ottmann: Only check the pairs of coordinates for equality. + + Signed-off-by: Chris Wilson + + src/cairo-bentley-ottmann.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 535b4e970cdbb459be621cecafd7f91ca4698396 +Author: Chris Wilson +AuthorDate: Sun Aug 26 00:16:33 2012 +0100 +Commit: Chris Wilson +CommitDate: Sun Aug 26 11:16:32 2012 +0100 + + bentley-ottman: Remove a few superfluous status propagation + + For the traps it is simpler if we report the status at the end, and + no-op the accumulation of the trap after hitting the error condition. + + Signed-off-by: Chris Wilson + + src/cairo-bentley-ottmann.c | 69 ++++++++++++++------------------------------- + 1 file changed, 21 insertions(+), 48 deletions(-) + +commit b66065537cec5f03b33f7513f06e26630c28b5f1 +Author: Chris Wilson +AuthorDate: Sun Aug 26 10:21:22 2012 +0100 +Commit: Chris Wilson +CommitDate: Sun Aug 26 11:15:53 2012 +0100 + + stroke: Compute bounds for fallback stroker (typically dashing) + + Signed-off-by: Chris Wilson + + src/cairo-path-stroke.c | 42 +++++++++++++++++++++++++++++++++++------- + 1 file changed, 35 insertions(+), 7 deletions(-) + +commit 99593538a9d054aa1bb9fa620fced8c8b8ccdc9d +Author: Chris Wilson +AuthorDate: Sun Aug 26 10:50:50 2012 +0100 +Commit: Chris Wilson +CommitDate: Sun Aug 26 11:14:17 2012 +0100 + + stroke: Convert fallback stroker to new pen vertex finder + + Signed-off-by: Chris Wilson + + src/cairo-path-stroke.c | 173 ++++++++++++++++++++++++++---------------------- + 1 file changed, 95 insertions(+), 78 deletions(-) + +commit 4eb8e9f8618c5c5c002b7fd72c0370451ae1f511 +Author: Chris Wilson +AuthorDate: Sat Aug 25 23:57:56 2012 +0100 +Commit: Chris Wilson +CommitDate: Sun Aug 26 11:13:28 2012 +0100 + + stroke: Convert a very small round-join into a miter + + Avoid adding a bevel join if the miter point is within tolerance. + + Signed-off-by: Chris Wilson + + src/cairo-path-stroke-polygon.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit fa93fc63b652f04bcf7d5340a13023819ecf2140 +Author: Chris Wilson +AuthorDate: Sat Aug 25 23:54:36 2012 +0100 +Commit: Chris Wilson +CommitDate: Sun Aug 26 11:12:52 2012 +0100 + + stroke: Precompute the line half-width + + Signed-off-by: Chris Wilson + + src/cairo-path-stroke-polygon.c | 82 +++++++++++++++++++---------------------- + 1 file changed, 38 insertions(+), 44 deletions(-) + +commit 3cf6551ac71bac4d0ae1d0938bc0205dfc03f65c +Author: Chris Wilson +AuthorDate: Sat Aug 25 23:42:45 2012 +0100 +Commit: Chris Wilson +CommitDate: Sun Aug 26 11:10:42 2012 +0100 + + stroke: Use new pen vertex range finders + + Signed-off-by: Chris Wilson + + src/cairo-path-stroke-polygon.c | 93 ++++++++++++----------------------------- + 1 file changed, 27 insertions(+), 66 deletions(-) + +commit 74e9ae8cdff31e9a039b17f7dbe6e80f98e2c047 +Author: Chris Wilson +AuthorDate: Sat Aug 25 23:29:21 2012 +0100 +Commit: Chris Wilson +CommitDate: Sun Aug 26 11:10:07 2012 +0100 + + pen: Use bisection to speed up vertex finding + + Signed-off-by: Chris Wilson + + src/cairo-pen.c | 81 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ + src/cairoint.h | 12 +++++++++ + 2 files changed, 93 insertions(+) + +commit aeb039b16dc302192113a7f10c4b86e7d13eb221 +Author: Chris Wilson +AuthorDate: Sat Aug 25 12:57:01 2012 +0100 +Commit: Chris Wilson +CommitDate: Sun Aug 26 11:08:02 2012 +0100 + + stroke: Skip spline evaluation when stroking to a polygon + + If the spline is wholly outside the clip region, accounting for the + stroke width and additional rendering, then we can simplify that spline + with a straight line. + + Signed-off-by: Chris Wilson + + src/cairo-path-stroke-polygon.c | 37 +++++++++++++++++++++++++++++++++++++ + 1 file changed, 37 insertions(+) + +commit bdf83008f4b2c723fd8e65e2a92bc47a2e7bc442 +Author: Chris Wilson +AuthorDate: Sat Aug 25 08:39:30 2012 +0100 +Commit: Chris Wilson +CommitDate: Sun Aug 26 11:07:57 2012 +0100 + + compositor: Skip invisible strokes + + If the pen is reduced to a single point, it is effectively invisible + when rasterised, so skip the stroke composition. + + Signed-off-by: Chris Wilson + + src/cairo-compositor.c | 4 ++++ + src/cairo-pen.c | 34 +++++++++++++--------------------- + src/cairoint.h | 5 +++++ + 3 files changed, 22 insertions(+), 21 deletions(-) + +commit fc38d7375d4f0342ece91596d71f0ce56aa2c975 +Author: Chris Wilson +AuthorDate: Fri Aug 24 17:39:08 2012 +0100 +Commit: Chris Wilson +CommitDate: Fri Aug 24 17:39:35 2012 +0100 + + xlib/shm: Add missing release of the display after GetImage + + Signed-off-by: Chris Wilson + + src/cairo-xlib-surface.c | 4 +++- + 1 file changed, 3 insertions(+), 1 deletion(-) + +commit 5355eab17d026f5d5566e6de47c9dbffc5ece5d0 +Author: Chris Wilson +AuthorDate: Fri Aug 24 10:34:05 2012 +0100 +Commit: Chris Wilson +CommitDate: Fri Aug 24 11:38:58 2012 +0100 + + xlib/shm: Reduce the frequency at which we emit events + + Flushing the shm operation is a fairly rare event, as it is typically + only involved with mixed rendering on a similar image, and should be + triggering its own events. Therefore we should be able to reduce our + event emission to the critical points in order to limit the amount of + extra overhead we generate. + + Signed-off-by: Chris Wilson + + src/cairo-xlib-display.c | 4 ++-- + src/cairo-xlib-surface-shm.c | 2 +- + 2 files changed, 3 insertions(+), 3 deletions(-) + +commit 5c4087af810763ee98682b3bcc1c759ad8b4c27b +Author: Martin Robinson +AuthorDate: Tue Feb 28 10:50:16 2012 -0800 +Commit: Martin Robinson +CommitDate: Wed Aug 22 13:49:14 2012 -0700 + + gl: Add a non-thread-aware mode for GL devices + + GLX and EGL devices are thread-aware currently. This + is safe, but on certain GPUs can be very expensive. In + this patch, we expose a new API which turns off the + safety feature in cases where performance is a priority. + + src/cairo-egl-context.c | 2 ++ + src/cairo-gl-device.c | 13 +++++++++++++ + src/cairo-gl-private.h | 2 ++ + src/cairo-gl.h | 4 ++++ + src/cairo-glx-context.c | 7 ++++--- + 5 files changed, 25 insertions(+), 3 deletions(-) + +commit 97410990935bb4baacbc1584362a87733c483583 +Author: Martin Robinson +AuthorDate: Fri Aug 17 16:00:51 2012 -0700 +Commit: Martin Robinson +CommitDate: Wed Aug 22 10:42:18 2012 -0700 + + gl: Remove the shader language version abstraction + + Cairo only needs to support one version of the shader language API, + thanks to the dispatch table. This seems unlikely to change any time + soon. This makes the addition of new features, such as a uniform + location cache, simpler. + + src/cairo-gl-private.h | 6 +- + src/cairo-gl-shaders.c | 464 +++++++++++++++++-------------------------------- + 2 files changed, 159 insertions(+), 311 deletions(-) + +commit 5c77b4df146796d8280a4f5b16949e3db4a1f84a +Author: Chris Wilson +AuthorDate: Tue Aug 21 21:03:04 2012 +0100 +Commit: Chris Wilson +CommitDate: Tue Aug 21 22:20:02 2012 +0100 + + xlib/shm: Only check if we are expecting an event + + As the XCheckWindowEvent() has the unwanted side-effect of flushing the + output queue when there is no event available (libX11 seems to be + entirely anti-performant), we need to roll our own that only checks the + already available event queue. + + Signed-off-by: Chris Wilson + + src/cairo-xlib-display.c | 2 -- + src/cairo-xlib-private.h | 3 --- + src/cairo-xlib-surface-shm.c | 62 ++++++++++++++++++++++++++++++++------------ + 3 files changed, 46 insertions(+), 21 deletions(-) + +commit aa5c7123097c56e2c35bf88b8377bbdd1523fbce +Author: Chris Wilson +AuthorDate: Tue Aug 21 10:12:06 2012 +0100 +Commit: Chris Wilson +CommitDate: Tue Aug 21 10:34:23 2012 +0100 + + xlib/shm: Use a genuine event rather than an open-ended request + + Adding lots of requests without popping the replies causes xcb to + continually sort large lists of unprocessed data. Use an event instead + and regularly dequeue them. + + Signed-off-by: Chris Wilson + + src/cairo-xlib-display.c | 4 ++- + src/cairo-xlib-private.h | 3 ++ + src/cairo-xlib-surface-shm.c | 80 +++++++++++++++++++++++++++++++++----------- + 3 files changed, 66 insertions(+), 21 deletions(-) + +commit 30d09cd33a582a2dd3f3a544366892c724f67592 +Author: Chris Wilson +AuthorDate: Mon Aug 20 17:20:08 2012 +0100 +Commit: Chris Wilson +CommitDate: Mon Aug 20 17:20:08 2012 +0100 + + cairo-script: Attempt to fallback for unresolved patterns + + If we fail to resolve a particular pattern, try removing a few features + from the pattern and see if we can resolve that fallback and continue on + with the trace with a close approximation. + + This is then behaves very similar as if the pattern requested a specific + font that was not available on the system and so was substituted. + + Signed-off-by: Chris Wilson + + util/cairo-script/cairo-script-operators.c | 19 +++++++++++++++++-- + 1 file changed, 17 insertions(+), 2 deletions(-) + +commit a7d505d40f439208b30762be663f332c60bc0883 +Author: Chris Wilson +AuthorDate: Mon Aug 20 16:43:28 2012 +0100 +Commit: Chris Wilson +CommitDate: Mon Aug 20 16:43:28 2012 +0100 + + ft: Report FILE_NOT_FOUND if creating a font with a specified nonexistent file + + If the FcPattern used to create a font specifies an exact file to use + and it does not exist we will fail much later with an ambiguous + NO_MEMORY error. As suggested by Behdad Esfahbod we should report this + back to the user so that they can take the appropriate action rather + than providing an automatic fallback. + + Signed-off-by: Chris Wilson + + src/cairo-ft-font.c | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +commit ee7f5607192a3341df45199b1c7c8996f2b7347d +Author: Chris Wilson +AuthorDate: Mon Aug 20 14:21:23 2012 +0100 +Commit: Chris Wilson +CommitDate: Mon Aug 20 14:21:23 2012 +0100 + + stroker: Avoid emitting a miter join for across an elided degenerate segment + + Given the criteria of the rectlinear stroker that it only handles + horizontal and vertical line segments, and eliminates degenerate + segments before stroking, we must be careful not to apply a join between + two horizontal segments (for example if the intervening vertical segment + was degenerate and so elided). A miter join between two colinear + segments is empty, yet we were blissfully extending the line caps to + cover the join. + + Fixes: outline-tolerance + Bugzilla: https://bugzilla.mozilla.org/show_bug.cgi?id=407107 + Signed-off-by: Chris Wilson + + src/cairo-path-stroke-boxes.c | 18 +++++++++++------- + 1 file changed, 11 insertions(+), 7 deletions(-) + +commit 2a0d81743270aaff29e8951c896cde644fd4e576 +Author: Chris Wilson +AuthorDate: Mon Aug 20 13:34:33 2012 +0100 +Commit: Chris Wilson +CommitDate: Mon Aug 20 13:34:33 2012 +0100 + + tests: Add outline-tolerance + + From https://bugs.freedesktop.org/show_bug.cgi?id=53841: + + "Rectangle drawn incorrectly when it has zero height + and miter limit greater than 1.414" + + Signed-off-by: Chris Wilson + + test/Makefile.sources | 1 + + test/outline-tolerance.c | 52 +++++++++++++++++++++++++++++++ + test/reference/outline-tolerance.ref.png | Bin 0 -> 205 bytes + 3 files changed, 53 insertions(+) + +commit d6f8ce91dc449a29b0921a8787d9a3c9a687b429 +Author: Chris Wilson +AuthorDate: Sun Aug 19 23:55:28 2012 +0100 +Commit: Chris Wilson +CommitDate: Sun Aug 19 23:55:28 2012 +0100 + + xlib: Move the shm cleanup from CloseDisplay to finish() + + Make sure that we always detach the ShmSegments upon dispose, or else we + can trivially leak lots of memory when using serial Display connections. + + Signed-off-by: Chris Wilson + + src/cairo-xlib-display.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +commit 43c5387d1b251938eeba458a95d63e2dc7178c2d +Author: Chris Wilson +AuthorDate: Sun Aug 19 12:41:15 2012 +0100 +Commit: Chris Wilson +CommitDate: Sun Aug 19 12:41:15 2012 +0100 + + ft: Only use a specified font filename if its accessible + + If we try to use a non-existent path, FT_New_Face returns an error. + Instead, just use fontconfig to generate a fallback pattern. + + Signed-off-by: Chris Wilson + + src/cairo-ft-font.c | 18 +++++++++++++----- + 1 file changed, 13 insertions(+), 5 deletions(-) + +commit b3448c3dff79d0eda2a921178c26eb87f1ba34ea +Author: Chris Wilson +AuthorDate: Sat Aug 18 09:28:17 2012 +0100 +Commit: Chris Wilson +CommitDate: Sat Aug 18 09:28:37 2012 +0100 + + xlib: Drop the false optimisation of using a potentially busy shm upload pixmap + + Signed-off-by: Chris Wilson + + src/cairo-xlib-render-compositor.c | 2 -- + 1 file changed, 2 deletions(-) + +commit 10ef077324bb4c23630dcdab5f281f6fca00b78e +Author: Chris Wilson +AuthorDate: Sat Aug 18 09:16:49 2012 +0100 +Commit: Chris Wilson +CommitDate: Sat Aug 18 09:16:49 2012 +0100 + + xlib/shm: Mark the ShmPixmap as active following an upload flush + + Signed-off-by: Chris Wilson + + src/cairo-xlib-surface-shm.c | 3 +++ + 1 file changed, 3 insertions(+) + +commit 99a0d38a33a3dd311a4cf4481b7286db4e8ec775 +Author: Chris Wilson +AuthorDate: Sat Aug 18 09:10:07 2012 +0100 +Commit: Chris Wilson +CommitDate: Sat Aug 18 09:10:07 2012 +0100 + + xlib/shm: Fix runtime checking of has-shm-pixmaps for !shm case + + Signed-off-by: Chris Wilson + + src/cairo-xlib-surface-shm.c | 3 +++ + 1 file changed, 3 insertions(+) + +commit ec01c71ecab46e0252d295f8d1f24f261b3f52af +Author: Chris Wilson +AuthorDate: Sat Aug 18 08:02:42 2012 +0100 +Commit: Chris Wilson +CommitDate: Sat Aug 18 08:06:26 2012 +0100 + + xlib/shm: Wrap the detection of shm with locking + + As we access a global error variable, we need to hold a mutex against + simultaneous checking of multiple Displays. This should already be true + as we hold our display mutex to serialize initialisation, so just add an + assertion. As the client may mix use of cairo in one thread with X from + another, we need to hold the Display lock and serialise whilst + manipulating the low-level state of the Display. + + Suggested-by: Uli Schlachter + Signed-off-by: Chris Wilson + + src/cairo-xlib-surface-shm.c | 6 ++++++ + 1 file changed, 6 insertions(+) + +commit 1bc9f673b61aa48369329606acc13aa5bce94a0a +Author: Chris Wilson +AuthorDate: Fri Aug 17 23:38:10 2012 +0100 +Commit: Chris Wilson +CommitDate: Sat Aug 18 00:06:06 2012 +0100 + + xlib/shm: Avoid using a synchronous ShmCreatePixmap if evading the readback + + Signed-off-by: Chris Wilson + + src/cairo-xlib-surface-shm.c | 5 ++++- + 1 file changed, 4 insertions(+), 1 deletion(-) + +commit 3da2d8a1e277ae76ea2ba2533850b1901c6b3b29 +Author: Chris Wilson +AuthorDate: Fri Aug 17 23:37:31 2012 +0100 +Commit: Chris Wilson +CommitDate: Sat Aug 18 00:06:06 2012 +0100 + + xlib: Only use CopyArea if the ShmPixmap and destination are the same depth + + Signed-off-by: Chris Wilson + + src/cairo-xlib-render-compositor.c | 6 +++++- + 1 file changed, 5 insertions(+), 1 deletion(-) + +commit 94815189a42e52a82c602e8f23e69e1826f51ce7 +Author: Chris Wilson +AuthorDate: Fri Aug 17 22:17:41 2012 +0100 +Commit: Chris Wilson +CommitDate: Fri Aug 17 23:43:26 2012 +0100 + + xlib/shm: Clear the similar image surface + + The upper layers check that the surface returned to userspace is + cleared; make it so. + + Signed-off-by: Chris Wilson + + src/cairo-xlib-surface-shm.c | 10 +++++++++- + 1 file changed, 9 insertions(+), 1 deletion(-) + +commit c068691ff57c2f6cd750a54db17393c0e132cb00 +Author: Chris Wilson +AuthorDate: Fri Aug 17 21:33:54 2012 +0100 +Commit: Chris Wilson +CommitDate: Fri Aug 17 23:43:26 2012 +0100 + + xlib/shm: Use an impromptu upload ShmSegment + + Reduce the number of copies required for uploading large image data. + Ultimately we want the client to allocate the similar-image itself to + acheive zero copy, this is just an intermediate step for legacy clients. + + Signed-off-by: Chris Wilson + + src/cairo-xlib-private.h | 11 +++++-- + src/cairo-xlib-render-compositor.c | 65 ++++++++++++++++++++++++++++++++++++-- + src/cairo-xlib-surface-shm.c | 39 +++++++++++++++-------- + src/cairo-xlib-surface.c | 5 ++- + 4 files changed, 98 insertions(+), 22 deletions(-) + +commit bc38108947a684fb6e7af99a48ebc8f79d05856a +Author: Chris Wilson +AuthorDate: Fri Aug 17 20:57:04 2012 +0100 +Commit: Chris Wilson +CommitDate: Fri Aug 17 23:20:01 2012 +0100 + + xlib/shm: Limit use of the impromptu fallback pixmap for uploads + + We want to avoid unnecessary readback and so only want to use the + ShmPixmap when uploading the complete surface. + + Signed-off-by: Chris Wilson + + src/cairo-xlib-fallback-compositor.c | 14 +++++++++----- + src/cairo-xlib-private.h | 3 ++- + src/cairo-xlib-render-compositor.c | 28 +++++++++++++++++++++++++++- + src/cairo-xlib-surface-shm.c | 8 +++++++- + src/cairo-xlib-surface.c | 4 ++-- + 5 files changed, 47 insertions(+), 10 deletions(-) + +commit 4af7a1c8637f3008a2265e063ab990eec07e02dd +Author: Chris Wilson +AuthorDate: Fri Aug 17 23:17:43 2012 +0100 +Commit: Chris Wilson +CommitDate: Fri Aug 17 23:20:01 2012 +0100 + + xlib/shm: Propagate the last-request to the synchronous create + + If we optimise away the pending frees we must be careful to propagate + the implied sync. + + Signed-off-by: Chris Wilson + + src/cairo-xlib-surface-shm.c | 9 ++++++--- + 1 file changed, 6 insertions(+), 3 deletions(-) + +commit 1a87c526bfb7c35f5f207ca4aca7cf50a3b96765 +Author: Chris Wilson +AuthorDate: Fri Aug 17 17:52:37 2012 +0100 +Commit: Chris Wilson +CommitDate: Fri Aug 17 17:52:37 2012 +0100 + + xcb: Migrate to the common mempool implementation + + Having extracted the code for use by the SHM allocator for xlib, remove + the now redundant copy from xcb. + + Signed-off-by: Chris Wilson + + src/cairo-xcb-shm.c | 385 +++------------------------------------------------- + 1 file changed, 21 insertions(+), 364 deletions(-) + +commit e568e7c18b6aa631e4aedd44c44a14bbe6d72976 +Author: Chris Wilson +AuthorDate: Fri Aug 17 15:38:16 2012 +0100 +Commit: Chris Wilson +CommitDate: Fri Aug 17 15:38:16 2012 +0100 + + xlib/shm: Fix up the shrinking of the priority queue + + Signed-off-by: Chris Wilson + + src/cairo-xlib-surface-shm.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 7266d59ebc26c5ae80c04f0270fb88f33217ebd9 +Author: Chris Wilson +AuthorDate: Fri Aug 17 15:31:07 2012 +0100 +Commit: Chris Wilson +CommitDate: Fri Aug 17 15:31:07 2012 +0100 + + configure: Restore previous pixman required version of 0.22.0 + + With optional compile time support for pixman glyphs, our hard pixman + requirement is then just 0.22.0 for the radial fixes (iirc). + + Signed-off-by: Chris Wilson + + configure.ac | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit f42c0dcf7b37c8daf80e8075aa5286d137062a88 +Author: Chris Wilson +AuthorDate: Tue Aug 14 21:50:37 2012 +0100 +Commit: Chris Wilson +CommitDate: Fri Aug 17 13:58:09 2012 +0100 + + tor22: Add a simple method to quickly compute coverage (with saturation) + + Signed-off-by: Chris Wilson + + src/cairo-tor22-scan-converter.c | 2 ++ + 1 file changed, 2 insertions(+) + +commit 0bfd2acd35547fc2bd0de99cc67d153f0170697d +Author: Chris Wilson +AuthorDate: Mon Aug 13 01:34:12 2012 +0100 +Commit: Chris Wilson +CommitDate: Fri Aug 17 13:58:09 2012 +0100 + + xlib: Implement SHM fallbacks and fast upload paths + + Signed-off-by: Chris Wilson + + configure.ac | 4 +- + src/Makefile.sources | 3 + + src/cairo-cogl-surface.c | 8 +- + src/cairo-damage.c | 1 - + src/cairo-directfb-surface.c | 6 +- + src/cairo-gl-surface.c | 9 +- + src/cairo-image-compositor.c | 26 +- + src/cairo-image-surface-inline.h | 2 +- + src/cairo-image-surface-private.h | 6 + + src/cairo-image-surface.c | 2 +- + src/cairo-mempool-private.h | 83 +++ + src/cairo-mempool.c | 359 ++++++++++ + src/cairo-quartz-image-surface.c | 6 +- + src/cairo-scaled-font.c | 2 +- + src/cairo-surface-backend-private.h | 3 +- + src/cairo-surface-inline.h | 4 +- + src/cairo-surface-observer.c | 6 +- + src/cairo-surface-private.h | 3 + + src/cairo-surface-snapshot.c | 5 +- + src/cairo-surface-subsurface.c | 6 +- + src/cairo-surface.c | 101 ++- + src/cairo-xcb-surface.c | 6 +- + src/cairo-xlib-display.c | 9 +- + src/cairo-xlib-fallback-compositor.c | 190 +++++- + src/cairo-xlib-private.h | 59 ++ + src/cairo-xlib-render-compositor.c | 155 ++++- + src/cairo-xlib-source.c | 231 ++++--- + src/cairo-xlib-surface-shm.c | 1119 +++++++++++++++++++++++++++++++ + src/cairo-xlib-surface.c | 286 ++++++-- + src/cairo-xlib-xcb-surface.c | 5 +- + src/cairoint.h | 2 +- + src/drm/cairo-drm-gallium-surface.c | 6 +- + src/drm/cairo-drm-i915-private.h | 2 +- + src/drm/cairo-drm-i915-surface.c | 8 +- + src/drm/cairo-drm-i965-shader.c | 4 +- + src/drm/cairo-drm-i965-surface.c | 5 +- + src/drm/cairo-drm-intel-private.h | 3 +- + src/drm/cairo-drm-intel-surface.c | 5 +- + src/drm/cairo-drm-radeon-surface.c | 6 +- + src/win32/cairo-win32-display-surface.c | 5 +- + src/win32/cairo-win32-gdi-compositor.c | 4 +- + 41 files changed, 2517 insertions(+), 238 deletions(-) + +commit 140fafed89508c4685f3a464c9dbe8df769f2411 +Author: Daniel Stone +AuthorDate: Thu Aug 16 18:23:41 2012 +0100 +Commit: Chris Wilson +CommitDate: Thu Aug 16 20:11:44 2012 +0100 + + Fix broken XRender ARGB32 formats + + 46d79228 did indeed silence the compilation warning, but did so by never + creating an ARGB32 format, as PictStandardARGB32 is defined to 0. Fix + this by using PictStandardNUM as our canary value instead. + + This fixes GEdit and Chromium for me, both of which were only rendering + backgrounds and text in their GTK+ sections. + + Signed-off-by: Daniel Stone + + src/cairo-xlib-display.c | 5 ++--- + 1 file changed, 2 insertions(+), 3 deletions(-) + +commit 95b7f4fe3a5deea6766538d843c75626e4bb68cf +Author: Chris Wilson +AuthorDate: Sun Aug 12 19:10:04 2012 +0100 +Commit: Chris Wilson +CommitDate: Sun Aug 12 19:10:04 2012 +0100 + + image: Temporarily resurrect the old non-pixman glyph compositor + + As the easiest approach to making another snapshot that only depends + upon a stable pixman, make the new dependency a compile time option. + + Signed-off-by: Chris Wilson + + configure.ac | 7 +- + src/cairo-image-compositor.c | 285 +++++++++++++++++++++++++++++++++++++++++++ + 2 files changed, 291 insertions(+), 1 deletion(-) + +commit 16426dab486767cb16dfaf5158c5d4b3317546b0 +Author: Chris Wilson +AuthorDate: Sun Aug 12 16:12:47 2012 +0100 +Commit: Chris Wilson +CommitDate: Sun Aug 12 16:12:47 2012 +0100 + + skia: Compile fix for changes to map-to-image + + Signed-off-by: Chris Wilson + + src/skia/cairo-skia-surface.cpp | 16 +++++----------- + 1 file changed, 5 insertions(+), 11 deletions(-) + +commit d647d4f7db1f9b65f5d7f64574b1989b830aaa7c +Author: Chris Wilson +AuthorDate: Sat Aug 11 19:28:21 2012 +0100 +Commit: Chris Wilson +CommitDate: Sat Aug 11 19:29:19 2012 +0100 + + damage: Update tail pointer after allocating new chunk + + Reported and based on a patch by fmot.fics + + Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=53384 + Signed-off-by: Chris Wilson + + src/cairo-damage.c | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +commit adfe9b7eb67f642cda93f80cf9c97f1eaded0317 +Author: Chris Wilson +AuthorDate: Sat Aug 11 17:55:49 2012 +0100 +Commit: Chris Wilson +CommitDate: Sat Aug 11 18:25:27 2012 +0100 + + gl: Fudge gradient color generation to handle multiple stops at 0 + + In order to generate the correct left-hand border color, we need to + fudge the offsets of the color stops if multiple stops are defined at 0. + The reason is that pixman will generate our color ramp by using the + right-most color stop for the pixel centre, but in order to provide the + sample colour outside of the gradient we need pixel 0 to be have the + left-most color. + + Reported by Henry Song. + + src/cairo-gl-gradient.c | 29 +++++++++++++++++++++++++++++ + 1 file changed, 29 insertions(+) + +commit b0336e9aadbbface0a059887ac62b1398bc81e7b +Author: Chris Wilson +AuthorDate: Sat Aug 11 18:23:51 2012 +0100 +Commit: Chris Wilson +CommitDate: Sat Aug 11 18:25:27 2012 +0100 + + gl: Use a wide texture ramp to emulate a linear step function + + If the gradient contains a step function, we need an infinitely sharp + texture to emulate the correct output. Failing that, lets just use as + large a texture as can be reasonably handled by the hardware + + src/cairo-gl-gradient.c | 7 ++++--- + 1 file changed, 4 insertions(+), 3 deletions(-) + +commit 46d79228df5c5fda114e68d3df02eaa33b5a41c9 +Author: Chris Wilson +AuthorDate: Sat Aug 11 17:48:17 2012 +0100 +Commit: Chris Wilson +CommitDate: Sat Aug 11 17:48:17 2012 +0100 + + xlib: Silence compiler warning + + cairo-xlib-display.c: In function '_cairo_xlib_display_get_xrender_format': + cairo-xlib-display.c:519:21: warning: 'pict_format' may be used + uninitialized in this function [-Wmaybe-uninitialized] + + Signed-off-by: Chris Wilson + + src/cairo-xlib-display.c | 9 +++++---- + 1 file changed, 5 insertions(+), 4 deletions(-) + +commit 40e6be327861397a821e92ab626269e31fd13979 +Author: Chris Wilson +AuthorDate: Sat Aug 11 17:43:46 2012 +0100 +Commit: Chris Wilson +CommitDate: Sat Aug 11 17:43:46 2012 +0100 + + gl: Remove unused variable + + cairo-gl-glyphs.c: In function '_cairo_gl_composite_glyphs_with_clip': + cairo-gl-glyphs.c:442:9: warning: unused variable 'i' [-Wunused-variable] + + Signed-off-by: Chris Wilson + + src/cairo-gl-glyphs.c | 1 - + 1 file changed, 1 deletion(-) + +commit f59b0914f4ddbff0d116c918343a6726d5f4317b +Author: Chris Wilson +AuthorDate: Sat Aug 11 17:38:36 2012 +0100 +Commit: Chris Wilson +CommitDate: Sat Aug 11 17:42:17 2012 +0100 + + egl: s/EGL_KHR_surfaceless_opengl/EGL_KHR_surfaceless_context/ + + Mesa changed the name of the extension it invented, so check for the + real name and the old name before falling back to pbuffers which are not + supported by most EGL implementations. + + References: https://bugs.freedesktop.org/show_bug.cgi?id=53361 + Signed-off-by: Chris Wilson + + src/cairo-egl-context.c | 5 +++-- + 1 file changed, 3 insertions(+), 2 deletions(-) + +commit b438e583089229d934df48e6fbf0edcd1b23dcd4 +Author: Chris Wilson +AuthorDate: Sat Aug 11 17:37:52 2012 +0100 +Commit: Chris Wilson +CommitDate: Sat Aug 11 17:42:17 2012 +0100 + + trace: Fix propagation of CAIRO_TRACE_OUTDIR to children + + Signed-off-by: Chris Wilson + + util/cairo-trace/trace.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 65854a001529932c4f2c85a4ee32095443153319 +Author: Adrian Johnson +AuthorDate: Fri Aug 3 18:23:55 2012 +0930 +Commit: Adrian Johnson +CommitDate: Fri Aug 3 18:23:55 2012 +0930 + + type1 subset: ensure encoding includes all glyphs + + Bug 53040 + + src/cairo-type1-subset.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +commit 5dd0f2eb951f8fb1d50802c99c660de1de486154 +Author: Adrian Johnson +AuthorDate: Tue Jul 31 22:52:09 2012 +0930 +Commit: Adrian Johnson +CommitDate: Tue Jul 31 22:52:09 2012 +0930 + + cff subsetting: widths can be floating point + + Bug 52972 + + src/cairo-cff-subset.c | 22 +++++++++++----------- + 1 file changed, 11 insertions(+), 11 deletions(-) + +commit 1e9abd6e4e5d857c5e7a117d4e960b222a5f5578 +Author: Henry Song +AuthorDate: Thu Jul 26 18:31:20 2012 +0100 +Commit: Chris Wilson +CommitDate: Thu Jul 26 18:32:00 2012 +0100 + + gl: use absolute value for color difference between gradient stops + + src/cairo-gl-gradient.c | 8 ++++---- + 1 file changed, 4 insertions(+), 4 deletions(-) + +commit 652c632fb211cede74cef3813c7d6e8099d02089 +Author: Chris Wilson +AuthorDate: Wed Jul 25 17:03:54 2012 +0100 +Commit: Chris Wilson +CommitDate: Wed Jul 25 17:08:30 2012 +0100 + + gl: Fallback for copy_boxes if src/dst do not belong to the same device + + If the source and destination are on difference devices (GL contexts) we + can not simply texture from one to the other, and must either import the + source into the destination context (which has not yet been done) or + fallback through an image copy. + + This patch is based on the work by Henry Song, but moving the check from + the common compositor layer down into the GL backend. This should have + the same effect... + + Fixes gl-surface-source + + Suggested-by: Henry Song + Signed-off-by: Chris Wilson + + src/cairo-gl-spans-compositor.c | 9 +++++++-- + 1 file changed, 7 insertions(+), 2 deletions(-) + +commit f3abb1079a9766646dd0eda2f8a1633f8efff516 +Author: Henry Song +AuthorDate: Wed Jul 25 16:12:22 2012 +0100 +Commit: Chris Wilson +CommitDate: Wed Jul 25 17:08:30 2012 +0100 + + gl: translate proper matrix depending up type of gl_operand + + Fixes radial-gradiant-mask-source. + + src/cairo-gl-operand.c | 22 ++++++++++++++++++++-- + 1 file changed, 20 insertions(+), 2 deletions(-) + +commit d00539ca13fbd36dea07b386211ad49ef744d5ee +Author: Andrea Canciani +AuthorDate: Tue Jul 24 10:21:08 2012 +0200 +Commit: Andrea Canciani +CommitDate: Tue Jul 24 11:06:30 2012 +0200 + + quartz: Use the correct transform when replaying recording surfaces + + Recording surfaces should be replayed with the transform matrix used + in the pattern, otherwise the image surface will be transformed, + introducing artifacts. + + Fixes record{1414x,2x}-paint-alpha-{,solid-clip,clip}, + record2x-{self-intersecting,text-transform} and record90-paint-alpha. + + src/cairo-quartz-surface.c | 16 ++++++++++------ + 1 file changed, 10 insertions(+), 6 deletions(-) + +commit 44a07a66135c4f534c909bd84f24cf7c0275a914 +Author: Henry (Yu) Song - SISA +AuthorDate: Mon Jul 23 16:28:28 2012 +0000 +Commit: Andrea Canciani +CommitDate: Tue Jul 24 11:06:30 2012 +0200 + + quartz: Never acquire recording surfaces + + We need to replay if the source/mask surface is a recording surface + otherwise, a crash happens if it is unbounded. + + Fixes crashes in recordxx-xxx tests + + src/cairo-quartz-surface.c | 86 ++++++++++++++++++++++++++++++++++++---------- + 1 file changed, 67 insertions(+), 19 deletions(-) + +commit 459c060b6fcc0a3b7e6f0e544fe83f954a5ca716 +Author: Henry (Yu) Song - SISA +AuthorDate: Tue Jul 24 02:05:15 2012 +0000 +Commit: Andrea Canciani +CommitDate: Tue Jul 24 11:06:29 2012 +0200 + + clip: Transform clip path in _cairo_clip_intersect_clip_path_transformed() + + _cairo_clip_intersect_clip_path_transformed() completely ignored the + transformation matrix instead of transforming all the clip paths with + it. + + This caused bugs when replaying recording surfaces. + + Fixes record{2x,1414x,90}-paint-alpha-clip-mask. + + src/cairo-clip.c | 2 ++ + 1 file changed, 2 insertions(+) + +commit 5f1dd8b3684db5aed42f355fa41310639e7d395d +Author: Andrea Canciani +AuthorDate: Tue Jul 24 09:56:52 2012 +0200 +Commit: Andrea Canciani +CommitDate: Tue Jul 24 10:45:52 2012 +0200 + + xcb: Fix make check + + The xcb private header uses the ASSERT_NOT_REACHED macro. + This macro is defined in cairoint.h, which needs to be included. + + Fixes: + + CHECK cairo-xcb-private.h + In file included from headers-standalone-tmp.c:1: + ./cairo-xcb-private.h: In function ‘_cairo_xcb_connection_shm_put_image’: + ./cairo-xcb-private.h:636: error: ‘ASSERT_NOT_REACHED’ undeclared (first use in this function) + ./cairo-xcb-private.h:636: error: (Each undeclared identifier is reported only once + ./cairo-xcb-private.h:636: error: for each function it appears in.) + + src/cairo-xcb-private.h | 2 ++ + 1 file changed, 2 insertions(+) + +commit 21e3f2e9034b64131075d82a4e34868dc72f2249 +Author: Chuanbo Weng +AuthorDate: Thu Jul 12 18:08:51 2012 +0100 +Commit: Chris Wilson +CommitDate: Thu Jul 12 18:15:00 2012 +0100 + + gl: copy_boxes() does not support copying from a non-texture source + + So check for the appropriate surface type at the start and return + UNSUPPORTED if we cannot handle it directly. We will then fallback to + pushing the image instead. + + Together with the previous patch, fixes 8 fails in cairo-test-suite. + + src/cairo-gl-spans-compositor.c | 3 +++ + 1 file changed, 3 insertions(+) + +commit 77f8bd3199b546b3ba039afc90337159636b63f6 +Author: Chuanbo Weng +AuthorDate: Thu Jul 12 18:07:42 2012 +0100 +Commit: Chris Wilson +CommitDate: Thu Jul 12 18:14:59 2012 +0100 + + gl: Create a new texture surface if the source surface type is gl-window + + When the source surface type is gl-window, we should return unsupported + and then create a new texture surface for it. Based on the code of + Henry's tree. + + src/cairo-gl-operand.c | 3 +++ + 1 file changed, 3 insertions(+) + +commit ac2668dd087ce32d86d3bd44f7886638e76b5b8a +Author: Dongyeon Kim +AuthorDate: Thu Jul 12 18:13:43 2012 +0100 +Commit: Chris Wilson +CommitDate: Thu Jul 12 18:14:59 2012 +0100 + + gl: Set is_clear flag to FALSE after map_to_image + + In _cairo_gl_surface_map_to_image(), the image surface data has been + filled by glReadPixels, so is_clear flag should be set to FALSE. + Otherwise mapped image surface does not get drawn as it is presumed + clear and so returns true from nothing_to_do(). + + src/cairo-gl-surface.c | 1 + + 1 file changed, 1 insertion(+) + +commit 70c2125e2c968358a8c7ddaa4e356e9b0de9c323 +Author: Chris Wilson +AuthorDate: Thu Jul 12 18:11:21 2012 +0100 +Commit: Chris Wilson +CommitDate: Thu Jul 12 18:14:59 2012 +0100 + + perf/chart: Render a solid bar if the column is too narrow for the gradient + + Signed-off-by: Chris Wilson + + perf/cairo-perf-chart.c | 53 +++++++++++++++++++++++++++++-------------------- + 1 file changed, 31 insertions(+), 22 deletions(-) + +commit 6aed048484801285ca7bd5afd825294f1ab7ce6d +Author: Chris Wilson +AuthorDate: Wed Jul 11 11:51:36 2012 +0100 +Commit: Chris Wilson +CommitDate: Wed Jul 11 11:51:36 2012 +0100 + + gl: Add the compile fix that I forgot to add to the previous commit + + src/cairo-gl-device.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit bdb9c2cb4389d7bcbd3602f8ce8fb457fb1003bd +Author: Henry Song +AuthorDate: Wed Jul 11 10:05:51 2012 +0100 +Commit: Chris Wilson +CommitDate: Wed Jul 11 10:05:51 2012 +0100 + + gl: Destroy glyph cache surface during finish + + We must destroy glyph cache surface in device_finish instead of in + device_destroy because in device_destroy device status is + DEVICE_FINISHED and the operation is invalid. + + src/cairo-gl-device.c | 6 +++--- + 1 file changed, 3 insertions(+), 3 deletions(-) + +commit 64a236246bf4276606ce69c79702f15373c5425d +Author: Henry Song +AuthorDate: Tue Jul 10 16:12:25 2012 +0100 +Commit: Chris Wilson +CommitDate: Tue Jul 10 16:14:54 2012 +0100 + + gl: generate correct gradient color texture + + Pixman generates gradient color at the center of pixel. We need to + adjust such accordingly in GL when generating gradient texture + + src/cairo-gl-gradient.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +commit 6938592ec7e1a1b4cfccb11521ecdfdb8579f380 +Author: Chris Wilson +AuthorDate: Mon Jul 9 21:50:34 2012 +0100 +Commit: Chris Wilson +CommitDate: Mon Jul 9 21:57:03 2012 +0100 + + xlib: If a sample accesses outside of a repeating image, upload it all + + Fixes bug-51910 + + Reported-by: Albertas Vyšniauskas + Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=51910 + Signed-off-by: Chris Wilson + + src/cairo-xlib-source.c | 20 +++++++++++++------- + 1 file changed, 13 insertions(+), 7 deletions(-) + +commit ff22ab4c10e169e457887fae4fbd5394d45b939e +Author: Chris Wilson +AuthorDate: Mon Jul 9 16:13:49 2012 +0100 +Commit: Chris Wilson +CommitDate: Mon Jul 9 21:57:03 2012 +0100 + + test: Add example from bug-51910 + + The calculation of the required source extents blows up under xlib. + + Signed-off-by: Chris Wilson + + test/Makefile.sources | 1 + + test/bug-51910.c | 91 +++++++++++++++++++++++++++++++++++++++ + test/reference/bug-51910.ref.png | Bin 0 -> 1987 bytes + 3 files changed, 92 insertions(+) + +commit 7b6f9fd14091d23a69b06c422262d293268035d0 +Author: Chris Wilson +AuthorDate: Fri Jun 29 19:57:21 2012 +0100 +Commit: Chris Wilson +CommitDate: Mon Jul 9 21:57:03 2012 +0100 + + test: Add a simple exercise for raster sampling of subpixel geometry + + Test that the rasteriser doesn't incorrectly merge disjoint geometry at + the subpixel level. + + Signed-off-by: Chris Wilson + + test/Makefile.sources | 1 + + test/reference/sample-diagonal.ref.png | Bin 0 -> 272 bytes + test/reference/sample-horizontal.ref.png | Bin 0 -> 209 bytes + test/reference/sample-vertical.ref.png | Bin 0 -> 209 bytes + test/sample.c | 117 +++++++++++++++++++++++++++++++ + 5 files changed, 118 insertions(+) + +commit 1cac6e7fcc88b8545a9c56bf3265f37418957bb7 +Author: Adrian Johnson +AuthorDate: Thu Jul 5 22:41:28 2012 +0930 +Commit: Adrian Johnson +CommitDate: Thu Jul 5 22:41:28 2012 +0930 + + cff: initialise variable to prevent valgrind warning + + src/cairo-cff-subset.c | 1 + + 1 file changed, 1 insertion(+) + +commit 49c8e1b6744aa9cd296fff07d5be0ba7dcc69ff7 +Author: Adrian Johnson +AuthorDate: Thu Jul 5 21:59:33 2012 +0930 +Commit: Adrian Johnson +CommitDate: Thu Jul 5 21:59:33 2012 +0930 + + cff: use correct size for buffer + + Bug 51443 + + src/cairo-cff-subset.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 77106a038bcd0dd503d383729f14134f76a664b2 +Author: Adrian Johnson +AuthorDate: Wed Jul 4 19:54:18 2012 +0930 +Commit: Adrian Johnson +CommitDate: Wed Jul 4 19:54:18 2012 +0930 + + cff: convert '.' to locale specific decimal point before using sscanf + + to fix bug when decoding cff real numbers. + + Bug 51443 + + src/cairo-cff-subset.c | 26 +++++++++++++++++++++++++- + 1 file changed, 25 insertions(+), 1 deletion(-) + +commit 64d65f72e5dbc1d9fa2cb4738d93eadc7fd5d7c0 +Author: Chris Wilson +AuthorDate: Fri Jun 29 10:25:13 2012 +0100 +Commit: Chris Wilson +CommitDate: Fri Jun 29 10:33:08 2012 +0100 + + boilerplate/gl: Round fractional window sizes up + + A few test cases purposely create fractional surface sizes which can not + be natively supported by the raster backends such as GL. For these + backends we need to consistent in creating a surface that is large + enough to contain the test, so we need to use ceil() rather than + implicit truncation to integers. + + A consequence of the misalignment between the Window size and the + surface size (where one was using ceil and the other not) is that the + first row of the cairo surface would not be visible on the output. + + Based on a patch by Chuanbo Wen to fix 5 test cases, such as + group-unaligned. + + Signed-off-by: Chris Wilson + + boilerplate/cairo-boilerplate-glx.c | 23 ++++++++++++++--------- + 1 file changed, 14 insertions(+), 9 deletions(-) + +commit cb85631c63539f259d6a3c1c04db904cbbf01d93 +Author: Chris Wilson +AuthorDate: Mon Jun 25 14:07:33 2012 +0100 +Commit: Chris Wilson +CommitDate: Fri Jun 29 10:33:08 2012 +0100 + + ft: Indentation fixup for _get_bitmap_surface() + + Signed-off-by: Chris Wilson + + src/cairo-ft-font.c | 14 +++++++------- + 1 file changed, 7 insertions(+), 7 deletions(-) + +commit 1bdee6b1ad00a2e5916bffea71719977f37f1982 +Author: Chuanbo Weng +AuthorDate: Tue Jun 26 08:02:35 2012 +0800 +Commit: Chris Wilson +CommitDate: Tue Jun 26 10:14:05 2012 +0100 + + gl: Set correct operation extents. + + The dst_x and dst_y should be considered when setting clip extents, + because they are not always be zero. (for example, in clip-operator.c) + + src/cairo-gl-glyphs.c | 7 ++++++- + 1 file changed, 6 insertions(+), 1 deletion(-) + +commit 9f52261dd7941ec7b338b050479da25c2571f9ac +Author: Uli Schlachter +AuthorDate: Sun Jun 3 19:35:37 2012 +0200 +Commit: Uli Schlachter +CommitDate: Mon Jun 25 21:18:18 2012 +0200 + + xcb: Correctly handle a recording surface's extents + + The size of the target area doesn't really have much to do with the size of the + recording surface that we are painting from. Thus, let's use the recording + surface's size instead. + + Since we apply the transformation before replaying the recording surface, we + need to transform the recording surface's size via the inverse of our pattern + matrix to get the size in the target surface. This makes this a little more + complex. + + Signed-off-by: Uli Schlachter + + src/cairo-xcb-surface-render.c | 48 ++++++++++++++++++++++++++++++++---------- + 1 file changed, 37 insertions(+), 11 deletions(-) + +commit e704f64d8fcceb220c8c99092c19c2cfd4bd9330 +Author: Uli Schlachter +AuthorDate: Sun Jun 3 16:53:49 2012 +0200 +Commit: Uli Schlachter +CommitDate: Mon Jun 25 21:18:18 2012 +0200 + + xcb: Handle recording surfaces differently + + Let's say we are painting recording surface 'source' to xcb surface 'target' by + replaying the source to a temporary surface 'tmp'. + + Previously, the xcb backend replayed the recording surface to tmp with just a + translation and then used that as its source surface with the pattern's + transformation. That means 'tmp' used the same coordinate system as 'source'. + + This patch changes this so that the transformation is applied during the replay + and painting from 'tmp' to 'target' is just a simple translation, so 'tmp' now + uses the same coordinate system as 'target'. + + This should produce way less better results, because transforming a recording + surface should have less artifacts than transforming a raster surface. + + Fixes: record1414x-* record2x-* record90-* ps-surface-source + + Breaks (or rather, "exposes unrelated bug that I have not yet figured out in"): + record-extend-*-similar + + Signed-off-by: Uli Schlachter + + src/cairo-xcb-surface-render.c | 10 +++------- + 1 file changed, 3 insertions(+), 7 deletions(-) + +commit 13d61d7bdb7ec37ebb7324187aca1b9b9b1600cf +Author: Chuanbo Weng +AuthorDate: Sun Jun 24 12:13:02 2012 +0100 +Commit: Chris Wilson +CommitDate: Sun Jun 24 12:13:02 2012 +0100 + + gl: Set correct clip rectangle for non-texture destination surfaces + + When the desintation surface is not a texture, it is flipped in the Y + axis. So we need to correct the Y coordinates when using glScissor to + the set the clip region. + + Fixes 14 cases in cairo-test-suite, for example partial-clip-text-top + + src/cairo-gl-composite.c | 27 ++++++++++++++++++++++----- + 1 file changed, 22 insertions(+), 5 deletions(-) + +commit 166e6f199e909d8aea13cdd4c858d48faad26247 +Author: Chris Wilson +AuthorDate: Sun Jun 24 11:33:47 2012 +0100 +Commit: Chris Wilson +CommitDate: Sun Jun 24 11:53:25 2012 +0100 + + stroke: Skip inserting a round-join if within tolerance + + If the angle between two segments is small we can simply replace the + round-join with a bevel-join. This is done automatically by the + insertion of the triangle fan as it will not be able to find a point + around the pen between the two vectors. However, we can make that search + cheaper by inspecting whether the bisection angle is small enough that + the bevel-join will be within geometric tolerance of the round-join. + + Signed-off-by: Chris Wilson + + src/cairo-path-stroke-polygon.c | 14 +++++++++----- + 1 file changed, 9 insertions(+), 5 deletions(-) + +commit b7bd5ae4f3da44131261711bb236cd7aa24a3ae3 +Author: Chris Wilson +AuthorDate: Sun Jun 24 11:27:16 2012 +0100 +Commit: Chris Wilson +CommitDate: Sun Jun 24 11:53:18 2012 +0100 + + stroke: Use round-joins near inflection points of splines + + Near an inflection, the angle between two segments of a spline increases + rapidly (as the radius of curvature decreases for the cusp). The angle + may increase so much that a simple line connecting the two outside + points of the spline is not within the user specified geometric + tolerance (with the result that you can generate severe ugliness around + a cusp). Extend the current detection of the exact inflection to cover + the sharp joins near the cusp by inspecting whether the bisection angle + is larger than acceptable. + + Fixes bug-spline. + + Signed-off-by: Chris Wilson + + src/cairo-path-stroke-polygon.c | 17 ++++++++++++++--- + 1 file changed, 14 insertions(+), 3 deletions(-) + +commit 3d482e266febcf7da75f5662e518380460068ce1 +Author: Chris Wilson +AuthorDate: Sun Jun 24 11:50:26 2012 +0100 +Commit: Chris Wilson +CommitDate: Sun Jun 24 11:53:09 2012 +0100 + + test: Exercise bug in joining together spline segments around cusps + + Carl Worth demonstrated a glaring bug in the new stroking code, + introduced in commit 545f30856aac98199 (stroke: Convert the outlines + into contour and then into a polygon), whereby only a bevel join was + being used to connect segments around a sharp inflection point. + + This adds the two examples he reported to the test suite. + + test/Makefile.sources | 1 + + test/bug-spline.c | 96 ++++++++++++++++++++++++++++++++++++++ + test/reference/bug-spline.ref.png | Bin 0 -> 5476 bytes + 3 files changed, 97 insertions(+) + +commit 185a3518968d5ca0babb798fe10f247171a1e001 +Author: Chris Wilson +AuthorDate: Wed Jun 20 09:15:29 2012 +0100 +Commit: Chris Wilson +CommitDate: Wed Jun 20 09:20:06 2012 +0100 + + gl: Trim the glyph mask to the operation extents + + In the case we try to use an unbounded operation, passing a NULL clip + causes that operation to clear the rest of the surface. Instead we need + to trim the _cairo_surface_mask() to the operation extents. + + Fixes overlapping-glyphs. + + Suggested-by: Chuanbo Weng + Signed-off-by: Chris Wilson + + src/cairo-gl-glyphs.c | 5 +++++ + 1 file changed, 5 insertions(+) + +commit 35e4ffd91cc73fb17c47a12010f515941d6f4d3d +Author: Chris Wilson +AuthorDate: Fri Jun 15 10:52:25 2012 +0100 +Commit: Chris Wilson +CommitDate: Fri Jun 15 10:52:25 2012 +0100 + + image: Fix up glyphs compositing + + Jose Dapena Paz reported an assertion following the uninitialised status + value being returned. Also the function failed to free its allocations. + + Based on a patch by Jose Dapena Paz . + Reported-by: Jose Dapena Paz + Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=51104 + Signed-off-by: Chris Wilson + + src/cairo-image-compositor.c | 60 ++++++++++++++++++-------------------------- + 1 file changed, 24 insertions(+), 36 deletions(-) + +commit 9bc1ea44316d448110c1d128a9f74147f775943d +Author: Henry Song +AuthorDate: Thu Jun 14 23:07:34 2012 +0100 +Commit: Chris Wilson +CommitDate: Thu Jun 14 23:07:34 2012 +0100 + + subsurface: Disable subsurface-set-snapshot as it creates a ref cycle + + _cairo_surface_subsurface_set_snapshot () sets the subsurface as the + snapshot of its target. This creates a reference cycle (as the target + is already referenced by the surface) and thus a memory leak (assuming + the likely case that user doesn't call finish). + + Test case: subsurface-similar-repeat. + + So make this call as a no-op for the time being until the bug is fixed. + + src/cairo-surface-subsurface.c | 6 ++++++ + 1 file changed, 6 insertions(+) + +commit 13ba74a00d34b232f76ecb9efc96eea1227ce649 +Author: Andrea Canciani +AuthorDate: Thu Jun 14 08:12:41 2012 +0200 +Commit: Andrea Canciani +CommitDate: Thu Jun 14 08:12:41 2012 +0200 + + quart-image: Fix compilation + + quartz-image uses _cairo_surface_is_image(), which is now declared in + cairo-image-surface-inline.h. + + Fixes: + cairo-quartz-image-surface.c: In function 'cairo_quartz_image_surface_create': + cairo-quartz-image-surface.c:312: error: implicit declaration of function '_cairo_surface_is_image' + cairo-quartz-image-surface.c:312: warning: nested extern declaration of '_cairo_surface_is_image' + + src/cairo-quartz-image-surface.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 615205cf072935401dac46813b597e70bc8f0a8c +Author: Søren Sandmann Pedersen +AuthorDate: Mon Apr 30 09:41:44 2012 -0400 +Commit: Søren Sandmann Pedersen +CommitDate: Sat Jun 9 15:52:59 2012 -0400 + + Use the new pixman_glyph_cache_t API that will be in pixman 0.28.0 + + This new pixman API allows glyphs to be cached and composited in one + go, which reduces overhead compared to individual calls to + pixman_image_composite_region32(). + + Notes: + + - There is an explicit call to _cairo_image_scaled_glyph_fini(). This + could instead be done with a private, but I chose not to do that + since we don't need to store any actual data; we only need + notification when the glyph dies. + + - The slowdown in poppler-reseau is real and stable across runs. I'm + not too concerned about it because this benchmark is only one run + and so it is dominated by glyph cache setup costs and FreeType + rasterizing. + + Performance results, image backend: + + Speedups + firefox-talos-gfx 5571.55 -> 4265.57: 1.31x speedup + gnome-terminal-vim 1875.82 -> 1715.14: 1.09x speedup + evolution 1128.24 -> 1047.68: 1.08x speedup + xfce4-terminal-a1 1364.38 -> 1277.48: 1.07x speedup + + Slowdowns + poppler-reseau 374.42 -> 394.29: 1.05x slowdown + + Performance results, image16 backend: + + Speedups + firefox-talos-gfx 5387.25 -> 4065.39: 1.33x speedup + gnome-terminal-vim 2116.66 -> 1962.79: 1.08x speedup + evolution 987.50 -> 924.27: 1.07x speedup + xfce4-terminal-a1 1856.85 -> 1748.25: 1.06x speedup + gvim 1484.07 -> 1398.75: 1.06x speedup + + Slowdowns + poppler-reseau 371.37 -> 393.99: 1.06x slowdown + + Also bump pixman requirement to 0.27.1. + + configure.ac | 2 +- + src/cairo-image-compositor.c | 361 +++++++++++++---------------------------- + src/cairo-mutex-list-private.h | 1 + + src/cairo-scaled-font.c | 2 + + src/cairoint.h | 4 + + 5 files changed, 121 insertions(+), 249 deletions(-) + +commit f228769dfe5a8b5d73c49a41e95e31ed73a77fb3 +Author: Chris Wilson +AuthorDate: Fri Jun 8 17:22:41 2012 +0100 +Commit: Chris Wilson +CommitDate: Fri Jun 8 17:26:11 2012 +0100 + + polygon-reduce: Reduce broken stopped-edge continuation + + This is hopefully a lesser used path and the attempted optimisation to + continue a stopped edge with a colinear stopped edge highly unlikely and + lost in the noise of the general inefficiency of the routine. As it was + broken, rather than attempt to rectify the "optimisation" remove it. + + Reported-by: Evangelos Foutras + Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=50852 + Signed-off-by: Chris Wilson + + src/cairo-polygon-reduce.c | 157 +++++++++++++++------------------------------ + 1 file changed, 52 insertions(+), 105 deletions(-) + +commit fc501fd6b5c378006cd8970c1dd30ee753817b6d +Author: Chris Wilson +AuthorDate: Fri Jun 8 17:22:17 2012 +0100 +Commit: Chris Wilson +CommitDate: Fri Jun 8 17:26:11 2012 +0100 + + tor-scan-converter: Always recompute min-height following edge removal + + Signed-off-by: Chris Wilson + + src/cairo-tor-scan-converter.c | 9 ++++++--- + 1 file changed, 6 insertions(+), 3 deletions(-) + +commit 1bc696a8fda55ee75139f7d0123d348bbd96d2af +Author: Chris Wilson +AuthorDate: Fri Jun 8 17:20:32 2012 +0100 +Commit: Chris Wilson +CommitDate: Fri Jun 8 17:26:11 2012 +0100 + + spans-compositor: After polygon intersection the fill rule is always non-zero + + As it turns out due to the rules of polygon intersection, there is never + any overlapping spans so the choice is arbitrary. However, lets be + consistent with the rest of the code. + + Signed-off-by: Chris Wilson + + src/cairo-spans-compositor.c | 2 ++ + 1 file changed, 2 insertions(+) + +commit 37532b47c0ef6528fb6696fe97be337d9ad0a900 +Author: Chris Wilson +AuthorDate: Thu Jun 7 15:14:31 2012 +0100 +Commit: Chris Wilson +CommitDate: Thu Jun 7 15:15:55 2012 +0100 + + scaled-font: Take lock around disposing of an empty page upon alloc failure + + Spotted by code inspection whilst looking at #50705 + + References: https://bugs.freedesktop.org/show_bug.cgi?id=50705 + Signed-off-by: Chris Wilson + + src/cairo-scaled-font.c | 2 ++ + 1 file changed, 2 insertions(+) + +commit 2f1d6b27e8b78c77346a5b603114b54400e57d83 +Author: Adrian Johnson +AuthorDate: Thu Jun 7 19:18:52 2012 +0930 +Commit: Adrian Johnson +CommitDate: Thu Jun 7 19:18:52 2012 +0930 + + cff-subsetting: Ignore charset for non cid fonts + + Fixes crash in https://bugzilla.gnome.org/show_bug.cgi?id=677422 + + src/cairo-cff-subset.c | 16 +++++++++------- + 1 file changed, 9 insertions(+), 7 deletions(-) + +commit 9fa047c0ea49d94f9f27947931fe21b70f6463d5 +Author: Chris Wilson +AuthorDate: Mon Jun 4 20:16:12 2012 +0100 +Commit: Chris Wilson +CommitDate: Mon Jun 4 20:18:03 2012 +0100 + + composite-rectangles,scaled-font: Use accurate extents if the font is broken + + If the font metrics appear broken, i.e. key values are being reported as + zero, skip approximating the bbox of the glyph string. + + References: https://bugs.freedesktop.org/show_bug.cgi?id=50688 + Signed-off-by: Chris Wilson + + src/cairo-composite-rectangles.c | 5 +++-- + src/cairo-scaled-font.c | 11 ++++++++++- + src/cairoint.h | 2 +- + 3 files changed, 14 insertions(+), 4 deletions(-) + +commit 0210499578898ba5bab8dbd323455c6735419a5a +Author: Adrian Johnson +AuthorDate: Sat Jun 2 10:48:34 2012 +0930 +Commit: Adrian Johnson +CommitDate: Sat Jun 2 19:01:18 2012 +0930 + + pdf: fix the offset of padded images + + Bug 50598 + + src/cairo-pdf-surface-private.h | 2 -- + src/cairo-pdf-surface.c | 16 ++++++++++++---- + 2 files changed, 12 insertions(+), 6 deletions(-) + +commit f1b546b1a2b3c4a87ca00ce0d6fa6ce88c84d20c +Author: Chris Wilson +AuthorDate: Fri Jun 1 17:46:25 2012 +0100 +Commit: Chris Wilson +CommitDate: Fri Jun 1 18:17:33 2012 +0100 + + Erradicate internal use of cairo_surface_get_type() + + Signed-off-by: Chris Wilson + + src/cairo-pdf-surface.c | 4 ++-- + src/cairo-ps-surface.c | 4 ++-- + src/cairo-quartz-image-surface.c | 4 ++-- + src/cairo-surface.c | 1 - + src/cairoint.h | 1 - + 5 files changed, 6 insertions(+), 8 deletions(-) + +commit e23d179e08367dc03c5c8f242bbc3af0749d4920 +Author: Chris Wilson +AuthorDate: Fri Jun 1 17:46:25 2012 +0100 +Commit: Chris Wilson +CommitDate: Fri Jun 1 17:46:25 2012 +0100 + + Erradicate internal use of cairo_surface_get_content() + + Signed-off-by: Chris Wilson + + src/cairo-pdf-surface.c | 9 ++++----- + src/cairo-ps-surface.c | 2 +- + src/cairo-surface.c | 1 - + src/cairo-svg-surface.c | 2 +- + src/cairoint.h | 1 - + 5 files changed, 6 insertions(+), 9 deletions(-) + +commit 4b5d3436a36e7a2fe29131dff58b50999cd972bb +Author: Søren Sandmann Pedersen +AuthorDate: Fri Jun 1 08:13:17 2012 +0100 +Commit: Chris Wilson +CommitDate: Fri Jun 1 08:13:17 2012 +0100 + + image: Fix bugs related to glyph mask creation + + In addition to fixing a bug 7d8d98b91ccf7165be853c36e6d5ef releated to + expanding a8 glyphs into a8r8g8b8, this commit also added an + optimization where if the first glyph had format a8r8g8b8, the mask + was created in this format from the beginning instead of later + converting from a8 to a8r8g8b8. + + However, the optimization had two bugs in it: + + (1) The computed stride was 3 * width, not 4 * times width, and + (2) In the case where the mask was allocated on the stack, it was + allocated as PIXMAN_a8 and not a8r8g8b8. + + The commit fixes both bugs. + + src/cairo-image-compositor.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +commit c0a92bf8329c5a8aee76ac96034435d4fce043dc +Author: Chris Wilson +AuthorDate: Thu May 31 18:30:58 2012 +0100 +Commit: Chris Wilson +CommitDate: Thu May 31 18:30:58 2012 +0100 + + surface: replace map-to-image clone's use of user_data with parent pointer + + Removes an another undeclared PLT entry and prevents mixing of user_data + with internal state. + + Signed-off-by: Chris Wilson + + src/cairo-image-surface-inline.h | 6 ++++++ + src/cairo-image-surface-private.h | 3 --- + src/cairo-image-surface.c | 12 +----------- + 3 files changed, 7 insertions(+), 14 deletions(-) + +commit 9e933d4b8790f0f8309bdd980f4558d51ccec168 +Author: Chris Wilson +AuthorDate: Thu May 31 18:25:09 2012 +0100 +Commit: Chris Wilson +CommitDate: Thu May 31 18:25:09 2012 +0100 + + gl: Add missing cairo-private to _cairo_gl_composite_with_clip + + Signed-off-by: Chris Wilson + + src/cairo-gl-private.h | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 9275b4d5aa45320bc3804980337c7aff6c34c029 +Author: Chris Wilson +AuthorDate: Thu May 31 18:22:11 2012 +0100 +Commit: Chris Wilson +CommitDate: Thu May 31 18:22:11 2012 +0100 + + surface: Eliminate PLT entries for map-to-image + + Use the internal symbols internally. + + Signed-off-by: Chris Wilson + + src/cairo-surface.c | 16 ++++++++++++---- + 1 file changed, 12 insertions(+), 4 deletions(-) + +commit 2c6ba9a8733044ad8685e6e8312e945a7a49ce3a +Author: Chris Wilson +AuthorDate: Thu May 31 18:08:05 2012 +0100 +Commit: Chris Wilson +CommitDate: Thu May 31 18:10:36 2012 +0100 + + image: silence make check + + The check for standalone headers requires that the + cairo-image-surface-inline.h include the cairo-surface-private.h + + Signed-off-by: Chris Wilson + + src/cairo-image-surface-inline.h | 1 + + src/cairo-surface-private.h | 3 +++ + src/cairoint.h | 3 --- + 3 files changed, 4 insertions(+), 3 deletions(-) + +commit 98c3ed1dbd9036cb8d6f64d170d213a865e2094a +Author: Chuanbo Weng +AuthorDate: Wed May 30 22:51:03 2012 +0800 +Commit: Chris Wilson +CommitDate: Thu May 31 11:38:19 2012 +0100 + + gl: Do correct translation and lerp in gl-traps-compositor. + + Coordinate translation is necessary in composite_boxes(), composite() + and composite_traps(). The translation value should set to correct + value in traps_to_operand(). Also fix the bug in lerp(). + + src/cairo-gl-traps-compositor.c | 22 ++++++++++++++-------- + 1 file changed, 14 insertions(+), 8 deletions(-) + +commit 7d8d98b91ccf7165be853c36e6d5ef0714f4a986 +Author: Chris Wilson +AuthorDate: Thu May 31 11:19:23 2012 +0100 +Commit: Chris Wilson +CommitDate: Thu May 31 11:25:11 2012 +0100 + + image: Upconvert glyphs through a WHITE source when adding to the glyph mask + + We need to scale the channels of the glyph into the destination (and + indeed expand a8 into a8r8g8b8) when adding into the mask. Normally we + have matching formats for the glyph surfaces and the temporary mask, + for which we can continue to take the faster path. + + Reported-by: Søren Sandmann + Signed-off-by: Chris Wilson + + src/cairo-image-compositor.c | 74 ++++++++++++++++++++++++++++++++------------ + 1 file changed, 55 insertions(+), 19 deletions(-) + +commit 3f325764e547713bb25aef56d8ffa624bfae75d1 +Author: Adrian Johnson +AuthorDate: Thu May 31 17:46:31 2012 +0930 +Commit: Adrian Johnson +CommitDate: Thu May 31 17:46:31 2012 +0930 + + pdf: Don't use extents when acquiring a RASTER_SOURCE pattern + + because the pdf surface reuses the image each time the pattern is used. + + src/cairo-pdf-surface.c | 17 ++++------------- + 1 file changed, 4 insertions(+), 13 deletions(-) + +commit 43105a89d881a9f86f887c91c022ffc9477c6678 +Author: Chris Wilson +AuthorDate: Thu May 31 08:49:39 2012 +0100 +Commit: Chris Wilson +CommitDate: Thu May 31 08:49:39 2012 +0100 + + test: Restore bug-seams reference + + An overzealous update after converting antialiasing missed the object of + this test was exactly to point out an error due to the antialiasing. So + restore it back to the prestine reference and mark the image backend as + failing. + + Signed-off-by: Chris Wilson + + test/reference/bug-seams.argb32.ref.png | Bin 1647 -> 0 bytes + test/reference/bug-seams.rgb24.ref.png | Bin 1647 -> 0 bytes + 2 files changed, 0 insertions(+), 0 deletions(-) + +commit 25317dbd88e96bb49fa760b50fe705a6a79ee2ec +Author: Yuanhan Liu +AuthorDate: Wed May 30 20:55:22 2012 +0800 +Commit: Chris Wilson +CommitDate: Wed May 30 14:02:21 2012 +0100 + + configure.ac: remove annoying change of INSTALL file + + Every time we run ./autogen.sh, the INSTALL file would be replace by + /usr/share/automake-1.11/INSTALL, which changes the file. This is very + annoying since it messes up the result of 'git diff' and git always + wants to commit it. + + Declare it as foreign would fix this annoying issue. Since it's not a + GNU project, it makes sense to do so. + + Signed-off-by: Yuanhan Liu + + configure.ac | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit f3a1ee5edd1a46e3c316d8555262bce556bc1480 +Author: Chris Wilson +AuthorDate: Wed May 30 11:10:34 2012 +0100 +Commit: Chris Wilson +CommitDate: Wed May 30 11:10:34 2012 +0100 + + gl: Do no access ctx after release during map-to-image + + Based on a patch by Yuanhan Liu. + + Signed-off-by: Chris Wilson + + src/cairo-gl-surface.c | 16 ++++++++-------- + 1 file changed, 8 insertions(+), 8 deletions(-) + +commit 9340fcd965dedf714f658c6ad441787d75c05e59 +Author: Yuanhan Liu +AuthorDate: Wed May 30 15:13:46 2012 +0800 +Commit: Chris Wilson +CommitDate: Wed May 30 10:43:09 2012 +0100 + + gl: use _cairo_gl_operand_copy to fix unblanced reference count + + Use _cairo_gl_operand_copy to do the operand copy instead of by + something like *operand = surface->operand. + + This would fix a crash introduced by operator-source test case, which + forgot to do reference while copying operand but did dereference while + destroying surface at combine_clip_as_traps(). + + Signed-off-by: Yuanhan Liu + [ickle: drop the extra reference for the owned surface] + Signed-off-by: Chris Wilson + + src/cairo-gl-operand.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +commit f3ae8302072dbcee38be4e0a9397e5aaa4084ecf +Author: Adrian Johnson +AuthorDate: Sun May 27 22:59:13 2012 +0930 +Commit: Adrian Johnson +CommitDate: Sun May 27 22:59:13 2012 +0930 + + pdf: merge _emit_recording_surface and _emit_recording_subsurface into the one function + + src/cairo-pdf-surface.c | 112 +++++++++++------------------------------------- + 1 file changed, 26 insertions(+), 86 deletions(-) + +commit 5dd119c1fef0c30bc71311ca9ccacf1f6e8017cf +Author: Adrian Johnson +AuthorDate: Sun May 27 22:32:41 2012 +0930 +Commit: Adrian Johnson +CommitDate: Sun May 27 22:32:41 2012 +0930 + + ps: check if EXTEND_PAD group can be painted with EXTEND_NONE + + src/cairo-ps-surface.c | 31 +++++++++++++++++++++++++------ + 1 file changed, 25 insertions(+), 6 deletions(-) + +commit fcfa45c9f79ccd855d0a16ee1b0f0fa3b4da7809 +Author: Adrian Johnson +AuthorDate: Sun May 27 11:53:43 2012 +0930 +Commit: Adrian Johnson +CommitDate: Sun May 27 11:55:09 2012 +0930 + + pdf: fix smask gradient bbox + + src/cairo-pdf-surface.c | 29 ++++++++++++++++++++++++++--- + 1 file changed, 26 insertions(+), 3 deletions(-) + +commit 29a42ae6827dd17d002304aba552ffb83d3f8a2f +Author: Chris Wilson +AuthorDate: Sat May 26 15:16:13 2012 +0100 +Commit: Chris Wilson +CommitDate: Sat May 26 15:21:23 2012 +0100 + + surface: Kill imagesurf temporary variable + + The local alias to &image->base is more confusing that the code it + replaces. + + Signed-off-by: Chris Wilson + + src/cairo-surface.c | 19 +++++-------------- + 1 file changed, 5 insertions(+), 14 deletions(-) + +commit 11e276753f0d335027a7727bf17006d612b4e4c2 +Author: Chris Wilson +AuthorDate: Sat May 26 15:20:56 2012 +0100 +Commit: Chris Wilson +CommitDate: Sat May 26 15:21:23 2012 +0100 + + image: Propagate errors from clone_subimage + + Signed-off-by: Chris Wilson + + src/cairo-image-surface.c | 26 +++++++++++++++++++------- + 1 file changed, 19 insertions(+), 7 deletions(-) + +commit fc33cc3c3af1fc616ae445a15d2b146a29090b0f +Author: Andrea Canciani +AuthorDate: Fri Jan 6 19:47:08 2012 +0100 +Commit: Andrea Canciani +CommitDate: Sat May 26 16:07:47 2012 +0200 + + quartz: Provide a valid implementation of map_to_image + + and reuse it to implement acquire_source. + + Fixes + + cairo-quartz-surface.c: In function '_cairo_quartz_surface_map_to_image': + cairo-quartz-surface.c:1568: warning: return from incompatible pointer type + cairo-quartz-surface.c:1576: warning: return from incompatible pointer type + + src/cairo-quartz-surface.c | 203 ++++++++++++++++----------------------------- + 1 file changed, 71 insertions(+), 132 deletions(-) + +commit a8a4a8dfd450a8ce97998b5e5e09971d07a957f4 +Author: Andrea Canciani +AuthorDate: Fri Jan 6 20:13:39 2012 +0100 +Commit: Andrea Canciani +CommitDate: Sat May 26 16:07:33 2012 +0200 + + quartz: Mark surfaces created clear as is_clear + + This might provide a speedup when clearing an already clear surface + and is required by cairo_surface_create_similar(). + + Fixes zero-mask. + + src/cairo-quartz-surface.c | 3 +++ + 1 file changed, 3 insertions(+) + +commit 3735881e38d2bee941128725b8cdde6779d60a30 +Author: Andrea Canciani +AuthorDate: Tue Apr 10 22:58:18 2012 +0200 +Commit: Andrea Canciani +CommitDate: Sat May 26 16:07:26 2012 +0200 + + quartz: Silence warning + + cairo-quartz-surface.c:177: warning: enumeration value + 'CAIRO_FORMAT_RGB30' not handled in switch + + src/cairo-quartz-surface.c | 5 +++-- + 1 file changed, 3 insertions(+), 2 deletions(-) + +commit 13b7364836e14b811bbeb3ba0849e6d6c0fb1dd3 +Author: Andrea Canciani +AuthorDate: Wed Jan 11 17:17:29 2012 +0100 +Commit: Andrea Canciani +CommitDate: Sat May 26 16:07:00 2012 +0200 + + surface: Use the internal map/unmap + + In many places Cairo maps/unmaps surfaces to perform operations on the + raw image, but it doesn't care about the format being invalid. All of + these are appropriate users of _cairo_surface_map_to_image(). + + src/cairo-fallback-compositor.c | 56 +++++++++++++++++++++++------------------ + src/cairo-gl-operand.c | 8 +++--- + src/cairo-surface-observer.c | 6 ++--- + src/cairo-surface.c | 2 -- + src/cairo-xlib-source.c | 16 ++++++------ + src/cairoint.h | 2 -- + 6 files changed, 46 insertions(+), 44 deletions(-) + +commit 37c5c2dbe55f64ee84ab248eb0072d5d7c5145cc +Author: Andrea Canciani +AuthorDate: Wed Jan 11 20:51:29 2012 +0100 +Commit: Andrea Canciani +CommitDate: Sat May 26 16:06:39 2012 +0200 + + surface: Only use non-NULL extents for internal mapping + + _cairo_surface_map_to_image() requires the input extents to be + non-NULL. + + src/cairo-gl-operand.c | 5 ++++- + src/cairo-xlib-source.c | 13 ++++++++++--- + 2 files changed, 14 insertions(+), 4 deletions(-) + +commit d6fb8d2134c989d2ad455ec37ce4f623d4769c46 +Author: Andrea Canciani +AuthorDate: Wed Jan 11 17:17:15 2012 +0100 +Commit: Andrea Canciani +CommitDate: Sat May 26 16:06:31 2012 +0200 + + surface: Make backend-specific map/unmap functions symmetric + + Map allocates a surface. Symmetrically, unmap should destroy it. + + src/cairo-gl-surface.c | 17 ++++++++++++----- + src/cairo-image-surface.c | 3 +++ + src/cairo-os2-surface.c | 1 + + src/cairo-quartz-image-surface.c | 7 ++----- + src/cairo-quartz-surface.c | 1 + + src/cairo-surface-observer.c | 12 ++---------- + src/cairo-surface-subsurface.c | 12 ++---------- + src/cairo-surface.c | 2 +- + src/cairo-xcb-surface.c | 13 ++++++++++--- + src/cairo-xlib-surface.c | 17 ++++++++++++----- + src/cairo-xlib-xcb-surface.c | 10 ++-------- + 11 files changed, 48 insertions(+), 47 deletions(-) + +commit df7829e2cca07c3bfcddda1c66ca56280edceaf4 +Author: Andrea Canciani +AuthorDate: Tue Apr 10 20:15:04 2012 +0200 +Commit: Andrea Canciani +CommitDate: Sat May 26 16:06:26 2012 +0200 + + surface: Make map_to_image return cairo_image_surface_t* + + This makes it easier to check that the funciton is returning the + correct type of surfaces. + + src/cairo-directfb-surface.c | 13 +++++++------ + src/cairo-gl-surface.c | 16 ++++++++-------- + src/cairo-image-surface-inline.h | 6 ++++++ + src/cairo-image-surface-private.h | 2 +- + src/cairo-image-surface.c | 4 ++-- + src/cairo-os2-surface.c | 2 +- + src/cairo-quartz-image-surface.c | 2 +- + src/cairo-quartz-surface.c | 2 +- + src/cairo-surface-backend-private.h | 2 +- + src/cairo-surface-observer.c | 2 +- + src/cairo-surface-subsurface.c | 2 +- + src/cairo-surface.c | 2 +- + src/cairo-xcb-surface.c | 18 +++++++++++------- + src/cairo-xlib-surface.c | 4 ++-- + src/cairo-xlib-xcb-surface.c | 2 +- + src/skia/cairo-skia-surface.cpp | 3 ++- + src/win32/cairo-win32-display-surface.c | 8 ++++---- + 17 files changed, 51 insertions(+), 39 deletions(-) + +commit 10c0a1c68c34677273d2f48c5d5a6c1c15a320c0 +Author: Andrea Canciani +AuthorDate: Sun Jan 8 15:30:03 2012 +0100 +Commit: Andrea Canciani +CommitDate: Sat May 26 16:06:21 2012 +0200 + + surface: Define private map/unmap functions + + Cairo backends often need to map/unmap to a raster surface but they + don't care about the pixel format, as Pixman will be doing the format + handling. + + Cairo users cannot know how to access the raw data if the format is + invalid. + + The two different scenarios call for different guarantees on the + returned surface. + + The private map/unmap functions also makes it possible to simply + return the status upon unmapping. + + src/cairo-image-surface-private.h | 7 ++ + src/cairo-image-surface.c | 41 +++++++ + src/cairo-surface.c | 239 ++++++++++++++++++++++++++------------ + src/cairoint.h | 8 ++ + 4 files changed, 222 insertions(+), 73 deletions(-) + +commit 3e9895e95100ced3a6fcbedcba75e50ca450b4f0 +Author: Andrea Canciani +AuthorDate: Mon May 7 19:05:05 2012 +0200 +Commit: Andrea Canciani +CommitDate: Sat May 26 16:05:07 2012 +0200 + + png: Implement conversion of CAIRO_FORMAT_RGB30 to string + + Fixes + + png.c:55: warning: enumeration value ‘CAIRO_FORMAT_RGB30’ not handled + in switch + + test/png.c | 1 + + 1 file changed, 1 insertion(+) + +commit afcbb7a2c5c8a05d11e054e09c8c4e53b571a435 +Author: Andrea Canciani +AuthorDate: Mon May 14 10:44:31 2012 +0200 +Commit: Andrea Canciani +CommitDate: Sat May 26 16:04:33 2012 +0200 + + build: Do not replace existing files + + The existing INSTALL file is currently being replaced at every + autogen.sh run with the default one. + + This is not desired, because INSTALL contains some cairo-specific + information. + + autogen.sh | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 38d03ea7488097f2b1194f546bd1331af189b809 +Author: Andrea Canciani +AuthorDate: Mon May 14 10:40:49 2012 +0200 +Commit: Andrea Canciani +CommitDate: Sat May 26 16:03:00 2012 +0200 + + build: Allow autogen-eration on systems without GTK-doc + + The autogen.sh script fails if it cannot run gtkdocize. The absence of + this command should not cause cairo builds to fail, it should only + prevent the build of its documentation. + + Fixes: + *** No GTK-Doc found, please install it *** + + on systems without gtkdoc tools. + + Fixes https://bugs.freedesktop.org/show_bug.cgi?id=50356 + + autogen.sh | 6 +++--- + 1 file changed, 3 insertions(+), 3 deletions(-) + +commit 465319ce828f922edce46b6e7628da543b20d5e4 +Author: Chris Wilson +AuthorDate: Thu May 24 20:39:34 2012 +0100 +Commit: Chris Wilson +CommitDate: Thu May 24 20:39:34 2012 +0100 + + gl: Use core GL_STENCIL8_DEPTH24 for gl_flavor=desktop + + Jesse complained that --enable-gl --enable-glesv2 wasn't pulling in the + right headers, and in particular GL_STENCIL8_DEPTH24_OES was undefined + but being used. In this case we can simply use the identical + GL_STENCIL8_DEPTH24 instead. + + Reported-by: Jesse Barnes + Signed-off-by: Chris Wilson + + src/cairo-gl-device.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 52b7622a6c28193e4259293591b0c78070839f6c +Author: Martin Robinson +AuthorDate: Wed May 23 13:59:02 2012 -0700 +Commit: Martin Robinson +CommitDate: Wed May 23 13:59:02 2012 -0700 + + gl: Fix compilation failure for flush cleanup. + + src/cairo-gl-composite.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +commit bf9c295953fbe86434a8beefa6994c7a07e723fc +Author: Martin Robinson +AuthorDate: Wed May 23 11:46:25 2012 -0700 +Commit: Martin Robinson +CommitDate: Wed May 23 12:40:57 2012 -0700 + + gl: Simplify switching between primitive types + + Simplify the code that switches between primitive types by adding + a new member to the context which tracks the currently active + primitive type. + + src/cairo-gl-composite.c | 67 ++++++++++++++++++++++++------------------------ + src/cairo-gl-device.c | 1 + + src/cairo-gl-private.h | 7 +++++ + 3 files changed, 41 insertions(+), 34 deletions(-) + +commit f78696249f13c56a1a738b4645d8e2978d67d5ce +Author: Chris Wilson +AuthorDate: Wed May 23 12:45:54 2012 +0100 +Commit: Chris Wilson +CommitDate: Wed May 23 12:45:54 2012 +0100 + + test: Increase surface size for get-path-extents + + Whilst generating a glyph run from a string, any glyphs that are far + outside the surface (including a substantial guard region) are culled. + This affects the path extents. Workaround this by increasing the surface + size. + + Signed-off-by: Chris Wilson + + test/get-path-extents.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 3ae8bce832cbd21831a26aeb4ac0d808900711f5 +Author: Chris Wilson +AuthorDate: Wed May 23 12:26:50 2012 +0100 +Commit: Chris Wilson +CommitDate: Wed May 23 12:27:47 2012 +0100 + + test/record90: Rotate the reference so that it is wholly visible + + Signed-off-by: Chris Wilson + + test/record90.c | 2 +- + test/reference/record90-self-intersecting.argb32.ref.png | Bin 167 -> 0 bytes + test/reference/record90-self-intersecting.ref.png | Bin 0 -> 244 bytes + test/reference/record90-self-intersecting.rgb24.ref.png | Bin 167 -> 0 bytes + 4 files changed, 1 insertion(+), 1 deletion(-) + +commit e73830915b508efa587c6b706d7501a674fdec94 +Author: Chris Wilson +AuthorDate: Wed May 23 12:20:50 2012 +0100 +Commit: Chris Wilson +CommitDate: Wed May 23 12:20:50 2012 +0100 + + test: Refresh unbounded-operator + + Apparently this too suffered from bug-bo-collins and is fixed by + (bo-rectangular: Emit subsummed boxes for overlapping edges). + + Signed-off-by: Chris Wilson + + test/reference/unbounded-operator.argb32.ref.png | Bin 2666 -> 2781 bytes + test/reference/unbounded-operator.rgb24.ref.png | Bin 1300 -> 1333 bytes + 2 files changed, 0 insertions(+), 0 deletions(-) + +commit c09be681123388d562822d677db631101a8faa07 +Author: Chris Wilson +AuthorDate: Wed May 23 11:38:07 2012 +0100 +Commit: Chris Wilson +CommitDate: Wed May 23 11:50:34 2012 +0100 + + bo-rectangular: Emit subsummed boxes for overlapping edges + + Fixes bug-bo-collins + + Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=49446 + Signed-off-by: Chris Wilson + + src/cairo-bentley-ottmann-rectangular.c | 5 +++-- + 1 file changed, 3 insertions(+), 2 deletions(-) + +commit 7b2f787d1999bcc351b2e2904322020732939f5f +Author: Chris Wilson +AuthorDate: Wed May 23 11:48:30 2012 +0100 +Commit: Chris Wilson +CommitDate: Wed May 23 11:50:34 2012 +0100 + + test: Exercise rectangular bo bug + + Reported-by: S. Christian Collins + Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=49446 + Signed-off-by: Chris Wilson + + test/Makefile.sources | 1 + + test/bug-bo-collins.c | 76 ++++++++++++++++++++++++++++++++++ + test/reference/bug-bo-collins.ref.png | Bin 0 -> 248 bytes + 3 files changed, 77 insertions(+) + +commit aed94a5bc650f579368b4b814a8729570c32147e +Author: Chris Wilson +AuthorDate: Sat May 19 10:20:20 2012 +0100 +Commit: Chris Wilson +CommitDate: Mon May 21 11:32:23 2012 +0100 + + gl: Replace vbo with static allocation and immediate arrays + + Some drivers have terrible latency issues when using VBO and for our + dynamic use-case (we never reuse a VBO currently) there is little + benefit from using a VBO and often a loss of performance from doing so. + And there is the benefit from reducing the number of our own code paths. + + src/cairo-gl-composite.c | 29 +++++------------------------ + src/cairo-gl-device.c | 9 +++------ + src/cairo-gl-private.h | 8 +++----- + 3 files changed, 11 insertions(+), 35 deletions(-) + +commit a845ebe32d68a4701fd0645c576a2dc65c82ca8f +Author: Chris Wilson +AuthorDate: Sun May 20 12:11:27 2012 +0100 +Commit: Chris Wilson +CommitDate: Sun May 20 12:12:03 2012 +0100 + + test: Fix leak from xcb-snapshort-assert + + ==12598== 1,344 (768 direct, 576 indirect) bytes in 2 blocks are + definitely lost in loss record 512 of 519 + ==12598== at 0x402894D: malloc (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so) + ==12598== by 0x4C76501: _cairo_image_surface_create_for_pixman_image (cairo-image-surface.c:176) + ==12598== by 0x4C76953: _cairo_image_surface_create_with_pixman_format (cairo-image-surface.c:345) + ==12598== by 0x44CFAC: draw (xcb-snapshot-assert.c:36) + ==12598== by 0x40E14C: cairo_test_for_target (cairo-test.c:923) + ==12598== by 0x40EEA7: _cairo_test_context_run_for_target (cairo-test.c:1545) + ==12598== by 0x40BD53: main (cairo-test-runner.c:254) + + Signed-off-by: Chris Wilson + + test/xcb-snapshot-assert.c | 10 +++++++++- + 1 file changed, 9 insertions(+), 1 deletion(-) + +commit 2879e656b9b9283308ed4eaf3ad820460ac1df8b +Author: Chris Wilson +AuthorDate: Sun May 20 10:24:06 2012 +0100 +Commit: Chris Wilson +CommitDate: Sun May 20 10:55:26 2012 +0100 + + wideint: Fix compilation failure for bare use of uint64_t for !HAVE_UINT64_T + + Reported-by: Hakki Dogusan + Signed-off-by: Chris Wilson + + src/cairo-wideint-private.h | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +commit dad69ce4d5568f94621ae60ccdcc683d5bbd0efd +Author: Chris Wilson +AuthorDate: Sun May 20 10:54:07 2012 +0100 +Commit: Chris Wilson +CommitDate: Sun May 20 10:55:25 2012 +0100 + + win32: Fix return value for cairo_time_get + + Without uint64_t we need to construct a cairo_int64_t from the struct of + smaller 32-bit types rather than just casting the larger 64-bit value. + + Reported-by: Hakki Dogusan + Signed-off-by: Chris Wilson + + src/cairo-time.c | 21 ++++++++++++++++++++- + 1 file changed, 20 insertions(+), 1 deletion(-) + +commit 5a7a9c93e7f807ae8ee7504ff308e9676dbe8d25 +Author: Chris Wilson +AuthorDate: Sun May 20 10:33:17 2012 +0100 +Commit: Chris Wilson +CommitDate: Sun May 20 10:41:12 2012 +0100 + + image: Tidy lerp8x4 + + Signed-off-by: Chris Wilson + + src/cairo-image-compositor.c | 13 ++++--------- + 1 file changed, 4 insertions(+), 9 deletions(-) + +commit ced090871bbc4c052fd4ac627cdd8fc7e80f0d62 +Author: Martin Robinson +AuthorDate: Thu May 17 14:37:57 2012 -0700 +Commit: Martin Robinson +CommitDate: Thu May 17 14:52:10 2012 -0700 + + gl/msaa: Improve fallback detection + + Rename should_fall_back to can_use_msaa_compositor to make it + more comprehensible and also modify the logic to fall back + when the antialias mode is not "fast" or "default." + + src/cairo-gl-msaa-compositor.c | 29 ++++++++++++++++------------- + 1 file changed, 16 insertions(+), 13 deletions(-) + +commit 707bb8663980e66e8406351b68c230b63a0265c6 +Author: Martin Robinson +AuthorDate: Mon Apr 2 13:45:15 2012 -0700 +Commit: Martin Robinson +CommitDate: Thu May 17 14:21:25 2012 -0700 + + gl/msaa: Lazily flush the context + + Instead of conservatively flushing after every single drawing + operation. Wait until we are certain we need to flush, which + in the case of the MSAA compositor is when we start compositing + with a different type of geometry. + + src/cairo-gl-composite.c | 37 ++++++++++++++++++++++++------------- + src/cairo-gl-msaa-compositor.c | 4 ---- + 2 files changed, 24 insertions(+), 17 deletions(-) + +commit 4b3ad4e8dacdfb84636f188b2dc7afe3ad6966c5 +Author: Martin Robinson +AuthorDate: Mon Mar 12 15:28:23 2012 -0700 +Commit: Martin Robinson +CommitDate: Thu May 17 14:02:18 2012 -0700 + + gl/msaa: Implement glyph rendering + + Instead of falling back to the traps compositor to do glyph + rendering, handle it in the MSAA compositor. This allows using + the stencil buffer or scissor to clip and simplifies the MSAA + code path. + + src/cairo-gl-glyphs.c | 56 +++++++++++++++++++--------- + src/cairo-gl-msaa-compositor.c | 83 +++++++++++++++++++++++++++++++++++++++--- + src/cairo-gl-private.h | 11 ++++++ + 3 files changed, 128 insertions(+), 22 deletions(-) + +commit e3f5b14fbabba2128de4ee2d8513800aa145fb2f +Author: Martin Robinson +AuthorDate: Tue Feb 21 09:36:52 2012 -0800 +Commit: Martin Robinson +CommitDate: Thu May 17 13:56:38 2012 -0700 + + gl/msaa: Wait to clip until compositing begins + + The MSAA compositors clips in a unique way We'd like to + share this method with the text rendering path, so we move + it to cairo-gl-composite so that it works in a way very + similar to clipping with the spans and traps compositors. + + src/cairo-gl-composite.c | 164 +++++++++++++++++++++++++++++++++++------ + src/cairo-gl-device.c | 1 + + src/cairo-gl-msaa-compositor.c | 155 +++++++------------------------------- + src/cairo-gl-private.h | 12 +++ + 4 files changed, 181 insertions(+), 151 deletions(-) + +commit 29b243325c0af760249a414bdce2e6afb64186a7 +Author: Martin Robinson +AuthorDate: Mon Jan 23 13:07:59 2012 -0800 +Commit: Martin Robinson +CommitDate: Thu May 17 13:13:40 2012 -0700 + + gl/msaa: Support for non-texture surfaces + + Add full support for non-texture surfaces, by correctly + querying primitives for stencil and multisample bits. + + src/cairo-gl-device.c | 8 ++++++++ + src/cairo-gl-msaa-compositor.c | 40 ++++++++++++++++++++++++++++++++++++++++ + src/cairo-gl-operand.c | 3 +++ + src/cairo-gl-private.h | 2 ++ + src/cairo-gl-surface.c | 5 +---- + 5 files changed, 54 insertions(+), 4 deletions(-) + +commit 9208dd6230aa3c236a91105f8dc5d5caf69fe591 +Author: Henry (Yu) Song +AuthorDate: Fri Dec 16 15:56:45 2011 -0800 +Commit: Martin Robinson +CommitDate: Thu May 17 13:08:46 2012 -0700 + + gl/msaa: Support the OpenGLES EXT multisampling extension + + Add support for OpenGLES GPUs that support the EXT multisampling + extension. + + src/cairo-gl-device.c | 165 ++++++++++++++++++++++++++++++---------- + src/cairo-gl-dispatch-private.h | 7 +- + src/cairo-gl-msaa-compositor.c | 12 +++ + src/cairo-gl-operand.c | 4 + + src/cairo-gl-private.h | 13 ++-- + 5 files changed, 152 insertions(+), 49 deletions(-) + +commit ac8d50f04ca24fb24f354dea597513ec43f5ebb6 +Author: Henry (Yu) Song +AuthorDate: Thu Dec 22 17:24:01 2011 -0800 +Commit: Martin Robinson +CommitDate: Thu May 17 12:49:55 2012 -0700 + + gl/msaa: Use unsigned short to build the index array + + Some GPUs have trouble accepting vertex index data as + integers. Using unsigned shorts expands support. + + src/cairo-gl-composite.c | 10 +++++----- + src/cairo-gl-device.c | 2 +- + 2 files changed, 6 insertions(+), 6 deletions(-) + +commit 5ae53c933ae4baefdedb8ca795ee25dfcba9f5b0 +Author: Henry (Yu) Song +AuthorDate: Fri Dec 23 08:44:16 2011 -0800 +Commit: Martin Robinson +CommitDate: Thu May 17 11:22:25 2012 -0700 + + gl/msaa: Implement paint via masking + + Instead of falling back to the spans compositor, let the msaa + compositor handle painting. This ensure clipping is handled + in a consistent way with the rest of the msaa compositor. + + src/cairo-gl-msaa-compositor.c | 51 ++++++++++++++++++++++++++++++++---------- + 1 file changed, 39 insertions(+), 12 deletions(-) + +commit 4d9064d578434cadfae2b248ef29075a1a1be8b8 +Author: Henry (Yu) Song +AuthorDate: Fri Dec 16 15:56:00 2011 -0800 +Commit: Martin Robinson +CommitDate: Thu May 17 11:06:47 2012 -0700 + + gl/msaa: Add ARB multisampling support + + This implementation is not very efficient at the moment and does not + work with platforms using the incompatible IMG extension (mobile + GPUs). Performance improvements and mobile GPU support will follow. + + src/cairo-gl-composite.c | 14 ++- + src/cairo-gl-device.c | 236 ++++++++++++++++++++++++++++++++++------ + src/cairo-gl-dispatch-private.h | 4 + + src/cairo-gl-msaa-compositor.c | 28 ++++- + src/cairo-gl-operand.c | 40 +++++++ + src/cairo-gl-private.h | 38 ++++++- + src/cairo-gl-surface.c | 21 +++- + 7 files changed, 334 insertions(+), 47 deletions(-) + +commit 50f08352f463d86022a0d7544d461fe2e5ac9076 +Author: Adrian Johnson +AuthorDate: Wed May 16 20:55:17 2012 +0930 +Commit: Adrian Johnson +CommitDate: Wed May 16 20:57:47 2012 +0930 + + pdf: check if EXTEND_PAD group can be painted with EXTEND_NONE + + to avoid the fallback + + src/cairo-pdf-surface.c | 26 ++++++++++++++++++++++---- + 1 file changed, 22 insertions(+), 4 deletions(-) + +commit e41dffb329e4a6fcb4e75fb501843838a499c4c8 +Author: Chris Wilson +AuthorDate: Mon May 14 17:46:32 2012 +0100 +Commit: Chris Wilson +CommitDate: Mon May 14 18:11:28 2012 +0100 + + stroke: Don't drop clockwise==0 lines + + If the join indicates the pair of edges are parallel, we may be + considering the final segment of the spline with a different tangent + vector than the slope of the final edge and so lead to false dropping of + an edge. This has the effect that the line segments between 'arc arc arc + arc' (a rounded rectangle) are no longer horizontal or vertical. As path + construction tries to eliminate joins between colinear segments, this + optimisation should not be required anyway. + + Signed-off-by: Chris Wilson + + src/cairo-path-stroke-polygon.c | 14 +++----------- + test/reference/arc-direction.traps.argb32.ref.png | Bin 6380 -> 0 bytes + test/reference/arc-direction.traps.rgb24.ref.png | Bin 6380 -> 0 bytes + .../reference/close-path-current-point.argb32.ref.png | Bin 2324 -> 0 bytes + test/reference/close-path-current-point.ref.png | Bin 1675 -> 2109 bytes + test/reference/close-path-current-point.rgb24.ref.png | Bin 2324 -> 0 bytes + test/reference/fallback.traps.argb32.ref.png | Bin 4070 -> 4156 bytes + test/reference/fallback.traps.rgb24.ref.png | Bin 3141 -> 3332 bytes + test/reference/halo.argb32.ref.png | Bin 8726 -> 0 bytes + test/reference/halo.ref.png | Bin 7297 -> 8774 bytes + test/reference/halo.rgb24.ref.png | Bin 8726 -> 0 bytes + test/reference/halo.traps.argb32.ref.png | Bin 8726 -> 0 bytes + test/reference/halo.traps.rgb24.ref.png | Bin 8726 -> 0 bytes + .../reference/rounded-rectangle-stroke.argb32.ref.png | Bin 951 -> 0 bytes + test/reference/rounded-rectangle-stroke.ref.png | Bin 569 -> 833 bytes + test/reference/rounded-rectangle-stroke.rgb24.ref.png | Bin 951 -> 0 bytes + 16 files changed, 3 insertions(+), 11 deletions(-) + +commit 099420a07c33c66daf5392d4ca1df06585791751 +Author: Chris Wilson +AuthorDate: Mon May 14 17:50:54 2012 +0100 +Commit: Chris Wilson +CommitDate: Mon May 14 17:57:24 2012 +0100 + + spans: Debug input paths and polygons + + Signed-off-by: Chris Wilson + + src/cairo-spans-compositor.c | 3 +++ + src/cairoint.h | 2 ++ + 2 files changed, 5 insertions(+) + +commit f7d937670c22db79e597cade89e84c840b58e25e +Author: Chris Wilson +AuthorDate: Mon May 14 16:03:40 2012 +0100 +Commit: Chris Wilson +CommitDate: Mon May 14 16:09:29 2012 +0100 + + arc: Use user endpoint for final step + + Eliminate numerical inaccuracy from accumulating angle through + the floating point step value by using the exact end-value for the last + arc segment. + + Signed-off-by: Chris Wilson + + src/cairo-arc.c | 29 +++++++++++++++++------------ + 1 file changed, 17 insertions(+), 12 deletions(-) + +commit 6867383017fcea0b1d5a4671b32382037ba9be3f +Author: Alexandros Frantzis +AuthorDate: Thu May 3 13:41:29 2012 +0300 +Commit: Chris Wilson +CommitDate: Sat May 12 11:09:26 2012 +0100 + + gl: Provide a shader implementation of repeat wrap modes + + In OpenGL ES 2.0, repeat wrap modes (GL_REPEAT and GL_MIRRORED REPEAT) are + only available for NPOT textures if the GL_OES_texture_npot is supported. + This commit adds a shader implementation of these wrap modes for use by + devices that do not support GL_OES_texture_npot. + + src/cairo-gl-composite.c | 10 ++++-- + src/cairo-gl-device.c | 16 +++++---- + src/cairo-gl-private.h | 1 + + src/cairo-gl-shaders.c | 84 +++++++++++++++++++++++++++++++++++++++++------- + 4 files changed, 90 insertions(+), 21 deletions(-) + +commit 82f69d1ef798c2ebff13ec2b548c4877bf5e0e5b +Author: Alexandros Frantzis +AuthorDate: Thu May 3 13:03:26 2012 +0300 +Commit: Chris Wilson +CommitDate: Sat May 12 11:06:21 2012 +0100 + + gl: Simplify GL wrap parameter setting code + + src/cairo-gl-composite.c | 29 +++++++++++++++-------------- + 1 file changed, 15 insertions(+), 14 deletions(-) + +commit 6cd1f5040fed1385c2990a68d6017a7ca6c37103 +Author: Chris Wilson +AuthorDate: Fri May 11 22:38:27 2012 +0100 +Commit: Chris Wilson +CommitDate: Fri May 11 23:14:21 2012 +0100 + + clip: Apply clip boxes to the clip surface + + As we convert the unaligned clip boxes to a region, we need to process + the intersection of the boxes with the clip surface as a separate step. + + Fixes tighten-box for the base compositor. + + Signed-off-by: Chris Wilson + + src/cairo-clip-surface.c | 86 +++++++++++++++++++--- + test/reference/tighten-bounds.base.argb32.ref.png | Bin 8490 -> 8512 bytes + test/reference/tighten-bounds.base.rgb24.ref.png | Bin 7847 -> 7873 bytes + 3 files changed, 77 insertions(+), 9 deletions(-) + +commit 4ea3ace6c810ba090464e48795fac5456f6cdc24 +Author: Chris Wilson +AuthorDate: Fri May 11 21:51:44 2012 +0100 +Commit: Chris Wilson +CommitDate: Fri May 11 21:53:55 2012 +0100 + + spans: Only fallback for a clipmask if unbounded + + For a bounded operation with a clip we will already have performed the + clip geometrically. + + Signed-off-by: Chris Wilson + + src/cairo-spans-compositor.c | 3 ++- + test/reference/clip-operator.argb32.ref.png | Bin 8216 -> 8257 bytes + test/reference/clip-operator.rgb24.ref.png | Bin 3293 -> 3288 bytes + test/reference/random-clip.ref.png | Bin 529871 -> 525962 bytes + test/reference/trap-clip.argb32.ref.png | Bin 5810 -> 5826 bytes + test/reference/trap-clip.rgb24.ref.png | Bin 5433 -> 5435 bytes + 6 files changed, 2 insertions(+), 1 deletion(-) + +commit cd1004ce19c7ea28c7fedb6464562a08416586c0 +Author: Chris Wilson +AuthorDate: Fri May 11 21:20:35 2012 +0100 +Commit: Chris Wilson +CommitDate: Fri May 11 21:31:13 2012 +0100 + + traps,spans-compositor: Avoid mistreating unaligned clips as aligned + + An unaligned clip requires careful handling, and so exclude processing + along the fast paths. + + Signed-off-by: Chris Wilson + + src/cairo-spans-compositor.c | 24 ++++++++++++++++++++++-- + src/cairo-traps-compositor.c | 2 +- + 2 files changed, 23 insertions(+), 3 deletions(-) + +commit de1150cc0e1cb11710b196806335817255cb4abe +Author: Chris Wilson +AuthorDate: Fri May 11 20:51:58 2012 +0100 +Commit: Chris Wilson +CommitDate: Fri May 11 21:31:13 2012 +0100 + + spans-compositor: Add tracepoints for debugging + + Signed-off-by: Chris Wilson + + src/cairo-spans-compositor.c | 22 +++++++++++++++++++++- + 1 file changed, 21 insertions(+), 1 deletion(-) + +commit 197e5b7324c569d3e8cd652dbf5a281a57317cbe +Author: Chris Wilson +AuthorDate: Fri May 11 20:25:29 2012 +0100 +Commit: Chris Wilson +CommitDate: Fri May 11 21:31:13 2012 +0100 + + spans-compositor: Handle unaligned unbounded boxes + + Signed-off-by: Chris Wilson + + src/cairo-spans-compositor.c | 67 +++++++++++++++++++++++++++++++++----------- + 1 file changed, 51 insertions(+), 16 deletions(-) + +commit 2d26f7da777b7ac01e5c469e52a17fa7d0cf4a8d +Author: Chris Wilson +AuthorDate: Fri May 11 21:26:33 2012 +0100 +Commit: Chris Wilson +CommitDate: Fri May 11 21:31:13 2012 +0100 + + test: Fix tighten-bounds reference images + + Uli Schlachter spotted that I had inadvertently committed (606e9e1c9) a + broken set of test images for the tighten-bounds case and so masked a + nasty bug with the mishandling of unaligned clips. + + Reported-by: Uli Schlachter + Signed-off-by: Chris Wilson + + test/reference/tighten-bounds.argb32.ref.png | Bin 9115 -> 9115 bytes + test/reference/tighten-bounds.rgb24.ref.png | Bin 8256 -> 8365 bytes + test/reference/tighten-bounds.traps.argb32.ref.png | Bin 8769 -> 8486 bytes + test/reference/tighten-bounds.traps.rgb24.ref.png | Bin 8179 -> 7856 bytes + 4 files changed, 0 insertions(+), 0 deletions(-) + +commit 117a44a33526a7738cac6643ea35fb73dc8a710f +Author: Chris Wilson +AuthorDate: Fri May 11 17:17:05 2012 +0100 +Commit: Chris Wilson +CommitDate: Fri May 11 17:30:42 2012 +0100 + + gl: Reject SOURCE + mask in composite_boxes() + + As SOURCE requires a bounded operation and the GL compositor only + implements a simple operation (i.e. it just blits from source to + destination instead of applying a linear interpolation as required), we + need to reject the operation and fallback. In the future, we should + make the linear interpolation available through a GL shader or as a + dual-source blend (better). + + Spotted-by: Chuanbo Weng + Signed-off-by: Chris Wilson + + src/cairo-gl-spans-compositor.c | 14 ++++++++++---- + 1 file changed, 10 insertions(+), 4 deletions(-) + +commit 0196327b30dd01ce0169a7bc67024b932368af4e +Author: Chuanbo Weng +AuthorDate: Fri May 11 23:58:05 2012 +0800 +Commit: Chris Wilson +CommitDate: Fri May 11 17:11:55 2012 +0100 + + gl: Convert CLEAR to DEST_OUT when there's a mask for composite_boxes. + + As Cairo's CLEAR sematics are for a bounded operation, and GL's uses the + simple semantics for its CLEAR composite, we need to convert the + operation into an equivalent DEST_OUT when we have a mask. + + src/cairo-gl-spans-compositor.c | 14 +++++++++++++- + 1 file changed, 13 insertions(+), 1 deletion(-) + +commit 9ecf2f7c4f6451d4a2c145a82184ba185be0a421 +Author: Chris Wilson +AuthorDate: Thu May 10 21:01:36 2012 +0100 +Commit: Chris Wilson +CommitDate: Thu May 10 21:01:36 2012 +0100 + + damage: Prevent reducing an error object + + Signed-off-by: Chris Wilson + + src/cairo-damage.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit f4631dca371865f9aa747c61937c09d495f165e0 +Author: Chris Wilson +AuthorDate: Thu May 10 21:00:49 2012 +0100 +Commit: Chris Wilson +CommitDate: Thu May 10 21:00:49 2012 +0100 + + damage: Prevent accumulating damage to an error object + + Signed-off-by: Chris Wilson + + src/cairo-damage.c | 3 +++ + 1 file changed, 3 insertions(+) + +commit 50e51389bd4108942fdc7a5f029b3171b0c1f11a +Author: Chris Wilson +AuthorDate: Thu May 10 20:57:30 2012 +0100 +Commit: Chris Wilson +CommitDate: Thu May 10 20:58:33 2012 +0100 + + damage: Avoid freeing the NIL error object + + Signed-off-by: Chris Wilson + + src/cairo-damage.c | 3 +++ + 1 file changed, 3 insertions(+) + +commit 3bff546ebe0859c65ba608a956a55b5647bfd37f +Author: Uli Schlachter +AuthorDate: Sun May 6 21:48:42 2012 +0200 +Commit: Uli Schlachter +CommitDate: Wed May 9 16:59:58 2012 +0200 + + c_surface_set_mime_data: Remove duplicate "Since" + + This fixes the following message from "make check": + + ./cairo-surface.c (1192): ERROR: cairo_surface_set_mime_data: Duplicate 'Since' + field + + Signed-off-by: Uli Schlachter + + src/cairo-surface.c | 2 -- + 1 file changed, 2 deletions(-) + +commit fcccb1a65aeab7b1bf199e728b58af9bf21e197b +Author: Uli Schlachter +AuthorDate: Sun May 6 21:45:32 2012 +0200 +Commit: Uli Schlachter +CommitDate: Wed May 9 16:59:58 2012 +0200 + + check-doc-syntax: Find duplicate "Since:" tags + + It makes no sense to say more than one time when some symbol was introduced. + + Signed-off-by: Uli Schlachter + + src/check-doc-syntax.awk | 5 ++++- + 1 file changed, 4 insertions(+), 1 deletion(-) + +commit a184de906490e743430919c55a2d5099987d4d69 +Author: Uli Schlachter +AuthorDate: Sun May 6 21:41:28 2012 +0200 +Commit: Uli Schlachter +CommitDate: Wed May 9 16:59:58 2012 +0200 + + check-doc-syntax: Make this work again + + Commit ed90616b77570 changed the way the awk script gets invoked. Due to a + missing "test", this resulted in the awk script never getting invoked at all. + + Signed-off-by: Uli Schlachter + + src/check-doc-syntax.sh | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 3e02dccb97ad12a13db0b66aba3927c78f6d08e9 +Author: Henry (Yu) Song +AuthorDate: Mon Dec 12 17:08:52 2011 -0800 +Commit: Martin Robinson +CommitDate: Tue May 8 12:48:30 2012 -0700 + + gl/msaa: Add support for unbounded operators + + When filling and stroking with an unbounded operator, first fill + and stroke to a temporary surface and then paint the entire surface + back to the original target. + + src/cairo-gl-msaa-compositor.c | 100 +++++++++++++++++++++++++++++++++++++++++ + 1 file changed, 100 insertions(+) + +commit b099f8b0c70dc0208135cdeda76be9ab33e61d9b +Author: Henry (Yu) Song +AuthorDate: Fri Oct 14 14:32:28 2011 -0700 +Commit: Martin Robinson +CommitDate: Tue May 8 12:13:42 2012 -0700 + + gl/msaa: Support for masking + + Add support for masking in the OpenGL MSAA compositor. This is + accomplished simply by properly setting up the masking source, + emitting the entire bounded composite region, and unforking + vertex emission. + + src/cairo-gl-composite.c | 53 ++++++++++++++---------- + src/cairo-gl-msaa-compositor.c | 92 +++++++++++++++++++++++++++++++++++++++++- + 2 files changed, 122 insertions(+), 23 deletions(-) + +commit 929a96ed034b4e6f811da9b718a7b11e9d1b9d16 +Author: Henry (Yu) Song +AuthorDate: Thu Oct 13 15:51:29 2011 -0700 +Commit: Martin Robinson +CommitDate: Tue May 8 11:42:29 2012 -0700 + + gl/msaa: Support for texture sources + + Add support for texture sources, by unforking _cairo_gl_composite_begin. + _cairo_gl_composite_begin_tristrip is now just a small wrapper. Also + properly emit the source texture coordinates when emitting tristrip + vertices. + + src/cairo-gl-composite.c | 73 ++++++++---------------------------------- + src/cairo-gl-msaa-compositor.c | 4 +-- + src/cairo-gl-private.h | 4 --- + 3 files changed, 15 insertions(+), 66 deletions(-) + +commit a60bb83f28a27c065f21f6a8466408df4565a0b1 +Author: Henry (Yu) Song +AuthorDate: Tue Oct 11 09:08:38 2011 -0700 +Commit: Martin Robinson +CommitDate: Tue May 8 11:06:31 2012 -0700 + + gl/msaa: Prevent stroke overlap + + When stroking we do not send our polygon to the tessellator, so + it may have overlapping stroke components. Use the stencil buffer + to prevent stroke components from overlapping. + + src/cairo-gl-msaa-compositor.c | 36 ++++++++++++++++++++++++++++++++++++ + 1 file changed, 36 insertions(+) + +commit 138e595c1192c03ebc1b2c89851ce938b18abd2f +Author: Uli Schlachter +AuthorDate: Tue May 1 14:48:43 2012 +0200 +Commit: Uli Schlachter +CommitDate: Sat May 5 10:14:54 2012 +0200 + + Remove some dead code + + This code could never be executed, because the status variable doesn't get set + since the last time it is checked and errors get returned to the caller. + + This was noticed while looking into the build log provided by + http://lists.cairographics.org/archives/cairo/2012-April/022993.html + + Reported-by: Ryan Schmidt + Signed-off-by: Uli Schlachter + + src/cairo-scaled-font-subsets.c | 5 ----- + 1 file changed, 5 deletions(-) + +commit 494cfd7eb9d994a5e2024e299986e66a3ef9a562 +Author: Uli Schlachter +AuthorDate: Tue May 1 14:38:51 2012 +0200 +Commit: Uli Schlachter +CommitDate: Sat May 5 10:14:54 2012 +0200 + + Remove some unused functions + + All of these are unused since af9fbd176b145f0424 "Introduce a new compositor + architecture". Since no one complained yet, I guess that means that we don't + need these any more. :-) + + This was noticed while looking into the build log provided by + http://lists.cairographics.org/archives/cairo/2012-April/022993.html + + Signed-off-by: Uli Schlachter + + src/cairo-botor-scan-converter.c | 36 -------------------------------- + src/cairo-path-stroke-polygon.c | 44 ---------------------------------------- + 2 files changed, 80 deletions(-) + +commit 748dcdef4b67097c079a3ff98f970451428c24f3 +Author: Chuanbo Weng +AuthorDate: Fri May 4 08:53:20 2012 +0800 +Commit: Chris Wilson +CommitDate: Fri May 4 10:15:01 2012 +0100 + + gl: fix the translate value in copy_boxes. + + Fixes 36 test cases (such as push-group-color) + + Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=48221 + + src/cairo-gl-spans-compositor.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit db4ee947c3fc2c057dd8e84cdfcb779e7c62e5d5 +Author: Chris Wilson +AuthorDate: Tue May 1 14:41:25 2012 +0100 +Commit: Chris Wilson +CommitDate: Tue May 1 16:55:22 2012 +0100 + + Split finish into multiple stages + + In order to handle the snapshot copy-on-write losing a race with another + thread using the snapshot as a source, we may find the target acquires a + fresh reference as we attempt to finalize it. + + Signed-off-by: Chris Wilson + + src/cairo-surface.c | 32 +++++++++++++++++++++++--------- + 1 file changed, 23 insertions(+), 9 deletions(-) + +commit 52dfa038b9e0c106aa3f9f08abeb7f53e72a762a +Author: Chris Wilson +AuthorDate: Tue May 1 15:06:46 2012 +0100 +Commit: Chris Wilson +CommitDate: Tue May 1 16:55:22 2012 +0100 + + snapshot: Avoid triggering assertion for grabbing the target during destroy + + If the source wins the race to acquire the original surface as it is + being destroyed, it triggers an assertion. + + Signed-off-by: Chris Wilson + + src/cairo-surface-inline.h | 8 ++++++++ + src/cairo-surface-snapshot-inline.h | 3 ++- + 2 files changed, 10 insertions(+), 1 deletion(-) + +commit f62f8f907d14a7267f136f299208029c7b904eaa +Author: Chris Wilson +AuthorDate: Tue May 1 14:57:18 2012 +0100 +Commit: Chris Wilson +CommitDate: Tue May 1 16:55:22 2012 +0100 + + snapshot: Hold a reference to target whilst querying + + Due to race with cow and accessing target from multiple threads, we need + to be careful that we always acquire a reference for our access to + the snapshot target. + + Signed-off-by: Chris Wilson + + src/cairo-surface-snapshot.c | 51 +++++++++++++++++++++++++++++++++++++------- + 1 file changed, 43 insertions(+), 8 deletions(-) + +commit af3c8abbce529b0928742cc219e5e8e21191eee7 +Author: Søren Sandmann Pedersen +AuthorDate: Mon Apr 30 12:02:38 2012 -0400 +Commit: Søren Sandmann Pedersen +CommitDate: Mon Apr 30 12:02:38 2012 -0400 + + Revert "Use pixman glyphs" + + This was pushed accidentally - apologies. + + This reverts commit 752c3b69e008b7d219da8cc5c657cf995732d3b8. + + src/cairo-image-compositor.c | 313 ++++++++++++++++++++++++++++------------- + src/cairo-mutex-list-private.h | 1 - + src/cairo-scaled-font.c | 2 - + src/cairoint.h | 4 - + 4 files changed, 212 insertions(+), 108 deletions(-) + +commit 752c3b69e008b7d219da8cc5c657cf995732d3b8 +Author: Søren Sandmann Pedersen +AuthorDate: Mon Apr 30 09:41:44 2012 -0400 +Commit: Søren Sandmann Pedersen +CommitDate: Mon Apr 30 09:41:44 2012 -0400 + + Use pixman glyphs + + src/cairo-image-compositor.c | 313 +++++++++++++---------------------------- + src/cairo-mutex-list-private.h | 1 + + src/cairo-scaled-font.c | 2 + + src/cairoint.h | 4 + + 4 files changed, 108 insertions(+), 212 deletions(-) + +commit 821a9af33cf43dc6a8266f4e677171f2b1ebacba +Author: Chris Wilson +AuthorDate: Sun Apr 29 20:54:07 2012 +0100 +Commit: Chris Wilson +CommitDate: Sun Apr 29 20:54:07 2012 +0100 + + version: Post release bump to 1.12.3 + + cairo-version.h | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit dbc0efad7e565558a3abf7f69d7675efddc4688d +Author: Chris Wilson +AuthorDate: Sun Apr 29 19:49:12 2012 +0100 +Commit: Chris Wilson +CommitDate: Sun Apr 29 19:49:12 2012 +0100 + + version: bump for cairo-1.12.2 release + + NEWS | 40 ++++++++++++++++++++++++++++++++++++++++ + cairo-version.h | 2 +- + 2 files changed, 41 insertions(+), 1 deletion(-) + +commit ed90616b7757087154d1c191858444ecc9188935 +Author: Chris Wilson +AuthorDate: Sun Apr 29 13:21:36 2012 +0100 +Commit: Chris Wilson +CommitDate: Sun Apr 29 19:29:12 2012 +0100 + + check-doc-syntax: Only parse the source files for incorrect tags + + Signed-off-by: Chris Wilson + + src/check-doc-syntax.sh | 13 ++++++++----- + 1 file changed, 8 insertions(+), 5 deletions(-) + +commit c16cdf0b4e2bada9b955111886eb7c9cb3878994 +Author: Chris Wilson +AuthorDate: Sun Apr 29 13:18:43 2012 +0100 +Commit: Chris Wilson +CommitDate: Sun Apr 29 19:29:12 2012 +0100 + + check-doc-syntax: Fix handling of return value in make check + + src/check-doc-syntax.sh | 2 ++ + 1 file changed, 2 insertions(+) + +commit a1d4f416e403359b713f6d10d557a190458bbb16 +Author: Chris Wilson +AuthorDate: Sun Apr 29 15:49:40 2012 +0100 +Commit: Chris Wilson +CommitDate: Sun Apr 29 15:55:16 2012 +0100 + + path-stroke-boxes: Fix degenerate end-caps for anti-clockwise paths + + Signed-off-by: Chris Wilson + + src/cairo-path-stroke-boxes.c | 60 ++++++++++++++++++++----------------------- + 1 file changed, 28 insertions(+), 32 deletions(-) + +commit 71df65f95a238c53fa0a64759b41af85c0b1b059 +Author: Chris Wilson +AuthorDate: Sun Apr 29 14:51:17 2012 +0100 +Commit: Chris Wilson +CommitDate: Sun Apr 29 15:55:16 2012 +0100 + + test: Update degenerate-solid-dash reference + + Looking at the base output for cairo-1.0 reveals we have an issue with + the placement of degenerate end-caps. + + test/reference/degenerate-solid-dash.ref.png | Bin 405 -> 407 bytes + test/reference/line-width-large-overlap-dashed.ref.png | Bin 338 -> 340 bytes + .../reference/line-width-large-overlap-dashed.xfail.png | Bin 343 -> 0 bytes + test/reference/line-width-overlap-dashed.ref.png | Bin 0 -> 407 bytes + test/reference/rectilinear-dash.argb32.ref.png | Bin 291 -> 0 bytes + test/reference/rectilinear-dash.rgb24.ref.png | Bin 291 -> 0 bytes + 6 files changed, 0 insertions(+), 0 deletions(-) + +commit f5df96748e39d1f1a3fddf63712318377211b12b +Author: Chris Wilson +AuthorDate: Sun Apr 29 14:32:14 2012 +0100 +Commit: Chris Wilson +CommitDate: Sun Apr 29 14:32:14 2012 +0100 + + gstate: Correctly compact degenerate dash segments + + The danger of the incomplete test masking the failure to correctly skip + the degenerate elements in the final dash state. + + Fixes the fixed degenerate-solid-dash. + Signed-off-by: Chris Wilson + + src/cairo-gstate.c | 37 ++++++++++++++++++------------------- + 1 file changed, 18 insertions(+), 19 deletions(-) + +commit ba21231491dbed0252858ee8c2755db7b6f1c970 +Author: Chris Wilson +AuthorDate: Sun Apr 29 14:23:11 2012 +0100 +Commit: Chris Wilson +CommitDate: Sun Apr 29 14:23:11 2012 +0100 + + test: Fix array lengths for degenerate-solid-dash + + The latter arrays were meant to test compaction. + + Signed-off-by: Chris Wilson + + test/degenerate-solid-dash.c | 4 ++-- + test/reference/degenerate-solid-dash.ref.png | Bin 358 -> 405 bytes + 2 files changed, 2 insertions(+), 2 deletions(-) + +commit 9176e640d7cb5cae5d89722aa560fba19bc08a8c +Author: Chris Wilson +AuthorDate: Sun Apr 29 13:40:48 2012 +0100 +Commit: Chris Wilson +CommitDate: Sun Apr 29 14:02:17 2012 +0100 + + gstate: Reduce degenerate dash to solid + + If the dash specifies that the pen is always on (i.e. the total of the + off segments is zero), then we can eliminate the dash pattern. + + Signed-off-by: Chris Wilson + + src/cairo-gstate.c | 35 ++++++++++++++++++++++++++++++----- + 1 file changed, 30 insertions(+), 5 deletions(-) + +commit 47368d5e83f95dfed500f81068d7346a93145a20 +Author: Chris Wilson +AuthorDate: Sun Apr 29 14:01:11 2012 +0100 +Commit: Chris Wilson +CommitDate: Sun Apr 29 14:02:17 2012 +0100 + + image: Add a little bit of debugging to show number of boxes being drawn + + Signed-off-by: Chris Wilson + + src/cairo-image-compositor.c | 6 +++--- + 1 file changed, 3 insertions(+), 3 deletions(-) + +commit 0c14ce6dca3031320d2b9fb419aaf4e153d158d6 +Author: Chris Wilson +AuthorDate: Sun Apr 29 13:55:10 2012 +0100 +Commit: Chris Wilson +CommitDate: Sun Apr 29 13:56:43 2012 +0100 + + test: Exercise degenerate dashes that are wholly solid + + Signed-off-by: Chris Wilson + + test/Makefile.sources | 1 + + test/degenerate-solid-dash.c | 69 +++++++++++++++++++++++++++ + test/reference/degenerate-solid-dash.ref.png | Bin 0 -> 358 bytes + 3 files changed, 70 insertions(+) + +commit d2f740ccbd9c5416a2590e3cca888eecf046c162 +Author: Chris Wilson +AuthorDate: Sun Apr 29 12:38:37 2012 +0100 +Commit: Chris Wilson +CommitDate: Sun Apr 29 12:40:10 2012 +0100 + + test: Exercise clip inversion imperfections + + Signed-off-by: Chris Wilson + + test/Makefile.sources | 1 + + test/inverted-clip.c | 56 +++++++++++++++++++++++++++ + test/reference/inverted-clip.base.xfail.png | Bin 0 -> 1293 bytes + test/reference/inverted-clip.traps.xfail.png | Bin 0 -> 1283 bytes + test/reference/inverted-clip.xfail.png | Bin 0 -> 1293 bytes + 5 files changed, 57 insertions(+) + +commit 4a9a6b7efb4abb81b228db8c998a6c9e9f383ba0 +Author: Chris Wilson +AuthorDate: Sun Apr 29 12:22:20 2012 +0100 +Commit: Chris Wilson +CommitDate: Sun Apr 29 12:22:20 2012 +0100 + + Satisfy check-doc-syntax.awk for unimplemented functions + + ./cairo.c (634): ERROR: cairo_set_opacity: missing 'Since' field + ./cairo.c (3578): ERROR: cairo_get_opacity: missing 'Since' field + + Signed-off-by: Chris Wilson + + src/cairo.c | 4 ++++ + 1 file changed, 4 insertions(+) + +commit ec400daf9ec3bbd8403324db7fcdaf175e185e7b +Author: Chris Wilson +AuthorDate: Sat Apr 28 23:15:52 2012 +0100 +Commit: Chris Wilson +CommitDate: Sat Apr 28 23:16:32 2012 +0100 + + image: Avoid overflow when computing lerp spans for a8 + + Reported-by: Benjamin Otte + Signed-off-by: Chris Wilson + + src/cairo-image-compositor.c | 16 ++++++++-------- + 1 file changed, 8 insertions(+), 8 deletions(-) + +commit a18506acf0ca4a5b6f56cc9a8e0ffb3dd0eaabab +Author: Chris Wilson +AuthorDate: Fri Apr 27 22:13:01 2012 +0100 +Commit: Chris Wilson +CommitDate: Fri Apr 27 22:13:01 2012 +0100 + + Update the remaining backends to handle a NULL extents for _cairo_surface_get_source + + Signed-off-by: Chris Wilson + + src/cairo-gl-surface.c | 8 +++++--- + src/cairo-image-surface.c | 8 +++++--- + src/cairo-script-surface.c | 8 +++++--- + src/cairo-xcb-surface.c | 8 +++++--- + src/cairo-xlib-surface.c | 8 +++++--- + 5 files changed, 25 insertions(+), 15 deletions(-) + +commit 7eb33099d34234dcccb8f96caba94b38fa385f16 +Author: Chris Wilson +AuthorDate: Fri Apr 27 12:39:40 2012 +0100 +Commit: Chris Wilson +CommitDate: Fri Apr 27 14:10:50 2012 +0100 + + snapshot: Perform the cow under a mutex + + In order to prevent a race between concurrent destroy and use in another + thread, we need to acquire a reference to the snapshot->target under a + mutex. Whilst we hold that reference, it prevents the internal destroy + mechanism from freeing the memory we are using (if we have a pointer to + the original surface) and the client drops their final reference. + + Oh boy, talk about opening a can of worms... + + Signed-off-by: Chris Wilson + + src/cairo-analysis-surface.c | 12 +++--------- + src/cairo-image-source.c | 33 ++++++++++++++++++++++++++++----- + src/cairo-pattern.c | 4 +--- + src/cairo-pdf-surface.c | 24 ++++++++++++++++-------- + src/cairo-ps-surface.c | 33 +++++++++++++++++++++------------ + src/cairo-script-surface.c | 5 +++-- + src/cairo-surface-snapshot-inline.h | 9 ++++++++- + src/cairo-surface-snapshot-private.h | 2 ++ + src/cairo-surface-snapshot.c | 7 ++++++- + src/cairo-surface-subsurface.c | 3 ++- + src/cairo-surface.c | 5 ++++- + src/cairo-traps-compositor.c | 11 ++--------- + 12 files changed, 96 insertions(+), 52 deletions(-) + +commit 455b4de1fc6be05f985b43c2f8f83eeed2b2a191 +Author: Chris Wilson +AuthorDate: Fri Apr 27 11:41:41 2012 +0100 +Commit: Chris Wilson +CommitDate: Fri Apr 27 11:41:41 2012 +0100 + + image: Allow a snapshot to steal the original memory upon finish + + Signed-off-by: Chris Wilson + + src/cairo-image-surface.c | 18 ++++++++++++++++++ + src/cairo-surface-private.h | 1 + + src/cairo-surface.c | 3 +++ + 3 files changed, 22 insertions(+) + +commit 957a9cc619965178a8927d114fe852034fc2385c +Author: Chris Wilson +AuthorDate: Thu Apr 26 08:54:39 2012 +0100 +Commit: Chris Wilson +CommitDate: Thu Apr 26 08:54:39 2012 +0100 + + image: Fix typo in _blit_spans() + + The height is 'h' not 'y'! + + Signed-off-by: Chris Wilson + + src/cairo-image-compositor.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit fe428fc7f03316f2577b95f6a4f525bacca09948 +Author: Chris Wilson +AuthorDate: Fri Apr 20 17:30:22 2012 +0100 +Commit: Chris Wilson +CommitDate: Wed Apr 25 20:56:20 2012 +0100 + + xlib: Fix inline conversion for TrueColor PutImage + + Signed-off-by: Chris Wilson + + src/cairo-xlib-surface.c | 3 +-- + 1 file changed, 1 insertion(+), 2 deletions(-) + +commit 9e81c5b737cda9dc539b2cf497c20ac48ddb91ac +Author: Chris Wilson +AuthorDate: Wed Apr 25 20:41:16 2012 +0100 +Commit: Chris Wilson +CommitDate: Wed Apr 25 20:51:20 2012 +0100 + + xlib: Allow applications to create 0x0 surfaces + + Although 0x0 is not a legimate surface size, we do allow applications + the flexibility to reset the size before drawing. As we previously never + checked the size against minimum legal constraints, applications expect + to be able to create seemingly illegal surfaces, and so we must continue + to provide backwards compatibility. + + Many thanks to Pauli Nieminen for trawling through the protocol traces, + diving into the depths of libreoffice and identifying the regression. + + Fixes https://bugs.freedesktop.org/show_bug.cgi?id=49118 (presentation + mode in loimpress is blank). + + Reported-by: Eric Valette + Signed-off-by: Chris Wilson + + src/cairo-xlib-surface.c | 9 ++++++++- + 1 file changed, 8 insertions(+), 1 deletion(-) + +commit f736cd144305f7c9147912f6ec081962b3191e3d +Author: Jeff Mahoney +AuthorDate: Mon Apr 23 22:04:48 2012 +0100 +Commit: Chris Wilson +CommitDate: Mon Apr 23 22:13:57 2012 +0100 + + pdf: Fix wrong allocation in _cairo_pdf_surface_add_source_surface + + _cairo_pdf_surface_add_source_surface allocates unique_id with + size unique_id_length but then copies surface_key.unique_id_length into it. + + This causes e.g. evince to crash predictably while trying to print with: + *** buffer overflow detected ***: evince terminated + + We should be using surface_key.unique_id_length instead. + + Reported-by: Dominique Leuenberger + Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=49089 + Signed-off-by: Jeff Mahoney + + src/cairo-pdf-surface.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit e6a04c2f6749756bb032e9beb6c2ad0a12f8093d +Author: Alexandros Frantzis +AuthorDate: Mon Apr 23 17:15:31 2012 +0300 +Commit: Chris Wilson +CommitDate: Mon Apr 23 20:21:40 2012 +0100 + + gl: Fix creation of gradient ramps for GLESv2 + + glTexImage2D is not allowed to perform an implicit format conversion + with GLESv2, so fixup the internal format to match the incoming pixel + format. + + src/cairo-gl-gradient.c | 12 +++++++++++- + 1 file changed, 11 insertions(+), 1 deletion(-) + +commit 1ca8c049cad59fcf9355ff091e1eec0471afa444 +Author: Dimiter Stanev +AuthorDate: Mon Apr 23 19:10:44 2012 +0100 +Commit: Chris Wilson +CommitDate: Mon Apr 23 19:10:44 2012 +0100 + + win32: compilation fix for recent private/inline header separation + + src/win32/cairo-win32-display-surface.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit abedc6b46ad283f896e078479174312cb87e6700 +Author: Adrian Johnson +AuthorDate: Mon Apr 23 13:20:47 2012 +0930 +Commit: Adrian Johnson +CommitDate: Mon Apr 23 13:22:16 2012 +0930 + + ps: support all image types + + If the image is not rgb24/argb32/a8/a1, create a new image with the + same CAIRO_CONTENT and paint image to the new image. + + src/cairo-ps-surface.c | 41 +++++++++++++++++++++++++++++++++++++---- + 1 file changed, 37 insertions(+), 4 deletions(-) + +commit 33f9e433eef13a2b39a8213c6997399f3a5896a8 +Author: Adrian Johnson +AuthorDate: Mon Apr 23 13:07:18 2012 +0930 +Commit: Adrian Johnson +CommitDate: Mon Apr 23 13:21:52 2012 +0930 + + pdf: support all image types + + If the image is not rgb24/argb32/a8/a1, create a new image with the + same CAIRO_CONTENT and paint image to the new image. + + src/cairo-pdf-surface.c | 41 +++++++++++++++++++++++++++++++---------- + 1 file changed, 31 insertions(+), 10 deletions(-) + +commit c0b523eb652b2c4ba41cb27132d46ad9211b5df4 +Author: Chris Wilson +AuthorDate: Sat Apr 21 10:16:30 2012 +0100 +Commit: Chris Wilson +CommitDate: Sat Apr 21 10:18:26 2012 +0100 + + stroke(boxes): Convert the dash step back into device units before incrementing + + Reported-by: Carlos Garcia Campos + Signed-off-by: Chris Wilson + + src/cairo-path-stroke-boxes.c | 2 +- + .../rectilinear-dash-scale-unaligned.ref.png | Bin 5010 -> 3738 bytes + .../rectilinear-dash-scale-unaligned.traps.ref.png | Bin 4552 -> 3289 bytes + test/reference/rectilinear-dash-scale.ref.png | Bin 921 -> 651 bytes + 4 files changed, 1 insertion(+), 1 deletion(-) + +commit 99f3fea6d92fab684b145b2eb62fc7e6705aca73 +Author: Chris Wilson +AuthorDate: Thu Apr 19 17:53:11 2012 +0100 +Commit: Chris Wilson +CommitDate: Thu Apr 19 17:53:11 2012 +0100 + + gl: Uses the inline clip function, so update its include + + Fixes build from 0770dda52be9c1bf464a84cb5566ef46d7e9df5a. + + Signed-off-by: Chris Wilson + + src/cairo-gl-msaa-compositor.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 0046967224640c0a390b4a7b376bbd631ed32a5c +Author: Chris Wilson +AuthorDate: Thu Apr 19 16:12:55 2012 +0100 +Commit: Chris Wilson +CommitDate: Thu Apr 19 16:12:55 2012 +0100 + + dash: Increment dash_remain by the next segment to reduce accumulation errors + + Signed-off-by: Chris Wilson + + src/cairo-stroke-dash.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 5e39a8098b88b2e8d25eb46c6bbe8656c9e0260c +Author: Chris Wilson +AuthorDate: Thu Apr 19 15:48:01 2012 +0100 +Commit: Chris Wilson +CommitDate: Thu Apr 19 15:48:01 2012 +0100 + + dash: Use a epsilon compare for stepping the dash + + Due to rounding errors that may creep in comparing against 0.0 is + dangerous and may result in an infinite loop whilst generating dashes + that consumes all memory. + + Reported-and-tested-by: Uli Schlachter + Signed-off-by: Chris Wilson + + src/cairo-fixed-private.h | 2 ++ + src/cairo-stroke-dash.c | 2 +- + 2 files changed, 3 insertions(+), 1 deletion(-) + +commit 57cfdfd9796531a576060e9304715920e0fdb8fe +Author: Chris Wilson +AuthorDate: Thu Apr 19 11:59:54 2012 +0100 +Commit: Chris Wilson +CommitDate: Thu Apr 19 13:17:29 2012 +0100 + + Split cairo-list into struct+inlines + + References: https://bugs.freedesktop.org/show_bug.cgi?id=48577 + Signed-off-by: Chris Wilson + + src/Makefile.sources | 1 + + src/cairo-botor-scan-converter.c | 2 +- + src/cairo-gstate.c | 1 + + src/cairo-list-inline.h | 209 +++++++++++++++++++++++++++++++++++++ + src/cairo-list-private.h | 167 ----------------------------- + src/cairo-observer.c | 2 + + src/cairo-path-fixed.c | 1 + + src/cairo-pattern-inline.h | 2 + + src/cairo-pattern.c | 1 + + src/cairo-ps-surface.c | 1 + + src/cairo-rtree-private.h | 2 +- + src/cairo-scaled-font.c | 1 + + src/cairo-script-surface.c | 2 +- + src/cairo-surface-observer.c | 1 + + src/cairo-surface.c | 1 + + src/cairo-xcb-connection.c | 2 +- + src/cairo-xcb-screen.c | 1 + + src/cairo-xcb-shm.c | 1 + + src/cairo-xcb-surface-render.c | 1 + + src/cairo-xcb-surface.c | 1 + + src/cairo-xlib-display.c | 1 + + src/cairo-xlib-render-compositor.c | 1 + + src/cairo-xlib-screen.c | 1 + + src/cairo-xlib-surface.c | 1 + + src/cairo-xlib-xcb-surface.c | 1 + + 25 files changed, 234 insertions(+), 171 deletions(-) + +commit df62accbda19276c68753e799a32443b47d4e939 +Author: Chris Wilson +AuthorDate: Thu Apr 19 11:59:54 2012 +0100 +Commit: Chris Wilson +CommitDate: Thu Apr 19 13:17:29 2012 +0100 + + Split cairo-surface-subsurface-private into struct+inlines + + References: https://bugs.freedesktop.org/show_bug.cgi?id=48577 + Signed-off-by: Chris Wilson + + src/Makefile.sources | 1 + + src/cairo-analysis-surface.c | 2 +- + src/cairo-cogl-surface.c | 2 +- + src/cairo-gl-operand.c | 2 +- + src/cairo-paginated-surface.c | 2 +- + src/cairo-surface-observer.c | 2 +- + src/cairo-surface-subsurface-inline.h | 72 ++++++++++++++++++++++++++++++++++ + src/cairo-surface-subsurface-private.h | 32 +-------------- + src/cairo-xlib-source.c | 2 +- + 9 files changed, 80 insertions(+), 37 deletions(-) + +commit 590202dbfba709cfdd8ad3c241e7af06b3c542e9 +Author: Chris Wilson +AuthorDate: Thu Apr 19 11:59:54 2012 +0100 +Commit: Chris Wilson +CommitDate: Thu Apr 19 13:17:29 2012 +0100 + + Split cairo-error-private into struct+inlines + + References: https://bugs.freedesktop.org/show_bug.cgi?id=48577 + Signed-off-by: Chris Wilson + + src/Makefile.sources | 1 + + src/cairo-error-inline.h | 52 +++++++++++++++++++++++++++++++++++++++++++++++ + src/cairo-error-private.h | 7 ------- + 3 files changed, 53 insertions(+), 7 deletions(-) + +commit 2e7d60e0a29494d94a05205ec83f3dae2041811f +Author: Chris Wilson +AuthorDate: Thu Apr 19 11:59:54 2012 +0100 +Commit: Chris Wilson +CommitDate: Thu Apr 19 12:55:44 2012 +0100 + + Split cairo-pattern-private into struct+inlines + + References: https://bugs.freedesktop.org/show_bug.cgi?id=48577 + Signed-off-by: Chris Wilson + + src/Makefile.sources | 1 + + src/cairo-image-source.c | 2 +- + src/cairo-mask-compositor.c | 2 +- + src/cairo-pattern-inline.h | 63 ++++++++++++++++++++++++++++++++++++++++++++ + src/cairo-pattern-private.h | 20 -------------- + src/cairo-spans-compositor.c | 2 +- + src/cairo-traps-compositor.c | 2 +- + src/cairo-xlib-source.c | 2 +- + 8 files changed, 69 insertions(+), 25 deletions(-) + +commit 306117ea7c69f9125fa062e4c5e5f9086b98d832 +Author: Chris Wilson +AuthorDate: Thu Apr 19 11:59:54 2012 +0100 +Commit: Chris Wilson +CommitDate: Thu Apr 19 12:51:03 2012 +0100 + + Split cairo-recording-surface-private into struct+inlines + + References: https://bugs.freedesktop.org/show_bug.cgi?id=48577 + Signed-off-by: Chris Wilson + + src/Makefile.sources | 1 + + src/cairo-beos-surface.cpp | 1 + + src/cairo-cogl-surface.c | 2 +- + src/cairo-gl-surface-legacy.c | 1 + + src/cairo-image-surface-inline.h | 82 +++++++++++++++++++++++++++++++++++++++ + src/cairo-image-surface-private.h | 35 ----------------- + src/cairo-image-surface.c | 10 ++--- + src/cairo-skia-surface.cpp | 1 + + src/cairo-surface.c | 2 +- + src/cairo-tee-surface.c | 2 +- + src/drm/cairo-drm-surface.c | 1 + + src/skia/cairo-skia-context.cpp | 1 + + 12 files changed, 96 insertions(+), 43 deletions(-) + +commit 8653c2692e684a60370b99e545123ba2a7b00bc8 +Author: Chris Wilson +AuthorDate: Thu Apr 19 11:59:54 2012 +0100 +Commit: Chris Wilson +CommitDate: Thu Apr 19 12:46:34 2012 +0100 + + Split cairo-recording-surface-private into struct+inlines + + References: https://bugs.freedesktop.org/show_bug.cgi?id=48577 + Signed-off-by: Chris Wilson + + src/Makefile.sources | 2 + + src/cairo-analysis-surface.c | 4 +- + src/cairo-image-source.c | 2 +- + src/cairo-pattern.c | 4 +- + src/cairo-pdf-surface.c | 2 +- + src/cairo-ps-surface.c | 2 +- + src/cairo-recording-surface-inline.h | 68 ++++++++++++++++++++++++++++++++ + src/cairo-recording-surface-private.h | 26 ------------ + src/cairo-recording-surface.c | 2 +- + src/cairo-script-surface.c | 4 +- + src/cairo-spans-compositor.c | 2 +- + src/cairo-surface-snapshot-inline.h | 2 +- + src/cairo-surface-snapshot-private.h | 18 --------- + src/cairo-surface-snapshot.c | 2 +- + src/cairo-svg-surface.c | 2 +- + src/cairo-tee-surface.c | 2 +- + src/cairo-traps-compositor.c | 4 +- + src/cairo-vg-surface.c | 2 +- + src/cairo-xcb-surface-render.c | 4 +- + src/cairo-xlib-source.c | 2 +- + src/cairo-xml-surface.c | 2 +- + src/win32/cairo-win32-printing-surface.c | 2 +- + 22 files changed, 93 insertions(+), 67 deletions(-) + +commit 3266f936dee59b7c3a990e518899a72d0e103f62 +Author: Chris Wilson +AuthorDate: Thu Apr 19 11:59:54 2012 +0100 +Commit: Chris Wilson +CommitDate: Thu Apr 19 12:41:20 2012 +0100 + + Split cairo-surface-snapshot-private into struct+inlines + + References: https://bugs.freedesktop.org/show_bug.cgi?id=48577 + Signed-off-by: Chris Wilson + + src/cairo-surface-snapshot-inline.h | 59 +++++++++++++++++++++++++++++++++++++ + 1 file changed, 59 insertions(+) + +commit 356c7cb2e3da8d95a4bc6c40d0b1895657fd59ce +Author: Chris Wilson +AuthorDate: Thu Apr 19 11:59:54 2012 +0100 +Commit: Chris Wilson +CommitDate: Thu Apr 19 12:35:20 2012 +0100 + + Split cairo-surface-observer-private into struct+inlines + + References: https://bugs.freedesktop.org/show_bug.cgi?id=48577 + Signed-off-by: Chris Wilson + + src/Makefile.sources | 1 + + src/cairo-surface-observer-inline.h | 59 ++++++++++++++++++++++++++++++++++++ + src/cairo-surface-observer-private.h | 21 +------------ + src/cairo-surface-observer.c | 1 + + 4 files changed, 62 insertions(+), 20 deletions(-) + +commit f3623cf0220aa32c12c3ba3988a5dfef6605d6b3 +Author: Chris Wilson +AuthorDate: Thu Apr 19 11:59:54 2012 +0100 +Commit: Chris Wilson +CommitDate: Thu Apr 19 12:27:44 2012 +0100 + + Split cairo-surface-private into struct+inlines + + References: https://bugs.freedesktop.org/show_bug.cgi?id=48577 + Signed-off-by: Chris Wilson + + src/Makefile.sources | 1 + + src/cairo-surface-inline.h | 52 ++++++++++++++++++++++++++++++++++ + src/cairo-surface-private.h | 9 ------ + src/win32/cairo-win32-gdi-compositor.c | 1 + + 4 files changed, 54 insertions(+), 9 deletions(-) + +commit 6736d0bf000a42ce426b45c923d7066bf0a27089 +Author: Chris Wilson +AuthorDate: Thu Apr 19 11:59:54 2012 +0100 +Commit: Chris Wilson +CommitDate: Thu Apr 19 12:25:42 2012 +0100 + + Split cairo-contour-privates into struct+inlines + + References: https://bugs.freedesktop.org/show_bug.cgi?id=48577 + Signed-off-by: Chris Wilson + + src/Makefile.sources | 1 + + src/cairo-contour-inline.h | 80 +++++++++++++++++++++++++++++++++++++++++ + src/cairo-contour-private.h | 35 ------------------ + src/cairo-contour.c | 1 + + src/cairo-path-stroke-polygon.c | 1 + + 5 files changed, 83 insertions(+), 35 deletions(-) + +commit afa180935bedb5c3db06706d893b2bcd89b2215b +Author: Chris Wilson +AuthorDate: Thu Apr 19 11:59:54 2012 +0100 +Commit: Chris Wilson +CommitDate: Thu Apr 19 12:22:07 2012 +0100 + + Split cairo-combsort-privates into struct+inlines + + References: https://bugs.freedesktop.org/show_bug.cgi?id=48577 + Signed-off-by: Chris Wilson + + src/Makefile.sources | 2 +- + src/cairo-bentley-ottmann-rectangular.c | 2 +- + src/cairo-bentley-ottmann-rectilinear.c | 2 +- + src/cairo-bentley-ottmann.c | 2 +- + src/cairo-botor-scan-converter.c | 2 +- + src/cairo-boxes-intersect.c | 2 +- + src/cairo-combsort-inline.h | 94 +++++++++++++++++++++++++++++++++ + src/cairo-combsort-private.h | 94 --------------------------------- + src/cairo-contour.c | 2 +- + src/cairo-polygon-intersect.c | 2 +- + src/cairo-polygon-reduce.c | 2 +- + src/cairo-recording-surface.c | 2 +- + src/cairo-rectangular-scan-converter.c | 2 +- + src/cairo-surface-observer.c | 2 +- + 14 files changed, 106 insertions(+), 106 deletions(-) + +commit 0770dda52be9c1bf464a84cb5566ef46d7e9df5a +Author: Chris Wilson +AuthorDate: Thu Apr 19 11:59:54 2012 +0100 +Commit: Chris Wilson +CommitDate: Thu Apr 19 12:19:19 2012 +0100 + + Split cairo-clip-privates into struct+inlines + + References: https://bugs.freedesktop.org/show_bug.cgi?id=48577 + Signed-off-by: Chris Wilson + + src/Makefile.sources | 1 + + src/cairo-clip-boxes.c | 1 + + src/cairo-clip-inline.h | 83 ++++++++++++++++++++++++++++++++++ + src/cairo-clip-polygon.c | 1 + + src/cairo-clip-private.h | 42 ----------------- + src/cairo-clip.c | 1 + + src/cairo-composite-rectangles.c | 1 + + src/cairo-default-context.c | 1 + + src/cairo-gstate.c | 1 + + src/cairo-mask-compositor.c | 1 + + src/cairo-spans-compositor.c | 1 + + src/cairo-surface-clipper.c | 1 + + src/cairo-surface-offset.c | 1 + + src/cairo-surface-subsurface.c | 1 + + src/cairo-surface-wrapper.c | 1 + + src/cairo-surface.c | 1 + + src/cairo-traps-compositor.c | 1 + + src/cairo-xcb-surface-render.c | 1 + + src/cairo-xlib-core-compositor.c | 1 + + src/win32/cairo-win32-gdi-compositor.c | 1 + + 20 files changed, 101 insertions(+), 42 deletions(-) + +commit e9c9e28cd19df8a5875f62fc74087500182399f0 +Author: Chris Wilson +AuthorDate: Thu Apr 19 11:59:54 2012 +0100 +Commit: Chris Wilson +CommitDate: Thu Apr 19 12:16:53 2012 +0100 + + Split cairo-box-privates into struct+inlines + + References: https://bugs.freedesktop.org/show_bug.cgi?id=48577 + Signed-off-by: Chris Wilson + + src/Makefile.sources | 2 +- + src/cairo-analysis-surface.c | 2 +- + src/cairo-box-inline.h | 121 +++++++++++++++++++++++++++++++++++++++ + src/cairo-box-private.h | 121 --------------------------------------- + src/cairo-boxes.c | 2 +- + src/cairo-clip-boxes.c | 2 +- + src/cairo-cogl-surface.c | 2 +- + src/cairo-path-bounds.c | 2 +- + src/cairo-path-fixed.c | 2 +- + src/cairo-path-stroke-boxes.c | 2 +- + src/cairo-path-stroke-polygon.c | 2 +- + src/cairo-path-stroke-tristrip.c | 2 +- + src/cairo-path-stroke.c | 2 +- + src/cairo-rectangle.c | 2 +- + src/cairo-spline.c | 2 +- + src/cairo-traps-compositor.c | 2 +- + 16 files changed, 135 insertions(+), 135 deletions(-) + +commit f830268b952ecd06bf3adf7bf62dc4b5c4139e5c +Author: Chris Wilson +AuthorDate: Thu Apr 19 12:04:01 2012 +0100 +Commit: Chris Wilson +CommitDate: Thu Apr 19 12:14:26 2012 +0100 + + boxes: Remove unused inline function + + Signed-off-by: Chris Wilson + + src/cairo-boxes-private.h | 8 -------- + 1 file changed, 8 deletions(-) + +commit 9417fec04a172a7c44be38c1b3d032c3fee4f0d6 +Author: Chris Wilson +AuthorDate: Wed Apr 18 20:44:43 2012 +0100 +Commit: Chris Wilson +CommitDate: Thu Apr 19 10:51:39 2012 +0100 + + image: Split inline SRC composition + + Currently we construct a mask for the entire line and try to process it + in one call to pixman (two without the LERP operator). An alternative + approach is split the row into separate composite operations for the + clear (which we can skip), fully opaque and partial spans. + + As the source operator is typically mostly opaque or clear, this is a + good win as we are able to utilise more fast paths. In the worst case, + it degrades to the old method of constructing a whole mask for a row. + It may reduce performance for having to process lots of spans though + (this is where the pixman spans interface should help). However, such + geometry is rare and typically handled elsewhere. + + And the existing code has a bug where it was clearing the destination + for clear regions of the mask outside of the spans. + + Signed-off-by: Chris Wilson + + src/cairo-image-compositor.c | 154 +++++++++++++++++++++++++++---------------- + 1 file changed, 96 insertions(+), 58 deletions(-) + +commit 70fc52cb80f21fff0ba960236f24b997692cce64 +Author: Chris Wilson +AuthorDate: Wed Apr 18 15:24:41 2012 +0100 +Commit: Chris Wilson +CommitDate: Wed Apr 18 15:29:00 2012 +0100 + + stroke(boxes): Apply user scale factors to dash segments + + Fixes tests/rectilinear-dash-scale* + + Reported-by: Guillaume Ayoub + Reported-by: Carlos Garcia Campos + Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=48818 + Signed-off-by: Chris Wilson + + src/cairo-path-stroke-boxes.c | 11 +++++++---- + 1 file changed, 7 insertions(+), 4 deletions(-) + +commit 5ff32f70c14d89cb776a1a9da91089c258dbbf68 +Author: Chris Wilson +AuthorDate: Wed Apr 18 15:20:57 2012 +0100 +Commit: Chris Wilson +CommitDate: Wed Apr 18 15:29:00 2012 +0100 + + test: Add rectilinear-dash-scale + + Exercise rectilinear dashes under a non-uniform scale factors. + + References: https://bugs.freedesktop.org/show_bug.cgi?id=48818 + Signed-off-by: Chris Wilson + + test/Makefile.sources | 1 + + test/rectilinear-dash-scale.c | 196 +++++++++++++++++++++ + .../rectilinear-dash-scale-unaligned.ref.png | Bin 0 -> 5010 bytes + .../rectilinear-dash-scale-unaligned.traps.ref.png | Bin 0 -> 4552 bytes + test/reference/rectilinear-dash-scale.ref.png | Bin 0 -> 921 bytes + 5 files changed, 197 insertions(+) + +commit 4f125a1bd069095f3a97f009e7d7af2681353fb1 +Author: Nis Martensen +AuthorDate: Thu Apr 12 23:20:59 2012 +0200 +Commit: Nis Martensen +CommitDate: Mon Apr 16 22:11:36 2012 +0200 + + typo + + doc/public/check-doc-coverage.sh | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 905a88bf517bdc1b110587551ea7f1739bd90627 +Author: Nis Martensen +AuthorDate: Fri Apr 13 20:22:59 2012 +0200 +Commit: Uli Schlachter +CommitDate: Mon Apr 16 21:55:18 2012 +0200 + + doc: add missing chapters + + Signed-off-by: Uli Schlachter + + doc/public/cairo-docs.xml | 3 +++ + 1 file changed, 3 insertions(+) + +commit 80d1e68bb31be030f8102f28545bb622fa2050d8 +Author: Nis Martensen +AuthorDate: Fri Apr 13 20:36:03 2012 +0200 +Commit: Uli Schlachter +CommitDate: Mon Apr 16 21:55:18 2012 +0200 + + doc: do not use / in section title + + The Title: field is used to determine the file name of the generated + html. Due to the slash a subdirectory is created and all relative links + in the generated file are broken. + + Use a hyphen instead. + + Signed-off-by: Uli Schlachter + + src/cairo-xlib-surface.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 40d6c580cd029f3d330ba28a7728ff36498920cb +Author: Javier Jardón +AuthorDate: Tue Sep 13 16:30:10 2011 +0100 +Commit: Chris Wilson +CommitDate: Sat Apr 14 15:06:24 2012 +0100 + + configure.ac: Do not generate template files when building docs + + It's not needed as all the api documentation is inline + + configure.ac | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 7b25b2eb4b83f411935e51ed398cebfb3a9c3c59 +Author: Javier Jardón +AuthorDate: Tue Sep 13 16:20:12 2011 +0100 +Commit: Chris Wilson +CommitDate: Sat Apr 14 15:04:19 2012 +0100 + + autogen.sh: User autoreconf instead custom script + + autogen.sh | 194 +++++-------------------------------------------------------- + 1 file changed, 14 insertions(+), 180 deletions(-) + +commit aa90a8f84f7dff67d57a8c0863331bf04e3b546e +Author: Javier Jardón +AuthorDate: Tue Sep 13 16:15:49 2011 +0100 +Commit: Chris Wilson +CommitDate: Sat Apr 14 15:04:06 2012 +0100 + + configure.ac: generate xz tarballs by default + + build/Makefile.am.releasing | 2 +- + configure.ac | 4 ++-- + 2 files changed, 3 insertions(+), 3 deletions(-) + +commit 3616a5f992e6d12fc7f005b7b67ab2101d248470 +Author: Javier Jardón +AuthorDate: Tue Sep 13 16:13:41 2011 +0100 +Commit: Chris Wilson +CommitDate: Sat Apr 14 15:02:10 2012 +0100 + + configure.ac: Update autotools configuration + + Do not use autoconf deprecated macros + Use new libtool syntax + honor aclocal flags + + Makefile.am | 2 +- + configure.ac | 16 +++++++++++----- + 2 files changed, 12 insertions(+), 6 deletions(-) + +commit 93d42e82a43a0e2f531331b127ec82d8a3b6eded +Author: Chris Wilson +AuthorDate: Sat Apr 14 14:52:42 2012 +0100 +Commit: Chris Wilson +CommitDate: Sat Apr 14 14:54:07 2012 +0100 + + Revert accidental push of ps debugging API. + + This reverts commits + 6ad8c96fd81e06cea6ada4a83e7c5614f150f914, + a3f97d1d2e77a0fee4ca03d5dc9968952a440561, + 25abe582982caeb07d1e0af4acca53bb110a33bf + + I should know better by now than to push without checking for outstanding + changes. + + boilerplate/cairo-boilerplate-pdf.c | 19 ++++++++++----- + boilerplate/cairo-boilerplate-ps.c | 40 +++++++++++++++++++++++++------ + src/cairo-pdf-surface.c | 21 ---------------- + src/cairo-pdf.h | 5 ---- + src/cairo-ps-surface.c | 48 ------------------------------------- + src/cairo-ps.h | 10 -------- + 6 files changed, 46 insertions(+), 97 deletions(-) + +commit d486ea30f1a58640a1178de74f705a73845b1cda +Author: Marcus Meissner +AuthorDate: Sat Apr 14 14:47:02 2012 +0100 +Commit: Chris Wilson +CommitDate: Sat Apr 14 14:48:32 2012 +0100 + + configure: Conditionally include -flto + + As some systems fail to create working binaries with when linked with + lto, perform a check during configure. + + Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=39114 + + build/configure.ac.warnings | 13 ++++++++++++- + 1 file changed, 12 insertions(+), 1 deletion(-) + +commit 25abe582982caeb07d1e0af4acca53bb110a33bf +Author: Chris Wilson +AuthorDate: Thu Apr 12 10:51:38 2012 +0100 +Commit: Chris Wilson +CommitDate: Thu Apr 12 12:22:17 2012 +0100 + + pdf (debug API): Export the ability to force fallbacks + + We need to occasionally force fallbacks whilst testing the PDF + output, so export a debug interface to do so in order to avoid poking + around inside cairo internals. + + References: https://bugs.freedesktop.org/show_bug.cgi?id=48577 + Signed-off-by: Chris Wilson + + boilerplate/cairo-boilerplate-pdf.c | 19 ++++++------------- + src/cairo-pdf-surface.c | 21 +++++++++++++++++++++ + src/cairo-pdf.h | 5 +++++ + 3 files changed, 32 insertions(+), 13 deletions(-) + +commit a3f97d1d2e77a0fee4ca03d5dc9968952a440561 +Author: Chris Wilson +AuthorDate: Thu Apr 12 10:51:38 2012 +0100 +Commit: Chris Wilson +CommitDate: Thu Apr 12 12:22:15 2012 +0100 + + ps (debug API): Export the ability to force fallbacks + + We need to occasionally force fallbacks whilst testing the PostScript + output, so export a debug interface to do so in order to avoid poking + around inside cairo internals. + + References: https://bugs.freedesktop.org/show_bug.cgi?id=48577 + Signed-off-by: Chris Wilson + + boilerplate/cairo-boilerplate-ps.c | 20 ++++++-------------- + src/cairo-ps-surface.c | 21 +++++++++++++++++++++ + src/cairo-ps.h | 3 +++ + 3 files changed, 30 insertions(+), 14 deletions(-) + +commit 6ad8c96fd81e06cea6ada4a83e7c5614f150f914 +Author: Chris Wilson +AuthorDate: Thu Apr 12 10:51:38 2012 +0100 +Commit: Chris Wilson +CommitDate: Thu Apr 12 12:21:22 2012 +0100 + + ps (API): Export the ability to set the creation date of the surface + + A PostScript surface embeds a CreationDate comment into its document + description pre-amble. Normally this is set to the time the surface is + written out, except we set this to a constant value in the boilerplate + for the purposes of mimicking a reference file. It may also be useful + for external applications, so make it a public export. + + References: https://bugs.freedesktop.org/show_bug.cgi?id=48577 + Signed-off-by: Chris Wilson + + boilerplate/cairo-boilerplate-ps.c | 20 +------------------- + src/cairo-ps-surface.c | 27 +++++++++++++++++++++++++++ + src/cairo-ps.h | 7 +++++++ + 3 files changed, 35 insertions(+), 19 deletions(-) + +commit bf5adaf3942388e58ad3bda30173e53b214df885 +Author: Nis Martensen +AuthorDate: Tue Apr 10 22:09:23 2012 +0200 +Commit: Uli Schlachter +CommitDate: Thu Apr 12 10:23:28 2012 +0200 + + doc: add returns statement to cairo_surface_supports_mime_type + + Signed-off-by: Uli Schlachter + + src/cairo-surface.c | 3 +++ + 1 file changed, 3 insertions(+) + +commit a6a5b1fd0b0e32bc03e4742a0441d03e352ea8bc +Author: Nis Martensen +AuthorDate: Tue Apr 10 22:02:54 2012 +0200 +Commit: Uli Schlachter +CommitDate: Thu Apr 12 10:23:27 2012 +0200 + + doc: no separate cairo-xcb-xrender section + + There is already a cairo-xcb section and there are no symbols that + should be documented in an extra -xrender section. It is not mentioned + in cairo-sections.txt either. So simply delete it. + + Signed-off-by: Uli Schlachter + + src/cairo-xcb-surface-render.c | 13 ------------- + 1 file changed, 13 deletions(-) + +commit c04f5a353f0b05326915f370b05480eeda27ebac +Author: Nis Martensen +AuthorDate: Sun Mar 11 00:36:58 2012 +0100 +Commit: Uli Schlachter +CommitDate: Thu Apr 12 10:23:26 2012 +0200 + + add unused symbols to sections doc + + Signed-off-by: Uli Schlachter + + doc/public/cairo-sections.txt | 32 +++++++++++++++++++++++++++++++- + 1 file changed, 31 insertions(+), 1 deletion(-) + +commit 07fc63676dfdaa57ed919ad7be8f59c97c615473 +Author: Uli Schlachter +AuthorDate: Wed Apr 11 21:37:55 2012 +0200 +Commit: Uli Schlachter +CommitDate: Wed Apr 11 21:37:55 2012 +0200 + + xlib: Disable fallback compositor with xlib-xcb + + When xlib-xcb is enabled, this is just dead code which is never used. Thus, this + shouldn't hurt. However, this does include cairo-xlib-private.h. Shouldn't be a + problem? Well, that header contains static inline functions which some compiler + on Solaris will emit even when they are unused. + + This brings us to the real problem: That static inline function refers to a + function which isn't compiled with xlib-xcb and thus linking fails with + undefined symbols. + + This can be reproduced with GCC by adding a call to + _cairo_xlib_screen_put_gc(NULL, NULL, 0, 0); to + _cairo_xlib_fallback_compositor_get. + + Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=48489 + Signed-off-by: Uli Schlachter + + src/cairo-xlib-fallback-compositor.c | 4 ++++ + 1 file changed, 4 insertions(+) + +commit 09de481ce5f6ed1c38c0d5bf3af7c60642c4c947 +Author: Gilles Espinasse +AuthorDate: Sat Apr 7 23:09:51 2012 +0200 +Commit: Uli Schlachter +CommitDate: Tue Apr 10 17:46:13 2012 +0200 + + Cosmetic configure fix + + 'how to allow undefined symbols in shared libraries' test should use CAIRO_CC_TRY_FLAG_SILENT or configure display is a bit out of order like this + + checking how to allow undefined symbols in shared libraries used by test suite... checking whether gcc supports -Wl,--allow-shlib-undefined... yes + -Wl,--allow-shlib-undefined + + Signed-off-by: Gilles Espinasse + Signed-off-by: Uli Schlachter + + build/configure.ac.warnings | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit c7b86ab97be1d3d3ccf43b652832f148a2fcf290 +Author: Adrian Johnson +AuthorDate: Tue Apr 10 22:34:05 2012 +0930 +Commit: Adrian Johnson +CommitDate: Tue Apr 10 22:34:05 2012 +0930 + + any2ppm: fix missing enumeration warning + + test/any2ppm.c | 1 + + 1 file changed, 1 insertion(+) + +commit b74e8ebd50da443537a031132ebc86728f79e5f5 +Author: Maarten Bosmans +AuthorDate: Mon Apr 9 21:33:52 2012 +0200 +Commit: Chris Wilson +CommitDate: Tue Apr 10 12:09:02 2012 +0100 + + Add _cairo_win32_print_gdi_error to boilerplate code + + This function is not exported in libcairo, so can't be used from the + library. + + boilerplate/cairo-boilerplate-win32-printing.c | 30 ++++++++++++++++++++++++-- + 1 file changed, 28 insertions(+), 2 deletions(-) + +commit 0bb3e0769a49f639ae86a9577394fc51709441f5 +Author: Maarten Bosmans +AuthorDate: Mon Apr 9 21:33:51 2012 +0200 +Commit: Chris Wilson +CommitDate: Tue Apr 10 12:08:24 2012 +0100 + + test: Only use alarm() when SIGALRM is also defined + + On some platforms (mingw) the alarm() configure check succeeds, but the + alarm function doesn't actually work. + + test/cairo-test.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 9fcbe25c2dcf831783bb0fd20af9754c0b5c409b +Author: Maarten Bosmans +AuthorDate: Mon Apr 9 21:33:50 2012 +0200 +Commit: Chris Wilson +CommitDate: Tue Apr 10 12:07:49 2012 +0100 + + Protect code using dlfcn.h with CAIRO_HAS_DLSYM + + configure.ac | 1 + + util/Makefile.am | 4 ++++ + 2 files changed, 5 insertions(+) + +commit 3f32419257bb2e380dd63a3b1a850b512a617776 +Author: Maarten Bosmans +AuthorDate: Mon Apr 9 21:33:49 2012 +0200 +Commit: Chris Wilson +CommitDate: Tue Apr 10 12:07:34 2012 +0100 + + test: Give some functions in any2ppm a prefix + + The function name _write is too generic and can clash with already + defined functions. + + test/any2ppm.c | 14 +++++++------- + 1 file changed, 7 insertions(+), 7 deletions(-) + +commit 038e4991912656a3239ca82d60056ca129016ba6 +Author: Adrian Johnson +AuthorDate: Mon Apr 9 18:01:44 2012 +0930 +Commit: Adrian Johnson +CommitDate: Mon Apr 9 21:27:08 2012 +0930 + + pdf: avoid unnecessary use of patterns in mask groups + + src/cairo-pdf-surface.c | 188 +++++++++++++++++++++++++++--------------------- + 1 file changed, 106 insertions(+), 82 deletions(-) + +commit 2007f0eccec5df72b7069fc43878fa0c1ce89527 +Author: Adrian Johnson +AuthorDate: Mon Apr 9 20:03:15 2012 +0930 +Commit: Adrian Johnson +CommitDate: Mon Apr 9 21:27:08 2012 +0930 + + test: disable subsurface tests with vector backends + + due to a subsurface snapshot bug causing recursion in the pdf backend. + + test/subsurface-image-repeat.c | 2 +- + test/subsurface-modify-child.c | 2 +- + test/subsurface-modify-parent.c | 2 +- + test/subsurface-outside-target.c | 2 +- + test/subsurface-pad.c | 2 +- + test/subsurface-reflect.c | 2 +- + test/subsurface-repeat.c | 2 +- + test/subsurface-scale.c | 2 +- + test/subsurface-similar-repeat.c | 2 +- + test/subsurface.c | 2 +- + 10 files changed, 10 insertions(+), 10 deletions(-) + +commit 7cb5053c0694992320b5f7ea3b91ea497431813b +Author: Chris Wilson +AuthorDate: Mon Apr 9 12:49:20 2012 +0100 +Commit: Chris Wilson +CommitDate: Mon Apr 9 12:49:20 2012 +0100 + + analysis: Apply the integer translation to the bbox as well + + The bbox is used to compute the ink extents (and so the pattern extents + of a recording surface) and if given an integer translation we failed to + transform the bbox into the target space. + + Fixes mask (pdf). + + Signed-off-by: Chris Wilson + + src/cairo-analysis-surface.c | 8 ++++++++ + 1 file changed, 8 insertions(+) + +commit de61681574eb7d6e0e497ea7f25797e3d9b20ac4 +Author: Chris Wilson +AuthorDate: Mon Apr 9 12:47:34 2012 +0100 +Commit: Chris Wilson +CommitDate: Mon Apr 9 12:47:34 2012 +0100 + + build: Disable -Wset-but-unused-variable + + This is too noisy in the current build, and masking more important + warnings. + + Signed-off-by: Chris Wilson + + build/configure.ac.warnings | 5 +++++ + 1 file changed, 5 insertions(+) + +commit 113ec6bf0c8ed1ff12293d1ed2a2de9bd5b9904b +Author: Chris Wilson +AuthorDate: Sun Apr 8 17:58:13 2012 +0100 +Commit: Chris Wilson +CommitDate: Sun Apr 8 18:02:05 2012 +0100 + + traps: Clip the trapezoid extents against the clip extents + + Just in case the clip polygon turns out to be much larger than the + operation extents (silly us for not reducing it correctly) and lead to + catastrophe, such as: + + Program received signal SIGSEGV, Segmentation fault. + pixman_fill_sse2 (bits=, stride=4, bpp=8, x=0, y=0, + width=3, height=-34811, data=0) at pixman-sse2.c:3369 + 3369 *(uint16_t *)d = data; + + Signed-off-by: Chris Wilson + + src/cairo-traps-compositor.c | 9 +++++++-- + 1 file changed, 7 insertions(+), 2 deletions(-) + +commit 6f28f0b33cb12f3b2dd48c87da0018bd00c17107 +Author: Chris Wilson +AuthorDate: Sun Apr 8 11:28:59 2012 +0100 +Commit: Chris Wilson +CommitDate: Sun Apr 8 11:30:56 2012 +0100 + + stroke: Fix misuse of half_line_x for vertical caps on dashes + + A typo using half_line_x instead of half_line_y when emitting dashed + segments of the rectilinear stroke. + + Signed-off-by: Chris Wilson + + src/cairo-path-stroke-boxes.c | 8 ++++---- + 1 file changed, 4 insertions(+), 4 deletions(-) + +commit 8657ca10e34b0034602680b4304d47ecf90ccbfd +Author: Adrian Johnson +AuthorDate: Fri Apr 6 21:20:40 2012 +0930 +Commit: Adrian Johnson +CommitDate: Fri Apr 6 21:24:22 2012 +0930 + + fix _cairo_pattern_get_ink_extents to work with snapshot recording surfaces + + It had caused pdf bbox sizes to regress to page size bboxes. + + src/cairo-pattern.c | 4 ++++ + 1 file changed, 4 insertions(+) + +commit 8886220b5027296f5b3b95e9c2f93509108d3b9e +Author: Adrian Johnson +AuthorDate: Fri Apr 6 09:43:53 2012 +0930 +Commit: Adrian Johnson +CommitDate: Fri Apr 6 09:45:56 2012 +0930 + + type1-subset: if font name is prefixed with a subset tag, strip it off + + src/cairo-type1-subset.c | 11 +++++++++++ + 1 file changed, 11 insertions(+) + +commit a6d955fcc46ae2da8d6f3b2cadeae64c03066461 +Author: Adrian Johnson +AuthorDate: Fri Apr 6 09:23:50 2012 +0930 +Commit: Adrian Johnson +CommitDate: Fri Apr 6 09:23:50 2012 +0930 + + fix indentation in cairo_type1_font_subset_parse_charstring + + src/cairo-type1-subset.c | 147 ++++++++++++++++++++++++----------------------- + 1 file changed, 74 insertions(+), 73 deletions(-) + +commit 70b2856ed3d31b41e69b3d82fb9c5c11c2b3d3d4 +Author: Adrian Johnson +AuthorDate: Fri Apr 6 09:13:35 2012 +0930 +Commit: Adrian Johnson +CommitDate: Fri Apr 6 09:13:35 2012 +0930 + + type1-subset: use fallback font if glyph widths are calculated + + Bug 48349 has a pdf file with a Type 1 font where the glyph widths are + of the form: + + 34 9302 19 div hsbw + + src/cairo-type1-subset.c | 6 ++++++ + 1 file changed, 6 insertions(+) + +commit 7a262fd398c8a1f3c9052e8d9ec459e27ff91b4d +Author: Adrian Johnson +AuthorDate: Wed Apr 4 19:53:09 2012 +0930 +Commit: Adrian Johnson +CommitDate: Wed Apr 4 19:53:09 2012 +0930 + + fix bug in _cairo_image_analyze_color + + src/cairo-image-surface.c | 5 ++++- + 1 file changed, 4 insertions(+), 1 deletion(-) + +commit cc247c346b75353f16ab40ac74c54cdd9663d16b +Author: Henry (Yu) Song +AuthorDate: Mon Apr 2 14:29:47 2012 -0700 +Commit: Martin Robinson +CommitDate: Mon Apr 2 14:39:54 2012 -0700 + + gl: Remove an unused variable + + src/cairo-gl-gradient.c | 1 - + 1 file changed, 1 deletion(-) + +commit c77112c5464d7ff21052527f82f4d729cc509291 +Author: Uli Schlachter +AuthorDate: Mon Apr 2 20:43:00 2012 +0200 +Commit: Uli Schlachter +CommitDate: Mon Apr 2 21:02:24 2012 +0200 + + xcb: Fix SHM in _get_image() + + Commit 2283ab9 introduced a logic error. Instead of falling back to the non-SHM + path when getting the image via SHM failed, we now did the fallback when getting + the image via SHM worked (which means that the SHM operation was a waste of + time). + + Signed-off-by: Uli Schlachter + + src/cairo-xcb-surface.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit d18542b735bb777b444152f0ef06de18993635bd +Author: Kalev Lember +AuthorDate: Wed Mar 28 19:47:24 2012 +0300 +Commit: Chris Wilson +CommitDate: Thu Mar 29 21:13:21 2012 +0100 + + win32: Avoid redefining ssize_t + + ... if it's already defined by system headers. mingw-w64 includes a + ssize_t definition, so we'll have to make sure not to redefine it in + that case. + + util/cairo-missing/cairo-missing.h | 2 ++ + 1 file changed, 2 insertions(+) + +commit a965b0f95fdeb567f7ccb51f7c8c47735a61e2d9 +Author: Henry (Yu) Song +AuthorDate: Thu Mar 29 01:08:51 2012 +0000 +Commit: Chris Wilson +CommitDate: Thu Mar 29 15:06:11 2012 +0100 + + gl: fix y-axis origin when map_to_image() for non texture GL surface + + We need to fix y-axis origin when map a GL surface to image surface for + non-texture GL surface. + + Test cases: extended-blend-alpha-mask, extended-blend-mask. + Although the image outputs is not right, but the image on the first grid + (upper-left corner) is correct comparing to image output. + + src/cairo-gl-surface.c | 8 +++++++- + 1 file changed, 7 insertions(+), 1 deletion(-) + +commit af6e084dd78fcbb8ecce46c57f655f5e24343b8c +Author: Chris Wilson +AuthorDate: Thu Mar 29 14:48:24 2012 +0100 +Commit: Chris Wilson +CommitDate: Thu Mar 29 14:48:24 2012 +0100 + + cairoint: Mark PDF surface as requiring the deflate stream output + + Signed-off-by: Chris Wilson + + src/cairoint.h | 9 +++++++-- + 1 file changed, 7 insertions(+), 2 deletions(-) + +commit 169cc39dff6f49af6e39281912e577b0d6bda8ea +Author: Chris Wilson +AuthorDate: Thu Mar 29 11:58:35 2012 +0100 +Commit: Chris Wilson +CommitDate: Thu Mar 29 11:58:35 2012 +0100 + + test: update two reference images highlighted to be wrong due to source extents + + Signed-off-by: Chris Wilson + + test/reference/operator-source.argb32.ref.png | Bin 5625 -> 5612 bytes + test/reference/operator-source.rgb24.ref.png | Bin 3967 -> 3975 bytes + test/reference/overlapping-boxes.argb32.ref.png | Bin 192 -> 179 bytes + test/reference/overlapping-boxes.rgb24.ref.png | Bin 185 -> 170 bytes + 4 files changed, 0 insertions(+), 0 deletions(-) + +commit f0e40af05b81bf26dcf36cb262c34603b6420d1c +Author: Andrea Canciani +AuthorDate: Tue Mar 27 11:32:55 2012 +0200 +Commit: Andrea Canciani +CommitDate: Thu Mar 29 11:03:19 2012 +0200 + + doc: Silence last 'missing Since field' errors + + Some APIs are public but not yet supported, hence they might chenge + without notice. State their "Since" status as "to be determined". + + src/cairo-beos-surface.cpp | 4 ++++ + src/cairo-gl-surface.c | 2 ++ + 2 files changed, 6 insertions(+) + +commit 5174c585def3e2ec06a4679644973a489f92bef2 +Author: Andrea Canciani +AuthorDate: Sat Mar 24 17:58:57 2012 +0100 +Commit: Andrea Canciani +CommitDate: Thu Mar 29 11:03:19 2012 +0200 + + doc: Silence warnings about 'Since' field in private functions + + A 'Since' field on non-public functions is not very meaningful, + because their signature, implementation and semantic is subject to + change without any visibility outside of cairo. + + src/cairo-font-options.c | 8 -------- + 1 file changed, 8 deletions(-) + +commit dc1f5f1b002dd61c4c7b27dbaadb9f52dd34ec14 +Author: Andrea Canciani +AuthorDate: Thu Feb 16 14:30:08 2012 +0100 +Commit: Andrea Canciani +CommitDate: Thu Mar 29 11:03:19 2012 +0200 + + doc: Add since documentation for enumeration values + + src/cairo-pdf.h | 4 +- + src/cairo-ps.h | 4 +- + src/cairo-region.c | 8 +- + src/cairo-script.h | 4 +- + src/cairo-svg.h | 4 +- + src/cairo.h | 265 +++++++++++++++++++++++++++-------------------------- + 6 files changed, 145 insertions(+), 144 deletions(-) + +commit 2470065edf80fa3a41159990a5dac3e45ac80a09 +Author: Andrea Canciani +AuthorDate: Tue Mar 27 11:47:11 2012 +0200 +Commit: Andrea Canciani +CommitDate: Thu Mar 29 11:03:18 2012 +0200 + + doc: Fix some wrong versions + + The script from the previous commit reported that some 'Since' fields + indicate incorrect versions. + + src/cairo-quartz-surface.c | 6 +++--- + src/cairo-script-surface.c | 2 +- + src/cairo-script.h | 2 +- + 3 files changed, 5 insertions(+), 5 deletions(-) + +commit 1d3d64469f3ddac282860f66b24a35cf2253fa46 +Author: Andrea Canciani +AuthorDate: Tue Mar 27 11:48:19 2012 +0200 +Commit: Andrea Canciani +CommitDate: Thu Mar 29 11:03:18 2012 +0200 + + doc: Add "since" tag to documentation + + The following Python script was used to compute "Since: 1.X" tags, + based on the first version where a symbol became officially supported. + + This script requires a concatenation of the the cairo public headers + for the officially supported beckends to be available as + "../../includes/1.X.0.h". + + from sys import argv + import re + + syms = {} + + def stripcomments(text): + def replacer(match): + s = match.group(0) + if s.startswith('/'): + return "" + else: + return s + pattern = re.compile( + r'//.*?$|/\*.*?\*/|\'(?:\\.|[^\\\'])*\'|"(?:\\.|[^\\"])*"', + re.DOTALL | re.MULTILINE + ) + return re.sub(pattern, replacer, text) + + for minor in range(12,-2,-2): + version = "1.%d" % minor + names = re.split('([A-Za-z0-9_]+)', stripcomments(open("../../includes/%s.0.h" % version).read())) + for s in names: syms[s] = version + + for filename in argv[1:]: + is_public = False + lines = open(filename, "r").read().split("\n") + newlines = [] + for i in range(len(lines)): + if lines[i] == "/**": + last_sym = lines[i+1][2:].strip().replace(":", "") + is_public = last_sym.lower().startswith("cairo") + elif is_public and lines[i] == " **/": + if last_sym in syms: + v = syms[last_sym] + if re.search("Since", newlines[-1]): newlines = newlines[:-1] + if newlines[-1].strip() != "*": newlines.append(" *") + newlines.append(" * Since: %s" % v) + else: + print "%s (%d): Cannot determine the version in which '%s' was introduced" % (filename, i, last_sym) + newlines.append(lines[i]) + + out = open(filename, "w") + out.write("\n".join(newlines)) + out.close() + + src/cairo-debug.c | 2 + + src/cairo-font-face.c | 10 ++ + src/cairo-font-options.c | 30 ++++++ + src/cairo-ft-font.c | 14 +++ + src/cairo-image-surface.c | 8 ++ + src/cairo-matrix.c | 24 +++++ + src/cairo-misc.c | 2 + + src/cairo-path.c | 2 + + src/cairo-pattern.c | 32 ++++++ + src/cairo-pdf-surface.c | 2 + + src/cairo-pdf.h | 2 +- + src/cairo-png.c | 10 ++ + src/cairo-ps-surface.c | 2 + + src/cairo-ps.h | 2 + + src/cairo-quartz-font.c | 2 + + src/cairo-quartz-surface.c | 2 + + src/cairo-region.c | 2 + + src/cairo-scaled-font.c | 12 +++ + src/cairo-script-surface.c | 16 +++ + src/cairo-surface.c | 26 +++++ + src/cairo-svg-surface.c | 2 + + src/cairo-svg.h | 2 + + src/cairo-version.c | 16 +++ + src/cairo-xlib-surface.c | 14 +++ + src/cairo.c | 174 ++++++++++++++++++++++++++++++++ + src/cairo.h | 66 ++++++++++++ + src/win32/cairo-win32-display-surface.c | 4 + + src/win32/cairo-win32-font.c | 14 +++ + src/win32/cairo-win32-surface.c | 2 + + 29 files changed, 495 insertions(+), 1 deletion(-) + +commit 79740139e05375c4ce3542b571bc6a1e9d9137a7 +Author: Andrea Canciani +AuthorDate: Thu Feb 16 18:52:16 2012 +0100 +Commit: Andrea Canciani +CommitDate: Thu Mar 29 11:03:18 2012 +0200 + + doc: Do not use the '@' prefix on some tags + + Make the 'Since' and 'Returns' tags consistent by removing the '@' + prefix. + + Fixes some "missing 'Since' field" warnings. + + src/cairo-image-surface.c | 2 +- + src/cairo-script-surface.c | 2 +- + src/cairo-surface.c | 10 +++++----- + src/cairo-user-font.c | 2 +- + src/cairo-version.c | 8 ++++---- + 5 files changed, 12 insertions(+), 12 deletions(-) + +commit bbafcb3de8c01e2946e565f6ec7e31a3b325dbad +Author: Andrea Canciani +AuthorDate: Thu Feb 16 18:53:14 2012 +0100 +Commit: Andrea Canciani +CommitDate: Thu Mar 29 11:03:18 2012 +0200 + + doc: Make the documentation name match the function name + + Fixes the 'symbol not found' errors caused by mismatches between the + documentation name and the name in the code. + + src/cairo-scaled-font-subsets-private.h | 8 ++++---- + src/cairo-traps.c | 2 +- + src/cairo-xlib-display.c | 2 +- + 3 files changed, 6 insertions(+), 6 deletions(-) + +commit 7f635e4ead0c5bc689438a3c52742feba92c09ed +Author: Andrea Canciani +AuthorDate: Sat Mar 24 17:48:07 2012 +0100 +Commit: Andrea Canciani +CommitDate: Thu Mar 29 11:03:18 2012 +0200 + + doc: Make doc ids more consistent my always putting ':' after them + + This makes the documentations comments more consistent and fixes many + reports of 'invalid doc id'. + + src/cairo-arc.c | 2 +- + src/cairo-gstate.c | 2 +- + src/cairo-path-stroke.c | 2 +- + src/cairo-pattern.c | 36 ++++++++++++++++++------------------ + src/cairo-quartz-font.c | 4 ++-- + src/cairo-quartz-surface.c | 6 +++--- + src/cairo-recording-surface.c | 2 +- + src/cairo-surface-snapshot.c | 2 +- + src/cairo-surface.c | 2 +- + src/cairo.c | 8 ++++---- + src/win32/cairo-win32-surface.c | 4 ++-- + 11 files changed, 35 insertions(+), 35 deletions(-) + +commit eaac0fa87e588c3e29c177baa016e754588ad6c2 +Author: Andrea Canciani +AuthorDate: Fri Mar 23 11:57:38 2012 +0100 +Commit: Andrea Canciani +CommitDate: Thu Mar 29 11:03:18 2012 +0200 + + doc: Manually fix remaining warnings about symmetry + + The Python script is unable to fix all of the warnings, because some + point to comments that are not actually documentation. + + Fixes the remaining 'documentation comment not closed with **/' + warnings. + + src/cairo-gl-surface-legacy.c | 2 +- + src/cairo-qt-surface.cpp | 2 +- + src/cairo-skia-surface.cpp | 4 ++-- + src/cairo-wideint.c | 3 ++- + 4 files changed, 6 insertions(+), 5 deletions(-) + +commit f717341ab9fec1f4a72fe18f5e712272c831d978 +Author: Andrea Canciani +AuthorDate: Thu Feb 16 00:31:47 2012 +0100 +Commit: Andrea Canciani +CommitDate: Thu Mar 29 11:03:18 2012 +0200 + + doc: Make documentation comments symmetric + + Documentation comments should always start with "/**" and end with + "**/". This is not required by gtk-doc, but it makes the + documentations formatting more consistent and simplifies the checking + of documentation comments. + + The following Python script tries to enforce this. + + from sys import argv + from sre import search + + for filename in argv[1:]: + in_doc = False + lines = open(filename, "r").read().split("\n") + for i in range(len(lines)): + ls = lines[i].strip() + if ls == "/**": + in_doc = True + elif in_doc and ls == "*/": + lines[i] = " **/" + if ls.endswith("*/"): + in_doc = False + + out = open(filename, "w") + out.write("\n".join(lines)) + out.close() + + This fixes most 'documentation comment not closed with **/' warnings + by check-doc-syntax.awk. + + src/cairo-beos-surface.cpp | 2 +- + src/cairo-device.c | 2 +- + src/cairo-font-face.c | 2 +- + src/cairo-font-options.c | 2 +- + src/cairo-ft-font.c | 6 +++--- + src/cairo-gl.h | 2 +- + src/cairo-gstate.c | 2 +- + src/cairo-image-surface.c | 4 ++-- + src/cairo-malloc-private.h | 10 +++++----- + src/cairo-matrix.c | 2 +- + src/cairo-misc.c | 14 +++++++------- + src/cairo-path-stroke.c | 2 +- + src/cairo-path.c | 2 +- + src/cairo-pattern.c | 12 ++++++------ + src/cairo-pdf-surface.c | 8 ++++---- + src/cairo-pdf.h | 2 +- + src/cairo-png.c | 4 ++-- + src/cairo-ps-surface.c | 6 +++--- + src/cairo-ps.h | 2 +- + src/cairo-quartz-font.c | 6 +++--- + src/cairo-quartz-image-surface.c | 2 +- + src/cairo-quartz-surface.c | 4 ++-- + src/cairo-recording-surface.c | 4 ++-- + src/cairo-region.c | 4 ++-- + src/cairo-scaled-font.c | 2 +- + src/cairo-script-surface.c | 4 ++-- + src/cairo-surface.c | 22 +++++++++++----------- + src/cairo-svg-surface.c | 6 +++--- + src/cairo-svg.h | 2 +- + src/cairo-types-private.h | 2 +- + src/cairo-user-font.c | 4 ++-- + src/cairo-version.c | 16 ++++++++-------- + src/cairo-xcb-surface-render.c | 2 +- + src/cairo-xcb-surface.c | 4 ++-- + src/cairo-xlib-surface.c | 8 ++++---- + src/cairo.c | 16 ++++++++-------- + src/cairo.h | 2 +- + src/win32/cairo-win32-display-surface.c | 4 ++-- + src/win32/cairo-win32-font.c | 4 ++-- + src/win32/cairo-win32-surface.c | 6 +++--- + 40 files changed, 105 insertions(+), 105 deletions(-) + +commit c0fc24c889b09b734383c9250a3663d83510479e +Author: Andrea Canciani +AuthorDate: Sat Mar 24 17:53:23 2012 +0100 +Commit: Andrea Canciani +CommitDate: Thu Mar 29 11:03:18 2012 +0200 + + doc: Make informational comments syntactically different from docs + + This avoids confusion with the documentation comments and fixes some + malformed docs reports. + + src/cairo-qt-surface.cpp | 30 +++++++++++++++--------------- + 1 file changed, 15 insertions(+), 15 deletions(-) + +commit 71123cffe0d10c71d1c7069a125024609ba60f1d +Author: Andrea Canciani +AuthorDate: Fri Mar 23 11:45:15 2012 +0100 +Commit: Andrea Canciani +CommitDate: Thu Mar 29 11:03:18 2012 +0200 + + doc: Add script to enforce stricter validation of documentation comments + + src/Makefile.am | 4 +- + src/check-doc-syntax.awk | 105 +++++++++++++++++++++++++++++++++++++++++++++++ + src/check-doc-syntax.sh | 4 ++ + 3 files changed, 111 insertions(+), 2 deletions(-) + +commit d304f0e57be8036719c3709e2419487326369105 +Author: Chris Wilson +AuthorDate: Thu Mar 29 00:32:36 2012 +0100 +Commit: Chris Wilson +CommitDate: Thu Mar 29 00:51:46 2012 +0100 + + composite-rectangles: Trim extents for SOURCE and CLEAR to the mask + + The SOURCE and CLEAR are the odd pair in Cairo's range of operators that + are bound by the shape/mask, but are unbound by the source. This + regularly leads to bugs as only track the bound/unbound rectangles and + confuse the meaning when bound only by the mask. + + What is required is that the unbound extents in this case is only + trimmed by the mask (the bounded extents are still the intersection of + all). + + Fixes bug-source-cu + + Signed-off-by: Chris Wilson + + src/cairo-composite-rectangles.c | 18 +++++++++++++++--- + 1 file changed, 15 insertions(+), 3 deletions(-) + +commit 5b3d878c82fc862038c8e6730f34de317d734bd0 +Author: Chris Wilson +AuthorDate: Thu Mar 29 00:47:37 2012 +0100 +Commit: Chris Wilson +CommitDate: Thu Mar 29 00:51:46 2012 +0100 + + test: Add test case for tracking source operator extents + + test/Makefile.sources | 1 + + test/bug-source-cu.c | 81 ++++++++++++++++++++++ + test/reference/bug-source-cu.argb32.ref.png | Bin 0 -> 3815 bytes + test/reference/bug-source-cu.rgb24.ref.png | Bin 0 -> 3211 bytes + test/reference/bug-source-cu.traps.argb32.ref.png | Bin 0 -> 3816 bytes + test/reference/bug-source-cu.traps.rgb24.ref.png | Bin 0 -> 3212 bytes + 6 files changed, 82 insertions(+) + +commit fba21ef2a4c4eb343668267fda713aedbb6af2a4 +Author: Henry (Yu) Song +AuthorDate: Tue Mar 27 21:25:37 2012 +0000 +Commit: Chris Wilson +CommitDate: Tue Mar 27 23:29:12 2012 +0100 + + gl: use font's antialias option to check whether it needs mask + + There is need to loop over number of glyphs to check wether the glyph + image is a ARGB32 as the font's antialias option can be used for checking. + If antialias is SUBPIXEL or BEST, the glyph surface will be ARGB32, + otherwise it will be A8 format. Therefore we will only be using + component-alpha at SUBPIXEL (or better) font quality and only then need + a mask for multiple pass glyph composition. + + src/cairo-gl-glyphs.c | 24 ++++++++---------------- + 1 file changed, 8 insertions(+), 16 deletions(-) + +commit 06ffa0199c483e1e637f436079b1f2ed4c9e7baf +Author: Uli Schlachter +AuthorDate: Tue Mar 27 21:23:30 2012 +0200 +Commit: Uli Schlachter +CommitDate: Tue Mar 27 21:25:07 2012 +0200 + + README: Note that xcb is no longer experimental + + Signed-off-by: Uli Schlachter + + README | 14 +++++++------- + 1 file changed, 7 insertions(+), 7 deletions(-) + +commit c4d1063e0310fa1b0c3ab749ed1b4e15431c450b +Author: Uli Schlachter +AuthorDate: Mon Mar 26 20:17:10 2012 +0200 +Commit: Uli Schlachter +CommitDate: Mon Mar 26 20:17:10 2012 +0200 + + xcb/xlib: Add missing "Since: 1.12" + + Signed-off-by: Uli Schlachter + + src/cairo-xcb-connection.c | 4 ++++ + src/cairo-xcb-surface.c | 12 ++++++++++++ + src/cairo-xlib-display.c | 2 ++ + 3 files changed, 18 insertions(+) + +commit f5f8915df25112ad895d85cb6255d0bf01e24c63 +Author: Behdad Esfahbod +AuthorDate: Sun Mar 25 15:11:57 2012 -0400 +Commit: Behdad Esfahbod +CommitDate: Sun Mar 25 15:11:57 2012 -0400 + + Fix another typo + + src/cairo-gl.h | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 81c848c83945c19c8cf769daeaa831c086c264f2 +Author: Behdad Esfahbod +AuthorDate: Sun Mar 25 15:02:36 2012 -0400 +Commit: Behdad Esfahbod +CommitDate: Sun Mar 25 15:02:36 2012 -0400 + + More typo fixes + + src/cairo-malloc-private.h | 22 +++++++++++----------- + 1 file changed, 11 insertions(+), 11 deletions(-) + +commit 73cde7a0f6d86f1e72d080757f863caddb0530e6 +Author: Behdad Esfahbod +AuthorDate: Sun Mar 25 15:00:44 2012 -0400 +Commit: Behdad Esfahbod +CommitDate: Sun Mar 25 15:00:44 2012 -0400 + + Fix typos + + src/cairo-malloc-private.h | 6 +++--- + 1 file changed, 3 insertions(+), 3 deletions(-) + +commit ede11b2954db19e3ca9d31cef7d04a7bf0e42ddc +Author: Behdad Esfahbod +AuthorDate: Sun Mar 25 14:37:14 2012 -0400 +Commit: Behdad Esfahbod +CommitDate: Sun Mar 25 14:38:39 2012 -0400 + + Fix math in comments + + src/cairo-arc.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 2721d05d69e42eef592ea0394df89cdc91414330 +Author: Behdad Esfahbod +AuthorDate: Thu Sep 22 13:02:44 2011 -0400 +Commit: Behdad Esfahbod +CommitDate: Sun Mar 25 14:38:38 2012 -0400 + + Typo + + src/cairo-arc.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 841b4057bc7afdc9fbac36b178dd5f15bbfc0f90 +Author: Chris Wilson +AuthorDate: Fri Mar 23 20:16:44 2012 +0000 +Commit: Chris Wilson +CommitDate: Fri Mar 23 20:16:44 2012 +0000 + + version: Post release bump to 1.12.1 + + cairo-version.h | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) diff -Nru cairo-1.14.6/config.h.in cairo-1.15.10/config.h.in --- cairo-1.14.6/config.h.in 2015-12-09 20:41:53.000000000 +0000 +++ cairo-1.15.10/config.h.in 2017-12-11 21:03:19.000000000 +0000 @@ -128,14 +128,18 @@ /* Define to 1 if you have the `funlockfile' function. */ #undef HAVE_FUNLOCKFILE +/* Enable if your compiler supports the legacy GCC __sync_* atomic primitives + */ +#undef HAVE_GCC_LEGACY_ATOMICS + /* Whether you have gcov */ #undef HAVE_GCOV /* Define to 1 if you have the `getline' function. */ #undef HAVE_GETLINE -/* Enable if your compiler supports the Intel __sync_* atomic primitives */ -#undef HAVE_INTEL_ATOMIC_PRIMITIVES +/* Define to 1 if you have the `gmtime_r' function. */ +#undef HAVE_GMTIME_R /* Define to 1 if you have the header file. */ #undef HAVE_INTTYPES_H @@ -155,6 +159,9 @@ /* Define to 1 if you have the `link' function. */ #undef HAVE_LINK +/* Define to 1 if you have the `localtime_r' function. */ +#undef HAVE_LOCALTIME_R + /* Define to 1 if you have the Valgrind lockdep tool */ #undef HAVE_LOCKDEP @@ -243,6 +250,9 @@ /* Define to 1 if you have the header file. */ #undef HAVE_TIME_H +/* Define to 1 if typeof works with your compiler. */ +#undef HAVE_TYPEOF + /* Define to 1 if the system has the type `uint128_t'. */ #undef HAVE_UINT128_T @@ -258,9 +268,6 @@ /* Define to 1 if you have the `waitpid' function. */ #undef HAVE_WAITPID -/* Define to 1 if you have the header file. */ -#undef HAVE_WINDOWS_H - /* Define to 1 if you have the header file. */ #undef HAVE_X11_EXTENSIONS_SHMPROTO_H @@ -291,8 +298,7 @@ /* Define to 1 if shared memory segments are released deferred. */ #undef IPC_RMID_DEFERRED_RELEASE -/* Define to the sub-directory in which libtool stores uninstalled libraries. - */ +/* Define to the sub-directory where libtool stores uninstalled libraries. */ #undef LT_OBJDIR /* Define to the address where bug reports for this package should be sent. */ @@ -414,3 +420,6 @@ #ifndef __cplusplus #undef inline #endif + +/* Define to __typeof__ if your compiler spells it that way. */ +#undef typeof diff -Nru cairo-1.14.6/configure cairo-1.15.10/configure --- cairo-1.14.6/configure 2015-12-09 20:41:45.000000000 +0000 +++ cairo-1.15.10/configure 2017-12-11 21:03:11.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.14.6. +# Generated by GNU Autoconf 2.69 for cairo 1.15.10. # # Report bugs to . # @@ -591,8 +591,8 @@ # Identity of this package. PACKAGE_NAME='cairo' PACKAGE_TARNAME='cairo' -PACKAGE_VERSION='1.14.6' -PACKAGE_STRING='cairo 1.14.6' +PACKAGE_VERSION='1.15.10' +PACKAGE_STRING='cairo 1.15.10' PACKAGE_BUGREPORT='http://bugs.freedesktop.org/enter_bug.cgi?product=cairo' PACKAGE_URL='http://cairographics.org/' @@ -734,6 +734,10 @@ CAIRO_HAS_COGL_SURFACE_TRUE cogl_LIBS cogl_CFLAGS +CAIRO_HAS_GLESV3_SURFACE_FALSE +CAIRO_HAS_GLESV3_SURFACE_TRUE +glesv3_LIBS +glesv3_CFLAGS CAIRO_HAS_GLESV2_SURFACE_FALSE CAIRO_HAS_GLESV2_SURFACE_TRUE glesv2_LIBS @@ -868,6 +872,7 @@ GTKDOC_CHECK_PATH GTKDOC_CHECK PKG_CONFIG +LT_SYS_LIBRARY_PATH OTOOL64 OTOOL LIPO @@ -962,6 +967,7 @@ docdir oldincludedir includedir +runstatedir localstatedir sharedstatedir sysconfdir @@ -990,6 +996,7 @@ enable_static with_pic enable_fast_install +with_aix_soname with_gnu_ld with_sysroot enable_libtool_lock @@ -1024,6 +1031,7 @@ enable_png enable_gl enable_glesv2 +enable_glesv3 enable_cogl enable_directfb enable_vg @@ -1056,6 +1064,7 @@ LIBS CPPFLAGS CPP +LT_SYS_LIBRARY_PATH PKG_CONFIG GTKDOC_DEPS_CFLAGS GTKDOC_DEPS_LIBS @@ -1087,6 +1096,8 @@ gl_LIBS glesv2_CFLAGS glesv2_LIBS +glesv3_CFLAGS +glesv3_LIBS cogl_CFLAGS cogl_LIBS directfb_CFLAGS @@ -1149,6 +1160,7 @@ sysconfdir='${prefix}/etc' sharedstatedir='${prefix}/com' localstatedir='${prefix}/var' +runstatedir='${localstatedir}/run' includedir='${prefix}/include' oldincludedir='/usr/include' docdir='${datarootdir}/doc/${PACKAGE_TARNAME}' @@ -1401,6 +1413,15 @@ | -silent | --silent | --silen | --sile | --sil) silent=yes ;; + -runstatedir | --runstatedir | --runstatedi | --runstated \ + | --runstate | --runstat | --runsta | --runst | --runs \ + | --run | --ru | --r) + ac_prev=runstatedir ;; + -runstatedir=* | --runstatedir=* | --runstatedi=* | --runstated=* \ + | --runstate=* | --runstat=* | --runsta=* | --runst=* | --runs=* \ + | --run=* | --ru=* | --r=*) + runstatedir=$ac_optarg ;; + -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb) ac_prev=sbindir ;; -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \ @@ -1538,7 +1559,7 @@ for ac_var in exec_prefix prefix bindir sbindir libexecdir datarootdir \ datadir sysconfdir sharedstatedir localstatedir includedir \ oldincludedir docdir infodir htmldir dvidir pdfdir psdir \ - libdir localedir mandir + libdir localedir mandir runstatedir do eval ac_val=\$$ac_var # Remove trailing slashes. @@ -1651,7 +1672,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.14.6 to adapt to many kinds of systems. +\`configure' configures cairo 1.15.10 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... @@ -1691,6 +1712,7 @@ --sysconfdir=DIR read-only single-machine data [PREFIX/etc] --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com] --localstatedir=DIR modifiable single-machine data [PREFIX/var] + --runstatedir=DIR modifiable per-process data [LOCALSTATEDIR/run] --libdir=DIR object code libraries [EPREFIX/lib] --includedir=DIR C header files [PREFIX/include] --oldincludedir=DIR C header files for non-gcc [/usr/include] @@ -1725,7 +1747,7 @@ if test -n "$ac_init_help"; then case $ac_init_help in - short | recursive ) echo "Configuration of cairo 1.14.6:";; + short | recursive ) echo "Configuration of cairo 1.15.10:";; esac cat <<\_ACEOF @@ -1807,6 +1829,9 @@ --enable-glesv2=[no/auto/yes] Enable cairo's OpenGLESv2 surface backend feature [default=no] + --enable-glesv3=[no/auto/yes] + Enable cairo's OpenGLESv3 surface backend feature + [default=no] --enable-cogl=[no/auto/yes] Enable cairo's Cogl surface backend feature [default=no] @@ -1875,9 +1900,12 @@ --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no) --with-pic[=PKGS] try to use only PIC/non-PIC objects [default=use both] + --with-aix-soname=aix|svr4|both + shared library versioning (aka "SONAME") variant to + provide on AIX, [default=aix]. --with-gnu-ld assume the C compiler uses GNU ld [default=no] - --with-sysroot=DIR Search for dependent libraries within DIR - (or the compiler's sysroot if not specified). + --with-sysroot[=DIR] Search for dependent libraries within DIR (or the + compiler's sysroot if not specified). --with-html-dir=PATH path to installed docs --with-x use the X Window System --with-skia=/path/to/skia @@ -1897,6 +1925,8 @@ CPPFLAGS (Objective) C/C++ preprocessor flags, e.g. -I if you have headers in a nonstandard directory CPP C preprocessor + LT_SYS_LIBRARY_PATH + User-defined run-time library search path. PKG_CONFIG path to pkg-config utility GTKDOC_DEPS_CFLAGS C compiler flags for GTKDOC_DEPS, overriding pkg-config @@ -1939,6 +1969,9 @@ glesv2_CFLAGS C compiler flags for glesv2, overriding pkg-config glesv2_LIBS linker flags for glesv2, overriding pkg-config + glesv3_CFLAGS + C compiler flags for glesv3, overriding pkg-config + glesv3_LIBS linker flags for glesv3, overriding pkg-config cogl_CFLAGS C compiler flags for cogl, overriding pkg-config cogl_LIBS linker flags for cogl, overriding pkg-config directfb_CFLAGS @@ -2046,7 +2079,7 @@ test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF -cairo configure 1.14.6 +cairo configure 1.15.10 generated by GNU Autoconf 2.69 Copyright (C) 2012 Free Software Foundation, Inc. @@ -2773,7 +2806,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.14.6, which was +It was created by cairo $as_me 1.15.10, which was generated by GNU Autoconf 2.69. Invocation command line was $ $0 $@ @@ -3151,8 +3184,8 @@ -# expand $ac_aux_dir to an absolute path -am_aux_dir=`cd $ac_aux_dir && pwd` +# Expand $ac_aux_dir to an absolute path. +am_aux_dir=`cd "$ac_aux_dir" && pwd` ac_ext=c ac_cpp='$CPP $CPPFLAGS' @@ -4479,7 +4512,61 @@ done -am__api_version='1.14' + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for typeof syntax and keyword spelling" >&5 +$as_echo_n "checking for typeof syntax and keyword spelling... " >&6; } +if ${ac_cv_c_typeof+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_cv_c_typeof=no + for ac_kw in typeof __typeof__ no; do + test $ac_kw = no && break + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + int value; + typedef struct { + char a [1 + + ! (($ac_kw (value)) + (($ac_kw (value)) 0 < ($ac_kw (value)) -1 + ? ($ac_kw (value)) - 1 + : ~ (~ ($ac_kw (value)) 0 + << sizeof ($ac_kw (value)))))]; } + ac__typeof_type_; + return + (! ((void) ((ac__typeof_type_ *) 0), 0)); + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_cv_c_typeof=$ac_kw +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + test $ac_cv_c_typeof != no && break + done +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_typeof" >&5 +$as_echo "$ac_cv_c_typeof" >&6; } + if test $ac_cv_c_typeof != no; then + +$as_echo "#define HAVE_TYPEOF 1" >>confdefs.h + + if test $ac_cv_c_typeof != typeof; then + +cat >>confdefs.h <<_ACEOF +#define typeof $ac_cv_c_typeof +_ACEOF + + fi + fi + + +am__api_version='1.15' # Find a good install program. We prefer a C program (faster), # so one script is as good as another. But avoid the broken or @@ -4668,7 +4755,7 @@ $as_echo "$as_me: WARNING: 'missing' script is too old or missing" >&2;} fi -if test x"${install_sh}" != xset; then +if test x"${install_sh+set}" != xset; then case $am_aux_dir in *\ * | *\ *) install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;; @@ -5025,7 +5112,7 @@ # Define the identity of the package. PACKAGE='cairo' - VERSION='1.14.6' + VERSION='1.15.10' # Some tools Automake needs. @@ -5050,8 +5137,8 @@ # mkdir_p='$(MKDIR_P)' -# We need awk for the "check" target. The system "awk" is bad on -# some platforms. +# We need awk for the "check" target (and possibly the TAP driver). The +# system "awk" is bad on some platforms. # Always define AMTAR for backward compatibility. Yes, it's still used # in the wild :-( We should find a proper way to deprecate it ... AMTAR='$${TAR-tar}' @@ -5236,6 +5323,7 @@ as_fn_error $? "Your 'rm' program is bad, sorry." "$LINENO" 5 fi fi + # Check whether --enable-silent-rules was given. if test "${enable_silent_rules+set}" = set; then : enableval=$enable_silent_rules; @@ -5456,8 +5544,8 @@ -macro_version='2.4.2' -macro_revision='1.3337' +macro_version='2.4.6' +macro_revision='2.4.6' @@ -5471,7 +5559,7 @@ -ltmain="$ac_aux_dir/ltmain.sh" +ltmain=$ac_aux_dir/ltmain.sh # Make sure we can run config.sub. $SHELL "$ac_aux_dir/config.sub" sun4 >/dev/null 2>&1 || @@ -5591,7 +5679,7 @@ $ECHO "" } -case "$ECHO" in +case $ECHO in printf*) { $as_echo "$as_me:${as_lineno-$LINENO}: result: printf" >&5 $as_echo "printf" >&6; } ;; print*) { $as_echo "$as_me:${as_lineno-$LINENO}: result: print -r" >&5 @@ -5784,19 +5872,19 @@ # Check whether --with-gnu-ld was given. if test "${with_gnu_ld+set}" = set; then : - withval=$with_gnu_ld; test "$withval" = no || with_gnu_ld=yes + withval=$with_gnu_ld; test no = "$withval" || with_gnu_ld=yes else with_gnu_ld=no fi ac_prog=ld -if test "$GCC" = yes; then +if test yes = "$GCC"; then # Check if gcc -print-prog-name=ld gives a path. { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ld used by $CC" >&5 $as_echo_n "checking for ld used by $CC... " >&6; } case $host in *-*-mingw*) - # gcc leaves a trailing carriage return which upsets mingw + # gcc leaves a trailing carriage return, which upsets mingw ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; *) ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; @@ -5810,7 +5898,7 @@ while $ECHO "$ac_prog" | $GREP "$re_direlt" > /dev/null 2>&1; do ac_prog=`$ECHO $ac_prog| $SED "s%$re_direlt%/%"` done - test -z "$LD" && LD="$ac_prog" + test -z "$LD" && LD=$ac_prog ;; "") # If it fails, then pretend we aren't using GCC. @@ -5821,7 +5909,7 @@ with_gnu_ld=unknown ;; esac -elif test "$with_gnu_ld" = yes; then +elif test yes = "$with_gnu_ld"; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GNU ld" >&5 $as_echo_n "checking for GNU ld... " >&6; } else @@ -5832,32 +5920,32 @@ $as_echo_n "(cached) " >&6 else if test -z "$LD"; then - lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR + lt_save_ifs=$IFS; IFS=$PATH_SEPARATOR for ac_dir in $PATH; do - IFS="$lt_save_ifs" + IFS=$lt_save_ifs test -z "$ac_dir" && ac_dir=. if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then - lt_cv_path_LD="$ac_dir/$ac_prog" + lt_cv_path_LD=$ac_dir/$ac_prog # Check to see if the program is GNU ld. I'd rather use --version, # but apparently some variants of GNU ld only accept -v. # Break only if it was the GNU/non-GNU ld that we prefer. case `"$lt_cv_path_LD" -v 2>&1 &5 $as_echo "$LD" >&6; } @@ -5900,33 +5988,38 @@ else if test -n "$NM"; then # Let the user override the test. - lt_cv_path_NM="$NM" + lt_cv_path_NM=$NM else - lt_nm_to_check="${ac_tool_prefix}nm" + lt_nm_to_check=${ac_tool_prefix}nm if test -n "$ac_tool_prefix" && test "$build" = "$host"; then lt_nm_to_check="$lt_nm_to_check nm" fi for lt_tmp_nm in $lt_nm_to_check; do - lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR + lt_save_ifs=$IFS; IFS=$PATH_SEPARATOR for ac_dir in $PATH /usr/ccs/bin/elf /usr/ccs/bin /usr/ucb /bin; do - IFS="$lt_save_ifs" + IFS=$lt_save_ifs test -z "$ac_dir" && ac_dir=. - tmp_nm="$ac_dir/$lt_tmp_nm" - if test -f "$tmp_nm" || test -f "$tmp_nm$ac_exeext" ; then + tmp_nm=$ac_dir/$lt_tmp_nm + if test -f "$tmp_nm" || test -f "$tmp_nm$ac_exeext"; then # Check to see if the nm accepts a BSD-compat flag. - # Adding the `sed 1q' prevents false positives on HP-UX, which says: + # Adding the 'sed 1q' prevents false positives on HP-UX, which says: # nm: unknown option "B" ignored # Tru64's nm complains that /dev/null is an invalid object file - case `"$tmp_nm" -B /dev/null 2>&1 | sed '1q'` in - */dev/null* | *'Invalid file or object type'*) + # MSYS converts /dev/null to NUL, MinGW nm treats NUL as empty + case $build_os in + mingw*) lt_bad_file=conftest.nm/nofile ;; + *) lt_bad_file=/dev/null ;; + esac + case `"$tmp_nm" -B $lt_bad_file 2>&1 | sed '1q'` in + *$lt_bad_file* | *'Invalid file or object type'*) lt_cv_path_NM="$tmp_nm -B" - break + break 2 ;; *) case `"$tmp_nm" -p /dev/null 2>&1 | sed '1q'` in */dev/null*) lt_cv_path_NM="$tmp_nm -p" - break + break 2 ;; *) lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but @@ -5937,15 +6030,15 @@ esac fi done - IFS="$lt_save_ifs" + IFS=$lt_save_ifs done : ${lt_cv_path_NM=no} fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_path_NM" >&5 $as_echo "$lt_cv_path_NM" >&6; } -if test "$lt_cv_path_NM" != "no"; then - NM="$lt_cv_path_NM" +if test no != "$lt_cv_path_NM"; then + NM=$lt_cv_path_NM else # Didn't find any BSD compatible name lister, look for dumpbin. if test -n "$DUMPBIN"; then : @@ -6051,9 +6144,9 @@ fi fi - case `$DUMPBIN -symbols /dev/null 2>&1 | sed '1q'` in + case `$DUMPBIN -symbols -headers /dev/null 2>&1 | sed '1q'` in *COFF*) - DUMPBIN="$DUMPBIN -symbols" + DUMPBIN="$DUMPBIN -symbols -headers" ;; *) DUMPBIN=: @@ -6061,8 +6154,8 @@ esac fi - if test "$DUMPBIN" != ":"; then - NM="$DUMPBIN" + if test : != "$DUMPBIN"; then + NM=$DUMPBIN fi fi test -z "$NM" && NM=nm @@ -6113,7 +6206,7 @@ $as_echo_n "(cached) " >&6 else i=0 - teststring="ABCD" + teststring=ABCD case $build_os in msdosdjgpp*) @@ -6153,7 +6246,7 @@ lt_cv_sys_max_cmd_len=8192; ;; - netbsd* | freebsd* | openbsd* | darwin* | dragonfly*) + bitrig* | darwin* | dragonfly* | freebsd* | netbsd* | openbsd*) # This has been around since 386BSD, at least. Likely further. if test -x /sbin/sysctl; then lt_cv_sys_max_cmd_len=`/sbin/sysctl -n kern.argmax` @@ -6204,22 +6297,22 @@ *) lt_cv_sys_max_cmd_len=`(getconf ARG_MAX) 2> /dev/null` if test -n "$lt_cv_sys_max_cmd_len" && \ - test undefined != "$lt_cv_sys_max_cmd_len"; then + test undefined != "$lt_cv_sys_max_cmd_len"; then lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` else # Make teststring a little bigger before we do anything with it. # a 1K string should be a reasonable start. - for i in 1 2 3 4 5 6 7 8 ; do + for i in 1 2 3 4 5 6 7 8; do teststring=$teststring$teststring done SHELL=${SHELL-${CONFIG_SHELL-/bin/sh}} # If test is not a shell built-in, we'll probably end up computing a # maximum length that is only half of the actual maximum length, but # we can't tell. - while { test "X"`env echo "$teststring$teststring" 2>/dev/null` \ + while { test X`env echo "$teststring$teststring" 2>/dev/null` \ = "X$teststring$teststring"; } >/dev/null 2>&1 && - test $i != 17 # 1/2 MB should be enough + test 17 != "$i" # 1/2 MB should be enough do i=`expr $i + 1` teststring=$teststring$teststring @@ -6237,7 +6330,7 @@ fi -if test -n $lt_cv_sys_max_cmd_len ; then +if test -n "$lt_cv_sys_max_cmd_len"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_sys_max_cmd_len" >&5 $as_echo "$lt_cv_sys_max_cmd_len" >&6; } else @@ -6255,30 +6348,6 @@ : ${MV="mv -f"} : ${RM="rm -f"} -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the shell understands some XSI constructs" >&5 -$as_echo_n "checking whether the shell understands some XSI constructs... " >&6; } -# Try some XSI features -xsi_shell=no -( _lt_dummy="a/b/c" - test "${_lt_dummy##*/},${_lt_dummy%/*},${_lt_dummy#??}"${_lt_dummy%"$_lt_dummy"}, \ - = c,a/b,b/c, \ - && eval 'test $(( 1 + 1 )) -eq 2 \ - && test "${#_lt_dummy}" -eq 5' ) >/dev/null 2>&1 \ - && xsi_shell=yes -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xsi_shell" >&5 -$as_echo "$xsi_shell" >&6; } - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the shell understands \"+=\"" >&5 -$as_echo_n "checking whether the shell understands \"+=\"... " >&6; } -lt_shell_append=no -( foo=bar; set foo baz; eval "$1+=\$2" && test "$foo" = barbaz ) \ - >/dev/null 2>&1 \ - && lt_shell_append=yes -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_shell_append" >&5 -$as_echo "$lt_shell_append" >&6; } - - if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then lt_unset=unset else @@ -6401,13 +6470,13 @@ reload_cmds='$LD$reload_flag -o $output$reload_objs' case $host_os in cygwin* | mingw* | pw32* | cegcc*) - if test "$GCC" != yes; then + if test yes != "$GCC"; then reload_cmds=false fi ;; darwin*) - if test "$GCC" = yes; then - reload_cmds='$LTCC $LTCFLAGS -nostdlib ${wl}-r -o $output$reload_objs' + if test yes = "$GCC"; then + reload_cmds='$LTCC $LTCFLAGS -nostdlib $wl-r -o $output$reload_objs' else reload_cmds='$LD$reload_flag -o $output$reload_objs' fi @@ -6532,13 +6601,13 @@ # Need to set the preceding variable on all platforms that support # interlibrary dependencies. # 'none' -- dependencies not supported. -# `unknown' -- same as none, but documents that we really don't know. +# 'unknown' -- same as none, but documents that we really don't know. # 'pass_all' -- all dependencies passed with no checks. # 'test_compile' -- check by making test program. # 'file_magic [[regex]]' -- check by looking for files in library path -# which responds to the $file_magic_cmd with a given extended regex. -# If you have `file' or equivalent on your system and you're not sure -# whether `pass_all' will *always* work, you probably want this one. +# that responds to the $file_magic_cmd with a given extended regex. +# If you have 'file' or equivalent on your system and you're not sure +# whether 'pass_all' will *always* work, you probably want this one. case $host_os in aix[4-9]*) @@ -6565,8 +6634,7 @@ # Base MSYS/MinGW do not provide the 'file' command needed by # func_win32_libid shell function, so use a weaker test based on 'objdump', # unless we find 'file', for example because we are cross-compiling. - # func_win32_libid assumes BSD nm, so disallow it if using MS dumpbin. - if ( test "$lt_cv_nm_interface" = "BSD nm" && file / ) >/dev/null 2>&1; then + if ( file / ) >/dev/null 2>&1; then lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL' lt_cv_file_magic_cmd='func_win32_libid' else @@ -6662,8 +6730,8 @@ lt_cv_deplibs_check_method=pass_all ;; -openbsd*) - if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then +openbsd* | bitrig*) + if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`"; then lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|\.so|_pic\.a)$' else lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|_pic\.a)$' @@ -6716,6 +6784,9 @@ tpf*) lt_cv_deplibs_check_method=pass_all ;; +os2*) + lt_cv_deplibs_check_method=pass_all + ;; esac fi @@ -6870,8 +6941,8 @@ case $host_os in cygwin* | mingw* | pw32* | cegcc*) - # two different shell functions defined in ltmain.sh - # decide which to use based on capabilities of $DLLTOOL + # two different shell functions defined in ltmain.sh; + # decide which one to use based on capabilities of $DLLTOOL case `$DLLTOOL --help 2>&1` in *--identify-strict*) lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib @@ -6883,7 +6954,7 @@ ;; *) # fallback: assume linklib IS sharedlib - lt_cv_sharedlib_from_linklib_cmd="$ECHO" + lt_cv_sharedlib_from_linklib_cmd=$ECHO ;; esac @@ -7037,7 +7108,7 @@ ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } - if test "$ac_status" -eq 0; then + if test 0 -eq "$ac_status"; then # Ensure the archiver fails upon bogus file names. rm -f conftest.$ac_objext libconftest.a { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$lt_ar_try\""; } >&5 @@ -7045,7 +7116,7 @@ ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } - if test "$ac_status" -ne 0; then + if test 0 -ne "$ac_status"; then lt_cv_ar_at_file=@ fi fi @@ -7058,7 +7129,7 @@ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ar_at_file" >&5 $as_echo "$lt_cv_ar_at_file" >&6; } -if test "x$lt_cv_ar_at_file" = xno; then +if test no = "$lt_cv_ar_at_file"; then archiver_list_spec= else archiver_list_spec=$lt_cv_ar_at_file @@ -7275,7 +7346,7 @@ if test -n "$RANLIB"; then case $host_os in - openbsd*) + bitrig* | openbsd*) old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB -t \$tool_oldlib" ;; *) @@ -7365,7 +7436,7 @@ symcode='[ABCDGISTW]' ;; hpux*) - if test "$host_cpu" = ia64; then + if test ia64 = "$host_cpu"; then symcode='[ABCDEGRST]' fi ;; @@ -7398,14 +7469,44 @@ symcode='[ABCDGIRSTW]' ;; esac +if test "$lt_cv_nm_interface" = "MS dumpbin"; then + # Gets list of data symbols to import. + lt_cv_sys_global_symbol_to_import="sed -n -e 's/^I .* \(.*\)$/\1/p'" + # Adjust the below global symbol transforms to fixup imported variables. + lt_cdecl_hook=" -e 's/^I .* \(.*\)$/extern __declspec(dllimport) char \1;/p'" + lt_c_name_hook=" -e 's/^I .* \(.*\)$/ {\"\1\", (void *) 0},/p'" + lt_c_name_lib_hook="\ + -e 's/^I .* \(lib.*\)$/ {\"\1\", (void *) 0},/p'\ + -e 's/^I .* \(.*\)$/ {\"lib\1\", (void *) 0},/p'" +else + # Disable hooks by default. + lt_cv_sys_global_symbol_to_import= + lt_cdecl_hook= + lt_c_name_hook= + lt_c_name_lib_hook= +fi + # Transform an extracted symbol line into a proper C declaration. # Some systems (esp. on ia64) link data and code symbols differently, # so use this general approach. -lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'" +lt_cv_sys_global_symbol_to_cdecl="sed -n"\ +$lt_cdecl_hook\ +" -e 's/^T .* \(.*\)$/extern int \1();/p'"\ +" -e 's/^$symcode$symcode* .* \(.*\)$/extern char \1;/p'" # Transform an extracted symbol line into symbol name and symbol address -lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([^ ]*\)[ ]*$/ {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([^ ]*\) \([^ ]*\)$/ {\"\2\", (void *) \&\2},/p'" -lt_cv_sys_global_symbol_to_c_name_address_lib_prefix="sed -n -e 's/^: \([^ ]*\)[ ]*$/ {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([^ ]*\) \(lib[^ ]*\)$/ {\"\2\", (void *) \&\2},/p' -e 's/^$symcode* \([^ ]*\) \([^ ]*\)$/ {\"lib\2\", (void *) \&\2},/p'" +lt_cv_sys_global_symbol_to_c_name_address="sed -n"\ +$lt_c_name_hook\ +" -e 's/^: \(.*\) .*$/ {\"\1\", (void *) 0},/p'"\ +" -e 's/^$symcode$symcode* .* \(.*\)$/ {\"\1\", (void *) \&\1},/p'" + +# Transform an extracted symbol line into symbol name with lib prefix and +# symbol address. +lt_cv_sys_global_symbol_to_c_name_address_lib_prefix="sed -n"\ +$lt_c_name_lib_hook\ +" -e 's/^: \(.*\) .*$/ {\"\1\", (void *) 0},/p'"\ +" -e 's/^$symcode$symcode* .* \(lib.*\)$/ {\"\1\", (void *) \&\1},/p'"\ +" -e 's/^$symcode$symcode* .* \(.*\)$/ {\"lib\1\", (void *) \&\1},/p'" # Handle CRLF in mingw tool chain opt_cr= @@ -7423,21 +7524,24 @@ # Write the raw and C identifiers. if test "$lt_cv_nm_interface" = "MS dumpbin"; then - # Fake it for dumpbin and say T for any non-static function - # and D for any global variable. + # Fake it for dumpbin and say T for any non-static function, + # D for any global variable and I for any imported variable. # Also find C++ and __fastcall symbols from MSVC++, # which start with @ or ?. lt_cv_sys_global_symbol_pipe="$AWK '"\ " {last_section=section; section=\$ 3};"\ " /^COFF SYMBOL TABLE/{for(i in hide) delete hide[i]};"\ " /Section length .*#relocs.*(pick any)/{hide[last_section]=1};"\ +" /^ *Symbol name *: /{split(\$ 0,sn,\":\"); si=substr(sn[2],2)};"\ +" /^ *Type *: code/{print \"T\",si,substr(si,length(prfx))};"\ +" /^ *Type *: data/{print \"I\",si,substr(si,length(prfx))};"\ " \$ 0!~/External *\|/{next};"\ " / 0+ UNDEF /{next}; / UNDEF \([^|]\)*()/{next};"\ " {if(hide[section]) next};"\ -" {f=0}; \$ 0~/\(\).*\|/{f=1}; {printf f ? \"T \" : \"D \"};"\ -" {split(\$ 0, a, /\||\r/); split(a[2], s)};"\ -" s[1]~/^[@?]/{print s[1], s[1]; next};"\ -" s[1]~prfx {split(s[1],t,\"@\"); print t[1], substr(t[1],length(prfx))}"\ +" {f=\"D\"}; \$ 0~/\(\).*\|/{f=\"T\"};"\ +" {split(\$ 0,a,/\||\r/); split(a[2],s)};"\ +" s[1]~/^[@?]/{print f,s[1],s[1]; next};"\ +" s[1]~prfx {split(s[1],t,\"@\"); print f,t[1],substr(t[1],length(prfx))}"\ " ' prfx=^$ac_symprfx" else lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[ ]\($symcode$symcode*\)[ ][ ]*$ac_symprfx$sympat$opt_cr$/$symxfrm/p'" @@ -7485,11 +7589,11 @@ if $GREP ' nm_test_func$' "$nlist" >/dev/null; then cat <<_LT_EOF > conftest.$ac_ext /* Keep this code in sync between libtool.m4, ltmain, lt_system.h, and tests. */ -#if defined(_WIN32) || defined(__CYGWIN__) || defined(_WIN32_WCE) -/* DATA imports from DLLs on WIN32 con't be const, because runtime +#if defined _WIN32 || defined __CYGWIN__ || defined _WIN32_WCE +/* DATA imports from DLLs on WIN32 can't be const, because runtime relocations are performed -- see ld's documentation on pseudo-relocs. */ # define LT_DLSYM_CONST -#elif defined(__osf__) +#elif defined __osf__ /* This system does not cope well with relocations in const data. */ # define LT_DLSYM_CONST #else @@ -7515,7 +7619,7 @@ { { "@PROGRAM@", (void *) 0 }, _LT_EOF - $SED "s/^$symcode$symcode* \(.*\) \(.*\)$/ {\"\2\", (void *) \&\2},/" < "$nlist" | $GREP -v main >> conftest.$ac_ext + $SED "s/^$symcode$symcode* .* \(.*\)$/ {\"\1\", (void *) \&\1},/" < "$nlist" | $GREP -v main >> conftest.$ac_ext cat <<\_LT_EOF >> conftest.$ac_ext {0, (void *) 0} }; @@ -7535,13 +7639,13 @@ mv conftest.$ac_objext conftstm.$ac_objext lt_globsym_save_LIBS=$LIBS lt_globsym_save_CFLAGS=$CFLAGS - LIBS="conftstm.$ac_objext" + LIBS=conftstm.$ac_objext CFLAGS="$CFLAGS$lt_prog_compiler_no_builtin_flag" if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5 (eval $ac_link) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } && test -s conftest${ac_exeext}; then + test $ac_status = 0; } && test -s conftest$ac_exeext; then pipe_works=yes fi LIBS=$lt_globsym_save_LIBS @@ -7562,7 +7666,7 @@ rm -rf conftest* conftst* # Do not use the global_symbol_pipe unless it works. - if test "$pipe_works" = yes; then + if test yes = "$pipe_works"; then break else lt_cv_sys_global_symbol_pipe= @@ -7615,6 +7719,16 @@ + + + + + + + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for sysroot" >&5 $as_echo_n "checking for sysroot... " >&6; } @@ -7627,9 +7741,9 @@ lt_sysroot= -case ${with_sysroot} in #( +case $with_sysroot in #( yes) - if test "$GCC" = yes; then + if test yes = "$GCC"; then lt_sysroot=`$CC --print-sysroot 2>/dev/null` fi ;; #( @@ -7639,8 +7753,8 @@ no|'') ;; #( *) - { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${with_sysroot}" >&5 -$as_echo "${with_sysroot}" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $with_sysroot" >&5 +$as_echo "$with_sysroot" >&6; } as_fn_error $? "The sysroot must be an absolute path." "$LINENO" 5 ;; esac @@ -7652,18 +7766,99 @@ +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a working dd" >&5 +$as_echo_n "checking for a working dd... " >&6; } +if ${ac_cv_path_lt_DD+:} false; then : + $as_echo_n "(cached) " >&6 +else + printf 0123456789abcdef0123456789abcdef >conftest.i +cat conftest.i conftest.i >conftest2.i +: ${lt_DD:=$DD} +if test -z "$lt_DD"; then + ac_path_lt_DD_found=false + # Loop through the user's path and test for each of PROGNAME-LIST + 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_prog in dd; do + for ac_exec_ext in '' $ac_executable_extensions; do + ac_path_lt_DD="$as_dir/$ac_prog$ac_exec_ext" + as_fn_executable_p "$ac_path_lt_DD" || continue +if "$ac_path_lt_DD" bs=32 count=1 conftest.out 2>/dev/null; then + cmp -s conftest.i conftest.out \ + && ac_cv_path_lt_DD="$ac_path_lt_DD" ac_path_lt_DD_found=: +fi + $ac_path_lt_DD_found && break 3 + done + done + done +IFS=$as_save_IFS + if test -z "$ac_cv_path_lt_DD"; then + : + fi +else + ac_cv_path_lt_DD=$lt_DD +fi + +rm -f conftest.i conftest2.i conftest.out +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_lt_DD" >&5 +$as_echo "$ac_cv_path_lt_DD" >&6; } + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to truncate binary pipes" >&5 +$as_echo_n "checking how to truncate binary pipes... " >&6; } +if ${lt_cv_truncate_bin+:} false; then : + $as_echo_n "(cached) " >&6 +else + printf 0123456789abcdef0123456789abcdef >conftest.i +cat conftest.i conftest.i >conftest2.i +lt_cv_truncate_bin= +if "$ac_cv_path_lt_DD" bs=32 count=1 conftest.out 2>/dev/null; then + cmp -s conftest.i conftest.out \ + && lt_cv_truncate_bin="$ac_cv_path_lt_DD bs=4096 count=1" +fi +rm -f conftest.i conftest2.i conftest.out +test -z "$lt_cv_truncate_bin" && lt_cv_truncate_bin="$SED -e 4q" +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_truncate_bin" >&5 +$as_echo "$lt_cv_truncate_bin" >&6; } + + + + + + + +# Calculate cc_basename. Skip known compiler wrappers and cross-prefix. +func_cc_basename () +{ + for cc_temp in $*""; do + case $cc_temp in + compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; + distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; + \-*) ;; + *) break;; + esac + done + func_cc_basename_result=`$ECHO "$cc_temp" | $SED "s%.*/%%; s%^$host_alias-%%"` +} + # Check whether --enable-libtool-lock was given. if test "${enable_libtool_lock+set}" = set; then : enableval=$enable_libtool_lock; fi -test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes +test no = "$enable_libtool_lock" || enable_libtool_lock=yes # Some flags need to be propagated to the compiler or linker for good # libtool support. case $host in ia64-*-hpux*) - # Find out which ABI we are using. + # Find out what ABI is being produced by ac_compile, and set mode + # options accordingly. echo 'int i;' > conftest.$ac_ext if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 (eval $ac_compile) 2>&5 @@ -7672,24 +7867,25 @@ test $ac_status = 0; }; then case `/usr/bin/file conftest.$ac_objext` in *ELF-32*) - HPUX_IA64_MODE="32" + HPUX_IA64_MODE=32 ;; *ELF-64*) - HPUX_IA64_MODE="64" + HPUX_IA64_MODE=64 ;; esac fi rm -rf conftest* ;; *-*-irix6*) - # Find out which ABI we are using. + # Find out what ABI is being produced by ac_compile, and set linker + # options accordingly. echo '#line '$LINENO' "configure"' > conftest.$ac_ext if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 (eval $ac_compile) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then - if test "$lt_cv_prog_gnu_ld" = yes; then + if test yes = "$lt_cv_prog_gnu_ld"; then case `/usr/bin/file conftest.$ac_objext` in *32-bit*) LD="${LD-ld} -melf32bsmip" @@ -7718,9 +7914,50 @@ rm -rf conftest* ;; +mips64*-*linux*) + # Find out what ABI is being produced by ac_compile, and set linker + # options accordingly. + echo '#line '$LINENO' "configure"' > conftest.$ac_ext + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + emul=elf + case `/usr/bin/file conftest.$ac_objext` in + *32-bit*) + emul="${emul}32" + ;; + *64-bit*) + emul="${emul}64" + ;; + esac + case `/usr/bin/file conftest.$ac_objext` in + *MSB*) + emul="${emul}btsmip" + ;; + *LSB*) + emul="${emul}ltsmip" + ;; + esac + case `/usr/bin/file conftest.$ac_objext` in + *N32*) + emul="${emul}n32" + ;; + esac + LD="${LD-ld} -m $emul" + fi + rm -rf conftest* + ;; + x86_64-*kfreebsd*-gnu|x86_64-*linux*|powerpc*-*linux*| \ s390*-*linux*|s390*-*tpf*|sparc*-*linux*) - # Find out which ABI we are using. + # Find out what ABI is being produced by ac_compile, and set linker + # options accordingly. Note that the listed cases only cover the + # situations where additional linker options are needed (such as when + # doing 32-bit compilation for a host where ld defaults to 64-bit, or + # vice versa); the common cases where no linker options are needed do + # not appear in the list. echo 'int i;' > conftest.$ac_ext if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 (eval $ac_compile) 2>&5 @@ -7743,10 +7980,10 @@ ;; esac ;; - powerpc64le-*) + powerpc64le-*linux*) LD="${LD-ld} -m elf32lppclinux" ;; - powerpc64-*) + powerpc64-*linux*) LD="${LD-ld} -m elf32ppclinux" ;; s390x-*linux*) @@ -7765,10 +8002,10 @@ x86_64-*linux*) LD="${LD-ld} -m elf_x86_64" ;; - powerpcle-*) + powerpcle-*linux*) LD="${LD-ld} -m elf64lppc" ;; - powerpc-*) + powerpc-*linux*) LD="${LD-ld} -m elf64ppc" ;; s390*-*linux*|s390*-*tpf*) @@ -7786,7 +8023,7 @@ *-*-sco3.2v5*) # On SCO OpenServer 5, we need -belf to get full-featured binaries. - SAVE_CFLAGS="$CFLAGS" + SAVE_CFLAGS=$CFLAGS CFLAGS="$CFLAGS -belf" { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C compiler needs -belf" >&5 $as_echo_n "checking whether the C compiler needs -belf... " >&6; } @@ -7826,13 +8063,14 @@ fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_cc_needs_belf" >&5 $as_echo "$lt_cv_cc_needs_belf" >&6; } - if test x"$lt_cv_cc_needs_belf" != x"yes"; then + if test yes != "$lt_cv_cc_needs_belf"; then # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf - CFLAGS="$SAVE_CFLAGS" + CFLAGS=$SAVE_CFLAGS fi ;; *-*solaris*) - # Find out which ABI we are using. + # Find out what ABI is being produced by ac_compile, and set linker + # options accordingly. echo 'int i;' > conftest.$ac_ext if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 (eval $ac_compile) 2>&5 @@ -7844,7 +8082,7 @@ case $lt_cv_prog_gnu_ld in yes*) case $host in - i?86-*-solaris*) + i?86-*-solaris*|x86_64-*-solaris*) LD="${LD-ld} -m elf_x86_64" ;; sparc*-*-solaris*) @@ -7853,7 +8091,7 @@ esac # GNU ld 2.21 introduced _sol2 emulations. Use them if available. if ${LD-ld} -V | grep _sol2 >/dev/null 2>&1; then - LD="${LD-ld}_sol2" + LD=${LD-ld}_sol2 fi ;; *) @@ -7869,7 +8107,7 @@ ;; esac -need_locks="$enable_libtool_lock" +need_locks=$enable_libtool_lock if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}mt", so it can be a program name with args. @@ -7980,7 +8218,7 @@ fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_path_mainfest_tool" >&5 $as_echo "$lt_cv_path_mainfest_tool" >&6; } -if test "x$lt_cv_path_mainfest_tool" != xyes; then +if test yes != "$lt_cv_path_mainfest_tool"; then MANIFEST_TOOL=: fi @@ -8483,7 +8721,7 @@ $as_echo_n "(cached) " >&6 else lt_cv_apple_cc_single_mod=no - if test -z "${LT_MULTI_MODULE}"; then + if test -z "$LT_MULTI_MODULE"; then # By default we will add the -single_module flag. You can override # by either setting the environment variable LT_MULTI_MODULE # non-empty at configure time, or by adding -multi_module to the @@ -8501,7 +8739,7 @@ cat conftest.err >&5 # Otherwise, if the output was created with a 0 exit code from # the compiler, it worked. - elif test -f libconftest.dylib && test $_lt_result -eq 0; then + elif test -f libconftest.dylib && test 0 = "$_lt_result"; then lt_cv_apple_cc_single_mod=yes else cat conftest.err >&5 @@ -8540,7 +8778,7 @@ fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext - LDFLAGS="$save_LDFLAGS" + LDFLAGS=$save_LDFLAGS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_exported_symbols_list" >&5 @@ -8569,7 +8807,7 @@ _lt_result=$? if test -s conftest.err && $GREP force_load conftest.err; then cat conftest.err >&5 - elif test -f conftest && test $_lt_result -eq 0 && $GREP forced_load conftest >/dev/null 2>&1 ; then + elif test -f conftest && test 0 = "$_lt_result" && $GREP forced_load conftest >/dev/null 2>&1; then lt_cv_ld_force_load=yes else cat conftest.err >&5 @@ -8582,32 +8820,32 @@ $as_echo "$lt_cv_ld_force_load" >&6; } case $host_os in rhapsody* | darwin1.[012]) - _lt_dar_allow_undefined='${wl}-undefined ${wl}suppress' ;; + _lt_dar_allow_undefined='$wl-undefined ${wl}suppress' ;; darwin1.*) - _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;; + _lt_dar_allow_undefined='$wl-flat_namespace $wl-undefined ${wl}suppress' ;; darwin*) # darwin 5.x on # if running on 10.5 or later, the deployment target defaults # to the OS version, if on x86, and 10.4, the deployment # target defaults to 10.4. Don't you love it? case ${MACOSX_DEPLOYMENT_TARGET-10.0},$host in 10.0,*86*-darwin8*|10.0,*-darwin[91]*) - _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;; - 10.[012]*) - _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;; + _lt_dar_allow_undefined='$wl-undefined ${wl}dynamic_lookup' ;; + 10.[012][,.]*) + _lt_dar_allow_undefined='$wl-flat_namespace $wl-undefined ${wl}suppress' ;; 10.*) - _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;; + _lt_dar_allow_undefined='$wl-undefined ${wl}dynamic_lookup' ;; esac ;; esac - if test "$lt_cv_apple_cc_single_mod" = "yes"; then + if test yes = "$lt_cv_apple_cc_single_mod"; then _lt_dar_single_mod='$single_module' fi - if test "$lt_cv_ld_exported_symbols_list" = "yes"; then - _lt_dar_export_syms=' ${wl}-exported_symbols_list,$output_objdir/${libname}-symbols.expsym' + if test yes = "$lt_cv_ld_exported_symbols_list"; then + _lt_dar_export_syms=' $wl-exported_symbols_list,$output_objdir/$libname-symbols.expsym' else - _lt_dar_export_syms='~$NMEDIT -s $output_objdir/${libname}-symbols.expsym ${lib}' + _lt_dar_export_syms='~$NMEDIT -s $output_objdir/$libname-symbols.expsym $lib' fi - if test "$DSYMUTIL" != ":" && test "$lt_cv_ld_force_load" = "no"; then + if test : != "$DSYMUTIL" && test no = "$lt_cv_ld_force_load"; then _lt_dsymutil='~$DSYMUTIL $lib || :' else _lt_dsymutil= @@ -8615,6 +8853,41 @@ ;; esac +# func_munge_path_list VARIABLE PATH +# ----------------------------------- +# VARIABLE is name of variable containing _space_ separated list of +# directories to be munged by the contents of PATH, which is string +# having a format: +# "DIR[:DIR]:" +# string "DIR[ DIR]" will be prepended to VARIABLE +# ":DIR[:DIR]" +# string "DIR[ DIR]" will be appended to VARIABLE +# "DIRP[:DIRP]::[DIRA:]DIRA" +# string "DIRP[ DIRP]" will be prepended to VARIABLE and string +# "DIRA[ DIRA]" will be appended to VARIABLE +# "DIR[:DIR]" +# VARIABLE will be replaced by "DIR[ DIR]" +func_munge_path_list () +{ + case x$2 in + x) + ;; + *:) + eval $1=\"`$ECHO $2 | $SED 's/:/ /g'` \$$1\" + ;; + x:*) + eval $1=\"\$$1 `$ECHO $2 | $SED 's/:/ /g'`\" + ;; + *::*) + eval $1=\"\$$1\ `$ECHO $2 | $SED -e 's/.*:://' -e 's/:/ /g'`\" + eval $1=\"`$ECHO $2 | $SED -e 's/::.*//' -e 's/:/ /g'`\ \$$1\" + ;; + *) + eval $1=\"`$ECHO $2 | $SED 's/:/ /g'`\" + ;; + esac +} + for ac_header in dlfcn.h do : ac_fn_c_check_header_compile "$LINENO" "dlfcn.h" "ac_cv_header_dlfcn_h" "$ac_includes_default @@ -8949,14 +9222,14 @@ *) enable_shared=no # Look at the argument we got. We use all the common list separators. - lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," + lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR, for pkg in $enableval; do - IFS="$lt_save_ifs" + IFS=$lt_save_ifs if test "X$pkg" = "X$p"; then enable_shared=yes fi done - IFS="$lt_save_ifs" + IFS=$lt_save_ifs ;; esac else @@ -8980,14 +9253,14 @@ *) enable_static=no # Look at the argument we got. We use all the common list separators. - lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," + lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR, for pkg in $enableval; do - IFS="$lt_save_ifs" + IFS=$lt_save_ifs if test "X$pkg" = "X$p"; then enable_static=yes fi done - IFS="$lt_save_ifs" + IFS=$lt_save_ifs ;; esac else @@ -9011,14 +9284,14 @@ *) pic_mode=default # Look at the argument we got. We use all the common list separators. - lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," + lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR, for lt_pkg in $withval; do - IFS="$lt_save_ifs" + IFS=$lt_save_ifs if test "X$lt_pkg" = "X$lt_p"; then pic_mode=yes fi done - IFS="$lt_save_ifs" + IFS=$lt_save_ifs ;; esac else @@ -9026,8 +9299,6 @@ fi -test -z "$pic_mode" && pic_mode=default - @@ -9043,14 +9314,14 @@ *) enable_fast_install=no # Look at the argument we got. We use all the common list separators. - lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," + lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR, for pkg in $enableval; do - IFS="$lt_save_ifs" + IFS=$lt_save_ifs if test "X$pkg" = "X$p"; then enable_fast_install=yes fi done - IFS="$lt_save_ifs" + IFS=$lt_save_ifs ;; esac else @@ -9064,11 +9335,63 @@ + shared_archive_member_spec= +case $host,$enable_shared in +power*-*-aix[5-9]*,yes) + { $as_echo "$as_me:${as_lineno-$LINENO}: checking which variant of shared library versioning to provide" >&5 +$as_echo_n "checking which variant of shared library versioning to provide... " >&6; } + +# Check whether --with-aix-soname was given. +if test "${with_aix_soname+set}" = set; then : + withval=$with_aix_soname; case $withval in + aix|svr4|both) + ;; + *) + as_fn_error $? "Unknown argument to --with-aix-soname" "$LINENO" 5 + ;; + esac + lt_cv_with_aix_soname=$with_aix_soname +else + if ${lt_cv_with_aix_soname+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_with_aix_soname=aix +fi + + with_aix_soname=$lt_cv_with_aix_soname +fi + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $with_aix_soname" >&5 +$as_echo "$with_aix_soname" >&6; } + if test aix != "$with_aix_soname"; then + # For the AIX way of multilib, we name the shared archive member + # based on the bitwidth used, traditionally 'shr.o' or 'shr_64.o', + # and 'shr.imp' or 'shr_64.imp', respectively, for the Import File. + # Even when GNU compilers ignore OBJECT_MODE but need '-maix64' flag, + # the AIX toolchain works better with OBJECT_MODE set (default 32). + if test 64 = "${OBJECT_MODE-32}"; then + shared_archive_member_spec=shr_64 + else + shared_archive_member_spec=shr + fi + fi + ;; +*) + with_aix_soname=aix + ;; +esac + + + + + + + # This can be used to rebuild libtool when needed -LIBTOOL_DEPS="$ltmain" +LIBTOOL_DEPS=$ltmain # Always use our own libtool. LIBTOOL='$(SHELL) $(top_builddir)/libtool' @@ -9117,7 +9440,7 @@ -if test -n "${ZSH_VERSION+set}" ; then +if test -n "${ZSH_VERSION+set}"; then setopt NO_GLOB_SUBST fi @@ -9156,7 +9479,7 @@ # AIX sometimes has problems with the GCC collect2 program. For some # reason, if we set the COLLECT_NAMES environment variable, the problems # vanish in a puff of smoke. - if test "X${COLLECT_NAMES+set}" != Xset; then + if test set != "${COLLECT_NAMES+set}"; then COLLECT_NAMES= export COLLECT_NAMES fi @@ -9167,14 +9490,14 @@ ofile=libtool can_build_shared=yes -# All known linkers require a `.a' archive for static linking (except MSVC, +# All known linkers require a '.a' archive for static linking (except MSVC, # which needs '.lib'). libext=a -with_gnu_ld="$lt_cv_prog_gnu_ld" +with_gnu_ld=$lt_cv_prog_gnu_ld -old_CC="$CC" -old_CFLAGS="$CFLAGS" +old_CC=$CC +old_CFLAGS=$CFLAGS # Set sane defaults for various variables test -z "$CC" && CC=cc @@ -9183,15 +9506,8 @@ test -z "$LD" && LD=ld test -z "$ac_objext" && ac_objext=o -for cc_temp in $compiler""; do - case $cc_temp in - compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; - distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; - \-*) ;; - *) break;; - esac -done -cc_basename=`$ECHO "$cc_temp" | $SED "s%.*/%%; s%^$host_alias-%%"` +func_cc_basename $compiler +cc_basename=$func_cc_basename_result # Only perform the check for file, if the check method requires it @@ -9206,22 +9522,22 @@ else case $MAGIC_CMD in [\\/*] | ?:[\\/]*) - lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path. + lt_cv_path_MAGIC_CMD=$MAGIC_CMD # Let the user override the test with a path. ;; *) - lt_save_MAGIC_CMD="$MAGIC_CMD" - lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR + lt_save_MAGIC_CMD=$MAGIC_CMD + lt_save_ifs=$IFS; IFS=$PATH_SEPARATOR ac_dummy="/usr/bin$PATH_SEPARATOR$PATH" for ac_dir in $ac_dummy; do - IFS="$lt_save_ifs" + IFS=$lt_save_ifs test -z "$ac_dir" && ac_dir=. - if test -f $ac_dir/${ac_tool_prefix}file; then - lt_cv_path_MAGIC_CMD="$ac_dir/${ac_tool_prefix}file" + if test -f "$ac_dir/${ac_tool_prefix}file"; then + lt_cv_path_MAGIC_CMD=$ac_dir/"${ac_tool_prefix}file" if test -n "$file_magic_test_file"; then case $deplibs_check_method in "file_magic "*) file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"` - MAGIC_CMD="$lt_cv_path_MAGIC_CMD" + MAGIC_CMD=$lt_cv_path_MAGIC_CMD if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | $EGREP "$file_magic_regex" > /dev/null; then : @@ -9244,13 +9560,13 @@ break fi done - IFS="$lt_save_ifs" - MAGIC_CMD="$lt_save_MAGIC_CMD" + IFS=$lt_save_ifs + MAGIC_CMD=$lt_save_MAGIC_CMD ;; esac fi -MAGIC_CMD="$lt_cv_path_MAGIC_CMD" +MAGIC_CMD=$lt_cv_path_MAGIC_CMD if test -n "$MAGIC_CMD"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MAGIC_CMD" >&5 $as_echo "$MAGIC_CMD" >&6; } @@ -9272,22 +9588,22 @@ else case $MAGIC_CMD in [\\/*] | ?:[\\/]*) - lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path. + lt_cv_path_MAGIC_CMD=$MAGIC_CMD # Let the user override the test with a path. ;; *) - lt_save_MAGIC_CMD="$MAGIC_CMD" - lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR + lt_save_MAGIC_CMD=$MAGIC_CMD + lt_save_ifs=$IFS; IFS=$PATH_SEPARATOR ac_dummy="/usr/bin$PATH_SEPARATOR$PATH" for ac_dir in $ac_dummy; do - IFS="$lt_save_ifs" + IFS=$lt_save_ifs test -z "$ac_dir" && ac_dir=. - if test -f $ac_dir/file; then - lt_cv_path_MAGIC_CMD="$ac_dir/file" + if test -f "$ac_dir/file"; then + lt_cv_path_MAGIC_CMD=$ac_dir/"file" if test -n "$file_magic_test_file"; then case $deplibs_check_method in "file_magic "*) file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"` - MAGIC_CMD="$lt_cv_path_MAGIC_CMD" + MAGIC_CMD=$lt_cv_path_MAGIC_CMD if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | $EGREP "$file_magic_regex" > /dev/null; then : @@ -9310,13 +9626,13 @@ break fi done - IFS="$lt_save_ifs" - MAGIC_CMD="$lt_save_MAGIC_CMD" + IFS=$lt_save_ifs + MAGIC_CMD=$lt_save_MAGIC_CMD ;; esac fi -MAGIC_CMD="$lt_cv_path_MAGIC_CMD" +MAGIC_CMD=$lt_cv_path_MAGIC_CMD if test -n "$MAGIC_CMD"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MAGIC_CMD" >&5 $as_echo "$MAGIC_CMD" >&6; } @@ -9337,7 +9653,7 @@ # Use C for the default configuration in the libtool script -lt_save_CC="$CC" +lt_save_CC=$CC ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' @@ -9399,7 +9715,7 @@ lt_prog_compiler_no_builtin_flag= -if test "$GCC" = yes; then +if test yes = "$GCC"; then case $cc_basename in nvcc*) lt_prog_compiler_no_builtin_flag=' -Xcompiler -fno-builtin' ;; @@ -9415,7 +9731,7 @@ lt_cv_prog_compiler_rtti_exceptions=no ac_outfile=conftest.$ac_objext echo "$lt_simple_compile_test_code" > conftest.$ac_ext - lt_compiler_flag="-fno-rtti -fno-exceptions" + lt_compiler_flag="-fno-rtti -fno-exceptions" ## exclude from sc_useless_quotes_in_assignment # Insert the option either (1) after the last *FLAGS variable, or # (2) before a word containing "conftest.", or (3) at the end. # Note that $ac_compile itself does not contain backslashes and begins @@ -9445,7 +9761,7 @@ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_rtti_exceptions" >&5 $as_echo "$lt_cv_prog_compiler_rtti_exceptions" >&6; } -if test x"$lt_cv_prog_compiler_rtti_exceptions" = xyes; then +if test yes = "$lt_cv_prog_compiler_rtti_exceptions"; then lt_prog_compiler_no_builtin_flag="$lt_prog_compiler_no_builtin_flag -fno-rtti -fno-exceptions" else : @@ -9463,17 +9779,18 @@ lt_prog_compiler_static= - if test "$GCC" = yes; then + if test yes = "$GCC"; then lt_prog_compiler_wl='-Wl,' lt_prog_compiler_static='-static' case $host_os in aix*) # All AIX code is PIC. - if test "$host_cpu" = ia64; then + if test ia64 = "$host_cpu"; then # AIX 5 now supports IA64 processor lt_prog_compiler_static='-Bstatic' fi + lt_prog_compiler_pic='-fPIC' ;; amigaos*) @@ -9484,8 +9801,8 @@ ;; m68k) # FIXME: we need at least 68020 code to build shared libraries, but - # adding the `-m68020' flag to GCC prevents building anything better, - # like `-m68040'. + # adding the '-m68020' flag to GCC prevents building anything better, + # like '-m68040'. lt_prog_compiler_pic='-m68020 -resident32 -malways-restore-a4' ;; esac @@ -9501,6 +9818,11 @@ # Although the cygwin gcc ignores -fPIC, still need this for old-style # (--disable-auto-import) libraries lt_prog_compiler_pic='-DDLL_EXPORT' + case $host_os in + os2*) + lt_prog_compiler_static='$wl-static' + ;; + esac ;; darwin* | rhapsody*) @@ -9571,7 +9893,7 @@ case $host_os in aix*) lt_prog_compiler_wl='-Wl,' - if test "$host_cpu" = ia64; then + if test ia64 = "$host_cpu"; then # AIX 5 now supports IA64 processor lt_prog_compiler_static='-Bstatic' else @@ -9579,10 +9901,29 @@ fi ;; + darwin* | rhapsody*) + # PIC is the default on this platform + # Common symbols not allowed in MH_DYLIB files + lt_prog_compiler_pic='-fno-common' + case $cc_basename in + nagfor*) + # NAG Fortran compiler + lt_prog_compiler_wl='-Wl,-Wl,,' + lt_prog_compiler_pic='-PIC' + lt_prog_compiler_static='-Bstatic' + ;; + esac + ;; + mingw* | cygwin* | pw32* | os2* | cegcc*) # This hack is so that the source file can tell whether it is being # built for inclusion in a dll (and should export symbols for example). lt_prog_compiler_pic='-DDLL_EXPORT' + case $host_os in + os2*) + lt_prog_compiler_static='$wl-static' + ;; + esac ;; hpux9* | hpux10* | hpux11*) @@ -9598,7 +9939,7 @@ ;; esac # Is there a better lt_prog_compiler_static that works with the bundled CC? - lt_prog_compiler_static='${wl}-a ${wl}archive' + lt_prog_compiler_static='$wl-a ${wl}archive' ;; irix5* | irix6* | nonstopux*) @@ -9609,7 +9950,7 @@ linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) case $cc_basename in - # old Intel for x86_64 which still supported -KPIC. + # old Intel for x86_64, which still supported -KPIC. ecc*) lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='-KPIC' @@ -9634,6 +9975,12 @@ lt_prog_compiler_pic='-PIC' lt_prog_compiler_static='-Bstatic' ;; + tcc*) + # Fabrice Bellard et al's Tiny C Compiler + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_pic='-fPIC' + lt_prog_compiler_static='-static' + ;; pgcc* | pgf77* | pgf90* | pgf95* | pgfortran*) # Portland Group compilers (*not* the Pentium gcc compiler, # which looks to be a dead project) @@ -9731,7 +10078,7 @@ ;; sysv4*MP*) - if test -d /usr/nec ;then + if test -d /usr/nec; then lt_prog_compiler_pic='-Kconform_pic' lt_prog_compiler_static='-Bstatic' fi @@ -9760,7 +10107,7 @@ fi case $host_os in - # For platforms which do not support PIC, -DPIC is meaningless: + # For platforms that do not support PIC, -DPIC is meaningless: *djgpp*) lt_prog_compiler_pic= ;; @@ -9792,7 +10139,7 @@ lt_cv_prog_compiler_pic_works=no ac_outfile=conftest.$ac_objext echo "$lt_simple_compile_test_code" > conftest.$ac_ext - lt_compiler_flag="$lt_prog_compiler_pic -DPIC" + lt_compiler_flag="$lt_prog_compiler_pic -DPIC" ## exclude from sc_useless_quotes_in_assignment # Insert the option either (1) after the last *FLAGS variable, or # (2) before a word containing "conftest.", or (3) at the end. # Note that $ac_compile itself does not contain backslashes and begins @@ -9822,7 +10169,7 @@ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic_works" >&5 $as_echo "$lt_cv_prog_compiler_pic_works" >&6; } -if test x"$lt_cv_prog_compiler_pic_works" = xyes; then +if test yes = "$lt_cv_prog_compiler_pic_works"; then case $lt_prog_compiler_pic in "" | " "*) ;; *) lt_prog_compiler_pic=" $lt_prog_compiler_pic" ;; @@ -9854,7 +10201,7 @@ $as_echo_n "(cached) " >&6 else lt_cv_prog_compiler_static_works=no - save_LDFLAGS="$LDFLAGS" + save_LDFLAGS=$LDFLAGS LDFLAGS="$LDFLAGS $lt_tmp_static_flag" echo "$lt_simple_link_test_code" > conftest.$ac_ext if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then @@ -9873,13 +10220,13 @@ fi fi $RM -r conftest* - LDFLAGS="$save_LDFLAGS" + LDFLAGS=$save_LDFLAGS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_static_works" >&5 $as_echo "$lt_cv_prog_compiler_static_works" >&6; } -if test x"$lt_cv_prog_compiler_static_works" = xyes; then +if test yes = "$lt_cv_prog_compiler_static_works"; then : else lt_prog_compiler_static= @@ -9999,8 +10346,8 @@ -hard_links="nottested" -if test "$lt_cv_prog_compiler_c_o" = no && test "$need_locks" != no; then +hard_links=nottested +if test no = "$lt_cv_prog_compiler_c_o" && test no != "$need_locks"; then # do not overwrite the value of need_locks provided by the user { $as_echo "$as_me:${as_lineno-$LINENO}: checking if we can lock with hard links" >&5 $as_echo_n "checking if we can lock with hard links... " >&6; } @@ -10012,9 +10359,9 @@ ln conftest.a conftest.b 2>/dev/null && hard_links=no { $as_echo "$as_me:${as_lineno-$LINENO}: result: $hard_links" >&5 $as_echo "$hard_links" >&6; } - if test "$hard_links" = no; then - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5 -$as_echo "$as_me: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2;} + if test no = "$hard_links"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: '$CC' does not support '-c -o', so 'make -j' may be unsafe" >&5 +$as_echo "$as_me: WARNING: '$CC' does not support '-c -o', so 'make -j' may be unsafe" >&2;} need_locks=warn fi else @@ -10057,9 +10404,9 @@ # included in the symbol list include_expsyms= # exclude_expsyms can be an extended regexp of symbols to exclude - # it will be wrapped by ` (' and `)$', so one must not match beginning or - # end of line. Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc', - # as well as any symbol that contains `d'. + # it will be wrapped by ' (' and ')$', so one must not match beginning or + # end of line. Example: 'a|bc|.*d.*' will exclude the symbols 'a' and 'bc', + # as well as any symbol that contains 'd'. exclude_expsyms='_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*' # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out # platforms (ab)use it in PIC code, but their linkers get confused if @@ -10074,7 +10421,7 @@ # FIXME: the MSVC++ port hasn't been tested in a loooong time # When not using gcc, we currently assume that we are using # Microsoft Visual C++. - if test "$GCC" != yes; then + if test yes != "$GCC"; then with_gnu_ld=no fi ;; @@ -10082,7 +10429,7 @@ # we just hope/assume this is gcc and not c89 (= MSVC++) with_gnu_ld=yes ;; - openbsd*) + openbsd* | bitrig*) with_gnu_ld=no ;; linux* | k*bsd*-gnu | gnu*) @@ -10095,7 +10442,7 @@ # On some targets, GNU ld is compatible enough with the native linker # that we're better off using the native interface for both. lt_use_gnu_ld_interface=no - if test "$with_gnu_ld" = yes; then + if test yes = "$with_gnu_ld"; then case $host_os in aix*) # The AIX port of GNU ld has always aspired to compatibility @@ -10117,24 +10464,24 @@ esac fi - if test "$lt_use_gnu_ld_interface" = yes; then + if test yes = "$lt_use_gnu_ld_interface"; then # If archive_cmds runs LD, not CC, wlarc should be empty - wlarc='${wl}' + wlarc='$wl' # Set some defaults for GNU ld with shared library support. These # are reset later if shared libraries are not supported. Putting them # here allows them to be overridden if necessary. runpath_var=LD_RUN_PATH - hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' - export_dynamic_flag_spec='${wl}--export-dynamic' + hardcode_libdir_flag_spec='$wl-rpath $wl$libdir' + export_dynamic_flag_spec='$wl--export-dynamic' # ancient GNU ld didn't support --whole-archive et. al. if $LD --help 2>&1 | $GREP 'no-whole-archive' > /dev/null; then - whole_archive_flag_spec="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' + whole_archive_flag_spec=$wlarc'--whole-archive$convenience '$wlarc'--no-whole-archive' else whole_archive_flag_spec= fi supports_anon_versioning=no - case `$LD -v 2>&1` in + case `$LD -v | $SED -e 's/(^)\+)\s\+//' 2>&1` in *GNU\ gold*) supports_anon_versioning=yes ;; *\ [01].* | *\ 2.[0-9].* | *\ 2.10.*) ;; # catch versions < 2.11 *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ... @@ -10147,7 +10494,7 @@ case $host_os in aix[3-9]*) # On AIX/PPC, the GNU linker is very broken - if test "$host_cpu" != ia64; then + if test ia64 != "$host_cpu"; then ld_shlibs=no cat <<_LT_EOF 1>&2 @@ -10166,7 +10513,7 @@ case $host_cpu in powerpc) # see comment about AmigaOS4 .so support - archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' archive_expsym_cmds='' ;; m68k) @@ -10182,7 +10529,7 @@ allow_undefined_flag=unsupported # Joseph Beckenbach says some releases of gcc # support --undefined. This deserves some investigation. FIXME - archive_cmds='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + archive_cmds='$CC -nostart $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' else ld_shlibs=no fi @@ -10192,7 +10539,7 @@ # _LT_TAGVAR(hardcode_libdir_flag_spec, ) is actually meaningless, # as there is no search path for DLLs. hardcode_libdir_flag_spec='-L$libdir' - export_dynamic_flag_spec='${wl}--export-all-symbols' + export_dynamic_flag_spec='$wl--export-all-symbols' allow_undefined_flag=unsupported always_export_symbols=no enable_shared_with_static_runtimes=yes @@ -10200,61 +10547,89 @@ exclude_expsyms='[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname' if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then - archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' - # If the export-symbols file already is a .def file (1st line - # is EXPORTS), use it as is; otherwise, prepend... - archive_expsym_cmds='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then - cp $export_symbols $output_objdir/$soname.def; - else - echo EXPORTS > $output_objdir/$soname.def; - cat $export_symbols >> $output_objdir/$soname.def; - fi~ - $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' + archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname $wl--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' + # If the export-symbols file already is a .def file, use it as + # is; otherwise, prepend EXPORTS... + archive_expsym_cmds='if test DEF = "`$SED -n -e '\''s/^[ ]*//'\'' -e '\''/^\(;.*\)*$/d'\'' -e '\''s/^\(EXPORTS\|LIBRARY\)\([ ].*\)*$/DEF/p'\'' -e q $export_symbols`" ; then + cp $export_symbols $output_objdir/$soname.def; + else + echo EXPORTS > $output_objdir/$soname.def; + cat $export_symbols >> $output_objdir/$soname.def; + fi~ + $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname $wl--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' else ld_shlibs=no fi ;; haiku*) - archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' link_all_deplibs=yes ;; + os2*) + hardcode_libdir_flag_spec='-L$libdir' + hardcode_minus_L=yes + allow_undefined_flag=unsupported + shrext_cmds=.dll + archive_cmds='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~ + $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~ + $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~ + $ECHO EXPORTS >> $output_objdir/$libname.def~ + emxexp $libobjs | $SED /"_DLL_InitTerm"/d >> $output_objdir/$libname.def~ + $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ + emximp -o $lib $output_objdir/$libname.def' + archive_expsym_cmds='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~ + $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~ + $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~ + $ECHO EXPORTS >> $output_objdir/$libname.def~ + prefix_cmds="$SED"~ + if test EXPORTS = "`$SED 1q $export_symbols`"; then + prefix_cmds="$prefix_cmds -e 1d"; + fi~ + prefix_cmds="$prefix_cmds -e \"s/^\(.*\)$/_\1/g\""~ + cat $export_symbols | $prefix_cmds >> $output_objdir/$libname.def~ + $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ + emximp -o $lib $output_objdir/$libname.def' + old_archive_From_new_cmds='emximp -o $output_objdir/${libname}_dll.a $output_objdir/$libname.def' + enable_shared_with_static_runtimes=yes + ;; + interix[3-9]*) hardcode_direct=no hardcode_shlibpath_var=no - hardcode_libdir_flag_spec='${wl}-rpath,$libdir' - export_dynamic_flag_spec='${wl}-E' + hardcode_libdir_flag_spec='$wl-rpath,$libdir' + export_dynamic_flag_spec='$wl-E' # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. # Instead, shared libraries are loaded at an image base (0x10000000 by # default) and relocated if they conflict, which is a slow very memory # consuming and fragmenting process. To avoid this, we pick a random, # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link # time. Moving up from 0x10000000 also allows more sbrk(2) space. - archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' - archive_expsym_cmds='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' + archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-h,$soname $wl--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' + archive_expsym_cmds='sed "s|^|_|" $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-h,$soname $wl--retain-symbols-file,$output_objdir/$soname.expsym $wl--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' ;; gnu* | linux* | tpf* | k*bsd*-gnu | kopensolaris*-gnu) tmp_diet=no - if test "$host_os" = linux-dietlibc; then + if test linux-dietlibc = "$host_os"; then case $cc_basename in diet\ *) tmp_diet=yes;; # linux-dietlibc with static linking (!diet-dyn) esac fi if $LD --help 2>&1 | $EGREP ': supported targets:.* elf' > /dev/null \ - && test "$tmp_diet" = no + && test no = "$tmp_diet" then tmp_addflag=' $pic_flag' tmp_sharedflag='-shared' case $cc_basename,$host_cpu in pgcc*) # Portland Group C compiler - whole_archive_flag_spec='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' + whole_archive_flag_spec='$wl--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' tmp_addflag=' $pic_flag' ;; pgf77* | pgf90* | pgf95* | pgfortran*) # Portland Group f77 and f90 compilers - whole_archive_flag_spec='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' + whole_archive_flag_spec='$wl--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' tmp_addflag=' $pic_flag -Mnomain' ;; ecc*,ia64* | icc*,ia64*) # Intel C compiler on ia64 tmp_addflag=' -i_dynamic' ;; @@ -10265,42 +10640,47 @@ lf95*) # Lahey Fortran 8.1 whole_archive_flag_spec= tmp_sharedflag='--shared' ;; + nagfor*) # NAGFOR 5.3 + tmp_sharedflag='-Wl,-shared' ;; xl[cC]* | bgxl[cC]* | mpixl[cC]*) # IBM XL C 8.0 on PPC (deal with xlf below) tmp_sharedflag='-qmkshrobj' tmp_addflag= ;; nvcc*) # Cuda Compiler Driver 2.2 - whole_archive_flag_spec='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' + whole_archive_flag_spec='$wl--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' compiler_needs_object=yes ;; esac case `$CC -V 2>&1 | sed 5q` in *Sun\ C*) # Sun C 5.9 - whole_archive_flag_spec='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' + whole_archive_flag_spec='$wl--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' compiler_needs_object=yes tmp_sharedflag='-G' ;; *Sun\ F*) # Sun Fortran 8.3 tmp_sharedflag='-G' ;; esac - archive_cmds='$CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + archive_cmds='$CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' - if test "x$supports_anon_versioning" = xyes; then + if test yes = "$supports_anon_versioning"; then archive_expsym_cmds='echo "{ global:" > $output_objdir/$libname.ver~ - cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ - echo "local: *; };" >> $output_objdir/$libname.ver~ - $CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib' + cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ + echo "local: *; };" >> $output_objdir/$libname.ver~ + $CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-version-script $wl$output_objdir/$libname.ver -o $lib' fi case $cc_basename in + tcc*) + export_dynamic_flag_spec='-rdynamic' + ;; xlf* | bgf* | bgxlf* | mpixlf*) # IBM XL Fortran 10.1 on PPC cannot create shared libs itself whole_archive_flag_spec='--whole-archive$convenience --no-whole-archive' - hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' + hardcode_libdir_flag_spec='$wl-rpath $wl$libdir' archive_cmds='$LD -shared $libobjs $deplibs $linker_flags -soname $soname -o $lib' - if test "x$supports_anon_versioning" = xyes; then + if test yes = "$supports_anon_versioning"; then archive_expsym_cmds='echo "{ global:" > $output_objdir/$libname.ver~ - cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ - echo "local: *; };" >> $output_objdir/$libname.ver~ - $LD -shared $libobjs $deplibs $linker_flags -soname $soname -version-script $output_objdir/$libname.ver -o $lib' + cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ + echo "local: *; };" >> $output_objdir/$libname.ver~ + $LD -shared $libobjs $deplibs $linker_flags -soname $soname -version-script $output_objdir/$libname.ver -o $lib' fi ;; esac @@ -10314,8 +10694,8 @@ archive_cmds='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib' wlarc= else - archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' + archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' fi ;; @@ -10333,8 +10713,8 @@ _LT_EOF elif $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then - archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' + archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' else ld_shlibs=no fi @@ -10346,7 +10726,7 @@ ld_shlibs=no cat <<_LT_EOF 1>&2 -*** Warning: Releases of the GNU linker prior to 2.16.91.0.3 can not +*** Warning: Releases of the GNU linker prior to 2.16.91.0.3 cannot *** reliably create shared libraries on SCO systems. Therefore, libtool *** is disabling shared libraries support. We urge you to upgrade GNU *** binutils to release 2.16.91.0.3 or newer. Another option is to modify @@ -10361,9 +10741,9 @@ # DT_RUNPATH tag from executables and libraries. But doing so # requires that you compile everything twice, which is a pain. if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then - hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' - archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + hardcode_libdir_flag_spec='$wl-rpath $wl$libdir' + archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' + archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' else ld_shlibs=no fi @@ -10380,15 +10760,15 @@ *) if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then - archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' + archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' else ld_shlibs=no fi ;; esac - if test "$ld_shlibs" = no; then + if test no = "$ld_shlibs"; then runpath_var= hardcode_libdir_flag_spec= export_dynamic_flag_spec= @@ -10404,7 +10784,7 @@ # Note: this linker hardcodes the directories in LIBPATH if there # are no directories specified by -L. hardcode_minus_L=yes - if test "$GCC" = yes && test -z "$lt_prog_compiler_static"; then + if test yes = "$GCC" && test -z "$lt_prog_compiler_static"; then # Neither direct hardcoding nor static linking is supported with a # broken collect2. hardcode_direct=unsupported @@ -10412,34 +10792,57 @@ ;; aix[4-9]*) - if test "$host_cpu" = ia64; then + if test ia64 = "$host_cpu"; then # On IA64, the linker does run time linking by default, so we don't # have to do anything special. aix_use_runtimelinking=no exp_sym_flag='-Bexport' - no_entry_flag="" + no_entry_flag= else # If we're using GNU nm, then we don't want the "-C" option. - # -C means demangle to AIX nm, but means don't demangle with GNU nm - # Also, AIX nm treats weak defined symbols like other global - # defined symbols, whereas GNU nm marks them as "W". + # -C means demangle to GNU nm, but means don't demangle to AIX nm. + # Without the "-l" option, or with the "-B" option, AIX nm treats + # weak defined symbols like other global defined symbols, whereas + # GNU nm marks them as "W". + # While the 'weak' keyword is ignored in the Export File, we need + # it in the Import File for the 'aix-soname' feature, so we have + # to replace the "-B" option with "-P" for AIX nm. if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then - export_symbols_cmds='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W")) && (substr(\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' + export_symbols_cmds='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W")) && (substr(\$ 3,1,1) != ".")) { if (\$ 2 == "W") { print \$ 3 " weak" } else { print \$ 3 } } }'\'' | sort -u > $export_symbols' else - export_symbols_cmds='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && (substr(\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' + export_symbols_cmds='`func_echo_all $NM | $SED -e '\''s/B\([^B]*\)$/P\1/'\''` -PCpgl $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W") || (\$ 2 == "V") || (\$ 2 == "Z")) && (substr(\$ 1,1,1) != ".")) { if ((\$ 2 == "W") || (\$ 2 == "V") || (\$ 2 == "Z")) { print \$ 1 " weak" } else { print \$ 1 } } }'\'' | sort -u > $export_symbols' fi aix_use_runtimelinking=no # Test if we are trying to use run time linking or normal # AIX style linking. If -brtl is somewhere in LDFLAGS, we - # need to do runtime linking. + # have runtime linking enabled, and use it for executables. + # For shared libraries, we enable/disable runtime linking + # depending on the kind of the shared library created - + # when "with_aix_soname,aix_use_runtimelinking" is: + # "aix,no" lib.a(lib.so.V) shared, rtl:no, for executables + # "aix,yes" lib.so shared, rtl:yes, for executables + # lib.a static archive + # "both,no" lib.so.V(shr.o) shared, rtl:yes + # lib.a(lib.so.V) shared, rtl:no, for executables + # "both,yes" lib.so.V(shr.o) shared, rtl:yes, for executables + # lib.a(lib.so.V) shared, rtl:no + # "svr4,*" lib.so.V(shr.o) shared, rtl:yes, for executables + # lib.a static archive case $host_os in aix4.[23]|aix4.[23].*|aix[5-9]*) for ld_flag in $LDFLAGS; do - if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then + if (test x-brtl = "x$ld_flag" || test x-Wl,-brtl = "x$ld_flag"); then aix_use_runtimelinking=yes break fi done + if test svr4,no = "$with_aix_soname,$aix_use_runtimelinking"; then + # With aix-soname=svr4, we create the lib.so.V shared archives only, + # so we don't have lib.a shared libs to link our executables. + # We have to force runtime linking in this case. + aix_use_runtimelinking=yes + LDFLAGS="$LDFLAGS -Wl,-brtl" + fi ;; esac @@ -10458,13 +10861,21 @@ hardcode_direct_absolute=yes hardcode_libdir_separator=':' link_all_deplibs=yes - file_list_spec='${wl}-f,' + file_list_spec='$wl-f,' + case $with_aix_soname,$aix_use_runtimelinking in + aix,*) ;; # traditional, no import file + svr4,* | *,yes) # use import file + # The Import File defines what to hardcode. + hardcode_direct=no + hardcode_direct_absolute=no + ;; + esac - if test "$GCC" = yes; then + if test yes = "$GCC"; then case $host_os in aix4.[012]|aix4.[012].*) # We only want to do this on AIX 4.2 and lower, the check # below for broken collect2 doesn't work under 4.3+ - collect2name=`${CC} -print-prog-name=collect2` + collect2name=`$CC -print-prog-name=collect2` if test -f "$collect2name" && strings "$collect2name" | $GREP resolve_lib_name >/dev/null then @@ -10483,36 +10894,42 @@ ;; esac shared_flag='-shared' - if test "$aix_use_runtimelinking" = yes; then - shared_flag="$shared_flag "'${wl}-G' + if test yes = "$aix_use_runtimelinking"; then + shared_flag="$shared_flag "'$wl-G' fi - link_all_deplibs=no + # Need to ensure runtime linking is disabled for the traditional + # shared library, or the linker may eventually find shared libraries + # /with/ Import File - we do not want to mix them. + shared_flag_aix='-shared' + shared_flag_svr4='-shared $wl-G' else # not using gcc - if test "$host_cpu" = ia64; then + if test ia64 = "$host_cpu"; then # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release # chokes on -Wl,-G. The following line is correct: shared_flag='-G' else - if test "$aix_use_runtimelinking" = yes; then - shared_flag='${wl}-G' + if test yes = "$aix_use_runtimelinking"; then + shared_flag='$wl-G' else - shared_flag='${wl}-bM:SRE' + shared_flag='$wl-bM:SRE' fi + shared_flag_aix='$wl-bM:SRE' + shared_flag_svr4='$wl-G' fi fi - export_dynamic_flag_spec='${wl}-bexpall' + export_dynamic_flag_spec='$wl-bexpall' # It seems that -bexpall does not export symbols beginning with # underscore (_), so it is better to generate a list of symbols to export. always_export_symbols=yes - if test "$aix_use_runtimelinking" = yes; then + if test aix,yes = "$with_aix_soname,$aix_use_runtimelinking"; then # Warning - without using the other runtime loading flags (-brtl), # -berok will link without error, but may produce a broken library. allow_undefined_flag='-berok' # Determine the default libpath from the value encoded in an # empty executable. - if test "${lt_cv_aix_libpath+set}" = set; then + if test set = "${lt_cv_aix_libpath+set}"; then aix_libpath=$lt_cv_aix_libpath else if ${lt_cv_aix_libpath_+:} false; then : @@ -10547,7 +10964,7 @@ rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext if test -z "$lt_cv_aix_libpath_"; then - lt_cv_aix_libpath_="/usr/lib:/lib" + lt_cv_aix_libpath_=/usr/lib:/lib fi fi @@ -10555,17 +10972,17 @@ aix_libpath=$lt_cv_aix_libpath_ fi - hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath" - archive_expsym_cmds='$CC -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then func_echo_all "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag" + hardcode_libdir_flag_spec='$wl-blibpath:$libdir:'"$aix_libpath" + archive_expsym_cmds='$CC -o $output_objdir/$soname $libobjs $deplibs $wl'$no_entry_flag' $compiler_flags `if test -n "$allow_undefined_flag"; then func_echo_all "$wl$allow_undefined_flag"; else :; fi` $wl'$exp_sym_flag:\$export_symbols' '$shared_flag else - if test "$host_cpu" = ia64; then - hardcode_libdir_flag_spec='${wl}-R $libdir:/usr/lib:/lib' + if test ia64 = "$host_cpu"; then + hardcode_libdir_flag_spec='$wl-R $libdir:/usr/lib:/lib' allow_undefined_flag="-z nodefs" - archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols" + archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\$wl$no_entry_flag"' $compiler_flags $wl$allow_undefined_flag '"\$wl$exp_sym_flag:\$export_symbols" else # Determine the default libpath from the value encoded in an # empty executable. - if test "${lt_cv_aix_libpath+set}" = set; then + if test set = "${lt_cv_aix_libpath+set}"; then aix_libpath=$lt_cv_aix_libpath else if ${lt_cv_aix_libpath_+:} false; then : @@ -10600,7 +11017,7 @@ rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext if test -z "$lt_cv_aix_libpath_"; then - lt_cv_aix_libpath_="/usr/lib:/lib" + lt_cv_aix_libpath_=/usr/lib:/lib fi fi @@ -10608,21 +11025,33 @@ aix_libpath=$lt_cv_aix_libpath_ fi - hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath" + hardcode_libdir_flag_spec='$wl-blibpath:$libdir:'"$aix_libpath" # Warning - without using the other run time loading flags, # -berok will link without error, but may produce a broken library. - no_undefined_flag=' ${wl}-bernotok' - allow_undefined_flag=' ${wl}-berok' - if test "$with_gnu_ld" = yes; then + no_undefined_flag=' $wl-bernotok' + allow_undefined_flag=' $wl-berok' + if test yes = "$with_gnu_ld"; then # We only use this code for GNU lds that support --whole-archive. - whole_archive_flag_spec='${wl}--whole-archive$convenience ${wl}--no-whole-archive' + whole_archive_flag_spec='$wl--whole-archive$convenience $wl--no-whole-archive' else # Exported symbols can be pulled into shared objects from archives whole_archive_flag_spec='$convenience' fi archive_cmds_need_lc=yes - # This is similar to how AIX traditionally builds its shared libraries. - archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' + archive_expsym_cmds='$RM -r $output_objdir/$realname.d~$MKDIR $output_objdir/$realname.d' + # -brtl affects multiple linker settings, -berok does not and is overridden later + compiler_flags_filtered='`func_echo_all "$compiler_flags " | $SED -e "s%-brtl\\([, ]\\)%-berok\\1%g"`' + if test svr4 != "$with_aix_soname"; then + # This is similar to how AIX traditionally builds its shared libraries. + archive_expsym_cmds="$archive_expsym_cmds"'~$CC '$shared_flag_aix' -o $output_objdir/$realname.d/$soname $libobjs $deplibs $wl-bnoentry '$compiler_flags_filtered'$wl-bE:$export_symbols$allow_undefined_flag~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$realname.d/$soname' + fi + if test aix != "$with_aix_soname"; then + archive_expsym_cmds="$archive_expsym_cmds"'~$CC '$shared_flag_svr4' -o $output_objdir/$realname.d/$shared_archive_member_spec.o $libobjs $deplibs $wl-bnoentry '$compiler_flags_filtered'$wl-bE:$export_symbols$allow_undefined_flag~$STRIP -e $output_objdir/$realname.d/$shared_archive_member_spec.o~( func_echo_all "#! $soname($shared_archive_member_spec.o)"; if test shr_64 = "$shared_archive_member_spec"; then func_echo_all "# 64"; else func_echo_all "# 32"; fi; cat $export_symbols ) > $output_objdir/$realname.d/$shared_archive_member_spec.imp~$AR $AR_FLAGS $output_objdir/$soname $output_objdir/$realname.d/$shared_archive_member_spec.o $output_objdir/$realname.d/$shared_archive_member_spec.imp' + else + # used by -dlpreopen to get the symbols + archive_expsym_cmds="$archive_expsym_cmds"'~$MV $output_objdir/$realname.d/$soname $output_objdir' + fi + archive_expsym_cmds="$archive_expsym_cmds"'~$RM -r $output_objdir/$realname.d' fi fi ;; @@ -10631,7 +11060,7 @@ case $host_cpu in powerpc) # see comment about AmigaOS4 .so support - archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' archive_expsym_cmds='' ;; m68k) @@ -10661,16 +11090,17 @@ # Tell ltmain to make .lib files, not .a files. libext=lib # Tell ltmain to make .dll files, not .so files. - shrext_cmds=".dll" + shrext_cmds=.dll # FIXME: Setting linknames here is a bad hack. - archive_cmds='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-dll~linknames=' - archive_expsym_cmds='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then - sed -n -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' -e '1\\\!p' < $export_symbols > $output_objdir/$soname.exp; - else - sed -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' < $export_symbols > $output_objdir/$soname.exp; - fi~ - $CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~ - linknames=' + archive_cmds='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~linknames=' + archive_expsym_cmds='if test DEF = "`$SED -n -e '\''s/^[ ]*//'\'' -e '\''/^\(;.*\)*$/d'\'' -e '\''s/^\(EXPORTS\|LIBRARY\)\([ ].*\)*$/DEF/p'\'' -e q $export_symbols`" ; then + cp "$export_symbols" "$output_objdir/$soname.def"; + echo "$tool_output_objdir$soname.def" > "$output_objdir/$soname.exp"; + else + $SED -e '\''s/^/-link -EXPORT:/'\'' < $export_symbols > $output_objdir/$soname.exp; + fi~ + $CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~ + linknames=' # The linker will not automatically build a static lib if we build a DLL. # _LT_TAGVAR(old_archive_from_new_cmds, )='true' enable_shared_with_static_runtimes=yes @@ -10679,18 +11109,18 @@ # Don't use ranlib old_postinstall_cmds='chmod 644 $oldlib' postlink_cmds='lt_outputfile="@OUTPUT@"~ - lt_tool_outputfile="@TOOL_OUTPUT@"~ - case $lt_outputfile in - *.exe|*.EXE) ;; - *) - lt_outputfile="$lt_outputfile.exe" - lt_tool_outputfile="$lt_tool_outputfile.exe" - ;; - esac~ - if test "$MANIFEST_TOOL" != ":" && test -f "$lt_outputfile.manifest"; then - $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1; - $RM "$lt_outputfile.manifest"; - fi' + lt_tool_outputfile="@TOOL_OUTPUT@"~ + case $lt_outputfile in + *.exe|*.EXE) ;; + *) + lt_outputfile=$lt_outputfile.exe + lt_tool_outputfile=$lt_tool_outputfile.exe + ;; + esac~ + if test : != "$MANIFEST_TOOL" && test -f "$lt_outputfile.manifest"; then + $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1; + $RM "$lt_outputfile.manifest"; + fi' ;; *) # Assume MSVC wrapper @@ -10699,7 +11129,7 @@ # Tell ltmain to make .lib files, not .a files. libext=lib # Tell ltmain to make .dll files, not .so files. - shrext_cmds=".dll" + shrext_cmds=.dll # FIXME: Setting linknames here is a bad hack. archive_cmds='$CC -o $lib $libobjs $compiler_flags `func_echo_all "$deplibs" | $SED '\''s/ -lc$//'\''` -link -dll~linknames=' # The linker will automatically build a .lib file if we build a DLL. @@ -10718,24 +11148,24 @@ hardcode_direct=no hardcode_automatic=yes hardcode_shlibpath_var=unsupported - if test "$lt_cv_ld_force_load" = "yes"; then - whole_archive_flag_spec='`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience ${wl}-force_load,$conv\"; done; func_echo_all \"$new_convenience\"`' + if test yes = "$lt_cv_ld_force_load"; then + whole_archive_flag_spec='`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience $wl-force_load,$conv\"; done; func_echo_all \"$new_convenience\"`' else whole_archive_flag_spec='' fi link_all_deplibs=yes - allow_undefined_flag="$_lt_dar_allow_undefined" + allow_undefined_flag=$_lt_dar_allow_undefined case $cc_basename in - ifort*) _lt_dar_can_shared=yes ;; + ifort*|nagfor*) _lt_dar_can_shared=yes ;; *) _lt_dar_can_shared=$GCC ;; esac - if test "$_lt_dar_can_shared" = "yes"; then + if test yes = "$_lt_dar_can_shared"; then output_verbose_link_cmd=func_echo_all - archive_cmds="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod${_lt_dsymutil}" - module_cmds="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dsymutil}" - archive_expsym_cmds="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring ${_lt_dar_single_mod}${_lt_dar_export_syms}${_lt_dsymutil}" - module_expsym_cmds="sed -e 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dar_export_syms}${_lt_dsymutil}" + archive_cmds="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod$_lt_dsymutil" + module_cmds="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags$_lt_dsymutil" + archive_expsym_cmds="sed 's|^|_|' < \$export_symbols > \$output_objdir/\$libname-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod$_lt_dar_export_syms$_lt_dsymutil" + module_expsym_cmds="sed -e 's|^|_|' < \$export_symbols > \$output_objdir/\$libname-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags$_lt_dar_export_syms$_lt_dsymutil" else ld_shlibs=no @@ -10777,33 +11207,33 @@ ;; hpux9*) - if test "$GCC" = yes; then - archive_cmds='$RM $output_objdir/$soname~$CC -shared $pic_flag ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' + if test yes = "$GCC"; then + archive_cmds='$RM $output_objdir/$soname~$CC -shared $pic_flag $wl+b $wl$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test "x$output_objdir/$soname" = "x$lib" || mv $output_objdir/$soname $lib' else - archive_cmds='$RM $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' + archive_cmds='$RM $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test "x$output_objdir/$soname" = "x$lib" || mv $output_objdir/$soname $lib' fi - hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' + hardcode_libdir_flag_spec='$wl+b $wl$libdir' hardcode_libdir_separator=: hardcode_direct=yes # hardcode_minus_L: Not really in the search PATH, # but as the default location of the library. hardcode_minus_L=yes - export_dynamic_flag_spec='${wl}-E' + export_dynamic_flag_spec='$wl-E' ;; hpux10*) - if test "$GCC" = yes && test "$with_gnu_ld" = no; then - archive_cmds='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' + if test yes,no = "$GCC,$with_gnu_ld"; then + archive_cmds='$CC -shared $pic_flag $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $libobjs $deplibs $compiler_flags' else archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' fi - if test "$with_gnu_ld" = no; then - hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' + if test no = "$with_gnu_ld"; then + hardcode_libdir_flag_spec='$wl+b $wl$libdir' hardcode_libdir_separator=: hardcode_direct=yes hardcode_direct_absolute=yes - export_dynamic_flag_spec='${wl}-E' + export_dynamic_flag_spec='$wl-E' # hardcode_minus_L: Not really in the search PATH, # but as the default location of the library. hardcode_minus_L=yes @@ -10811,25 +11241,25 @@ ;; hpux11*) - if test "$GCC" = yes && test "$with_gnu_ld" = no; then + if test yes,no = "$GCC,$with_gnu_ld"; then case $host_cpu in hppa*64*) - archive_cmds='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_cmds='$CC -shared $wl+h $wl$soname -o $lib $libobjs $deplibs $compiler_flags' ;; ia64*) - archive_cmds='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' + archive_cmds='$CC -shared $pic_flag $wl+h $wl$soname $wl+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' ;; *) - archive_cmds='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' + archive_cmds='$CC -shared $pic_flag $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $libobjs $deplibs $compiler_flags' ;; esac else case $host_cpu in hppa*64*) - archive_cmds='$CC -b ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_cmds='$CC -b $wl+h $wl$soname -o $lib $libobjs $deplibs $compiler_flags' ;; ia64*) - archive_cmds='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' + archive_cmds='$CC -b $wl+h $wl$soname $wl+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' ;; *) @@ -10841,7 +11271,7 @@ $as_echo_n "(cached) " >&6 else lt_cv_prog_compiler__b=no - save_LDFLAGS="$LDFLAGS" + save_LDFLAGS=$LDFLAGS LDFLAGS="$LDFLAGS -b" echo "$lt_simple_link_test_code" > conftest.$ac_ext if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then @@ -10860,14 +11290,14 @@ fi fi $RM -r conftest* - LDFLAGS="$save_LDFLAGS" + LDFLAGS=$save_LDFLAGS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler__b" >&5 $as_echo "$lt_cv_prog_compiler__b" >&6; } -if test x"$lt_cv_prog_compiler__b" = xyes; then - archive_cmds='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' +if test yes = "$lt_cv_prog_compiler__b"; then + archive_cmds='$CC -b $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $libobjs $deplibs $compiler_flags' else archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' fi @@ -10875,8 +11305,8 @@ ;; esac fi - if test "$with_gnu_ld" = no; then - hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' + if test no = "$with_gnu_ld"; then + hardcode_libdir_flag_spec='$wl+b $wl$libdir' hardcode_libdir_separator=: case $host_cpu in @@ -10887,7 +11317,7 @@ *) hardcode_direct=yes hardcode_direct_absolute=yes - export_dynamic_flag_spec='${wl}-E' + export_dynamic_flag_spec='$wl-E' # hardcode_minus_L: Not really in the search PATH, # but as the default location of the library. @@ -10898,8 +11328,8 @@ ;; irix5* | irix6* | nonstopux*) - if test "$GCC" = yes; then - archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + if test yes = "$GCC"; then + archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib' # Try to use the -exported_symbol ld option, if it does not # work, assume that -exports_file does not work either and # implicitly export all symbols. @@ -10909,8 +11339,8 @@ if ${lt_cv_irix_exported_symbol+:} false; then : $as_echo_n "(cached) " >&6 else - save_LDFLAGS="$LDFLAGS" - LDFLAGS="$LDFLAGS -shared ${wl}-exported_symbol ${wl}foo ${wl}-update_registry ${wl}/dev/null" + save_LDFLAGS=$LDFLAGS + LDFLAGS="$LDFLAGS -shared $wl-exported_symbol ${wl}foo $wl-update_registry $wl/dev/null" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int foo (void) { return 0; } @@ -10922,24 +11352,35 @@ fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext - LDFLAGS="$save_LDFLAGS" + LDFLAGS=$save_LDFLAGS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_irix_exported_symbol" >&5 $as_echo "$lt_cv_irix_exported_symbol" >&6; } - if test "$lt_cv_irix_exported_symbol" = yes; then - archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations ${wl}-exports_file ${wl}$export_symbols -o $lib' + if test yes = "$lt_cv_irix_exported_symbol"; then + archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations $wl-exports_file $wl$export_symbols -o $lib' fi + link_all_deplibs=no else - archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' - archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -exports_file $export_symbols -o $lib' + archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib' + archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -exports_file $export_symbols -o $lib' fi archive_cmds_need_lc='no' - hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' + hardcode_libdir_flag_spec='$wl-rpath $wl$libdir' hardcode_libdir_separator=: inherit_rpath=yes link_all_deplibs=yes ;; + linux*) + case $cc_basename in + tcc*) + # Fabrice Bellard et al's Tiny C Compiler + ld_shlibs=yes + archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' + ;; + esac + ;; + netbsd* | netbsdelf*-gnu) if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out @@ -10954,7 +11395,7 @@ newsos6) archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_direct=yes - hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' + hardcode_libdir_flag_spec='$wl-rpath $wl$libdir' hardcode_libdir_separator=: hardcode_shlibpath_var=no ;; @@ -10962,27 +11403,19 @@ *nto* | *qnx*) ;; - openbsd*) + openbsd* | bitrig*) if test -f /usr/libexec/ld.so; then hardcode_direct=yes hardcode_shlibpath_var=no hardcode_direct_absolute=yes - if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then + if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`"; then archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' - archive_expsym_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-retain-symbols-file,$export_symbols' - hardcode_libdir_flag_spec='${wl}-rpath,$libdir' - export_dynamic_flag_spec='${wl}-E' + archive_expsym_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags $wl-retain-symbols-file,$export_symbols' + hardcode_libdir_flag_spec='$wl-rpath,$libdir' + export_dynamic_flag_spec='$wl-E' else - case $host_os in - openbsd[01].* | openbsd2.[0-7] | openbsd2.[0-7].*) - archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' - hardcode_libdir_flag_spec='-R$libdir' - ;; - *) - archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' - hardcode_libdir_flag_spec='${wl}-rpath,$libdir' - ;; - esac + archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' + hardcode_libdir_flag_spec='$wl-rpath,$libdir' fi else ld_shlibs=no @@ -10993,33 +11426,53 @@ hardcode_libdir_flag_spec='-L$libdir' hardcode_minus_L=yes allow_undefined_flag=unsupported - archive_cmds='$ECHO "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~echo DATA >> $output_objdir/$libname.def~echo " SINGLE NONSHARED" >> $output_objdir/$libname.def~echo EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def' - old_archive_from_new_cmds='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def' + shrext_cmds=.dll + archive_cmds='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~ + $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~ + $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~ + $ECHO EXPORTS >> $output_objdir/$libname.def~ + emxexp $libobjs | $SED /"_DLL_InitTerm"/d >> $output_objdir/$libname.def~ + $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ + emximp -o $lib $output_objdir/$libname.def' + archive_expsym_cmds='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~ + $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~ + $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~ + $ECHO EXPORTS >> $output_objdir/$libname.def~ + prefix_cmds="$SED"~ + if test EXPORTS = "`$SED 1q $export_symbols`"; then + prefix_cmds="$prefix_cmds -e 1d"; + fi~ + prefix_cmds="$prefix_cmds -e \"s/^\(.*\)$/_\1/g\""~ + cat $export_symbols | $prefix_cmds >> $output_objdir/$libname.def~ + $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ + emximp -o $lib $output_objdir/$libname.def' + old_archive_From_new_cmds='emximp -o $output_objdir/${libname}_dll.a $output_objdir/$libname.def' + enable_shared_with_static_runtimes=yes ;; osf3*) - if test "$GCC" = yes; then - allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*' - archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + if test yes = "$GCC"; then + allow_undefined_flag=' $wl-expect_unresolved $wl\*' + archive_cmds='$CC -shared$allow_undefined_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib' else allow_undefined_flag=' -expect_unresolved \*' - archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' + archive_cmds='$CC -shared$allow_undefined_flag $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib' fi archive_cmds_need_lc='no' - hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' + hardcode_libdir_flag_spec='$wl-rpath $wl$libdir' hardcode_libdir_separator=: ;; osf4* | osf5*) # as osf3* with the addition of -msym flag - if test "$GCC" = yes; then - allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*' - archive_cmds='$CC -shared${allow_undefined_flag} $pic_flag $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' - hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' + if test yes = "$GCC"; then + allow_undefined_flag=' $wl-expect_unresolved $wl\*' + archive_cmds='$CC -shared$allow_undefined_flag $pic_flag $libobjs $deplibs $compiler_flags $wl-msym $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib' + hardcode_libdir_flag_spec='$wl-rpath $wl$libdir' else allow_undefined_flag=' -expect_unresolved \*' - archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -msym -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' + archive_cmds='$CC -shared$allow_undefined_flag $libobjs $deplibs $compiler_flags -msym -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib' archive_expsym_cmds='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; printf "%s\\n" "-hidden">> $lib.exp~ - $CC -shared${allow_undefined_flag} ${wl}-input ${wl}$lib.exp $compiler_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && $ECHO "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib~$RM $lib.exp' + $CC -shared$allow_undefined_flag $wl-input $wl$lib.exp $compiler_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && $ECHO "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib~$RM $lib.exp' # Both c and cxx compiler support -rpath directly hardcode_libdir_flag_spec='-rpath $libdir' @@ -11030,24 +11483,24 @@ solaris*) no_undefined_flag=' -z defs' - if test "$GCC" = yes; then - wlarc='${wl}' - archive_cmds='$CC -shared $pic_flag ${wl}-z ${wl}text ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' + if test yes = "$GCC"; then + wlarc='$wl' + archive_cmds='$CC -shared $pic_flag $wl-z ${wl}text $wl-h $wl$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ - $CC -shared $pic_flag ${wl}-z ${wl}text ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp' + $CC -shared $pic_flag $wl-z ${wl}text $wl-M $wl$lib.exp $wl-h $wl$soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp' else case `$CC -V 2>&1` in *"Compilers 5.0"*) wlarc='' - archive_cmds='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags' + archive_cmds='$LD -G$allow_undefined_flag -h $soname -o $lib $libobjs $deplibs $linker_flags' archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ - $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$RM $lib.exp' + $LD -G$allow_undefined_flag -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$RM $lib.exp' ;; *) - wlarc='${wl}' - archive_cmds='$CC -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $compiler_flags' + wlarc='$wl' + archive_cmds='$CC -G$allow_undefined_flag -h $soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ - $CC -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp' + $CC -G$allow_undefined_flag -M $lib.exp -h $soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp' ;; esac fi @@ -11057,11 +11510,11 @@ solaris2.[0-5] | solaris2.[0-5].*) ;; *) # The compiler driver will combine and reorder linker options, - # but understands `-z linker_flag'. GCC discards it without `$wl', + # but understands '-z linker_flag'. GCC discards it without '$wl', # but is careful enough not to reorder. # Supported since Solaris 2.6 (maybe 2.5.1?) - if test "$GCC" = yes; then - whole_archive_flag_spec='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract' + if test yes = "$GCC"; then + whole_archive_flag_spec='$wl-z ${wl}allextract$convenience $wl-z ${wl}defaultextract' else whole_archive_flag_spec='-z allextract$convenience -z defaultextract' fi @@ -11071,10 +11524,10 @@ ;; sunos4*) - if test "x$host_vendor" = xsequent; then + if test sequent = "$host_vendor"; then # Use $CC to link under sequent, because it throws in some extra .o # files that make .init and .fini sections work. - archive_cmds='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags' + archive_cmds='$CC -G $wl-h $soname -o $lib $libobjs $deplibs $compiler_flags' else archive_cmds='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags' fi @@ -11123,43 +11576,43 @@ ;; sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[01].[10]* | unixware7* | sco3.2v5.0.[024]*) - no_undefined_flag='${wl}-z,text' + no_undefined_flag='$wl-z,text' archive_cmds_need_lc=no hardcode_shlibpath_var=no runpath_var='LD_RUN_PATH' - if test "$GCC" = yes; then - archive_cmds='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - archive_expsym_cmds='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + if test yes = "$GCC"; then + archive_cmds='$CC -shared $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds='$CC -shared $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' else - archive_cmds='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - archive_expsym_cmds='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_cmds='$CC -G $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds='$CC -G $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' fi ;; sysv5* | sco3.2v5* | sco5v6*) - # Note: We can NOT use -z defs as we might desire, because we do not + # Note: We CANNOT use -z defs as we might desire, because we do not # link with -lc, and that would cause any symbols used from libc to # always be unresolved, which means just about no library would # ever link correctly. If we're not using GNU ld we use -z text # though, which does catch some bad symbols but isn't as heavy-handed # as -z defs. - no_undefined_flag='${wl}-z,text' - allow_undefined_flag='${wl}-z,nodefs' + no_undefined_flag='$wl-z,text' + allow_undefined_flag='$wl-z,nodefs' archive_cmds_need_lc=no hardcode_shlibpath_var=no - hardcode_libdir_flag_spec='${wl}-R,$libdir' + hardcode_libdir_flag_spec='$wl-R,$libdir' hardcode_libdir_separator=':' link_all_deplibs=yes - export_dynamic_flag_spec='${wl}-Bexport' + export_dynamic_flag_spec='$wl-Bexport' runpath_var='LD_RUN_PATH' - if test "$GCC" = yes; then - archive_cmds='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - archive_expsym_cmds='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + if test yes = "$GCC"; then + archive_cmds='$CC -shared $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds='$CC -shared $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' else - archive_cmds='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - archive_expsym_cmds='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_cmds='$CC -G $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds='$CC -G $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' fi ;; @@ -11174,10 +11627,10 @@ ;; esac - if test x$host_vendor = xsni; then + if test sni = "$host_vendor"; then case $host in sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) - export_dynamic_flag_spec='${wl}-Blargedynsym' + export_dynamic_flag_spec='$wl-Blargedynsym' ;; esac fi @@ -11185,7 +11638,7 @@ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ld_shlibs" >&5 $as_echo "$ld_shlibs" >&6; } -test "$ld_shlibs" = no && can_build_shared=no +test no = "$ld_shlibs" && can_build_shared=no with_gnu_ld=$with_gnu_ld @@ -11211,7 +11664,7 @@ # Assume -lc should be added archive_cmds_need_lc=yes - if test "$enable_shared" = yes && test "$GCC" = yes; then + if test yes,yes = "$GCC,$enable_shared"; then case $archive_cmds in *'~'*) # FIXME: we may have to deal with multi-command sequences. @@ -11426,14 +11879,14 @@ { $as_echo "$as_me:${as_lineno-$LINENO}: checking dynamic linker characteristics" >&5 $as_echo_n "checking dynamic linker characteristics... " >&6; } -if test "$GCC" = yes; then +if test yes = "$GCC"; then case $host_os in - darwin*) lt_awk_arg="/^libraries:/,/LR/" ;; - *) lt_awk_arg="/^libraries:/" ;; + darwin*) lt_awk_arg='/^libraries:/,/LR/' ;; + *) lt_awk_arg='/^libraries:/' ;; esac case $host_os in - mingw* | cegcc*) lt_sed_strip_eq="s,=\([A-Za-z]:\),\1,g" ;; - *) lt_sed_strip_eq="s,=/,/,g" ;; + mingw* | cegcc*) lt_sed_strip_eq='s|=\([A-Za-z]:\)|\1|g' ;; + *) lt_sed_strip_eq='s|=/|/|g' ;; esac lt_search_path_spec=`$CC -print-search-dirs | awk $lt_awk_arg | $SED -e "s/^libraries://" -e $lt_sed_strip_eq` case $lt_search_path_spec in @@ -11449,28 +11902,35 @@ ;; esac # Ok, now we have the path, separated by spaces, we can step through it - # and add multilib dir if necessary. + # and add multilib dir if necessary... lt_tmp_lt_search_path_spec= - lt_multi_os_dir=`$CC $CPPFLAGS $CFLAGS $LDFLAGS -print-multi-os-directory 2>/dev/null` + lt_multi_os_dir=/`$CC $CPPFLAGS $CFLAGS $LDFLAGS -print-multi-os-directory 2>/dev/null` + # ...but if some path component already ends with the multilib dir we assume + # that all is fine and trust -print-search-dirs as is (GCC 4.2? or newer). + case "$lt_multi_os_dir; $lt_search_path_spec " in + "/; "* | "/.; "* | "/./; "* | *"$lt_multi_os_dir "* | *"$lt_multi_os_dir/ "*) + lt_multi_os_dir= + ;; + esac for lt_sys_path in $lt_search_path_spec; do - if test -d "$lt_sys_path/$lt_multi_os_dir"; then - lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path/$lt_multi_os_dir" - else + if test -d "$lt_sys_path$lt_multi_os_dir"; then + lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path$lt_multi_os_dir" + elif test -n "$lt_multi_os_dir"; then test -d "$lt_sys_path" && \ lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path" fi done lt_search_path_spec=`$ECHO "$lt_tmp_lt_search_path_spec" | awk ' -BEGIN {RS=" "; FS="/|\n";} { - lt_foo=""; - lt_count=0; +BEGIN {RS = " "; FS = "/|\n";} { + lt_foo = ""; + lt_count = 0; for (lt_i = NF; lt_i > 0; lt_i--) { if ($lt_i != "" && $lt_i != ".") { if ($lt_i == "..") { lt_count++; } else { if (lt_count == 0) { - lt_foo="/" $lt_i lt_foo; + lt_foo = "/" $lt_i lt_foo; } else { lt_count--; } @@ -11484,7 +11944,7 @@ # for these hosts. case $host_os in mingw* | cegcc*) lt_search_path_spec=`$ECHO "$lt_search_path_spec" |\ - $SED 's,/\([A-Za-z]:\),\1,g'` ;; + $SED 's|/\([A-Za-z]:\)|\1|g'` ;; esac sys_lib_search_path_spec=`$ECHO "$lt_search_path_spec" | $lt_NL2SP` else @@ -11493,7 +11953,7 @@ library_names_spec= libname_spec='lib$name' soname_spec= -shrext_cmds=".so" +shrext_cmds=.so postinstall_cmds= postuninstall_cmds= finish_cmds= @@ -11510,14 +11970,16 @@ # flags to be left without arguments need_version=unknown + + case $host_os in aix3*) version_type=linux # correct to gnu/linux during the next big refactor - library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a' + library_names_spec='$libname$release$shared_ext$versuffix $libname.a' shlibpath_var=LIBPATH # AIX 3 has no versioning support, so we append a major version to the name. - soname_spec='${libname}${release}${shared_ext}$major' + soname_spec='$libname$release$shared_ext$major' ;; aix[4-9]*) @@ -11525,41 +11987,91 @@ need_lib_prefix=no need_version=no hardcode_into_libs=yes - if test "$host_cpu" = ia64; then + if test ia64 = "$host_cpu"; then # AIX 5 supports IA64 - library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}' + library_names_spec='$libname$release$shared_ext$major $libname$release$shared_ext$versuffix $libname$shared_ext' shlibpath_var=LD_LIBRARY_PATH else # With GCC up to 2.95.x, collect2 would create an import file # for dependence libraries. The import file would start with - # the line `#! .'. This would cause the generated library to - # depend on `.', always an invalid library. This was fixed in + # the line '#! .'. This would cause the generated library to + # depend on '.', always an invalid library. This was fixed in # development snapshots of GCC prior to 3.0. case $host_os in aix4 | aix4.[01] | aix4.[01].*) if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)' echo ' yes ' - echo '#endif'; } | ${CC} -E - | $GREP yes > /dev/null; then + echo '#endif'; } | $CC -E - | $GREP yes > /dev/null; then : else can_build_shared=no fi ;; esac - # AIX (on Power*) has no versioning support, so currently we can not hardcode correct + # Using Import Files as archive members, it is possible to support + # filename-based versioning of shared library archives on AIX. While + # this would work for both with and without runtime linking, it will + # prevent static linking of such archives. So we do filename-based + # shared library versioning with .so extension only, which is used + # when both runtime linking and shared linking is enabled. + # Unfortunately, runtime linking may impact performance, so we do + # not want this to be the default eventually. Also, we use the + # versioned .so libs for executables only if there is the -brtl + # linker flag in LDFLAGS as well, or --with-aix-soname=svr4 only. + # To allow for filename-based versioning support, we need to create + # libNAME.so.V as an archive file, containing: + # *) an Import File, referring to the versioned filename of the + # archive as well as the shared archive member, telling the + # bitwidth (32 or 64) of that shared object, and providing the + # list of exported symbols of that shared object, eventually + # decorated with the 'weak' keyword + # *) the shared object with the F_LOADONLY flag set, to really avoid + # it being seen by the linker. + # At run time we better use the real file rather than another symlink, + # but for link time we create the symlink libNAME.so -> libNAME.so.V + + case $with_aix_soname,$aix_use_runtimelinking in + # AIX (on Power*) has no versioning support, so currently we cannot hardcode correct # soname into executable. Probably we can add versioning support to # collect2, so additional links can be useful in future. - if test "$aix_use_runtimelinking" = yes; then + aix,yes) # traditional libtool + dynamic_linker='AIX unversionable lib.so' # If using run time linking (on AIX 4.2 or later) use lib.so # instead of lib.a to let people know that these are not # typical AIX shared libraries. - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - else + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + ;; + aix,no) # traditional AIX only + dynamic_linker='AIX lib.a(lib.so.V)' # We preserve .a as extension for shared libraries through AIX4.2 # and later when we are not doing run time linking. - library_names_spec='${libname}${release}.a $libname.a' - soname_spec='${libname}${release}${shared_ext}$major' - fi + library_names_spec='$libname$release.a $libname.a' + soname_spec='$libname$release$shared_ext$major' + ;; + svr4,*) # full svr4 only + dynamic_linker="AIX lib.so.V($shared_archive_member_spec.o)" + library_names_spec='$libname$release$shared_ext$major $libname$shared_ext' + # We do not specify a path in Import Files, so LIBPATH fires. + shlibpath_overrides_runpath=yes + ;; + *,yes) # both, prefer svr4 + dynamic_linker="AIX lib.so.V($shared_archive_member_spec.o), lib.a(lib.so.V)" + library_names_spec='$libname$release$shared_ext$major $libname$shared_ext' + # unpreferred sharedlib libNAME.a needs extra handling + postinstall_cmds='test -n "$linkname" || linkname="$realname"~func_stripname "" ".so" "$linkname"~$install_shared_prog "$dir/$func_stripname_result.$libext" "$destdir/$func_stripname_result.$libext"~test -z "$tstripme" || test -z "$striplib" || $striplib "$destdir/$func_stripname_result.$libext"' + postuninstall_cmds='for n in $library_names $old_library; do :; done~func_stripname "" ".so" "$n"~test "$func_stripname_result" = "$n" || func_append rmfiles " $odir/$func_stripname_result.$libext"' + # We do not specify a path in Import Files, so LIBPATH fires. + shlibpath_overrides_runpath=yes + ;; + *,no) # both, prefer aix + dynamic_linker="AIX lib.a(lib.so.V), lib.so.V($shared_archive_member_spec.o)" + library_names_spec='$libname$release.a $libname.a' + soname_spec='$libname$release$shared_ext$major' + # unpreferred sharedlib libNAME.so.V and symlink libNAME.so need extra handling + postinstall_cmds='test -z "$dlname" || $install_shared_prog $dir/$dlname $destdir/$dlname~test -z "$tstripme" || test -z "$striplib" || $striplib $destdir/$dlname~test -n "$linkname" || linkname=$realname~func_stripname "" ".a" "$linkname"~(cd "$destdir" && $LN_S -f $dlname $func_stripname_result.so)' + postuninstall_cmds='test -z "$dlname" || func_append rmfiles " $odir/$dlname"~for n in $old_library $library_names; do :; done~func_stripname "" ".a" "$n"~func_append rmfiles " $odir/$func_stripname_result.so"' + ;; + esac shlibpath_var=LIBPATH fi ;; @@ -11569,18 +12081,18 @@ powerpc) # Since July 2007 AmigaOS4 officially supports .so libraries. # When compiling the executable, add -use-dynld -Lsobjs: to the compileline. - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' ;; m68k) library_names_spec='$libname.ixlibrary $libname.a' # Create ${libname}_ixlibrary.a entries in /sys/libs. - finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`func_echo_all "$lib" | $SED '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; test $RM /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done' + finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`func_echo_all "$lib" | $SED '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; $RM /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done' ;; esac ;; beos*) - library_names_spec='${libname}${shared_ext}' + library_names_spec='$libname$shared_ext' dynamic_linker="$host_os ld.so" shlibpath_var=LIBRARY_PATH ;; @@ -11588,8 +12100,8 @@ bsdi[45]*) version_type=linux # correct to gnu/linux during the next big refactor need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir' shlibpath_var=LD_LIBRARY_PATH sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib" @@ -11601,7 +12113,7 @@ cygwin* | mingw* | pw32* | cegcc*) version_type=windows - shrext_cmds=".dll" + shrext_cmds=.dll need_version=no need_lib_prefix=no @@ -11610,8 +12122,8 @@ # gcc library_names_spec='$libname.dll.a' # DLL is installed to $(libdir)/../bin by postinstall_cmds - postinstall_cmds='base_file=`basename \${file}`~ - dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i; echo \$dlname'\''`~ + postinstall_cmds='base_file=`basename \$file`~ + dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\$base_file'\''i; echo \$dlname'\''`~ dldir=$destdir/`dirname \$dlpath`~ test -d \$dldir || mkdir -p \$dldir~ $install_prog $dir/$dlname \$dldir/$dlname~ @@ -11627,17 +12139,17 @@ case $host_os in cygwin*) # Cygwin DLLs use 'cyg' prefix rather than 'lib' - soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' + soname_spec='`echo $libname | sed -e 's/^lib/cyg/'``echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext' sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/lib/w32api" ;; mingw* | cegcc*) # MinGW DLLs use traditional 'lib' prefix - soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' + soname_spec='$libname`echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext' ;; pw32*) # pw32 DLLs use 'pw' prefix rather than 'lib' - library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' + library_names_spec='`echo $libname | sed -e 's/^lib/pw/'``echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext' ;; esac dynamic_linker='Win32 ld.exe' @@ -11646,8 +12158,8 @@ *,cl*) # Native MSVC libname_spec='$name' - soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' - library_names_spec='${libname}.dll.lib' + soname_spec='$libname`echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext' + library_names_spec='$libname.dll.lib' case $build_os in mingw*) @@ -11674,7 +12186,7 @@ sys_lib_search_path_spec=`cygpath --path --unix "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` ;; *) - sys_lib_search_path_spec="$LIB" + sys_lib_search_path_spec=$LIB if $ECHO "$sys_lib_search_path_spec" | $GREP ';[c-zC-Z]:/' >/dev/null; then # It is most probably a Windows format PATH. sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` @@ -11687,8 +12199,8 @@ esac # DLL is installed to $(libdir)/../bin by postinstall_cmds - postinstall_cmds='base_file=`basename \${file}`~ - dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i; echo \$dlname'\''`~ + postinstall_cmds='base_file=`basename \$file`~ + dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\$base_file'\''i; echo \$dlname'\''`~ dldir=$destdir/`dirname \$dlpath`~ test -d \$dldir || mkdir -p \$dldir~ $install_prog $dir/$dlname \$dldir/$dlname' @@ -11701,7 +12213,7 @@ *) # Assume MSVC wrapper - library_names_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext} $libname.lib' + library_names_spec='$libname`echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext $libname.lib' dynamic_linker='Win32 ld.exe' ;; esac @@ -11714,8 +12226,8 @@ version_type=darwin need_lib_prefix=no need_version=no - library_names_spec='${libname}${release}${major}$shared_ext ${libname}$shared_ext' - soname_spec='${libname}${release}${major}$shared_ext' + library_names_spec='$libname$release$major$shared_ext $libname$shared_ext' + soname_spec='$libname$release$major$shared_ext' shlibpath_overrides_runpath=yes shlibpath_var=DYLD_LIBRARY_PATH shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`' @@ -11728,8 +12240,8 @@ version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext' - soname_spec='${libname}${release}${shared_ext}$major' + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' shlibpath_var=LD_LIBRARY_PATH ;; @@ -11747,12 +12259,13 @@ version_type=freebsd-$objformat case $version_type in freebsd-elf*) - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' need_version=no need_lib_prefix=no ;; freebsd-*) - library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix' + library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix' need_version=yes ;; esac @@ -11782,10 +12295,10 @@ need_lib_prefix=no need_version=no dynamic_linker="$host_os runtime_loader" - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' shlibpath_var=LIBRARY_PATH - shlibpath_overrides_runpath=yes + shlibpath_overrides_runpath=no sys_lib_dlsearch_path_spec='/boot/home/config/lib /boot/common/lib /boot/system/lib' hardcode_into_libs=yes ;; @@ -11803,14 +12316,15 @@ dynamic_linker="$host_os dld.so" shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - if test "X$HPUX_IA64_MODE" = X32; then + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + if test 32 = "$HPUX_IA64_MODE"; then sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib" + sys_lib_dlsearch_path_spec=/usr/lib/hpux32 else sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64" + sys_lib_dlsearch_path_spec=/usr/lib/hpux64 fi - sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec ;; hppa*64*) shrext_cmds='.sl' @@ -11818,8 +12332,8 @@ dynamic_linker="$host_os dld.sl" shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64" sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec ;; @@ -11828,8 +12342,8 @@ dynamic_linker="$host_os dld.sl" shlibpath_var=SHLIB_PATH shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' ;; esac # HP-UX runs *really* slowly unless shared libraries are mode 555, ... @@ -11842,8 +12356,8 @@ version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no @@ -11854,7 +12368,7 @@ case $host_os in nonstopux*) version_type=nonstopux ;; *) - if test "$lt_cv_prog_gnu_ld" = yes; then + if test yes = "$lt_cv_prog_gnu_ld"; then version_type=linux # correct to gnu/linux during the next big refactor else version_type=irix @@ -11862,8 +12376,8 @@ esac need_lib_prefix=no need_version=no - soname_spec='${libname}${release}${shared_ext}$major' - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}' + soname_spec='$libname$release$shared_ext$major' + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$release$shared_ext $libname$shared_ext' case $host_os in irix5* | nonstopux*) libsuff= shlibsuff= @@ -11882,8 +12396,8 @@ esac shlibpath_var=LD_LIBRARY${shlibsuff}_PATH shlibpath_overrides_runpath=no - sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}" - sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}" + sys_lib_search_path_spec="/usr/lib$libsuff /lib$libsuff /usr/local/lib$libsuff" + sys_lib_dlsearch_path_spec="/usr/lib$libsuff /lib$libsuff" hardcode_into_libs=yes ;; @@ -11892,13 +12406,33 @@ dynamic_linker=no ;; +linux*android*) + version_type=none # Android doesn't support versioned libraries. + need_lib_prefix=no + need_version=no + library_names_spec='$libname$release$shared_ext' + soname_spec='$libname$release$shared_ext' + finish_cmds= + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + + # This implies no fast_install, which is unacceptable. + # Some rework will be needed to allow for fast_install + # before this can be enabled. + hardcode_into_libs=yes + + dynamic_linker='Android linker' + # Don't embed -rpath directories since the linker doesn't support them. + hardcode_libdir_flag_spec='-L$libdir' + ;; + # This must be glibc/ELF. linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no @@ -11942,7 +12476,12 @@ # before this can be enabled. hardcode_into_libs=yes - # Append ld.so.conf contents to the search path + # Ideally, we could use ldconfig to report *all* directores which are + # searched for libraries, however this is still not possible. Aside from not + # being certain /sbin/ldconfig is available, command + # 'ldconfig -N -X -v | grep ^/' on 64bit Fedora does not report /usr/lib64, + # even though it is searched at run-time. Try to do the best guess by + # appending ld.so.conf contents (and includes) to the search path. if test -f /etc/ld.so.conf; then lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[ ]*hwcap[ ]/d;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;s/"//g;/^$/d' | tr '\n' ' '` sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra" @@ -11974,12 +12513,12 @@ need_lib_prefix=no need_version=no if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' + library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix' finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' dynamic_linker='NetBSD (a.out) ld.so' else - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' dynamic_linker='NetBSD ld.elf_so' fi shlibpath_var=LD_LIBRARY_PATH @@ -11989,7 +12528,7 @@ newsos6) version_type=linux # correct to gnu/linux during the next big refactor - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes ;; @@ -11998,58 +12537,68 @@ version_type=qnx need_lib_prefix=no need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes dynamic_linker='ldqnx.so' ;; -openbsd*) +openbsd* | bitrig*) version_type=sunos - sys_lib_dlsearch_path_spec="/usr/lib" + sys_lib_dlsearch_path_spec=/usr/lib need_lib_prefix=no - # Some older versions of OpenBSD (3.3 at least) *do* need versioned libs. - case $host_os in - openbsd3.3 | openbsd3.3.*) need_version=yes ;; - *) need_version=no ;; - esac - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' - finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' - shlibpath_var=LD_LIBRARY_PATH - if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then - case $host_os in - openbsd2.[89] | openbsd2.[89].*) - shlibpath_overrides_runpath=no - ;; - *) - shlibpath_overrides_runpath=yes - ;; - esac + if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`"; then + need_version=no else - shlibpath_overrides_runpath=yes + need_version=yes fi + library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes ;; os2*) libname_spec='$name' - shrext_cmds=".dll" + version_type=windows + shrext_cmds=.dll + need_version=no need_lib_prefix=no - library_names_spec='$libname${shared_ext} $libname.a' + # OS/2 can only load a DLL with a base name of 8 characters or less. + soname_spec='`test -n "$os2dllname" && libname="$os2dllname"; + v=$($ECHO $release$versuffix | tr -d .-); + n=$($ECHO $libname | cut -b -$((8 - ${#v})) | tr . _); + $ECHO $n$v`$shared_ext' + library_names_spec='${libname}_dll.$libext' dynamic_linker='OS/2 ld.exe' - shlibpath_var=LIBPATH + shlibpath_var=BEGINLIBPATH + sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" + sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec + postinstall_cmds='base_file=`basename \$file`~ + dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\$base_file'\''i; $ECHO \$dlname'\''`~ + dldir=$destdir/`dirname \$dlpath`~ + test -d \$dldir || mkdir -p \$dldir~ + $install_prog $dir/$dlname \$dldir/$dlname~ + chmod a+x \$dldir/$dlname~ + if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then + eval '\''$striplib \$dldir/$dlname'\'' || exit \$?; + fi' + postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; $ECHO \$dlname'\''`~ + dlpath=$dir/\$dldll~ + $RM \$dlpath' ;; osf3* | osf4* | osf5*) version_type=osf need_lib_prefix=no need_version=no - soname_spec='${libname}${release}${shared_ext}$major' - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='$libname$release$shared_ext$major' + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' shlibpath_var=LD_LIBRARY_PATH sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib" - sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec" + sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec ;; rdos*) @@ -12060,8 +12609,8 @@ version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes hardcode_into_libs=yes @@ -12071,11 +12620,11 @@ sunos4*) version_type=sunos - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' + library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix' finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes - if test "$with_gnu_ld" = yes; then + if test yes = "$with_gnu_ld"; then need_lib_prefix=no fi need_version=yes @@ -12083,8 +12632,8 @@ sysv4 | sysv4.3*) version_type=linux # correct to gnu/linux during the next big refactor - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' shlibpath_var=LD_LIBRARY_PATH case $host_vendor in sni) @@ -12105,24 +12654,24 @@ ;; sysv4*MP*) - if test -d /usr/nec ;then + if test -d /usr/nec; then version_type=linux # correct to gnu/linux during the next big refactor - library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}' - soname_spec='$libname${shared_ext}.$major' + library_names_spec='$libname$shared_ext.$versuffix $libname$shared_ext.$major $libname$shared_ext' + soname_spec='$libname$shared_ext.$major' shlibpath_var=LD_LIBRARY_PATH fi ;; sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) - version_type=freebsd-elf + version_type=sco need_lib_prefix=no need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes hardcode_into_libs=yes - if test "$with_gnu_ld" = yes; then + if test yes = "$with_gnu_ld"; then sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib' else sys_lib_search_path_spec='/usr/ccs/lib /usr/lib' @@ -12140,7 +12689,7 @@ version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes @@ -12148,8 +12697,8 @@ uts4*) version_type=linux # correct to gnu/linux during the next big refactor - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' shlibpath_var=LD_LIBRARY_PATH ;; @@ -12159,20 +12708,35 @@ esac { $as_echo "$as_me:${as_lineno-$LINENO}: result: $dynamic_linker" >&5 $as_echo "$dynamic_linker" >&6; } -test "$dynamic_linker" = no && can_build_shared=no +test no = "$dynamic_linker" && can_build_shared=no variables_saved_for_relink="PATH $shlibpath_var $runpath_var" -if test "$GCC" = yes; then +if test yes = "$GCC"; then variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" fi -if test "${lt_cv_sys_lib_search_path_spec+set}" = set; then - sys_lib_search_path_spec="$lt_cv_sys_lib_search_path_spec" +if test set = "${lt_cv_sys_lib_search_path_spec+set}"; then + sys_lib_search_path_spec=$lt_cv_sys_lib_search_path_spec fi -if test "${lt_cv_sys_lib_dlsearch_path_spec+set}" = set; then - sys_lib_dlsearch_path_spec="$lt_cv_sys_lib_dlsearch_path_spec" + +if test set = "${lt_cv_sys_lib_dlsearch_path_spec+set}"; then + sys_lib_dlsearch_path_spec=$lt_cv_sys_lib_dlsearch_path_spec fi +# remember unaugmented sys_lib_dlsearch_path content for libtool script decls... +configure_time_dlsearch_path=$sys_lib_dlsearch_path_spec + +# ... but it needs LT_SYS_LIBRARY_PATH munging for other configure-time code +func_munge_path_list sys_lib_dlsearch_path_spec "$LT_SYS_LIBRARY_PATH" + +# to be used as default LT_SYS_LIBRARY_PATH value in generated libtool +configure_time_lt_sys_library_path=$LT_SYS_LIBRARY_PATH + + + + + + @@ -12269,15 +12833,15 @@ hardcode_action= if test -n "$hardcode_libdir_flag_spec" || test -n "$runpath_var" || - test "X$hardcode_automatic" = "Xyes" ; then + test yes = "$hardcode_automatic"; then # We can hardcode non-existent directories. - if test "$hardcode_direct" != no && + if test no != "$hardcode_direct" && # If the only mechanism to avoid hardcoding is shlibpath_var, we # have to relink, otherwise we might link with an installed library # when we should be linking with a yet-to-be-installed one - ## test "$_LT_TAGVAR(hardcode_shlibpath_var, )" != no && - test "$hardcode_minus_L" != no; then + ## test no != "$_LT_TAGVAR(hardcode_shlibpath_var, )" && + test no != "$hardcode_minus_L"; then # Linking always hardcodes the temporary library directory. hardcode_action=relink else @@ -12292,12 +12856,12 @@ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $hardcode_action" >&5 $as_echo "$hardcode_action" >&6; } -if test "$hardcode_action" = relink || - test "$inherit_rpath" = yes; then +if test relink = "$hardcode_action" || + test yes = "$inherit_rpath"; then # Fast installation is not supported enable_fast_install=no -elif test "$shlibpath_overrides_runpath" = yes || - test "$enable_shared" = no; then +elif test yes = "$shlibpath_overrides_runpath" || + test no = "$enable_shared"; then # Fast installation is not necessary enable_fast_install=needless fi @@ -12307,7 +12871,7 @@ - if test "x$enable_dlopen" != xyes; then + if test yes != "$enable_dlopen"; then enable_dlopen=unknown enable_dlopen_self=unknown enable_dlopen_self_static=unknown @@ -12317,23 +12881,23 @@ case $host_os in beos*) - lt_cv_dlopen="load_add_on" + lt_cv_dlopen=load_add_on lt_cv_dlopen_libs= lt_cv_dlopen_self=yes ;; mingw* | pw32* | cegcc*) - lt_cv_dlopen="LoadLibrary" + lt_cv_dlopen=LoadLibrary lt_cv_dlopen_libs= ;; cygwin*) - lt_cv_dlopen="dlopen" + lt_cv_dlopen=dlopen lt_cv_dlopen_libs= ;; darwin*) - # if libdl is installed we need to link against it + # if libdl is installed we need to link against it { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -ldl" >&5 $as_echo_n "checking for dlopen in -ldl... " >&6; } if ${ac_cv_lib_dl_dlopen+:} false; then : @@ -12371,10 +12935,10 @@ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dl_dlopen" >&5 $as_echo "$ac_cv_lib_dl_dlopen" >&6; } if test "x$ac_cv_lib_dl_dlopen" = xyes; then : - lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl" + lt_cv_dlopen=dlopen lt_cv_dlopen_libs=-ldl else - lt_cv_dlopen="dyld" + lt_cv_dlopen=dyld lt_cv_dlopen_libs= lt_cv_dlopen_self=yes @@ -12382,10 +12946,18 @@ ;; + tpf*) + # Don't try to run any link tests for TPF. We know it's impossible + # because TPF is a cross-compiler, and we know how we open DSOs. + lt_cv_dlopen=dlopen + lt_cv_dlopen_libs= + lt_cv_dlopen_self=no + ;; + *) ac_fn_c_check_func "$LINENO" "shl_load" "ac_cv_func_shl_load" if test "x$ac_cv_func_shl_load" = xyes; then : - lt_cv_dlopen="shl_load" + lt_cv_dlopen=shl_load else { $as_echo "$as_me:${as_lineno-$LINENO}: checking for shl_load in -ldld" >&5 $as_echo_n "checking for shl_load in -ldld... " >&6; } @@ -12424,11 +12996,11 @@ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dld_shl_load" >&5 $as_echo "$ac_cv_lib_dld_shl_load" >&6; } if test "x$ac_cv_lib_dld_shl_load" = xyes; then : - lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-ldld" + lt_cv_dlopen=shl_load lt_cv_dlopen_libs=-ldld else ac_fn_c_check_func "$LINENO" "dlopen" "ac_cv_func_dlopen" if test "x$ac_cv_func_dlopen" = xyes; then : - lt_cv_dlopen="dlopen" + lt_cv_dlopen=dlopen else { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -ldl" >&5 $as_echo_n "checking for dlopen in -ldl... " >&6; } @@ -12467,7 +13039,7 @@ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dl_dlopen" >&5 $as_echo "$ac_cv_lib_dl_dlopen" >&6; } if test "x$ac_cv_lib_dl_dlopen" = xyes; then : - lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl" + lt_cv_dlopen=dlopen lt_cv_dlopen_libs=-ldl else { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -lsvld" >&5 $as_echo_n "checking for dlopen in -lsvld... " >&6; } @@ -12506,7 +13078,7 @@ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_svld_dlopen" >&5 $as_echo "$ac_cv_lib_svld_dlopen" >&6; } if test "x$ac_cv_lib_svld_dlopen" = xyes; then : - lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld" + lt_cv_dlopen=dlopen lt_cv_dlopen_libs=-lsvld else { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dld_link in -ldld" >&5 $as_echo_n "checking for dld_link in -ldld... " >&6; } @@ -12545,7 +13117,7 @@ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dld_dld_link" >&5 $as_echo "$ac_cv_lib_dld_dld_link" >&6; } if test "x$ac_cv_lib_dld_dld_link" = xyes; then : - lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-ldld" + lt_cv_dlopen=dld_link lt_cv_dlopen_libs=-ldld fi @@ -12566,21 +13138,21 @@ ;; esac - if test "x$lt_cv_dlopen" != xno; then - enable_dlopen=yes - else + if test no = "$lt_cv_dlopen"; then enable_dlopen=no + else + enable_dlopen=yes fi case $lt_cv_dlopen in dlopen) - save_CPPFLAGS="$CPPFLAGS" - test "x$ac_cv_header_dlfcn_h" = xyes && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H" + save_CPPFLAGS=$CPPFLAGS + test yes = "$ac_cv_header_dlfcn_h" && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H" - save_LDFLAGS="$LDFLAGS" + save_LDFLAGS=$LDFLAGS wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\" - save_LIBS="$LIBS" + save_LIBS=$LIBS LIBS="$lt_cv_dlopen_libs $LIBS" { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether a program can dlopen itself" >&5 @@ -12588,7 +13160,7 @@ if ${lt_cv_dlopen_self+:} false; then : $as_echo_n "(cached) " >&6 else - if test "$cross_compiling" = yes; then : + if test yes = "$cross_compiling"; then : lt_cv_dlopen_self=cross else lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 @@ -12635,9 +13207,9 @@ # endif #endif -/* When -fvisbility=hidden is used, assume the code has been annotated +/* When -fvisibility=hidden is used, assume the code has been annotated correspondingly for the symbols needed. */ -#if defined(__GNUC__) && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3)) +#if defined __GNUC__ && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3)) int fnord () __attribute__((visibility("default"))); #endif @@ -12667,7 +13239,7 @@ (eval $ac_link) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } && test -s conftest${ac_exeext} 2>/dev/null; then + test $ac_status = 0; } && test -s "conftest$ac_exeext" 2>/dev/null; then (./conftest; exit; ) >&5 2>/dev/null lt_status=$? case x$lt_status in @@ -12687,14 +13259,14 @@ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_dlopen_self" >&5 $as_echo "$lt_cv_dlopen_self" >&6; } - if test "x$lt_cv_dlopen_self" = xyes; then + if test yes = "$lt_cv_dlopen_self"; then wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $lt_prog_compiler_static\" { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether a statically linked program can dlopen itself" >&5 $as_echo_n "checking whether a statically linked program can dlopen itself... " >&6; } if ${lt_cv_dlopen_self_static+:} false; then : $as_echo_n "(cached) " >&6 else - if test "$cross_compiling" = yes; then : + if test yes = "$cross_compiling"; then : lt_cv_dlopen_self_static=cross else lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 @@ -12741,9 +13313,9 @@ # endif #endif -/* When -fvisbility=hidden is used, assume the code has been annotated +/* When -fvisibility=hidden is used, assume the code has been annotated correspondingly for the symbols needed. */ -#if defined(__GNUC__) && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3)) +#if defined __GNUC__ && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3)) int fnord () __attribute__((visibility("default"))); #endif @@ -12773,7 +13345,7 @@ (eval $ac_link) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } && test -s conftest${ac_exeext} 2>/dev/null; then + test $ac_status = 0; } && test -s "conftest$ac_exeext" 2>/dev/null; then (./conftest; exit; ) >&5 2>/dev/null lt_status=$? case x$lt_status in @@ -12794,9 +13366,9 @@ $as_echo "$lt_cv_dlopen_self_static" >&6; } fi - CPPFLAGS="$save_CPPFLAGS" - LDFLAGS="$save_LDFLAGS" - LIBS="$save_LIBS" + CPPFLAGS=$save_CPPFLAGS + LDFLAGS=$save_LDFLAGS + LIBS=$save_LIBS ;; esac @@ -12840,7 +13412,7 @@ # FIXME - insert some real tests, host_os isn't really good enough case $host_os in darwin*) - if test -n "$STRIP" ; then + if test -n "$STRIP"; then striplib="$STRIP -x" old_striplib="$STRIP -S" { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 @@ -12868,7 +13440,7 @@ - # Report which library types will actually be built + # Report what library types will actually be built { $as_echo "$as_me:${as_lineno-$LINENO}: checking if libtool supports shared libraries" >&5 $as_echo_n "checking if libtool supports shared libraries... " >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: result: $can_build_shared" >&5 @@ -12876,13 +13448,13 @@ { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to build shared libraries" >&5 $as_echo_n "checking whether to build shared libraries... " >&6; } - test "$can_build_shared" = "no" && enable_shared=no + test no = "$can_build_shared" && enable_shared=no # On AIX, shared libraries and static libraries use the same namespace, and # are all built from PIC. case $host_os in aix3*) - test "$enable_shared" = yes && enable_static=no + test yes = "$enable_shared" && enable_static=no if test -n "$RANLIB"; then archive_cmds="$archive_cmds~\$RANLIB \$lib" postinstall_cmds='$RANLIB $lib' @@ -12890,8 +13462,12 @@ ;; aix[4-9]*) - if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then - test "$enable_shared" = yes && enable_static=no + if test ia64 != "$host_cpu"; then + case $enable_shared,$with_aix_soname,$aix_use_runtimelinking in + yes,aix,yes) ;; # shared object as lib.so file only + yes,svr4,*) ;; # shared object as lib.so archive member only + yes,*) enable_static=no ;; # shared object in lib.a archive as well + esac fi ;; esac @@ -12901,7 +13477,7 @@ { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to build static libraries" >&5 $as_echo_n "checking whether to build static libraries... " >&6; } # Make sure either enable_shared or enable_static is yes. - test "$enable_shared" = yes || enable_static=yes + test yes = "$enable_shared" || enable_static=yes { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_static" >&5 $as_echo "$enable_static" >&6; } @@ -12915,7 +13491,7 @@ ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu -CC="$lt_save_CC" +CC=$lt_save_CC @@ -13638,11 +14214,11 @@ CAIRO_VERSION_MAJOR=1 -CAIRO_VERSION_MINOR=14 -CAIRO_VERSION_MICRO=6 +CAIRO_VERSION_MINOR=15 +CAIRO_VERSION_MICRO=10 CAIRO_VERSION_SONUM=2 -CAIRO_RELEASE_STATUS=release -CAIRO_LIBTOOL_VERSION_INFO=11402:6:11400 +CAIRO_RELEASE_STATUS=snapshot +CAIRO_LIBTOOL_VERSION_INFO=11512:0:11510 @@ -14855,15 +15431,15 @@ func_stripname_cnf () { - case ${2} in - .*) func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%\\\\${2}\$%%"`;; - *) func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%${2}\$%%"`;; + case $2 in + .*) func_stripname_result=`$ECHO "$3" | $SED "s%^$1%%; s%\\\\$2\$%%"`;; + *) func_stripname_result=`$ECHO "$3" | $SED "s%^$1%%; s%$2\$%%"`;; esac } # func_stripname_cnf - if test -n "$CXX" && ( test "X$CXX" != "Xno" && - ( (test "X$CXX" = "Xg++" && `g++ -v >/dev/null 2>&1` ) || - (test "X$CXX" != "Xg++"))) ; then + if test -n "$CXX" && ( test no != "$CXX" && + ( (test g++ = "$CXX" && `g++ -v >/dev/null 2>&1` ) || + (test g++ != "$CXX"))); then ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' @@ -15042,7 +15618,7 @@ # the CXX compiler isn't working. Some variables (like enable_shared) # are currently assumed to apply to all compilers on this platform, # and will be corrupted by setting them based on a non-working compiler. -if test "$_lt_caught_CXX_error" != yes; then +if test yes != "$_lt_caught_CXX_error"; then # Code to be used in simple compile tests lt_simple_compile_test_code="int some_variable = 0;" @@ -15103,46 +15679,39 @@ CFLAGS=$CXXFLAGS compiler=$CC compiler_CXX=$CC - for cc_temp in $compiler""; do - case $cc_temp in - compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; - distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; - \-*) ;; - *) break;; - esac -done -cc_basename=`$ECHO "$cc_temp" | $SED "s%.*/%%; s%^$host_alias-%%"` + func_cc_basename $compiler +cc_basename=$func_cc_basename_result if test -n "$compiler"; then # We don't want -fno-exception when compiling C++ code, so set the # no_builtin_flag separately - if test "$GXX" = yes; then + if test yes = "$GXX"; then lt_prog_compiler_no_builtin_flag_CXX=' -fno-builtin' else lt_prog_compiler_no_builtin_flag_CXX= fi - if test "$GXX" = yes; then + if test yes = "$GXX"; then # Set up default GNU C++ configuration # Check whether --with-gnu-ld was given. if test "${with_gnu_ld+set}" = set; then : - withval=$with_gnu_ld; test "$withval" = no || with_gnu_ld=yes + withval=$with_gnu_ld; test no = "$withval" || with_gnu_ld=yes else with_gnu_ld=no fi ac_prog=ld -if test "$GCC" = yes; then +if test yes = "$GCC"; then # Check if gcc -print-prog-name=ld gives a path. { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ld used by $CC" >&5 $as_echo_n "checking for ld used by $CC... " >&6; } case $host in *-*-mingw*) - # gcc leaves a trailing carriage return which upsets mingw + # gcc leaves a trailing carriage return, which upsets mingw ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; *) ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; @@ -15156,7 +15725,7 @@ while $ECHO "$ac_prog" | $GREP "$re_direlt" > /dev/null 2>&1; do ac_prog=`$ECHO $ac_prog| $SED "s%$re_direlt%/%"` done - test -z "$LD" && LD="$ac_prog" + test -z "$LD" && LD=$ac_prog ;; "") # If it fails, then pretend we aren't using GCC. @@ -15167,7 +15736,7 @@ with_gnu_ld=unknown ;; esac -elif test "$with_gnu_ld" = yes; then +elif test yes = "$with_gnu_ld"; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GNU ld" >&5 $as_echo_n "checking for GNU ld... " >&6; } else @@ -15178,32 +15747,32 @@ $as_echo_n "(cached) " >&6 else if test -z "$LD"; then - lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR + lt_save_ifs=$IFS; IFS=$PATH_SEPARATOR for ac_dir in $PATH; do - IFS="$lt_save_ifs" + IFS=$lt_save_ifs test -z "$ac_dir" && ac_dir=. if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then - lt_cv_path_LD="$ac_dir/$ac_prog" + lt_cv_path_LD=$ac_dir/$ac_prog # Check to see if the program is GNU ld. I'd rather use --version, # but apparently some variants of GNU ld only accept -v. # Break only if it was the GNU/non-GNU ld that we prefer. case `"$lt_cv_path_LD" -v 2>&1 &5 $as_echo "$LD" >&6; } @@ -15239,22 +15808,22 @@ # Check if GNU C++ uses GNU ld as the underlying linker, since the # archiving commands below assume that GNU ld is being used. - if test "$with_gnu_ld" = yes; then - archive_cmds_CXX='$CC $pic_flag -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' - archive_expsym_cmds_CXX='$CC $pic_flag -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + if test yes = "$with_gnu_ld"; then + archive_cmds_CXX='$CC $pic_flag -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname -o $lib' + archive_expsym_cmds_CXX='$CC $pic_flag -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' - hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir' - export_dynamic_flag_spec_CXX='${wl}--export-dynamic' + hardcode_libdir_flag_spec_CXX='$wl-rpath $wl$libdir' + export_dynamic_flag_spec_CXX='$wl--export-dynamic' # If archive_cmds runs LD, not CC, wlarc should be empty # XXX I think wlarc can be eliminated in ltcf-cxx, but I need to # investigate it a little bit more. (MM) - wlarc='${wl}' + wlarc='$wl' # ancient GNU ld didn't support --whole-archive et. al. if eval "`$CC -print-prog-name=ld` --help 2>&1" | $GREP 'no-whole-archive' > /dev/null; then - whole_archive_flag_spec_CXX="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' + whole_archive_flag_spec_CXX=$wlarc'--whole-archive$convenience '$wlarc'--no-whole-archive' else whole_archive_flag_spec_CXX= fi @@ -15291,18 +15860,30 @@ ld_shlibs_CXX=no ;; aix[4-9]*) - if test "$host_cpu" = ia64; then + if test ia64 = "$host_cpu"; then # On IA64, the linker does run time linking by default, so we don't # have to do anything special. aix_use_runtimelinking=no exp_sym_flag='-Bexport' - no_entry_flag="" + no_entry_flag= else aix_use_runtimelinking=no # Test if we are trying to use run time linking or normal # AIX style linking. If -brtl is somewhere in LDFLAGS, we - # need to do runtime linking. + # have runtime linking enabled, and use it for executables. + # For shared libraries, we enable/disable runtime linking + # depending on the kind of the shared library created - + # when "with_aix_soname,aix_use_runtimelinking" is: + # "aix,no" lib.a(lib.so.V) shared, rtl:no, for executables + # "aix,yes" lib.so shared, rtl:yes, for executables + # lib.a static archive + # "both,no" lib.so.V(shr.o) shared, rtl:yes + # lib.a(lib.so.V) shared, rtl:no, for executables + # "both,yes" lib.so.V(shr.o) shared, rtl:yes, for executables + # lib.a(lib.so.V) shared, rtl:no + # "svr4,*" lib.so.V(shr.o) shared, rtl:yes, for executables + # lib.a static archive case $host_os in aix4.[23]|aix4.[23].*|aix[5-9]*) for ld_flag in $LDFLAGS; do case $ld_flag in @@ -15312,6 +15893,13 @@ ;; esac done + if test svr4,no = "$with_aix_soname,$aix_use_runtimelinking"; then + # With aix-soname=svr4, we create the lib.so.V shared archives only, + # so we don't have lib.a shared libs to link our executables. + # We have to force runtime linking in this case. + aix_use_runtimelinking=yes + LDFLAGS="$LDFLAGS -Wl,-brtl" + fi ;; esac @@ -15330,13 +15918,21 @@ hardcode_direct_absolute_CXX=yes hardcode_libdir_separator_CXX=':' link_all_deplibs_CXX=yes - file_list_spec_CXX='${wl}-f,' + file_list_spec_CXX='$wl-f,' + case $with_aix_soname,$aix_use_runtimelinking in + aix,*) ;; # no import file + svr4,* | *,yes) # use import file + # The Import File defines what to hardcode. + hardcode_direct_CXX=no + hardcode_direct_absolute_CXX=no + ;; + esac - if test "$GXX" = yes; then + if test yes = "$GXX"; then case $host_os in aix4.[012]|aix4.[012].*) # We only want to do this on AIX 4.2 and lower, the check # below for broken collect2 doesn't work under 4.3+ - collect2name=`${CC} -print-prog-name=collect2` + collect2name=`$CC -print-prog-name=collect2` if test -f "$collect2name" && strings "$collect2name" | $GREP resolve_lib_name >/dev/null then @@ -15354,36 +15950,44 @@ fi esac shared_flag='-shared' - if test "$aix_use_runtimelinking" = yes; then - shared_flag="$shared_flag "'${wl}-G' + if test yes = "$aix_use_runtimelinking"; then + shared_flag=$shared_flag' $wl-G' fi + # Need to ensure runtime linking is disabled for the traditional + # shared library, or the linker may eventually find shared libraries + # /with/ Import File - we do not want to mix them. + shared_flag_aix='-shared' + shared_flag_svr4='-shared $wl-G' else # not using gcc - if test "$host_cpu" = ia64; then + if test ia64 = "$host_cpu"; then # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release # chokes on -Wl,-G. The following line is correct: shared_flag='-G' else - if test "$aix_use_runtimelinking" = yes; then - shared_flag='${wl}-G' + if test yes = "$aix_use_runtimelinking"; then + shared_flag='$wl-G' else - shared_flag='${wl}-bM:SRE' + shared_flag='$wl-bM:SRE' fi + shared_flag_aix='$wl-bM:SRE' + shared_flag_svr4='$wl-G' fi fi - export_dynamic_flag_spec_CXX='${wl}-bexpall' + export_dynamic_flag_spec_CXX='$wl-bexpall' # It seems that -bexpall does not export symbols beginning with # underscore (_), so it is better to generate a list of symbols to # export. always_export_symbols_CXX=yes - if test "$aix_use_runtimelinking" = yes; then + if test aix,yes = "$with_aix_soname,$aix_use_runtimelinking"; then # Warning - without using the other runtime loading flags (-brtl), # -berok will link without error, but may produce a broken library. - allow_undefined_flag_CXX='-berok' + # The "-G" linker flag allows undefined symbols. + no_undefined_flag_CXX='-bernotok' # Determine the default libpath from the value encoded in an empty # executable. - if test "${lt_cv_aix_libpath+set}" = set; then + if test set = "${lt_cv_aix_libpath+set}"; then aix_libpath=$lt_cv_aix_libpath else if ${lt_cv_aix_libpath__CXX+:} false; then : @@ -15418,7 +16022,7 @@ rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext if test -z "$lt_cv_aix_libpath__CXX"; then - lt_cv_aix_libpath__CXX="/usr/lib:/lib" + lt_cv_aix_libpath__CXX=/usr/lib:/lib fi fi @@ -15426,18 +16030,18 @@ aix_libpath=$lt_cv_aix_libpath__CXX fi - hardcode_libdir_flag_spec_CXX='${wl}-blibpath:$libdir:'"$aix_libpath" + hardcode_libdir_flag_spec_CXX='$wl-blibpath:$libdir:'"$aix_libpath" - archive_expsym_cmds_CXX='$CC -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then func_echo_all "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag" + archive_expsym_cmds_CXX='$CC -o $output_objdir/$soname $libobjs $deplibs $wl'$no_entry_flag' $compiler_flags `if test -n "$allow_undefined_flag"; then func_echo_all "$wl$allow_undefined_flag"; else :; fi` $wl'$exp_sym_flag:\$export_symbols' '$shared_flag else - if test "$host_cpu" = ia64; then - hardcode_libdir_flag_spec_CXX='${wl}-R $libdir:/usr/lib:/lib' + if test ia64 = "$host_cpu"; then + hardcode_libdir_flag_spec_CXX='$wl-R $libdir:/usr/lib:/lib' allow_undefined_flag_CXX="-z nodefs" - archive_expsym_cmds_CXX="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols" + archive_expsym_cmds_CXX="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\$wl$no_entry_flag"' $compiler_flags $wl$allow_undefined_flag '"\$wl$exp_sym_flag:\$export_symbols" else # Determine the default libpath from the value encoded in an # empty executable. - if test "${lt_cv_aix_libpath+set}" = set; then + if test set = "${lt_cv_aix_libpath+set}"; then aix_libpath=$lt_cv_aix_libpath else if ${lt_cv_aix_libpath__CXX+:} false; then : @@ -15472,7 +16076,7 @@ rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext if test -z "$lt_cv_aix_libpath__CXX"; then - lt_cv_aix_libpath__CXX="/usr/lib:/lib" + lt_cv_aix_libpath__CXX=/usr/lib:/lib fi fi @@ -15480,22 +16084,34 @@ aix_libpath=$lt_cv_aix_libpath__CXX fi - hardcode_libdir_flag_spec_CXX='${wl}-blibpath:$libdir:'"$aix_libpath" + hardcode_libdir_flag_spec_CXX='$wl-blibpath:$libdir:'"$aix_libpath" # Warning - without using the other run time loading flags, # -berok will link without error, but may produce a broken library. - no_undefined_flag_CXX=' ${wl}-bernotok' - allow_undefined_flag_CXX=' ${wl}-berok' - if test "$with_gnu_ld" = yes; then + no_undefined_flag_CXX=' $wl-bernotok' + allow_undefined_flag_CXX=' $wl-berok' + if test yes = "$with_gnu_ld"; then # We only use this code for GNU lds that support --whole-archive. - whole_archive_flag_spec_CXX='${wl}--whole-archive$convenience ${wl}--no-whole-archive' + whole_archive_flag_spec_CXX='$wl--whole-archive$convenience $wl--no-whole-archive' else # Exported symbols can be pulled into shared objects from archives whole_archive_flag_spec_CXX='$convenience' fi archive_cmds_need_lc_CXX=yes - # This is similar to how AIX traditionally builds its shared - # libraries. - archive_expsym_cmds_CXX="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' + archive_expsym_cmds_CXX='$RM -r $output_objdir/$realname.d~$MKDIR $output_objdir/$realname.d' + # -brtl affects multiple linker settings, -berok does not and is overridden later + compiler_flags_filtered='`func_echo_all "$compiler_flags " | $SED -e "s%-brtl\\([, ]\\)%-berok\\1%g"`' + if test svr4 != "$with_aix_soname"; then + # This is similar to how AIX traditionally builds its shared + # libraries. Need -bnortl late, we may have -brtl in LDFLAGS. + archive_expsym_cmds_CXX="$archive_expsym_cmds_CXX"'~$CC '$shared_flag_aix' -o $output_objdir/$realname.d/$soname $libobjs $deplibs $wl-bnoentry '$compiler_flags_filtered'$wl-bE:$export_symbols$allow_undefined_flag~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$realname.d/$soname' + fi + if test aix != "$with_aix_soname"; then + archive_expsym_cmds_CXX="$archive_expsym_cmds_CXX"'~$CC '$shared_flag_svr4' -o $output_objdir/$realname.d/$shared_archive_member_spec.o $libobjs $deplibs $wl-bnoentry '$compiler_flags_filtered'$wl-bE:$export_symbols$allow_undefined_flag~$STRIP -e $output_objdir/$realname.d/$shared_archive_member_spec.o~( func_echo_all "#! $soname($shared_archive_member_spec.o)"; if test shr_64 = "$shared_archive_member_spec"; then func_echo_all "# 64"; else func_echo_all "# 32"; fi; cat $export_symbols ) > $output_objdir/$realname.d/$shared_archive_member_spec.imp~$AR $AR_FLAGS $output_objdir/$soname $output_objdir/$realname.d/$shared_archive_member_spec.o $output_objdir/$realname.d/$shared_archive_member_spec.imp' + else + # used by -dlpreopen to get the symbols + archive_expsym_cmds_CXX="$archive_expsym_cmds_CXX"'~$MV $output_objdir/$realname.d/$soname $output_objdir' + fi + archive_expsym_cmds_CXX="$archive_expsym_cmds_CXX"'~$RM -r $output_objdir/$realname.d' fi fi ;; @@ -15505,7 +16121,7 @@ allow_undefined_flag_CXX=unsupported # Joseph Beckenbach says some releases of gcc # support --undefined. This deserves some investigation. FIXME - archive_cmds_CXX='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + archive_cmds_CXX='$CC -nostart $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' else ld_shlibs_CXX=no fi @@ -15533,57 +16149,58 @@ # Tell ltmain to make .lib files, not .a files. libext=lib # Tell ltmain to make .dll files, not .so files. - shrext_cmds=".dll" + shrext_cmds=.dll # FIXME: Setting linknames here is a bad hack. - archive_cmds_CXX='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-dll~linknames=' - archive_expsym_cmds_CXX='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then - $SED -n -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' -e '1\\\!p' < $export_symbols > $output_objdir/$soname.exp; - else - $SED -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' < $export_symbols > $output_objdir/$soname.exp; - fi~ - $CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~ - linknames=' + archive_cmds_CXX='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~linknames=' + archive_expsym_cmds_CXX='if test DEF = "`$SED -n -e '\''s/^[ ]*//'\'' -e '\''/^\(;.*\)*$/d'\'' -e '\''s/^\(EXPORTS\|LIBRARY\)\([ ].*\)*$/DEF/p'\'' -e q $export_symbols`" ; then + cp "$export_symbols" "$output_objdir/$soname.def"; + echo "$tool_output_objdir$soname.def" > "$output_objdir/$soname.exp"; + else + $SED -e '\''s/^/-link -EXPORT:/'\'' < $export_symbols > $output_objdir/$soname.exp; + fi~ + $CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~ + linknames=' # The linker will not automatically build a static lib if we build a DLL. # _LT_TAGVAR(old_archive_from_new_cmds, CXX)='true' enable_shared_with_static_runtimes_CXX=yes # Don't use ranlib old_postinstall_cmds_CXX='chmod 644 $oldlib' postlink_cmds_CXX='lt_outputfile="@OUTPUT@"~ - lt_tool_outputfile="@TOOL_OUTPUT@"~ - case $lt_outputfile in - *.exe|*.EXE) ;; - *) - lt_outputfile="$lt_outputfile.exe" - lt_tool_outputfile="$lt_tool_outputfile.exe" - ;; - esac~ - func_to_tool_file "$lt_outputfile"~ - if test "$MANIFEST_TOOL" != ":" && test -f "$lt_outputfile.manifest"; then - $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1; - $RM "$lt_outputfile.manifest"; - fi' + lt_tool_outputfile="@TOOL_OUTPUT@"~ + case $lt_outputfile in + *.exe|*.EXE) ;; + *) + lt_outputfile=$lt_outputfile.exe + lt_tool_outputfile=$lt_tool_outputfile.exe + ;; + esac~ + func_to_tool_file "$lt_outputfile"~ + if test : != "$MANIFEST_TOOL" && test -f "$lt_outputfile.manifest"; then + $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1; + $RM "$lt_outputfile.manifest"; + fi' ;; *) # g++ # _LT_TAGVAR(hardcode_libdir_flag_spec, CXX) is actually meaningless, # as there is no search path for DLLs. hardcode_libdir_flag_spec_CXX='-L$libdir' - export_dynamic_flag_spec_CXX='${wl}--export-all-symbols' + export_dynamic_flag_spec_CXX='$wl--export-all-symbols' allow_undefined_flag_CXX=unsupported always_export_symbols_CXX=no enable_shared_with_static_runtimes_CXX=yes if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then - archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' - # If the export-symbols file already is a .def file (1st line - # is EXPORTS), use it as is; otherwise, prepend... - archive_expsym_cmds_CXX='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then - cp $export_symbols $output_objdir/$soname.def; - else - echo EXPORTS > $output_objdir/$soname.def; - cat $export_symbols >> $output_objdir/$soname.def; - fi~ - $CC -shared -nostdlib $output_objdir/$soname.def $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' + archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname $wl--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' + # If the export-symbols file already is a .def file, use it as + # is; otherwise, prepend EXPORTS... + archive_expsym_cmds_CXX='if test DEF = "`$SED -n -e '\''s/^[ ]*//'\'' -e '\''/^\(;.*\)*$/d'\'' -e '\''s/^\(EXPORTS\|LIBRARY\)\([ ].*\)*$/DEF/p'\'' -e q $export_symbols`" ; then + cp $export_symbols $output_objdir/$soname.def; + else + echo EXPORTS > $output_objdir/$soname.def; + cat $export_symbols >> $output_objdir/$soname.def; + fi~ + $CC -shared -nostdlib $output_objdir/$soname.def $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname $wl--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' else ld_shlibs_CXX=no fi @@ -15597,27 +16214,27 @@ hardcode_direct_CXX=no hardcode_automatic_CXX=yes hardcode_shlibpath_var_CXX=unsupported - if test "$lt_cv_ld_force_load" = "yes"; then - whole_archive_flag_spec_CXX='`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience ${wl}-force_load,$conv\"; done; func_echo_all \"$new_convenience\"`' + if test yes = "$lt_cv_ld_force_load"; then + whole_archive_flag_spec_CXX='`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience $wl-force_load,$conv\"; done; func_echo_all \"$new_convenience\"`' else whole_archive_flag_spec_CXX='' fi link_all_deplibs_CXX=yes - allow_undefined_flag_CXX="$_lt_dar_allow_undefined" + allow_undefined_flag_CXX=$_lt_dar_allow_undefined case $cc_basename in - ifort*) _lt_dar_can_shared=yes ;; + ifort*|nagfor*) _lt_dar_can_shared=yes ;; *) _lt_dar_can_shared=$GCC ;; esac - if test "$_lt_dar_can_shared" = "yes"; then + if test yes = "$_lt_dar_can_shared"; then output_verbose_link_cmd=func_echo_all - archive_cmds_CXX="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod${_lt_dsymutil}" - module_cmds_CXX="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dsymutil}" - archive_expsym_cmds_CXX="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring ${_lt_dar_single_mod}${_lt_dar_export_syms}${_lt_dsymutil}" - module_expsym_cmds_CXX="sed -e 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dar_export_syms}${_lt_dsymutil}" - if test "$lt_cv_apple_cc_single_mod" != "yes"; then - archive_cmds_CXX="\$CC -r -keep_private_externs -nostdlib -o \${lib}-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \${lib}-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring${_lt_dsymutil}" - archive_expsym_cmds_CXX="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -r -keep_private_externs -nostdlib -o \${lib}-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \${lib}-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring${_lt_dar_export_syms}${_lt_dsymutil}" + archive_cmds_CXX="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod$_lt_dsymutil" + module_cmds_CXX="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags$_lt_dsymutil" + archive_expsym_cmds_CXX="sed 's|^|_|' < \$export_symbols > \$output_objdir/\$libname-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod$_lt_dar_export_syms$_lt_dsymutil" + module_expsym_cmds_CXX="sed -e 's|^|_|' < \$export_symbols > \$output_objdir/\$libname-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags$_lt_dar_export_syms$_lt_dsymutil" + if test yes != "$lt_cv_apple_cc_single_mod"; then + archive_cmds_CXX="\$CC -r -keep_private_externs -nostdlib -o \$lib-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$lib-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring$_lt_dsymutil" + archive_expsym_cmds_CXX="sed 's|^|_|' < \$export_symbols > \$output_objdir/\$libname-symbols.expsym~\$CC -r -keep_private_externs -nostdlib -o \$lib-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$lib-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring$_lt_dar_export_syms$_lt_dsymutil" fi else @@ -15626,6 +16243,34 @@ ;; + os2*) + hardcode_libdir_flag_spec_CXX='-L$libdir' + hardcode_minus_L_CXX=yes + allow_undefined_flag_CXX=unsupported + shrext_cmds=.dll + archive_cmds_CXX='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~ + $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~ + $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~ + $ECHO EXPORTS >> $output_objdir/$libname.def~ + emxexp $libobjs | $SED /"_DLL_InitTerm"/d >> $output_objdir/$libname.def~ + $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ + emximp -o $lib $output_objdir/$libname.def' + archive_expsym_cmds_CXX='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~ + $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~ + $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~ + $ECHO EXPORTS >> $output_objdir/$libname.def~ + prefix_cmds="$SED"~ + if test EXPORTS = "`$SED 1q $export_symbols`"; then + prefix_cmds="$prefix_cmds -e 1d"; + fi~ + prefix_cmds="$prefix_cmds -e \"s/^\(.*\)$/_\1/g\""~ + cat $export_symbols | $prefix_cmds >> $output_objdir/$libname.def~ + $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ + emximp -o $lib $output_objdir/$libname.def' + old_archive_From_new_cmds_CXX='emximp -o $output_objdir/${libname}_dll.a $output_objdir/$libname.def' + enable_shared_with_static_runtimes_CXX=yes + ;; + dgux*) case $cc_basename in ec++*) @@ -15661,14 +16306,14 @@ ;; haiku*) - archive_cmds_CXX='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + archive_cmds_CXX='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' link_all_deplibs_CXX=yes ;; hpux9*) - hardcode_libdir_flag_spec_CXX='${wl}+b ${wl}$libdir' + hardcode_libdir_flag_spec_CXX='$wl+b $wl$libdir' hardcode_libdir_separator_CXX=: - export_dynamic_flag_spec_CXX='${wl}-E' + export_dynamic_flag_spec_CXX='$wl-E' hardcode_direct_CXX=yes hardcode_minus_L_CXX=yes # Not in the search PATH, # but as the default @@ -15680,7 +16325,7 @@ ld_shlibs_CXX=no ;; aCC*) - archive_cmds_CXX='$RM $output_objdir/$soname~$CC -b ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' + archive_cmds_CXX='$RM $output_objdir/$soname~$CC -b $wl+b $wl$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test "x$output_objdir/$soname" = "x$lib" || mv $output_objdir/$soname $lib' # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. @@ -15689,11 +16334,11 @@ # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. - output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $EGREP "\-L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' + output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $EGREP "\-L"`; list= ; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' ;; *) - if test "$GXX" = yes; then - archive_cmds_CXX='$RM $output_objdir/$soname~$CC -shared -nostdlib $pic_flag ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' + if test yes = "$GXX"; then + archive_cmds_CXX='$RM $output_objdir/$soname~$CC -shared -nostdlib $pic_flag $wl+b $wl$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test "x$output_objdir/$soname" = "x$lib" || mv $output_objdir/$soname $lib' else # FIXME: insert proper C++ library support ld_shlibs_CXX=no @@ -15703,15 +16348,15 @@ ;; hpux10*|hpux11*) - if test $with_gnu_ld = no; then - hardcode_libdir_flag_spec_CXX='${wl}+b ${wl}$libdir' + if test no = "$with_gnu_ld"; then + hardcode_libdir_flag_spec_CXX='$wl+b $wl$libdir' hardcode_libdir_separator_CXX=: case $host_cpu in hppa*64*|ia64*) ;; *) - export_dynamic_flag_spec_CXX='${wl}-E' + export_dynamic_flag_spec_CXX='$wl-E' ;; esac fi @@ -15737,13 +16382,13 @@ aCC*) case $host_cpu in hppa*64*) - archive_cmds_CXX='$CC -b ${wl}+h ${wl}$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + archive_cmds_CXX='$CC -b $wl+h $wl$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; ia64*) - archive_cmds_CXX='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + archive_cmds_CXX='$CC -b $wl+h $wl$soname $wl+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; *) - archive_cmds_CXX='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + archive_cmds_CXX='$CC -b $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; esac # Commands to make compiler produce verbose output that lists @@ -15754,20 +16399,20 @@ # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. - output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $GREP "\-L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' + output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $GREP "\-L"`; list= ; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' ;; *) - if test "$GXX" = yes; then - if test $with_gnu_ld = no; then + if test yes = "$GXX"; then + if test no = "$with_gnu_ld"; then case $host_cpu in hppa*64*) - archive_cmds_CXX='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + archive_cmds_CXX='$CC -shared -nostdlib -fPIC $wl+h $wl$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; ia64*) - archive_cmds_CXX='$CC -shared -nostdlib $pic_flag ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + archive_cmds_CXX='$CC -shared -nostdlib $pic_flag $wl+h $wl$soname $wl+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; *) - archive_cmds_CXX='$CC -shared -nostdlib $pic_flag ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + archive_cmds_CXX='$CC -shared -nostdlib $pic_flag $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; esac fi @@ -15782,22 +16427,22 @@ interix[3-9]*) hardcode_direct_CXX=no hardcode_shlibpath_var_CXX=no - hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir' - export_dynamic_flag_spec_CXX='${wl}-E' + hardcode_libdir_flag_spec_CXX='$wl-rpath,$libdir' + export_dynamic_flag_spec_CXX='$wl-E' # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. # Instead, shared libraries are loaded at an image base (0x10000000 by # default) and relocated if they conflict, which is a slow very memory # consuming and fragmenting process. To avoid this, we pick a random, # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link # time. Moving up from 0x10000000 also allows more sbrk(2) space. - archive_cmds_CXX='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' - archive_expsym_cmds_CXX='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' + archive_cmds_CXX='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-h,$soname $wl--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' + archive_expsym_cmds_CXX='sed "s|^|_|" $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-h,$soname $wl--retain-symbols-file,$output_objdir/$soname.expsym $wl--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' ;; irix5* | irix6*) case $cc_basename in CC*) # SGI C++ - archive_cmds_CXX='$CC -shared -all -multigot $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' + archive_cmds_CXX='$CC -shared -all -multigot $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib' # Archives containing C++ object files must be created using # "CC -ar", where "CC" is the IRIX C++ compiler. This is @@ -15806,17 +16451,17 @@ old_archive_cmds_CXX='$CC -ar -WR,-u -o $oldlib $oldobjs' ;; *) - if test "$GXX" = yes; then - if test "$with_gnu_ld" = no; then - archive_cmds_CXX='$CC -shared $pic_flag -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + if test yes = "$GXX"; then + if test no = "$with_gnu_ld"; then + archive_cmds_CXX='$CC -shared $pic_flag -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib' else - archive_cmds_CXX='$CC -shared $pic_flag -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` -o $lib' + archive_cmds_CXX='$CC -shared $pic_flag -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` -o $lib' fi fi link_all_deplibs_CXX=yes ;; esac - hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir' + hardcode_libdir_flag_spec_CXX='$wl-rpath $wl$libdir' hardcode_libdir_separator_CXX=: inherit_rpath_CXX=yes ;; @@ -15829,8 +16474,8 @@ # KCC will only create a shared library if the output file # ends with ".so" (or ".sl" for HP-UX), so rename the library # to its proper name (with version) after linking. - archive_cmds_CXX='tempext=`echo $shared_ext | $SED -e '\''s/\([^()0-9A-Za-z{}]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' - archive_expsym_cmds_CXX='tempext=`echo $shared_ext | $SED -e '\''s/\([^()0-9A-Za-z{}]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib ${wl}-retain-symbols-file,$export_symbols; mv \$templib $lib' + archive_cmds_CXX='tempext=`echo $shared_ext | $SED -e '\''s/\([^()0-9A-Za-z{}]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\$tempext\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' + archive_expsym_cmds_CXX='tempext=`echo $shared_ext | $SED -e '\''s/\([^()0-9A-Za-z{}]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\$tempext\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib $wl-retain-symbols-file,$export_symbols; mv \$templib $lib' # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. @@ -15839,10 +16484,10 @@ # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. - output_verbose_link_cmd='templist=`$CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 | $GREP "ld"`; rm -f libconftest$shared_ext; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' + output_verbose_link_cmd='templist=`$CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 | $GREP "ld"`; rm -f libconftest$shared_ext; list= ; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' - hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir' - export_dynamic_flag_spec_CXX='${wl}--export-dynamic' + hardcode_libdir_flag_spec_CXX='$wl-rpath,$libdir' + export_dynamic_flag_spec_CXX='$wl--export-dynamic' # Archives containing C++ object files must be created using # "CC -Bstatic", where "CC" is the KAI C++ compiler. @@ -15856,59 +16501,59 @@ # earlier do not add the objects themselves. case `$CC -V 2>&1` in *"Version 7."*) - archive_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' - archive_expsym_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + archive_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname -o $lib' + archive_expsym_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' ;; *) # Version 8.0 or newer tmp_idyn= case $host_cpu in ia64*) tmp_idyn=' -i_dynamic';; esac - archive_cmds_CXX='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - archive_expsym_cmds_CXX='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + archive_cmds_CXX='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' + archive_expsym_cmds_CXX='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' ;; esac archive_cmds_need_lc_CXX=no - hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir' - export_dynamic_flag_spec_CXX='${wl}--export-dynamic' - whole_archive_flag_spec_CXX='${wl}--whole-archive$convenience ${wl}--no-whole-archive' + hardcode_libdir_flag_spec_CXX='$wl-rpath,$libdir' + export_dynamic_flag_spec_CXX='$wl--export-dynamic' + whole_archive_flag_spec_CXX='$wl--whole-archive$convenience $wl--no-whole-archive' ;; pgCC* | pgcpp*) # Portland Group C++ compiler case `$CC -V` in *pgCC\ [1-5].* | *pgcpp\ [1-5].*) prelink_cmds_CXX='tpldir=Template.dir~ - rm -rf $tpldir~ - $CC --prelink_objects --instantiation_dir $tpldir $objs $libobjs $compile_deplibs~ - compile_command="$compile_command `find $tpldir -name \*.o | sort | $NL2SP`"' + rm -rf $tpldir~ + $CC --prelink_objects --instantiation_dir $tpldir $objs $libobjs $compile_deplibs~ + compile_command="$compile_command `find $tpldir -name \*.o | sort | $NL2SP`"' old_archive_cmds_CXX='tpldir=Template.dir~ - rm -rf $tpldir~ - $CC --prelink_objects --instantiation_dir $tpldir $oldobjs$old_deplibs~ - $AR $AR_FLAGS $oldlib$oldobjs$old_deplibs `find $tpldir -name \*.o | sort | $NL2SP`~ - $RANLIB $oldlib' + rm -rf $tpldir~ + $CC --prelink_objects --instantiation_dir $tpldir $oldobjs$old_deplibs~ + $AR $AR_FLAGS $oldlib$oldobjs$old_deplibs `find $tpldir -name \*.o | sort | $NL2SP`~ + $RANLIB $oldlib' archive_cmds_CXX='tpldir=Template.dir~ - rm -rf $tpldir~ - $CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~ - $CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | sort | $NL2SP` $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname -o $lib' + rm -rf $tpldir~ + $CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~ + $CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | sort | $NL2SP` $postdep_objects $compiler_flags $wl-soname $wl$soname -o $lib' archive_expsym_cmds_CXX='tpldir=Template.dir~ - rm -rf $tpldir~ - $CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~ - $CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | sort | $NL2SP` $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname ${wl}-retain-symbols-file ${wl}$export_symbols -o $lib' + rm -rf $tpldir~ + $CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~ + $CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | sort | $NL2SP` $postdep_objects $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' ;; *) # Version 6 and above use weak symbols - archive_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname -o $lib' - archive_expsym_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname ${wl}-retain-symbols-file ${wl}$export_symbols -o $lib' + archive_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname -o $lib' + archive_expsym_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' ;; esac - hardcode_libdir_flag_spec_CXX='${wl}--rpath ${wl}$libdir' - export_dynamic_flag_spec_CXX='${wl}--export-dynamic' - whole_archive_flag_spec_CXX='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' + hardcode_libdir_flag_spec_CXX='$wl--rpath $wl$libdir' + export_dynamic_flag_spec_CXX='$wl--export-dynamic' + whole_archive_flag_spec_CXX='$wl--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' ;; cxx*) # Compaq C++ - archive_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' - archive_expsym_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib ${wl}-retain-symbols-file $wl$export_symbols' + archive_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname -o $lib' + archive_expsym_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname -o $lib $wl-retain-symbols-file $wl$export_symbols' runpath_var=LD_RUN_PATH hardcode_libdir_flag_spec_CXX='-rpath $libdir' @@ -15922,18 +16567,18 @@ # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. - output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld"`; templist=`func_echo_all "$templist" | $SED "s/\(^.*ld.*\)\( .*ld .*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "X$list" | $Xsed' + output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld"`; templist=`func_echo_all "$templist" | $SED "s/\(^.*ld.*\)\( .*ld .*$\)/\1/"`; list= ; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "X$list" | $Xsed' ;; xl* | mpixl* | bgxl*) # IBM XL 8.0 on PPC, with GNU ld - hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir' - export_dynamic_flag_spec_CXX='${wl}--export-dynamic' - archive_cmds_CXX='$CC -qmkshrobj $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - if test "x$supports_anon_versioning" = xyes; then + hardcode_libdir_flag_spec_CXX='$wl-rpath $wl$libdir' + export_dynamic_flag_spec_CXX='$wl--export-dynamic' + archive_cmds_CXX='$CC -qmkshrobj $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' + if test yes = "$supports_anon_versioning"; then archive_expsym_cmds_CXX='echo "{ global:" > $output_objdir/$libname.ver~ - cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ - echo "local: *; };" >> $output_objdir/$libname.ver~ - $CC -qmkshrobj $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib' + cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ + echo "local: *; };" >> $output_objdir/$libname.ver~ + $CC -qmkshrobj $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-version-script $wl$output_objdir/$libname.ver -o $lib' fi ;; *) @@ -15941,10 +16586,10 @@ *Sun\ C*) # Sun C++ 5.9 no_undefined_flag_CXX=' -zdefs' - archive_cmds_CXX='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' - archive_expsym_cmds_CXX='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-retain-symbols-file ${wl}$export_symbols' + archive_cmds_CXX='$CC -G$allow_undefined_flag -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + archive_expsym_cmds_CXX='$CC -G$allow_undefined_flag -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-retain-symbols-file $wl$export_symbols' hardcode_libdir_flag_spec_CXX='-R$libdir' - whole_archive_flag_spec_CXX='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' + whole_archive_flag_spec_CXX='$wl--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' compiler_needs_object_CXX=yes # Not sure whether something based on @@ -16002,22 +16647,17 @@ ld_shlibs_CXX=yes ;; - openbsd2*) - # C++ shared libraries are fairly broken - ld_shlibs_CXX=no - ;; - - openbsd*) + openbsd* | bitrig*) if test -f /usr/libexec/ld.so; then hardcode_direct_CXX=yes hardcode_shlibpath_var_CXX=no hardcode_direct_absolute_CXX=yes archive_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib' - hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir' - if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then - archive_expsym_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-retain-symbols-file,$export_symbols -o $lib' - export_dynamic_flag_spec_CXX='${wl}-E' - whole_archive_flag_spec_CXX="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' + hardcode_libdir_flag_spec_CXX='$wl-rpath,$libdir' + if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`"; then + archive_expsym_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-retain-symbols-file,$export_symbols -o $lib' + export_dynamic_flag_spec_CXX='$wl-E' + whole_archive_flag_spec_CXX=$wlarc'--whole-archive$convenience '$wlarc'--no-whole-archive' fi output_verbose_link_cmd=func_echo_all else @@ -16033,9 +16673,9 @@ # KCC will only create a shared library if the output file # ends with ".so" (or ".sl" for HP-UX), so rename the library # to its proper name (with version) after linking. - archive_cmds_CXX='tempext=`echo $shared_ext | $SED -e '\''s/\([^()0-9A-Za-z{}]\)/\\\\\1/g'\''`; templib=`echo "$lib" | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' + archive_cmds_CXX='tempext=`echo $shared_ext | $SED -e '\''s/\([^()0-9A-Za-z{}]\)/\\\\\1/g'\''`; templib=`echo "$lib" | $SED -e "s/\$tempext\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' - hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir' + hardcode_libdir_flag_spec_CXX='$wl-rpath,$libdir' hardcode_libdir_separator_CXX=: # Archives containing C++ object files must be created using @@ -16053,17 +16693,17 @@ cxx*) case $host in osf3*) - allow_undefined_flag_CXX=' ${wl}-expect_unresolved ${wl}\*' - archive_cmds_CXX='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $soname `test -n "$verstring" && func_echo_all "${wl}-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' - hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir' + allow_undefined_flag_CXX=' $wl-expect_unresolved $wl\*' + archive_cmds_CXX='$CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $soname `test -n "$verstring" && func_echo_all "$wl-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib' + hardcode_libdir_flag_spec_CXX='$wl-rpath $wl$libdir' ;; *) allow_undefined_flag_CXX=' -expect_unresolved \*' - archive_cmds_CXX='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' + archive_cmds_CXX='$CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib' archive_expsym_cmds_CXX='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done~ - echo "-hidden">> $lib.exp~ - $CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname ${wl}-input ${wl}$lib.exp `test -n "$verstring" && $ECHO "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib~ - $RM $lib.exp' + echo "-hidden">> $lib.exp~ + $CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname $wl-input $wl$lib.exp `test -n "$verstring" && $ECHO "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib~ + $RM $lib.exp' hardcode_libdir_flag_spec_CXX='-rpath $libdir' ;; esac @@ -16078,21 +16718,21 @@ # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. - output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld" | $GREP -v "ld:"`; templist=`func_echo_all "$templist" | $SED "s/\(^.*ld.*\)\( .*ld.*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' + output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld" | $GREP -v "ld:"`; templist=`func_echo_all "$templist" | $SED "s/\(^.*ld.*\)\( .*ld.*$\)/\1/"`; list= ; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' ;; *) - if test "$GXX" = yes && test "$with_gnu_ld" = no; then - allow_undefined_flag_CXX=' ${wl}-expect_unresolved ${wl}\*' + if test yes,no = "$GXX,$with_gnu_ld"; then + allow_undefined_flag_CXX=' $wl-expect_unresolved $wl\*' case $host in osf3*) - archive_cmds_CXX='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + archive_cmds_CXX='$CC -shared -nostdlib $allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib' ;; *) - archive_cmds_CXX='$CC -shared $pic_flag -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + archive_cmds_CXX='$CC -shared $pic_flag -nostdlib $allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-msym $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib' ;; esac - hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir' + hardcode_libdir_flag_spec_CXX='$wl-rpath $wl$libdir' hardcode_libdir_separator_CXX=: # Commands to make compiler produce verbose output that lists @@ -16138,9 +16778,9 @@ # Sun C++ 4.2, 5.x and Centerline C++ archive_cmds_need_lc_CXX=yes no_undefined_flag_CXX=' -zdefs' - archive_cmds_CXX='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + archive_cmds_CXX='$CC -G$allow_undefined_flag -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' archive_expsym_cmds_CXX='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ - $CC -G${allow_undefined_flag} ${wl}-M ${wl}$lib.exp -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp' + $CC -G$allow_undefined_flag $wl-M $wl$lib.exp -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp' hardcode_libdir_flag_spec_CXX='-R$libdir' hardcode_shlibpath_var_CXX=no @@ -16148,7 +16788,7 @@ solaris2.[0-5] | solaris2.[0-5].*) ;; *) # The compiler driver will combine and reorder linker options, - # but understands `-z linker_flag'. + # but understands '-z linker_flag'. # Supported since Solaris 2.6 (maybe 2.5.1?) whole_archive_flag_spec_CXX='-z allextract$convenience -z defaultextract' ;; @@ -16165,30 +16805,30 @@ ;; gcx*) # Green Hills C++ Compiler - archive_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' + archive_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-h $wl$soname -o $lib' # The C++ compiler must be used to create the archive. old_archive_cmds_CXX='$CC $LDFLAGS -archive -o $oldlib $oldobjs' ;; *) # GNU C++ compiler with Solaris linker - if test "$GXX" = yes && test "$with_gnu_ld" = no; then - no_undefined_flag_CXX=' ${wl}-z ${wl}defs' + if test yes,no = "$GXX,$with_gnu_ld"; then + no_undefined_flag_CXX=' $wl-z ${wl}defs' if $CC --version | $GREP -v '^2\.7' > /dev/null; then - archive_cmds_CXX='$CC -shared $pic_flag -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' + archive_cmds_CXX='$CC -shared $pic_flag -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-h $wl$soname -o $lib' archive_expsym_cmds_CXX='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ - $CC -shared $pic_flag -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp' + $CC -shared $pic_flag -nostdlib $wl-M $wl$lib.exp $wl-h $wl$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp' # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' else - # g++ 2.7 appears to require `-G' NOT `-shared' on this + # g++ 2.7 appears to require '-G' NOT '-shared' on this # platform. - archive_cmds_CXX='$CC -G -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' + archive_cmds_CXX='$CC -G -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-h $wl$soname -o $lib' archive_expsym_cmds_CXX='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ - $CC -G -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp' + $CC -G -nostdlib $wl-M $wl$lib.exp $wl-h $wl$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp' # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when @@ -16196,11 +16836,11 @@ output_verbose_link_cmd='$CC -G $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' fi - hardcode_libdir_flag_spec_CXX='${wl}-R $wl$libdir' + hardcode_libdir_flag_spec_CXX='$wl-R $wl$libdir' case $host_os in solaris2.[0-5] | solaris2.[0-5].*) ;; *) - whole_archive_flag_spec_CXX='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract' + whole_archive_flag_spec_CXX='$wl-z ${wl}allextract$convenience $wl-z ${wl}defaultextract' ;; esac fi @@ -16209,52 +16849,52 @@ ;; sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[01].[10]* | unixware7* | sco3.2v5.0.[024]*) - no_undefined_flag_CXX='${wl}-z,text' + no_undefined_flag_CXX='$wl-z,text' archive_cmds_need_lc_CXX=no hardcode_shlibpath_var_CXX=no runpath_var='LD_RUN_PATH' case $cc_basename in CC*) - archive_cmds_CXX='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - archive_expsym_cmds_CXX='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_cmds_CXX='$CC -G $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds_CXX='$CC -G $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' ;; *) - archive_cmds_CXX='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - archive_expsym_cmds_CXX='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_cmds_CXX='$CC -shared $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds_CXX='$CC -shared $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' ;; esac ;; sysv5* | sco3.2v5* | sco5v6*) - # Note: We can NOT use -z defs as we might desire, because we do not + # Note: We CANNOT use -z defs as we might desire, because we do not # link with -lc, and that would cause any symbols used from libc to # always be unresolved, which means just about no library would # ever link correctly. If we're not using GNU ld we use -z text # though, which does catch some bad symbols but isn't as heavy-handed # as -z defs. - no_undefined_flag_CXX='${wl}-z,text' - allow_undefined_flag_CXX='${wl}-z,nodefs' + no_undefined_flag_CXX='$wl-z,text' + allow_undefined_flag_CXX='$wl-z,nodefs' archive_cmds_need_lc_CXX=no hardcode_shlibpath_var_CXX=no - hardcode_libdir_flag_spec_CXX='${wl}-R,$libdir' + hardcode_libdir_flag_spec_CXX='$wl-R,$libdir' hardcode_libdir_separator_CXX=':' link_all_deplibs_CXX=yes - export_dynamic_flag_spec_CXX='${wl}-Bexport' + export_dynamic_flag_spec_CXX='$wl-Bexport' runpath_var='LD_RUN_PATH' case $cc_basename in CC*) - archive_cmds_CXX='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - archive_expsym_cmds_CXX='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_cmds_CXX='$CC -G $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds_CXX='$CC -G $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' old_archive_cmds_CXX='$CC -Tprelink_objects $oldobjs~ - '"$old_archive_cmds_CXX" + '"$old_archive_cmds_CXX" reload_cmds_CXX='$CC -Tprelink_objects $reload_objs~ - '"$reload_cmds_CXX" + '"$reload_cmds_CXX" ;; *) - archive_cmds_CXX='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - archive_expsym_cmds_CXX='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_cmds_CXX='$CC -shared $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds_CXX='$CC -shared $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' ;; esac ;; @@ -16286,10 +16926,10 @@ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ld_shlibs_CXX" >&5 $as_echo "$ld_shlibs_CXX" >&6; } - test "$ld_shlibs_CXX" = no && can_build_shared=no + test no = "$ld_shlibs_CXX" && can_build_shared=no - GCC_CXX="$GXX" - LD_CXX="$LD" + GCC_CXX=$GXX + LD_CXX=$LD ## CAVEAT EMPTOR: ## There is no encapsulation within the following macros, do not change @@ -16333,13 +16973,13 @@ pre_test_object_deps_done=no for p in `eval "$output_verbose_link_cmd"`; do - case ${prev}${p} in + case $prev$p in -L* | -R* | -l*) # Some compilers place space between "-{L,R}" and the path. # Remove the space. - if test $p = "-L" || - test $p = "-R"; then + if test x-L = "$p" || + test x-R = "$p"; then prev=$p continue fi @@ -16355,16 +16995,16 @@ case $p in =*) func_stripname_cnf '=' '' "$p"; p=$lt_sysroot$func_stripname_result ;; esac - if test "$pre_test_object_deps_done" = no; then - case ${prev} in + if test no = "$pre_test_object_deps_done"; then + case $prev in -L | -R) # Internal compiler library paths should come after those # provided the user. The postdeps already come after the # user supplied libs so there is no need to process them. if test -z "$compiler_lib_search_path_CXX"; then - compiler_lib_search_path_CXX="${prev}${p}" + compiler_lib_search_path_CXX=$prev$p else - compiler_lib_search_path_CXX="${compiler_lib_search_path_CXX} ${prev}${p}" + compiler_lib_search_path_CXX="${compiler_lib_search_path_CXX} $prev$p" fi ;; # The "-l" case would never come before the object being @@ -16372,9 +17012,9 @@ esac else if test -z "$postdeps_CXX"; then - postdeps_CXX="${prev}${p}" + postdeps_CXX=$prev$p else - postdeps_CXX="${postdeps_CXX} ${prev}${p}" + postdeps_CXX="${postdeps_CXX} $prev$p" fi fi prev= @@ -16389,15 +17029,15 @@ continue fi - if test "$pre_test_object_deps_done" = no; then + if test no = "$pre_test_object_deps_done"; then if test -z "$predep_objects_CXX"; then - predep_objects_CXX="$p" + predep_objects_CXX=$p else predep_objects_CXX="$predep_objects_CXX $p" fi else if test -z "$postdep_objects_CXX"; then - postdep_objects_CXX="$p" + postdep_objects_CXX=$p else postdep_objects_CXX="$postdep_objects_CXX $p" fi @@ -16427,51 +17067,6 @@ postdep_objects_CXX= postdeps_CXX= ;; - -linux*) - case `$CC -V 2>&1 | sed 5q` in - *Sun\ C*) - # Sun C++ 5.9 - - # The more standards-conforming stlport4 library is - # incompatible with the Cstd library. Avoid specifying - # it if it's in CXXFLAGS. Ignore libCrun as - # -library=stlport4 depends on it. - case " $CXX $CXXFLAGS " in - *" -library=stlport4 "*) - solaris_use_stlport4=yes - ;; - esac - - if test "$solaris_use_stlport4" != yes; then - postdeps_CXX='-library=Cstd -library=Crun' - fi - ;; - esac - ;; - -solaris*) - case $cc_basename in - CC* | sunCC*) - # The more standards-conforming stlport4 library is - # incompatible with the Cstd library. Avoid specifying - # it if it's in CXXFLAGS. Ignore libCrun as - # -library=stlport4 depends on it. - case " $CXX $CXXFLAGS " in - *" -library=stlport4 "*) - solaris_use_stlport4=yes - ;; - esac - - # Adding this requires a known-good setup of shared libraries for - # Sun compiler versions before 5.6, else PIC objects from an old - # archive will be linked into the output, leading to subtle bugs. - if test "$solaris_use_stlport4" != yes; then - postdeps_CXX='-library=Cstd -library=Crun' - fi - ;; - esac - ;; esac @@ -16480,7 +17075,7 @@ esac compiler_lib_search_dirs_CXX= if test -n "${compiler_lib_search_path_CXX}"; then - compiler_lib_search_dirs_CXX=`echo " ${compiler_lib_search_path_CXX}" | ${SED} -e 's! -L! !g' -e 's!^ !!'` + compiler_lib_search_dirs_CXX=`echo " ${compiler_lib_search_path_CXX}" | $SED -e 's! -L! !g' -e 's!^ !!'` fi @@ -16519,17 +17114,18 @@ # C++ specific cases for pic, static, wl, etc. - if test "$GXX" = yes; then + if test yes = "$GXX"; then lt_prog_compiler_wl_CXX='-Wl,' lt_prog_compiler_static_CXX='-static' case $host_os in aix*) # All AIX code is PIC. - if test "$host_cpu" = ia64; then + if test ia64 = "$host_cpu"; then # AIX 5 now supports IA64 processor lt_prog_compiler_static_CXX='-Bstatic' fi + lt_prog_compiler_pic_CXX='-fPIC' ;; amigaos*) @@ -16540,8 +17136,8 @@ ;; m68k) # FIXME: we need at least 68020 code to build shared libraries, but - # adding the `-m68020' flag to GCC prevents building anything better, - # like `-m68040'. + # adding the '-m68020' flag to GCC prevents building anything better, + # like '-m68040'. lt_prog_compiler_pic_CXX='-m68020 -resident32 -malways-restore-a4' ;; esac @@ -16556,6 +17152,11 @@ # Although the cygwin gcc ignores -fPIC, still need this for old-style # (--disable-auto-import) libraries lt_prog_compiler_pic_CXX='-DDLL_EXPORT' + case $host_os in + os2*) + lt_prog_compiler_static_CXX='$wl-static' + ;; + esac ;; darwin* | rhapsody*) # PIC is the default on this platform @@ -16605,7 +17206,7 @@ case $host_os in aix[4-9]*) # All AIX code is PIC. - if test "$host_cpu" = ia64; then + if test ia64 = "$host_cpu"; then # AIX 5 now supports IA64 processor lt_prog_compiler_static_CXX='-Bstatic' else @@ -16645,14 +17246,14 @@ case $cc_basename in CC*) lt_prog_compiler_wl_CXX='-Wl,' - lt_prog_compiler_static_CXX='${wl}-a ${wl}archive' - if test "$host_cpu" != ia64; then + lt_prog_compiler_static_CXX='$wl-a ${wl}archive' + if test ia64 != "$host_cpu"; then lt_prog_compiler_pic_CXX='+Z' fi ;; aCC*) lt_prog_compiler_wl_CXX='-Wl,' - lt_prog_compiler_static_CXX='${wl}-a ${wl}archive' + lt_prog_compiler_static_CXX='$wl-a ${wl}archive' case $host_cpu in hppa*64*|ia64*) # +Z the default @@ -16689,7 +17290,7 @@ lt_prog_compiler_pic_CXX='-fPIC' ;; ecpc* ) - # old Intel C++ for x86_64 which still supported -KPIC. + # old Intel C++ for x86_64, which still supported -KPIC. lt_prog_compiler_wl_CXX='-Wl,' lt_prog_compiler_pic_CXX='-KPIC' lt_prog_compiler_static_CXX='-static' @@ -16834,7 +17435,7 @@ fi case $host_os in - # For platforms which do not support PIC, -DPIC is meaningless: + # For platforms that do not support PIC, -DPIC is meaningless: *djgpp*) lt_prog_compiler_pic_CXX= ;; @@ -16866,7 +17467,7 @@ lt_cv_prog_compiler_pic_works_CXX=no ac_outfile=conftest.$ac_objext echo "$lt_simple_compile_test_code" > conftest.$ac_ext - lt_compiler_flag="$lt_prog_compiler_pic_CXX -DPIC" + lt_compiler_flag="$lt_prog_compiler_pic_CXX -DPIC" ## exclude from sc_useless_quotes_in_assignment # Insert the option either (1) after the last *FLAGS variable, or # (2) before a word containing "conftest.", or (3) at the end. # Note that $ac_compile itself does not contain backslashes and begins @@ -16896,7 +17497,7 @@ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic_works_CXX" >&5 $as_echo "$lt_cv_prog_compiler_pic_works_CXX" >&6; } -if test x"$lt_cv_prog_compiler_pic_works_CXX" = xyes; then +if test yes = "$lt_cv_prog_compiler_pic_works_CXX"; then case $lt_prog_compiler_pic_CXX in "" | " "*) ;; *) lt_prog_compiler_pic_CXX=" $lt_prog_compiler_pic_CXX" ;; @@ -16922,7 +17523,7 @@ $as_echo_n "(cached) " >&6 else lt_cv_prog_compiler_static_works_CXX=no - save_LDFLAGS="$LDFLAGS" + save_LDFLAGS=$LDFLAGS LDFLAGS="$LDFLAGS $lt_tmp_static_flag" echo "$lt_simple_link_test_code" > conftest.$ac_ext if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then @@ -16941,13 +17542,13 @@ fi fi $RM -r conftest* - LDFLAGS="$save_LDFLAGS" + LDFLAGS=$save_LDFLAGS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_static_works_CXX" >&5 $as_echo "$lt_cv_prog_compiler_static_works_CXX" >&6; } -if test x"$lt_cv_prog_compiler_static_works_CXX" = xyes; then +if test yes = "$lt_cv_prog_compiler_static_works_CXX"; then : else lt_prog_compiler_static_CXX= @@ -17061,8 +17662,8 @@ -hard_links="nottested" -if test "$lt_cv_prog_compiler_c_o_CXX" = no && test "$need_locks" != no; then +hard_links=nottested +if test no = "$lt_cv_prog_compiler_c_o_CXX" && test no != "$need_locks"; then # do not overwrite the value of need_locks provided by the user { $as_echo "$as_me:${as_lineno-$LINENO}: checking if we can lock with hard links" >&5 $as_echo_n "checking if we can lock with hard links... " >&6; } @@ -17074,9 +17675,9 @@ ln conftest.a conftest.b 2>/dev/null && hard_links=no { $as_echo "$as_me:${as_lineno-$LINENO}: result: $hard_links" >&5 $as_echo "$hard_links" >&6; } - if test "$hard_links" = no; then - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5 -$as_echo "$as_me: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2;} + if test no = "$hard_links"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: '$CC' does not support '-c -o', so 'make -j' may be unsafe" >&5 +$as_echo "$as_me: WARNING: '$CC' does not support '-c -o', so 'make -j' may be unsafe" >&2;} need_locks=warn fi else @@ -17093,17 +17694,21 @@ case $host_os in aix[4-9]*) # If we're using GNU nm, then we don't want the "-C" option. - # -C means demangle to AIX nm, but means don't demangle with GNU nm - # Also, AIX nm treats weak defined symbols like other global defined - # symbols, whereas GNU nm marks them as "W". + # -C means demangle to GNU nm, but means don't demangle to AIX nm. + # Without the "-l" option, or with the "-B" option, AIX nm treats + # weak defined symbols like other global defined symbols, whereas + # GNU nm marks them as "W". + # While the 'weak' keyword is ignored in the Export File, we need + # it in the Import File for the 'aix-soname' feature, so we have + # to replace the "-B" option with "-P" for AIX nm. if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then - export_symbols_cmds_CXX='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W")) && (substr(\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' + export_symbols_cmds_CXX='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W")) && (substr(\$ 3,1,1) != ".")) { if (\$ 2 == "W") { print \$ 3 " weak" } else { print \$ 3 } } }'\'' | sort -u > $export_symbols' else - export_symbols_cmds_CXX='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && (substr(\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' + export_symbols_cmds_CXX='`func_echo_all $NM | $SED -e '\''s/B\([^B]*\)$/P\1/'\''` -PCpgl $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W") || (\$ 2 == "V") || (\$ 2 == "Z")) && (substr(\$ 1,1,1) != ".")) { if ((\$ 2 == "W") || (\$ 2 == "V") || (\$ 2 == "Z")) { print \$ 1 " weak" } else { print \$ 1 } } }'\'' | sort -u > $export_symbols' fi ;; pw32*) - export_symbols_cmds_CXX="$ltdll_cmds" + export_symbols_cmds_CXX=$ltdll_cmds ;; cygwin* | mingw* | cegcc*) case $cc_basename in @@ -17126,7 +17731,7 @@ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ld_shlibs_CXX" >&5 $as_echo "$ld_shlibs_CXX" >&6; } -test "$ld_shlibs_CXX" = no && can_build_shared=no +test no = "$ld_shlibs_CXX" && can_build_shared=no with_gnu_ld_CXX=$with_gnu_ld @@ -17143,7 +17748,7 @@ # Assume -lc should be added archive_cmds_need_lc_CXX=yes - if test "$enable_shared" = yes && test "$GCC" = yes; then + if test yes,yes = "$GCC,$enable_shared"; then case $archive_cmds_CXX in *'~'*) # FIXME: we may have to deal with multi-command sequences. @@ -17271,7 +17876,7 @@ library_names_spec= libname_spec='lib$name' soname_spec= -shrext_cmds=".so" +shrext_cmds=.so postinstall_cmds= postuninstall_cmds= finish_cmds= @@ -17288,14 +17893,16 @@ # flags to be left without arguments need_version=unknown + + case $host_os in aix3*) version_type=linux # correct to gnu/linux during the next big refactor - library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a' + library_names_spec='$libname$release$shared_ext$versuffix $libname.a' shlibpath_var=LIBPATH # AIX 3 has no versioning support, so we append a major version to the name. - soname_spec='${libname}${release}${shared_ext}$major' + soname_spec='$libname$release$shared_ext$major' ;; aix[4-9]*) @@ -17303,41 +17910,91 @@ need_lib_prefix=no need_version=no hardcode_into_libs=yes - if test "$host_cpu" = ia64; then + if test ia64 = "$host_cpu"; then # AIX 5 supports IA64 - library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}' + library_names_spec='$libname$release$shared_ext$major $libname$release$shared_ext$versuffix $libname$shared_ext' shlibpath_var=LD_LIBRARY_PATH else # With GCC up to 2.95.x, collect2 would create an import file # for dependence libraries. The import file would start with - # the line `#! .'. This would cause the generated library to - # depend on `.', always an invalid library. This was fixed in + # the line '#! .'. This would cause the generated library to + # depend on '.', always an invalid library. This was fixed in # development snapshots of GCC prior to 3.0. case $host_os in aix4 | aix4.[01] | aix4.[01].*) if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)' echo ' yes ' - echo '#endif'; } | ${CC} -E - | $GREP yes > /dev/null; then + echo '#endif'; } | $CC -E - | $GREP yes > /dev/null; then : else can_build_shared=no fi ;; esac - # AIX (on Power*) has no versioning support, so currently we can not hardcode correct + # Using Import Files as archive members, it is possible to support + # filename-based versioning of shared library archives on AIX. While + # this would work for both with and without runtime linking, it will + # prevent static linking of such archives. So we do filename-based + # shared library versioning with .so extension only, which is used + # when both runtime linking and shared linking is enabled. + # Unfortunately, runtime linking may impact performance, so we do + # not want this to be the default eventually. Also, we use the + # versioned .so libs for executables only if there is the -brtl + # linker flag in LDFLAGS as well, or --with-aix-soname=svr4 only. + # To allow for filename-based versioning support, we need to create + # libNAME.so.V as an archive file, containing: + # *) an Import File, referring to the versioned filename of the + # archive as well as the shared archive member, telling the + # bitwidth (32 or 64) of that shared object, and providing the + # list of exported symbols of that shared object, eventually + # decorated with the 'weak' keyword + # *) the shared object with the F_LOADONLY flag set, to really avoid + # it being seen by the linker. + # At run time we better use the real file rather than another symlink, + # but for link time we create the symlink libNAME.so -> libNAME.so.V + + case $with_aix_soname,$aix_use_runtimelinking in + # AIX (on Power*) has no versioning support, so currently we cannot hardcode correct # soname into executable. Probably we can add versioning support to # collect2, so additional links can be useful in future. - if test "$aix_use_runtimelinking" = yes; then + aix,yes) # traditional libtool + dynamic_linker='AIX unversionable lib.so' # If using run time linking (on AIX 4.2 or later) use lib.so # instead of lib.a to let people know that these are not # typical AIX shared libraries. - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - else + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + ;; + aix,no) # traditional AIX only + dynamic_linker='AIX lib.a(lib.so.V)' # We preserve .a as extension for shared libraries through AIX4.2 # and later when we are not doing run time linking. - library_names_spec='${libname}${release}.a $libname.a' - soname_spec='${libname}${release}${shared_ext}$major' - fi + library_names_spec='$libname$release.a $libname.a' + soname_spec='$libname$release$shared_ext$major' + ;; + svr4,*) # full svr4 only + dynamic_linker="AIX lib.so.V($shared_archive_member_spec.o)" + library_names_spec='$libname$release$shared_ext$major $libname$shared_ext' + # We do not specify a path in Import Files, so LIBPATH fires. + shlibpath_overrides_runpath=yes + ;; + *,yes) # both, prefer svr4 + dynamic_linker="AIX lib.so.V($shared_archive_member_spec.o), lib.a(lib.so.V)" + library_names_spec='$libname$release$shared_ext$major $libname$shared_ext' + # unpreferred sharedlib libNAME.a needs extra handling + postinstall_cmds='test -n "$linkname" || linkname="$realname"~func_stripname "" ".so" "$linkname"~$install_shared_prog "$dir/$func_stripname_result.$libext" "$destdir/$func_stripname_result.$libext"~test -z "$tstripme" || test -z "$striplib" || $striplib "$destdir/$func_stripname_result.$libext"' + postuninstall_cmds='for n in $library_names $old_library; do :; done~func_stripname "" ".so" "$n"~test "$func_stripname_result" = "$n" || func_append rmfiles " $odir/$func_stripname_result.$libext"' + # We do not specify a path in Import Files, so LIBPATH fires. + shlibpath_overrides_runpath=yes + ;; + *,no) # both, prefer aix + dynamic_linker="AIX lib.a(lib.so.V), lib.so.V($shared_archive_member_spec.o)" + library_names_spec='$libname$release.a $libname.a' + soname_spec='$libname$release$shared_ext$major' + # unpreferred sharedlib libNAME.so.V and symlink libNAME.so need extra handling + postinstall_cmds='test -z "$dlname" || $install_shared_prog $dir/$dlname $destdir/$dlname~test -z "$tstripme" || test -z "$striplib" || $striplib $destdir/$dlname~test -n "$linkname" || linkname=$realname~func_stripname "" ".a" "$linkname"~(cd "$destdir" && $LN_S -f $dlname $func_stripname_result.so)' + postuninstall_cmds='test -z "$dlname" || func_append rmfiles " $odir/$dlname"~for n in $old_library $library_names; do :; done~func_stripname "" ".a" "$n"~func_append rmfiles " $odir/$func_stripname_result.so"' + ;; + esac shlibpath_var=LIBPATH fi ;; @@ -17347,18 +18004,18 @@ powerpc) # Since July 2007 AmigaOS4 officially supports .so libraries. # When compiling the executable, add -use-dynld -Lsobjs: to the compileline. - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' ;; m68k) library_names_spec='$libname.ixlibrary $libname.a' # Create ${libname}_ixlibrary.a entries in /sys/libs. - finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`func_echo_all "$lib" | $SED '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; test $RM /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done' + finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`func_echo_all "$lib" | $SED '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; $RM /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done' ;; esac ;; beos*) - library_names_spec='${libname}${shared_ext}' + library_names_spec='$libname$shared_ext' dynamic_linker="$host_os ld.so" shlibpath_var=LIBRARY_PATH ;; @@ -17366,8 +18023,8 @@ bsdi[45]*) version_type=linux # correct to gnu/linux during the next big refactor need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir' shlibpath_var=LD_LIBRARY_PATH sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib" @@ -17379,7 +18036,7 @@ cygwin* | mingw* | pw32* | cegcc*) version_type=windows - shrext_cmds=".dll" + shrext_cmds=.dll need_version=no need_lib_prefix=no @@ -17388,8 +18045,8 @@ # gcc library_names_spec='$libname.dll.a' # DLL is installed to $(libdir)/../bin by postinstall_cmds - postinstall_cmds='base_file=`basename \${file}`~ - dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i; echo \$dlname'\''`~ + postinstall_cmds='base_file=`basename \$file`~ + dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\$base_file'\''i; echo \$dlname'\''`~ dldir=$destdir/`dirname \$dlpath`~ test -d \$dldir || mkdir -p \$dldir~ $install_prog $dir/$dlname \$dldir/$dlname~ @@ -17405,16 +18062,16 @@ case $host_os in cygwin*) # Cygwin DLLs use 'cyg' prefix rather than 'lib' - soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' + soname_spec='`echo $libname | sed -e 's/^lib/cyg/'``echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext' ;; mingw* | cegcc*) # MinGW DLLs use traditional 'lib' prefix - soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' + soname_spec='$libname`echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext' ;; pw32*) # pw32 DLLs use 'pw' prefix rather than 'lib' - library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' + library_names_spec='`echo $libname | sed -e 's/^lib/pw/'``echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext' ;; esac dynamic_linker='Win32 ld.exe' @@ -17423,8 +18080,8 @@ *,cl*) # Native MSVC libname_spec='$name' - soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' - library_names_spec='${libname}.dll.lib' + soname_spec='$libname`echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext' + library_names_spec='$libname.dll.lib' case $build_os in mingw*) @@ -17451,7 +18108,7 @@ sys_lib_search_path_spec=`cygpath --path --unix "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` ;; *) - sys_lib_search_path_spec="$LIB" + sys_lib_search_path_spec=$LIB if $ECHO "$sys_lib_search_path_spec" | $GREP ';[c-zC-Z]:/' >/dev/null; then # It is most probably a Windows format PATH. sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` @@ -17464,8 +18121,8 @@ esac # DLL is installed to $(libdir)/../bin by postinstall_cmds - postinstall_cmds='base_file=`basename \${file}`~ - dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i; echo \$dlname'\''`~ + postinstall_cmds='base_file=`basename \$file`~ + dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\$base_file'\''i; echo \$dlname'\''`~ dldir=$destdir/`dirname \$dlpath`~ test -d \$dldir || mkdir -p \$dldir~ $install_prog $dir/$dlname \$dldir/$dlname' @@ -17478,7 +18135,7 @@ *) # Assume MSVC wrapper - library_names_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext} $libname.lib' + library_names_spec='$libname`echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext $libname.lib' dynamic_linker='Win32 ld.exe' ;; esac @@ -17491,8 +18148,8 @@ version_type=darwin need_lib_prefix=no need_version=no - library_names_spec='${libname}${release}${major}$shared_ext ${libname}$shared_ext' - soname_spec='${libname}${release}${major}$shared_ext' + library_names_spec='$libname$release$major$shared_ext $libname$shared_ext' + soname_spec='$libname$release$major$shared_ext' shlibpath_overrides_runpath=yes shlibpath_var=DYLD_LIBRARY_PATH shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`' @@ -17504,8 +18161,8 @@ version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext' - soname_spec='${libname}${release}${shared_ext}$major' + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' shlibpath_var=LD_LIBRARY_PATH ;; @@ -17523,12 +18180,13 @@ version_type=freebsd-$objformat case $version_type in freebsd-elf*) - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' need_version=no need_lib_prefix=no ;; freebsd-*) - library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix' + library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix' need_version=yes ;; esac @@ -17558,10 +18216,10 @@ need_lib_prefix=no need_version=no dynamic_linker="$host_os runtime_loader" - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' shlibpath_var=LIBRARY_PATH - shlibpath_overrides_runpath=yes + shlibpath_overrides_runpath=no sys_lib_dlsearch_path_spec='/boot/home/config/lib /boot/common/lib /boot/system/lib' hardcode_into_libs=yes ;; @@ -17579,14 +18237,15 @@ dynamic_linker="$host_os dld.so" shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - if test "X$HPUX_IA64_MODE" = X32; then + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + if test 32 = "$HPUX_IA64_MODE"; then sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib" + sys_lib_dlsearch_path_spec=/usr/lib/hpux32 else sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64" + sys_lib_dlsearch_path_spec=/usr/lib/hpux64 fi - sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec ;; hppa*64*) shrext_cmds='.sl' @@ -17594,8 +18253,8 @@ dynamic_linker="$host_os dld.sl" shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64" sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec ;; @@ -17604,8 +18263,8 @@ dynamic_linker="$host_os dld.sl" shlibpath_var=SHLIB_PATH shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' ;; esac # HP-UX runs *really* slowly unless shared libraries are mode 555, ... @@ -17618,8 +18277,8 @@ version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no @@ -17630,7 +18289,7 @@ case $host_os in nonstopux*) version_type=nonstopux ;; *) - if test "$lt_cv_prog_gnu_ld" = yes; then + if test yes = "$lt_cv_prog_gnu_ld"; then version_type=linux # correct to gnu/linux during the next big refactor else version_type=irix @@ -17638,8 +18297,8 @@ esac need_lib_prefix=no need_version=no - soname_spec='${libname}${release}${shared_ext}$major' - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}' + soname_spec='$libname$release$shared_ext$major' + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$release$shared_ext $libname$shared_ext' case $host_os in irix5* | nonstopux*) libsuff= shlibsuff= @@ -17658,8 +18317,8 @@ esac shlibpath_var=LD_LIBRARY${shlibsuff}_PATH shlibpath_overrides_runpath=no - sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}" - sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}" + sys_lib_search_path_spec="/usr/lib$libsuff /lib$libsuff /usr/local/lib$libsuff" + sys_lib_dlsearch_path_spec="/usr/lib$libsuff /lib$libsuff" hardcode_into_libs=yes ;; @@ -17668,13 +18327,33 @@ dynamic_linker=no ;; +linux*android*) + version_type=none # Android doesn't support versioned libraries. + need_lib_prefix=no + need_version=no + library_names_spec='$libname$release$shared_ext' + soname_spec='$libname$release$shared_ext' + finish_cmds= + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + + # This implies no fast_install, which is unacceptable. + # Some rework will be needed to allow for fast_install + # before this can be enabled. + hardcode_into_libs=yes + + dynamic_linker='Android linker' + # Don't embed -rpath directories since the linker doesn't support them. + hardcode_libdir_flag_spec_CXX='-L$libdir' + ;; + # This must be glibc/ELF. linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no @@ -17718,7 +18397,12 @@ # before this can be enabled. hardcode_into_libs=yes - # Append ld.so.conf contents to the search path + # Ideally, we could use ldconfig to report *all* directores which are + # searched for libraries, however this is still not possible. Aside from not + # being certain /sbin/ldconfig is available, command + # 'ldconfig -N -X -v | grep ^/' on 64bit Fedora does not report /usr/lib64, + # even though it is searched at run-time. Try to do the best guess by + # appending ld.so.conf contents (and includes) to the search path. if test -f /etc/ld.so.conf; then lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[ ]*hwcap[ ]/d;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;s/"//g;/^$/d' | tr '\n' ' '` sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra" @@ -17750,12 +18434,12 @@ need_lib_prefix=no need_version=no if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' + library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix' finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' dynamic_linker='NetBSD (a.out) ld.so' else - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' dynamic_linker='NetBSD ld.elf_so' fi shlibpath_var=LD_LIBRARY_PATH @@ -17765,7 +18449,7 @@ newsos6) version_type=linux # correct to gnu/linux during the next big refactor - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes ;; @@ -17774,58 +18458,68 @@ version_type=qnx need_lib_prefix=no need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes dynamic_linker='ldqnx.so' ;; -openbsd*) +openbsd* | bitrig*) version_type=sunos - sys_lib_dlsearch_path_spec="/usr/lib" + sys_lib_dlsearch_path_spec=/usr/lib need_lib_prefix=no - # Some older versions of OpenBSD (3.3 at least) *do* need versioned libs. - case $host_os in - openbsd3.3 | openbsd3.3.*) need_version=yes ;; - *) need_version=no ;; - esac - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' - finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' - shlibpath_var=LD_LIBRARY_PATH - if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then - case $host_os in - openbsd2.[89] | openbsd2.[89].*) - shlibpath_overrides_runpath=no - ;; - *) - shlibpath_overrides_runpath=yes - ;; - esac + if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`"; then + need_version=no else - shlibpath_overrides_runpath=yes + need_version=yes fi + library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes ;; os2*) libname_spec='$name' - shrext_cmds=".dll" + version_type=windows + shrext_cmds=.dll + need_version=no need_lib_prefix=no - library_names_spec='$libname${shared_ext} $libname.a' + # OS/2 can only load a DLL with a base name of 8 characters or less. + soname_spec='`test -n "$os2dllname" && libname="$os2dllname"; + v=$($ECHO $release$versuffix | tr -d .-); + n=$($ECHO $libname | cut -b -$((8 - ${#v})) | tr . _); + $ECHO $n$v`$shared_ext' + library_names_spec='${libname}_dll.$libext' dynamic_linker='OS/2 ld.exe' - shlibpath_var=LIBPATH + shlibpath_var=BEGINLIBPATH + sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" + sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec + postinstall_cmds='base_file=`basename \$file`~ + dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\$base_file'\''i; $ECHO \$dlname'\''`~ + dldir=$destdir/`dirname \$dlpath`~ + test -d \$dldir || mkdir -p \$dldir~ + $install_prog $dir/$dlname \$dldir/$dlname~ + chmod a+x \$dldir/$dlname~ + if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then + eval '\''$striplib \$dldir/$dlname'\'' || exit \$?; + fi' + postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; $ECHO \$dlname'\''`~ + dlpath=$dir/\$dldll~ + $RM \$dlpath' ;; osf3* | osf4* | osf5*) version_type=osf need_lib_prefix=no need_version=no - soname_spec='${libname}${release}${shared_ext}$major' - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='$libname$release$shared_ext$major' + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' shlibpath_var=LD_LIBRARY_PATH sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib" - sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec" + sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec ;; rdos*) @@ -17836,8 +18530,8 @@ version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes hardcode_into_libs=yes @@ -17847,11 +18541,11 @@ sunos4*) version_type=sunos - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' + library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix' finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes - if test "$with_gnu_ld" = yes; then + if test yes = "$with_gnu_ld"; then need_lib_prefix=no fi need_version=yes @@ -17859,8 +18553,8 @@ sysv4 | sysv4.3*) version_type=linux # correct to gnu/linux during the next big refactor - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' shlibpath_var=LD_LIBRARY_PATH case $host_vendor in sni) @@ -17881,24 +18575,24 @@ ;; sysv4*MP*) - if test -d /usr/nec ;then + if test -d /usr/nec; then version_type=linux # correct to gnu/linux during the next big refactor - library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}' - soname_spec='$libname${shared_ext}.$major' + library_names_spec='$libname$shared_ext.$versuffix $libname$shared_ext.$major $libname$shared_ext' + soname_spec='$libname$shared_ext.$major' shlibpath_var=LD_LIBRARY_PATH fi ;; sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) - version_type=freebsd-elf + version_type=sco need_lib_prefix=no need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes hardcode_into_libs=yes - if test "$with_gnu_ld" = yes; then + if test yes = "$with_gnu_ld"; then sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib' else sys_lib_search_path_spec='/usr/ccs/lib /usr/lib' @@ -17916,7 +18610,7 @@ version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes @@ -17924,8 +18618,8 @@ uts4*) version_type=linux # correct to gnu/linux during the next big refactor - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' shlibpath_var=LD_LIBRARY_PATH ;; @@ -17935,20 +18629,32 @@ esac { $as_echo "$as_me:${as_lineno-$LINENO}: result: $dynamic_linker" >&5 $as_echo "$dynamic_linker" >&6; } -test "$dynamic_linker" = no && can_build_shared=no +test no = "$dynamic_linker" && can_build_shared=no variables_saved_for_relink="PATH $shlibpath_var $runpath_var" -if test "$GCC" = yes; then +if test yes = "$GCC"; then variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" fi -if test "${lt_cv_sys_lib_search_path_spec+set}" = set; then - sys_lib_search_path_spec="$lt_cv_sys_lib_search_path_spec" +if test set = "${lt_cv_sys_lib_search_path_spec+set}"; then + sys_lib_search_path_spec=$lt_cv_sys_lib_search_path_spec fi -if test "${lt_cv_sys_lib_dlsearch_path_spec+set}" = set; then - sys_lib_dlsearch_path_spec="$lt_cv_sys_lib_dlsearch_path_spec" + +if test set = "${lt_cv_sys_lib_dlsearch_path_spec+set}"; then + sys_lib_dlsearch_path_spec=$lt_cv_sys_lib_dlsearch_path_spec fi +# remember unaugmented sys_lib_dlsearch_path content for libtool script decls... +configure_time_dlsearch_path=$sys_lib_dlsearch_path_spec + +# ... but it needs LT_SYS_LIBRARY_PATH munging for other configure-time code +func_munge_path_list sys_lib_dlsearch_path_spec "$LT_SYS_LIBRARY_PATH" + +# to be used as default LT_SYS_LIBRARY_PATH value in generated libtool +configure_time_lt_sys_library_path=$LT_SYS_LIBRARY_PATH + + + @@ -17991,15 +18697,15 @@ hardcode_action_CXX= if test -n "$hardcode_libdir_flag_spec_CXX" || test -n "$runpath_var_CXX" || - test "X$hardcode_automatic_CXX" = "Xyes" ; then + test yes = "$hardcode_automatic_CXX"; then # We can hardcode non-existent directories. - if test "$hardcode_direct_CXX" != no && + if test no != "$hardcode_direct_CXX" && # If the only mechanism to avoid hardcoding is shlibpath_var, we # have to relink, otherwise we might link with an installed library # when we should be linking with a yet-to-be-installed one - ## test "$_LT_TAGVAR(hardcode_shlibpath_var, CXX)" != no && - test "$hardcode_minus_L_CXX" != no; then + ## test no != "$_LT_TAGVAR(hardcode_shlibpath_var, CXX)" && + test no != "$hardcode_minus_L_CXX"; then # Linking always hardcodes the temporary library directory. hardcode_action_CXX=relink else @@ -18014,12 +18720,12 @@ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $hardcode_action_CXX" >&5 $as_echo "$hardcode_action_CXX" >&6; } -if test "$hardcode_action_CXX" = relink || - test "$inherit_rpath_CXX" = yes; then +if test relink = "$hardcode_action_CXX" || + test yes = "$inherit_rpath_CXX"; then # Fast installation is not supported enable_fast_install=no -elif test "$shlibpath_overrides_runpath" = yes || - test "$enable_shared" = no; then +elif test yes = "$shlibpath_overrides_runpath" || + test no = "$enable_shared"; then # Fast installation is not necessary enable_fast_install=needless fi @@ -18042,7 +18748,7 @@ lt_cv_path_LD=$lt_save_path_LD lt_cv_prog_gnu_ldcxx=$lt_cv_prog_gnu_ld lt_cv_prog_gnu_ld=$lt_save_with_gnu_ld -fi # test "$_lt_caught_CXX_error" != yes +fi # test yes != "$_lt_caught_CXX_error" ac_ext=c ac_cpp='$CPP $CPPFLAGS' @@ -19097,10 +19803,10 @@ if ac_fn_c_try_link "$LINENO"; then : -if strings - conftest$ac_exeext | grep noonsees >/dev/null ; then +if strings -a conftest$ac_exeext | grep noonsees >/dev/null ; then ax_cv_c_float_words_bigendian=yes fi -if strings - conftest$ac_exeext | grep seesnoon >/dev/null ; then +if strings -a 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 @@ -19168,7 +19874,7 @@ } _ACEOF if ac_fn_c_try_link "$LINENO"; then : - cairo_cv_atomic_primitives="Intel" + cairo_cv_atomic_primitives="gcc-legacy" fi rm -f core conftest.err conftest.$ac_objext \ @@ -19222,9 +19928,9 @@ fi - if test "x$cairo_cv_atomic_primitives" = xIntel; then + if test "x$cairo_cv_atomic_primitives" = xgcc-legacy; then -$as_echo "#define HAVE_INTEL_ATOMIC_PRIMITIVES 1" >>confdefs.h +$as_echo "#define HAVE_GCC_LEGACY_ATOMICS 1" >>confdefs.h fi @@ -19249,7 +19955,7 @@ case $host_cpu in i?86) cairo_cv_atomic_op_needs_memory_barrier="no" ;; x86_64) cairo_cv_atomic_op_needs_memory_barrier="no" ;; - arm*) cairo_cv_atomic_op_needs_memory_barrier="no" ;; + arm*) cairo_cv_atomic_op_needs_memory_barrier="yes" ;; *) cairo_cv_atomic_op_needs_memory_barrier="yes" ;; esac @@ -19511,7 +20217,7 @@ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_mw__mwvalidcheckl" >&5 $as_echo "$ac_cv_lib_mw__mwvalidcheckl" >&6; } if test "x$ac_cv_lib_mw__mwvalidcheckl" = xyes; then : - LIBM="-lmw" + LIBM=-lmw fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for cos in -lm" >&5 @@ -19593,7 +20299,7 @@ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_m_cos" >&5 $as_echo "$ac_cv_lib_m_cos" >&6; } if test "x$ac_cv_lib_m_cos" = xyes; then : - LIBM="-lm" + LIBM=-lm fi ;; @@ -19945,7 +20651,7 @@ done -for ac_func in ctime_r drand48 flockfile funlockfile getline link strndup +for ac_func in ctime_r localtime_r gmtime_r drand48 flockfile funlockfile getline link strndup do : as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var" @@ -19958,21 +20664,19 @@ done -for ac_header in windows.h -do : - ac_fn_c_check_header_mongrel "$LINENO" "windows.h" "ac_cv_header_windows_h" "$ac_includes_default" -if test "x$ac_cv_header_windows_h" = xyes; then : - cat >>confdefs.h <<_ACEOF -#define HAVE_WINDOWS_H 1 +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +#ifdef _WIN32 + choke me +#endif _ACEOF - have_windows=yes -else +if ac_fn_c_try_compile "$LINENO"; then : have_windows=no +else + have_windows=yes fi - -done - - +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext for ac_header in sys/stat.h io.h do : @@ -26137,7 +26841,7 @@ - drm_REQUIRES="libudev >= 136" + drm_REQUIRES="libudev >= 136, libdrm >= 2.4" pkg_failed=no { $as_echo "$as_me:${as_lineno-$LINENO}: checking for drm" >&5 @@ -27706,6 +28410,352 @@ + # Check whether --enable-glesv3 was given. +if test "${enable_glesv3+set}" = set; then : + enableval=$enable_glesv3; enable_glesv3=$enableval +else + enable_glesv3=no +fi + + case $enable_glesv3 in #( + no) : + use_glesv3="no (disabled, use --enable-glesv3 to enable)" + ;; #( + yes|auto) : + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for cairo's OpenGLESv3 surface backend feature" >&5 +$as_echo_n "checking for cairo's OpenGLESv3 surface backend feature... " >&6; } + echo + + use_glesv3=yes + glesv3_BASE="cairo" +glesv3_REQUIRES="$ac_env_glesv3_REQUIRES_value" +glesv3_CFLAGS="$ac_env_glesv3_CFLAGS_value" +glesv3_NONPKGCONFIG_CFLAGS="$ac_env_glesv3_NONPKGCONFIG_CFLAGS_value" +glesv3_LIBS="$ac_env_glesv3_LIBS_value" +glesv3_NONPKGCONFIG_LIBS="$ac_env_glesv3_NONPKGCONFIG_LIBS_value" +glesv3_NONPKGCONFIG_EXTRA_LIBS="$ac_env_glesv3_NONPKGCONFIG_EXTRA_LIBS_value" + + + + glesv3_REQUIRES="glesv3" + +pkg_failed=no +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for glesv3" >&5 +$as_echo_n "checking for glesv3... " >&6; } + +if test -n "$glesv3_CFLAGS"; then + pkg_cv_glesv3_CFLAGS="$glesv3_CFLAGS" + elif test -n "$PKG_CONFIG"; then + if test -n "$PKG_CONFIG" && \ + { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"\$glesv3_REQUIRES\""; } >&5 + ($PKG_CONFIG --exists --print-errors "$glesv3_REQUIRES") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + pkg_cv_glesv3_CFLAGS=`$PKG_CONFIG --cflags "$glesv3_REQUIRES" 2>/dev/null` +else + pkg_failed=yes +fi + else + pkg_failed=untried +fi +if test -n "$glesv3_LIBS"; then + pkg_cv_glesv3_LIBS="$glesv3_LIBS" + elif test -n "$PKG_CONFIG"; then + if test -n "$PKG_CONFIG" && \ + { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"\$glesv3_REQUIRES\""; } >&5 + ($PKG_CONFIG --exists --print-errors "$glesv3_REQUIRES") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + pkg_cv_glesv3_LIBS=`$PKG_CONFIG --libs "$glesv3_REQUIRES" 2>/dev/null` +else + pkg_failed=yes +fi + else + pkg_failed=untried +fi + + + +if test $pkg_failed = yes; then + +if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then + _pkg_short_errors_supported=yes +else + _pkg_short_errors_supported=no +fi + if test $_pkg_short_errors_supported = yes; then + glesv3_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors "$glesv3_REQUIRES" 2>&1` + else + glesv3_PKG_ERRORS=`$PKG_CONFIG --print-errors "$glesv3_REQUIRES" 2>&1` + fi + # Put the nasty error message in config.log where it belongs + echo "$glesv3_PKG_ERRORS" >&5 + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + + ac_fn_c_check_header_mongrel "$LINENO" "GLES3/gl3.h" "ac_cv_header_GLES3_gl3_h" "$ac_includes_default" +if test "x$ac_cv_header_GLES3_gl3_h" = xyes; then : + +else + use_glesv3="no (glesv3.pc nor OpenGL ES 3.0 headers not found)" +fi + + + if test "x$use_glesv3" = "xyes"; then + glesv3_NONPKGCONFIG_CFLAGS= + glesv3_NONPKGCONFIG_LIBS="-lGLESv2" + fi +elif test $pkg_failed = untried; then + + ac_fn_c_check_header_mongrel "$LINENO" "GLES3/gl3.h" "ac_cv_header_GLES3_gl3_h" "$ac_includes_default" +if test "x$ac_cv_header_GLES3_gl3_h" = xyes; then : + +else + use_glesv3="no (glesv3.pc nor OpenGL ES 3.0 headers not found)" +fi + + + if test "x$use_glesv3" = "xyes"; then + glesv3_NONPKGCONFIG_CFLAGS= + glesv3_NONPKGCONFIG_LIBS="-lGLESv2" + fi +else + glesv3_CFLAGS=$pkg_cv_glesv3_CFLAGS + glesv3_LIBS=$pkg_cv_glesv3_LIBS + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + : +fi + + if test "x$have_dl" = "xyes" -a "x$have_dlsym" = "xyes"; then + glesv3_LIBS="$glesv3_LIBS -ldl" + fi + + if test "x$use_glesv3" = "xyes" -a "x$use_gl" = "xyes"; then + as_fn_error $? "use either --enable-gl=yes or --enable-glesv3=yes. Not both at the same time." "$LINENO" 5 + fi + + need_egl_functions=yes + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether cairo's OpenGLESv3 surface backend feature could be enabled" >&5 +$as_echo_n "checking whether cairo's OpenGLESv3 surface backend feature could be enabled... " >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $use_glesv3" >&5 +$as_echo "$use_glesv3" >&6; } + + if test "x$enable_glesv3" = "xyes" -a "x$use_glesv3" != xyes; then : + as_fn_error $? " OpenGLESv3 surface backend feature could not be enabled" "$LINENO" 5 + +fi ;; #( + *) : + as_fn_error $? "invalid argument passed to --enable-glesv3: \`$use_glesv3', should be one of [no/auto/yes]" "$LINENO" 5 + ;; +esac + if test "x$use_glesv3" = "xyes"; then : + CAIRO_REQUIRES="$glesv3_REQUIRES"" ${CAIRO_REQUIRES}" + + CAIRO_CFLAGS="$glesv3_CFLAGS"" ${CAIRO_CFLAGS}" + + CAIRO_NONPKGCONFIG_CFLAGS="$glesv3_NONPKGCONFIG_CFLAGS"" ${CAIRO_NONPKGCONFIG_CFLAGS}" + + CAIRO_LIBS="$glesv3_LIBS"" ${CAIRO_LIBS}" + + CAIRO_NONPKGCONFIG_LIBS="$glesv3_NONPKGCONFIG_LIBS"" ${CAIRO_NONPKGCONFIG_LIBS}" + + +else + unset glesv3_BASE +unset glesv3_REQUIRES +unset glesv3_CFLAGS +unset glesv3_NONPKGCONFIG_CFLAGS +unset glesv3_LIBS +unset glesv3_NONPKGCONFIG_LIBS +unset glesv3_NONPKGCONFIG_EXTRA_LIBS + + +fi + + if test "x$use_glesv3" = xyes; then + CAIRO_HAS_GLESV3_SURFACE_TRUE= + CAIRO_HAS_GLESV3_SURFACE_FALSE='#' +else + CAIRO_HAS_GLESV3_SURFACE_TRUE='#' + CAIRO_HAS_GLESV3_SURFACE_FALSE= +fi + + + cr_make_tmp='CAIRO_HAS_GLESV3_SURFACE=0' + CAIRO_MAKEFILE___WIN32="${CAIRO_MAKEFILE___WIN32} +""$cr_make_tmp" + + + cr_make_tmp='' + CAIRO_MAKEFILE_cairo_AMAKE="${CAIRO_MAKEFILE_cairo_AMAKE} +""$cr_make_tmp" + + CAIRO_MAKEFILE_cairo_WIN32="${CAIRO_MAKEFILE_cairo_WIN32} +""$cr_make_tmp" + cr_make_tmp='' + CAIRO_MAKEFILE_cairo_boilerplate_AMAKE="${CAIRO_MAKEFILE_cairo_boilerplate_AMAKE} +""$cr_make_tmp" + + CAIRO_MAKEFILE_cairo_boilerplate_WIN32="${CAIRO_MAKEFILE_cairo_boilerplate_WIN32} +""$cr_make_tmp" + + + + cr_make_tmp='unsupported_cairo_headers += $(cairo_glesv3_headers)' + CAIRO_MAKEFILE_cairo_AMAKE="${CAIRO_MAKEFILE_cairo_AMAKE} +""$cr_make_tmp" + + CAIRO_MAKEFILE_cairo_WIN32="${CAIRO_MAKEFILE_cairo_WIN32} +""$cr_make_tmp" + cr_make_tmp='unsupported_cairo_boilerplate_headers += $(cairo_boilerplate_glesv3_headers)' + CAIRO_MAKEFILE_cairo_boilerplate_AMAKE="${CAIRO_MAKEFILE_cairo_boilerplate_AMAKE} +""$cr_make_tmp" + + CAIRO_MAKEFILE_cairo_boilerplate_WIN32="${CAIRO_MAKEFILE_cairo_boilerplate_WIN32} +""$cr_make_tmp" + + + cr_make_tmp='all_cairo_headers += $(cairo_glesv3_headers) +all_cairo_private += $(cairo_glesv3_private) +all_cairo_cxx_sources += $(cairo_glesv3_cxx_sources) +all_cairo_sources += $(cairo_glesv3_sources)' + CAIRO_MAKEFILE_cairo_AMAKE="${CAIRO_MAKEFILE_cairo_AMAKE} +""$cr_make_tmp" + + CAIRO_MAKEFILE_cairo_WIN32="${CAIRO_MAKEFILE_cairo_WIN32} +""$cr_make_tmp" + cr_make_tmp='all_cairo_boilerplate_headers += $(cairo_boilerplate_glesv3_headers) +all_cairo_boilerplate_private += $(cairo_boilerplate_glesv3_private) +all_cairo_boilerplate_cxx_sources += $(cairo_boilerplate_glesv3_cxx_sources) +all_cairo_boilerplate_sources += $(cairo_boilerplate_glesv3_sources)' + CAIRO_MAKEFILE_cairo_boilerplate_AMAKE="${CAIRO_MAKEFILE_cairo_boilerplate_AMAKE} +""$cr_make_tmp" + + CAIRO_MAKEFILE_cairo_boilerplate_WIN32="${CAIRO_MAKEFILE_cairo_boilerplate_WIN32} +""$cr_make_tmp" + + + cr_make_tmp='enabled_cairo_headers += $(cairo_glesv3_headers) +enabled_cairo_private += $(cairo_glesv3_private) +enabled_cairo_cxx_sources += $(cairo_glesv3_cxx_sources) +enabled_cairo_sources += $(cairo_glesv3_sources)' + CAIRO_MAKEFILE_cairo_AMAKE="${CAIRO_MAKEFILE_cairo_AMAKE} +"'if CAIRO_HAS_GLESV3_SURFACE' + CAIRO_MAKEFILE_cairo_AMAKE="${CAIRO_MAKEFILE_cairo_AMAKE} +""$cr_make_tmp" + CAIRO_MAKEFILE_cairo_AMAKE="${CAIRO_MAKEFILE_cairo_AMAKE} +"'endif' + + CAIRO_MAKEFILE_cairo_WIN32="${CAIRO_MAKEFILE_cairo_WIN32} +"'ifeq ($(CAIRO_HAS_GLESV3_SURFACE),1)' + CAIRO_MAKEFILE_cairo_WIN32="${CAIRO_MAKEFILE_cairo_WIN32} +""$cr_make_tmp" + CAIRO_MAKEFILE_cairo_WIN32="${CAIRO_MAKEFILE_cairo_WIN32} +"'endif' + cr_make_tmp='enabled_cairo_boilerplate_headers += $(cairo_boilerplate_glesv3_headers) +enabled_cairo_boilerplate_private += $(cairo_boilerplate_glesv3_private) +enabled_cairo_boilerplate_cxx_sources += $(cairo_boilerplate_glesv3_cxx_sources) +enabled_cairo_boilerplate_sources += $(cairo_boilerplate_glesv3_sources)' + CAIRO_MAKEFILE_cairo_boilerplate_AMAKE="${CAIRO_MAKEFILE_cairo_boilerplate_AMAKE} +"'if CAIRO_HAS_GLESV3_SURFACE' + CAIRO_MAKEFILE_cairo_boilerplate_AMAKE="${CAIRO_MAKEFILE_cairo_boilerplate_AMAKE} +""$cr_make_tmp" + CAIRO_MAKEFILE_cairo_boilerplate_AMAKE="${CAIRO_MAKEFILE_cairo_boilerplate_AMAKE} +"'endif' + + CAIRO_MAKEFILE_cairo_boilerplate_WIN32="${CAIRO_MAKEFILE_cairo_boilerplate_WIN32} +"'ifeq ($(CAIRO_HAS_GLESV3_SURFACE),1)' + CAIRO_MAKEFILE_cairo_boilerplate_WIN32="${CAIRO_MAKEFILE_cairo_boilerplate_WIN32} +""$cr_make_tmp" + CAIRO_MAKEFILE_cairo_boilerplate_WIN32="${CAIRO_MAKEFILE_cairo_boilerplate_WIN32} +"'endif' + + + + + if test "x$use_glesv3" = xyes; then : + : + ac_config_files="$ac_config_files src/cairo-glesv3.pc:src/cairo-features.pc.in" + + +fi + if test "x$use_glesv3" = xyes; then : + : + ac_config_files="$ac_config_files cairo-glesv3-uninstalled.pc:src/cairo-features-uninstalled.pc.in" + + +fi + cr_make_tmp='all_cairo_pkgconf += cairo-glesv3.pc' + CAIRO_MAKEFILE_cairo_AMAKE="${CAIRO_MAKEFILE_cairo_AMAKE} +""$cr_make_tmp" + + CAIRO_MAKEFILE_cairo_WIN32="${CAIRO_MAKEFILE_cairo_WIN32} +""$cr_make_tmp" + + + cr_make_tmp='enabled_cairo_pkgconf += cairo-glesv3.pc' + CAIRO_MAKEFILE_cairo_AMAKE="${CAIRO_MAKEFILE_cairo_AMAKE} +"'if CAIRO_HAS_GLESV3_SURFACE' + CAIRO_MAKEFILE_cairo_AMAKE="${CAIRO_MAKEFILE_cairo_AMAKE} +""$cr_make_tmp" + CAIRO_MAKEFILE_cairo_AMAKE="${CAIRO_MAKEFILE_cairo_AMAKE} +"'endif' + + CAIRO_MAKEFILE_cairo_WIN32="${CAIRO_MAKEFILE_cairo_WIN32} +"'ifeq ($(CAIRO_HAS_GLESV3_SURFACE),1)' + CAIRO_MAKEFILE_cairo_WIN32="${CAIRO_MAKEFILE_cairo_WIN32} +""$cr_make_tmp" + CAIRO_MAKEFILE_cairo_WIN32="${CAIRO_MAKEFILE_cairo_WIN32} +"'endif' + + + if test "x$use_glesv3" = xyes; then : + : + CAIRO_FEATURES="${CAIRO_FEATURES} "'CAIRO_HAS_GLESV3_SURFACE' + + +fi + + if test "x$use_glesv3" != xyes; then : + : + CAIRO_NO_FEATURES="${CAIRO_NO_FEATURES} "'CAIRO_HAS_GLESV3_SURFACE' + + + +fi + + cr_make_tmp=' @echo "#define CAIRO_HAS_GLESV3_SURFACE 1" >> $(top_srcdir)/src/cairo-features.h' + CAIRO_MAKEFILE_win32_features_h_WIN32="${CAIRO_MAKEFILE_win32_features_h_WIN32} +"'ifeq ($(CAIRO_HAS_GLESV3_SURFACE),1)' + CAIRO_MAKEFILE_win32_features_h_WIN32="${CAIRO_MAKEFILE_win32_features_h_WIN32} +""$cr_make_tmp" + CAIRO_MAKEFILE_win32_features_h_WIN32="${CAIRO_MAKEFILE_win32_features_h_WIN32} +"'endif' + + + if test "x$use_glesv3" = xyes; then : + : + CAIRO_WARNING_MESSAGE="${CAIRO_WARNING_MESSAGE} + +"'--- The OpenGLESv3 surface backend feature is still under active development +--- and is included in this release only as a preview. It does NOT fully work +--- yet and incompatible changes may yet be made to OpenGLESv3 surface +--- backend specific API.' + + + +fi + + + + + # Check whether --enable-cogl was given. if test "${enable_cogl+set}" = set; then : enableval=$enable_cogl; enable_cogl=$enableval @@ -29647,6 +30697,9 @@ any2ppm_cs=yes + # The script backend requires zlib. + use_script=$have_libz + script_NONPKGCONFIG_LIBS=-lz { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether cairo's script surface backend feature could be enabled" >&5 @@ -35528,6 +36581,10 @@ as_fn_error $? "conditional \"CAIRO_HAS_GLESV2_SURFACE\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi +if test -z "${CAIRO_HAS_GLESV3_SURFACE_TRUE}" && test -z "${CAIRO_HAS_GLESV3_SURFACE_FALSE}"; then + as_fn_error $? "conditional \"CAIRO_HAS_GLESV3_SURFACE\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi if test -z "${CAIRO_HAS_COGL_SURFACE_TRUE}" && test -z "${CAIRO_HAS_COGL_SURFACE_FALSE}"; then as_fn_error $? "conditional \"CAIRO_HAS_COGL_SURFACE\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 @@ -36053,7 +37110,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.14.6, which was +This file was extended by cairo $as_me 1.15.10, which was generated by GNU Autoconf 2.69. Invocation command line was CONFIG_FILES = $CONFIG_FILES @@ -36120,7 +37177,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.14.6 +cairo config.status 1.15.10 configured by $0, generated by GNU Autoconf 2.69, with options \\"\$ac_cs_config\\" @@ -36258,6 +37315,7 @@ enable_static='`$ECHO "$enable_static" | $SED "$delay_single_quote_subst"`' pic_mode='`$ECHO "$pic_mode" | $SED "$delay_single_quote_subst"`' enable_fast_install='`$ECHO "$enable_fast_install" | $SED "$delay_single_quote_subst"`' +shared_archive_member_spec='`$ECHO "$shared_archive_member_spec" | $SED "$delay_single_quote_subst"`' SHELL='`$ECHO "$SHELL" | $SED "$delay_single_quote_subst"`' ECHO='`$ECHO "$ECHO" | $SED "$delay_single_quote_subst"`' PATH_SEPARATOR='`$ECHO "$PATH_SEPARATOR" | $SED "$delay_single_quote_subst"`' @@ -36305,10 +37363,13 @@ GCC='`$ECHO "$GCC" | $SED "$delay_single_quote_subst"`' lt_cv_sys_global_symbol_pipe='`$ECHO "$lt_cv_sys_global_symbol_pipe" | $SED "$delay_single_quote_subst"`' lt_cv_sys_global_symbol_to_cdecl='`$ECHO "$lt_cv_sys_global_symbol_to_cdecl" | $SED "$delay_single_quote_subst"`' +lt_cv_sys_global_symbol_to_import='`$ECHO "$lt_cv_sys_global_symbol_to_import" | $SED "$delay_single_quote_subst"`' lt_cv_sys_global_symbol_to_c_name_address='`$ECHO "$lt_cv_sys_global_symbol_to_c_name_address" | $SED "$delay_single_quote_subst"`' lt_cv_sys_global_symbol_to_c_name_address_lib_prefix='`$ECHO "$lt_cv_sys_global_symbol_to_c_name_address_lib_prefix" | $SED "$delay_single_quote_subst"`' +lt_cv_nm_interface='`$ECHO "$lt_cv_nm_interface" | $SED "$delay_single_quote_subst"`' nm_file_list_spec='`$ECHO "$nm_file_list_spec" | $SED "$delay_single_quote_subst"`' lt_sysroot='`$ECHO "$lt_sysroot" | $SED "$delay_single_quote_subst"`' +lt_cv_truncate_bin='`$ECHO "$lt_cv_truncate_bin" | $SED "$delay_single_quote_subst"`' objdir='`$ECHO "$objdir" | $SED "$delay_single_quote_subst"`' MAGIC_CMD='`$ECHO "$MAGIC_CMD" | $SED "$delay_single_quote_subst"`' lt_prog_compiler_no_builtin_flag='`$ECHO "$lt_prog_compiler_no_builtin_flag" | $SED "$delay_single_quote_subst"`' @@ -36373,7 +37434,8 @@ finish_eval='`$ECHO "$finish_eval" | $SED "$delay_single_quote_subst"`' hardcode_into_libs='`$ECHO "$hardcode_into_libs" | $SED "$delay_single_quote_subst"`' sys_lib_search_path_spec='`$ECHO "$sys_lib_search_path_spec" | $SED "$delay_single_quote_subst"`' -sys_lib_dlsearch_path_spec='`$ECHO "$sys_lib_dlsearch_path_spec" | $SED "$delay_single_quote_subst"`' +configure_time_dlsearch_path='`$ECHO "$configure_time_dlsearch_path" | $SED "$delay_single_quote_subst"`' +configure_time_lt_sys_library_path='`$ECHO "$configure_time_lt_sys_library_path" | $SED "$delay_single_quote_subst"`' hardcode_action='`$ECHO "$hardcode_action" | $SED "$delay_single_quote_subst"`' enable_dlopen='`$ECHO "$enable_dlopen" | $SED "$delay_single_quote_subst"`' enable_dlopen_self='`$ECHO "$enable_dlopen_self" | $SED "$delay_single_quote_subst"`' @@ -36479,9 +37541,12 @@ compiler \ lt_cv_sys_global_symbol_pipe \ lt_cv_sys_global_symbol_to_cdecl \ +lt_cv_sys_global_symbol_to_import \ lt_cv_sys_global_symbol_to_c_name_address \ lt_cv_sys_global_symbol_to_c_name_address_lib_prefix \ +lt_cv_nm_interface \ nm_file_list_spec \ +lt_cv_truncate_bin \ lt_prog_compiler_no_builtin_flag \ lt_prog_compiler_pic \ lt_prog_compiler_wl \ @@ -36547,7 +37612,7 @@ compiler_lib_search_path_CXX; do case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in *[\\\\\\\`\\"\\\$]*) - eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED \\"\\\$sed_quote_subst\\"\\\`\\\\\\"" + eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED \\"\\\$sed_quote_subst\\"\\\`\\\\\\"" ## exclude from sc_prohibit_nested_quotes ;; *) eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\"" @@ -36574,7 +37639,8 @@ postuninstall_cmds \ finish_cmds \ sys_lib_search_path_spec \ -sys_lib_dlsearch_path_spec \ +configure_time_dlsearch_path \ +configure_time_lt_sys_library_path \ reload_cmds_CXX \ old_archive_cmds_CXX \ old_archive_from_new_cmds_CXX \ @@ -36588,7 +37654,7 @@ postlink_cmds_CXX; do case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in *[\\\\\\\`\\"\\\$]*) - eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED -e \\"\\\$double_quote_subst\\" -e \\"\\\$sed_quote_subst\\" -e \\"\\\$delay_variable_subst\\"\\\`\\\\\\"" + eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED -e \\"\\\$double_quote_subst\\" -e \\"\\\$sed_quote_subst\\" -e \\"\\\$delay_variable_subst\\"\\\`\\\\\\"" ## exclude from sc_prohibit_nested_quotes ;; *) eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\"" @@ -36597,19 +37663,16 @@ done ac_aux_dir='$ac_aux_dir' -xsi_shell='$xsi_shell' -lt_shell_append='$lt_shell_append' -# See if we are running on zsh, and set the options which allow our +# See if we are running on zsh, and set the options that allow our # commands through without removal of \ escapes INIT. -if test -n "\${ZSH_VERSION+set}" ; then +if test -n "\${ZSH_VERSION+set}"; then setopt NO_GLOB_SUBST fi PACKAGE='$PACKAGE' VERSION='$VERSION' - TIMESTAMP='$TIMESTAMP' RM='$RM' ofile='$ofile' @@ -36895,6 +37958,20 @@ glesv2_NONPKGCONFIG_CFLAGS='$glesv2_NONPKGCONFIG_CFLAGS' SED='$SED' + glesv3_BASE='$glesv3_BASE' + glesv3_REQUIRES='$glesv3_REQUIRES' + glesv3_NONPKGCONFIG_LIBS='$glesv3_NONPKGCONFIG_LIBS' + glesv3_NONPKGCONFIG_EXTRA_LIBS='$glesv3_NONPKGCONFIG_EXTRA_LIBS' + glesv3_NONPKGCONFIG_CFLAGS='$glesv3_NONPKGCONFIG_CFLAGS' + + SED='$SED' + glesv3_BASE='$glesv3_BASE' + glesv3_REQUIRES='$glesv3_REQUIRES' + glesv3_NONPKGCONFIG_LIBS='$glesv3_NONPKGCONFIG_LIBS' + glesv3_NONPKGCONFIG_EXTRA_LIBS='$glesv3_NONPKGCONFIG_EXTRA_LIBS' + glesv3_NONPKGCONFIG_CFLAGS='$glesv3_NONPKGCONFIG_CFLAGS' + + SED='$SED' cogl_BASE='$cogl_BASE' cogl_REQUIRES='$cogl_REQUIRES' cogl_NONPKGCONFIG_LIBS='$cogl_NONPKGCONFIG_LIBS' @@ -37164,6 +38241,8 @@ "cairo-gl-uninstalled.pc") CONFIG_FILES="$CONFIG_FILES cairo-gl-uninstalled.pc:src/cairo-features-uninstalled.pc.in" ;; "src/cairo-glesv2.pc") CONFIG_FILES="$CONFIG_FILES src/cairo-glesv2.pc:src/cairo-features.pc.in" ;; "cairo-glesv2-uninstalled.pc") CONFIG_FILES="$CONFIG_FILES cairo-glesv2-uninstalled.pc:src/cairo-features-uninstalled.pc.in" ;; + "src/cairo-glesv3.pc") CONFIG_FILES="$CONFIG_FILES src/cairo-glesv3.pc:src/cairo-features.pc.in" ;; + "cairo-glesv3-uninstalled.pc") CONFIG_FILES="$CONFIG_FILES cairo-glesv3-uninstalled.pc:src/cairo-features-uninstalled.pc.in" ;; "src/cairo-cogl.pc") CONFIG_FILES="$CONFIG_FILES src/cairo-cogl.pc:src/cairo-features.pc.in" ;; "cairo-cogl-uninstalled.pc") CONFIG_FILES="$CONFIG_FILES cairo-cogl-uninstalled.pc:src/cairo-features-uninstalled.pc.in" ;; "src/cairo-directfb.pc") CONFIG_FILES="$CONFIG_FILES src/cairo-directfb.pc:src/cairo-features.pc.in" ;; @@ -37903,55 +38982,53 @@ ;; "libtool":C) - # See if we are running on zsh, and set the options which allow our + # See if we are running on zsh, and set the options that allow our # commands through without removal of \ escapes. - if test -n "${ZSH_VERSION+set}" ; then + if test -n "${ZSH_VERSION+set}"; then setopt NO_GLOB_SUBST fi - cfgfile="${ofile}T" + cfgfile=${ofile}T trap "$RM \"$cfgfile\"; exit 1" 1 2 15 $RM "$cfgfile" cat <<_LT_EOF >> "$cfgfile" #! $SHELL - -# `$ECHO "$ofile" | sed 's%^.*/%%'` - Provide generalized library-building support services. -# Generated automatically by $as_me ($PACKAGE$TIMESTAMP) $VERSION +# Generated automatically by $as_me ($PACKAGE) $VERSION # Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`: # NOTE: Changes made to this file will be lost: look at ltmain.sh. + +# Provide generalized library-building support services. +# Written by Gordon Matzigkeit, 1996 + +# Copyright (C) 2014 Free Software Foundation, Inc. +# This is free software; see the source for copying conditions. There is NO +# warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + +# GNU Libtool 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 of of the License, or +# (at your option) any later version. # -# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, -# 2006, 2007, 2008, 2009, 2010, 2011 Free Software -# Foundation, Inc. -# Written by Gordon Matzigkeit, 1996 -# -# This file is part of GNU Libtool. -# -# GNU Libtool 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 of -# the License, or (at your option) any later version. -# -# As a special exception to the GNU General Public License, -# if you distribute this file as part of a program or library that -# is built using GNU Libtool, you may include this file under the -# same distribution terms that you use for the rest of that program. +# As a special exception to the GNU General Public License, if you +# distribute this file as part of a program or library that is built +# using GNU Libtool, you may include this file under the same +# distribution terms that you use for the rest of that program. # -# GNU Libtool is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of +# GNU Libtool 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 GNU Libtool; see the file COPYING. If not, a copy -# can be downloaded from http://www.gnu.org/licenses/gpl.html, or -# obtained by writing to the Free Software Foundation, Inc., -# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +# along with this program. If not, see . # The names of the tagged configurations supported by this script. -available_tags="CXX " +available_tags='CXX ' + +# Configured defaults for sys_lib_dlsearch_path munging. +: \${LT_SYS_LIBRARY_PATH="$configure_time_lt_sys_library_path"} # ### BEGIN LIBTOOL CONFIG @@ -37980,6 +39057,9 @@ # Whether or not to optimize for fast installation. fast_install=$enable_fast_install +# Shared archive member basename,for filename based shared library versioning on AIX. +shared_archive_member_spec=$shared_archive_member_spec + # Shell to use when invoking shell scripts. SHELL=$lt_SHELL @@ -38091,18 +39171,27 @@ # Transform the output of nm in a proper C declaration. global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl +# Transform the output of nm into a list of symbols to manually relocate. +global_symbol_to_import=$lt_lt_cv_sys_global_symbol_to_import + # Transform the output of nm in a C name address pair. global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address # Transform the output of nm in a C name address pair when lib prefix is needed. global_symbol_to_c_name_address_lib_prefix=$lt_lt_cv_sys_global_symbol_to_c_name_address_lib_prefix +# The name lister interface. +nm_interface=$lt_lt_cv_nm_interface + # Specify filename containing input files for \$NM. nm_file_list_spec=$lt_nm_file_list_spec -# The root where to search for dependent libraries,and in which our libraries should be installed. +# The root where to search for dependent libraries,and where our libraries should be installed. lt_sysroot=$lt_sysroot +# Command to truncate a binary pipe. +lt_truncate_bin=$lt_lt_cv_truncate_bin + # The name of the directory that contains temporary libtool files. objdir=$objdir @@ -38193,8 +39282,11 @@ # Compile-time system search path for libraries. sys_lib_search_path_spec=$lt_sys_lib_search_path_spec -# Run-time system search path for libraries. -sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec +# Detected run-time system search path for libraries. +sys_lib_dlsearch_path_spec=$lt_configure_time_dlsearch_path + +# Explicit LT_SYS_LIBRARY_PATH set during ./configure time. +configure_time_lt_sys_library_path=$lt_configure_time_lt_sys_library_path # Whether dlopen is supported. dlopen_support=$enable_dlopen @@ -38287,13 +39379,13 @@ # Whether we need a single "-rpath" flag with a separated argument. hardcode_libdir_separator=$lt_hardcode_libdir_separator -# Set to "yes" if using DIR/libNAME\${shared_ext} during linking hardcodes +# Set to "yes" if using DIR/libNAME\$shared_ext during linking hardcodes # DIR into the resulting binary. hardcode_direct=$hardcode_direct -# Set to "yes" if using DIR/libNAME\${shared_ext} during linking hardcodes +# Set to "yes" if using DIR/libNAME\$shared_ext during linking hardcodes # DIR into the resulting binary and the resulting library dependency is -# "absolute",i.e impossible to change by setting \${shlibpath_var} if the +# "absolute",i.e impossible to change by setting \$shlibpath_var if the # library is relocated. hardcode_direct_absolute=$hardcode_direct_absolute @@ -38359,13 +39451,72 @@ _LT_EOF + cat <<'_LT_EOF' >> "$cfgfile" + +# ### BEGIN FUNCTIONS SHARED WITH CONFIGURE + +# func_munge_path_list VARIABLE PATH +# ----------------------------------- +# VARIABLE is name of variable containing _space_ separated list of +# directories to be munged by the contents of PATH, which is string +# having a format: +# "DIR[:DIR]:" +# string "DIR[ DIR]" will be prepended to VARIABLE +# ":DIR[:DIR]" +# string "DIR[ DIR]" will be appended to VARIABLE +# "DIRP[:DIRP]::[DIRA:]DIRA" +# string "DIRP[ DIRP]" will be prepended to VARIABLE and string +# "DIRA[ DIRA]" will be appended to VARIABLE +# "DIR[:DIR]" +# VARIABLE will be replaced by "DIR[ DIR]" +func_munge_path_list () +{ + case x$2 in + x) + ;; + *:) + eval $1=\"`$ECHO $2 | $SED 's/:/ /g'` \$$1\" + ;; + x:*) + eval $1=\"\$$1 `$ECHO $2 | $SED 's/:/ /g'`\" + ;; + *::*) + eval $1=\"\$$1\ `$ECHO $2 | $SED -e 's/.*:://' -e 's/:/ /g'`\" + eval $1=\"`$ECHO $2 | $SED -e 's/::.*//' -e 's/:/ /g'`\ \$$1\" + ;; + *) + eval $1=\"`$ECHO $2 | $SED 's/:/ /g'`\" + ;; + esac +} + + +# Calculate cc_basename. Skip known compiler wrappers and cross-prefix. +func_cc_basename () +{ + for cc_temp in $*""; do + case $cc_temp in + compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; + distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; + \-*) ;; + *) break;; + esac + done + func_cc_basename_result=`$ECHO "$cc_temp" | $SED "s%.*/%%; s%^$host_alias-%%"` +} + + +# ### END FUNCTIONS SHARED WITH CONFIGURE + +_LT_EOF + case $host_os in aix3*) cat <<\_LT_EOF >> "$cfgfile" # AIX sometimes has problems with the GCC collect2 program. For some # reason, if we set the COLLECT_NAMES environment variable, the problems # vanish in a puff of smoke. -if test "X${COLLECT_NAMES+set}" != Xset; then +if test set != "${COLLECT_NAMES+set}"; then COLLECT_NAMES= export COLLECT_NAMES fi @@ -38374,7 +39525,7 @@ esac -ltmain="$ac_aux_dir/ltmain.sh" +ltmain=$ac_aux_dir/ltmain.sh # We use sed instead of cat because bash on DJGPP gets confused if @@ -38384,165 +39535,6 @@ sed '$q' "$ltmain" >> "$cfgfile" \ || (rm -f "$cfgfile"; exit 1) - if test x"$xsi_shell" = xyes; then - sed -e '/^func_dirname ()$/,/^} # func_dirname /c\ -func_dirname ()\ -{\ -\ case ${1} in\ -\ */*) func_dirname_result="${1%/*}${2}" ;;\ -\ * ) func_dirname_result="${3}" ;;\ -\ esac\ -} # Extended-shell func_dirname implementation' "$cfgfile" > $cfgfile.tmp \ - && mv -f "$cfgfile.tmp" "$cfgfile" \ - || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") -test 0 -eq $? || _lt_function_replace_fail=: - - - sed -e '/^func_basename ()$/,/^} # func_basename /c\ -func_basename ()\ -{\ -\ func_basename_result="${1##*/}"\ -} # Extended-shell func_basename implementation' "$cfgfile" > $cfgfile.tmp \ - && mv -f "$cfgfile.tmp" "$cfgfile" \ - || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") -test 0 -eq $? || _lt_function_replace_fail=: - - - sed -e '/^func_dirname_and_basename ()$/,/^} # func_dirname_and_basename /c\ -func_dirname_and_basename ()\ -{\ -\ case ${1} in\ -\ */*) func_dirname_result="${1%/*}${2}" ;;\ -\ * ) func_dirname_result="${3}" ;;\ -\ esac\ -\ func_basename_result="${1##*/}"\ -} # Extended-shell func_dirname_and_basename implementation' "$cfgfile" > $cfgfile.tmp \ - && mv -f "$cfgfile.tmp" "$cfgfile" \ - || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") -test 0 -eq $? || _lt_function_replace_fail=: - - - sed -e '/^func_stripname ()$/,/^} # func_stripname /c\ -func_stripname ()\ -{\ -\ # pdksh 5.2.14 does not do ${X%$Y} correctly if both X and Y are\ -\ # positional parameters, so assign one to ordinary parameter first.\ -\ func_stripname_result=${3}\ -\ func_stripname_result=${func_stripname_result#"${1}"}\ -\ func_stripname_result=${func_stripname_result%"${2}"}\ -} # Extended-shell func_stripname implementation' "$cfgfile" > $cfgfile.tmp \ - && mv -f "$cfgfile.tmp" "$cfgfile" \ - || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") -test 0 -eq $? || _lt_function_replace_fail=: - - - sed -e '/^func_split_long_opt ()$/,/^} # func_split_long_opt /c\ -func_split_long_opt ()\ -{\ -\ func_split_long_opt_name=${1%%=*}\ -\ func_split_long_opt_arg=${1#*=}\ -} # Extended-shell func_split_long_opt implementation' "$cfgfile" > $cfgfile.tmp \ - && mv -f "$cfgfile.tmp" "$cfgfile" \ - || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") -test 0 -eq $? || _lt_function_replace_fail=: - - - sed -e '/^func_split_short_opt ()$/,/^} # func_split_short_opt /c\ -func_split_short_opt ()\ -{\ -\ func_split_short_opt_arg=${1#??}\ -\ func_split_short_opt_name=${1%"$func_split_short_opt_arg"}\ -} # Extended-shell func_split_short_opt implementation' "$cfgfile" > $cfgfile.tmp \ - && mv -f "$cfgfile.tmp" "$cfgfile" \ - || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") -test 0 -eq $? || _lt_function_replace_fail=: - - - sed -e '/^func_lo2o ()$/,/^} # func_lo2o /c\ -func_lo2o ()\ -{\ -\ case ${1} in\ -\ *.lo) func_lo2o_result=${1%.lo}.${objext} ;;\ -\ *) func_lo2o_result=${1} ;;\ -\ esac\ -} # Extended-shell func_lo2o implementation' "$cfgfile" > $cfgfile.tmp \ - && mv -f "$cfgfile.tmp" "$cfgfile" \ - || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") -test 0 -eq $? || _lt_function_replace_fail=: - - - sed -e '/^func_xform ()$/,/^} # func_xform /c\ -func_xform ()\ -{\ - func_xform_result=${1%.*}.lo\ -} # Extended-shell func_xform implementation' "$cfgfile" > $cfgfile.tmp \ - && mv -f "$cfgfile.tmp" "$cfgfile" \ - || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") -test 0 -eq $? || _lt_function_replace_fail=: - - - sed -e '/^func_arith ()$/,/^} # func_arith /c\ -func_arith ()\ -{\ - func_arith_result=$(( $* ))\ -} # Extended-shell func_arith implementation' "$cfgfile" > $cfgfile.tmp \ - && mv -f "$cfgfile.tmp" "$cfgfile" \ - || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") -test 0 -eq $? || _lt_function_replace_fail=: - - - sed -e '/^func_len ()$/,/^} # func_len /c\ -func_len ()\ -{\ - func_len_result=${#1}\ -} # Extended-shell func_len implementation' "$cfgfile" > $cfgfile.tmp \ - && mv -f "$cfgfile.tmp" "$cfgfile" \ - || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") -test 0 -eq $? || _lt_function_replace_fail=: - -fi - -if test x"$lt_shell_append" = xyes; then - sed -e '/^func_append ()$/,/^} # func_append /c\ -func_append ()\ -{\ - eval "${1}+=\\${2}"\ -} # Extended-shell func_append implementation' "$cfgfile" > $cfgfile.tmp \ - && mv -f "$cfgfile.tmp" "$cfgfile" \ - || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") -test 0 -eq $? || _lt_function_replace_fail=: - - - sed -e '/^func_append_quoted ()$/,/^} # func_append_quoted /c\ -func_append_quoted ()\ -{\ -\ func_quote_for_eval "${2}"\ -\ eval "${1}+=\\\\ \\$func_quote_for_eval_result"\ -} # Extended-shell func_append_quoted implementation' "$cfgfile" > $cfgfile.tmp \ - && mv -f "$cfgfile.tmp" "$cfgfile" \ - || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") -test 0 -eq $? || _lt_function_replace_fail=: - - - # Save a `func_append' function call where possible by direct use of '+=' - sed -e 's%func_append \([a-zA-Z_]\{1,\}\) "%\1+="%g' $cfgfile > $cfgfile.tmp \ - && mv -f "$cfgfile.tmp" "$cfgfile" \ - || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") - test 0 -eq $? || _lt_function_replace_fail=: -else - # Save a `func_append' function call even when '+=' is not available - sed -e 's%func_append \([a-zA-Z_]\{1,\}\) "%\1="$\1%g' $cfgfile > $cfgfile.tmp \ - && mv -f "$cfgfile.tmp" "$cfgfile" \ - || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") - test 0 -eq $? || _lt_function_replace_fail=: -fi - -if test x"$_lt_function_replace_fail" = x":"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Unable to substitute extended shell functions in $ofile" >&5 -$as_echo "$as_me: WARNING: Unable to substitute extended shell functions in $ofile" >&2;} -fi - - mv -f "$cfgfile" "$ofile" || (rm -f "$ofile" && cp "$cfgfile" "$ofile" && rm -f "$cfgfile") chmod +x "$ofile" @@ -38629,13 +39621,13 @@ # Whether we need a single "-rpath" flag with a separated argument. hardcode_libdir_separator=$lt_hardcode_libdir_separator_CXX -# Set to "yes" if using DIR/libNAME\${shared_ext} during linking hardcodes +# Set to "yes" if using DIR/libNAME\$shared_ext during linking hardcodes # DIR into the resulting binary. hardcode_direct=$hardcode_direct_CXX -# Set to "yes" if using DIR/libNAME\${shared_ext} during linking hardcodes +# Set to "yes" if using DIR/libNAME\$shared_ext during linking hardcodes # DIR into the resulting binary and the resulting library dependency is -# "absolute",i.e impossible to change by setting \${shlibpath_var} if the +# "absolute",i.e impossible to change by setting \$shlibpath_var if the # library is relocated. hardcode_direct_absolute=$hardcode_direct_absolute_CXX @@ -39029,6 +40021,14 @@ $SED " s%@FEATURE_PC@%cairo-glesv2%g; s%@FEATURE_NAME@%OpenGLESv2 surface backend%g; s%@FEATURE_BASE@%$glesv2_BASE%g; s%@FEATURE_REQUIRES@%$glesv2_REQUIRES%g; s%@FEATURE_NONPKGCONFIG_LIBS@%$glesv2_NONPKGCONFIG_LIBS%g; s%@FEATURE_NONPKGCONFIG_EXTRA_LIBS@%$glesv2_NONPKGCONFIG_EXTRA_LIBS%g; s%@FEATURE_NONPKGCONFIG_CFLAGS@%$glesv2_NONPKGCONFIG_CFLAGS%g; " < "cairo-glesv2-uninstalled.pc.tmp" > "cairo-glesv2-uninstalled.pc" && rm -f "cairo-glesv2-uninstalled.pc.tmp" || as_fn_error $? "failed to update cairo-glesv2-uninstalled.pc" "$LINENO" 5 ;; + "src/cairo-glesv3.pc":F) mv "src/cairo-glesv3.pc" "src/cairo-glesv3.pc.tmp" && + $SED " s%@FEATURE_PC@%cairo-glesv3%g; s%@FEATURE_NAME@%OpenGLESv3 surface backend%g; s%@FEATURE_BASE@%$glesv3_BASE%g; s%@FEATURE_REQUIRES@%$glesv3_REQUIRES%g; s%@FEATURE_NONPKGCONFIG_LIBS@%$glesv3_NONPKGCONFIG_LIBS%g; s%@FEATURE_NONPKGCONFIG_EXTRA_LIBS@%$glesv3_NONPKGCONFIG_EXTRA_LIBS%g; s%@FEATURE_NONPKGCONFIG_CFLAGS@%$glesv3_NONPKGCONFIG_CFLAGS%g; " < "src/cairo-glesv3.pc.tmp" > "src/cairo-glesv3.pc" && rm -f "src/cairo-glesv3.pc.tmp" || + as_fn_error $? "failed to update src/cairo-glesv3.pc" "$LINENO" 5 + ;; + "cairo-glesv3-uninstalled.pc":F) mv "cairo-glesv3-uninstalled.pc" "cairo-glesv3-uninstalled.pc.tmp" && + $SED " s%@FEATURE_PC@%cairo-glesv3%g; s%@FEATURE_NAME@%OpenGLESv3 surface backend%g; s%@FEATURE_BASE@%$glesv3_BASE%g; s%@FEATURE_REQUIRES@%$glesv3_REQUIRES%g; s%@FEATURE_NONPKGCONFIG_LIBS@%$glesv3_NONPKGCONFIG_LIBS%g; s%@FEATURE_NONPKGCONFIG_EXTRA_LIBS@%$glesv3_NONPKGCONFIG_EXTRA_LIBS%g; s%@FEATURE_NONPKGCONFIG_CFLAGS@%$glesv3_NONPKGCONFIG_CFLAGS%g; " < "cairo-glesv3-uninstalled.pc.tmp" > "cairo-glesv3-uninstalled.pc" && rm -f "cairo-glesv3-uninstalled.pc.tmp" || + as_fn_error $? "failed to update cairo-glesv3-uninstalled.pc" "$LINENO" 5 + ;; "src/cairo-cogl.pc":F) mv "src/cairo-cogl.pc" "src/cairo-cogl.pc.tmp" && $SED " s%@FEATURE_PC@%cairo-cogl%g; s%@FEATURE_NAME@%Cogl surface backend%g; s%@FEATURE_BASE@%$cogl_BASE%g; s%@FEATURE_REQUIRES@%$cogl_REQUIRES%g; s%@FEATURE_NONPKGCONFIG_LIBS@%$cogl_NONPKGCONFIG_LIBS%g; s%@FEATURE_NONPKGCONFIG_EXTRA_LIBS@%$cogl_NONPKGCONFIG_EXTRA_LIBS%g; s%@FEATURE_NONPKGCONFIG_CFLAGS@%$cogl_NONPKGCONFIG_CFLAGS%g; " < "src/cairo-cogl.pc.tmp" > "src/cairo-cogl.pc" && rm -f "src/cairo-cogl.pc.tmp" || as_fn_error $? "failed to update src/cairo-cogl.pc" "$LINENO" 5 @@ -39214,6 +40214,7 @@ echo " SVG: $use_svg" echo " OpenGL: $use_gl" echo " OpenGL ES 2.0: $use_glesv2" + echo " OpenGL ES 3.0: $use_glesv3" echo " BeOS: $use_beos" echo " DirectFB: $use_directfb" echo " OpenVG: $use_vg" diff -Nru cairo-1.14.6/configure.ac cairo-1.15.10/configure.ac --- cairo-1.14.6/configure.ac 2015-10-27 21:04:21.000000000 +0000 +++ cairo-1.15.10/configure.ac 2017-12-07 02:14:36.000000000 +0000 @@ -12,6 +12,7 @@ AC_CONFIG_HEADERS(config.h) AC_CHECK_HEADERS([unistd.h sys/ioctl.h]) +AC_C_TYPEOF AM_INIT_AUTOMAKE([1.11 foreign -Wall no-define no-dist-gzip dist-xz]) AM_SILENT_RULES([yes]) @@ -296,7 +297,7 @@ dnl =========================================================================== CAIRO_ENABLE_SURFACE_BACKEND(drm, DRM, no, [ - drm_REQUIRES="libudev >= 136" + drm_REQUIRES="libudev >= 136, libdrm >= 2.4" PKG_CHECK_MODULES(drm, $drm_REQUIRES, , [use_drm="no (requires $drm_REQUIRES, udev is available from git://git.kernel.org/pub/scm/linux/hotplug/udev.git)"]) ]) @@ -386,6 +387,29 @@ ]) dnl =========================================================================== +CAIRO_ENABLE_SURFACE_BACKEND(glesv3, OpenGLESv3, no, [ + glesv3_REQUIRES="glesv3" + PKG_CHECK_MODULES(glesv3, $glesv3_REQUIRES,, [ + dnl Fallback to searching for headers + AC_CHECK_HEADER(GLES3/gl3.h,, [use_glesv3="no (glesv3.pc nor OpenGL ES 3.0 headers not found)"]) + if test "x$use_glesv3" = "xyes"; then + glesv3_NONPKGCONFIG_CFLAGS= + dnl glesv3 is provided by the libGLESv2 library (there is no separate libGLESv3) + glesv3_NONPKGCONFIG_LIBS="-lGLESv2" + fi]) + + if test "x$have_dl" = "xyes" -a "x$have_dlsym" = "xyes"; then + glesv3_LIBS="$glesv3_LIBS -ldl" + fi + + if test "x$use_glesv3" = "xyes" -a "x$use_gl" = "xyes"; then + AC_MSG_ERROR([use either --enable-gl=yes or --enable-glesv3=yes. Not both at the same time.]) + fi + + need_egl_functions=yes +]) + +dnl =========================================================================== CAIRO_ENABLE_SURFACE_BACKEND(cogl, Cogl, no, [ cogl_REQUIRES="cogl-2.0-experimental" PKG_CHECK_MODULES(cogl, $cogl_REQUIRES,, [use_cogl="no"]) @@ -470,6 +494,9 @@ any2ppm_cs=no CAIRO_ENABLE_SURFACE_BACKEND(script, script, yes, [ any2ppm_cs=yes + # The script backend requires zlib. + use_script=$have_libz + script_NONPKGCONFIG_LIBS=-lz ]) dnl =========================================================================== diff -Nru cairo-1.14.6/debian/changelog cairo-1.15.10/debian/changelog --- cairo-1.14.6/debian/changelog 2016-01-09 21:36:41.000000000 +0000 +++ cairo-1.15.10/debian/changelog 2018-03-09 07:27:40.000000000 +0000 @@ -1,3 +1,77 @@ +cairo (1.15.10-2xenial1) xenial; urgency=medium + + * Backport for 16.04 + + -- Ken VanDine Fri, 09 Mar 2018 08:27:40 +0100 + +cairo (1.15.10-2) unstable; urgency=medium + + * Cherry-pick 0005-Revert-fix-warning-variable-X.patch: + Fix libcairo-perl autopkgtest regression. Thanks Niko Tyni + for identifying the fix. (Closes: #889471) + * Mark libcairo2-dev as Multi-Arch: same (Closes: #689122) and + libcairo2-doc as Multi-Arch: foreign (Closes: #884167) + + -- Jeremy Bicha Sun, 25 Feb 2018 08:01:14 -0500 + +cairo (1.15.10-1) unstable; urgency=medium + + * New upstream snapshot release + * Update Vcs fields for migration to https://salsa.debian.org/ + * debian/libcairo2.symbols: Add new symbols + * Drop 07_CVE-2016-9082.patch: Applied in new release + * Refresh patches + + -- Jeremy Bicha Fri, 02 Feb 2018 14:39:52 -0500 + +cairo (1.15.8-3) unstable; urgency=medium + + * Update Vcs fields and gbp.conf for Debian GNOME team conventions + * Bump debhelper compat to 11 + * Bump Standards-Version to 4.1.2 + + -- Jeremy Bicha Thu, 21 Dec 2017 13:39:22 -0500 + +cairo (1.15.8-2) unstable; urgency=medium + + * Team upload. + * Upload to unstable + + -- Laurent Bigonville Wed, 25 Oct 2017 15:08:05 +0200 + +cairo (1.15.8-1) experimental; urgency=medium + + * Team upload. + * New upstream snapshot release (LP: #1598589) + - debian/libcairo2.symbols: Add newly exported symbols + * Bump Standards-Version to 4.1.1 (no further changes) + + -- Laurent Bigonville Tue, 17 Oct 2017 18:21:16 +0200 + +cairo (1.14.10-1) unstable; urgency=medium + + * Team upload. + * New upstream version 1.14.10 + + -- Andreas Henriksson Sat, 01 Jul 2017 12:02:13 +0200 + +cairo (1.14.8-1) unstable; urgency=medium + + * Acknowledge NMU, thanks Salvatore. + * New upstream release. + * Switch URLs to https. + * Switch to -dbgsym packages. + + -- Emilio Pozuelo Monfort Wed, 14 Dec 2016 00:13:33 +0100 + +cairo (1.14.6-1.1) unstable; urgency=medium + + * Non-maintainer upload. + * CVE-2016-9082: DoS attack based on using SVG to generate invalid pointers + from a _cairo_image_surface in write_png. (Closes: #842289) + + -- Salvatore Bonaccorso Sun, 30 Oct 2016 13:25:37 +0100 + cairo (1.14.6-1) unstable; urgency=medium * New upstream release. diff -Nru cairo-1.14.6/debian/compat cairo-1.15.10/debian/compat --- cairo-1.14.6/debian/compat 2016-01-09 21:36:41.000000000 +0000 +++ cairo-1.15.10/debian/compat 2018-03-09 07:27:16.000000000 +0000 @@ -1 +1 @@ -9 +10 diff -Nru cairo-1.14.6/debian/control cairo-1.15.10/debian/control --- cairo-1.14.6/debian/control 2016-01-09 21:36:41.000000000 +0000 +++ cairo-1.15.10/debian/control 2018-03-09 07:27:40.000000000 +0000 @@ -1,14 +1,14 @@ +# This file is autogenerated. DO NOT EDIT! +# +# Modifications should be made to debian/control.in instead. +# This file is regenerated automatically in the clean target. Source: cairo Section: libs Priority: optional Maintainer: Debian GNOME Maintainers -Uploaders: Sebastian Dröge , - Emilio Pozuelo Monfort , - Michael Biebl , - Dave Beckett -Build-Depends: debhelper (>= 9), - dpkg-dev (>= 1.14.13), - dh-autoreconf, +Uploaders: Emilio Pozuelo Monfort , Iain Lane , Jeremy Bicha , Laurent Bigonville , Michael Biebl +Build-Depends: debhelper (>= 10), + gnome-pkg-tools, pkg-config (>= 0.19), libfontconfig1-dev (>= 2.2.95), libfreetype6-dev (>= 2.1.10), @@ -26,46 +26,15 @@ libglib2.0-dev, zlib1g-dev, liblzo2-dev -Standards-Version: 3.9.6 -Vcs-Git: git://anonscm.debian.org/collab-maint/cairo.git -Vcs-Browser: https://anonscm.debian.org/cgit/collab-maint/cairo.git -Homepage: http://cairographics.org/ - -Package: libcairo2-dev -Section: libdevel -Architecture: any -Depends: libcairo2 (= ${binary:Version}), - libcairo-gobject2 (= ${binary:Version}), - libcairo-script-interpreter2 (= ${binary:Version}), - libfontconfig1-dev (>= 2.2.95), - 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, - libglib2.0-dev, - ${shlibs:Depends}, - ${misc:Depends} -Provides: libcairo-dev -Suggests: libcairo2-doc -Description: Development files for the Cairo 2D graphics library - Cairo is a multi-platform library providing anti-aliased - vector-based rendering for multiple target backends. - . - This package contains the development libraries, header files needed by - programs that want to compile with Cairo. +Standards-Version: 4.1.2 +Vcs-Browser: https://salsa.debian.org/gnome-team/cairo +Vcs-Git: https://salsa.debian.org/gnome-team/cairo.git +Homepage: https://cairographics.org/ Package: libcairo2 -Section: libs Architecture: any Depends: ${shlibs:Depends}, ${misc:Depends} -Pre-Depends: ${misc:Pre-Depends} Multi-Arch: same Breaks: weston (<< 1.5.0-3~), libwebkitgtk-1.0-0 (<< 2.4.5-2~), @@ -88,23 +57,40 @@ . This package contains the shared libraries. -Package: libcairo2-dbg -Section: debug -Priority: extra +Package: libcairo2-dev +Section: libdevel Architecture: any +Multi-Arch: same Depends: libcairo2 (= ${binary:Version}), + libcairo-gobject2 (= ${binary:Version}), + libcairo-script-interpreter2 (= ${binary:Version}), + libfontconfig1-dev (>= 2.2.95), + 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, + libglib2.0-dev, + ${shlibs:Depends}, ${misc:Depends} -Suggests: libcairo-gobject2 (= ${binary:Version}), - libcairo-script-interpreter2 (= ${binary:Version}), - cairo-perf-utils (= ${binary:Version}) -Multi-Arch: same -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. +Provides: libcairo-dev +Suggests: libcairo2-doc +Description: Development files for the Cairo 2D graphics library + Cairo is a multi-platform library providing anti-aliased + vector-based rendering for multiple target backends. + . + This package contains the development libraries, header files needed by + programs that want to compile with Cairo. Package: libcairo2-doc Section: doc Architecture: all +Multi-Arch: foreign Depends: ${misc:Depends} Recommends: lynx | www-browser Description: Documentation for the Cairo Multi-platform 2D graphics library @@ -115,11 +101,9 @@ in /usr/share/gtk-doc/html/cairo/. Package: libcairo-script-interpreter2 -Section: libs Architecture: any Depends: ${shlibs:Depends}, ${misc:Depends} -Pre-Depends: ${misc:Pre-Depends} Multi-Arch: same Description: Cairo 2D vector graphics library (script interpreter) Cairo is a multi-platform library providing anti-aliased @@ -129,11 +113,9 @@ cairo execution traces. Package: libcairo-gobject2 -Section: libs Architecture: any Depends: ${shlibs:Depends}, ${misc:Depends} -Pre-Depends: ${misc:Pre-Depends} Multi-Arch: same Description: Cairo 2D vector graphics library (GObject library) Cairo is a multi-platform library providing anti-aliased diff -Nru cairo-1.14.6/debian/control.in cairo-1.15.10/debian/control.in --- cairo-1.14.6/debian/control.in 1970-01-01 00:00:00.000000000 +0000 +++ cairo-1.15.10/debian/control.in 2018-03-09 07:25:59.000000000 +0000 @@ -0,0 +1,142 @@ +Source: cairo +Section: libs +Priority: optional +Maintainer: Debian GNOME Maintainers +Uploaders: @GNOME_TEAM@ +Build-Depends: debhelper (>= 10), + gnome-pkg-tools, + pkg-config (>= 0.19), + libfontconfig1-dev (>= 2.2.95), + libfreetype6-dev (>= 2.1.10), + libxrender-dev (>= 1:0.9.5-2), + libx11-dev (>= 2:1.3.3-2), + libxext-dev, + libpng-dev, + libsm-dev, + xutils-dev, + libxt-dev, + libpixman-1-dev (>= 0.30.0), + libxcb1-dev (>= 1.6), + libxcb-render0-dev (>= 1.6), + libxcb-shm0-dev, + libglib2.0-dev, + zlib1g-dev, + liblzo2-dev +Standards-Version: 4.1.2 +Vcs-Browser: https://salsa.debian.org/gnome-team/cairo +Vcs-Git: https://salsa.debian.org/gnome-team/cairo.git +Homepage: https://cairographics.org/ + +Package: libcairo2 +Architecture: any +Depends: ${shlibs:Depends}, + ${misc:Depends} +Multi-Arch: same +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 + with various join and cap styles. All colors may be specified with + optional translucence (opacity/alpha) and combined using the + extended Porter/Duff compositing algebra as found in the X Render + Extension. + . + Cairo exports a stateful rendering API similar in spirit to the path + construction, text, and painting operators of PostScript, (with the + significant addition of translucence in the imaging model). When + complete, the API is intended to support the complete imaging model of + PDF 1.4. + . + This package contains the shared libraries. + +Package: libcairo2-dev +Section: libdevel +Architecture: any +Multi-Arch: same +Depends: libcairo2 (= ${binary:Version}), + libcairo-gobject2 (= ${binary:Version}), + libcairo-script-interpreter2 (= ${binary:Version}), + libfontconfig1-dev (>= 2.2.95), + 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, + libglib2.0-dev, + ${shlibs:Depends}, + ${misc:Depends} +Provides: libcairo-dev +Suggests: libcairo2-doc +Description: Development files for the Cairo 2D graphics library + Cairo is a multi-platform library providing anti-aliased + vector-based rendering for multiple target backends. + . + This package contains the development libraries, header files needed by + programs that want to compile with Cairo. + +Package: libcairo2-doc +Section: doc +Architecture: all +Multi-Arch: foreign +Depends: ${misc:Depends} +Recommends: lynx | www-browser +Description: Documentation for the Cairo Multi-platform 2D graphics library + Cairo is a multi-platform library providing anti-aliased + vector-based rendering for multiple target backends. + . + This package contains the HTML documentation for the Cairo library + in /usr/share/gtk-doc/html/cairo/. + +Package: libcairo-script-interpreter2 +Architecture: any +Depends: ${shlibs:Depends}, + ${misc:Depends} +Multi-Arch: same +Description: Cairo 2D vector graphics library (script interpreter) + Cairo is a multi-platform library providing anti-aliased + vector-based rendering for multiple target backends. + . + This package contains the script interpreter for executing and manipulating + cairo execution traces. + +Package: libcairo-gobject2 +Architecture: any +Depends: ${shlibs:Depends}, + ${misc:Depends} +Multi-Arch: same +Description: Cairo 2D vector graphics library (GObject library) + Cairo is a multi-platform library providing anti-aliased + vector-based rendering for multiple target backends. + . + This package contains the GObject library, providing wrapper GObject types + for all cairo types. + +Package: cairo-perf-utils +Section: misc +Architecture: any +Depends: ${shlibs:Depends}, + ${misc:Depends} +Description: Cairo 2D vector graphics library performance utilities + Cairo is a multi-platform library providing anti-aliased + vector-based rendering for multiple target backends. + . + This package contains a set of utilities for capturing and replaying cairo + execution traces using various backends, in order to be able to measure the + performance of cairo for real-world applications in a reproducible way. + +Package: libcairo2-udeb +Package-Type: udeb +Section: debian-installer +Architecture: any +Depends: ${shlibs:Depends} +Description: Cairo 2D vector graphics library + This is a udeb, or a microdeb, for the debian-installer. diff -Nru cairo-1.14.6/debian/copyright cairo-1.15.10/debian/copyright --- cairo-1.14.6/debian/copyright 2016-01-09 21:36:41.000000000 +0000 +++ cairo-1.15.10/debian/copyright 2018-02-25 13:01:14.000000000 +0000 @@ -2,7 +2,7 @@ Packaged by Dave Beckett -It was downloaded from http://cairographics.org/snapshots/ +It was downloaded from https://cairographics.org/snapshots/ ---------------------------------------------------------------------- Copyright 1999 Tom Tromey diff -Nru cairo-1.14.6/debian/docs cairo-1.15.10/debian/docs --- cairo-1.14.6/debian/docs 1970-01-01 00:00:00.000000000 +0000 +++ cairo-1.15.10/debian/docs 2018-02-25 13:01:14.000000000 +0000 @@ -0,0 +1,3 @@ +AUTHORS +NEWS +README diff -Nru cairo-1.14.6/debian/gbp.conf cairo-1.15.10/debian/gbp.conf --- cairo-1.14.6/debian/gbp.conf 2016-01-09 21:36:41.000000000 +0000 +++ cairo-1.15.10/debian/gbp.conf 2018-02-25 13:01:14.000000000 +0000 @@ -1,3 +1,5 @@ [DEFAULT] pristine-tar = True -debian-branch = master +debian-branch = debian/master +upstream-branch = upstream/latest +upstream-vcs-tag = %(version)s diff -Nru cairo-1.14.6/debian/libcairo2.symbols cairo-1.15.10/debian/libcairo2.symbols --- cairo-1.14.6/debian/libcairo2.symbols 2016-01-09 21:36:41.000000000 +0000 +++ cairo-1.15.10/debian/libcairo2.symbols 2018-02-25 13:01:14.000000000 +0000 @@ -172,10 +172,14 @@ cairo_pattern_set_user_data@Base 1.4.10 cairo_pattern_status@Base 1.2.4 cairo_pdf_get_versions@Base 1.10.0 + cairo_pdf_surface_add_outline@Base 1.15.8 cairo_pdf_surface_create@Base 1.2.4 cairo_pdf_surface_create_for_stream@Base 1.2.4 cairo_pdf_surface_restrict_to_version@Base 1.10.0 + cairo_pdf_surface_set_metadata@Base 1.15.8 + cairo_pdf_surface_set_page_label@Base 1.15.8 cairo_pdf_surface_set_size@Base 1.2.4 + cairo_pdf_surface_set_thumbnail_size@Base 1.15.8 cairo_pdf_version_to_string@Base 1.10.0 cairo_pop_group@Base 1.2.4 cairo_pop_group_to_source@Base 1.2.4 @@ -340,8 +344,12 @@ cairo_svg_get_versions@Base 1.2.4 cairo_svg_surface_create@Base 1.2.4 cairo_svg_surface_create_for_stream@Base 1.2.4 + cairo_svg_surface_get_document_unit@Base 1.15.10 cairo_svg_surface_restrict_to_version@Base 1.2.4 + cairo_svg_surface_set_document_unit@Base 1.15.10 cairo_svg_version_to_string@Base 1.2.4 + cairo_tag_begin@Base 1.15.8 + cairo_tag_end@Base 1.15.8 cairo_tee_surface_add@Base 1.10.2-2~ cairo_tee_surface_create@Base 1.10.2-2~ cairo_tee_surface_index@Base 1.10.2-2~ diff -Nru cairo-1.14.6/debian/patches/0005-Revert-fix-warning-variable-X.patch cairo-1.15.10/debian/patches/0005-Revert-fix-warning-variable-X.patch --- cairo-1.14.6/debian/patches/0005-Revert-fix-warning-variable-X.patch 1970-01-01 00:00:00.000000000 +0000 +++ cairo-1.15.10/debian/patches/0005-Revert-fix-warning-variable-X.patch 2018-02-25 13:01:14.000000000 +0000 @@ -0,0 +1,92 @@ +From: Uli Schlachter +Date: Sat, 23 Dec 2017 13:04:59 +0100 +Subject: Revert "fix warning: variable X might be clobbered by 'longjmp'" + +This reverts commit b092b63119cbfe3cb4bc786eee81630998996acf which +introduced a wrapper function around setjmp(). To quote from man setjmp: + + If the function which called setjmp() returns before longjmp() is + called, the behavior is undefined. Some kind of subtle or unsubtle + chaos is sure to result. + +Since after the above commit setjmp() is called from the wrapper +function, the result might or might not work, depending on compiler +settings. If the setjmp() wrapper is not inlined, then the state of the +stack after longjmp() will likely be garbage. +--- + src/cairo-bentley-ottmann-rectangular.c | 8 +------- + src/cairo-png.c | 17 ++++++----------- + 2 files changed, 7 insertions(+), 18 deletions(-) + +diff --git a/src/cairo-bentley-ottmann-rectangular.c b/src/cairo-bentley-ottmann-rectangular.c +index 15688c7..29f902c 100644 +--- a/src/cairo-bentley-ottmann-rectangular.c ++++ b/src/cairo-bentley-ottmann-rectangular.c +@@ -593,12 +593,6 @@ sweep_line_insert (sweep_line_t *sweep, rectangle_t *rectangle) + pqueue_push (sweep, rectangle); + } + +-static int +-sweep_line_setjmp (sweep_line_t *sweep_line) +-{ +- return setjmp (sweep_line->unwind); +-} +- + static cairo_status_t + _cairo_bentley_ottmann_tessellate_rectangular (rectangle_t **rectangles, + int num_rectangles, +@@ -615,7 +609,7 @@ _cairo_bentley_ottmann_tessellate_rectangular (rectangle_t **rectangles, + rectangles, num_rectangles, + fill_rule, + do_traps, container); +- if ((status = sweep_line_setjmp (&sweep_line))) ++ if ((status = setjmp (sweep_line.unwind))) + return status; + + rectangle = rectangle_pop_start (&sweep_line); +diff --git a/src/cairo-png.c b/src/cairo-png.c +index fe23fcf..596b506 100644 +--- a/src/cairo-png.c ++++ b/src/cairo-png.c +@@ -158,14 +158,6 @@ png_simple_warning_callback (png_structp png, + */ + } + +-static int +-png_setjmp (png_struct *png) +-{ +-#ifdef PNG_SETJMP_SUPPORTED +- return setjmp (png_jmpbuf (png)); +-#endif +- return 0; +-} + + /* Starting with libpng-1.2.30, we must explicitly specify an output_flush_fn. + * Otherwise, we will segfault if we are writing to a stream. */ +@@ -237,8 +229,10 @@ write_png (cairo_surface_t *surface, + goto BAIL4; + } + +- if (png_setjmp (png)) ++#ifdef PNG_SETJMP_SUPPORTED ++ if (setjmp (png_jmpbuf (png))) + goto BAIL4; ++#endif + + png_set_write_fn (png, closure, write_func, png_simple_output_flush_fn); + +@@ -584,11 +578,12 @@ read_png (struct png_read_closure_t *png_closure) + png_set_read_fn (png, png_closure, stream_read_func); + + status = CAIRO_STATUS_SUCCESS; +- +- if (png_setjmp (png)) { ++#ifdef PNG_SETJMP_SUPPORTED ++ if (setjmp (png_jmpbuf (png))) { + surface = _cairo_surface_create_in_error (status); + goto BAIL; + } ++#endif + + png_read_info (png, info); + diff -Nru cairo-1.14.6/debian/patches/01_build_perf_utils.patch cairo-1.15.10/debian/patches/01_build_perf_utils.patch --- cairo-1.14.6/debian/patches/01_build_perf_utils.patch 2016-01-09 21:36:41.000000000 +0000 +++ cairo-1.15.10/debian/patches/01_build_perf_utils.patch 2018-02-25 13:01:14.000000000 +0000 @@ -1,12 +1,31 @@ -Description: Build cairo-perf-utils as part of then normal build process. -Author: Alexandros Frantzis +From: Alexandros Frantzis +Date: Tue, 7 Sep 2010 10:09:10 +0200 +Subject: Build cairo-perf-utils as part of then normal build process. + Bug: https://bugs.freedesktop.org/show_bug.cgi?id=28865 -Last-Update: 2010-08-03 -Index: cairo/configure.ac -=================================================================== ---- 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 @@ +--- + build/configure.ac.features | 1 + + configure.ac | 5 +++++ + perf/Makefile.am | 14 ++++++++++++++ + 3 files changed, 20 insertions(+) + +diff --git a/build/configure.ac.features b/build/configure.ac.features +index aa48652..3ae569b 100644 +--- a/build/configure.ac.features ++++ b/build/configure.ac.features +@@ -409,6 +409,7 @@ AC_DEFUN([CAIRO_REPORT], + echo "The following features and utilities:" + echo " cairo-trace: $use_trace" + echo " cairo-script-interpreter: $use_interpreter" ++ echo " cairo-perf-utils: $use_perf_utils" + echo "" + echo "And the following internal features:" + echo " pthread: $use_pthread" +diff --git a/configure.ac b/configure.ac +index d82db45..a8df3b8 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -878,6 +878,11 @@ dnl =========================================================================== PKG_CHECK_MODULES(gtk, "gtk+-2.0",have_gtk=yes, have_gtk=no) AM_CONDITIONAL(HAVE_GTK, test "x$have_gtk" = "xyes") @@ -18,11 +37,11 @@ AC_CONFIG_FILES([ Makefile boilerplate/Makefile -Index: cairo/perf/Makefile.am -=================================================================== ---- 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 @@ +diff --git a/perf/Makefile.am b/perf/Makefile.am +index 40b35bc..70ed619 100644 +--- a/perf/Makefile.am ++++ b/perf/Makefile.am +@@ -15,11 +15,25 @@ AM_LDFLAGS = $(CAIRO_LDFLAGS) SUBDIRS = micro @@ -48,15 +67,3 @@ EXTRA_PROGRAMS += \ cairo-analyse-trace \ -Index: cairo/build/configure.ac.features -=================================================================== ---- 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" - echo " cairo-script-interpreter: $use_interpreter" -+ echo " cairo-perf-utils: $use_perf_utils" - echo "" - echo "And the following internal features:" - echo " pthread: $use_pthread" diff -Nru cairo-1.14.6/debian/patches/02_am-maintainer-mode.patch cairo-1.15.10/debian/patches/02_am-maintainer-mode.patch --- cairo-1.14.6/debian/patches/02_am-maintainer-mode.patch 2016-01-09 21:36:41.000000000 +0000 +++ cairo-1.15.10/debian/patches/02_am-maintainer-mode.patch 2018-02-25 13:01:14.000000000 +0000 @@ -1,9 +1,18 @@ -Index: cairo/configure.ac -=================================================================== ---- 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]) +From: =?utf-8?q?Sebastian_Dr=C3=B6ge?= +Date: Tue, 7 Sep 2010 10:09:10 +0200 +Subject: Add AM_MAINTAINER_MODE again to configure.ac + +to prevent build problems +--- + configure.ac | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/configure.ac b/configure.ac +index a8df3b8..90e74ec 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -15,6 +15,7 @@ AC_CHECK_HEADERS([unistd.h sys/ioctl.h]) + AC_C_TYPEOF AM_INIT_AUTOMAKE([1.11 foreign -Wall no-define no-dist-gzip dist-xz]) +AM_MAINTAINER_MODE diff -Nru cairo-1.14.6/debian/patches/03_export-symbols.patch cairo-1.15.10/debian/patches/03_export-symbols.patch --- cairo-1.14.6/debian/patches/03_export-symbols.patch 2016-01-09 21:36:41.000000000 +0000 +++ cairo-1.15.10/debian/patches/03_export-symbols.patch 2018-02-25 13:01:14.000000000 +0000 @@ -1,8 +1,18 @@ -Index: cairo/src/Makefile.am -=================================================================== ---- cairo.orig/src/Makefile.am 2013-01-18 11:05:30.064627087 +0100 -+++ cairo/src/Makefile.am 2013-01-18 11:05:30.060627087 +0100 -@@ -44,7 +44,7 @@ +From: Emilio Pozuelo Monfort +Date: Sat, 26 Mar 2011 10:11:21 +0000 +Subject: Only export public symbols + +--- + src/Makefile.am | 2 +- + util/cairo-gobject/Makefile.am | 2 +- + util/cairo-script/Makefile.am | 2 +- + 3 files changed, 3 insertions(+), 3 deletions(-) + +diff --git a/src/Makefile.am b/src/Makefile.am +index acf0a82..64fa521 100644 +--- a/src/Makefile.am ++++ b/src/Makefile.am +@@ -44,7 +44,7 @@ libcairo_la_SOURCES = \ $(enabled_cairo_private) \ $(enabled_cairo_sources) \ $(NULL) @@ -11,11 +21,11 @@ libcairo_la_LIBADD = $(CAIRO_LIBS) \ $(cairo_cxx_lib) libcairo_la_DEPENDENCIES = $(cairo_def_dependency) $(cairo_cxx_lib) -Index: cairo/util/cairo-gobject/Makefile.am -=================================================================== ---- cairo.orig/util/cairo-gobject/Makefile.am 2013-01-18 11:05:30.064627087 +0100 -+++ cairo/util/cairo-gobject/Makefile.am 2013-01-18 11:05:30.060627087 +0100 -@@ -10,6 +10,6 @@ +diff --git a/util/cairo-gobject/Makefile.am b/util/cairo-gobject/Makefile.am +index 22c1a27..5a15950 100644 +--- a/util/cairo-gobject/Makefile.am ++++ b/util/cairo-gobject/Makefile.am +@@ -10,6 +10,6 @@ libcairo_gobject_la_SOURCES = \ $(NULL) libcairo_gobject_la_CFLAGS = $(CAIRO_CFLAGS) $(GOBJECT_CFLAGS) @@ -23,11 +33,11 @@ +libcairo_gobject_la_LDFLAGS = -version-info $(CAIRO_LIBTOOL_VERSION_INFO) -no-undefined $(export_symbols) -export-symbols-regex \^cairo_.* libcairo_gobject_la_LIBADD = $(top_builddir)/src/libcairo.la $(CAIRO_LIBS) $(GOBJECT_LIBS) -Index: cairo/util/cairo-script/Makefile.am -=================================================================== ---- cairo.orig/util/cairo-script/Makefile.am 2013-01-18 11:05:30.064627087 +0100 -+++ cairo/util/cairo-script/Makefile.am 2013-01-18 11:05:54.468627453 +0100 -@@ -14,7 +14,7 @@ +diff --git a/util/cairo-script/Makefile.am b/util/cairo-script/Makefile.am +index d5c2998..7efa25f 100644 +--- a/util/cairo-script/Makefile.am ++++ b/util/cairo-script/Makefile.am +@@ -14,7 +14,7 @@ libcairo_script_interpreter_la_SOURCES = \ $(libcairo_script_interpreter_headers) \ $(NULL) libcairo_script_interpreter_la_CFLAGS = $(CAIRO_CFLAGS) diff -Nru cairo-1.14.6/debian/patches/06_hurd-map-noreserve.patch cairo-1.15.10/debian/patches/06_hurd-map-noreserve.patch --- cairo-1.14.6/debian/patches/06_hurd-map-noreserve.patch 2016-01-09 21:36:41.000000000 +0000 +++ cairo-1.15.10/debian/patches/06_hurd-map-noreserve.patch 2018-02-25 13:01:14.000000000 +0000 @@ -1,8 +1,17 @@ -Index: cairo/test/cairo-test-trace.c -=================================================================== ---- cairo.orig/test/cairo-test-trace.c 2015-10-30 09:09:01.835024635 +0100 -+++ cairo/test/cairo-test-trace.c 2015-10-30 09:09:01.831024583 +0100 -@@ -545,7 +545,11 @@ +From: =?utf-8?q?Sebastian_Dr=C3=B6ge?= +Date: Fri, 30 Mar 2012 09:49:05 +0200 +Subject: Hurd has no MAP_NORESERVE so don't use it there + +--- + test/cairo-test-trace.c | 4 ++++ + util/cairo-sphinx/sphinx.c | 4 ++++ + 2 files changed, 8 insertions(+) + +diff --git a/test/cairo-test-trace.c b/test/cairo-test-trace.c +index 5badc43..5c059b4 100644 +--- a/test/cairo-test-trace.c ++++ b/test/cairo-test-trace.c +@@ -545,7 +545,11 @@ spawn_shm (const char *shm_path) base = mmap (NULL, DATA_SIZE, PROT_READ | PROT_WRITE, @@ -14,11 +23,11 @@ fd, 0); close (fd); -Index: cairo/util/cairo-sphinx/sphinx.c -=================================================================== ---- cairo.orig/util/cairo-sphinx/sphinx.c 2015-10-30 09:09:01.835024635 +0100 -+++ cairo/util/cairo-sphinx/sphinx.c 2015-10-30 09:09:01.831024583 +0100 -@@ -1337,7 +1337,11 @@ +diff --git a/util/cairo-sphinx/sphinx.c b/util/cairo-sphinx/sphinx.c +index 238d400..9384edd 100644 +--- a/util/cairo-sphinx/sphinx.c ++++ b/util/cairo-sphinx/sphinx.c +@@ -1337,7 +1337,11 @@ client_shm (const char *shm_path) base = mmap (NULL, DATA_SIZE, PROT_READ | PROT_WRITE, diff -Nru cairo-1.14.6/debian/patches/series cairo-1.15.10/debian/patches/series --- cairo-1.14.6/debian/patches/series 2016-01-09 21:36:41.000000000 +0000 +++ cairo-1.15.10/debian/patches/series 2018-02-25 13:01:14.000000000 +0000 @@ -2,3 +2,4 @@ 02_am-maintainer-mode.patch 03_export-symbols.patch 06_hurd-map-noreserve.patch +0005-Revert-fix-warning-variable-X.patch diff -Nru cairo-1.14.6/debian/rules cairo-1.15.10/debian/rules --- cairo-1.14.6/debian/rules 2016-01-09 21:36:41.000000000 +0000 +++ cairo-1.15.10/debian/rules 2018-02-25 13:01:14.000000000 +0000 @@ -5,10 +5,10 @@ #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 +export DEB_LDFLAGS_MAINT_APPEND = -Wl,-z,defs -Wl,--as-needed %: - dh $@ --with autoreconf + dh $@ --with gnome configure_flags += \ --enable-pdf \ @@ -53,17 +53,20 @@ override_dh_install: dh_install -plibcairo2-udeb --sourcedir=debian/install/udeb - dh_install -Nlibcairo2-udeb --sourcedir=debian/install/deb --list-missing + dh_install -Nlibcairo2-udeb --sourcedir=debian/install/deb -override_dh_installdocs: - dh_installdocs -A NEWS README AUTHORS +override_dh_missing: + dh_missing --list-missing override_dh_auto_clean: rm -rf debian/install/ debian/build/ +override_dh_auto_test: + -dh_auto_test --builddirectory=debian/build/deb + override_dh_strip: dh_strip -plibcairo2-udeb -pcairo-perf-utils - dh_strip --remaining-packages --dbg-package=libcairo2-dbg + dh_strip --remaining-packages --dbgsym-migration="libcairo2-dbg (<< 1.14.8-1~)" override_dh_makeshlibs: dh_makeshlibs -plibcairo2 --add-udeb=libcairo2-udeb -V 'libcairo2 (>= 1.14.0)' -- -c4 diff -Nru cairo-1.14.6/debian/watch cairo-1.15.10/debian/watch --- cairo-1.14.6/debian/watch 2016-01-09 21:36:41.000000000 +0000 +++ cairo-1.15.10/debian/watch 2018-02-25 13:01:14.000000000 +0000 @@ -1,2 +1,2 @@ version=3 -http://cairographics.org/releases/ cairo-([\d+\.]+|\d+)\.tar\.xz +https://cairographics.org/releases/ cairo-([\d+\.]+|\d+)\.tar\.xz diff -Nru cairo-1.14.6/doc/Makefile.in cairo-1.15.10/doc/Makefile.in --- cairo-1.14.6/doc/Makefile.in 2015-12-09 20:41:44.000000000 +0000 +++ cairo-1.15.10/doc/Makefile.in 2017-12-11 21:03:10.000000000 +0000 @@ -1,7 +1,7 @@ -# Makefile.in generated by automake 1.14.1 from Makefile.am. +# Makefile.in generated by automake 1.15 from Makefile.am. # @configure_input@ -# Copyright (C) 1994-2013 Free Software Foundation, Inc. +# Copyright (C) 1994-2014 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -14,7 +14,17 @@ @SET_MAKE@ VPATH = @srcdir@ -am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' +am__is_gnu_make = { \ + if test -z '$(MAKELEVEL)'; then \ + false; \ + elif test -n '$(MAKE_HOST)'; then \ + true; \ + elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ + true; \ + else \ + false; \ + fi; \ +} am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ @@ -77,9 +87,6 @@ POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ -DIST_COMMON = $(top_srcdir)/build/Makefile.am.common \ - $(srcdir)/Makefile.in $(srcdir)/Makefile.am \ - $(top_srcdir)/build/test-driver EXTRA_PROGRAMS = TESTS = check_PROGRAMS = @@ -108,6 +115,7 @@ $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) +DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = @@ -368,6 +376,9 @@ b='$*';; \ esac DIST_SUBDIRS = $(SUBDIRS) +am__DIST_COMMON = $(srcdir)/Makefile.in \ + $(top_srcdir)/build/Makefile.am.common \ + $(top_srcdir)/build/test-driver DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) am__relativize = \ dir0=`pwd`; \ @@ -477,6 +488,7 @@ LTLIBOBJS = @LTLIBOBJS@ LTP = @LTP@ LTP_GENHTML = @LTP_GENHTML@ +LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MKDIR_P = @MKDIR_P@ @@ -553,6 +565,8 @@ gl_LIBS = @gl_LIBS@ glesv2_CFLAGS = @glesv2_CFLAGS@ glesv2_LIBS = @glesv2_LIBS@ +glesv3_CFLAGS = @glesv3_CFLAGS@ +glesv3_LIBS = @glesv3_LIBS@ glib_CFLAGS = @glib_CFLAGS@ glib_LIBS = @glib_LIBS@ gtk_CFLAGS = @gtk_CFLAGS@ @@ -590,6 +604,7 @@ qt_LIBS = @qt_LIBS@ real_pthread_CFLAGS = @real_pthread_CFLAGS@ real_pthread_LIBS = @real_pthread_LIBS@ +runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ shm_LIBS = @shm_LIBS@ @@ -635,7 +650,6 @@ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign doc/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --foreign doc/Makefile -.PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ @@ -644,7 +658,7 @@ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; -$(top_srcdir)/build/Makefile.am.common: +$(top_srcdir)/build/Makefile.am.common $(am__empty): $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh @@ -799,7 +813,7 @@ if test -n "$$am__remaking_logs"; then \ echo "fatal: making $(TEST_SUITE_LOG): possible infinite" \ "recursion detected" >&2; \ - else \ + elif test -n "$$redo_logs"; then \ am__remaking_logs=yes $(MAKE) $(AM_MAKEFLAGS) $$redo_logs; \ fi; \ if $(am__make_dryrun); then :; else \ @@ -1110,6 +1124,8 @@ mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ recheck tags tags-am uninstall uninstall-am +.PRECIOUS: Makefile + doc: cd public && $(MAKE) $(AM_MAKEFLAGS) doc diff -Nru cairo-1.14.6/doc/public/cairo-docs.xml cairo-1.15.10/doc/public/cairo-docs.xml --- cairo-1.14.6/doc/public/cairo-docs.xml 2015-10-27 21:04:22.000000000 +0000 +++ cairo-1.15.10/doc/public/cairo-docs.xml 2017-12-07 02:14:36.000000000 +0000 @@ -1,9 +1,9 @@ - + ]> - + Cairo: A Vector Graphics Library Cairo: A Vector Graphics Library @@ -18,6 +18,7 @@ + Fonts diff -Nru cairo-1.14.6/doc/public/cairo-sections.txt cairo-1.15.10/doc/public/cairo-sections.txt --- cairo-1.14.6/doc/public/cairo-sections.txt 2015-12-09 20:45:07.000000000 +0000 +++ cairo-1.15.10/doc/public/cairo-sections.txt 2017-12-11 21:03:31.000000000 +0000 @@ -68,6 +68,9 @@
cairo-pdf CAIRO_HAS_PDF_SURFACE +CAIRO_PDF_OUTLINE_ROOT +cairo_pdf_outline_flags_t +cairo_pdf_metadata_t cairo_pdf_surface_create cairo_pdf_surface_create_for_stream cairo_pdf_surface_restrict_to_version @@ -75,6 +78,10 @@ cairo_pdf_get_versions cairo_pdf_version_to_string cairo_pdf_surface_set_size +cairo_pdf_surface_add_outline +cairo_pdf_surface_set_metadata +cairo_pdf_surface_set_page_label +cairo_pdf_surface_set_thumbnail_size
@@ -235,6 +242,10 @@
cairo-surface CAIRO_HAS_MIME_SURFACE +CAIRO_MIME_TYPE_CCITT_FAX +CAIRO_MIME_TYPE_CCITT_FAX_PARAMS +CAIRO_MIME_TYPE_EPS +CAIRO_MIME_TYPE_EPS_PARAMS CAIRO_MIME_TYPE_JBIG2 CAIRO_MIME_TYPE_JBIG2_GLOBAL CAIRO_MIME_TYPE_JBIG2_GLOBAL_ID @@ -408,6 +419,14 @@
+cairo-tag +CAIRO_TAG_DEST +CAIRO_TAG_LINK +cairo_tag_begin +cairo_tag_end +
+ +
cairo-matrix cairo_matrix_t cairo_matrix_init diff -Nru cairo-1.14.6/doc/public/html/bindings-errors.html cairo-1.15.10/doc/public/html/bindings-errors.html --- cairo-1.14.6/doc/public/html/bindings-errors.html 2015-12-09 20:45:07.000000000 +0000 +++ cairo-1.15.10/doc/public/html/bindings-errors.html 2017-12-11 21:03:31.000000000 +0000 @@ -2,17 +2,17 @@
-Cairo: A Vector Graphics Library: Error handling - +Error handling: Cairo: A Vector Graphics Library + - + - + @@ -116,7 +116,6 @@

+
Generated by GTK-Doc V1.25 \ No newline at end of file diff -Nru cairo-1.14.6/doc/public/html/bindings-fonts.html cairo-1.15.10/doc/public/html/bindings-fonts.html --- cairo-1.14.6/doc/public/html/bindings-fonts.html 2015-12-09 20:45:07.000000000 +0000 +++ cairo-1.15.10/doc/public/html/bindings-fonts.html 2017-12-11 21:03:31.000000000 +0000 @@ -2,17 +2,17 @@ -Cairo: A Vector Graphics Library: Fonts - +Fonts: Cairo: A Vector Graphics Library + - + - + @@ -47,7 +47,6 @@

+
Generated by GTK-Doc V1.25 \ No newline at end of file diff -Nru cairo-1.14.6/doc/public/html/bindings-memory.html cairo-1.15.10/doc/public/html/bindings-memory.html --- cairo-1.14.6/doc/public/html/bindings-memory.html 2015-12-09 20:45:07.000000000 +0000 +++ cairo-1.15.10/doc/public/html/bindings-memory.html 2017-12-11 21:03:31.000000000 +0000 @@ -2,17 +2,17 @@ -Cairo: A Vector Graphics Library: Memory management - +Memory management: Cairo: A Vector Graphics Library + - + - + @@ -117,7 +117,6 @@

+
Generated by GTK-Doc V1.25 \ No newline at end of file diff -Nru cairo-1.14.6/doc/public/html/bindings-overloading.html cairo-1.15.10/doc/public/html/bindings-overloading.html --- cairo-1.14.6/doc/public/html/bindings-overloading.html 2015-12-09 20:45:07.000000000 +0000 +++ cairo-1.15.10/doc/public/html/bindings-overloading.html 2017-12-11 21:03:31.000000000 +0000 @@ -2,17 +2,17 @@ -Cairo: A Vector Graphics Library: Overloading and optional arguments - +Overloading and optional arguments: Cairo: A Vector Graphics Library + - + - + @@ -115,7 +115,6 @@ +
Generated by GTK-Doc V1.25 \ No newline at end of file diff -Nru cairo-1.14.6/doc/public/html/bindings-path.html cairo-1.15.10/doc/public/html/bindings-path.html --- cairo-1.14.6/doc/public/html/bindings-path.html 2015-12-09 20:45:07.000000000 +0000 +++ cairo-1.15.10/doc/public/html/bindings-path.html 2017-12-11 21:03:31.000000000 +0000 @@ -2,16 +2,16 @@ -Cairo: A Vector Graphics Library: cairo_path_t - +cairo_path_t: Cairo: A Vector Graphics Library + - + - + @@ -111,7 +111,6 @@

+
Generated by GTK-Doc V1.25 \ No newline at end of file diff -Nru cairo-1.14.6/doc/public/html/bindings-patterns.html cairo-1.15.10/doc/public/html/bindings-patterns.html --- cairo-1.14.6/doc/public/html/bindings-patterns.html 2015-12-09 20:45:07.000000000 +0000 +++ cairo-1.15.10/doc/public/html/bindings-patterns.html 2017-12-11 21:03:31.000000000 +0000 @@ -2,17 +2,17 @@ -Cairo: A Vector Graphics Library: Patterns - +Patterns: Cairo: A Vector Graphics Library + - + - + @@ -69,7 +69,6 @@

+
Generated by GTK-Doc V1.25 \ No newline at end of file diff -Nru cairo-1.14.6/doc/public/html/bindings-return-values.html cairo-1.15.10/doc/public/html/bindings-return-values.html --- cairo-1.14.6/doc/public/html/bindings-return-values.html 2015-12-09 20:45:07.000000000 +0000 +++ cairo-1.15.10/doc/public/html/bindings-return-values.html 2017-12-11 21:03:31.000000000 +0000 @@ -2,17 +2,17 @@ -Cairo: A Vector Graphics Library: Multiple return values - +Multiple return values: Cairo: A Vector Graphics Library + - + - + @@ -114,7 +114,6 @@ +
Generated by GTK-Doc V1.25 \ No newline at end of file diff -Nru cairo-1.14.6/doc/public/html/bindings-streams.html cairo-1.15.10/doc/public/html/bindings-streams.html --- cairo-1.14.6/doc/public/html/bindings-streams.html 2015-12-09 20:45:07.000000000 +0000 +++ cairo-1.15.10/doc/public/html/bindings-streams.html 2017-12-11 21:03:31.000000000 +0000 @@ -2,17 +2,17 @@ -Cairo: A Vector Graphics Library: Streams and File I/O - +Streams and File I/O: Cairo: A Vector Graphics Library + - + - + @@ -86,7 +86,6 @@

+
Generated by GTK-Doc V1.25 \ No newline at end of file diff -Nru cairo-1.14.6/doc/public/html/bindings-surfaces.html cairo-1.15.10/doc/public/html/bindings-surfaces.html --- cairo-1.14.6/doc/public/html/bindings-surfaces.html 2015-12-09 20:45:07.000000000 +0000 +++ cairo-1.15.10/doc/public/html/bindings-surfaces.html 2017-12-11 21:03:31.000000000 +0000 @@ -2,17 +2,17 @@ -Cairo: A Vector Graphics Library: Surfaces - +Surfaces: Cairo: A Vector Graphics Library + - + - + @@ -87,7 +87,6 @@

+
Generated by GTK-Doc V1.25 \ No newline at end of file diff -Nru cairo-1.14.6/doc/public/html/cairo-cairo-device-t.html cairo-1.15.10/doc/public/html/cairo-cairo-device-t.html --- cairo-1.14.6/doc/public/html/cairo-cairo-device-t.html 2015-12-09 20:45:07.000000000 +0000 +++ cairo-1.15.10/doc/public/html/cairo-cairo-device-t.html 2017-12-11 21:03:31.000000000 +0000 @@ -2,21 +2,20 @@ -Cairo: A Vector Graphics Library: cairo_device_t - +cairo_device_t: Cairo: A Vector Graphics Library + - + - + @@ -34,7 +33,7 @@

Functions

-
+
@@ -188,7 +187,7 @@

Types and Values

-
+
@@ -206,11 +205,6 @@
-

Object Hierarchy

-
-
-
-

Description

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 @@ -268,11 +262,11 @@ 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().

+

Use cairo_device_get_reference_count() to get the number of references +to a cairo_device_t.

-

Parameters

-
+

Parameters

+
@@ -286,11 +280,10 @@
-

Returns

+

Returns

the referenced cairo_device_t.

-

-

Since 1.10

+

Since: 1.10


@@ -304,8 +297,8 @@ cairo_device_reference().

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

-

Parameters

-
+

Parameters

+
@@ -318,7 +311,7 @@
-

Since 1.10

+

Since: 1.10


@@ -328,8 +321,8 @@

Checks whether an error has previously occurred for this device.

-

Parameters

-
+

Parameters

+
@@ -343,12 +336,11 @@
-

Returns

+

Returns

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

-

-

Since 1.10

+

Since: 1.10


@@ -369,8 +361,8 @@ associated with the device.

This function may acquire devices.

-

Parameters

-
+

Parameters

+
@@ -383,7 +375,7 @@
-

Since 1.10

+

Since: 1.10


@@ -398,8 +390,8 @@ does nothing.

This function may acquire devices.

-

Parameters

-
+

Parameters

+
@@ -412,7 +404,7 @@
-

Since 1.10

+

Since: 1.10


@@ -422,8 +414,8 @@

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

-

Parameters

-
+

Parameters

+
@@ -437,12 +429,11 @@
-

Returns

+

Returns

The type of device .

-

-

Since 1.10

+

Since: 1.10


@@ -452,8 +443,8 @@

Returns the current reference count of device .

-

Parameters

-
+

Parameters

+
@@ -467,13 +458,12 @@
-

Returns

+

Returns

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

-

-

Since 1.10

+

Since: 1.10


@@ -485,12 +475,12 @@ 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 +call this function with the key that was used to set it and NULL for data .

-

Parameters

-
+

Parameters

+
@@ -523,12 +513,11 @@
-

Returns

+

Returns

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

-

-

Since 1.10

+

Since: 1.10


@@ -539,10 +528,10 @@

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.

+key this function returns NULL.

-

Parameters

-
+

Parameters

+
@@ -564,11 +553,10 @@
-

Returns

-

the user data previously attached or NULL.

-

+

Returns

+

the user data previously attached or NULL.

-

Since 1.10

+

Since: 1.10


@@ -593,8 +581,8 @@ marked in the documentation.

-

Parameters

-
+

Parameters

+
@@ -608,14 +596,13 @@
-

Returns

+

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

+

Since: 1.10


@@ -626,8 +613,8 @@ previously acquired using cairo_device_acquire(). See that function for details.

-

Parameters

-
+

Parameters

+
@@ -640,7 +627,7 @@
-

Since 1.10

+

Since: 1.10


@@ -649,10 +636,6 @@ cairo_device_observer_elapsed (cairo_device_t *device);

-
-

Returns

-

-

@@ -661,10 +644,6 @@ cairo_device_observer_fill_elapsed (cairo_device_t *device);

-
-

Returns

-

-

@@ -673,10 +652,6 @@ cairo_device_observer_glyphs_elapsed (cairo_device_t *device);

-
-

Returns

-

-

@@ -685,10 +660,6 @@ cairo_device_observer_mask_elapsed (cairo_device_t *device);

-
-

Returns

-

-

@@ -697,10 +668,6 @@ cairo_device_observer_paint_elapsed (cairo_device_t *device);

-
-

Returns

-

-

@@ -711,10 +678,6 @@ void *closure);

-
-

Returns

-

-

@@ -723,10 +686,6 @@ cairo_device_observer_stroke_elapsed (cairo_device_t *device);

-
-

Returns

-

-
@@ -743,7 +702,7 @@

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

+

Since: 1.10


@@ -761,8 +720,8 @@ the wrong type is undefined.

New entries may be added in future versions.

-

Members

-
+

Members

+
@@ -835,7 +794,7 @@
-

Since 1.10

+

Since: 1.10

@@ -844,7 +803,6 @@
+
Generated by GTK-Doc V1.25 \ No newline at end of file diff -Nru cairo-1.14.6/doc/public/html/cairo-cairo-font-face-t.html cairo-1.15.10/doc/public/html/cairo-cairo-font-face-t.html --- cairo-1.14.6/doc/public/html/cairo-cairo-font-face-t.html 2015-12-09 20:45:07.000000000 +0000 +++ cairo-1.15.10/doc/public/html/cairo-cairo-font-face-t.html 2017-12-11 21:03:31.000000000 +0000 @@ -2,21 +2,20 @@ -Cairo: A Vector Graphics Library: cairo_font_face_t - +cairo_font_face_t: Cairo: A Vector Graphics Library + - + - + @@ -34,7 +33,7 @@

Functions

-
+
@@ -100,7 +99,7 @@

Types and Values

-
+
@@ -118,11 +117,6 @@
-

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.

@@ -144,11 +138,11 @@ 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().

+

Use cairo_font_face_get_reference_count() to get the number of +references to a cairo_font_face_t.

-

Parameters

-
+

Parameters

+
@@ -156,18 +150,17 @@ -

font_face

a cairo_font_face_t, (may be NULL in which case this +

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

 
-

Returns

+

Returns

the referenced cairo_font_face_t.

-

-

Since 1.0

+

Since: 1.0


@@ -180,8 +173,8 @@ and all associated resources are freed. See cairo_font_face_reference().

-

Parameters

-
+

Parameters

+
@@ -194,7 +187,7 @@
-

Since 1.0

+

Since: 1.0


@@ -204,8 +197,8 @@

Checks whether an error has previously occurred for this font face

-

Parameters

-
+

Parameters

+
@@ -219,12 +212,11 @@
-

Returns

+

Returns

CAIRO_STATUS_SUCCESS or another error such as CAIRO_STATUS_NO_MEMORY.

-

-

Since 1.0

+

Since: 1.0


@@ -234,8 +226,8 @@

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

-

Parameters

-
+

Parameters

+
@@ -249,12 +241,11 @@
-

Returns

+

Returns

The type of font_face .

-

-

Since 1.2

+

Since: 1.2


@@ -264,8 +255,8 @@

Returns the current reference count of font_face .

-

Parameters

-
+

Parameters

+
@@ -279,13 +270,12 @@
-

Returns

+

Returns

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

-

-

Since 1.4

+

Since: 1.4


@@ -297,12 +287,12 @@ 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 +call this function with the key that was used to set it and NULL for data .

-

Parameters

-
+

Parameters

+
@@ -335,12 +325,11 @@
-

Returns

+

Returns

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

-

-

Since 1.0

+

Since: 1.0


@@ -351,10 +340,10 @@

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.

+function returns NULL.

-

Parameters

-
+

Parameters

+
@@ -376,11 +365,10 @@
-

Returns

-

the user data previously attached or NULL.

-

+

Returns

+

the user data previously attached or NULL.

-

Since 1.0

+

Since: 1.0

@@ -400,7 +388,7 @@ 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

+

Since: 1.0


@@ -427,8 +415,8 @@ of the wrong type is undefined.

New entries may be added in future versions.

-

Members

-
+

Members

+
@@ -474,7 +462,7 @@
-

Since 1.2

+

Since: 1.2

@@ -483,7 +471,6 @@
+
Generated by GTK-Doc V1.25 \ No newline at end of file diff -Nru cairo-1.14.6/doc/public/html/cairo-cairo-font-options-t.html cairo-1.15.10/doc/public/html/cairo-cairo-font-options-t.html --- cairo-1.14.6/doc/public/html/cairo-cairo-font-options-t.html 2015-12-09 20:45:07.000000000 +0000 +++ cairo-1.15.10/doc/public/html/cairo-cairo-font-options-t.html 2017-12-11 21:03:31.000000000 +0000 @@ -2,21 +2,20 @@ -Cairo: A Vector Graphics Library: cairo_font_options_t - +cairo_font_options_t: Cairo: A Vector Graphics Library + - + - + @@ -34,7 +33,7 @@

Functions

-
+
@@ -164,7 +163,7 @@

Types and Values

-
+
@@ -190,11 +189,6 @@
-

Object Hierarchy

-
-
-
-

Description

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 @@ -210,15 +204,14 @@

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

-

Returns

+

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

+

Since: 1.0


@@ -229,8 +222,8 @@ original .

-

Parameters

-
+

Parameters

+
@@ -244,15 +237,14 @@
-

Returns

+

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

+

Since: 1.0


@@ -262,8 +254,8 @@

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

-

Parameters

-
+

Parameters

+
@@ -276,7 +268,7 @@
-

Since 1.0

+

Since: 1.0


@@ -286,8 +278,8 @@

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

-

Parameters

-
+

Parameters

+
@@ -301,11 +293,10 @@
-

Since 1.0

+

Since: 1.0


@@ -322,8 +313,8 @@ with the operation of CAIRO_OPERATOR_OVER.

-

Parameters

-
+

Parameters

+
@@ -343,7 +334,7 @@
-

Since 1.0

+

Since: 1.0


@@ -354,8 +345,8 @@ be useful when storing an object containing a cairo_font_options_t in a hash table.

-

Parameters

-
+

Parameters

+
@@ -369,13 +360,12 @@
-

Returns

+

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

+

Since: 1.0


@@ -385,8 +375,8 @@ const cairo_font_options_t *other);

Compares two font options objects for equality.

-

Parameters

-
+

Parameters

+
@@ -407,13 +397,12 @@
-

Returns

-

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

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

+

Since: 1.0


@@ -424,8 +413,8 @@

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

-

Parameters

-
+

Parameters

+
@@ -445,7 +434,7 @@
-

Since 1.0

+

Since: 1.0


@@ -454,8 +443,8 @@ cairo_font_options_get_antialias (const cairo_font_options_t *options);

Gets the antialiasing mode for the font options object.

-

Parameters

-
+

Parameters

+
@@ -469,11 +458,10 @@
-

Returns

+

Returns

the antialiasing mode

-

-

Since 1.0

+

Since: 1.0


@@ -487,8 +475,8 @@ CAIRO_ANTIALIAS_SUBPIXEL. See the documentation for cairo_subpixel_order_t for full details.

-

Parameters

-
+

Parameters

+
@@ -508,7 +496,7 @@
-

Since 1.0

+

Since: 1.0


@@ -518,8 +506,8 @@

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

-

Parameters

-
+

Parameters

+
@@ -533,11 +521,10 @@
-

Returns

+

Returns

the subpixel order for the font options object

-

-

Since 1.0

+

Since: 1.0


@@ -550,8 +537,8 @@ and if so, whether to optimize for fidelity or contrast. See the documentation for cairo_hint_style_t for full details.

-

Parameters

-
+

Parameters

+
@@ -571,7 +558,7 @@
-

Since 1.0

+

Since: 1.0


@@ -581,8 +568,8 @@

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

-

Parameters

-
+

Parameters

+
@@ -596,11 +583,10 @@
-

Returns

+

Returns

the hint style for the font options object

-

-

Since 1.0

+

Since: 1.0


@@ -613,8 +599,8 @@ device units. See the documentation for cairo_hint_metrics_t for full details.

-

Parameters

-
+

Parameters

+
@@ -634,7 +620,7 @@
-

Since 1.0

+

Since: 1.0


@@ -644,8 +630,8 @@

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

-

Parameters

-
+

Parameters

+
@@ -659,11 +645,10 @@
-

Returns

+

Returns

the metrics hinting mode for the font options object

-

-

Since 1.0

+

Since: 1.0

@@ -686,7 +671,7 @@ 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

+

Since: 1.0


@@ -695,8 +680,8 @@ each pixel on the display device when rendering with an antialiasing mode of CAIRO_ANTIALIAS_SUBPIXEL.

-

Members

-
+

Members

+
@@ -746,7 +731,7 @@
-

Since 1.0

+

Since: 1.0


@@ -759,8 +744,8 @@ styles are supported by all font backends.

New entries may be added in future versions.

-

Members

-
+

Members

+
@@ -810,7 +795,7 @@
-

Since 1.0

+

Since: 1.0


@@ -821,8 +806,8 @@ letter and line spacing, however it also means that text will be laid out differently at different zoom factors.

-

Members

-
+

Members

+
@@ -854,7 +839,7 @@
-

Since 1.0

+

Since: 1.0

@@ -863,7 +848,6 @@
+
Generated by GTK-Doc V1.25 \ No newline at end of file diff -Nru cairo-1.14.6/doc/public/html/cairo-cairo-matrix-t.html cairo-1.15.10/doc/public/html/cairo-cairo-matrix-t.html --- cairo-1.14.6/doc/public/html/cairo-cairo-matrix-t.html 2015-12-09 20:45:07.000000000 +0000 +++ cairo-1.15.10/doc/public/html/cairo-cairo-matrix-t.html 2017-12-11 21:03:31.000000000 +0000 @@ -2,21 +2,20 @@ -Cairo: A Vector Graphics Library: cairo_matrix_t - +cairo_matrix_t: Cairo: A Vector Graphics Library + - + - + @@ -34,7 +33,7 @@

Functions

-
+
@@ -141,7 +140,7 @@

Types and Values

-
+
@@ -153,11 +152,6 @@
-

Object Hierarchy

-
-
-
-

Description

cairo_matrix_t is used throughout cairo to convert between different coordinate spaces. A cairo_matrix_t holds an affine transformation, @@ -200,8 +194,8 @@ y_new = yx * x + yy * y + y0;

-

Parameters

-
+

Parameters

+
@@ -246,7 +240,7 @@
-

Since 1.0

+

Since: 1.0


@@ -256,8 +250,8 @@

Modifies matrix to be an identity transformation.

-

Parameters

-
+

Parameters

+
@@ -270,7 +264,7 @@
-

Since 1.0

+

Since: 1.0


@@ -285,8 +279,8 @@ ty in the X and Y dimensions, respectively.

-

Parameters

-
+

Parameters

+
@@ -311,7 +305,7 @@
-

Since 1.0

+

Since: 1.0


@@ -326,8 +320,8 @@ in the X and Y dimensions, respectively.

-

Parameters

-
+

Parameters

+
@@ -352,7 +346,7 @@
-

Since 1.0

+

Since: 1.0


@@ -364,8 +358,8 @@ to a transformation that rotates by radians .

-

Parameters

-
+

Parameters

+
@@ -389,7 +383,7 @@
-

Since 1.0

+

Since: 1.0


@@ -408,8 +402,8 @@ , then apply the original transformation to the coordinates.

-

Parameters

-
+

Parameters

+
@@ -434,7 +428,7 @@
-

Since 1.0

+

Since: 1.0


@@ -452,8 +446,8 @@ and sy , then apply the original transformation to the coordinates.

-

Parameters

-
+

Parameters

+
@@ -478,7 +472,7 @@
-

Since 1.0

+

Since: 1.0


@@ -494,8 +488,8 @@ , then apply the original transformation to the coordinates.

-

Parameters

-
+

Parameters

+
@@ -519,7 +513,7 @@
-

Since 1.0

+

Since: 1.0


@@ -532,8 +526,8 @@ collapses points together (it is degenerate), then it has no inverse and this function will fail.

-

Parameters

-
+

Parameters

+
@@ -547,15 +541,14 @@
-

Returns

+

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

+

Since: 1.0


@@ -579,8 +572,8 @@ or b .

-

Parameters

-
+

Parameters

+
@@ -605,7 +598,7 @@
-

Since 1.0

+

Since: 1.0


@@ -644,8 +637,8 @@ and x2 .

-

Parameters

-
+

Parameters

+
@@ -670,7 +663,7 @@
-

Since 1.0

+

Since: 1.0


@@ -684,8 +677,8 @@ ) by matrix .

-

Parameters

-
+

Parameters

+
@@ -710,7 +703,7 @@
-

Since 1.0

+

Since: 1.0

@@ -731,8 +724,8 @@ y_new = yx * x + yy * y + y0;
-

Members

-
+

Members

+
@@ -772,7 +765,7 @@
-

Since 1.0

+

Since: 1.0

@@ -781,7 +774,6 @@
+
Generated by GTK-Doc V1.25 \ No newline at end of file diff -Nru cairo-1.14.6/doc/public/html/cairo-cairo-pattern-t.html cairo-1.15.10/doc/public/html/cairo-cairo-pattern-t.html --- cairo-1.14.6/doc/public/html/cairo-cairo-pattern-t.html 2015-12-09 20:45:07.000000000 +0000 +++ cairo-1.15.10/doc/public/html/cairo-cairo-pattern-t.html 2017-12-11 21:03:31.000000000 +0000 @@ -2,21 +2,20 @@ -Cairo: A Vector Graphics Library: cairo_pattern_t - +cairo_pattern_t: Cairo: A Vector Graphics Library + - + - + @@ -34,7 +33,7 @@

Functions

-
+
@@ -356,7 +355,7 @@

Types and Values

-
+
@@ -382,11 +381,6 @@
-

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 @@ -424,8 +418,8 @@ radial pattern), then the pattern will be put into an error status with a status of CAIRO_STATUS_PATTERN_TYPE_MISMATCH.

-

Parameters

-
+

Parameters

+
@@ -460,7 +454,7 @@
-

Since 1.0

+

Since: 1.0


@@ -487,8 +481,8 @@ radial pattern), then the pattern will be put into an error status with a status of CAIRO_STATUS_PATTERN_TYPE_MISMATCH.

-

Parameters

-
+

Parameters

+
@@ -528,7 +522,7 @@
-

Since 1.0

+

Since: 1.0


@@ -539,8 +533,8 @@

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

-

Parameters

-
+

Parameters

+
@@ -554,21 +548,20 @@ - +

count

return value for the number of color stops, or NULL

return value for the number of color stops, or NULL

 
-

Returns

+

Returns

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

-

-

Since 1.4

+

Since: 1.4


@@ -588,8 +581,8 @@ where n is the number returned by cairo_pattern_get_color_stop_count().

-

Parameters

-
+

Parameters

+
@@ -608,42 +601,41 @@ - + - + - + - + - +

offset

return value for the offset of the stop, or NULL

return value for the offset of the stop, or NULL

 

red

return value for red component of color, or NULL

return value for red component of color, or NULL

 

green

return value for green component of color, or NULL

return value for green component of color, or NULL

 

blue

return value for blue component of color, or NULL

return value for blue component of color, or NULL

 

alpha

return value for alpha component of color, or NULL

return value for alpha component of color, or NULL

 
-

Returns

+

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

+

Since: 1.4


@@ -657,8 +649,8 @@ If the values passed in are outside that range, they will be clamped.

-

Parameters

-
+

Parameters

+
@@ -684,7 +676,7 @@
-

Returns

+

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 @@ -692,9 +684,8 @@

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

+

Since: 1.0


@@ -709,8 +700,8 @@
  1. If the values passed in are outside that range, they will be clamped.

-

Parameters

-
+

Parameters

+
@@ -741,7 +732,7 @@
-

Returns

+

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 @@ -749,9 +740,8 @@

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

+

Since: 1.0


@@ -764,8 +754,8 @@ double *alpha);

Gets the solid color for a solid color pattern.

-

Parameters

-
+

Parameters

+
@@ -779,35 +769,34 @@ - + - + - + - +

red

return value for red component of color, or NULL

return value for red component of color, or NULL

 

green

return value for green component of color, or NULL

return value for green component of color, or NULL

 

blue

return value for blue component of color, or NULL

return value for blue component of color, or NULL

 

alpha

return value for alpha component of color, or NULL

return value for alpha component of color, or NULL

 
-

Returns

+

Returns

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

-

-

Since 1.4

+

Since: 1.4


@@ -816,8 +805,8 @@ cairo_pattern_create_for_surface (cairo_surface_t *surface);

Create a new cairo_pattern_t for the given surface.

-

Parameters

-
+

Parameters

+
@@ -831,7 +820,7 @@
-

Returns

+

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 @@ -839,9 +828,8 @@

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

+

Since: 1.0


@@ -854,8 +842,8 @@ is owned by the pattern; the caller should call cairo_surface_reference() if the surface is to be retained.

-

Parameters

-
+

Parameters

+
@@ -869,20 +857,19 @@ - +

surface

return value for surface of pattern, or NULL

return value for surface of pattern, or NULL

 
-

Returns

+

Returns

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

-

-

Since 1.4

+

Since: 1.4


@@ -901,8 +888,8 @@ pattern space is identical to user space, but the relationship between the spaces can be changed with cairo_pattern_set_matrix().

-

Parameters

-
+

Parameters

+
@@ -933,7 +920,7 @@
-

Returns

+

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 @@ -941,9 +928,8 @@

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

+

Since: 1.0


@@ -956,8 +942,8 @@ double *y1);

Gets the gradient endpoints for a linear gradient.

-

Parameters

-
+

Parameters

+
@@ -971,36 +957,35 @@ - + - + - + - +

x0

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

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

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

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

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

 
-

Returns

+

Returns

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

-

-

Since 1.4

+

Since: 1.4


@@ -1021,8 +1006,8 @@ pattern space is identical to user space, but the relationship between the spaces can be changed with cairo_pattern_set_matrix().

-

Parameters

-
+

Parameters

+
@@ -1063,7 +1048,7 @@
-

Returns

+

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 @@ -1071,9 +1056,8 @@

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

+

Since: 1.0


@@ -1089,8 +1073,8 @@

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

-

Parameters

-
+

Parameters

+
@@ -1104,46 +1088,45 @@ - + - + - + - + - + - +

x0

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

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

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

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

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

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

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

 
-

Returns

+

Returns

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

-

-

Since 1.4

+

Since: 1.4


@@ -1266,7 +1249,7 @@ relationship between the spaces can be changed with cairo_pattern_set_matrix().

-

Returns

+

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 @@ -1274,9 +1257,8 @@

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

+

Since: 1.12


@@ -1299,8 +1281,8 @@ current patch, it will be put into an error status with a status of CAIRO_STATUS_INVALID_MESH_CONSTRUCTION.

-

Parameters

-
+

Parameters

+
@@ -1313,7 +1295,7 @@
-

Since 1.12

+

Since: 1.12


@@ -1335,8 +1317,8 @@ put into an error status with a status of CAIRO_STATUS_INVALID_MESH_CONSTRUCTION.

-

Parameters

-
+

Parameters

+
@@ -1349,7 +1331,7 @@
-

Since 1.12

+

Since: 1.12


@@ -1373,8 +1355,8 @@ will be put into an error status with a status of CAIRO_STATUS_INVALID_MESH_CONSTRUCTION.

-

Parameters

-
+

Parameters

+
@@ -1399,7 +1381,7 @@
-

Since 1.12

+

Since: 1.12


@@ -1432,8 +1414,8 @@ put into an error status with a status of CAIRO_STATUS_INVALID_MESH_CONSTRUCTION.

-

Parameters

-
+

Parameters

+
@@ -1458,7 +1440,7 @@
-

Since 1.12

+

Since: 1.12


@@ -1501,8 +1483,8 @@ put into an error status with a status of CAIRO_STATUS_INVALID_MESH_CONSTRUCTION.

-

Parameters

-
+

Parameters

+
@@ -1547,7 +1529,7 @@
-

Since 1.12

+

Since: 1.12


@@ -1575,8 +1557,8 @@ will be put into an error status with a status of CAIRO_STATUS_INVALID_MESH_CONSTRUCTION.

-

Parameters

-
+

Parameters

+
@@ -1606,7 +1588,7 @@
-

Since 1.12

+

Since: 1.12


@@ -1637,8 +1619,8 @@ will be put into an error status with a status of CAIRO_STATUS_INVALID_MESH_CONSTRUCTION.

-

Parameters

-
+

Parameters

+
@@ -1673,7 +1655,7 @@
-

Since 1.12

+

Since: 1.12


@@ -1705,8 +1687,8 @@ will be put into an error status with a status of CAIRO_STATUS_INVALID_MESH_CONSTRUCTION.

-

Parameters

-
+

Parameters

+
@@ -1746,7 +1728,7 @@
-

Since 1.12

+

Since: 1.12


@@ -1759,8 +1741,8 @@ calling cairo_mesh_pattern_end_patch(). For example it will be 0 during the definition of the first patch.

-

Parameters

-
+

Parameters

+
@@ -1774,21 +1756,20 @@ - +

count

return value for the number patches, or NULL

return value for the number patches, or NULL

 
-

Returns

+

Returns

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

-

-

Since 1.12

+

Since: 1.12


@@ -1803,8 +1784,8 @@ can range from 0 to n-1 where n is the number returned by cairo_mesh_pattern_get_patch_count().

-

Parameters

-
+

Parameters

+
@@ -1825,7 +1806,7 @@
-

Returns

+

Returns

the path defining the patch, or a path with status CAIRO_STATUS_INVALID_INDEX if patch_num or point_num @@ -1834,9 +1815,8 @@ . If pattern is not a mesh pattern, a path with status CAIRO_STATUS_PATTERN_TYPE_MISMATCH is returned.

-

-

Since 1.12

+

Since: 1.12


@@ -1858,8 +1838,8 @@ are from 0 to 3 and identify the control points as explained in cairo_pattern_create_mesh().

-

Parameters

-
+

Parameters

+
@@ -1883,19 +1863,19 @@ - + - +

x

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

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

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

 
-

Returns

+

Returns

CAIRO_STATUS_SUCCESS, or CAIRO_STATUS_INVALID_INDEX if patch_num or point_num @@ -1903,9 +1883,8 @@ . If pattern is not a mesh pattern, CAIRO_STATUS_PATTERN_TYPE_MISMATCH is returned.

-

-

Since 1.12

+

Since: 1.12


@@ -1930,8 +1909,8 @@ are from 0 to 3 and identify the corners as explained in cairo_pattern_create_mesh().

-

Parameters

-
+

Parameters

+
@@ -1955,29 +1934,29 @@ - + - + - + - +

red

return value for red component of color, or NULL

return value for red component of color, or NULL

 

green

return value for green component of color, or NULL

return value for green component of color, or NULL

 

blue

return value for blue component of color, or NULL

return value for blue component of color, or NULL

 

alpha

return value for alpha component of color, or NULL

return value for alpha component of color, or NULL

 
-

Returns

+

Returns

CAIRO_STATUS_SUCCESS, or CAIRO_STATUS_INVALID_INDEX if patch_num or corner_num @@ -1986,9 +1965,8 @@ pattern is not a mesh pattern, CAIRO_STATUS_PATTERN_TYPE_MISMATCH is returned.

-

-

Since 1.12

+

Since: 1.12


@@ -2000,11 +1978,11 @@ 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().

+

Use cairo_pattern_get_reference_count() to get the number of +references to a cairo_pattern_t.

-

Parameters

-
+

Parameters

+
@@ -2018,11 +1996,10 @@
-

Returns

+

Returns

the referenced cairo_pattern_t.

-

-

Since 1.0

+

Since: 1.0


@@ -2035,8 +2012,8 @@ and all associated resources are freed. See cairo_pattern_reference().

-

Parameters

-
+

Parameters

+
@@ -2049,7 +2026,7 @@
-

Since 1.0

+

Since: 1.0


@@ -2059,8 +2036,8 @@

Checks whether an error has previously occurred for this pattern.

-

Parameters

-
+

Parameters

+
@@ -2074,13 +2051,12 @@
-

Since 1.0

+

Since: 1.0


@@ -2094,8 +2070,8 @@

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

-

Parameters

-
+

Parameters

+
@@ -2116,7 +2092,7 @@
-

Since 1.0

+

Since: 1.0


@@ -2126,8 +2102,8 @@

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

-

Parameters

-
+

Parameters

+
@@ -2141,12 +2117,11 @@
-

Returns

+

Returns

the current extend strategy used for drawing the pattern.

-

-

Since 1.0

+

Since: 1.0


@@ -2166,8 +2141,8 @@ cairo_pattern_set_filter (cairo_get_source (cr), CAIRO_FILTER_NEAREST);
-

Parameters

-
+

Parameters

+
@@ -2188,7 +2163,7 @@
-

Since 1.0

+

Since: 1.0


@@ -2198,8 +2173,8 @@

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

-

Parameters

-
+

Parameters

+
@@ -2213,11 +2188,10 @@
-

Returns

+

Returns

the current filter used for resizing the pattern.

-

-

Since 1.0

+

Since: 1.0


@@ -2247,8 +2221,8 @@

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

-

Parameters

-
+

Parameters

+
@@ -2268,7 +2242,7 @@
-

Since 1.0

+

Since: 1.0


@@ -2279,8 +2253,8 @@

Stores the pattern's transformation matrix into matrix .

-

Parameters

-
+

Parameters

+
@@ -2300,18 +2274,18 @@
-

Since 1.0

+

Since: 1.0


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.

+

Get the pattern's type. See cairo_pattern_type_t for available +types.

-

Parameters

-
+

Parameters

+
@@ -2325,12 +2299,11 @@
-

Returns

+

Returns

The type of pattern .

-

-

Since 1.2

+

Since: 1.2


@@ -2340,8 +2313,8 @@

Returns the current reference count of pattern .

-

Parameters

-
+

Parameters

+
@@ -2355,13 +2328,12 @@
-

Returns

+

Returns

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

-

-

Since 1.4

+

Since: 1.4


@@ -2373,12 +2345,12 @@ 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 +call this function with the key that was used to set it and NULL for data .

-

Parameters

-
+

Parameters

+
@@ -2411,12 +2383,11 @@
-

Returns

+

Returns

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

-

-

Since 1.4

+

Since: 1.4


@@ -2427,10 +2398,10 @@

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.

+key this function returns NULL.

-

Parameters

-
+

Parameters

+
@@ -2452,11 +2423,10 @@
-

Returns

-

the user data previously attached or NULL.

-

+

Returns

+

the user data previously attached or NULL.

-

Since 1.4

+

Since: 1.4

@@ -2478,7 +2448,7 @@

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

+

Since: 1.0


@@ -2492,8 +2462,8 @@ and CAIRO_EXTEND_PAD for gradient patterns.

New entries may be added in future versions.

-

Members

-
+

Members

+
@@ -2535,7 +2505,7 @@
-

Since 1.0

+

Since: 1.0


@@ -2545,8 +2515,8 @@ cairo_pattern_set_filter() for indicating the desired filter to be used with a particular pattern.

-

Members

-
+

Members

+
@@ -2602,7 +2572,7 @@
-

Since 1.0

+

Since: 1.0


@@ -2623,8 +2593,8 @@ will be shutdown and put into an error state.

New entries may be added in future versions.

-

Members

-
+

Members

+
@@ -2677,7 +2647,7 @@
-

Since 1.2

+

Since: 1.2

@@ -2686,7 +2656,6 @@
+
Generated by GTK-Doc V1.25 \ No newline at end of file diff -Nru cairo-1.14.6/doc/public/html/cairo-cairo-scaled-font-t.html cairo-1.15.10/doc/public/html/cairo-cairo-scaled-font-t.html --- cairo-1.14.6/doc/public/html/cairo-cairo-scaled-font-t.html 2015-12-09 20:45:07.000000000 +0000 +++ cairo-1.15.10/doc/public/html/cairo-cairo-scaled-font-t.html 2017-12-11 21:03:31.000000000 +0000 @@ -2,21 +2,20 @@ -Cairo: A Vector Graphics Library: cairo_scaled_font_t - +cairo_scaled_font_t: Cairo: A Vector Graphics Library + - + - + @@ -34,7 +33,7 @@

Functions

-
+
@@ -180,7 +179,7 @@

Types and Values

-
+
@@ -202,11 +201,6 @@
-

Object Hierarchy

-
-
-
-

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.

@@ -224,8 +218,8 @@ describe the size of the font and the environment in which it will be used.

-

Parameters

-
+

Parameters

+
@@ -262,12 +256,11 @@
-

Returns

+

Returns

a newly created cairo_scaled_font_t. Destroy with cairo_scaled_font_destroy()

-

-

Since 1.0

+

Since: 1.0


@@ -279,11 +272,11 @@ 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().

+

Use cairo_scaled_font_get_reference_count() to get the number of +references to a cairo_scaled_font_t.

-

Parameters

-
+

Parameters

+
@@ -291,18 +284,17 @@ -

scaled_font

a cairo_scaled_font_t, (may be NULL in which case +

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

 
-

Returns

+

Returns

the referenced cairo_scaled_font_t

-

-

Since 1.0

+

Since: 1.0


@@ -315,8 +307,8 @@ and all associated resources are freed. See cairo_scaled_font_reference().

-

Parameters

-
+

Parameters

+
@@ -329,7 +321,7 @@
-

Since 1.0

+

Since: 1.0


@@ -339,8 +331,8 @@

Checks whether an error has previously occurred for this scaled_font.

-

Parameters

-
+

Parameters

+
@@ -354,12 +346,11 @@
-

Returns

+

Returns

CAIRO_STATUS_SUCCESS or another error such as CAIRO_STATUS_NO_MEMORY.

-

-

Since 1.0

+

Since: 1.0


@@ -369,8 +360,8 @@ cairo_font_extents_t *extents);

Gets the metrics for a cairo_scaled_font_t.

-

Parameters

-
+

Parameters

+
@@ -390,7 +381,7 @@
-

Since 1.0

+

Since: 1.0


@@ -414,8 +405,8 @@ likely to not affect the size of the rectangle, though they will affect the x_advance and y_advance values.

-

Parameters

-
+

Parameters

+
@@ -440,7 +431,7 @@
-

Since 1.2

+

Since: 1.2


@@ -461,8 +452,8 @@

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

-

Parameters

-
+

Parameters

+
@@ -493,7 +484,7 @@
-

Since 1.0

+

Since: 1.0


@@ -513,7 +504,7 @@ mapping, that can be used to render later using scaled_font .

If glyphs - initially points to a non-NULL value, that array is used + 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 @@ -527,14 +518,14 @@ array using cairo_glyph_free(). This may happen even if the provided array was large enough.

If clusters - is not NULL, num_clusters + is not NULL, num_clusters and cluster_flags - should not be NULL, + 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 + 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 @@ -549,7 +540,7 @@ array was large enough.

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

 cairo_status_t status;
@@ -636,8 +627,8 @@
 same scaled_font
  is used for the operation.

-

Parameters

-
+

Parameters

+
@@ -682,34 +673,33 @@ - + - + +, or NULL

clusters

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

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

 

num_clusters

pointer to number of clusters, or NULL

pointer to number of clusters, or NULL

 

cluster_flags

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

 
-

Returns

+

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

+

Since: 1.8


@@ -720,8 +710,8 @@ font face passed to cairo_scaled_font_create(), but this does not hold true for all possible cases.

-

Parameters

-
+

Parameters

+
@@ -735,14 +725,13 @@
-

Returns

+

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

+

Since: 1.2


@@ -755,8 +744,8 @@ options .

-

Parameters

-
+

Parameters

+
@@ -776,7 +765,7 @@
-

Since 1.2

+

Since: 1.2


@@ -789,8 +778,8 @@ matrix .

-

Parameters

-
+

Parameters

+
@@ -810,7 +799,7 @@
-

Since 1.2

+

Since: 1.2


@@ -825,8 +814,8 @@ by cairo_scaled_font_create(). So, the matrix this function returns always has 0,0 as x0,y0.

-

Parameters

-
+

Parameters

+
@@ -846,7 +835,7 @@
-

Since 1.2

+

Since: 1.2


@@ -861,8 +850,8 @@ associated with the scaled font, and hence is the matrix mapping from font space to device space.

-

Parameters

-
+

Parameters

+
@@ -882,7 +871,7 @@
-

Since 1.8

+

Since: 1.8


@@ -893,8 +882,8 @@ a scaled font. See cairo_font_type_t for available types. However, this function never returns CAIRO_FONT_TYPE_TOY.

-

Parameters

-
+

Parameters

+
@@ -908,12 +897,11 @@
-

Returns

+

Returns

The type of scaled_font .

-

-

Since 1.2

+

Since: 1.2


@@ -923,8 +911,8 @@

Returns the current reference count of scaled_font .

-

Parameters

-
+

Parameters

+
@@ -938,13 +926,12 @@
-

Returns

+

Returns

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

-

-

Since 1.4

+

Since: 1.4


@@ -956,12 +943,12 @@ 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 +call this function with the key that was used to set it and NULL for data .

-

Parameters

-
+

Parameters

+
@@ -994,12 +981,11 @@
-

Returns

+

Returns

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

-

-

Since 1.4

+

Since: 1.4


@@ -1010,10 +996,10 @@

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.

+key this function returns NULL.

-

Parameters

-
+

Parameters

+
@@ -1035,11 +1021,10 @@
-

Returns

-

the user data previously attached or NULL.

-

+

Returns

+

the user data previously attached or NULL.

-

Since 1.4

+

Since: 1.4

@@ -1057,7 +1042,7 @@ 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

+

Since: 1.0


@@ -1081,8 +1066,8 @@ can't assume that metrics are independent of the transformation matrix), but otherwise will remain unchanged.

-

Members

-
+

Members

+
@@ -1142,7 +1127,7 @@
-

Since 1.0

+

Since: 1.0


@@ -1166,8 +1151,8 @@ assume that metrics are independent of the transformation matrix), but otherwise will remain unchanged.

-

Members

-
+

Members

+
@@ -1215,7 +1200,7 @@
-

Since 1.0

+

Since: 1.0

@@ -1224,7 +1209,6 @@
+
Generated by GTK-Doc V1.25 \ No newline at end of file diff -Nru cairo-1.14.6/doc/public/html/cairo-cairo-surface-t.html cairo-1.15.10/doc/public/html/cairo-cairo-surface-t.html --- cairo-1.14.6/doc/public/html/cairo-cairo-surface-t.html 2015-12-09 20:45:07.000000000 +0000 +++ cairo-1.15.10/doc/public/html/cairo-cairo-surface-t.html 2017-12-11 21:03:31.000000000 +0000 @@ -2,21 +2,20 @@ -Cairo: A Vector Graphics Library: cairo_surface_t - +cairo_surface_t: Cairo: A Vector Graphics Library + - + - + @@ -34,7 +33,7 @@

Functions

-
+
@@ -292,7 +291,7 @@

Types and Values

-
+
@@ -304,6 +303,22 @@ + + + + + + + + + + + + + + + + @@ -350,11 +365,6 @@
#defineCAIRO_MIME_TYPE_CCITT_FAX
#defineCAIRO_MIME_TYPE_CCITT_FAX_PARAMS
#defineCAIRO_MIME_TYPE_EPS
#defineCAIRO_MIME_TYPE_EPS_PARAMS
#define CAIRO_MIME_TYPE_JBIG2
-

Object Hierarchy

-
-
-
-

Description

cairo_surface_t is the abstract type representing all different drawing targets that cairo can render to. The actual drawings are @@ -367,7 +377,7 @@ 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)
@@ -405,19 +415,20 @@
                               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 -not possible for some reason. The type of the returned surface may -be examined with cairo_surface_get_type().

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

-

Parameters

-
+

Parameters

+
@@ -448,7 +459,7 @@
-

Returns

+

Returns

a pointer to the newly allocated surface. The caller owns the surface and should call cairo_surface_destroy() when done with it.

@@ -456,9 +467,8 @@ pointer to a "nil" surface if other is already in an error state or any other error occurs.

-

-

Since 1.0

+

Since: 1.0


@@ -470,13 +480,16 @@ 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.

+can still be used like any normal image surface. Unlike +cairo_surface_create_similar() the new image surface won't inherit +the device scale from other +.

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

-
+

Parameters

+
@@ -495,19 +508,19 @@ - + - +

width

width of the new surface, (in device-space units)

width of the new surface, (in pixels)

 

height

height of the new surface (in device-space units)

height of the new surface (in pixels)

 
-

Returns

+

Returns

a pointer to the newly allocated image surface. The caller owns the surface and should call cairo_surface_destroy() when done with it.

@@ -515,9 +528,8 @@ pointer to a "nil" surface if other is already in an error state or any other error occurs.

-

-

Since 1.12

+

Since: 1.12


@@ -540,8 +552,8 @@ the extents of the target surface, and the target or subsurface's device transforms are not changed.

-

Parameters

-
+

Parameters

+
@@ -577,7 +589,7 @@
-

Returns

+

Returns

a pointer to the newly allocated surface. The caller owns the surface and should call cairo_surface_destroy() when done with it.

@@ -585,9 +597,8 @@ pointer to a "nil" surface if other is already in an error state or any other error occurs.

-

-

Since 1.10

+

Since: 1.10


@@ -599,11 +610,11 @@ 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().

+

Use cairo_surface_get_reference_count() to get the number of +references to a cairo_surface_t.

-

Parameters

-
+

Parameters

+
@@ -617,11 +628,10 @@
-

Returns

+

Returns

the referenced cairo_surface_t.

-

-

Since 1.0

+

Since: 1.0


@@ -634,8 +644,8 @@ and all associated resources are freed. See cairo_surface_reference().

-

Parameters

-
+

Parameters

+
@@ -648,7 +658,7 @@
-

Since 1.0

+

Since: 1.0


@@ -658,8 +668,8 @@

Checks whether an error has previously occurred for this surface.

-

Parameters

-
+

Parameters

+
@@ -673,14 +683,13 @@
-

Since 1.0

+

Since: 1.0


@@ -701,8 +710,8 @@ it hasn't been called already, before freeing the resources associated with the surface.

-

Parameters

-
+

Parameters

+
@@ -715,7 +724,7 @@
-

Since 1.0

+

Since: 1.0


@@ -729,8 +738,8 @@ memory outside of Cairo. If the surface doesn't support direct access, then this function does nothing.

-

Parameters

-
+

Parameters

+
@@ -743,7 +752,7 @@
-

Since 1.0

+

Since: 1.0


@@ -754,8 +763,8 @@ . See cairo_device_t.

-

Parameters

-
+

Parameters

+
@@ -769,13 +778,12 @@
-

Returns

+

Returns

The device for surface -or NULL if the surface does +or NULL if the surface does not have an associated device.

-

-

Since 1.10

+

Since: 1.10


@@ -789,8 +797,8 @@ metrics and so forth. The result can then be used with cairo_scaled_font_create().

-

Parameters

-
+

Parameters

+
@@ -811,7 +819,7 @@
-

Since 1.0

+

Since: 1.0


@@ -823,8 +831,8 @@ whether the surface contains color and/or alpha information. See cairo_content_t.

-

Parameters

-
+

Parameters

+
@@ -838,12 +846,11 @@
-

Returns

+

Returns

The content type of surface .

-

-

Since 1.2

+

Since: 1.2


@@ -854,8 +861,8 @@ than cairo, and that cairo should reread any cached areas. Note that you must call cairo_surface_flush() before doing such drawing.

-

Parameters

-
+

Parameters

+
@@ -868,7 +875,7 @@
-

Since 1.0

+

Since: 1.0


@@ -886,8 +893,8 @@ to make sure that future cairo calls have the clip set that they expect.

-

Parameters

-
+

Parameters

+
@@ -922,7 +929,7 @@
-

Since 1.0

+

Since: 1.0


@@ -943,8 +950,8 @@

Note that the offset affects drawing to the surface as well as using the surface in a source pattern.

-

Parameters

-
+

Parameters

+
@@ -969,7 +976,7 @@
-

Since 1.0

+

Since: 1.0


@@ -981,8 +988,8 @@

This function returns the previous device offset set by cairo_surface_set_device_offset().

-

Parameters

-
+

Parameters

+
@@ -1007,7 +1014,7 @@
-

Since 1.2

+

Since: 1.2


@@ -1019,8 +1026,8 @@

This function returns the previous device offset set by cairo_surface_set_device_scale().

-

Parameters

-
+

Parameters

+
@@ -1045,7 +1052,7 @@
-

Since 1.14

+

Since: 1.14


@@ -1065,8 +1072,8 @@

Note that the scale affects drawing to the surface as well as using the surface in a source pattern.

-

Parameters

-
+

Parameters

+
@@ -1091,7 +1098,7 @@
-

Since 1.14

+

Since: 1.14


@@ -1120,8 +1127,8 @@

The default fallback resoultion is 300 pixels per inch in both dimensions.

-

Parameters

-
+

Parameters

+
@@ -1146,7 +1153,7 @@
-

Since 1.2

+

Since: 1.2


@@ -1159,8 +1166,8 @@ cairo_surface_set_fallback_resolution(), or default fallback resolution if never set.

-

Parameters

-
+

Parameters

+
@@ -1185,7 +1192,7 @@
-

Since 1.8

+

Since: 1.8


@@ -1195,8 +1202,8 @@

This function returns the type of the backend used to create a surface. See cairo_surface_type_t for available types.

-

Parameters

-
+

Parameters

+
@@ -1210,12 +1217,11 @@
-

Returns

+

Returns

The type of surface .

-

-

Since 1.2

+

Since: 1.2


@@ -1225,8 +1231,8 @@

Returns the current reference count of surface .

-

Parameters

-
+

Parameters

+
@@ -1240,13 +1246,12 @@
-

Returns

+

Returns

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

-

-

Since 1.4

+

Since: 1.4


@@ -1258,12 +1263,12 @@ 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 +call this function with the key that was used to set it and NULL for data .

-

Parameters

-
+

Parameters

+
@@ -1296,12 +1301,11 @@
-

Returns

+

Returns

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

-

-

Since 1.0

+

Since: 1.0


@@ -1312,10 +1316,10 @@

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

-
+

Parameters

+
@@ -1337,11 +1341,10 @@
-

Returns

-

the user data previously attached or NULL.

-

+

Returns

+

the user data previously attached or NULL.

-

Since 1.0

+

Since: 1.0


@@ -1355,8 +1358,8 @@

There is a convenience function for this that takes a cairo_t, namely cairo_copy_page().

-

Parameters

-
+

Parameters

+
@@ -1369,7 +1372,7 @@
-

Since 1.6

+

Since: 1.6


@@ -1381,8 +1384,8 @@

There is a convenience function for this that takes a cairo_t, namely cairo_show_page().

-

Parameters

-
+

Parameters

+
@@ -1395,7 +1398,7 @@
-

Since 1.6

+

Since: 1.6


@@ -1406,7 +1409,7 @@ 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 +

Note: Even if this function returns FALSE, a cairo_show_text_glyphs() operation targeted at surface will still succeed. It just will @@ -1414,8 +1417,8 @@ function to avoid computing UTF-8 text and cluster mapping if the target surface does not use it.

-

Parameters

-
+

Parameters

+
@@ -1429,13 +1432,12 @@
-

Returns

-

TRUE if surface +

Returns

+

TRUE if surface supports -cairo_show_text_glyphs(), FALSE otherwise

-

+cairo_show_text_glyphs(), FALSE otherwise

-

Since 1.8

+

Since: 1.8


@@ -1451,7 +1453,7 @@ to surface . To remove the data from a surface, call this function with same mime type -and NULL for data +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 @@ -1462,7 +1464,8 @@

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.

+CAIRO_MIME_TYPE_JBIG2_GLOBAL, CAIRO_MIME_TYPE_JBIG2_GLOBAL_ID, +CAIRO_MIME_TYPE_CCITT_FAX, CAIRO_MIME_TYPE_CCITT_FAX_PARAMS.

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 @@ -1477,8 +1480,8 @@ be used while still allowing the MIME data to be used whenever possible.

-

Parameters

-
+

Parameters

+
@@ -1522,12 +1525,11 @@
-

Returns

+

Returns

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

-

-

Since 1.10

+

Since: 1.10


@@ -1541,10 +1543,10 @@ using the specified mime type. If no data has been attached with the given mime type, data - is set NULL.

+ is set NULL.

-

Parameters

-
+

Parameters

+
@@ -1574,7 +1576,7 @@
-

Since 1.10

+

Since: 1.10


@@ -1586,8 +1588,8 @@ supports mime_type .

-

Parameters

-
+

Parameters

+
@@ -1608,14 +1610,13 @@
-

Returns

-

TRUE if surface +

Returns

+

TRUE if surface supports mime_type -, FALSE otherwise

-

+, FALSE otherwise

-

Since 1.12

+

Since: 1.12


@@ -1626,7 +1627,7 @@

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

+ 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 @@ -1636,8 +1637,8 @@ before the image surface is unmapped results in undefined behavior.

-

Parameters

-
+

Parameters

+
@@ -1658,7 +1659,7 @@
-

Returns

+

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 @@ -1667,9 +1668,8 @@ 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

+

Since: 1.12


@@ -1683,8 +1683,8 @@

Using an image surface which wasn't returned by cairo_surface_map_to_image() results in undefined behavior.

-

Parameters

-
+

Parameters

+
@@ -1704,7 +1704,7 @@
-

Since 1.12

+

Since: 1.12

@@ -1718,11 +1718,47 @@

+

CAIRO_MIME_TYPE_CCITT_FAX

+
#define CAIRO_MIME_TYPE_CCITT_FAX "image/g3fax"
+
+

Group 3 or Group 4 CCITT facsimile encoding (International +Telecommunication Union, Recommendations T.4 and T.6.)

+

Since: 1.16

+
+
+
+

CAIRO_MIME_TYPE_CCITT_FAX_PARAMS

+
#define CAIRO_MIME_TYPE_CCITT_FAX_PARAMS "application/x-cairo.ccitt.params"
+
+

Decode parameters for Group 3 or Group 4 CCITT facsimile encoding. +See CCITT Fax Images.

+

Since: 1.16

+
+
+
+

CAIRO_MIME_TYPE_EPS

+
#define CAIRO_MIME_TYPE_EPS "application/postscript"
+
+

Encapsulated PostScript file. +Encapsulated PostScript File Format Specification

+

Since: 1.16

+
+
+
+

CAIRO_MIME_TYPE_EPS_PARAMS

+
#define CAIRO_MIME_TYPE_EPS_PARAMS "application/x-cairo.eps.params"
+
+

Embedding parameters Encapsulated PostScript data. +See Embedding EPS files.

+

Since: 1.16

+
+
+

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

+

Since: 1.14


@@ -1730,7 +1766,7 @@
#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

+

Since: 1.14


@@ -1739,7 +1775,7 @@

An unique identifier shared by a JBIG2 global segment and all JBIG2 images that depend on the global segment.

-

Since 1.14

+

Since: 1.14


@@ -1747,7 +1783,7 @@
#define CAIRO_MIME_TYPE_JP2 "image/jp2"
 

The Joint Photographic Experts Group (JPEG) 2000 image coding standard (ISO/IEC 15444-1).

-

Since 1.10

+

Since: 1.10


@@ -1755,7 +1791,7 @@
#define CAIRO_MIME_TYPE_JPEG "image/jpeg"
 

The Joint Photographic Experts Group (JPEG) image coding standard (ISO/IEC 10918-1).

-

Since 1.10

+

Since: 1.10


@@ -1763,7 +1799,7 @@
#define CAIRO_MIME_TYPE_PNG "image/png"
 

The Portable Network Graphics image file format (ISO/IEC 15948).

-

Since 1.10

+

Since: 1.10


@@ -1771,7 +1807,7 @@
#define CAIRO_MIME_TYPE_URI "text/x-uri"
 

URI for an image file (unofficial MIME type).

-

Since 1.10

+

Since: 1.10


@@ -1780,7 +1816,7 @@

Unique identifier for a surface (cairo specific MIME type). All surfaces with the same unique identifier will only be embedded once.

-

Since 1.12

+

Since: 1.12


@@ -1805,7 +1841,7 @@ cairo_xlib_surface_create().

Memory management of cairo_surface_t is done with cairo_surface_reference() and cairo_surface_destroy().

-

Since 1.0

+

Since: 1.0


@@ -1817,8 +1853,8 @@ values distinct from cairo_format_t values so that the implementation can detect the error if users confuse the two types.

-

Members

-
+

Members

+
@@ -1849,7 +1885,7 @@
-

Since 1.0

+

Since: 1.0


@@ -1871,8 +1907,8 @@ the wrong type is undefined.

New entries may be added in future versions.

-

Members

-
+

Members

+
@@ -2058,7 +2094,7 @@
-

Since 1.2

+

Since: 1.2

@@ -2067,7 +2103,6 @@
+
Generated by GTK-Doc V1.25 \ No newline at end of file diff -Nru cairo-1.14.6/doc/public/html/cairo-cairo-t.html cairo-1.15.10/doc/public/html/cairo-cairo-t.html --- cairo-1.14.6/doc/public/html/cairo-cairo-t.html 2015-12-09 20:45:07.000000000 +0000 +++ cairo-1.15.10/doc/public/html/cairo-cairo-t.html 2017-12-11 21:03:31.000000000 +0000 @@ -2,21 +2,20 @@ -Cairo: A Vector Graphics Library: cairo_t - +cairo_t: Cairo: A Vector Graphics Library + - + - + @@ -34,7 +33,7 @@

Functions

-
+
@@ -524,7 +523,7 @@

Types and Values

-
+
@@ -566,11 +565,6 @@
-

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, @@ -599,8 +593,8 @@ call cairo_surface_destroy() on it if you don't need to maintain a separate reference to it.

-

Parameters

-
+

Parameters

+
@@ -614,20 +608,19 @@
-

Returns

+

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

+

Since: 1.0


@@ -639,11 +632,11 @@ 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().

+

Use cairo_get_reference_count() to get the number of references to +a cairo_t.

-

Parameters

-
+

Parameters

+
@@ -657,11 +650,10 @@
-

Returns

+

Returns

the referenced cairo_t.

-

-

Since 1.0

+

Since: 1.0


@@ -674,8 +666,8 @@ and all associated resources are freed. See cairo_reference().

-

Parameters

-
+

Parameters

+
@@ -688,7 +680,7 @@
-

Since 1.0

+

Since: 1.0


@@ -697,8 +689,8 @@ cairo_status (cairo_t *cr);

Checks whether an error has previously occurred for this context.

-

Parameters

-
+

Parameters

+
@@ -712,11 +704,10 @@
-

Returns

+

Returns

the current status of this context, see cairo_status_t

-

-

Since 1.0

+

Since: 1.0


@@ -737,8 +728,8 @@ drops to zero in response to a call to cairo_destroy(), any saved states will be freed along with the cairo_t.

-

Parameters

-
+

Parameters

+
@@ -751,7 +742,7 @@
-

Since 1.0

+

Since: 1.0


@@ -763,8 +754,8 @@ cairo_save() and removes that state from the stack of saved states.

-

Parameters

-
+

Parameters

+
@@ -777,7 +768,7 @@
-

Since 1.0

+

Since: 1.0


@@ -793,8 +784,8 @@ A nil surface is indicated by cairo_surface_status() != CAIRO_STATUS_SUCCESS.

-

Parameters

-
+

Parameters

+
@@ -808,12 +799,11 @@
-

Returns

+

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

+

Since: 1.0


@@ -852,8 +842,8 @@ cairo_paint_with_alpha (cr, alpha);
-

Parameters

-
+

Parameters

+
@@ -866,7 +856,7 @@
-

Since 1.2

+

Since: 1.2


@@ -885,8 +875,8 @@ function and cairo_push_group() which you should see for a more detailed description of group rendering.

-

Parameters

-
+

Parameters

+
@@ -907,7 +897,7 @@
-

Since 1.2

+

Since: 1.2


@@ -923,8 +913,8 @@ changes to the graphics state will not be visible outside the group.

-

Parameters

-
+

Parameters

+
@@ -938,14 +928,13 @@
-

Returns

+

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

+

Since: 1.2


@@ -969,8 +958,8 @@ changes to the graphics state will not be visible outside the group.

-

Parameters

-
+

Parameters

+
@@ -983,7 +972,7 @@
-

Since 1.2

+

Since: 1.2


@@ -1001,8 +990,8 @@ A nil surface is indicated by cairo_surface_status() != CAIRO_STATUS_SUCCESS.

-

Parameters

-
+

Parameters

+
@@ -1016,12 +1005,11 @@
-

Returns

+

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

+

Since: 1.2


@@ -1041,8 +1029,8 @@

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

-
+

Parameters

+
@@ -1072,7 +1060,7 @@
-

Since 1.0

+

Since: 1.0


@@ -1093,8 +1081,8 @@

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

-
+

Parameters

+
@@ -1129,7 +1117,7 @@
-

Since 1.0

+

Since: 1.0


@@ -1150,8 +1138,8 @@ (that is, it is equivalent to cairo_set_source_rgb(cr, 0.0, 0.0, 0.0)).

-

Parameters

-
+

Parameters

+
@@ -1172,7 +1160,7 @@
-

Since 1.0

+

Since: 1.0


@@ -1202,8 +1190,8 @@ that these attributes can be modified if desired, (eg. to create a repeating pattern with cairo_pattern_set_extend()).

-

Parameters

-
+

Parameters

+
@@ -1233,7 +1221,7 @@
-

Since 1.0

+

Since: 1.0


@@ -1243,8 +1231,8 @@

Gets the current source pattern for cr .

-

Parameters

-
+

Parameters

+
@@ -1258,13 +1246,12 @@
-

Returns

+

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

+

Since: 1.0


@@ -1279,8 +1266,8 @@

Note that this option does not affect text rendering, instead see cairo_font_options_set_antialias().

-

Parameters

-
+

Parameters

+
@@ -1300,7 +1287,7 @@
-

Since 1.0

+

Since: 1.0


@@ -1310,8 +1297,8 @@

Gets the current shape antialiasing mode, as set by cairo_set_antialias().

-

Parameters

-
+

Parameters

+
@@ -1325,11 +1312,10 @@
-

Returns

+

Returns

the current shape antialiasing mode.

-

-

Since 1.0

+

Since: 1.0


@@ -1366,8 +1352,8 @@ will be put into an error state with a status of CAIRO_STATUS_INVALID_DASH.

-

Parameters

-
+

Parameters

+
@@ -1397,7 +1383,7 @@
-

Since 1.0

+

Since: 1.0


@@ -1409,8 +1395,8 @@ is not currently in effect).

See also cairo_set_dash() and cairo_get_dash().

-

Parameters

-
+

Parameters

+
@@ -1424,11 +1410,10 @@
-

Returns

+

Returns

the length of the dash array, or 0 if no dash array set.

-

-

Since 1.4

+

Since: 1.4


@@ -1437,13 +1422,13 @@ cairo_get_dash (cairo_t *cr, double *dashes, double *offset); -

Gets the current dash array. If not NULL, dashes +

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

-
+

Parameters

+
@@ -1457,18 +1442,18 @@ - + - +

dashes

return value for the dash array, or NULL

return value for the dash array, or NULL

 

offset

return value for the current dash offset, or NULL

return value for the current dash offset, or NULL

 
-

Since 1.4

+

Since: 1.4


@@ -1483,8 +1468,8 @@ on the semantics of each available fill rule.

The default fill rule is CAIRO_FILL_RULE_WINDING.

-

Parameters

-
+

Parameters

+
@@ -1504,7 +1489,7 @@
-

Since 1.0

+

Since: 1.0


@@ -1513,8 +1498,8 @@ cairo_get_fill_rule (cairo_t *cr);

Gets the current fill rule, as set by cairo_set_fill_rule().

-

Parameters

-
+

Parameters

+
@@ -1528,11 +1513,10 @@
-

Returns

+

Returns

the current fill rule.

-

-

Since 1.0

+

Since: 1.0


@@ -1549,8 +1533,8 @@ construction.

The default line cap style is CAIRO_LINE_CAP_BUTT.

-

Parameters

-
+

Parameters

+
@@ -1570,7 +1554,7 @@
-

Since 1.0

+

Since: 1.0


@@ -1579,8 +1563,8 @@ cairo_get_line_cap (cairo_t *cr);

Gets the current line cap style, as set by cairo_set_line_cap().

-

Parameters

-
+

Parameters

+
@@ -1594,11 +1578,10 @@
-

Returns

+

Returns

the current line cap style.

-

-

Since 1.0

+

Since: 1.0


@@ -1615,8 +1598,8 @@ construction.

The default line join style is CAIRO_LINE_JOIN_MITER.

-

Parameters

-
+

Parameters

+
@@ -1636,7 +1619,7 @@
-

Since 1.0

+

Since: 1.0


@@ -1645,8 +1628,8 @@ cairo_get_line_join (cairo_t *cr);

Gets the current line join style, as set by cairo_set_line_join().

-

Parameters

-
+

Parameters

+
@@ -1660,11 +1643,10 @@
-

Returns

+

Returns

the current line join style.

-

-

Since 1.0

+

Since: 1.0


@@ -1690,8 +1672,8 @@ construction.

The default line width value is 2.0.

-

Parameters

-
+

Parameters

+
@@ -1711,7 +1693,7 @@
-

Since 1.0

+

Since: 1.0


@@ -1723,8 +1705,8 @@ the CTM has changed between the calls to cairo_set_line_width() and cairo_get_line_width().

-

Parameters

-
+

Parameters

+
@@ -1738,11 +1720,10 @@
-

Returns

+

Returns

the current line width.

-

-

Since 1.0

+

Since: 1.0


@@ -1769,8 +1750,8 @@

A miter limit for a desired angle can be computed as: miter limit = 1/sin(angle/2)

-

Parameters

-
+

Parameters

+
@@ -1790,7 +1771,7 @@
-

Since 1.0

+

Since: 1.0


@@ -1799,8 +1780,8 @@ cairo_get_miter_limit (cairo_t *cr);

Gets the current miter limit, as set by cairo_set_miter_limit().

-

Parameters

-
+

Parameters

+
@@ -1814,11 +1795,10 @@
-

Returns

+

Returns

the current miter limit.

-

-

Since 1.0

+

Since: 1.0


@@ -1831,8 +1811,8 @@ each available compositing operator.

The default operator is CAIRO_OPERATOR_OVER.

-

Parameters

-
+

Parameters

+
@@ -1852,7 +1832,7 @@
-

Since 1.0

+

Since: 1.0


@@ -1861,8 +1841,8 @@ cairo_get_operator (cairo_t *cr);

Gets the current compositing operator for a cairo context.

-

Parameters

-
+

Parameters

+
@@ -1876,11 +1856,10 @@
-

Returns

+

Returns

the current compositing operator.

-

-

Since 1.0

+

Since: 1.0


@@ -1901,8 +1880,8 @@ is restricted to the smallest representable internal value.

-

Parameters

-
+

Parameters

+
@@ -1922,7 +1901,7 @@
-

Since 1.0

+

Since: 1.0


@@ -1931,8 +1910,8 @@ cairo_get_tolerance (cairo_t *cr);

Gets the current tolerance value, as set by cairo_set_tolerance().

-

Parameters

-
+

Parameters

+
@@ -1946,11 +1925,10 @@
-

Returns

+

Returns

the current tolerance value.

-

-

Since 1.0

+

Since: 1.0


@@ -1972,8 +1950,8 @@ pair. The only other means of increasing the size of the clip region is cairo_reset_clip().

-

Parameters

-
+

Parameters

+
@@ -1986,7 +1964,7 @@
-

Since 1.0

+

Since: 1.0


@@ -2008,8 +1986,8 @@ pair. The only other means of increasing the size of the clip region is cairo_reset_clip().

-

Parameters

-
+

Parameters

+
@@ -2022,7 +2000,7 @@
-

Since 1.0

+

Since: 1.0


@@ -2036,8 +2014,8 @@

Computes a bounding box in user coordinates covering the area inside the current clip.

-

Parameters

-
+

Parameters

+
@@ -2072,7 +2050,7 @@
-

Since 1.4

+

Since: 1.4


@@ -2086,8 +2064,8 @@ a cairo_paint() operation.

See cairo_clip(), and cairo_clip_preserve().

-

Parameters

-
+

Parameters

+
@@ -2113,12 +2091,11 @@
-

Returns

+

Returns

A non-zero value if the point is inside, or zero if outside.

-

-

Since 1.10

+

Since: 1.10


@@ -2136,8 +2113,8 @@ cairo_save() and cairo_restore() around cairo_clip() as a more robust means of temporarily restricting the clip region.

-

Parameters

-
+

Parameters

+
@@ -2150,7 +2127,7 @@
-

Since 1.0

+

Since: 1.0


@@ -2163,8 +2140,8 @@ pointer must not be dereferenced.

-

Parameters

-
+

Parameters

+
@@ -2177,7 +2154,7 @@
-

Since 1.4

+

Since: 1.4


@@ -2185,14 +2162,14 @@
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.

+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

-
+

Parameters

+
@@ -2206,12 +2183,11 @@
-

Returns

+

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

+

Since: 1.4


@@ -2224,8 +2200,8 @@ the cairo context. See cairo_set_fill_rule() and cairo_fill_preserve().

-

Parameters

-
+

Parameters

+
@@ -2238,7 +2214,7 @@
-

Since 1.0

+

Since: 1.0


@@ -2251,8 +2227,8 @@ path within the cairo context.

See cairo_set_fill_rule() and cairo_fill().

-

Parameters

-
+

Parameters

+
@@ -2265,7 +2241,7 @@
-

Since 1.0

+

Since: 1.0


@@ -2290,8 +2266,8 @@ if the non-inked path extents are desired.

See cairo_fill(), cairo_set_fill_rule() and cairo_fill_preserve().

-

Parameters

-
+

Parameters

+
@@ -2326,7 +2302,7 @@
-

Since 1.0

+

Since: 1.0


@@ -2341,8 +2317,8 @@ into account.

See cairo_fill(), cairo_set_fill_rule() and cairo_fill_preserve().

-

Parameters

-
+

Parameters

+
@@ -2368,12 +2344,11 @@
-

Returns

+

Returns

A non-zero value if the point is inside, or zero if outside.

-

-

Since 1.0

+

Since: 1.0


@@ -2388,8 +2363,8 @@ are painted with the source, transparent areas are not painted.)

-

Parameters

-
+

Parameters

+
@@ -2409,7 +2384,7 @@
-

Since 1.0

+

Since: 1.0


@@ -2426,8 +2401,8 @@ are painted with the source, transparent areas are not painted.)

-

Parameters

-
+

Parameters

+
@@ -2459,7 +2434,7 @@
-

Since 1.0

+

Since: 1.0


@@ -2469,8 +2444,8 @@

A drawing operator that paints the current source everywhere within the current clip region.

-

Parameters

-
+

Parameters

+
@@ -2483,7 +2458,7 @@
-

Since 1.0

+

Since: 1.0


@@ -2497,8 +2472,8 @@ . The effect is similar to cairo_paint(), but the drawing is faded out using the alpha value.

-

Parameters

-
+

Parameters

+
@@ -2518,7 +2493,7 @@
-

Since 1.0

+

Since: 1.0


@@ -2551,8 +2526,8 @@

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

-
+

Parameters

+
@@ -2565,7 +2540,7 @@
-

Since 1.0

+

Since: 1.0


@@ -2580,8 +2555,8 @@ cairo_set_line_cap(), cairo_set_dash(), and cairo_stroke_preserve().

-

Parameters

-
+

Parameters

+
@@ -2594,7 +2569,7 @@
-

Since 1.0

+

Since: 1.0


@@ -2622,8 +2597,8 @@ cairo_set_line_cap(), cairo_set_dash(), and cairo_stroke_preserve().

-

Parameters

-
+

Parameters

+
@@ -2658,7 +2633,7 @@
-

Since 1.0

+

Since: 1.0


@@ -2675,8 +2650,8 @@ cairo_set_line_cap(), cairo_set_dash(), and cairo_stroke_preserve().

-

Parameters

-
+

Parameters

+
@@ -2702,12 +2677,11 @@
-

Returns

+

Returns

A non-zero value if the point is inside, or zero if outside.

-

-

Since 1.0

+

Since: 1.0


@@ -2722,8 +2696,8 @@ cairo_surface_copy_page() on cr 's target.

-

Parameters

-
+

Parameters

+
@@ -2736,7 +2710,7 @@
-

Since 1.0

+

Since: 1.0


@@ -2749,8 +2723,8 @@ cairo_surface_show_page() on cr 's target.

-

Parameters

-
+

Parameters

+
@@ -2763,7 +2737,7 @@
-

Since 1.0

+

Since: 1.0


@@ -2773,8 +2747,8 @@

Returns the current reference count of cr .

-

Parameters

-
+

Parameters

+
@@ -2788,13 +2762,12 @@
-

Returns

+

Returns

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

-

-

Since 1.4

+

Since: 1.4


@@ -2806,12 +2779,12 @@ 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 +call this function with the key that was used to set it and NULL for data .

-

Parameters

-
+

Parameters

+
@@ -2844,12 +2817,11 @@
-

Returns

+

Returns

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

-

-

Since 1.4

+

Since: 1.4


@@ -2860,10 +2832,10 @@

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.

+function returns NULL.

-

Parameters

-
+

Parameters

+
@@ -2885,11 +2857,10 @@
-

Returns

-

the user data previously attached or NULL.

-

+

Returns

+

the user data previously attached or NULL.

-

Since 1.4

+

Since: 1.4

@@ -2905,7 +2876,7 @@ object.

Memory management of cairo_t is done with cairo_reference() and cairo_destroy().

-

Since 1.0

+

Since: 1.0


@@ -2935,8 +2906,8 @@ the backend, typically this will be similar to CAIRO_ANTIALIAS_GOOD .

-

Members

-
+

Members

+
@@ -3002,7 +2973,7 @@
-

Since 1.0

+

Since: 1.0


@@ -3018,8 +2989,8 @@

The default fill rule is CAIRO_FILL_RULE_WINDING.

New entries may be added in future versions.

-

Members

-
+

Members

+
@@ -3050,7 +3021,7 @@
-

Since 1.0

+

Since: 1.0


@@ -3058,8 +3029,8 @@

Specifies how to render the endpoints of the path when stroking.

The default line cap style is CAIRO_LINE_CAP_BUTT.

-

Members

-
+

Members

+
@@ -3090,7 +3061,7 @@
-

Since 1.0

+

Since: 1.0


@@ -3098,8 +3069,8 @@

Specifies how to render the junction of two lines when stroking.

The default line join style is CAIRO_LINE_JOIN_MITER.

-

Members

-
+

Members

+
@@ -3133,7 +3104,7 @@
-

Since 1.0

+

Since: 1.0


@@ -3153,8 +3124,8 @@ the mathematical definitions, see

http://cairographics.org/operators/.
-

Members

-
+

Members

+
@@ -3397,7 +3368,7 @@
-

Since 1.0

+

Since: 1.0


@@ -3408,8 +3379,8 @@

A data structure for holding a rectangle.

-

Members

-
+

Members

+
@@ -3439,7 +3410,7 @@
-

Since 1.4

+

Since: 1.4


@@ -3453,8 +3424,8 @@

A data structure for holding a dynamically allocated array of rectangles.

-

Members

-
+

Members

+
@@ -3479,7 +3450,7 @@
-

Since 1.4

+

Since: 1.4

@@ -3488,7 +3459,6 @@
+
Generated by GTK-Doc V1.25 \ No newline at end of file diff -Nru cairo-1.14.6/doc/public/html/cairo.devhelp2 cairo-1.15.10/doc/public/html/cairo.devhelp2 --- cairo-1.14.6/doc/public/html/cairo.devhelp2 2015-12-09 20:45:07.000000000 +0000 +++ cairo-1.15.10/doc/public/html/cairo.devhelp2 2017-12-11 21:03:31.000000000 +0000 @@ -1,5 +1,4 @@ - @@ -10,6 +9,7 @@ + @@ -280,6 +280,10 @@ + + + + @@ -417,6 +421,10 @@ + + + + @@ -444,7 +452,14 @@ + + + + + + + @@ -483,7 +498,7 @@ - + @@ -544,8 +559,6 @@ - - @@ -559,5 +572,241 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff -Nru cairo-1.14.6/doc/public/html/cairo-drawing.html cairo-1.15.10/doc/public/html/cairo-drawing.html --- cairo-1.14.6/doc/public/html/cairo-drawing.html 2015-12-09 20:45:07.000000000 +0000 +++ cairo-1.15.10/doc/public/html/cairo-drawing.html 2017-12-11 21:03:31.000000000 +0000 @@ -2,17 +2,17 @@ -Cairo: A Vector Graphics Library: Drawing - +Drawing: Cairo: A Vector Graphics Library + - + - + @@ -44,10 +44,12 @@
Raster Sources — Supplying arbitrary image data
+
+Tags and Links — Hyperlinks and document structure +
+
Generated by GTK-Doc V1.25 \ No newline at end of file diff -Nru cairo-1.14.6/doc/public/html/cairo-Error-handling.html cairo-1.15.10/doc/public/html/cairo-Error-handling.html --- cairo-1.14.6/doc/public/html/cairo-Error-handling.html 2015-12-09 20:45:07.000000000 +0000 +++ cairo-1.15.10/doc/public/html/cairo-Error-handling.html 2017-12-11 21:03:31.000000000 +0000 @@ -2,21 +2,20 @@ -Cairo: A Vector Graphics Library: Error handling - +Error handling: Cairo: A Vector Graphics Library + - + - + @@ -34,7 +33,7 @@

Functions

-
+
@@ -60,7 +59,7 @@

Types and Values

-
+
@@ -72,11 +71,6 @@
-

Object Hierarchy

-
-
-
-

Description

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 @@ -96,8 +90,8 @@ cairo_status_to_string (cairo_status_t status);

Provides a human-readable description of a cairo_status_t.

-

Parameters

-
+

Parameters

+
@@ -111,11 +105,10 @@
-

Returns

+

Returns

a string representation of the status

-

-

Since 1.0

+

Since: 1.0


@@ -137,7 +130,7 @@ 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

+

Since: 1.0

@@ -151,8 +144,8 @@

New entries may be added in future versions. Use cairo_status_to_string() to get a human-readable representation of an error message.

-

Members

-
+

Members

+
@@ -211,7 +204,7 @@ @@ -437,6 +430,34 @@ + + + + + + + + + + + + + + + + + + + +

CAIRO_STATUS_NULL_POINTER

-

NULL pointer (Since 1.0)

+

NULL pointer (Since 1.0)

 
 

CAIRO_STATUS_PNG_ERROR

+

error occurred in libpng while reading from or writing to a PNG file (Since 1.16)

+
 

CAIRO_STATUS_FREETYPE_ERROR

+

error occurred in libfreetype (Since 1.16)

+
 

CAIRO_STATUS_WIN32_GDI_ERROR

+

error occurred in the Windows Graphics Device Interface (Since 1.16)

+
 

CAIRO_STATUS_TAG_ERROR

+

invalid tag name, attributes, or nesting (Since 1.16)

+
 

CAIRO_STATUS_LAST_STATUS

this is a special value indicating the number of @@ -449,18 +470,17 @@

-

Since 1.0

+

Since: 1.0

+
Generated by GTK-Doc V1.25 \ No newline at end of file diff -Nru cairo-1.14.6/doc/public/html/cairo-fonts.html cairo-1.15.10/doc/public/html/cairo-fonts.html --- cairo-1.14.6/doc/public/html/cairo-fonts.html 2015-12-09 20:45:07.000000000 +0000 +++ cairo-1.15.10/doc/public/html/cairo-fonts.html 2017-12-11 21:03:31.000000000 +0000 @@ -2,21 +2,21 @@ -Cairo: A Vector Graphics Library: Fonts - +Fonts: Cairo: A Vector Graphics Library + - + - + - + - +
@@ -47,7 +47,6 @@
+
Generated by GTK-Doc V1.25 \ No newline at end of file diff -Nru cairo-1.14.6/doc/public/html/cairo-FreeType-Fonts.html cairo-1.15.10/doc/public/html/cairo-FreeType-Fonts.html --- cairo-1.14.6/doc/public/html/cairo-FreeType-Fonts.html 2015-12-09 20:45:07.000000000 +0000 +++ cairo-1.15.10/doc/public/html/cairo-FreeType-Fonts.html 2017-12-11 21:03:31.000000000 +0000 @@ -2,21 +2,20 @@ -Cairo: A Vector Graphics Library: FreeType Fonts - +FreeType Fonts: Cairo: A Vector Graphics Library + - + - + @@ -34,7 +33,7 @@

Functions

-
+
@@ -108,7 +107,7 @@

Types and Values

-
+
@@ -130,11 +129,6 @@
-

Object Hierarchy

-
-
-
-

Description

The FreeType font backend is primarily used to render text on GNU/Linux systems, but can be used on other platforms too.

@@ -171,8 +165,8 @@ }
-

Parameters

-
+

Parameters

+
@@ -204,12 +198,11 @@
-

Returns

+

Returns

a newly created cairo_font_face_t. Free with cairo_font_face_destroy() when you are done using it.

-

-

Since 1.0

+

Since: 1.0


@@ -244,8 +237,8 @@ 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

-
+

Parameters

+
@@ -261,12 +254,11 @@
-

Returns

+

Returns

a newly created cairo_font_face_t. Free with cairo_font_face_destroy() when you are done using it.

-

-

Since 1.0

+

Since: 1.0


@@ -280,8 +272,8 @@ user's settings should override options based on the surface type), but before calling FcDefaultSubstitute().

-

Parameters

-
+

Parameters

+
@@ -301,7 +293,7 @@
-

Since 1.0

+

Since: 1.0


@@ -326,8 +318,8 @@ protect any other calls into cairo as almost any cairo function might result in a call into the freetype library).

-

Parameters

-
+

Parameters

+
@@ -344,15 +336,14 @@
-

Returns

+

Returns

The FT_Face object for font , scaled appropriately, -or NULL if scaled_font +or NULL if scaled_font is in an error state (see cairo_scaled_font_status()) or there is insufficient memory.

-

-

Since 1.0

+

Since: 1.0


@@ -361,8 +352,8 @@ cairo_ft_scaled_font_unlock_face (cairo_scaled_font_t *scaled_font);

Releases a face obtained with cairo_ft_scaled_font_lock_face().

-

Parameters

-
+

Parameters

+
@@ -378,7 +369,7 @@
-

Since 1.0

+

Since: 1.0


@@ -387,8 +378,8 @@ cairo_ft_font_face_get_synthesize (cairo_font_face_t *font_face);

See cairo_ft_synthesize_t.

-

Parameters

-
+

Parameters

+
@@ -402,11 +393,10 @@
-

Returns

+

Returns

the current set of synthesis options.

-

-

Since 1.12

+

Since: 1.12


@@ -418,8 +408,8 @@ font, which is useful if you lack those glyphs from a true bold or oblique font. See also cairo_ft_synthesize_t.

-

Parameters

-
+

Parameters

+
@@ -439,7 +429,7 @@
-

Since 1.12

+

Since: 1.12


@@ -449,8 +439,8 @@ unsigned int synth_flags);

See cairo_ft_font_face_set_synthesize().

-

Parameters

-
+

Parameters

+
@@ -470,7 +460,7 @@
-

Since 1.12

+

Since: 1.12

@@ -481,7 +471,7 @@

Defined if the FreeType font backend is available. This macro can be used to conditionally compile backend-specific code.

-

Since 1.0

+

Since: 1.0


@@ -491,7 +481,7 @@

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

+

Since: 1.10


@@ -505,8 +495,8 @@

Note: that when synthesizing glyphs, the font metrics returned will only be estimates.

-

Members

-
+

Members

+
@@ -531,7 +521,7 @@
-

Since 1.12

+

Since: 1.12

@@ -540,7 +530,6 @@
+
Generated by GTK-Doc V1.25 \ No newline at end of file diff -Nru cairo-1.14.6/doc/public/html/cairo-Image-Surfaces.html cairo-1.15.10/doc/public/html/cairo-Image-Surfaces.html --- cairo-1.14.6/doc/public/html/cairo-Image-Surfaces.html 2015-12-09 20:45:07.000000000 +0000 +++ cairo-1.15.10/doc/public/html/cairo-Image-Surfaces.html 2017-12-11 21:03:31.000000000 +0000 @@ -2,21 +2,20 @@ -Cairo: A Vector Graphics Library: Image Surfaces - +Image Surfaces: Cairo: A Vector Graphics Library + - + - + @@ -34,7 +33,7 @@

Functions

-
+
@@ -108,7 +107,7 @@

Types and Values

-
+
@@ -126,11 +125,6 @@
-

Object Hierarchy

-
-
-
-

Description

Image surfaces provide the ability to render to memory buffers either allocated by cairo or by the calling code. The supported @@ -158,8 +152,8 @@ stride);

-

Parameters

-
+

Parameters

+
@@ -180,13 +174,12 @@
-

Returns

+

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

+

Since: 1.6


@@ -196,13 +189,13 @@ 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 +dimensions. Initially the surface contents are set to 0. +(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

-
+

Parameters

+
@@ -228,16 +221,15 @@
-

Returns

+

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

+

Since: 1.0


@@ -264,8 +256,8 @@ to allocate the data and to create the image surface. See cairo_format_stride_for_width() for example code.

-

Parameters

-
+

Parameters

+
@@ -306,7 +298,7 @@
-

Returns

+

Returns

a pointer to the newly created surface. The caller owns the surface and should call cairo_surface_destroy() when done with it.

@@ -318,9 +310,8 @@ 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

+

Since: 1.0


@@ -334,8 +325,8 @@ finished. A call to cairo_surface_mark_dirty() is required after the data is modified.

-

Parameters

-
+

Parameters

+
@@ -349,14 +340,13 @@
-

Returns

-

a pointer to the image data of this surface or NULL +

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

+

Since: 1.2


@@ -365,8 +355,8 @@ cairo_image_surface_get_format (cairo_surface_t *surface);

Get the format of the surface.

-

Parameters

-
+

Parameters

+
@@ -380,11 +370,10 @@
-

Returns

+

Returns

the format of the surface

-

-

Since 1.2

+

Since: 1.2


@@ -393,8 +382,8 @@ cairo_image_surface_get_width (cairo_surface_t *surface);

Get the width of the image surface in pixels.

-

Parameters

-
+

Parameters

+
@@ -408,11 +397,10 @@
-

Returns

+

Returns

the width of the surface in pixels.

-

-

Since 1.0

+

Since: 1.0


@@ -421,8 +409,8 @@ cairo_image_surface_get_height (cairo_surface_t *surface);

Get the height of the image surface in pixels.

-

Parameters

-
+

Parameters

+
@@ -436,11 +424,10 @@
-

Returns

+

Returns

the height of the surface in pixels.

-

-

Since 1.0

+

Since: 1.0


@@ -449,8 +436,8 @@ cairo_image_surface_get_stride (cairo_surface_t *surface);

Get the stride of the image surface in bytes

-

Parameters

-
+

Parameters

+
@@ -464,15 +451,14 @@
-

Returns

+

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

+

Since: 1.2

@@ -484,7 +470,7 @@

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

+

Since: 1.8


@@ -493,8 +479,8 @@ image data.

New entries may be added in future versions.

-

Members

-
+

Members

+
@@ -567,7 +553,7 @@
-

Since 1.0

+

Since: 1.0

@@ -576,7 +562,6 @@
+
Generated by GTK-Doc V1.25 \ No newline at end of file diff -Nru cairo-1.14.6/doc/public/html/cairo-Paths.html cairo-1.15.10/doc/public/html/cairo-Paths.html --- cairo-1.14.6/doc/public/html/cairo-Paths.html 2015-12-09 20:45:07.000000000 +0000 +++ cairo-1.15.10/doc/public/html/cairo-Paths.html 2017-12-11 21:03:31.000000000 +0000 @@ -2,21 +2,20 @@ -Cairo: A Vector Graphics Library: Paths - +Paths: Cairo: A Vector Graphics Library + - + - + @@ -34,7 +33,7 @@

Functions

-
+
@@ -213,7 +212,7 @@

Types and Values

-
+
@@ -235,11 +234,6 @@
-

Object Hierarchy

-
-
-
-

Description

Paths are the most basic drawing tools and are primarily used to implicitly generate simple masks.

@@ -254,7 +248,7 @@ 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 +will have no data (data==NULL and num_data==0), if either of the following conditions hold:

    @@ -266,8 +260,8 @@ would be returned by cairo_status().
-

Parameters

-
+

Parameters

+
@@ -281,13 +275,12 @@
-

Returns

+

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

+

Since: 1.0


@@ -304,7 +297,7 @@ 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 +will have no data (data==NULL and num_data==0), if either of the following conditions hold:

    @@ -316,8 +309,8 @@ would be returned by cairo_status().
-

Parameters

-
+

Parameters

+
@@ -331,13 +324,12 @@
-

Returns

+

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

+

Since: 1.0


@@ -354,8 +346,8 @@ that is created manually (ie. outside of cairo) should be destroyed manually as well.

-

Parameters

-
+

Parameters

+
@@ -369,7 +361,7 @@
-

Since 1.0

+

Since: 1.0


@@ -386,8 +378,8 @@ initialized, and note that path->status must be initialized to CAIRO_STATUS_SUCCESS.

-

Parameters

-
+

Parameters

+
@@ -407,7 +399,7 @@
-

Since 1.0

+

Since: 1.0


@@ -417,8 +409,8 @@

Returns whether a current point is defined on the current path. See cairo_get_current_point() for details on the current point.

-

Parameters

-
+

Parameters

+
@@ -432,11 +424,10 @@
-

Returns

+

Returns

whether a current point is defined.

-

-

Since 1.6

+

Since: 1.6


@@ -468,8 +459,8 @@

Some functions unset the current path and as a result, current point: cairo_fill(), cairo_stroke().

-

Parameters

-
+

Parameters

+
@@ -494,7 +485,7 @@
-

Since 1.0

+

Since: 1.0


@@ -504,8 +495,8 @@

Clears the current path. After this call there will be no path and no current point.

-

Parameters

-
+

Parameters

+
@@ -518,7 +509,7 @@
-

Since 1.0

+

Since: 1.0


@@ -535,8 +526,8 @@ compute the arc's initial coordinates for a call to cairo_move_to().

-

Parameters

-
+

Parameters

+
@@ -549,7 +540,7 @@
-

Since 1.2

+

Since: 1.2


@@ -575,8 +566,8 @@ as the MOVE_TO immediately after the CLOSE_PATH will provide that point.

-

Parameters

-
+

Parameters

+
@@ -589,7 +580,7 @@
-

Since 1.0

+

Since: 1.0


@@ -646,8 +637,8 @@ cairo_restore (cr);
-

Parameters

-
+

Parameters

+
@@ -687,7 +678,7 @@
-

Since 1.0

+

Since: 1.0


@@ -715,8 +706,8 @@

See cairo_arc() for more details. This function differs only in the direction of the arc between the two angles.

-

Parameters

-
+

Parameters

+
@@ -756,7 +747,7 @@
-

Since 1.0

+

Since: 1.0


@@ -788,8 +779,8 @@ , y1 ).

-

Parameters

-
+

Parameters

+
@@ -834,7 +825,7 @@
-

Since 1.0

+

Since: 1.0


@@ -856,8 +847,8 @@ , y ).

-

Parameters

-
+

Parameters

+
@@ -882,7 +873,7 @@
-

Since 1.0

+

Since: 1.0


@@ -896,8 +887,8 @@ y ).

-

Parameters

-
+

Parameters

+
@@ -922,7 +913,7 @@
-

Since 1.0

+

Since: 1.0


@@ -946,8 +937,8 @@ cairo_close_path (cr);
-

Parameters

-
+

Parameters

+
@@ -982,7 +973,7 @@
-

Since 1.0

+

Since: 1.0


@@ -995,8 +986,8 @@ path if filled, achieves an effect similar to that of cairo_show_glyphs().

-

Parameters

-
+

Parameters

+
@@ -1021,7 +1012,7 @@
-

Since 1.0

+

Since: 1.0


@@ -1045,8 +1036,8 @@ serious text-using applications. See cairo_glyph_path() for the "real" text path API in cairo.

-

Parameters

-
+

Parameters

+
@@ -1060,13 +1051,13 @@ - +

utf8

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

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

 
-

Since 1.0

+

Since: 1.0


@@ -1115,8 +1106,8 @@ to shutdown with a status of CAIRO_STATUS_NO_CURRENT_POINT.

-

Parameters

-
+

Parameters

+
@@ -1161,7 +1152,7 @@
-

Since 1.0

+

Since: 1.0


@@ -1191,8 +1182,8 @@ to shutdown with a status of CAIRO_STATUS_NO_CURRENT_POINT.

-

Parameters

-
+

Parameters

+
@@ -1217,7 +1208,7 @@
-

Since 1.0

+

Since: 1.0


@@ -1243,8 +1234,8 @@ to shutdown with a status of CAIRO_STATUS_NO_CURRENT_POINT.

-

Parameters

-
+

Parameters

+
@@ -1269,7 +1260,7 @@
-

Since 1.0

+

Since: 1.0


@@ -1298,8 +1289,8 @@ cairo_move_to() will not contribute to the results of cairo_path_extents().

-

Parameters

-
+

Parameters

+
@@ -1334,7 +1325,7 @@
-

Since 1.6

+

Since: 1.6

@@ -1358,8 +1349,8 @@ portions (defined in cairo_path_data_type_t), since the data includes both headers and coordinates for each portion.

-

Members

-
+

Members

+
@@ -1384,7 +1375,7 @@
-

Since 1.0

+

Since: 1.0


@@ -1444,7 +1435,7 @@ 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

+

Since: 1.0


@@ -1453,8 +1444,8 @@ of a path when represented as a cairo_path_t. See cairo_path_data_t for details.

-

Members

-
+

Members

+
@@ -1492,12 +1483,11 @@
-

Since 1.0

+

Since: 1.0

+
Generated by GTK-Doc V1.25 \ No newline at end of file diff -Nru cairo-1.14.6/doc/public/html/cairo-PDF-Surfaces.html cairo-1.15.10/doc/public/html/cairo-PDF-Surfaces.html --- cairo-1.14.6/doc/public/html/cairo-PDF-Surfaces.html 2015-12-09 20:45:07.000000000 +0000 +++ cairo-1.15.10/doc/public/html/cairo-PDF-Surfaces.html 2017-12-11 21:03:31.000000000 +0000 @@ -2,21 +2,20 @@ -Cairo: A Vector Graphics Library: PDF Surfaces - +PDF Surfaces: Cairo: A Vector Graphics Library + - + - + @@ -34,7 +33,7 @@

Functions

-
+
@@ -87,12 +86,44 @@ cairo_pdf_surface_set_size () + + + + + + + + + + + + + + + +
+int + +cairo_pdf_surface_add_outline () +
+void + +cairo_pdf_surface_set_metadata () +
+void + +cairo_pdf_surface_set_page_label () +
+void + +cairo_pdf_surface_set_thumbnail_size () +

Types and Values

-
+
@@ -103,6 +134,18 @@ + + + + + + + + + + + + @@ -110,30 +153,66 @@
CAIRO_HAS_PDF_SURFACE
#defineCAIRO_PDF_OUTLINE_ROOT
enumcairo_pdf_outline_flags_t
enumcairo_pdf_metadata_t
enum cairo_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, CAIRO_MIME_TYPE_JP2, CAIRO_MIME_TYPE_UNIQUE_ID, CAIRO_MIME_TYPE_JBIG2, CAIRO_MIME_TYPE_JBIG2_GLOBAL, -CAIRO_MIME_TYPE_JBIG2_GLOBAL_ID.

+CAIRO_MIME_TYPE_JBIG2_GLOBAL_ID, +CAIRO_MIME_TYPE_CCITT_FAX, CAIRO_MIME_TYPE_CCITT_FAX_PARAMS.

+
+

JBIG2 Images

JBIG2 data in PDF must be in the embedded format as described 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 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 identifier. At least 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 +embedded once and shared by all JBIG2 images with the same CAIRO_MIME_TYPE_JBIG2_GLOBAL_ID.

+
+
+

CCITT Fax Images

+

The CAIRO_MIME_TYPE_CCITT_FAX mime data requires a number of decoding +parameters These parameters are specified using CAIRO_MIME_TYPE_CCITT_FAX_PARAMS.

+

CAIRO_MIME_TYPE_CCITT_FAX_PARAMS mime data must contain a string of the form +"param1=value1 param2=value2 ...".

+

Columns +: [required] An integer specifying the width of the image in pixels.

+

Rows +: [required] An integer specifying the height of the image in scan lines.

+

K +: [optional] An integer identifying the encoding scheme used. < 0 +is 2 dimensional Group 4, = 0 is Group3 1 dimensional, > 0 is mixed 1 +and 2 dimensional encoding. Default is 0.

+

EndOfLine +: [optional] If true end-of-line bit patterns are present. Default is false.

+

EncodedByteAlign +: [optional] If true the end of line is padded +with 0 bits so the next line begins on a byte boundary. Default is false.

+

EndOfBlock +: [optional] If true the data contains an end-of-block pattern. Default is true.

+

BlackIs1 +: [optional] If true 1 bits are black pixels. Default is false.

+

DamagedRowsBeforeError +: [optional] An integer specifying the +number of damages rows tolerated before an error occurs. Default is 0.

+

Boolean values may be "true" or "false", or 1 or 0.

+

These parameters are the same as the CCITTFaxDecode parameters in the +PostScript Language Reference +and Portable Document Format (PDF). +Refer to these documents for further details.

+

An example CAIRO_MIME_TYPE_CCITT_FAX_PARAMS string is:

+
+"Columns=10230 Rows=40000 K=1 EndOfLine=true EncodedByteAlign=1 BlackIs1=false"
+
+
+

Functions

@@ -146,8 +225,8 @@ to filename .

-

Parameters

-
+

Parameters

+
@@ -156,7 +235,7 @@ - @@ -176,16 +255,15 @@

filename

a filename for the PDF output (must be writable), NULL may be +

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.

-

Returns

+

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

+

Since: 1.2


@@ -200,8 +278,8 @@ and closure .

-

Parameters

-
+

Parameters

+
@@ -210,7 +288,7 @@ -

write_func

a cairo_write_func_t to accept the output data, may be NULL +

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 , @@ -238,16 +316,15 @@

-

Returns

+

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

+

Since: 1.2


@@ -263,8 +340,8 @@ this is to call this function immediately after creating the surface.

-

Parameters

-
+

Parameters

+
@@ -284,7 +361,7 @@
-

Since 1.10

+

Since: 1.10


@@ -295,8 +372,8 @@

Used to retrieve the list of supported versions. See cairo_pdf_surface_restrict_to_version().

-

Parameters

-
+

Parameters

+
@@ -316,7 +393,7 @@
-

Since 1.10

+

Since: 1.10


@@ -325,12 +402,12 @@ 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 +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

-
+

Parameters

+
@@ -344,11 +421,10 @@
-

Returns

+

Returns

the string associated to given version.

-

-

Since 1.10

+

Since: 1.10


@@ -365,8 +441,8 @@ surface or immediately after completing a page with either cairo_show_page() or cairo_copy_page().

-

Parameters

-
+

Parameters

+
@@ -391,7 +467,184 @@
-

Since 1.2

+

Since: 1.2

+
+
+
+

cairo_pdf_surface_add_outline ()

+
int
+cairo_pdf_surface_add_outline (cairo_surface_t *surface,
+                               int parent_id,
+                               const char *utf8,
+                               const char *link_attribs,
+                               cairo_pdf_outline_flags_t flags);
+

Add an item to the document outline hierarchy with the name utf8 + +that links to the location specified by link_attribs +. Link +attributes have the same keys and values as the Link Tag, +excluding the "rect" attribute. The item will be a child of the +item with id parent_id +. Use CAIRO_PDF_OUTLINE_ROOT as the parent +id of top level items.

+
+

Parameters

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

surface

a PDF cairo_surface_t

 

parent_id

the id of the parent item or CAIRO_PDF_OUTLINE_ROOT if this is a top level item.

 

utf8

the name of the outline

 

link_attribs

the link attributes specifying where this outline links to

 

flags

outline item flags

 
+
+
+

Returns

+

the id for the added item.

+
+

Since: 1.16

+
+
+
+

cairo_pdf_surface_set_metadata ()

+
void
+cairo_pdf_surface_set_metadata (cairo_surface_t *surface,
+                                cairo_pdf_metadata_t metadata,
+                                const char *utf8);
+

Set document metadata. The CAIRO_PDF_METADATA_CREATE_DATE and +CAIRO_PDF_METADATA_MOD_DATE values must be in ISO-8601 format: +YYYY-MM-DDThh:mm:ss. An optional timezone of the form "[+/-]hh:mm" +or "Z" for UTC time can be appended. All other metadata values can be any UTF-8 +string.

+

For example:

+
+cairo_pdf_surface_set_metadata (surface, CAIRO_PDF_METADATA_TITLE, "My Document");
+cairo_pdf_surface_set_metadata (surface, CAIRO_PDF_METADATA_CREATE_DATE, "2015-12-31T23:59+02:00");
+
+
+

Parameters

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

surface

a PDF cairo_surface_t

 

metadata

The metadata item to set.

 

utf8

metadata value

 
+
+

Since: 1.16

+
+
+
+

cairo_pdf_surface_set_page_label ()

+
void
+cairo_pdf_surface_set_page_label (cairo_surface_t *surface,
+                                  const char *utf8);
+

Set page label for the current page.

+
+

Parameters

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

surface

a PDF cairo_surface_t

 

utf8

The page label.

 
+
+

Since: 1.16

+
+
+
+

cairo_pdf_surface_set_thumbnail_size ()

+
void
+cairo_pdf_surface_set_thumbnail_size (cairo_surface_t *surface,
+                                      int width,
+                                      int height);
+

Set the thumbnail image size for the current and all subsequent +pages. Setting a width or height of 0 disables thumbnails for the +current and subsequent pages.

+
+

Parameters

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

surface

a PDF cairo_surface_t

 

width

Thumbnail width.

 

height

Thumbnail height

 
+
+

Since: 1.16

@@ -402,7 +655,125 @@

Defined if the PDF surface backend is available. This macro can be used to conditionally compile backend-specific code.

-

Since 1.2

+

Since: 1.2

+
+
+
+

CAIRO_PDF_OUTLINE_ROOT

+
#define CAIRO_PDF_OUTLINE_ROOT 0
+
+

The root outline item in cairo_pdf_surface_add_outline().

+

Since: 1.16

+
+
+
+

enum cairo_pdf_outline_flags_t

+

cairo_pdf_outline_flags_t is used by the +cairo_pdf_surface_add_outline() function specify the attributes of +an outline item. These flags may be bitwise-or'd to produce any +combination of flags.

+
+

Members

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

CAIRO_PDF_OUTLINE_FLAG_OPEN

+

The outline item defaults to open in the PDF viewer (Since 1.16)

+
 

CAIRO_PDF_OUTLINE_FLAG_BOLD

+

The outline item is displayed by the viewer in bold text (Since 1.16)

+
 

CAIRO_PDF_OUTLINE_FLAG_ITALIC

+

The outline item is displayed by the viewer in italic text (Since 1.16)

+
 
+
+

Since: 1.16

+
+
+
+

enum cairo_pdf_metadata_t

+

cairo_pdf_metadata_t is used by the +cairo_pdf_surface_set_metadata() function specify the metadata to set.

+
+

Members

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

CAIRO_PDF_METADATA_TITLE

+

The document title (Since 1.16)

+
 

CAIRO_PDF_METADATA_AUTHOR

+

The document author (Since 1.16)

+
 

CAIRO_PDF_METADATA_SUBJECT

+

The document subject (Since 1.16)

+
 

CAIRO_PDF_METADATA_KEYWORDS

+

The document keywords (Since 1.16)

+
 

CAIRO_PDF_METADATA_CREATOR

+

The document creator (Since 1.16)

+
 

CAIRO_PDF_METADATA_CREATE_DATE

+

The document creation date (Since 1.16)

+
 

CAIRO_PDF_METADATA_MOD_DATE

+

The document modification date (Since 1.16)

+
 
+
+

Since: 1.16


@@ -410,8 +781,8 @@

cairo_pdf_version_t is used to describe the version number of the PDF specification that a generated PDF file will conform to.

-

Members

-
+

Members

+
@@ -435,7 +806,7 @@
-

Since 1.10

+

Since: 1.10

@@ -444,7 +815,6 @@
+
Generated by GTK-Doc V1.25 \ No newline at end of file diff -Nru cairo-1.14.6/doc/public/html/cairo-PNG-Support.html cairo-1.15.10/doc/public/html/cairo-PNG-Support.html --- cairo-1.14.6/doc/public/html/cairo-PNG-Support.html 2015-12-09 20:45:07.000000000 +0000 +++ cairo-1.15.10/doc/public/html/cairo-PNG-Support.html 2017-12-11 21:03:31.000000000 +0000 @@ -2,21 +2,20 @@ -Cairo: A Vector Graphics Library: PNG Support - +PNG Support: Cairo: A Vector Graphics Library + - + - + @@ -34,7 +33,7 @@

Functions

-
+
@@ -93,7 +92,7 @@

Types and Values

-
+
@@ -105,11 +104,6 @@
-

Object Hierarchy

-
-
-
-

Description

The PNG functions allow reading PNG images into image surfaces, and writing any surface to a PNG file.

@@ -130,8 +124,8 @@

Creates a new image surface and initializes the contents to the given PNG file.

-

Parameters

-
+

Parameters

+
@@ -139,26 +133,27 @@ - +

filename

name of PNG file to load

name of PNG file to load. On Windows this filename +is encoded in UTF-8.

 
-

Returns

+

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 CAIRO_STATUS_FILE_NOT_FOUND -CAIRO_STATUS_READ_ERROR

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

+

Since: 1.0


@@ -175,8 +170,8 @@ CAIRO_STATUS_SUCCESS if all the data was successfully read, CAIRO_STATUS_READ_ERROR otherwise.

-

Parameters

-
+

Parameters

+
@@ -202,11 +197,10 @@
-

Returns

+

Returns

the status code of the read operation

-

-

Since 1.0

+

Since: 1.0


@@ -219,8 +213,8 @@ via the read_func function.

-

Parameters

-
+

Parameters

+
@@ -242,20 +236,20 @@
-

Returns

+

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

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

+

Since: 1.0


@@ -268,8 +262,8 @@ as a PNG image.

-

Parameters

-
+

Parameters

+
@@ -283,23 +277,24 @@ - +

filename

the name of a file to write to

the name of a file to write to; on Windows this filename +is encoded in UTF-8.

 
-

Returns

+

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, or CAIRO_STATUS_PNG_ERROR if libpng +returned an error.

-

Since 1.0

+

Since: 1.0


@@ -316,8 +311,8 @@ CAIRO_STATUS_SUCCESS if all the data was successfully written, CAIRO_STATUS_WRITE_ERROR otherwise.

-

Parameters

-
+

Parameters

+
@@ -343,11 +338,10 @@
-

Returns

+

Returns

the status code of the write operation

-

-

Since 1.0

+

Since: 1.0


@@ -358,8 +352,8 @@ void *closure);

Writes the image surface to the write function.

-

Parameters

-
+

Parameters

+
@@ -385,15 +379,15 @@
-

Returns

+

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, or CAIRO_STATUS_PNG_ERROR if libpng +returned an error.

-

Since 1.0

+

Since: 1.0

@@ -405,7 +399,7 @@

Defined if the PNG functions are available. This macro can be used to conditionally compile code using the cairo PNG functions.

-

Since 1.0

+

Since: 1.0

@@ -414,7 +408,6 @@
+
Generated by GTK-Doc V1.25 \ No newline at end of file diff -Nru cairo-1.14.6/doc/public/html/cairo-PostScript-Surfaces.html cairo-1.15.10/doc/public/html/cairo-PostScript-Surfaces.html --- cairo-1.14.6/doc/public/html/cairo-PostScript-Surfaces.html 2015-12-09 20:45:07.000000000 +0000 +++ cairo-1.15.10/doc/public/html/cairo-PostScript-Surfaces.html 2017-12-11 21:03:31.000000000 +0000 @@ -2,21 +2,20 @@ -Cairo: A Vector Graphics Library: PostScript Surfaces - +PostScript Surfaces: Cairo: A Vector Graphics Library + - + - + @@ -34,7 +33,7 @@

Functions

-
+
@@ -132,7 +131,7 @@

Types and Values

-
+
@@ -150,14 +149,37 @@
-

Object Hierarchy

-
-
-
-

Description

The PostScript surface is used to render cairo graphics to Adobe PostScript files and is a multi-page vector surface backend.

+

The following mime types are supported: CAIRO_MIME_TYPE_JPEG, +CAIRO_MIME_TYPE_UNIQUE_ID, +CAIRO_MIME_TYPE_CCITT_FAX, CAIRO_MIME_TYPE_CCITT_FAX_PARAMS, +CAIRO_MIME_TYPE_CCITT_FAX, CAIRO_MIME_TYPE_CCITT_FAX_PARAMS, +CAIRO_MIME_TYPE_EPS, CAIRO_MIME_TYPE_EPS_PARAMS.

+

Source surfaces used by the PostScript surface that have a +CAIRO_MIME_TYPE_UNIQUE_ID mime type will be stored in PostScript +printer memory for the duration of the print +job. CAIRO_MIME_TYPE_UNIQUE_ID should only be used for small +frequently used sources.

+

The CAIRO_MIME_TYPE_CCITT_FAX and CAIRO_MIME_TYPE_CCITT_FAX_PARAMS mime types +are documented in CCITT Fax Images.

+
+

Embedding EPS files

+

Encapsulated PostScript files can be embedded in the PS output by +setting the CAIRO_MIME_TYPE_EPS mime data on a surface to the EPS +data and painting the surface. The EPS will be scaled and +translated to the extents of the surface the EPS data is attached +to.

+

The CAIRO_MIME_TYPE_EPS mime type requires the +CAIRO_MIME_TYPE_EPS_PARAMS mime data to also be provided in order +to specify the embeddding parameters. CAIRO_MIME_TYPE_EPS_PARAMS +mime data must contain a string of the form "bbox=[llx lly urx +ury]" that specifies the bounding box (in PS coordinates) of the +EPS graphics. The parameters are: lower left x, lower left y, upper +right x, upper right y. Normally the bbox data is identical to the +%%BoundingBox data in the EPS file.

+

Functions

@@ -175,8 +197,8 @@

Note that the size of individual pages of the PostScript output can vary. See cairo_ps_surface_set_size().

-

Parameters

-
+

Parameters

+
@@ -185,7 +207,7 @@ - @@ -205,16 +227,15 @@

filename

a filename for the PS output (must be writable), NULL may be +

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.

-

Returns

+

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

+

Since: 1.2


@@ -233,8 +254,8 @@

Note that the size of individual pages of the PostScript output can vary. See cairo_ps_surface_set_size().

-

Parameters

-
+

Parameters

+
@@ -243,7 +264,7 @@ -

write_func

a cairo_write_func_t to accept the output data, may be NULL +

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 , @@ -271,16 +292,15 @@

-

Returns

+

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

+

Since: 1.2


@@ -297,8 +317,8 @@ this is to call this function immediately after creating the surface.

-

Parameters

-
+

Parameters

+
@@ -318,7 +338,7 @@
-

Since 1.6

+

Since: 1.6


@@ -329,8 +349,8 @@

Used to retrieve the list of supported levels. See cairo_ps_surface_restrict_to_level().

-

Parameters

-
+

Parameters

+
@@ -350,7 +370,7 @@
-

Since 1.6

+

Since: 1.6


@@ -359,12 +379,12 @@ 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 +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

-
+

Parameters

+
@@ -378,11 +398,10 @@
-

Returns

+

Returns

the string associated to given level.

-

-

Since 1.6

+

Since: 1.6


@@ -391,7 +410,7 @@ cairo_ps_surface_set_eps (cairo_surface_t *surface, cairo_bool_t eps);

If eps - is TRUE, the PostScript surface will output Encapsulated + 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 @@ -399,8 +418,8 @@ surface. An Encapsulated PostScript file should never contain more than one page.

-

Parameters

-
+

Parameters

+
@@ -414,13 +433,13 @@ - +

eps

TRUE to output EPS format PostScript

TRUE to output EPS format PostScript

 
-

Since 1.6

+

Since: 1.6


@@ -429,8 +448,8 @@ cairo_ps_surface_get_eps (cairo_surface_t *surface);

Check whether the PostScript surface will output Encapsulated PostScript.

-

Parameters

-
+

Parameters

+
@@ -444,11 +463,10 @@
-

Returns

-

TRUE if the surface will output Encapsulated PostScript.

-

+

Returns

+

TRUE if the surface will output Encapsulated PostScript.

-

Since 1.6

+

Since: 1.6


@@ -465,8 +483,8 @@ surface or immediately after completing a page with either cairo_show_page() or cairo_copy_page().

-

Parameters

-
+

Parameters

+
@@ -491,7 +509,7 @@
-

Since 1.2

+

Since: 1.2


@@ -506,8 +524,8 @@ and before any drawing is performed to the surface.

See cairo_ps_surface_dsc_comment() for more details.

-

Parameters

-
+

Parameters

+
@@ -520,7 +538,7 @@
-

Since 1.2

+

Since: 1.2


@@ -536,8 +554,8 @@ performed to the surface.

See cairo_ps_surface_dsc_comment() for more details.

-

Parameters

-
+

Parameters

+
@@ -550,7 +568,7 @@
-

Since 1.2

+

Since: 1.2


@@ -626,8 +644,8 @@ ...
-

Parameters

-
+

Parameters

+
@@ -647,7 +665,7 @@
-

Since 1.2

+

Since: 1.2

@@ -658,7 +676,7 @@

Defined if the PostScript surface backend is available. This macro can be used to conditionally compile backend-specific code.

-

Since 1.2

+

Since: 1.2


@@ -667,8 +685,8 @@ PostScript Language Reference that a generated PostScript file will conform to.

-

Members

-
+

Members

+
@@ -692,7 +710,7 @@
-

Since 1.6

+

Since: 1.6

@@ -701,7 +719,6 @@
+
Generated by GTK-Doc V1.25 \ No newline at end of file diff -Nru cairo-1.14.6/doc/public/html/cairo-Quartz-(CGFont)-Fonts.html cairo-1.15.10/doc/public/html/cairo-Quartz-(CGFont)-Fonts.html --- cairo-1.14.6/doc/public/html/cairo-Quartz-(CGFont)-Fonts.html 2015-12-09 20:45:07.000000000 +0000 +++ cairo-1.15.10/doc/public/html/cairo-Quartz-(CGFont)-Fonts.html 2017-12-11 21:03:31.000000000 +0000 @@ -2,21 +2,20 @@ -Cairo: A Vector Graphics Library: Quartz (CGFont) Fonts - +Quartz (CGFont) Fonts: Cairo: A Vector Graphics Library + - + - + @@ -34,7 +33,7 @@

Functions

-
+
@@ -61,7 +60,7 @@

Types and Values

-
+
@@ -73,11 +72,6 @@
-

Object Hierarchy

-
-
-
-

Description

The Quartz font backend is primarily used to render text on Apple MacOS X systems. The CGFont API is used for the internal @@ -94,8 +88,8 @@ CGFontRef. This font can then be used with cairo_set_font_face() or cairo_scaled_font_create().

-

Parameters

-
+

Parameters

+
@@ -109,12 +103,11 @@
-

Returns

+

Returns

a newly created cairo_font_face_t. Free with cairo_font_face_destroy() when you are done using it.

-

-

Since 1.6

+

Since: 1.6


@@ -126,8 +119,8 @@ ATSUFontID. This font can then be used with cairo_set_font_face() or cairo_scaled_font_create().

-

Parameters

-
+

Parameters

+
@@ -141,12 +134,11 @@
-

Returns

+

Returns

a newly created cairo_font_face_t. Free with cairo_font_face_destroy() when you are done using it.

-

-

Since 1.6

+

Since: 1.6

@@ -157,7 +149,7 @@

Defined if the Quartz font backend is available. This macro can be used to conditionally compile backend-specific code.

-

Since 1.6

+

Since: 1.6

@@ -166,7 +158,6 @@
+
Generated by GTK-Doc V1.25 \ No newline at end of file diff -Nru cairo-1.14.6/doc/public/html/cairo-Quartz-Surfaces.html cairo-1.15.10/doc/public/html/cairo-Quartz-Surfaces.html --- cairo-1.14.6/doc/public/html/cairo-Quartz-Surfaces.html 2015-12-09 20:45:07.000000000 +0000 +++ cairo-1.15.10/doc/public/html/cairo-Quartz-Surfaces.html 2017-12-11 21:03:31.000000000 +0000 @@ -2,21 +2,20 @@ -Cairo: A Vector Graphics Library: Quartz Surfaces - +Quartz Surfaces: Cairo: A Vector Graphics Library + - + - + @@ -34,7 +33,7 @@

Functions

-
+
@@ -69,7 +68,7 @@

Types and Values

-
+
@@ -81,11 +80,6 @@
-

Object Hierarchy

-
-
-
-

Description

The Quartz surface is used to render cairo graphics targeting the Apple OS X Quartz rendering system.

@@ -103,8 +97,8 @@ All Cairo operations, including those that require software rendering, will succeed on this surface.

-

Parameters

-
+

Parameters

+
@@ -130,11 +124,10 @@
-

Returns

+

Returns

the newly created surface.

-

-

Since 1.6

+

Since: 1.6


@@ -158,8 +151,8 @@

All Cairo operations are implemented in terms of Quartz operations, as long as Quartz-compatible elements are used (such as Quartz fonts).

-

Parameters

-
+

Parameters

+
@@ -185,11 +178,10 @@
-

Returns

+

Returns

the newly created Cairo surface.

-

-

Since 1.6

+

Since: 1.6


@@ -205,8 +197,8 @@ after the state or the content of the CGContextRef has been modified.

-

Parameters

-
+

Parameters

+
@@ -220,11 +212,10 @@
-

Returns

+

Returns

the CGContextRef for the given surface.

-

-

Since 1.6

+

Since: 1.6

@@ -235,7 +226,7 @@

Defined if the Quartz surface backend is available. This macro can be used to conditionally compile backend-specific code.

-

Since 1.6

+

Since: 1.6

@@ -244,7 +235,6 @@
+
Generated by GTK-Doc V1.25 \ No newline at end of file diff -Nru cairo-1.14.6/doc/public/html/cairo-Raster-Sources.html cairo-1.15.10/doc/public/html/cairo-Raster-Sources.html --- cairo-1.14.6/doc/public/html/cairo-Raster-Sources.html 2015-12-09 20:45:07.000000000 +0000 +++ cairo-1.15.10/doc/public/html/cairo-Raster-Sources.html 2017-12-11 21:03:31.000000000 +0000 @@ -2,26 +2,25 @@ -Cairo: A Vector Graphics Library: Raster Sources - +Raster Sources: Cairo: A Vector Graphics Library + - - + + - + - +
@@ -34,7 +33,7 @@

Functions

-
+
@@ -172,11 +171,6 @@
-

Object Hierarchy

-
-
-
-

Description

The raster source provides the ability to supply arbitrary pixel data whilst rendering. The pixels are queried at the time of rasterisation @@ -204,8 +198,8 @@

Use the setter functions to associate callbacks with the returned pattern. The only mandatory callback is acquire.

-

Parameters

-
+

Parameters

+
@@ -238,12 +232,11 @@
-

Returns

+

Returns

a newly created cairo_pattern_t. Free with cairo_pattern_destroy() when you are done using it.

-

-

Since 1.12

+

Since: 1.12


@@ -254,8 +247,8 @@ void *data);

Updates the user data that is provided to all callbacks.

-

Parameters

-
+

Parameters

+
@@ -275,7 +268,7 @@
-

Since 1.12

+

Since: 1.12


@@ -285,8 +278,8 @@ (cairo_pattern_t *pattern);

Queries the current user data.

-

Parameters

-
+

Parameters

+
@@ -300,11 +293,10 @@
-

Returns

+

Returns

the current user-data passed to each callback

-

-

Since 1.12

+

Since: 1.12


@@ -325,8 +317,8 @@ the surface extents should be provided by setting the device offset (along with its width and height) using cairo_surface_set_device_offset().

-

Parameters

-
+

Parameters

+
@@ -351,7 +343,7 @@
-

Since 1.12

+

Since: 1.12


@@ -363,8 +355,8 @@ cairo_raster_source_release_func_t *release);

Queries the current acquire and release callbacks.

-

Parameters

-
+

Parameters

+
@@ -389,7 +381,7 @@
-

Since 1.12

+

Since: 1.12


@@ -402,8 +394,8 @@ pattern, that is whenever the current contents of the pattern should be preserved for later use. This is typically invoked whilst printing.

-

Parameters

-
+

Parameters

+
@@ -423,7 +415,7 @@
-

Since 1.12

+

Since: 1.12


@@ -433,8 +425,8 @@ (cairo_pattern_t *pattern);

Queries the current snapshot callback.

-

Parameters

-
+

Parameters

+
@@ -448,11 +440,10 @@
-

Returns

+

Returns

the current snapshot callback

-

-

Since 1.12

+

Since: 1.12


@@ -463,8 +454,8 @@

Updates the copy callback which is used whenever a temporary copy of the pattern is taken.

-

Parameters

-
+

Parameters

+
@@ -484,7 +475,7 @@
-

Since 1.12

+

Since: 1.12


@@ -493,8 +484,8 @@ cairo_raster_source_pattern_get_copy (cairo_pattern_t *pattern);

Queries the current copy callback.

-

Parameters

-
+

Parameters

+
@@ -508,11 +499,10 @@
-

Returns

+

Returns

the current copy callback

-

-

Since 1.12

+

Since: 1.12


@@ -524,8 +514,8 @@

Updates the finish callback which is used whenever a pattern (or a copy thereof) will no longer be used.

-

Parameters

-
+

Parameters

+
@@ -545,7 +535,7 @@
-

Since 1.12

+

Since: 1.12


@@ -555,8 +545,8 @@ (cairo_pattern_t *pattern);

Queries the current finish callback.

-

Parameters

-
+

Parameters

+
@@ -570,11 +560,10 @@
-

Returns

+

Returns

the current finish callback

-

-

Since 1.12

+

Since: 1.12


@@ -597,8 +586,8 @@ cairo_surface_set_device_offset() to specify the top-left corner of the sample data (along with width and height of the surface).

-

Parameters

-
+

Parameters

+
@@ -629,11 +618,10 @@
-

Returns

+

Returns

a cairo_surface_t

-

-

Since 1.12

+

Since: 1.12


@@ -647,8 +635,8 @@ for the rendering operation. Typically this function will simply destroy the surface created during acquire.

-

Parameters

-
+

Parameters

+
@@ -673,7 +661,7 @@
-

Since 1.12

+

Since: 1.12


@@ -688,8 +676,8 @@ is expected to provide the pixel data that was current at the time of snapshotting.

-

Parameters

-
+

Parameters

+
@@ -710,12 +698,11 @@
-

Returns

+

Returns

CAIRO_STATUS_SUCCESS on success, or one of the cairo_status_t error codes for failure.

-

-

Since 1.12

+

Since: 1.12


@@ -727,8 +714,8 @@

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

-
+

Parameters

+
@@ -754,12 +741,11 @@
-

Returns

+

Returns

CAIRO_STATUS_SUCCESS on success, or one of the cairo_status_t error codes for failure.

-

-

Since 1.12

+

Since: 1.12


@@ -770,8 +756,8 @@

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

-
+

Parameters

+
@@ -791,7 +777,7 @@
-

Since 1.12

+

Since: 1.12

@@ -803,7 +789,6 @@
+
Generated by GTK-Doc V1.25 \ No newline at end of file diff -Nru cairo-1.14.6/doc/public/html/cairo-Recording-Surfaces.html cairo-1.15.10/doc/public/html/cairo-Recording-Surfaces.html --- cairo-1.14.6/doc/public/html/cairo-Recording-Surfaces.html 2015-12-09 20:45:07.000000000 +0000 +++ cairo-1.15.10/doc/public/html/cairo-Recording-Surfaces.html 2017-12-11 21:03:31.000000000 +0000 @@ -2,21 +2,20 @@ -Cairo: A Vector Graphics Library: Recording Surfaces - +Recording Surfaces: Cairo: A Vector Graphics Library + - + - + @@ -34,7 +33,7 @@

Functions

-
+
@@ -69,7 +68,7 @@

Types and Values

-
+
@@ -81,11 +80,6 @@
-

Object Hierarchy

-
-
-
-

Description

A recording surface is a surface that records all drawing operations at the highest level of the surface backend interface, (that is, the @@ -131,8 +125,8 @@ necessary objects (paths, patterns, etc.), in order to achieve accurate replay.

-

Parameters

-
+

Parameters

+
@@ -146,7 +140,7 @@ - @@ -154,13 +148,12 @@

extents

the extents to record in pixels, can be NULL to record +

the extents to record in pixels, can be NULL to record unbounded operations.

 
-

Returns

+

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

+

Since: 1.10


@@ -175,8 +168,8 @@ This is useful to compute the required size of an image surface (or equivalent) into which to replay the full sequence of drawing operations.

-

Parameters

-
+

Parameters

+
@@ -211,7 +204,7 @@
-

Since 1.10

+

Since: 1.10


@@ -221,8 +214,8 @@ cairo_rectangle_t *extents);

Get the extents of the recording-surface.

-

Parameters

-
+

Parameters

+
@@ -243,12 +236,11 @@
-

Returns

-

TRUE if the surface is bounded, of recording type, and -not in an error state, otherwise FALSE

-

+

Returns

+

TRUE if the surface is bounded, of recording type, and +not in an error state, otherwise FALSE

-

Since 1.12

+

Since: 1.12

@@ -260,7 +252,7 @@

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

+

Since: 1.10

@@ -269,7 +261,6 @@
+
Generated by GTK-Doc V1.25 \ No newline at end of file diff -Nru cairo-1.14.6/doc/public/html/cairo-Regions.html cairo-1.15.10/doc/public/html/cairo-Regions.html --- cairo-1.14.6/doc/public/html/cairo-Regions.html 2015-12-09 20:45:07.000000000 +0000 +++ cairo-1.15.10/doc/public/html/cairo-Regions.html 2017-12-11 21:03:31.000000000 +0000 @@ -2,21 +2,20 @@ -Cairo: A Vector Graphics Library: Regions - +Regions: Cairo: A Vector Graphics Library + - + - + @@ -34,7 +33,7 @@

Functions

-
+
@@ -229,7 +228,7 @@

Types and Values

-
+
@@ -247,11 +246,6 @@
-

Object Hierarchy

-
-
-
-

Description

Regions are a simple graphical data type representing an area of integer-aligned rectangles. They are often used on raster surfaces @@ -265,15 +259,14 @@ cairo_region_create (void);

Allocates a new empty region object.

-

Returns

+

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

+

Since: 1.10


@@ -283,8 +276,8 @@

Allocates a new region object containing rectangle .

-

Parameters

-
+

Parameters

+
@@ -298,15 +291,14 @@
-

Returns

+

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

+

Since: 1.10


@@ -317,8 +309,8 @@

Allocates a new region object containing the union of all given rects .

-

Parameters

-
+

Parameters

+
@@ -340,15 +332,14 @@
-

Returns

+

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

+

Since: 1.10


@@ -358,8 +349,8 @@

Allocates a new region object copying the area from original .

-

Parameters

-
+

Parameters

+
@@ -373,15 +364,14 @@
-

Returns

+

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

+

Since: 1.10


@@ -394,8 +384,8 @@ from being destroyed until a matching call to cairo_region_destroy() is made.

-

Parameters

-
+

Parameters

+
@@ -409,11 +399,10 @@
-

Returns

+

Returns

the referenced cairo_region_t.

-

-

Since 1.10

+

Since: 1.10


@@ -424,8 +413,8 @@ cairo_region_create(), cairo_region_copy(), or or cairo_region_create_rectangle().

-

Parameters

-
+

Parameters

+
@@ -438,7 +427,7 @@
-

Since 1.10

+

Since: 1.10


@@ -448,8 +437,8 @@

Checks whether an error has previous occurred for this region object.

-

Parameters

-
+

Parameters

+
@@ -463,11 +452,10 @@
-

Since 1.10

+

Since: 1.10


@@ -478,8 +466,8 @@

Gets the bounding rectangle of region as a cairo_rectangle_int_t

-

Parameters

-
+

Parameters

+
@@ -499,7 +487,7 @@
-

Since 1.10

+

Since: 1.10


@@ -509,8 +497,8 @@

Returns the number of rectangles contained in region .

-

Parameters

-
+

Parameters

+
@@ -524,12 +512,11 @@
-

Returns

+

Returns

The number of rectangles contained in region .

-

-

Since 1.10

+

Since: 1.10


@@ -542,8 +529,8 @@ rectangle from the region in rectangle .

-

Parameters

-
+

Parameters

+
@@ -568,7 +555,7 @@
-

Since 1.10

+

Since: 1.10


@@ -578,8 +565,8 @@

Checks whether region is empty.

-

Parameters

-
+

Parameters

+
@@ -593,12 +580,11 @@
-

Returns

-

TRUE if region -is empty, FALSE if it isn't.

-

+

Returns

+

TRUE if region +is empty, FALSE if it isn't.

-

Since 1.10

+

Since: 1.10


@@ -612,8 +598,8 @@ ) is contained in region .

-

Parameters

-
+

Parameters

+
@@ -639,14 +625,13 @@
-

Returns

-

TRUE if (x +

Returns

+

TRUE if (x , y ) is contained in region -, FALSE if it is not.

-

+, FALSE if it is not.

-

Since 1.10

+

Since: 1.10


@@ -659,8 +644,8 @@ in region

-

Parameters

-
+

Parameters

+
@@ -681,7 +666,7 @@
-

Returns

+

Returns

CAIRO_REGION_OVERLAP_IN if rectangle is entirely inside region , @@ -691,9 +676,8 @@ CAIRO_REGION_OVERLAP_PART if rectangle is partially inside and partially outside region .

-

-

Since 1.10

+

Since: 1.10


@@ -701,11 +685,11 @@
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.

+

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

-
+

Parameters

+
@@ -714,24 +698,23 @@ - + - +

a

a cairo_region_t or NULL

a cairo_region_t or NULL

 

b

a cairo_region_t or NULL

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.

-

+

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

+

Since: 1.10


@@ -745,8 +728,8 @@ , dy ).

-

Parameters

-
+

Parameters

+
@@ -771,7 +754,7 @@
-

Since 1.10

+

Since: 1.10


@@ -784,8 +767,8 @@ and places the result in dst

-

Parameters

-
+

Parameters

+
@@ -806,11 +789,10 @@
-

Since 1.10

+

Since: 1.10


@@ -824,8 +806,8 @@ result in dst

-

Parameters

-
+

Parameters

+
@@ -846,11 +828,10 @@
-

Since 1.10

+

Since: 1.10


@@ -863,8 +844,8 @@ and places the result in dst

-

Parameters

-
+

Parameters

+
@@ -885,11 +866,10 @@
-

Since 1.10

+

Since: 1.10


@@ -902,8 +882,8 @@ and places the result in dst

-

Parameters

-
+

Parameters

+
@@ -924,11 +904,10 @@
-

Since 1.10

+

Since: 1.10


@@ -941,8 +920,8 @@ and places the result in dst

-

Parameters

-
+

Parameters

+
@@ -963,11 +942,10 @@
-

Since 1.10

+

Since: 1.10


@@ -980,8 +958,8 @@ and places the result in dst .

-

Parameters

-
+

Parameters

+
@@ -1002,11 +980,10 @@
-

Since 1.10

+

Since: 1.10


@@ -1024,8 +1001,8 @@ or in other , but not in both.

-

Parameters

-
+

Parameters

+
@@ -1046,11 +1023,10 @@
-

Since 1.10

+

Since: 1.10


@@ -1068,8 +1044,8 @@ or in rectangle , but not in both.

-

Parameters

-
+

Parameters

+
@@ -1090,11 +1066,10 @@
-

Since 1.10

+

Since: 1.10

@@ -1108,15 +1083,15 @@ 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

+

Since: 1.10


enum cairo_region_overlap_t

Used as the return value for cairo_region_contains_rectangle().

-

Members

-
+

Members

+
@@ -1148,12 +1123,11 @@
-

Since 1.10

+

Since: 1.10

+
Generated by GTK-Doc V1.25 \ No newline at end of file diff -Nru cairo-1.14.6/doc/public/html/cairo-Script-Surfaces.html cairo-1.15.10/doc/public/html/cairo-Script-Surfaces.html --- cairo-1.14.6/doc/public/html/cairo-Script-Surfaces.html 2015-12-09 20:45:07.000000000 +0000 +++ cairo-1.15.10/doc/public/html/cairo-Script-Surfaces.html 2017-12-11 21:03:31.000000000 +0000 @@ -2,21 +2,20 @@ -Cairo: A Vector Graphics Library: Script Surfaces - +Script Surfaces: Cairo: A Vector Graphics Library + - + - + @@ -34,7 +33,7 @@

Functions

-
+
@@ -109,7 +108,7 @@

Types and Values

-
+
@@ -127,11 +126,6 @@
-

Object Hierarchy

-
-
-
-

Description

The script surface provides the ability to render to a native script that matches the cairo drawing model. The scripts can @@ -147,8 +141,8 @@

Creates a output device for emitting the script, used when creating the individual surfaces.

-

Parameters

-
+

Parameters

+
@@ -162,16 +156,15 @@
-

Returns

+

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

+

Since: 1.12


@@ -182,8 +175,8 @@

Creates a output device for emitting the script, used when creating the individual surfaces.

-

Parameters

-
+

Parameters

+
@@ -204,16 +197,15 @@
-

Returns

+

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

+

Since: 1.12


@@ -224,8 +216,8 @@

Converts the record operations in recording_surface into a script.

-

Parameters

-
+

Parameters

+
@@ -246,11 +238,10 @@
-

Returns

+

Returns

CAIRO_STATUS_SUCCESS on successful completion or an error code.

-

-

Since 1.12

+

Since: 1.12


@@ -259,8 +250,8 @@ cairo_script_get_mode (cairo_device_t *script);

Queries the script for its current output mode.

-

Parameters

-
+

Parameters

+
@@ -274,11 +265,10 @@
-

Returns

+

Returns

the current output mode of the script

-

-

Since 1.12

+

Since: 1.12


@@ -288,8 +278,8 @@ cairo_script_mode_t mode);

Change the output mode of the script

-

Parameters

-
+

Parameters

+
@@ -309,7 +299,7 @@
-

Since 1.12

+

Since: 1.12


@@ -322,8 +312,8 @@

Create a new surface that will emit its rendering through script

-

Parameters

-
+

Parameters

+
@@ -354,16 +344,15 @@
-

Returns

+

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

+

Since: 1.12


@@ -377,8 +366,8 @@ the operations to device .

-

Parameters

-
+

Parameters

+
@@ -399,16 +388,15 @@
-

Returns

+

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

+

Since: 1.12


@@ -419,8 +407,8 @@ int len);

Emit a string verbatim into the script.

-

Parameters

-
+

Parameters

+
@@ -445,7 +433,7 @@
-

Since 1.12

+

Since: 1.12

@@ -456,15 +444,15 @@

Defined if the script surface backend is available. The script surface backend is always built in since 1.12.

-

Since 1.12

+

Since: 1.12


enum cairo_script_mode_t

A set of script output variants.

-

Members

-
+

Members

+
@@ -488,7 +476,7 @@
-

Since 1.12

+

Since: 1.12

@@ -497,7 +485,6 @@
+
Generated by GTK-Doc V1.25 \ No newline at end of file diff -Nru cairo-1.14.6/doc/public/html/cairo-support.html cairo-1.15.10/doc/public/html/cairo-support.html --- cairo-1.14.6/doc/public/html/cairo-support.html 2015-12-09 20:45:07.000000000 +0000 +++ cairo-1.15.10/doc/public/html/cairo-support.html 2017-12-11 21:03:31.000000000 +0000 @@ -2,17 +2,17 @@ -Cairo: A Vector Graphics Library: Utilities - +Utilities: Cairo: A Vector Graphics Library + - + - + @@ -38,7 +38,6 @@ +
Generated by GTK-Doc V1.25 \ No newline at end of file diff -Nru cairo-1.14.6/doc/public/html/cairo-surfaces.html cairo-1.15.10/doc/public/html/cairo-surfaces.html --- cairo-1.14.6/doc/public/html/cairo-surfaces.html 2015-12-09 20:45:07.000000000 +0000 +++ cairo-1.15.10/doc/public/html/cairo-surfaces.html 2017-12-11 21:03:31.000000000 +0000 @@ -2,17 +2,17 @@ -Cairo: A Vector Graphics Library: Surfaces - +Surfaces: Cairo: A Vector Graphics Library + - + - + @@ -68,7 +68,6 @@ +
Generated by GTK-Doc V1.25 \ No newline at end of file diff -Nru cairo-1.14.6/doc/public/html/cairo-SVG-Surfaces.html cairo-1.15.10/doc/public/html/cairo-SVG-Surfaces.html --- cairo-1.14.6/doc/public/html/cairo-SVG-Surfaces.html 2015-12-09 20:45:07.000000000 +0000 +++ cairo-1.15.10/doc/public/html/cairo-SVG-Surfaces.html 2017-12-11 21:03:31.000000000 +0000 @@ -2,21 +2,20 @@ -Cairo: A Vector Graphics Library: SVG Surfaces - +SVG Surfaces: Cairo: A Vector Graphics Library + - + - + @@ -34,7 +33,7 @@

Functions

-
+
@@ -84,7 +83,7 @@

Types and Values

-
+
@@ -102,11 +101,6 @@
-

Object Hierarchy

-
-
-
-

Description

The SVG surface is used to render cairo graphics to SVG files and is a multi-page vector surface backend.

@@ -135,9 +129,11 @@

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.

+

If CAIRO_MIME_TYPE_UNIQUE_ID is present, all surfaces with the same +unique identifier will only be embedded once.

-

Parameters

-
+

Parameters

+
@@ -146,7 +142,7 @@ - @@ -166,16 +162,15 @@

filename

a filename for the SVG output (must be writable), NULL may be +

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.

-

Returns

+

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

+

Since: 1.2


@@ -190,8 +185,8 @@ and closure .

-

Parameters

-
+

Parameters

+
@@ -200,7 +195,7 @@ -

write_func

a cairo_write_func_t to accept the output data, may be NULL +

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 , @@ -228,16 +223,15 @@

-

Returns

+

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

+

Since: 1.2


@@ -253,8 +247,8 @@ this is to call this function immediately after creating the surface.

-

Parameters

-
+

Parameters

+
@@ -274,7 +268,7 @@
-

Since 1.2

+

Since: 1.2


@@ -285,8 +279,8 @@

Used to retrieve the list of supported versions. See cairo_svg_surface_restrict_to_version().

-

Parameters

-
+

Parameters

+
@@ -306,7 +300,7 @@
-

Since 1.2

+

Since: 1.2


@@ -315,12 +309,12 @@ 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 +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

-
+

Parameters

+
@@ -334,11 +328,10 @@
-

Returns

+

Returns

the string associated to given version.

-

-

Since 1.2

+

Since: 1.2

@@ -349,16 +342,43 @@

Defined if the SVG surface backend is available. This macro can be used to conditionally compile backend-specific code.

-

Since 1.2

+

Since: 1.2


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.

+

CAIRO_SVG_UNIT_USER +: User unit, a value in the current coordinate system. + If used in the root element for the initial coordinate systems it + corresponds to pixels. (Since 1.16) +CAIRO_SVG_UNIT_EM +: The size of the element's font. (Since 1.16) +CAIRO_SVG_UNIT_EX +: The x-height of the element’s font. (Since 1.16) +CAIRO_SVG_UNIT_PX +: Pixels (1px = 1/96th of 1in). (Since 1.16) +CAIRO_SVG_UNIT_IN +: Inches (1in = 2.54cm = 96px). (Since 1.16) +CAIRO_SVG_UNIT_CM +: Centimeters (1cm = 96px/2.54). (Since 1.16) +CAIRO_SVG_UNIT_MM +: Millimeters (1mm = 1/10th of 1cm). (Since 1.16) +CAIRO_SVG_UNIT_PT +: Points (1pt = 1/72th of 1in). (Since 1.16) +CAIRO_SVG_UNIT_PC +: Picas (1pc = 1/6th of 1in). (Since 1.16) +CAIRO_SVG_UNIT_PERCENT +: Percent, a value that is some fraction of another + reference value. (Since 1.16)

+

cairo_svg_unit_t is used to describe the units valid for coordinates and +lengths in the SVG specification.

+

See also: +https://www.w3.org/TR/SVG/coords.htmlUnits +https://www.w3.org/TR/SVG/types.htmlDataTypeLength +https://www.w3.org/TR/css-values-3/lengths

-

Members

-
+

Members

+
@@ -367,22 +387,18 @@ - + - +

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

+

Since: 1.16

@@ -391,7 +407,6 @@
+
Generated by GTK-Doc V1.25 \ No newline at end of file diff -Nru cairo-1.14.6/doc/public/html/cairo-Tags-and-Links.html cairo-1.15.10/doc/public/html/cairo-Tags-and-Links.html --- cairo-1.14.6/doc/public/html/cairo-Tags-and-Links.html 1970-01-01 00:00:00.000000000 +0000 +++ cairo-1.15.10/doc/public/html/cairo-Tags-and-Links.html 2017-12-11 21:03:31.000000000 +0000 @@ -0,0 +1,409 @@ + + + + +Tags and Links: Cairo: A Vector Graphics Library + + + + + + + + + + + + + + + + +
+
+
+ + +
+

Tags and Links

+

Tags and Links — Hyperlinks and document structure

+
+
+

Functions

+
++++ + + + + + + + + + + +
+void + +cairo_tag_begin () +
+void + +cairo_tag_end () +
+
+
+

Types and Values

+
++++ + + + + + + + + + + +
#defineCAIRO_TAG_DEST
#defineCAIRO_TAG_LINK
+
+
+

Description

+

The tag functions provide the ability to specify hyperlinks and +document logical structure on supported backends. The following tags are supported:

+
+
+

Link Tags

+

A hyperlink is specified by enclosing the hyperlink text with the CAIRO_TAG_LINK tag.

+

For example:

+
+cairo_tag_begin (cr, CAIRO_TAG_LINK, "uri='http://cairographics.org'");
+cairo_move_to (cr, 50, 50);
+cairo_show_text (cr, "This is a link to the cairo website.");
+cairo_tag_end (cr, CAIRO_TAG_LINK);
+
+

The PDF backend uses one or more rectangles to define the clickable +area of the link. By default cairo will use the extents of the +drawing operations enclosed by the begin/end link tags to define the +clickable area. In some cases, such as a link split across two +lines, the default rectangle is undesirable.

+

rect +: [optional] The "rect" attribute allows the application to +specify one or more rectangles that form the clickable region. The +value of this attribute is an array of floats. Each rectangle is +specified by four elements in the array: x, y, width, height. The +array size must be a multiple of four.

+

An example of creating a link with user specified clickable region:

+
+cairo_font_extents_t font_extents;
+cairo_text_extents_t text1_extents;
+cairo_text_extents_t text2_extents;
+char attribs[100];
+const char *text1 = "This link is split";
+const char *text2 = "across two lines";
+
+cairo_font_extents (cr, &font_extents);
+cairo_move_to (cr, 450, 50);
+cairo_text_extents (cr, text1, &text1_extents);
+cairo_move_to (cr, 50, 70);
+cairo_text_extents (cr, text2, &text2_extents);
+sprintf (attribs,
+         "rect=[%f %f %f %f %f %f %f %f] uri='http://cairographics.org'",
+         text1_extents.x_bearing,
+         text1_extents.y_bearing,
+         text1_extents.width,
+         text1_extents.height,
+         text2_extents.x_bearing,
+         text2_extents.y_bearing,
+         text2_extents.width,
+         text2_extents.height);
+
+cairo_tag_begin (cr, CAIRO_TAG_LINK, attribs);
+cairo_show_text (cr, "This is a link to the cairo website");
+cairo_move_to (cr, 450, 50);
+cairo_show_text (cr, text1);
+cairo_move_to (cr, 50, 70);
+cairo_show_text (cr, text2);
+cairo_tag_end (cr, CAIRO_TAG_LINK);
+
+

There are three types of links. Each type has its own attributes as detailed below.

+
    +
  • Internal Links - A link to a location in the same document

  • +
  • URI Links - A link to a Uniform resource identifier

  • +
  • File Links - A link to a location in another document

  • +
+
+

Internal Links

+

An internal link is a link to a location in the same document. The destination +is specified with either:

+

dest +: a UTF-8 string specifying the destination in the PDF file to link +to. Destinations are created with the CAIRO_TAG_DEST tag.

+

or the two attributes:

+

page +: An integer specifying the page number in the PDF file to link to.

+

pos +: [optional] An array of two floats specifying the x,y position +on the page.

+

An example of the link attributes to link to a page and x,y position:

+
+"page=3 pos=[3.1 6.2]"
+
+
+
+

URI Links

+

A URI link is a link to a Uniform Resource Identifier (RFC 2396).

+

A URI is specified with the following attribute:

+

uri +: An ASCII string specifying the URI.

+

An example of the link attributes to the cairo website:

+
+"uri='http://cairographics.org'"
+
+
+
+

File Links

+

A file link is a link a location in another PDF file.

+

The file attribute (required) specifies the name of the PDF file:

+

file +: File name of PDF file to link to.

+

The position is specified by either:

+

dest +: a UTF-8 string specifying the named destination in the PDF file.

+

or

+

page +: An integer specifying the page number in the PDF file.

+

pos +: [optional] An array of two floats specifying the x,y + position on the page. Position coordinates in external files are in PDF + coordinates (0,0 at bottom left).

+

An example of the link attributes to PDF file:

+
+"file='document.pdf' page=16 pos=[25 40]"
+
+
+
+
+
+

Destination Tags

+

A destination is specified by enclosing the destination drawing +operations with the CAIRO_TAG_DEST tag.

+

name +: [required] A UTF-8 string specifying the name of this destination.

+

x +: [optional] A float specifying the x coordinate of destination + position on this page. If not specified the default + x coordinate is the left side of the extents of the + operations enclosed by the CAIRO_TAG_DEST begin/end tags. If + no operations are enclosed, the x coordidate is 0.

+

y +: [optional] A float specifying the y coordinate of destination + position on this page. If not specified the default + y coordinate is the top of the extents of the + operations enclosed by the CAIRO_TAG_DEST begin/end tags. If + no operations are enclosed, the y coordidate is 0.

+

internal +: A boolean that if true, the destination name may be + ommitted from PDF where possible. In this case, links + refer directly to the page and position instead of via + the named destination table. Note that if this + destination is referenced by another PDF (see File Links), + this attribute must be false. Default is false.

+
+/* Create a hyperlink */
+cairo_tag_begin (cr, CAIRO_TAG_LINK, "dest='mydest' internal");
+cairo_move_to (cr, 50, 50);
+cairo_show_text (cr, "This is a hyperlink.");
+cairo_tag_end (cr, CAIRO_TAG_LINK);
+
+/* Create a destination */
+cairo_tag_begin (cr, CAIRO_TAG_DEST, "name='mydest'");
+cairo_move_to (cr, 50, 250);
+cairo_show_text (cr, "This paragraph is the destination of the above link.");
+cairo_tag_end (cr, CAIRO_TAG_DEST);
+
+
+
+
+

Document Structure (PDF)

+

The document structure tags provide a means of specifying structural information +such as headers, paragraphs, tables, and figures. The inclusion of structural information faciliates:

+
    +
  • Extraction of text and graphics for copy and paste

  • +
  • Reflow of text and graphics in the viewer

  • +
  • Proccessing text eg searching and indexing

  • +
  • Conversion to other formats

  • +
  • Accessability support

  • +
+

The list of structure types is specified in section 14.8.4 of the +PDF Reference.

+

Note the PDF "Link" structure tag is the same as the cairo CAIRO_TAG_LINK tag.

+

The following example creates a document structure for a document containing two section, each with +a header and a paragraph.

+
+cairo_tag_begin (cr, "Document", NULL);
+
+cairo_tag_begin (cr, "Sect", NULL);
+cairo_tag_begin (cr, "H1", NULL);
+cairo_show_text (cr, "Heading 1");
+cairo_tag_end (cr, "H1");
+
+cairo_tag_begin (cr, "P", NULL);
+cairo_show_text (cr, "Paragraph 1");
+cairo_tag_end (cr, "P");
+cairo_tag_end (cr, "Sect");
+
+cairo_tag_begin (cr, "Sect", NULL);
+cairo_tag_begin (cr, "H1", NULL);
+cairo_show_text (cr, "Heading 2");
+cairo_tag_end (cr, "H1");
+
+cairo_tag_begin (cr, "P", NULL);
+cairo_show_text (cr, "Paragraph 2");
+cairo_tag_end (cr, "P");
+cairo_tag_end (cr, "Sect");
+
+cairo_tag_end (cr, "Document");
+
+
+
+
+

Functions

+
+

cairo_tag_begin ()

+
void
+cairo_tag_begin (cairo_t *cr,
+                 const char *tag_name,
+                 const char *attributes);
+

Marks the beginning of the tag_name + structure. Call +cairo_tag_end() with the same tag_name + to mark the end of the +structure.

+

The attributes string is of the form "key1=value2 key2=value2 ...". +Values may be boolean (true/false or 1/0), integer, float, string, +or an array.

+

String values are enclosed in single quotes +('). Single quotes and backslashes inside the string should be +escaped with a backslash.

+

Boolean values may be set to true by only +specifying the key. eg the attribute string "key" is the equivalent +to "key=true".

+

Arrays are enclosed in '[]'. eg "rect=[1.2 4.3 2.0 3.0]".

+

If no attributes are required, attributes + can be an empty string or NULL.

+

See Tags and Links Description +for the list of tags and attributes.

+

Invalid nesting of tags or invalid attributes will cause cr + to +shutdown with a status of CAIRO_STATUS_TAG_ERROR.

+

See cairo_tag_end().

+
+

Parameters

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

cr

a cairo context

 

tag_name

tag name

 

attributes

tag attributes

 
+
+

Since: 1.16

+
+
+
+

cairo_tag_end ()

+
void
+cairo_tag_end (cairo_t *cr,
+               const char *tag_name);
+

Marks the end of the tag_name + structure.

+

Invalid nesting of tags will cause cr + to shutdown with a status of +CAIRO_STATUS_TAG_ERROR.

+

See cairo_tag_begin().

+
+

Parameters

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

cr

a cairo context

 

tag_name

tag name

 
+
+

Since: 1.16

+
+
+
+

Types and Values

+
+

CAIRO_TAG_DEST

+
#define CAIRO_TAG_DEST "cairo.dest"
+
+

Create a destination for a hyperlink. Destination tag attributes +are detailed at Destinations.

+

Since: 1.16

+
+
+
+

CAIRO_TAG_LINK

+
#define CAIRO_TAG_LINK "Link"
+
+

Create hyperlink. Link tag attributes are detailed at +Links.

+

Since: 1.16

+
+
+
+

See Also

+

cairo_pdf_surface_t

+
+
+ + + \ No newline at end of file diff -Nru cairo-1.14.6/doc/public/html/cairo-text.html cairo-1.15.10/doc/public/html/cairo-text.html --- cairo-1.14.6/doc/public/html/cairo-text.html 2015-12-09 20:45:07.000000000 +0000 +++ cairo-1.15.10/doc/public/html/cairo-text.html 2017-12-11 21:03:31.000000000 +0000 @@ -2,21 +2,20 @@ -Cairo: A Vector Graphics Library: text - +text: Cairo: A Vector Graphics Library + - + - + @@ -34,7 +33,7 @@

Functions

-
+
@@ -236,7 +235,7 @@

Types and Values

-
+
@@ -266,11 +265,6 @@
-

Object Hierarchy

-
-
-
-

Description

The functions with text in their name form cairo's toy text API. The toy API takes UTF-8 encoded @@ -339,8 +333,8 @@

This function is equivalent to a call to cairo_toy_font_face_create() followed by cairo_set_font_face().

-

Parameters

-
+

Parameters

+
@@ -370,7 +364,7 @@
-

Since 1.0

+

Since: 1.0


@@ -391,8 +385,8 @@ cairo_set_font_matrix() nor cairo_set_scaled_font()), the default font size is 10.0.

-

Parameters

-
+

Parameters

+
@@ -412,7 +406,7 @@
-

Since 1.0

+

Since: 1.0


@@ -428,8 +422,8 @@ complex font matrix can be used to shear the font or stretch it unequally along the two axes

-

Parameters

-
+

Parameters

+
@@ -450,7 +444,7 @@
-

Since 1.0

+

Since: 1.0


@@ -462,8 +456,8 @@ . See cairo_set_font_matrix().

-

Parameters

-
+

Parameters

+
@@ -483,7 +477,7 @@
-

Since 1.0

+

Since: 1.0


@@ -498,8 +492,8 @@ has a default value (like CAIRO_ANTIALIAS_DEFAULT), then the value from the surface is used.

-

Parameters

-
+

Parameters

+
@@ -519,7 +513,7 @@
-

Since 1.0

+

Since: 1.0


@@ -532,8 +526,8 @@ from the underlying surface; they are literally the options passed to cairo_set_font_options().

-

Parameters

-
+

Parameters

+
@@ -554,7 +548,7 @@
-

Since 1.0

+

Since: 1.0


@@ -567,8 +561,8 @@ . The replaced font face in the cairo_t will be destroyed if there are no other references to it.

-

Parameters

-
+

Parameters

+
@@ -582,13 +576,13 @@ - +

font_face

a cairo_font_face_t, or NULL to restore to the default font

a cairo_font_face_t, or NULL to restore to the default font

 
-

Since 1.0

+

Since: 1.0


@@ -597,8 +591,8 @@ cairo_get_font_face (cairo_t *cr);

Gets the current font face for a cairo_t.

-

Parameters

-
+

Parameters

+
@@ -612,20 +606,19 @@
-

Returns

+

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 +

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

+

Since: 1.0


@@ -639,8 +632,8 @@ same as that of the cairo_scaled_font_t, which can be accessed using cairo_scaled_font_get_ctm().

-

Parameters

-
+

Parameters

+
@@ -660,7 +653,7 @@
-

Since 1.2

+

Since: 1.2


@@ -669,8 +662,8 @@ cairo_get_scaled_font (cairo_t *cr);

Gets the current scaled font for a cairo_t.

-

Parameters

-
+

Parameters

+
@@ -684,20 +677,19 @@
-

Returns

+

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 +

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

+

Since: 1.4


@@ -724,8 +716,8 @@ serious text-using applications. See cairo_show_glyphs() for the "real" text display API in cairo.

-

Parameters

-
+

Parameters

+
@@ -739,13 +731,13 @@ - +

utf8

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

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

 
-

Since 1.0

+

Since: 1.0


@@ -758,8 +750,8 @@ rendered according to the current font face, font size (font matrix), and font options.

-

Parameters

-
+

Parameters

+
@@ -784,7 +776,7 @@
-

Since 1.0

+

Since: 1.0


@@ -828,8 +820,8 @@ following clusters move backward.

See cairo_text_cluster_t for constraints on valid clusters.

-

Parameters

-
+

Parameters

+
@@ -880,7 +872,7 @@
-

Since 1.8

+

Since: 1.8


@@ -890,8 +882,8 @@ cairo_font_extents_t *extents);

Gets the font extents for the currently selected font.

-

Parameters

-
+

Parameters

+
@@ -912,7 +904,7 @@
-

Since 1.0

+

Since: 1.0


@@ -933,8 +925,8 @@ likely to not affect the size of the rectangle, though they will affect the x_advance and y_advance values.

-

Parameters

-
+

Parameters

+
@@ -948,7 +940,7 @@ - + @@ -960,7 +952,7 @@

utf8

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

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

 
-

Since 1.0

+

Since: 1.0


@@ -979,8 +971,8 @@

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

-

Parameters

-
+

Parameters

+
@@ -1012,7 +1004,7 @@
-

Since 1.0

+

Since: 1.0


@@ -1031,8 +1023,8 @@

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

-
+

Parameters

+
@@ -1058,12 +1050,11 @@
-

Returns

+

Returns

a newly created cairo_font_face_t. Free with cairo_font_face_destroy() when you are done using it.

-

-

Since 1.8

+

Since: 1.8


@@ -1072,8 +1063,8 @@ cairo_toy_font_face_get_family (cairo_font_face_t *font_face);

Gets the familly name of a toy font.

-

Parameters

-
+

Parameters

+
@@ -1087,12 +1078,11 @@
-

Returns

+

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

+

Since: 1.8


@@ -1101,8 +1091,8 @@ cairo_toy_font_face_get_slant (cairo_font_face_t *font_face);

Gets the slant a toy font.

-

Parameters

-
+

Parameters

+
@@ -1116,11 +1106,10 @@
-

Returns

+

Returns

The slant value

-

-

Since 1.8

+

Since: 1.8


@@ -1129,8 +1118,8 @@ cairo_toy_font_face_get_weight (cairo_font_face_t *font_face);

Gets the weight a toy font.

-

Parameters

-
+

Parameters

+
@@ -1144,11 +1133,10 @@
-

Returns

+

Returns

The weight value

-

-

Since 1.8

+

Since: 1.8


@@ -1161,14 +1149,14 @@ 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 +

This function returns NULL if num_glyphs is not positive, -or if out of memory. That means, the NULL return value +or if out of memory. That means, the NULL return value signals out-of-memory only if num_glyphs was positive.

-

Parameters

-
+

Parameters

+
@@ -1182,12 +1170,11 @@
-

Returns

+

Returns

the newly allocated array of glyphs that should be freed using cairo_glyph_free()

-

-

Since 1.8

+

Since: 1.8


@@ -1201,8 +1188,8 @@ For all other uses, user can use their own allocation method for glyphs.

-

Parameters

-
+

Parameters

+
@@ -1210,12 +1197,12 @@ - +

glyphs

array of glyphs to free, or NULL

array of glyphs to free, or NULL

 
-

Since 1.8

+

Since: 1.8


@@ -1228,14 +1215,14 @@ 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 +

This function returns NULL if num_clusters is not positive, -or if out of memory. That means, the NULL return value +or if out of memory. That means, the NULL return value signals out-of-memory only if num_clusters was positive.

-

Parameters

-
+

Parameters

+
@@ -1249,12 +1236,11 @@
-

Returns

+

Returns

the newly allocated array of text clusters that should be freed using cairo_text_cluster_free()

-

-

Since 1.8

+

Since: 1.8


@@ -1268,8 +1254,8 @@ For all other uses, user can use their own allocation method for text clusters.

-

Parameters

-
+

Parameters

+
@@ -1277,12 +1263,12 @@ - +

clusters

array of text clusters to free, or NULL

array of text clusters to free, or NULL

 
-

Since 1.8

+

Since: 1.8

@@ -1311,8 +1297,8 @@ drawing or measuring text, each glyph is individually positioned with respect to the overall origin

-

Members

-
+

Members

+
@@ -1340,15 +1326,15 @@
-

Since 1.0

+

Since: 1.0


enum cairo_font_slant_t

Specifies variants of a font face based on their slant.

-

Members

-
+

Members

+
@@ -1379,15 +1365,15 @@
-

Since 1.0

+

Since: 1.0


enum cairo_font_weight_t

Specifies variants of a font face based on their weight.

-

Members

-
+

Members

+
@@ -1411,7 +1397,7 @@
-

Since 1.0

+

Since: 1.0


@@ -1434,8 +1420,8 @@

See cairo_show_text_glyphs() for how clusters are used in advanced text operations.

-

Members

-
+

Members

+
@@ -1455,15 +1441,15 @@
-

Since 1.8

+

Since: 1.8


enum cairo_text_cluster_flags_t

Specifies properties of a text cluster mapping.

-

Members

-
+

Members

+
@@ -1479,7 +1465,7 @@
-

Since 1.8

+

Since: 1.8

@@ -1489,7 +1475,6 @@
+
Generated by GTK-Doc V1.25 \ No newline at end of file diff -Nru cairo-1.14.6/doc/public/html/cairo-Transformations.html cairo-1.15.10/doc/public/html/cairo-Transformations.html --- cairo-1.14.6/doc/public/html/cairo-Transformations.html 2015-12-09 20:45:07.000000000 +0000 +++ cairo-1.15.10/doc/public/html/cairo-Transformations.html 2017-12-11 21:03:31.000000000 +0000 @@ -2,21 +2,20 @@ -Cairo: A Vector Graphics Library: Transformations - +Transformations: Cairo: A Vector Graphics Library + - + - + @@ -34,7 +33,7 @@

Functions

-
+
@@ -132,11 +131,6 @@
-

Object Hierarchy

-
-
-
-

Description

The current transformation matrix, ctm, is a two-dimensional affine transformation that maps all coordinates and other @@ -160,8 +154,8 @@ call to cairo_translate(). In other words, the translation of the user-space origin takes place after any existing transformation.

-

Parameters

-
+

Parameters

+
@@ -186,7 +180,7 @@
-

Since 1.0

+

Since: 1.0


@@ -202,8 +196,8 @@ the axes takes place after any existing transformation of user space.

-

Parameters

-
+

Parameters

+
@@ -228,7 +222,7 @@
-

Since 1.0

+

Since: 1.0


@@ -243,8 +237,8 @@ rotation direction for positive angles is from the positive X axis toward the positive Y axis.

-

Parameters

-
+

Parameters

+
@@ -265,7 +259,7 @@
-

Since 1.0

+

Since: 1.0


@@ -278,8 +272,8 @@ as an additional transformation. The new transformation of user space takes place after any existing transformation.

-

Parameters

-
+

Parameters

+
@@ -299,7 +293,7 @@
-

Since 1.0

+

Since: 1.0


@@ -311,8 +305,8 @@ equal to matrix .

-

Parameters

-
+

Parameters

+
@@ -332,7 +326,7 @@
-

Since 1.0

+

Since: 1.0


@@ -343,8 +337,8 @@

Stores the current transformation matrix (CTM) into matrix .

-

Parameters

-
+

Parameters

+
@@ -364,7 +358,7 @@
-

Since 1.0

+

Since: 1.0


@@ -376,8 +370,8 @@ axes will be aligned and one user-space unit will transform to one device-space unit.

-

Parameters

-
+

Parameters

+
@@ -390,7 +384,7 @@
-

Since 1.0

+

Since: 1.0


@@ -403,8 +397,8 @@ multiplying the given point by the current transformation matrix (CTM).

-

Parameters

-
+

Parameters

+
@@ -429,7 +423,7 @@
-

Since 1.0

+

Since: 1.0


@@ -445,8 +439,8 @@ ,dy ).

-

Parameters

-
+

Parameters

+
@@ -471,7 +465,7 @@
-

Since 1.0

+

Since: 1.0


@@ -484,8 +478,8 @@ multiplying the given point by the inverse of the current transformation matrix (CTM).

-

Parameters

-
+

Parameters

+
@@ -510,7 +504,7 @@
-

Since 1.0

+

Since: 1.0


@@ -526,8 +520,8 @@ ,dy ).

-

Parameters

-
+

Parameters

+
@@ -552,7 +546,7 @@
-

Since 1.0

+

Since: 1.0

@@ -564,7 +558,6 @@
+
Generated by GTK-Doc V1.25 \ No newline at end of file diff -Nru cairo-1.14.6/doc/public/html/cairo-Types.html cairo-1.15.10/doc/public/html/cairo-Types.html --- cairo-1.14.6/doc/public/html/cairo-Types.html 2015-12-09 20:45:07.000000000 +0000 +++ cairo-1.15.10/doc/public/html/cairo-Types.html 2017-12-11 21:03:31.000000000 +0000 @@ -2,21 +2,20 @@ -Cairo: A Vector Graphics Library: Types - +Types: Cairo: A Vector Graphics Library + - + - + @@ -34,7 +33,7 @@

Functions

-
+
@@ -51,7 +50,7 @@

Types and Values

-
+
@@ -73,11 +72,6 @@
-

Object Hierarchy

-
-
-
-

Description

This section lists generic data types used in the cairo API.

@@ -91,8 +85,8 @@ data element is destroyed. It is passed the pointer to the data element and should free any memory and resources allocated for it.

-

Parameters

-
+

Parameters

+
@@ -105,7 +99,7 @@
-

Since 1.0

+

Since: 1.0

@@ -123,7 +117,7 @@ /* do something */ }
-

Since 1.0

+

Since: 1.0


@@ -138,8 +132,8 @@ 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.

-

Members

-
+

Members

+
@@ -152,7 +146,7 @@
-

Since 1.0

+

Since: 1.0


@@ -164,8 +158,8 @@

A data structure for holding a rectangle with integer coordinates.

-

Members

-
+

Members

+
@@ -195,12 +189,11 @@
-

Since 1.10

+

Since: 1.10

+
Generated by GTK-Doc V1.25 \ No newline at end of file diff -Nru cairo-1.14.6/doc/public/html/cairo-User-Fonts.html cairo-1.15.10/doc/public/html/cairo-User-Fonts.html --- cairo-1.14.6/doc/public/html/cairo-User-Fonts.html 2015-12-09 20:45:07.000000000 +0000 +++ cairo-1.15.10/doc/public/html/cairo-User-Fonts.html 2017-12-11 21:03:31.000000000 +0000 @@ -2,21 +2,20 @@ -Cairo: A Vector Graphics Library: User Fonts - +User Fonts: Cairo: A Vector Graphics Library + - + - + @@ -34,7 +33,7 @@

Functions

-
+
@@ -149,7 +148,7 @@

Types and Values

-
+
@@ -161,11 +160,6 @@
-

Object Hierarchy

-
-
-
-

Description

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 @@ -204,8 +198,8 @@ point and trying to use it for text operations in the callback will result in deadlock.

-

Parameters

-
+

Parameters

+
@@ -231,11 +225,10 @@
-

Returns

+

Returns

CAIRO_STATUS_SUCCESS upon success, or an error status on error.

-

-

Since 1.8

+

Since: 1.8


@@ -289,8 +282,8 @@ done to cr in the callback.

-

Parameters

-
+

Parameters

+
@@ -321,12 +314,11 @@
-

Returns

+

Returns

CAIRO_STATUS_SUCCESS upon success, or CAIRO_STATUS_USER_FONT_ERROR or any other error status on error.

-

-

Since 1.8

+

Since: 1.8


@@ -352,7 +344,7 @@ argument is preset to the number of glyph entries available in the glyphs buffer. If the glyphs - buffer is NULL, the value of + 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 @@ -368,13 +360,13 @@ 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 + is not NULL, num_clusters and cluster_flags are also -non-NULL, and cluster mapping should be computed. The semantics of how +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 + 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 @@ -401,8 +393,8 @@ are advised to use glyph 0 for such purposes and do not use that glyph value for other purposes.

-

Parameters

-
+

Parameters

+
@@ -437,7 +429,7 @@ - + @@ -456,13 +448,12 @@

clusters

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

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

 
-

Returns

+

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

+

Since: 1.8


@@ -495,8 +486,8 @@ are advised to use glyph 0 for such purposes and do not use that glyph value for other purposes.

-

Parameters

-
+

Parameters

+
@@ -522,13 +513,12 @@
-

Returns

+

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

+

Since: 1.8


@@ -544,12 +534,11 @@ cairo_scaled_font_get_font_face() followed by cairo_font_face_get_user_data().

-

Returns

+

Returns

a newly created cairo_font_face_t. Free with cairo_font_face_destroy() when you are done using it.

-

-

Since 1.8

+

Since: 1.8


@@ -564,8 +553,8 @@ error will occur. A user font-face is immutable as soon as a scaled-font is created from it.

-

Parameters

-
+

Parameters

+
@@ -579,13 +568,13 @@ - +

init_func

The init callback, or NULL

The init callback, or NULL

 
-

Since 1.8

+

Since: 1.8


@@ -594,8 +583,8 @@ cairo_user_font_face_get_init_func (cairo_font_face_t *font_face);

Gets the scaled-font initialization function of a user-font.

-

Parameters

-
+

Parameters

+
@@ -609,12 +598,11 @@
-

Returns

+

Returns

The init callback of font_face -or NULL if none set or an error has occurred.

-

+or NULL if none set or an error has occurred.

-

Since 1.8

+

Since: 1.8


@@ -630,12 +618,12 @@ 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 +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

-
+

Parameters

+
@@ -649,13 +637,13 @@ - +

render_glyph_func

The render_glyph callback, or NULL

The render_glyph callback, or NULL

 
-

Since 1.8

+

Since: 1.8


@@ -665,8 +653,8 @@ (cairo_font_face_t *font_face);

Gets the glyph rendering function of a user-font.

-

Parameters

-
+

Parameters

+
@@ -680,12 +668,11 @@
-

Returns

+

Returns

The render_glyph callback of font_face -or NULL if none set or an error has occurred.

-

+or NULL if none set or an error has occurred.

-

Since 1.8

+

Since: 1.8


@@ -701,8 +688,8 @@ error will occur. A user font-face is immutable as soon as a scaled-font is created from it.

-

Parameters

-
+

Parameters

+
@@ -716,13 +703,13 @@ - +

unicode_to_glyph_func

The unicode_to_glyph callback, or NULL

The unicode_to_glyph callback, or NULL

 
-

Since 1.8

+

Since: 1.8


@@ -732,8 +719,8 @@ (cairo_font_face_t *font_face);

Gets the unicode-to-glyph conversion function of a user-font.

-

Parameters

-
+

Parameters

+
@@ -747,12 +734,11 @@
-

Returns

+

Returns

The unicode_to_glyph callback of font_face -or NULL if none set or an error occurred.

-

+or NULL if none set or an error occurred.

-

Since 1.8

+

Since: 1.8


@@ -768,8 +754,8 @@ error will occur. A user font-face is immutable as soon as a scaled-font is created from it.

-

Parameters

-
+

Parameters

+
@@ -783,13 +769,13 @@ - +

text_to_glyphs_func

The text_to_glyphs callback, or NULL

The text_to_glyphs callback, or NULL

 
-

Since 1.8

+

Since: 1.8


@@ -799,8 +785,8 @@ (cairo_font_face_t *font_face);

Gets the text-to-glyphs conversion function of a user-font.

-

Parameters

-
+

Parameters

+
@@ -814,12 +800,11 @@
-

Returns

+

Returns

The text_to_glyphs callback of font_face -or NULL if none set or an error occurred.

-

+or NULL if none set or an error occurred.

-

Since 1.8

+

Since: 1.8

@@ -832,12 +817,11 @@ 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

+

Since: 1.8

+
Generated by GTK-Doc V1.25 \ No newline at end of file diff -Nru cairo-1.14.6/doc/public/html/cairo-Version-Information.html cairo-1.15.10/doc/public/html/cairo-Version-Information.html --- cairo-1.14.6/doc/public/html/cairo-Version-Information.html 2015-12-09 20:45:07.000000000 +0000 +++ cairo-1.15.10/doc/public/html/cairo-Version-Information.html 2017-12-11 21:03:31.000000000 +0000 @@ -2,21 +2,20 @@ -Cairo: A Vector Graphics Library: Version Information - +Version Information: Cairo: A Vector Graphics Library + - + - + @@ -34,7 +33,7 @@

Functions

-
+
@@ -72,7 +71,7 @@

Types and Values

-
+
@@ -102,11 +101,6 @@
-

Object Hierarchy

-
-
-
-

Description

Cairo has a three-part version number scheme. In this scheme, we use even vs. odd numbers to distinguish fixed points in the software @@ -137,7 +131,7 @@ 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 @@ -162,7 +156,7 @@

-

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 @@ -204,8 +198,8 @@ Two encoded version numbers can be compared as integers. The encoding ensures that later versions compare greater than earlier versions.

-

Parameters

-
+

Parameters

+
@@ -231,11 +225,10 @@
-

Returns

+

Returns

the encoded version.

-

-

Since 1.0

+

Since: 1.0


@@ -245,8 +238,8 @@ 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

-
+

Parameters

+
@@ -272,11 +265,10 @@
-

Returns

+

Returns

a string literal containing the version.

-

-

Since 1.8

+

Since: 1.8


@@ -294,11 +286,10 @@

See also cairo_version_string() as well as the compile-time equivalents CAIRO_VERSION and CAIRO_VERSION_STRING.

-

Returns

+

Returns

the encoded version.

-

-

Since 1.0

+

Since: 1.0


@@ -310,11 +301,10 @@

See also cairo_version() as well as the compile-time equivalents CAIRO_VERSION_STRING and CAIRO_VERSION.

-

Returns

+

Returns

a string containing the version.

-

-

Since 1.0

+

Since: 1.0

@@ -324,7 +314,7 @@
#define             CAIRO_VERSION

The version of cairo available at compile-time, encoded using CAIRO_VERSION_ENCODE().

-

Since 1.0

+

Since: 1.0


@@ -332,7 +322,7 @@
#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

+

Since: 1.0


@@ -340,7 +330,7 @@
#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

+

Since: 1.0


@@ -348,7 +338,7 @@
#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

+

Since: 1.0


@@ -356,12 +346,11 @@
#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

+

Since: 1.8

+
Generated by GTK-Doc V1.25 \ No newline at end of file diff -Nru cairo-1.14.6/doc/public/html/cairo-Win32-Fonts.html cairo-1.15.10/doc/public/html/cairo-Win32-Fonts.html --- cairo-1.14.6/doc/public/html/cairo-Win32-Fonts.html 2015-12-09 20:45:07.000000000 +0000 +++ cairo-1.15.10/doc/public/html/cairo-Win32-Fonts.html 2017-12-11 21:03:31.000000000 +0000 @@ -2,21 +2,20 @@ -Cairo: A Vector Graphics Library: Win32 Fonts - +Win32 Fonts: Cairo: A Vector Graphics Library + - + - + @@ -34,7 +33,7 @@

Functions

-
+
@@ -109,7 +108,7 @@

Types and Values

-
+
@@ -121,11 +120,6 @@
-

Object Hierarchy

-
-
-
-

Description

The Microsoft Windows font backend is primarily used to render text on Microsoft Windows systems.

@@ -144,8 +138,8 @@ 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

-
+

Parameters

+
@@ -161,12 +155,11 @@
-

Returns

+

Returns

a newly created cairo_font_face_t. Free with cairo_font_face_destroy() when you are done using it.

-

-

Since 1.0

+

Since: 1.0


@@ -181,8 +174,8 @@ 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

-
+

Parameters

+
@@ -196,12 +189,11 @@
-

Returns

+

Returns

a newly created cairo_font_face_t. Free with cairo_font_face_destroy() when you are done using it.

-

-

Since 1.2

+

Since: 1.2


@@ -217,8 +209,8 @@ 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

-
+

Parameters

+
@@ -229,7 +221,7 @@ @@ -244,12 +236,11 @@

logfont

A LOGFONTW structure specifying the font to use. If font -is NULL then the lfHeight, lfWidth, lfOrientation and lfEscapement +is NULL then the lfHeight, lfWidth, lfOrientation and lfEscapement fields of this structure are ignored. Otherwise lfWidth, lfOrientation and lfEscapement must be zero.

 
-

Returns

+

Returns

a newly created cairo_font_face_t. Free with cairo_font_face_destroy() when you are done using it.

-

-

Since 1.6

+

Since: 1.6


@@ -269,8 +260,8 @@

Normally, calls to SaveDC() and RestoreDC() would be made around the use of this function to preserve the original graphics state.

-

Parameters

-
+

Parameters

+
@@ -292,13 +283,12 @@
-

Returns

+

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

+

Since: 1.0


@@ -307,8 +297,8 @@ cairo_win32_scaled_font_done_font (cairo_scaled_font_t *scaled_font);

Releases any resources allocated by cairo_win32_scaled_font_select_font()

-

Parameters

-
+

Parameters

+
@@ -321,7 +311,7 @@
-

Since 1.0

+

Since: 1.0


@@ -334,8 +324,8 @@ coordinate system used by the Windows functions to return metrics) and font space coordinates.

-

Parameters

-
+

Parameters

+
@@ -349,12 +339,11 @@
-

Returns

+

Returns

factor to multiply logical units by to get font space coordinates.

-

-

Since 1.0

+

Since: 1.0


@@ -367,8 +356,8 @@ to device space.

-

Parameters

-
+

Parameters

+
@@ -388,7 +377,7 @@
-

Since 1.4

+

Since: 1.4


@@ -401,8 +390,8 @@ used by scaled_font .

-

Parameters

-
+

Parameters

+
@@ -422,7 +411,7 @@
-

Since 1.4

+

Since: 1.4

@@ -433,7 +422,7 @@

Defined if the Microsoft Windows font backend is available. This macro can be used to conditionally compile backend-specific code.

-

Since 1.8

+

Since: 1.8

@@ -442,7 +431,6 @@
+
Generated by GTK-Doc V1.25 \ No newline at end of file diff -Nru cairo-1.14.6/doc/public/html/cairo-Win32-Surfaces.html cairo-1.15.10/doc/public/html/cairo-Win32-Surfaces.html --- cairo-1.14.6/doc/public/html/cairo-Win32-Surfaces.html 2015-12-09 20:45:07.000000000 +0000 +++ cairo-1.15.10/doc/public/html/cairo-Win32-Surfaces.html 2017-12-11 21:03:31.000000000 +0000 @@ -2,21 +2,20 @@ -Cairo: A Vector Graphics Library: Win32 Surfaces - +Win32 Surfaces: Cairo: A Vector Graphics Library + - + - + @@ -34,7 +33,7 @@

Functions

-
+
@@ -93,7 +92,7 @@

Types and Values

-
+
@@ -105,11 +104,6 @@
-

Object Hierarchy

-
-
-
-

Description

The Microsoft Windows surface is used to render cairo graphics to Microsoft Windows windows, bitmaps, and printing device contexts.

@@ -130,10 +124,11 @@ 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_format() or cairo_win32_surface_create_with_dib().

-

Parameters

-
+

Parameters

+
@@ -147,11 +142,10 @@
-

Returns

-

the newly created surface

-

+

Returns

+

the newly created surface, NULL on failure

-

Since 1.0

+

Since: 1.0


@@ -164,8 +158,8 @@ any particular existing surface or device context. The created bitmap will be uninitialized.

-

Parameters

-
+

Parameters

+
@@ -191,11 +185,10 @@
-

Returns

+

Returns

the newly created surface

-

-

Since 1.2

+

Since: 1.2


@@ -209,8 +202,8 @@ any particular existing surface or device context. The created bitmap will be uninitialized.

-

Parameters

-
+

Parameters

+
@@ -241,11 +234,10 @@
-

Returns

+

Returns

the newly created surface

-

-

Since 1.4

+

Since: 1.4


@@ -261,8 +253,8 @@ provide correct complex rendering behaviour; cairo_surface_show_page() and associated methods must be used for correct output.

-

Parameters

-
+

Parameters

+
@@ -276,27 +268,26 @@
-

Returns

+

Returns

the newly created surface

-

-

Since 1.6

+

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.

+

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.

-

Parameters

-
+

Parameters

+
@@ -310,11 +301,10 @@
-

Returns

-

HDC or NULL if no HDC available.

-

+

Returns

+

HDC or NULL if no HDC available.

-

Since 1.2

+

Since: 1.2


@@ -323,10 +313,10 @@ 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

-
+

Parameters

+
@@ -340,12 +330,11 @@
-

Returns

+

Returns

a cairo_surface_t (owned by the win32 cairo_surface_t), -or NULL if the win32 surface is not a DIB.

-

+or NULL if the win32 surface is not a DIB.

-

Since 1.4

+

Since: 1.4

@@ -356,7 +345,7 @@

Defined if the Microsoft Windows surface backend is available. This macro can be used to conditionally compile backend-specific code.

-

Since 1.0

+

Since: 1.0

@@ -365,7 +354,6 @@
+
Generated by GTK-Doc V1.25 \ No newline at end of file diff -Nru cairo-1.14.6/doc/public/html/cairo-XCB-Surfaces.html cairo-1.15.10/doc/public/html/cairo-XCB-Surfaces.html --- cairo-1.14.6/doc/public/html/cairo-XCB-Surfaces.html 2015-12-09 20:45:07.000000000 +0000 +++ cairo-1.15.10/doc/public/html/cairo-XCB-Surfaces.html 2017-12-11 21:03:31.000000000 +0000 @@ -2,21 +2,20 @@ -Cairo: A Vector Graphics Library: XCB Surfaces - +XCB Surfaces: Cairo: A Vector Graphics Library + - + - + @@ -34,7 +33,7 @@

Functions

-
+
@@ -125,7 +124,7 @@

Types and Values

-
+
@@ -143,11 +142,6 @@
-

Object Hierarchy

-
-
-
-

Description

The XCB surface is used to render cairo graphics to X Window System windows and pixmaps using the XCB library.

@@ -177,8 +171,8 @@ the created surface is used as a source, the contents of the children will be included.

-

Parameters

-
+

Parameters

+
@@ -219,16 +213,15 @@
-

Returns

+

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

+

Since: 1.12


@@ -242,8 +235,8 @@

Creates an XCB surface that draws to the given bitmap. This will be drawn to as a CAIRO_FORMAT_A1 object.

-

Parameters

-
+

Parameters

+
@@ -282,16 +275,15 @@
-

Returns

+

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

+

Since: 1.12


@@ -317,8 +309,8 @@ the created surface is used as a source, the contents of the children will be included.

-

Parameters

-
+

Parameters

+
@@ -365,16 +357,15 @@
-

Returns

+

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

+

Since: 1.12


@@ -394,8 +385,8 @@

If cairo_surface_flush() wasn't called, some pending operations might be discarded.

-

Parameters

-
+

Parameters

+
@@ -420,7 +411,7 @@
-

Since 1.12

+

Since: 1.12


@@ -435,8 +426,8 @@

If cairo_surface_flush() wasn't called, some pending operations might be discarded.

-

Parameters

-
+

Parameters

+
@@ -466,7 +457,7 @@
-

Since 1.12

+

Since: 1.12


@@ -475,8 +466,8 @@ cairo_xcb_device_get_connection (cairo_device_t *device);

Get the connection for the XCB device.

-

Parameters

-
+

Parameters

+
@@ -490,11 +481,10 @@
-

Returns

+

Returns

the xcb_connection_t for the connection

-

-

Since 1.12

+

Since: 1.12


@@ -510,8 +500,8 @@ the RENDER extension.

Use the special values -1 and -1 for disabling the RENDER extension.

-

Parameters

-
+

Parameters

+
@@ -536,7 +526,7 @@
-

Since 1.12

+

Since: 1.12


@@ -552,8 +542,8 @@ the SHM extension.

Use the special values -1 and -1 for disabling the SHM extension.

-

Parameters

-
+

Parameters

+
@@ -578,7 +568,7 @@
-

Since 1.12

+

Since: 1.12


@@ -587,8 +577,8 @@ cairo_xcb_device_debug_get_precision (cairo_device_t *device);

Get the Xrender precision mode.

-

Parameters

-
+

Parameters

+
@@ -602,11 +592,10 @@
-

Returns

+

Returns

the render precision mode

-

-

Since 1.12

+

Since: 1.12


@@ -617,8 +606,8 @@

Render supports two modes of precision when rendering trapezoids. Set the precision to the desired mode.

-

Parameters

-
+

Parameters

+
@@ -638,7 +627,7 @@
-

Since 1.12

+

Since: 1.12

@@ -649,7 +638,7 @@

Defined if the xcb surface backend is available. This macro can be used to conditionally compile backend-specific code.

-

Since 1.12

+

Since: 1.12


@@ -666,7 +655,6 @@
+
Generated by GTK-Doc V1.25 \ No newline at end of file diff -Nru cairo-1.14.6/doc/public/html/cairo-XLib-Surfaces.html cairo-1.15.10/doc/public/html/cairo-XLib-Surfaces.html --- cairo-1.14.6/doc/public/html/cairo-XLib-Surfaces.html 2015-12-09 20:45:07.000000000 +0000 +++ cairo-1.15.10/doc/public/html/cairo-XLib-Surfaces.html 2017-12-11 21:03:31.000000000 +0000 @@ -2,21 +2,20 @@ -Cairo: A Vector Graphics Library: XLib Surfaces - +XLib Surfaces: Cairo: A Vector Graphics Library + - + - + @@ -34,7 +33,7 @@

Functions

-
+
@@ -157,7 +156,7 @@

Types and Values

-
+
@@ -169,11 +168,6 @@
-

Object Hierarchy

-
-
-
-

Description

The XLib surface is used to render cairo graphics to X Window System windows and pixmaps using the XLib library.

@@ -203,8 +197,8 @@ the created surface is used as a source, the contents of the children will be included.

-

Parameters

-
+

Parameters

+
@@ -245,11 +239,10 @@
-

Returns

+

Returns

the newly created surface

-

-

Since 1.0

+

Since: 1.0


@@ -263,8 +256,8 @@

Creates an Xlib surface that draws to the given bitmap. This will be drawn to as a CAIRO_FORMAT_A1 object.

-

Parameters

-
+

Parameters

+
@@ -303,11 +296,10 @@
-

Returns

+

Returns

the newly created surface

-

-

Since 1.0

+

Since: 1.0


@@ -325,8 +317,8 @@

A Pixmap can never change size, so it is never necessary to call this function on a surface created for a Pixmap.

-

Parameters

-
+

Parameters

+
@@ -351,7 +343,7 @@
-

Since 1.0

+

Since: 1.0


@@ -360,8 +352,8 @@ cairo_xlib_surface_get_display (cairo_surface_t *surface);

Get the X Display for the underlying X Drawable.

-

Parameters

-
+

Parameters

+
@@ -375,11 +367,10 @@
-

Returns

+

Returns

the display.

-

-

Since 1.2

+

Since: 1.2


@@ -388,8 +379,8 @@ cairo_xlib_surface_get_screen (cairo_surface_t *surface);

Get the X Screen for the underlying X Drawable.

-

Parameters

-
+

Parameters

+
@@ -403,11 +394,10 @@
-

Returns

+

Returns

the screen.

-

-

Since 1.2

+

Since: 1.2


@@ -424,8 +414,8 @@ No checks are done by this function to ensure this compatibility.

-

Parameters

-
+

Parameters

+
@@ -455,7 +445,7 @@
-

Since 1.0

+

Since: 1.0


@@ -464,8 +454,8 @@ cairo_xlib_surface_get_drawable (cairo_surface_t *surface);

Get the underlying X Drawable used for the surface.

-

Parameters

-
+

Parameters

+
@@ -479,11 +469,10 @@
-

Returns

+

Returns

the drawable.

-

-

Since 1.2

+

Since: 1.2


@@ -497,8 +486,8 @@ cairo_xlib_surface_create(), the return value is the Visual passed to that constructor.

-

Parameters

-
+

Parameters

+
@@ -512,13 +501,12 @@
-

Returns

-

the Visual or NULL if there is no appropriate Visual for +

Returns

+

the Visual or NULL if there is no appropriate Visual for surface .

-

-

Since 1.2

+

Since: 1.2


@@ -527,8 +515,8 @@ cairo_xlib_surface_get_width (cairo_surface_t *surface);

Get the width of the X Drawable underlying the surface in pixels.

-

Parameters

-
+

Parameters

+
@@ -542,11 +530,10 @@
-

Returns

+

Returns

the width of the surface in pixels.

-

-

Since 1.2

+

Since: 1.2


@@ -555,8 +542,8 @@ cairo_xlib_surface_get_height (cairo_surface_t *surface);

Get the height of the X Drawable underlying the surface in pixels.

-

Parameters

-
+

Parameters

+
@@ -570,11 +557,10 @@
-

Returns

+

Returns

the height of the surface in pixels.

-

-

Since 1.2

+

Since: 1.2


@@ -583,8 +569,8 @@ cairo_xlib_surface_get_depth (cairo_surface_t *surface);

Get the number of bits used to represent each pixel value.

-

Parameters

-
+

Parameters

+
@@ -598,11 +584,10 @@
-

Returns

+

Returns

the depth of the surface in bits.

-

-

Since 1.2

+

Since: 1.2


@@ -618,8 +603,8 @@ the RENDER extension.

Use the special values -1 and -1 for disabling the RENDER extension.

-

Parameters

-
+

Parameters

+
@@ -644,7 +629,7 @@
-

Since 1.12

+

Since: 1.12


@@ -653,8 +638,8 @@ cairo_xlib_device_debug_get_precision (cairo_device_t *device);

Get the Xrender precision mode.

-

Parameters

-
+

Parameters

+
@@ -668,11 +653,10 @@
-

Returns

+

Returns

the render precision mode

-

-

Since 1.12

+

Since: 1.12


@@ -683,8 +667,8 @@

Render supports two modes of precision when rendering trapezoids. Set the precision to the desired mode.

-

Parameters

-
+

Parameters

+
@@ -704,7 +688,7 @@
-

Since 1.12

+

Since: 1.12

@@ -715,7 +699,7 @@

Defined if the Xlib surface backend is available. This macro can be used to conditionally compile backend-specific code.

-

Since 1.0

+

Since: 1.0

@@ -724,7 +708,6 @@
+
Generated by GTK-Doc V1.25 \ No newline at end of file diff -Nru cairo-1.14.6/doc/public/html/cairo-XLib-XRender-Backend.html cairo-1.15.10/doc/public/html/cairo-XLib-XRender-Backend.html --- cairo-1.14.6/doc/public/html/cairo-XLib-XRender-Backend.html 2015-12-09 20:45:07.000000000 +0000 +++ cairo-1.15.10/doc/public/html/cairo-XLib-XRender-Backend.html 2017-12-11 21:03:31.000000000 +0000 @@ -2,21 +2,20 @@ -Cairo: A Vector Graphics Library: XLib-XRender Backend - +XLib-XRender Backend: Cairo: A Vector Graphics Library + - + - + @@ -34,7 +33,7 @@

Functions

-
+
@@ -61,7 +60,7 @@

Types and Values

-
+
@@ -73,11 +72,6 @@
-

Object Hierarchy

-
-
-
-

Description

The XLib surface is used to render cairo graphics to X Window System windows and pixmaps using the XLib and Xrender libraries.

@@ -104,8 +98,8 @@ cairo_xlib_surface_set_size() must be called whenever the size of the window changes.

-

Parameters

-
+

Parameters

+
@@ -152,11 +146,10 @@
-

Returns

+

Returns

the newly created surface

-

-

Since 1.0

+

Since: 1.0


@@ -169,8 +162,8 @@ cairo_xlib_surface_create_with_xrender_format() originally, the return value is the format passed to that constructor.

-

Parameters

-
+

Parameters

+
@@ -184,14 +177,13 @@
-

Returns

+

Returns

the XRenderPictFormat* associated with surface , -or NULL if the surface is not an xlib surface +or NULL if the surface is not an xlib surface or if the X Render extension is not available.

-

-

Since 1.6

+

Since: 1.6

@@ -202,7 +194,7 @@

Defined if the XLib/XRender surface functions are available. This macro can be used to conditionally compile backend-specific code.

-

Since 1.6

+

Since: 1.6

@@ -211,7 +203,6 @@
+
Generated by GTK-Doc V1.25 \ No newline at end of file diff -Nru cairo-1.14.6/doc/public/html/index-1.10.html cairo-1.15.10/doc/public/html/index-1.10.html --- cairo-1.14.6/doc/public/html/index-1.10.html 2015-12-09 20:45:07.000000000 +0000 +++ cairo-1.15.10/doc/public/html/index-1.10.html 2017-12-11 21:03:31.000000000 +0000 @@ -2,17 +2,17 @@ -Cairo: A Vector Graphics Library: Index of new symbols in 1.10 - +Index of new symbols in 1.10: Cairo: A Vector Graphics Library + - + - + @@ -22,156 +22,155 @@

Index of new symbols in 1.10

-
+

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 +
cairo_device_t, cairo_device_t
-
cairo_device_type_t, enum cairo_device_type_t +
cairo_device_type_t, enum cairo_device_type_t

H

-
CAIRO_HAS_FC_FONT, CAIRO_HAS_FC_FONT +
CAIRO_HAS_FC_FONT, CAIRO_HAS_FC_FONT
-
CAIRO_HAS_RECORDING_SURFACE, CAIRO_HAS_RECORDING_SURFACE +
CAIRO_HAS_RECORDING_SURFACE, CAIRO_HAS_RECORDING_SURFACE

I

-
cairo_in_clip, cairo_in_clip () +
cairo_in_clip, cairo_in_clip ()

M

-
CAIRO_MIME_TYPE_JP2, CAIRO_MIME_TYPE_JP2 +
CAIRO_MIME_TYPE_JP2, CAIRO_MIME_TYPE_JP2
-
CAIRO_MIME_TYPE_JPEG, CAIRO_MIME_TYPE_JPEG +
CAIRO_MIME_TYPE_JPEG, CAIRO_MIME_TYPE_JPEG
-
CAIRO_MIME_TYPE_PNG, CAIRO_MIME_TYPE_PNG +
CAIRO_MIME_TYPE_PNG, CAIRO_MIME_TYPE_PNG
-
CAIRO_MIME_TYPE_URI, CAIRO_MIME_TYPE_URI +
CAIRO_MIME_TYPE_URI, CAIRO_MIME_TYPE_URI

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_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_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_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_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 ()
+
Generated by GTK-Doc V1.25
\ No newline at end of file diff -Nru cairo-1.14.6/doc/public/html/index-1.12.html cairo-1.15.10/doc/public/html/index-1.12.html --- cairo-1.14.6/doc/public/html/index-1.12.html 2015-12-09 20:45:07.000000000 +0000 +++ cairo-1.15.10/doc/public/html/index-1.12.html 2017-12-11 21:03:31.000000000 +0000 @@ -2,17 +2,17 @@ -Cairo: A Vector Graphics Library: Index of new symbols in 1.12 - +Index of new symbols in 1.12: Cairo: A Vector Graphics Library + - + - + @@ -22,172 +22,171 @@

Index of new symbols in 1.12

-
+

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 +
cairo_ft_synthesize_t, enum cairo_ft_synthesize_t

H

-
CAIRO_HAS_SCRIPT_SURFACE, CAIRO_HAS_SCRIPT_SURFACE +
CAIRO_HAS_SCRIPT_SURFACE, CAIRO_HAS_SCRIPT_SURFACE
-
CAIRO_HAS_XCB_SURFACE, CAIRO_HAS_XCB_SURFACE +
CAIRO_HAS_XCB_SURFACE, CAIRO_HAS_XCB_SURFACE

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

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_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 ()
+
Generated by GTK-Doc V1.25
\ No newline at end of file diff -Nru cairo-1.14.6/doc/public/html/index-1.14.html cairo-1.15.10/doc/public/html/index-1.14.html --- cairo-1.14.6/doc/public/html/index-1.14.html 2015-12-09 20:45:07.000000000 +0000 +++ cairo-1.15.10/doc/public/html/index-1.14.html 2017-12-11 21:03:31.000000000 +0000 @@ -2,17 +2,17 @@ -Cairo: A Vector Graphics Library: Index of new symbols in 1.14 - +Index of new symbols in 1.14: Cairo: A Vector Graphics Library + - + - + @@ -22,31 +22,30 @@

Index of new symbols in 1.14

-
+

M

-
CAIRO_MIME_TYPE_JBIG2, CAIRO_MIME_TYPE_JBIG2 +
CAIRO_MIME_TYPE_JBIG2, CAIRO_MIME_TYPE_JBIG2
-
CAIRO_MIME_TYPE_JBIG2_GLOBAL, CAIRO_MIME_TYPE_JBIG2_GLOBAL +
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_JBIG2_GLOBAL_ID, CAIRO_MIME_TYPE_JBIG2_GLOBAL_ID

S

-
cairo_surface_get_device_scale, cairo_surface_get_device_scale () +
cairo_surface_get_device_scale, cairo_surface_get_device_scale ()
-
cairo_surface_set_device_scale, cairo_surface_set_device_scale () +
cairo_surface_set_device_scale, cairo_surface_set_device_scale ()
+
Generated by GTK-Doc V1.25
\ No newline at end of file diff -Nru cairo-1.14.6/doc/public/html/index-1.2.html cairo-1.15.10/doc/public/html/index-1.2.html --- cairo-1.14.6/doc/public/html/index-1.2.html 2015-12-09 20:45:07.000000000 +0000 +++ cairo-1.15.10/doc/public/html/index-1.2.html 2017-12-11 21:03:31.000000000 +0000 @@ -2,17 +2,17 @@ -Cairo: A Vector Graphics Library: Index of new symbols in 1.2 - +Index of new symbols in 1.2: Cairo: A Vector Graphics Library + - + - + @@ -22,158 +22,155 @@

Index of new symbols in 1.2

-
+

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 +
cairo_font_type_t, enum cairo_font_type_t

G

-
cairo_get_group_target, cairo_get_group_target () +
cairo_get_group_target, cairo_get_group_target ()

H

-
CAIRO_HAS_PDF_SURFACE, CAIRO_HAS_PDF_SURFACE +
CAIRO_HAS_PDF_SURFACE, CAIRO_HAS_PDF_SURFACE
-
CAIRO_HAS_PS_SURFACE, CAIRO_HAS_PS_SURFACE +
CAIRO_HAS_PS_SURFACE, CAIRO_HAS_PS_SURFACE
-
CAIRO_HAS_SVG_SURFACE, CAIRO_HAS_SVG_SURFACE +
CAIRO_HAS_SVG_SURFACE, CAIRO_HAS_SVG_SURFACE

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_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_font_face, cairo_scaled_font_get_font_face () +
cairo_scaled_font_get_ctm, cairo_scaled_font_get_ctm ()
-
cairo_scaled_font_get_font_matrix, cairo_scaled_font_get_font_matrix () +
cairo_scaled_font_get_font_face, cairo_scaled_font_get_font_face ()
-
cairo_scaled_font_get_font_options, cairo_scaled_font_get_font_options () +
cairo_scaled_font_get_font_matrix, cairo_scaled_font_get_font_matrix ()
-
cairo_scaled_font_get_type, cairo_scaled_font_get_type () +
cairo_scaled_font_get_font_options, cairo_scaled_font_get_font_options ()
-
cairo_scaled_font_text_extents, cairo_scaled_font_text_extents () +
cairo_scaled_font_get_type, cairo_scaled_font_get_type ()
-
cairo_set_scaled_font, cairo_set_scaled_font () +
cairo_scaled_font_text_extents, cairo_scaled_font_text_extents ()
-
cairo_surface_get_content, cairo_surface_get_content () +
cairo_set_scaled_font, cairo_set_scaled_font ()
-
cairo_surface_get_device_offset, cairo_surface_get_device_offset () +
cairo_surface_get_content, cairo_surface_get_content ()
-
cairo_surface_get_type, cairo_surface_get_type () +
cairo_surface_get_device_offset, cairo_surface_get_device_offset ()
-
cairo_surface_set_fallback_resolution, cairo_surface_set_fallback_resolution () +
cairo_surface_get_type, cairo_surface_get_type ()
-
cairo_surface_type_t, enum cairo_surface_type_t +
cairo_surface_set_fallback_resolution, cairo_surface_set_fallback_resolution ()
-
cairo_svg_get_versions, cairo_svg_get_versions () +
cairo_surface_type_t, enum cairo_surface_type_t
-
cairo_svg_surface_create, cairo_svg_surface_create () +
cairo_svg_get_versions, cairo_svg_get_versions ()
-
cairo_svg_surface_create_for_stream, cairo_svg_surface_create_for_stream () +
cairo_svg_surface_create, cairo_svg_surface_create ()
-
cairo_svg_surface_restrict_to_version, cairo_svg_surface_restrict_to_version () +
cairo_svg_surface_create_for_stream, cairo_svg_surface_create_for_stream ()
-
cairo_svg_version_t, enum cairo_svg_version_t +
cairo_svg_surface_restrict_to_version, cairo_svg_surface_restrict_to_version ()
-
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 ()
+
Generated by GTK-Doc V1.25
\ No newline at end of file diff -Nru cairo-1.14.6/doc/public/html/index-1.4.html cairo-1.15.10/doc/public/html/index-1.4.html --- cairo-1.14.6/doc/public/html/index-1.4.html 2015-12-09 20:45:07.000000000 +0000 +++ cairo-1.15.10/doc/public/html/index-1.4.html 2017-12-11 21:03:31.000000000 +0000 @@ -2,17 +2,17 @@ -Cairo: A Vector Graphics Library: Index of new symbols in 1.4 - +Index of new symbols in 1.4: Cairo: A Vector Graphics Library + - + - + @@ -22,102 +22,101 @@

Index of new symbols in 1.4

-
+

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 +
cairo_rectangle_list_t, cairo_rectangle_list_t
-
cairo_rectangle_t, cairo_rectangle_t +
cairo_rectangle_t, cairo_rectangle_t

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 ()
+
Generated by GTK-Doc V1.25
\ No newline at end of file diff -Nru cairo-1.14.6/doc/public/html/index-1.6.html cairo-1.15.10/doc/public/html/index-1.6.html --- cairo-1.14.6/doc/public/html/index-1.6.html 2015-12-09 20:45:07.000000000 +0000 +++ cairo-1.15.10/doc/public/html/index-1.6.html 2017-12-11 21:03:31.000000000 +0000 @@ -2,17 +2,17 @@ -Cairo: A Vector Graphics Library: Index of new symbols in 1.6 - +Index of new symbols in 1.6: Cairo: A Vector Graphics Library + - + - + @@ -22,86 +22,85 @@

Index of new symbols in 1.6

-
+

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 +
CAIRO_HAS_QUARTZ_FONT, CAIRO_HAS_QUARTZ_FONT
-
CAIRO_HAS_QUARTZ_SURFACE, CAIRO_HAS_QUARTZ_SURFACE +
CAIRO_HAS_QUARTZ_SURFACE, CAIRO_HAS_QUARTZ_SURFACE
-
CAIRO_HAS_XLIB_XRENDER_SURFACE, CAIRO_HAS_XLIB_XRENDER_SURFACE +
CAIRO_HAS_XLIB_XRENDER_SURFACE, CAIRO_HAS_XLIB_XRENDER_SURFACE

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_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.25
\ No newline at end of file diff -Nru cairo-1.14.6/doc/public/html/index-1.8.html cairo-1.15.10/doc/public/html/index-1.8.html --- cairo-1.14.6/doc/public/html/index-1.8.html 2015-12-09 20:45:07.000000000 +0000 +++ cairo-1.15.10/doc/public/html/index-1.8.html 2017-12-11 21:03:31.000000000 +0000 @@ -2,17 +2,17 @@ -Cairo: A Vector Graphics Library: Index of new symbols in 1.8 - +Index of new symbols in 1.8: Cairo: A Vector Graphics Library + - + - + @@ -22,107 +22,106 @@

Index of new symbols in 1.8

-
+

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

H

-
CAIRO_HAS_IMAGE_SURFACE, CAIRO_HAS_IMAGE_SURFACE +
CAIRO_HAS_IMAGE_SURFACE, CAIRO_HAS_IMAGE_SURFACE
-
CAIRO_HAS_USER_FONT, CAIRO_HAS_USER_FONT +
CAIRO_HAS_USER_FONT, CAIRO_HAS_USER_FONT
-
CAIRO_HAS_WIN32_FONT, CAIRO_HAS_WIN32_FONT +
CAIRO_HAS_WIN32_FONT, CAIRO_HAS_WIN32_FONT

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

V

-
CAIRO_VERSION_STRING, CAIRO_VERSION_STRING +
CAIRO_VERSION_STRING, CAIRO_VERSION_STRING
-
CAIRO_VERSION_STRINGIZE, CAIRO_VERSION_STRINGIZE() +
CAIRO_VERSION_STRINGIZE, CAIRO_VERSION_STRINGIZE()
+
Generated by GTK-Doc V1.25
\ No newline at end of file diff -Nru cairo-1.14.6/doc/public/html/index-all.html cairo-1.15.10/doc/public/html/index-all.html --- cairo-1.14.6/doc/public/html/index-all.html 2015-12-09 20:45:07.000000000 +0000 +++ cairo-1.15.10/doc/public/html/index-all.html 2017-12-11 21:03:31.000000000 +0000 @@ -2,17 +2,17 @@ -Cairo: A Vector Graphics Library: Index - +Index: Cairo: A Vector Graphics Library + - + - + @@ -22,1101 +22,1130 @@

Index

-
+

A

-
cairo_antialias_t, enum cairo_antialias_t +
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 ()

B

-
cairo_bool_t, cairo_bool_t +
cairo_bool_t, cairo_bool_t

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_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_observer_elapsed, cairo_device_observer_elapsed () +
cairo_device_observer_elapsed, cairo_device_observer_elapsed ()
-
cairo_device_observer_fill_elapsed, cairo_device_observer_fill_elapsed () +
cairo_device_observer_fill_elapsed, cairo_device_observer_fill_elapsed ()
-
cairo_device_observer_glyphs_elapsed, cairo_device_observer_glyphs_elapsed () +
cairo_device_observer_glyphs_elapsed, cairo_device_observer_glyphs_elapsed ()
-
cairo_device_observer_mask_elapsed, cairo_device_observer_mask_elapsed () +
cairo_device_observer_mask_elapsed, cairo_device_observer_mask_elapsed ()
-
cairo_device_observer_paint_elapsed, cairo_device_observer_paint_elapsed () +
cairo_device_observer_paint_elapsed, cairo_device_observer_paint_elapsed ()
-
cairo_device_observer_print, cairo_device_observer_print () +
cairo_device_observer_print, cairo_device_observer_print ()
-
cairo_device_observer_stroke_elapsed, cairo_device_observer_stroke_elapsed () +
cairo_device_observer_stroke_elapsed, cairo_device_observer_stroke_elapsed ()
-
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 +
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 +
cairo_device_type_t, enum cairo_device_type_t

E

-
cairo_extend_t, enum cairo_extend_t +
cairo_extend_t, enum cairo_extend_t

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_fill_rule_t, enum cairo_fill_rule_t
-
cairo_filter_t, enum cairo_filter_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_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_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 +
cairo_font_options_t, cairo_font_options_t
-
cairo_font_slant_t, enum cairo_font_slant_t +
cairo_font_slant_t, enum cairo_font_slant_t
-
cairo_font_type_t, enum cairo_font_type_t +
cairo_font_type_t, enum cairo_font_type_t
-
cairo_font_weight_t, enum cairo_font_weight_t +
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_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 +
cairo_ft_synthesize_t, enum cairo_ft_synthesize_t

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

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 +
CAIRO_HAS_FC_FONT, CAIRO_HAS_FC_FONT
-
CAIRO_HAS_FT_FONT, CAIRO_HAS_FT_FONT +
CAIRO_HAS_FT_FONT, CAIRO_HAS_FT_FONT
-
CAIRO_HAS_IMAGE_SURFACE, CAIRO_HAS_IMAGE_SURFACE +
CAIRO_HAS_IMAGE_SURFACE, CAIRO_HAS_IMAGE_SURFACE
-
CAIRO_HAS_MIME_SURFACE, CAIRO_HAS_MIME_SURFACE +
CAIRO_HAS_MIME_SURFACE, CAIRO_HAS_MIME_SURFACE
-
CAIRO_HAS_PDF_SURFACE, CAIRO_HAS_PDF_SURFACE +
CAIRO_HAS_PDF_SURFACE, CAIRO_HAS_PDF_SURFACE
-
CAIRO_HAS_PNG_FUNCTIONS, CAIRO_HAS_PNG_FUNCTIONS +
CAIRO_HAS_PNG_FUNCTIONS, CAIRO_HAS_PNG_FUNCTIONS
-
CAIRO_HAS_PS_SURFACE, CAIRO_HAS_PS_SURFACE +
CAIRO_HAS_PS_SURFACE, CAIRO_HAS_PS_SURFACE
-
CAIRO_HAS_QUARTZ_FONT, CAIRO_HAS_QUARTZ_FONT +
CAIRO_HAS_QUARTZ_FONT, CAIRO_HAS_QUARTZ_FONT
-
CAIRO_HAS_QUARTZ_SURFACE, CAIRO_HAS_QUARTZ_SURFACE +
CAIRO_HAS_QUARTZ_SURFACE, CAIRO_HAS_QUARTZ_SURFACE
-
CAIRO_HAS_RECORDING_SURFACE, CAIRO_HAS_RECORDING_SURFACE +
CAIRO_HAS_RECORDING_SURFACE, CAIRO_HAS_RECORDING_SURFACE
-
CAIRO_HAS_SCRIPT_SURFACE, CAIRO_HAS_SCRIPT_SURFACE +
CAIRO_HAS_SCRIPT_SURFACE, CAIRO_HAS_SCRIPT_SURFACE
-
CAIRO_HAS_SVG_SURFACE, CAIRO_HAS_SVG_SURFACE +
CAIRO_HAS_SVG_SURFACE, CAIRO_HAS_SVG_SURFACE
-
CAIRO_HAS_USER_FONT, CAIRO_HAS_USER_FONT +
CAIRO_HAS_USER_FONT, CAIRO_HAS_USER_FONT
-
CAIRO_HAS_WIN32_FONT, CAIRO_HAS_WIN32_FONT +
CAIRO_HAS_WIN32_FONT, CAIRO_HAS_WIN32_FONT
-
CAIRO_HAS_WIN32_SURFACE, CAIRO_HAS_WIN32_SURFACE +
CAIRO_HAS_WIN32_SURFACE, CAIRO_HAS_WIN32_SURFACE
-
CAIRO_HAS_XCB_SHM_FUNCTIONS, CAIRO_HAS_XCB_SHM_FUNCTIONS +
CAIRO_HAS_XCB_SHM_FUNCTIONS, CAIRO_HAS_XCB_SHM_FUNCTIONS
-
CAIRO_HAS_XCB_SURFACE, CAIRO_HAS_XCB_SURFACE +
CAIRO_HAS_XCB_SURFACE, CAIRO_HAS_XCB_SURFACE
-
CAIRO_HAS_XLIB_SURFACE, CAIRO_HAS_XLIB_SURFACE +
CAIRO_HAS_XLIB_SURFACE, CAIRO_HAS_XLIB_SURFACE
-
CAIRO_HAS_XLIB_XRENDER_SURFACE, CAIRO_HAS_XLIB_XRENDER_SURFACE +
CAIRO_HAS_XLIB_XRENDER_SURFACE, CAIRO_HAS_XLIB_XRENDER_SURFACE
-
cairo_hint_metrics_t, enum cairo_hint_metrics_t +
cairo_hint_metrics_t, enum cairo_hint_metrics_t
-
cairo_hint_style_t, enum cairo_hint_style_t +
cairo_hint_style_t, enum cairo_hint_style_t

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

L

-
cairo_line_cap_t, enum cairo_line_cap_t +
cairo_line_cap_t, enum cairo_line_cap_t
-
cairo_line_join_t, enum cairo_line_join_t +
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_matrix_init, cairo_matrix_init () +
+
cairo_matrix_init_identity, cairo_matrix_init_identity ()
-
cairo_mask_surface, cairo_mask_surface () +
cairo_matrix_init_rotate, cairo_matrix_init_rotate ()
-
cairo_matrix_init, cairo_matrix_init () +
cairo_matrix_init_scale, cairo_matrix_init_scale ()
-
cairo_matrix_init_identity, cairo_matrix_init_identity () +
cairo_matrix_init_translate, cairo_matrix_init_translate ()
-
cairo_matrix_init_rotate, cairo_matrix_init_rotate () +
cairo_matrix_invert, cairo_matrix_invert ()
-
cairo_matrix_init_scale, cairo_matrix_init_scale () +
cairo_matrix_multiply, cairo_matrix_multiply ()
-
cairo_matrix_init_translate, cairo_matrix_init_translate () +
cairo_matrix_rotate, cairo_matrix_rotate ()
-
cairo_matrix_invert, cairo_matrix_invert () +
cairo_matrix_scale, cairo_matrix_scale ()
-
cairo_matrix_multiply, cairo_matrix_multiply () +
cairo_matrix_t, cairo_matrix_t
-
cairo_matrix_rotate, cairo_matrix_rotate () +
cairo_matrix_transform_distance, cairo_matrix_transform_distance ()
-
cairo_matrix_scale, cairo_matrix_scale () +
cairo_matrix_transform_point, cairo_matrix_transform_point ()
-
cairo_matrix_t, cairo_matrix_t +
cairo_matrix_translate, cairo_matrix_translate ()
-
cairo_matrix_transform_distance, cairo_matrix_transform_distance () +
cairo_mesh_pattern_begin_patch, cairo_mesh_pattern_begin_patch ()
-
cairo_matrix_transform_point, cairo_matrix_transform_point () +
cairo_mesh_pattern_curve_to, cairo_mesh_pattern_curve_to ()
-
cairo_matrix_translate, cairo_matrix_translate () +
cairo_mesh_pattern_end_patch, cairo_mesh_pattern_end_patch ()
-
cairo_mesh_pattern_begin_patch, cairo_mesh_pattern_begin_patch () +
cairo_mesh_pattern_get_control_point, cairo_mesh_pattern_get_control_point ()
-
cairo_mesh_pattern_curve_to, cairo_mesh_pattern_curve_to () +
cairo_mesh_pattern_get_corner_color_rgba, cairo_mesh_pattern_get_corner_color_rgba ()
-
cairo_mesh_pattern_end_patch, cairo_mesh_pattern_end_patch () +
cairo_mesh_pattern_get_patch_count, cairo_mesh_pattern_get_patch_count ()
-
cairo_mesh_pattern_get_control_point, cairo_mesh_pattern_get_control_point () +
cairo_mesh_pattern_get_path, cairo_mesh_pattern_get_path ()
-
cairo_mesh_pattern_get_corner_color_rgba, cairo_mesh_pattern_get_corner_color_rgba () +
cairo_mesh_pattern_line_to, cairo_mesh_pattern_line_to ()
-
cairo_mesh_pattern_get_patch_count, cairo_mesh_pattern_get_patch_count () +
cairo_mesh_pattern_move_to, cairo_mesh_pattern_move_to ()
-
cairo_mesh_pattern_get_path, cairo_mesh_pattern_get_path () +
cairo_mesh_pattern_set_control_point, cairo_mesh_pattern_set_control_point ()
-
cairo_mesh_pattern_line_to, cairo_mesh_pattern_line_to () +
cairo_mesh_pattern_set_corner_color_rgb, cairo_mesh_pattern_set_corner_color_rgb ()
-
cairo_mesh_pattern_move_to, cairo_mesh_pattern_move_to () +
cairo_mesh_pattern_set_corner_color_rgba, cairo_mesh_pattern_set_corner_color_rgba ()
-
cairo_mesh_pattern_set_control_point, cairo_mesh_pattern_set_control_point () +
CAIRO_MIME_TYPE_CCITT_FAX, CAIRO_MIME_TYPE_CCITT_FAX
-
cairo_mesh_pattern_set_corner_color_rgb, cairo_mesh_pattern_set_corner_color_rgb () +
CAIRO_MIME_TYPE_CCITT_FAX_PARAMS, CAIRO_MIME_TYPE_CCITT_FAX_PARAMS
-
cairo_mesh_pattern_set_corner_color_rgba, cairo_mesh_pattern_set_corner_color_rgba () +
CAIRO_MIME_TYPE_EPS, CAIRO_MIME_TYPE_EPS
-
CAIRO_MIME_TYPE_JBIG2, CAIRO_MIME_TYPE_JBIG2 +
CAIRO_MIME_TYPE_EPS_PARAMS, CAIRO_MIME_TYPE_EPS_PARAMS
-
CAIRO_MIME_TYPE_JBIG2_GLOBAL, CAIRO_MIME_TYPE_JBIG2_GLOBAL +
CAIRO_MIME_TYPE_JBIG2, CAIRO_MIME_TYPE_JBIG2
-
CAIRO_MIME_TYPE_JBIG2_GLOBAL_ID, CAIRO_MIME_TYPE_JBIG2_GLOBAL_ID +
CAIRO_MIME_TYPE_JBIG2_GLOBAL, CAIRO_MIME_TYPE_JBIG2_GLOBAL
-
CAIRO_MIME_TYPE_JP2, CAIRO_MIME_TYPE_JP2 +
CAIRO_MIME_TYPE_JBIG2_GLOBAL_ID, CAIRO_MIME_TYPE_JBIG2_GLOBAL_ID
-
CAIRO_MIME_TYPE_JPEG, CAIRO_MIME_TYPE_JPEG +
CAIRO_MIME_TYPE_JP2, CAIRO_MIME_TYPE_JP2
-
CAIRO_MIME_TYPE_PNG, CAIRO_MIME_TYPE_PNG +
CAIRO_MIME_TYPE_JPEG, CAIRO_MIME_TYPE_JPEG
-
CAIRO_MIME_TYPE_UNIQUE_ID, CAIRO_MIME_TYPE_UNIQUE_ID +
CAIRO_MIME_TYPE_PNG, CAIRO_MIME_TYPE_PNG
-
CAIRO_MIME_TYPE_URI, CAIRO_MIME_TYPE_URI +
CAIRO_MIME_TYPE_UNIQUE_ID, CAIRO_MIME_TYPE_UNIQUE_ID
-
cairo_move_to, cairo_move_to () +
CAIRO_MIME_TYPE_URI, CAIRO_MIME_TYPE_URI +
+
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 ()

O

-
cairo_operator_t, enum cairo_operator_t +
cairo_operator_t, enum cairo_operator_t

P

-
cairo_paint, cairo_paint () +
cairo_paint, cairo_paint () +
+
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_paint_with_alpha, cairo_paint_with_alpha () +
cairo_path_destroy, cairo_path_destroy ()
-
cairo_path_data_t, union cairo_path_data_t +
cairo_path_extents, cairo_path_extents ()
-
cairo_path_data_type_t, enum cairo_path_data_type_t +
cairo_path_t, cairo_path_t
-
cairo_path_destroy, cairo_path_destroy () +
cairo_pattern_add_color_stop_rgb, cairo_pattern_add_color_stop_rgb ()
-
cairo_path_extents, cairo_path_extents () +
cairo_pattern_add_color_stop_rgba, cairo_pattern_add_color_stop_rgba ()
-
cairo_path_t, cairo_path_t +
cairo_pattern_create_for_surface, cairo_pattern_create_for_surface ()
-
cairo_pattern_add_color_stop_rgb, cairo_pattern_add_color_stop_rgb () +
cairo_pattern_create_linear, cairo_pattern_create_linear ()
-
cairo_pattern_add_color_stop_rgba, cairo_pattern_add_color_stop_rgba () +
cairo_pattern_create_mesh, cairo_pattern_create_mesh ()
-
cairo_pattern_create_for_surface, cairo_pattern_create_for_surface () +
cairo_pattern_create_radial, cairo_pattern_create_radial ()
-
cairo_pattern_create_linear, cairo_pattern_create_linear () +
cairo_pattern_create_raster_source, cairo_pattern_create_raster_source ()
-
cairo_pattern_create_mesh, cairo_pattern_create_mesh () +
cairo_pattern_create_rgb, cairo_pattern_create_rgb ()
-
cairo_pattern_create_radial, cairo_pattern_create_radial () +
cairo_pattern_create_rgba, cairo_pattern_create_rgba ()
-
cairo_pattern_create_raster_source, cairo_pattern_create_raster_source () +
cairo_pattern_destroy, cairo_pattern_destroy ()
-
cairo_pattern_create_rgb, cairo_pattern_create_rgb () +
cairo_pattern_get_color_stop_count, cairo_pattern_get_color_stop_count ()
-
cairo_pattern_create_rgba, cairo_pattern_create_rgba () +
cairo_pattern_get_color_stop_rgba, cairo_pattern_get_color_stop_rgba ()
-
cairo_pattern_destroy, cairo_pattern_destroy () +
cairo_pattern_get_extend, cairo_pattern_get_extend ()
-
cairo_pattern_get_color_stop_count, cairo_pattern_get_color_stop_count () +
cairo_pattern_get_filter, cairo_pattern_get_filter ()
-
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_extend, cairo_pattern_get_extend () +
cairo_pattern_get_matrix, cairo_pattern_get_matrix ()
-
cairo_pattern_get_filter, cairo_pattern_get_filter () +
cairo_pattern_get_radial_circles, cairo_pattern_get_radial_circles ()
-
cairo_pattern_get_linear_points, cairo_pattern_get_linear_points () +
cairo_pattern_get_reference_count, cairo_pattern_get_reference_count ()
-
cairo_pattern_get_matrix, cairo_pattern_get_matrix () +
cairo_pattern_get_rgba, cairo_pattern_get_rgba ()
-
cairo_pattern_get_radial_circles, cairo_pattern_get_radial_circles () +
cairo_pattern_get_surface, cairo_pattern_get_surface ()
-
cairo_pattern_get_reference_count, cairo_pattern_get_reference_count () +
cairo_pattern_get_type, cairo_pattern_get_type ()
-
cairo_pattern_get_rgba, cairo_pattern_get_rgba () +
cairo_pattern_get_user_data, cairo_pattern_get_user_data ()
-
cairo_pattern_get_surface, cairo_pattern_get_surface () +
cairo_pattern_reference, cairo_pattern_reference ()
-
cairo_pattern_get_type, cairo_pattern_get_type () +
cairo_pattern_set_extend, cairo_pattern_set_extend ()
-
cairo_pattern_get_user_data, cairo_pattern_get_user_data () +
cairo_pattern_set_filter, cairo_pattern_set_filter ()
-
cairo_pattern_reference, cairo_pattern_reference () +
cairo_pattern_set_matrix, cairo_pattern_set_matrix ()
-
cairo_pattern_set_extend, cairo_pattern_set_extend () +
cairo_pattern_set_user_data, cairo_pattern_set_user_data ()
-
cairo_pattern_set_filter, cairo_pattern_set_filter () +
cairo_pattern_status, cairo_pattern_status ()
-
cairo_pattern_set_matrix, cairo_pattern_set_matrix () +
cairo_pattern_t, cairo_pattern_t
-
cairo_pattern_set_user_data, cairo_pattern_set_user_data () +
cairo_pattern_type_t, enum cairo_pattern_type_t
-
cairo_pattern_status, cairo_pattern_status () +
cairo_pdf_get_versions, cairo_pdf_get_versions ()
-
cairo_pattern_t, cairo_pattern_t +
cairo_pdf_metadata_t, enum cairo_pdf_metadata_t
-
cairo_pattern_type_t, enum cairo_pattern_type_t +
cairo_pdf_outline_flags_t, enum cairo_pdf_outline_flags_t
-
cairo_pdf_get_versions, cairo_pdf_get_versions () +
CAIRO_PDF_OUTLINE_ROOT, CAIRO_PDF_OUTLINE_ROOT
-
cairo_pdf_surface_create, cairo_pdf_surface_create () +
cairo_pdf_surface_add_outline, cairo_pdf_surface_add_outline ()
-
cairo_pdf_surface_create_for_stream, cairo_pdf_surface_create_for_stream () +
cairo_pdf_surface_create, cairo_pdf_surface_create ()
-
cairo_pdf_surface_restrict_to_version, cairo_pdf_surface_restrict_to_version () +
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_restrict_to_version, cairo_pdf_surface_restrict_to_version ()
-
cairo_pdf_version_t, enum cairo_pdf_version_t +
cairo_pdf_surface_set_metadata, cairo_pdf_surface_set_metadata ()
-
cairo_pdf_version_to_string, cairo_pdf_version_to_string () +
cairo_pdf_surface_set_page_label, cairo_pdf_surface_set_page_label ()
-
cairo_pop_group, cairo_pop_group () +
cairo_pdf_surface_set_size, cairo_pdf_surface_set_size ()
-
cairo_pop_group_to_source, cairo_pop_group_to_source () +
cairo_pdf_surface_set_thumbnail_size, cairo_pdf_surface_set_thumbnail_size ()
-
cairo_ps_get_levels, cairo_ps_get_levels () +
cairo_pdf_version_t, enum cairo_pdf_version_t
-
cairo_ps_level_t, enum cairo_ps_level_t +
cairo_pdf_version_to_string, cairo_pdf_version_to_string ()
-
cairo_ps_level_to_string, cairo_ps_level_to_string () +
cairo_pop_group, cairo_pop_group ()
-
cairo_ps_surface_create, cairo_ps_surface_create () +
cairo_pop_group_to_source, cairo_pop_group_to_source ()
-
cairo_ps_surface_create_for_stream, cairo_ps_surface_create_for_stream () +
cairo_ps_get_levels, cairo_ps_get_levels ()
-
cairo_ps_surface_dsc_begin_page_setup, cairo_ps_surface_dsc_begin_page_setup () +
cairo_ps_level_t, enum cairo_ps_level_t
-
cairo_ps_surface_dsc_begin_setup, cairo_ps_surface_dsc_begin_setup () +
cairo_ps_level_to_string, cairo_ps_level_to_string ()
-
cairo_ps_surface_dsc_comment, cairo_ps_surface_dsc_comment () +
cairo_ps_surface_create, cairo_ps_surface_create ()
-
cairo_ps_surface_get_eps, cairo_ps_surface_get_eps () +
cairo_ps_surface_create_for_stream, cairo_ps_surface_create_for_stream ()
-
cairo_ps_surface_restrict_to_level, cairo_ps_surface_restrict_to_level () +
cairo_ps_surface_dsc_begin_page_setup, cairo_ps_surface_dsc_begin_page_setup ()
-
cairo_ps_surface_set_eps, cairo_ps_surface_set_eps () +
cairo_ps_surface_dsc_begin_setup, cairo_ps_surface_dsc_begin_setup ()
-
cairo_ps_surface_set_size, cairo_ps_surface_set_size () +
cairo_ps_surface_dsc_comment, cairo_ps_surface_dsc_comment ()
-
cairo_push_group, cairo_push_group () +
cairo_ps_surface_get_eps, cairo_ps_surface_get_eps ()
-
cairo_push_group_with_content, cairo_push_group_with_content () +
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_size, cairo_ps_surface_set_size () +
+
cairo_push_group, cairo_push_group () +
+
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_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_list_t, cairo_rectangle_list_t
-
cairo_rectangle_t, cairo_rectangle_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_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_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_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_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_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_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_for_rectangle, cairo_surface_create_for_rectangle ()
-
cairo_surface_create_similar, cairo_surface_create_similar () +
cairo_surface_create_similar, cairo_surface_create_similar ()
-
cairo_surface_create_similar_image, cairo_surface_create_similar_image () +
cairo_surface_create_similar_image, cairo_surface_create_similar_image ()
-
cairo_surface_destroy, cairo_surface_destroy () +
cairo_surface_destroy, cairo_surface_destroy ()
-
cairo_surface_finish, cairo_surface_finish () +
cairo_surface_finish, cairo_surface_finish ()
-
cairo_surface_flush, cairo_surface_flush () +
cairo_surface_flush, cairo_surface_flush ()
-
cairo_surface_get_content, cairo_surface_get_content () +
cairo_surface_get_content, cairo_surface_get_content ()
-
cairo_surface_get_device, cairo_surface_get_device () +
cairo_surface_get_device, cairo_surface_get_device ()
-
cairo_surface_get_device_offset, cairo_surface_get_device_offset () +
cairo_surface_get_device_offset, cairo_surface_get_device_offset ()
-
cairo_surface_get_device_scale, cairo_surface_get_device_scale () +
cairo_surface_get_device_scale, cairo_surface_get_device_scale ()
-
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_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_t, cairo_surface_t
-
cairo_surface_type_t, enum cairo_surface_type_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_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 ()

T

-
cairo_t, cairo_t +
cairo_t, cairo_t +
+
cairo_tag_begin, cairo_tag_begin () +
+
CAIRO_TAG_DEST, CAIRO_TAG_DEST +
+
cairo_tag_end, cairo_tag_end () +
+
CAIRO_TAG_LINK, CAIRO_TAG_LINK
-
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_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_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_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 ()

U

-
cairo_user_data_key_t, cairo_user_data_key_t +
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() +
CAIRO_VERSION_ENCODE, CAIRO_VERSION_ENCODE()
-
CAIRO_VERSION_MAJOR, CAIRO_VERSION_MAJOR +
CAIRO_VERSION_MAJOR, CAIRO_VERSION_MAJOR
-
CAIRO_VERSION_MICRO, CAIRO_VERSION_MICRO +
CAIRO_VERSION_MICRO, CAIRO_VERSION_MICRO
-
CAIRO_VERSION_MINOR, CAIRO_VERSION_MINOR +
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() +
CAIRO_VERSION_STRINGIZE, CAIRO_VERSION_STRINGIZE()

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 ()
+
Generated by GTK-Doc V1.25
\ No newline at end of file diff -Nru cairo-1.14.6/doc/public/html/index.html cairo-1.15.10/doc/public/html/index.html --- cairo-1.14.6/doc/public/html/index.html 2015-12-09 20:45:07.000000000 +0000 +++ cairo-1.15.10/doc/public/html/index.html 2017-12-11 21:03:31.000000000 +0000 @@ -3,10 +3,10 @@ Cairo: A Vector Graphics Library: Cairo: A Vector Graphics Library - + - + @@ -14,7 +14,7 @@
-

for Cairo 1.14.6 +

for Cairo 1.15.10


@@ -43,6 +43,9 @@
Raster Sources — Supplying arbitrary image data
+
+Tags and Links — Hyperlinks and document structure +
Fonts
@@ -152,7 +155,6 @@
+
Generated by GTK-Doc V1.25 \ No newline at end of file diff -Nru cairo-1.14.6/doc/public/html/index.sgml cairo-1.15.10/doc/public/html/index.sgml --- cairo-1.14.6/doc/public/html/index.sgml 2015-12-09 20:45:07.000000000 +0000 +++ cairo-1.15.10/doc/public/html/index.sgml 1970-01-01 00:00:00.000000000 +0000 @@ -1,742 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff -Nru cairo-1.14.6/doc/public/html/language-bindings.html cairo-1.15.10/doc/public/html/language-bindings.html --- cairo-1.14.6/doc/public/html/language-bindings.html 2015-12-09 20:45:07.000000000 +0000 +++ cairo-1.15.10/doc/public/html/language-bindings.html 2017-12-11 21:03:31.000000000 +0000 @@ -2,17 +2,17 @@ -Cairo: A Vector Graphics Library: Appendix A. Creating a language binding for cairo - +Appendix A. Creating a language binding for cairo: Cairo: A Vector Graphics Library + - + - + @@ -67,7 +67,6 @@ +
Generated by GTK-Doc V1.25 \ No newline at end of file Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/doc/public/html/left-insensitive.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/doc/public/html/left-insensitive.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/doc/public/html/left.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/doc/public/html/left.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/doc/public/html/right.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/doc/public/html/right.png differ diff -Nru cairo-1.14.6/doc/public/html/style.css cairo-1.15.10/doc/public/html/style.css --- cairo-1.14.6/doc/public/html/style.css 2015-12-09 20:45:07.000000000 +0000 +++ cairo-1.15.10/doc/public/html/style.css 2017-12-11 21:03:31.000000000 +0000 @@ -30,127 +30,6 @@ vertical-align: top; } -@media screen { - sup a.footnote - { - 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] - { - display: inline-block; - position: relative; - top:-5em; - } - /* this seems to be a bug in the xsl style sheets when generating indexes */ - div.index div.index - { - top: 0em; - } - /* make space for the fixed navigation bar and add space at the bottom so that - * link targets appear somewhat close to top - */ - body - { - padding-top: 5em; - padding-bottom: 500px; - max-width: 60em; - } - p - { - max-width: 60em; - } - /* style and size the navigation bar */ - table.navigation#top - { - position: fixed; - background: #e2e2e2; - border-bottom: solid 1px #babdb6; - margin-top: 0; - margin-bottom: 0; - top: 0; - left: 0; - height: 3em; - z-index: 10; - } - .navigation a, .navigation a:visited - { - /* tango:sky blue 3 */ - color: #204a87; - } - .navigation a:hover - { - /* tango:sky blue 2 */ - color: #3465a4; - } - td.shortcuts - { - /* 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 { - visibility: collapse; - display: none; - } - div.titlepage table.navigation { - visibility: visible; - display: table; - background: #e2e2e2; - border: solid 1px #babdb6; - margin-top: 0; - margin-bottom: 0; - top: 0; - left: 0; - height: 3em; - } -} - -.navigation .title -{ - font-size: 120%; -} - div.gallery-float { float: left; @@ -181,7 +60,7 @@ div.informaltable table { border-collapse: separate; - border-spacing: 20px 3px; + border-spacing: 1em 0.3em; border: none; } @@ -239,6 +118,11 @@ color: #729fcf; } +td p +{ + margin: 0.25em; +} + div.table table { border-collapse: collapse; @@ -264,6 +148,8 @@ h4 { color: #555753; + margin-top: 1em; + margin-bottom: 1em; } hr @@ -282,17 +168,16 @@ padding-bottom: 0.25em; } -dl.toc > dd > dl > dt +dl.toc > dt { padding-top: 0.25em; padding-bottom: 0.25em; + font-weight: bold; } -dl.toc > dt +dl.toc > dl { - padding-top: 1em; padding-bottom: 0.5em; - font-weight: bold; } .parameter @@ -404,21 +289,28 @@ font-weight: normal; } +acronym,abbr +{ + border-bottom: 1px dotted gray; +} + /* code listings */ -.listing_code .programlisting .cbracket { color: #a40000; } /* tango: scarlet red 3 */ -.listing_code .programlisting .comment { color: #a1a39d; } /* tango: aluminium 4 */ -.listing_code .programlisting .function { color: #000000; font-weight: bold; } -.listing_code .programlisting .function a { color: #11326b; font-weight: bold; } /* tango: sky blue 4 */ -.listing_code .programlisting .keyword { color: #4e9a06; } /* tango: chameleon 3 */ +.listing_code .programlisting .normal, +.listing_code .programlisting .normal a, +.listing_code .programlisting .number, +.listing_code .programlisting .cbracket, +.listing_code .programlisting .symbol { color: #555753; } +.listing_code .programlisting .comment, .listing_code .programlisting .linenum { color: #babdb6; } /* tango: aluminium 3 */ -.listing_code .programlisting .normal { color: #000000; } -.listing_code .programlisting .number { color: #75507b; } /* tango: plum 2 */ +.listing_code .programlisting .function, +.listing_code .programlisting .function a, .listing_code .programlisting .preproc { color: #204a87; } /* tango: sky blue 3 */ -.listing_code .programlisting .string { color: #c17d11; } /* tango: chocolate 2 */ -.listing_code .programlisting .type { color: #000000; } -.listing_code .programlisting .type a { color: #11326b; } /* tango: sky blue 4 */ -.listing_code .programlisting .symbol { color: #ce5c00; } /* tango: orange 3 */ +.listing_code .programlisting .string { color: #ad7fa8; } /* tango: plum */ +.listing_code .programlisting .keyword, +.listing_code .programlisting .usertype, +.listing_code .programlisting .type, +.listing_code .programlisting .type a { color: #4e9a06; } /* tango: chameleon 3 */ .listing_frame { /* tango:sky blue 1 */ @@ -433,11 +325,6 @@ 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); @@ -459,3 +346,134 @@ margin: 0px; } +@media screen { + /* these have a as a first child, but since there are no parent selectors + * we can't use that. */ + a.footnote + { + 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] + { + display: inline-block; + position: relative; + top:-5em; + } + /* this seems to be a bug in the xsl style sheets when generating indexes */ + div.index div.index + { + top: 0em; + } + /* make space for the fixed navigation bar and add space at the bottom so that + * link targets appear somewhat close to top + */ + body + { + padding-top: 2.5em; + padding-bottom: 500px; + max-width: 60em; + } + p + { + max-width: 60em; + } + /* style and size the navigation bar */ + table.navigation#top + { + position: fixed; + background: #e2e2e2; + border-bottom: solid 1px #babdb6; + border-spacing: 5px; + margin-top: 0; + margin-bottom: 0; + top: 0; + left: 0; + z-index: 10; + } + table.navigation#top td + { + padding-left: 6px; + padding-right: 6px; + } + .navigation a, .navigation a:visited + { + /* tango:sky blue 3 */ + color: #204a87; + } + .navigation a:hover + { + /* tango:sky blue 2 */ + color: #3465a4; + } + td.shortcuts + { + /* tango:sky blue 2 */ + color: #3465a4; + font-size: 80%; + white-space: nowrap; + } + td.shortcuts .dim + { + color: #babdb6; + } + .navigation .title + { + font-size: 80%; + max-width: none; + margin: 0px; + font-weight: normal; + } +} +@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; } + .listing_lines { display: none; } +} +@media print { + table.navigation { + visibility: collapse; + display: none; + } + div.titlepage table.navigation { + visibility: visible; + display: table; + background: #e2e2e2; + border: solid 1px #babdb6; + margin-top: 0; + margin-bottom: 0; + top: 0; + left: 0; + height: 3em; + } +} + Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/doc/public/html/up-insensitive.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/doc/public/html/up-insensitive.png differ diff -Nru cairo-1.14.6/doc/public/Makefile.in cairo-1.15.10/doc/public/Makefile.in --- cairo-1.14.6/doc/public/Makefile.in 2015-12-09 20:41:44.000000000 +0000 +++ cairo-1.15.10/doc/public/Makefile.in 2017-12-11 21:03:10.000000000 +0000 @@ -1,7 +1,7 @@ -# Makefile.in generated by automake 1.14.1 from Makefile.am. +# Makefile.in generated by automake 1.15 from Makefile.am. # @configure_input@ -# Copyright (C) 1994-2013 Free Software Foundation, Inc. +# Copyright (C) 1994-2014 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -87,7 +87,17 @@ # Everything below here is generic # #################################### VPATH = @srcdir@ -am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' +am__is_gnu_make = { \ + if test -z '$(MAKELEVEL)'; then \ + false; \ + elif test -n '$(MAKE_HOST)'; then \ + true; \ + elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ + true; \ + else \ + false; \ + fi; \ +} am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ @@ -150,11 +160,6 @@ POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ -DIST_COMMON = $(top_srcdir)/build/Makefile.am.common \ - $(top_srcdir)/src/Makefile.am.features \ - $(top_srcdir)/src/Makefile.sources \ - $(top_srcdir)/build/Makefile.am.gtk-doc $(srcdir)/Makefile.in \ - $(srcdir)/Makefile.am $(top_srcdir)/build/test-driver README EXTRA_PROGRAMS = check_PROGRAMS = @CAIRO_HAS_XLIB_SURFACE_TRUE@am__append_1 = $(cairo_xlib_headers) @@ -252,97 +257,102 @@ @CAIRO_HAS_GLESV2_SURFACE_TRUE@am__append_93 = $(cairo_glesv2_cxx_sources) @CAIRO_HAS_GLESV2_SURFACE_TRUE@am__append_94 = $(cairo_glesv2_sources) @CAIRO_HAS_GLESV2_SURFACE_TRUE@am__append_95 = cairo-glesv2.pc -@CAIRO_HAS_COGL_SURFACE_TRUE@am__append_96 = $(cairo_cogl_headers) -@CAIRO_HAS_COGL_SURFACE_TRUE@am__append_97 = $(cairo_cogl_private) -@CAIRO_HAS_COGL_SURFACE_TRUE@am__append_98 = $(cairo_cogl_cxx_sources) -@CAIRO_HAS_COGL_SURFACE_TRUE@am__append_99 = $(cairo_cogl_sources) -@CAIRO_HAS_COGL_SURFACE_TRUE@am__append_100 = cairo-cogl.pc -@CAIRO_HAS_DIRECTFB_SURFACE_TRUE@am__append_101 = $(cairo_directfb_headers) -@CAIRO_HAS_DIRECTFB_SURFACE_TRUE@am__append_102 = $(cairo_directfb_private) -@CAIRO_HAS_DIRECTFB_SURFACE_TRUE@am__append_103 = $(cairo_directfb_cxx_sources) -@CAIRO_HAS_DIRECTFB_SURFACE_TRUE@am__append_104 = $(cairo_directfb_sources) -@CAIRO_HAS_DIRECTFB_SURFACE_TRUE@am__append_105 = cairo-directfb.pc -@CAIRO_HAS_VG_SURFACE_TRUE@am__append_106 = $(cairo_vg_headers) -@CAIRO_HAS_VG_SURFACE_TRUE@am__append_107 = $(cairo_vg_private) -@CAIRO_HAS_VG_SURFACE_TRUE@am__append_108 = $(cairo_vg_cxx_sources) -@CAIRO_HAS_VG_SURFACE_TRUE@am__append_109 = $(cairo_vg_sources) -@CAIRO_HAS_VG_SURFACE_TRUE@am__append_110 = cairo-vg.pc -@CAIRO_HAS_EGL_FUNCTIONS_TRUE@am__append_111 = $(cairo_egl_headers) -@CAIRO_HAS_EGL_FUNCTIONS_TRUE@am__append_112 = $(cairo_egl_private) -@CAIRO_HAS_EGL_FUNCTIONS_TRUE@am__append_113 = $(cairo_egl_cxx_sources) -@CAIRO_HAS_EGL_FUNCTIONS_TRUE@am__append_114 = $(cairo_egl_sources) -@CAIRO_HAS_EGL_FUNCTIONS_TRUE@am__append_115 = cairo-egl.pc -@CAIRO_HAS_GLX_FUNCTIONS_TRUE@am__append_116 = $(cairo_glx_headers) -@CAIRO_HAS_GLX_FUNCTIONS_TRUE@am__append_117 = $(cairo_glx_private) -@CAIRO_HAS_GLX_FUNCTIONS_TRUE@am__append_118 = $(cairo_glx_cxx_sources) -@CAIRO_HAS_GLX_FUNCTIONS_TRUE@am__append_119 = $(cairo_glx_sources) -@CAIRO_HAS_GLX_FUNCTIONS_TRUE@am__append_120 = cairo-glx.pc -@CAIRO_HAS_WGL_FUNCTIONS_TRUE@am__append_121 = $(cairo_wgl_headers) -@CAIRO_HAS_WGL_FUNCTIONS_TRUE@am__append_122 = $(cairo_wgl_private) -@CAIRO_HAS_WGL_FUNCTIONS_TRUE@am__append_123 = $(cairo_wgl_cxx_sources) -@CAIRO_HAS_WGL_FUNCTIONS_TRUE@am__append_124 = $(cairo_wgl_sources) -@CAIRO_HAS_WGL_FUNCTIONS_TRUE@am__append_125 = cairo-wgl.pc -@CAIRO_HAS_SCRIPT_SURFACE_TRUE@am__append_126 = $(cairo_script_headers) -@CAIRO_HAS_SCRIPT_SURFACE_TRUE@am__append_127 = $(cairo_script_private) -@CAIRO_HAS_SCRIPT_SURFACE_TRUE@am__append_128 = $(cairo_script_cxx_sources) -@CAIRO_HAS_SCRIPT_SURFACE_TRUE@am__append_129 = $(cairo_script_sources) -@CAIRO_HAS_SCRIPT_SURFACE_TRUE@am__append_130 = cairo-script.pc -@CAIRO_HAS_FT_FONT_TRUE@am__append_131 = $(cairo_ft_headers) -@CAIRO_HAS_FT_FONT_TRUE@am__append_132 = $(cairo_ft_private) -@CAIRO_HAS_FT_FONT_TRUE@am__append_133 = $(cairo_ft_cxx_sources) -@CAIRO_HAS_FT_FONT_TRUE@am__append_134 = $(cairo_ft_sources) -@CAIRO_HAS_FT_FONT_TRUE@am__append_135 = cairo-ft.pc -@CAIRO_HAS_FC_FONT_TRUE@am__append_136 = $(cairo_fc_headers) -@CAIRO_HAS_FC_FONT_TRUE@am__append_137 = $(cairo_fc_private) -@CAIRO_HAS_FC_FONT_TRUE@am__append_138 = $(cairo_fc_cxx_sources) -@CAIRO_HAS_FC_FONT_TRUE@am__append_139 = $(cairo_fc_sources) -@CAIRO_HAS_FC_FONT_TRUE@am__append_140 = cairo-fc.pc -@CAIRO_HAS_PS_SURFACE_TRUE@am__append_141 = $(cairo_ps_headers) -@CAIRO_HAS_PS_SURFACE_TRUE@am__append_142 = $(cairo_ps_private) -@CAIRO_HAS_PS_SURFACE_TRUE@am__append_143 = $(cairo_ps_cxx_sources) -@CAIRO_HAS_PS_SURFACE_TRUE@am__append_144 = $(cairo_ps_sources) -@CAIRO_HAS_PS_SURFACE_TRUE@am__append_145 = cairo-ps.pc -@CAIRO_HAS_PDF_SURFACE_TRUE@am__append_146 = $(cairo_pdf_headers) -@CAIRO_HAS_PDF_SURFACE_TRUE@am__append_147 = $(cairo_pdf_private) -@CAIRO_HAS_PDF_SURFACE_TRUE@am__append_148 = $(cairo_pdf_cxx_sources) -@CAIRO_HAS_PDF_SURFACE_TRUE@am__append_149 = $(cairo_pdf_sources) -@CAIRO_HAS_PDF_SURFACE_TRUE@am__append_150 = cairo-pdf.pc -@CAIRO_HAS_SVG_SURFACE_TRUE@am__append_151 = $(cairo_svg_headers) -@CAIRO_HAS_SVG_SURFACE_TRUE@am__append_152 = $(cairo_svg_private) -@CAIRO_HAS_SVG_SURFACE_TRUE@am__append_153 = $(cairo_svg_cxx_sources) -@CAIRO_HAS_SVG_SURFACE_TRUE@am__append_154 = $(cairo_svg_sources) -@CAIRO_HAS_SVG_SURFACE_TRUE@am__append_155 = cairo-svg.pc -@CAIRO_HAS_TEST_SURFACES_TRUE@am__append_156 = $(cairo_test_surfaces_private) $(cairo_test_surfaces_headers) -@CAIRO_HAS_TEST_SURFACES_TRUE@am__append_157 = $(cairo_test_surfaces_cxx_sources) -@CAIRO_HAS_TEST_SURFACES_TRUE@am__append_158 = $(cairo_test_surfaces_sources) -@CAIRO_HAS_TEE_SURFACE_TRUE@am__append_159 = $(cairo_tee_headers) -@CAIRO_HAS_TEE_SURFACE_TRUE@am__append_160 = $(cairo_tee_private) -@CAIRO_HAS_TEE_SURFACE_TRUE@am__append_161 = $(cairo_tee_cxx_sources) -@CAIRO_HAS_TEE_SURFACE_TRUE@am__append_162 = $(cairo_tee_sources) -@CAIRO_HAS_TEE_SURFACE_TRUE@am__append_163 = cairo-tee.pc -@CAIRO_HAS_XML_SURFACE_TRUE@am__append_164 = $(cairo_xml_headers) -@CAIRO_HAS_XML_SURFACE_TRUE@am__append_165 = $(cairo_xml_private) -@CAIRO_HAS_XML_SURFACE_TRUE@am__append_166 = $(cairo_xml_cxx_sources) -@CAIRO_HAS_XML_SURFACE_TRUE@am__append_167 = $(cairo_xml_sources) -@CAIRO_HAS_XML_SURFACE_TRUE@am__append_168 = cairo-xml.pc -@CAIRO_HAS_PTHREAD_TRUE@am__append_169 = $(cairo_pthread_private) $(cairo_pthread_headers) -@CAIRO_HAS_PTHREAD_TRUE@am__append_170 = $(cairo_pthread_cxx_sources) -@CAIRO_HAS_PTHREAD_TRUE@am__append_171 = $(cairo_pthread_sources) -@CAIRO_HAS_GOBJECT_FUNCTIONS_TRUE@am__append_172 = $(cairo_gobject_headers) -@CAIRO_HAS_GOBJECT_FUNCTIONS_TRUE@am__append_173 = $(cairo_gobject_private) -@CAIRO_HAS_GOBJECT_FUNCTIONS_TRUE@am__append_174 = $(cairo_gobject_cxx_sources) -@CAIRO_HAS_GOBJECT_FUNCTIONS_TRUE@am__append_175 = $(cairo_gobject_sources) -@CAIRO_HAS_GOBJECT_FUNCTIONS_TRUE@am__append_176 = cairo-gobject.pc -@CAIRO_HAS_TRACE_TRUE@am__append_177 = $(cairo_trace_private) $(cairo_trace_headers) -@CAIRO_HAS_TRACE_TRUE@am__append_178 = $(cairo_trace_cxx_sources) -@CAIRO_HAS_TRACE_TRUE@am__append_179 = $(cairo_trace_sources) -@CAIRO_HAS_INTERPRETER_TRUE@am__append_180 = $(cairo_interpreter_private) $(cairo_interpreter_headers) -@CAIRO_HAS_INTERPRETER_TRUE@am__append_181 = $(cairo_interpreter_cxx_sources) -@CAIRO_HAS_INTERPRETER_TRUE@am__append_182 = $(cairo_interpreter_sources) -@CAIRO_HAS_SYMBOL_LOOKUP_TRUE@am__append_183 = $(cairo_symbol_lookup_private) $(cairo_symbol_lookup_headers) -@CAIRO_HAS_SYMBOL_LOOKUP_TRUE@am__append_184 = $(cairo_symbol_lookup_cxx_sources) -@CAIRO_HAS_SYMBOL_LOOKUP_TRUE@am__append_185 = $(cairo_symbol_lookup_sources) -@ENABLE_GTK_DOC_TRUE@am__append_186 = check-doc-coverage.sh +@CAIRO_HAS_GLESV3_SURFACE_TRUE@am__append_96 = $(cairo_glesv3_headers) +@CAIRO_HAS_GLESV3_SURFACE_TRUE@am__append_97 = $(cairo_glesv3_private) +@CAIRO_HAS_GLESV3_SURFACE_TRUE@am__append_98 = $(cairo_glesv3_cxx_sources) +@CAIRO_HAS_GLESV3_SURFACE_TRUE@am__append_99 = $(cairo_glesv3_sources) +@CAIRO_HAS_GLESV3_SURFACE_TRUE@am__append_100 = cairo-glesv3.pc +@CAIRO_HAS_COGL_SURFACE_TRUE@am__append_101 = $(cairo_cogl_headers) +@CAIRO_HAS_COGL_SURFACE_TRUE@am__append_102 = $(cairo_cogl_private) +@CAIRO_HAS_COGL_SURFACE_TRUE@am__append_103 = $(cairo_cogl_cxx_sources) +@CAIRO_HAS_COGL_SURFACE_TRUE@am__append_104 = $(cairo_cogl_sources) +@CAIRO_HAS_COGL_SURFACE_TRUE@am__append_105 = cairo-cogl.pc +@CAIRO_HAS_DIRECTFB_SURFACE_TRUE@am__append_106 = $(cairo_directfb_headers) +@CAIRO_HAS_DIRECTFB_SURFACE_TRUE@am__append_107 = $(cairo_directfb_private) +@CAIRO_HAS_DIRECTFB_SURFACE_TRUE@am__append_108 = $(cairo_directfb_cxx_sources) +@CAIRO_HAS_DIRECTFB_SURFACE_TRUE@am__append_109 = $(cairo_directfb_sources) +@CAIRO_HAS_DIRECTFB_SURFACE_TRUE@am__append_110 = cairo-directfb.pc +@CAIRO_HAS_VG_SURFACE_TRUE@am__append_111 = $(cairo_vg_headers) +@CAIRO_HAS_VG_SURFACE_TRUE@am__append_112 = $(cairo_vg_private) +@CAIRO_HAS_VG_SURFACE_TRUE@am__append_113 = $(cairo_vg_cxx_sources) +@CAIRO_HAS_VG_SURFACE_TRUE@am__append_114 = $(cairo_vg_sources) +@CAIRO_HAS_VG_SURFACE_TRUE@am__append_115 = cairo-vg.pc +@CAIRO_HAS_EGL_FUNCTIONS_TRUE@am__append_116 = $(cairo_egl_headers) +@CAIRO_HAS_EGL_FUNCTIONS_TRUE@am__append_117 = $(cairo_egl_private) +@CAIRO_HAS_EGL_FUNCTIONS_TRUE@am__append_118 = $(cairo_egl_cxx_sources) +@CAIRO_HAS_EGL_FUNCTIONS_TRUE@am__append_119 = $(cairo_egl_sources) +@CAIRO_HAS_EGL_FUNCTIONS_TRUE@am__append_120 = cairo-egl.pc +@CAIRO_HAS_GLX_FUNCTIONS_TRUE@am__append_121 = $(cairo_glx_headers) +@CAIRO_HAS_GLX_FUNCTIONS_TRUE@am__append_122 = $(cairo_glx_private) +@CAIRO_HAS_GLX_FUNCTIONS_TRUE@am__append_123 = $(cairo_glx_cxx_sources) +@CAIRO_HAS_GLX_FUNCTIONS_TRUE@am__append_124 = $(cairo_glx_sources) +@CAIRO_HAS_GLX_FUNCTIONS_TRUE@am__append_125 = cairo-glx.pc +@CAIRO_HAS_WGL_FUNCTIONS_TRUE@am__append_126 = $(cairo_wgl_headers) +@CAIRO_HAS_WGL_FUNCTIONS_TRUE@am__append_127 = $(cairo_wgl_private) +@CAIRO_HAS_WGL_FUNCTIONS_TRUE@am__append_128 = $(cairo_wgl_cxx_sources) +@CAIRO_HAS_WGL_FUNCTIONS_TRUE@am__append_129 = $(cairo_wgl_sources) +@CAIRO_HAS_WGL_FUNCTIONS_TRUE@am__append_130 = cairo-wgl.pc +@CAIRO_HAS_SCRIPT_SURFACE_TRUE@am__append_131 = $(cairo_script_headers) +@CAIRO_HAS_SCRIPT_SURFACE_TRUE@am__append_132 = $(cairo_script_private) +@CAIRO_HAS_SCRIPT_SURFACE_TRUE@am__append_133 = $(cairo_script_cxx_sources) +@CAIRO_HAS_SCRIPT_SURFACE_TRUE@am__append_134 = $(cairo_script_sources) +@CAIRO_HAS_SCRIPT_SURFACE_TRUE@am__append_135 = cairo-script.pc +@CAIRO_HAS_FT_FONT_TRUE@am__append_136 = $(cairo_ft_headers) +@CAIRO_HAS_FT_FONT_TRUE@am__append_137 = $(cairo_ft_private) +@CAIRO_HAS_FT_FONT_TRUE@am__append_138 = $(cairo_ft_cxx_sources) +@CAIRO_HAS_FT_FONT_TRUE@am__append_139 = $(cairo_ft_sources) +@CAIRO_HAS_FT_FONT_TRUE@am__append_140 = cairo-ft.pc +@CAIRO_HAS_FC_FONT_TRUE@am__append_141 = $(cairo_fc_headers) +@CAIRO_HAS_FC_FONT_TRUE@am__append_142 = $(cairo_fc_private) +@CAIRO_HAS_FC_FONT_TRUE@am__append_143 = $(cairo_fc_cxx_sources) +@CAIRO_HAS_FC_FONT_TRUE@am__append_144 = $(cairo_fc_sources) +@CAIRO_HAS_FC_FONT_TRUE@am__append_145 = cairo-fc.pc +@CAIRO_HAS_PS_SURFACE_TRUE@am__append_146 = $(cairo_ps_headers) +@CAIRO_HAS_PS_SURFACE_TRUE@am__append_147 = $(cairo_ps_private) +@CAIRO_HAS_PS_SURFACE_TRUE@am__append_148 = $(cairo_ps_cxx_sources) +@CAIRO_HAS_PS_SURFACE_TRUE@am__append_149 = $(cairo_ps_sources) +@CAIRO_HAS_PS_SURFACE_TRUE@am__append_150 = cairo-ps.pc +@CAIRO_HAS_PDF_SURFACE_TRUE@am__append_151 = $(cairo_pdf_headers) +@CAIRO_HAS_PDF_SURFACE_TRUE@am__append_152 = $(cairo_pdf_private) +@CAIRO_HAS_PDF_SURFACE_TRUE@am__append_153 = $(cairo_pdf_cxx_sources) +@CAIRO_HAS_PDF_SURFACE_TRUE@am__append_154 = $(cairo_pdf_sources) +@CAIRO_HAS_PDF_SURFACE_TRUE@am__append_155 = cairo-pdf.pc +@CAIRO_HAS_SVG_SURFACE_TRUE@am__append_156 = $(cairo_svg_headers) +@CAIRO_HAS_SVG_SURFACE_TRUE@am__append_157 = $(cairo_svg_private) +@CAIRO_HAS_SVG_SURFACE_TRUE@am__append_158 = $(cairo_svg_cxx_sources) +@CAIRO_HAS_SVG_SURFACE_TRUE@am__append_159 = $(cairo_svg_sources) +@CAIRO_HAS_SVG_SURFACE_TRUE@am__append_160 = cairo-svg.pc +@CAIRO_HAS_TEST_SURFACES_TRUE@am__append_161 = $(cairo_test_surfaces_private) $(cairo_test_surfaces_headers) +@CAIRO_HAS_TEST_SURFACES_TRUE@am__append_162 = $(cairo_test_surfaces_cxx_sources) +@CAIRO_HAS_TEST_SURFACES_TRUE@am__append_163 = $(cairo_test_surfaces_sources) +@CAIRO_HAS_TEE_SURFACE_TRUE@am__append_164 = $(cairo_tee_headers) +@CAIRO_HAS_TEE_SURFACE_TRUE@am__append_165 = $(cairo_tee_private) +@CAIRO_HAS_TEE_SURFACE_TRUE@am__append_166 = $(cairo_tee_cxx_sources) +@CAIRO_HAS_TEE_SURFACE_TRUE@am__append_167 = $(cairo_tee_sources) +@CAIRO_HAS_TEE_SURFACE_TRUE@am__append_168 = cairo-tee.pc +@CAIRO_HAS_XML_SURFACE_TRUE@am__append_169 = $(cairo_xml_headers) +@CAIRO_HAS_XML_SURFACE_TRUE@am__append_170 = $(cairo_xml_private) +@CAIRO_HAS_XML_SURFACE_TRUE@am__append_171 = $(cairo_xml_cxx_sources) +@CAIRO_HAS_XML_SURFACE_TRUE@am__append_172 = $(cairo_xml_sources) +@CAIRO_HAS_XML_SURFACE_TRUE@am__append_173 = cairo-xml.pc +@CAIRO_HAS_PTHREAD_TRUE@am__append_174 = $(cairo_pthread_private) $(cairo_pthread_headers) +@CAIRO_HAS_PTHREAD_TRUE@am__append_175 = $(cairo_pthread_cxx_sources) +@CAIRO_HAS_PTHREAD_TRUE@am__append_176 = $(cairo_pthread_sources) +@CAIRO_HAS_GOBJECT_FUNCTIONS_TRUE@am__append_177 = $(cairo_gobject_headers) +@CAIRO_HAS_GOBJECT_FUNCTIONS_TRUE@am__append_178 = $(cairo_gobject_private) +@CAIRO_HAS_GOBJECT_FUNCTIONS_TRUE@am__append_179 = $(cairo_gobject_cxx_sources) +@CAIRO_HAS_GOBJECT_FUNCTIONS_TRUE@am__append_180 = $(cairo_gobject_sources) +@CAIRO_HAS_GOBJECT_FUNCTIONS_TRUE@am__append_181 = cairo-gobject.pc +@CAIRO_HAS_TRACE_TRUE@am__append_182 = $(cairo_trace_private) $(cairo_trace_headers) +@CAIRO_HAS_TRACE_TRUE@am__append_183 = $(cairo_trace_cxx_sources) +@CAIRO_HAS_TRACE_TRUE@am__append_184 = $(cairo_trace_sources) +@CAIRO_HAS_INTERPRETER_TRUE@am__append_185 = $(cairo_interpreter_private) $(cairo_interpreter_headers) +@CAIRO_HAS_INTERPRETER_TRUE@am__append_186 = $(cairo_interpreter_cxx_sources) +@CAIRO_HAS_INTERPRETER_TRUE@am__append_187 = $(cairo_interpreter_sources) +@CAIRO_HAS_SYMBOL_LOOKUP_TRUE@am__append_188 = $(cairo_symbol_lookup_private) $(cairo_symbol_lookup_headers) +@CAIRO_HAS_SYMBOL_LOOKUP_TRUE@am__append_189 = $(cairo_symbol_lookup_cxx_sources) +@CAIRO_HAS_SYMBOL_LOOKUP_TRUE@am__append_190 = $(cairo_symbol_lookup_sources) +@ENABLE_GTK_DOC_TRUE@am__append_191 = check-doc-coverage.sh subdir = doc/public ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/build/aclocal.cairo.m4 \ @@ -368,6 +378,7 @@ $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) +DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = @@ -596,6 +607,12 @@ TEST_LOG_DRIVER = $(SHELL) $(top_srcdir)/build/test-driver TEST_LOG_COMPILE = $(TEST_LOG_COMPILER) $(AM_TEST_LOG_FLAGS) \ $(TEST_LOG_FLAGS) +am__DIST_COMMON = $(srcdir)/Makefile.in \ + $(top_srcdir)/build/Makefile.am.common \ + $(top_srcdir)/build/Makefile.am.gtk-doc \ + $(top_srcdir)/build/test-driver \ + $(top_srcdir)/src/Makefile.am.features \ + $(top_srcdir)/src/Makefile.sources README DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ @@ -680,6 +697,7 @@ LTLIBOBJS = @LTLIBOBJS@ LTP = @LTP@ LTP_GENHTML = @LTP_GENHTML@ +LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MKDIR_P = @MKDIR_P@ @@ -756,6 +774,8 @@ gl_LIBS = @gl_LIBS@ glesv2_CFLAGS = @glesv2_CFLAGS@ glesv2_LIBS = @glesv2_LIBS@ +glesv3_CFLAGS = @glesv3_CFLAGS@ +glesv3_LIBS = @glesv3_LIBS@ glib_CFLAGS = @glib_CFLAGS@ glib_LIBS = @glib_LIBS@ gtk_CFLAGS = @gtk_CFLAGS@ @@ -793,6 +813,7 @@ qt_LIBS = @qt_LIBS@ real_pthread_CFLAGS = @real_pthread_CFLAGS@ real_pthread_LIBS = @real_pthread_LIBS@ +runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ shm_LIBS = @shm_LIBS@ @@ -823,7 +844,7 @@ check-doc-coverage.sh check-doc-syntax.sh EXTRA_LTLIBRARIES = MAINTAINERCLEANFILES = Makefile.in -TESTS = $(am__append_186) check-doc-syntax.sh +TESTS = $(am__append_191) check-doc-syntax.sh cairo_headers = cairo.h cairo-deprecated.h cairo_private = cairoint.h cairo-analysis-surface-private.h \ cairo-arc-private.h cairo-array-private.h \ @@ -936,16 +957,26 @@ cairo_egl_sources = cairo-egl-context.c cairo_glx_sources = cairo-glx-context.c cairo_wgl_sources = cairo-wgl-context.c -_cairo_pdf_operators_private = cairo-pdf-operators-private.h cairo-pdf-shading-private.h -_cairo_pdf_operators_sources = cairo-pdf-operators.c cairo-pdf-shading.c +_cairo_pdf_operators_private = \ + cairo-pdf-operators-private.h \ + cairo-pdf-shading-private.h \ + cairo-tag-attributes-private.h \ + $(NULL) + +_cairo_pdf_operators_sources = \ + cairo-pdf-operators.c \ + cairo-pdf-shading.c \ + cairo-tag-attributes.c \ + $(NULL) + cairo_png_sources = cairo-png.c cairo_ps_headers = cairo-ps.h cairo_ps_private = cairo-ps-surface-private.h cairo_ps_sources = cairo-ps-surface.c _cairo_deflate_stream_sources = cairo-deflate-stream.c cairo_pdf_headers = cairo-pdf.h -cairo_pdf_private = cairo-pdf-surface-private.h -cairo_pdf_sources = cairo-pdf-surface.c +cairo_pdf_private = cairo-pdf-surface-private.h cairo-tag-stack-private.h +cairo_pdf_sources = cairo-pdf-surface.c cairo-pdf-interchange.c cairo-tag-stack.c cairo_svg_headers = cairo-svg.h cairo_svg_private = cairo-svg-surface-private.h cairo_svg_sources = cairo-svg-surface.c @@ -1066,11 +1097,13 @@ cairo_glesv2_headers = $(cairo_gl_headers) cairo_glesv2_private = $(cairo_gl_private) cairo_glesv2_sources = $(cairo_gl_sources) +cairo_glesv3_headers = $(cairo_gl_headers) +cairo_glesv3_private = $(cairo_gl_private) +cairo_glesv3_sources = $(cairo_gl_sources) cairo_directfb_headers = cairo-directfb.h cairo_directfb_sources = cairo-directfb-surface.c cairo_drm_headers = cairo-drm.h cairo_drm_private = drm/cairo-drm-private.h \ - drm/cairo-drm-ioctl-private.h \ drm/cairo-drm-intel-private.h \ drm/cairo-drm-intel-brw-defines.h \ drm/cairo-drm-intel-brw-structs.h \ @@ -1140,9 +1173,9 @@ $(cairo_skia_headers) $(cairo_os2_headers) \ $(cairo_beos_headers) $(cairo_drm_headers) \ $(cairo_gallium_headers) $(cairo_gl_headers) \ - $(cairo_glesv2_headers) $(cairo_cogl_headers) \ - $(cairo_directfb_headers) $(cairo_vg_headers) \ - $(cairo_tee_headers) $(cairo_xml_headers) + $(cairo_glesv2_headers) $(cairo_glesv3_headers) \ + $(cairo_cogl_headers) $(cairo_directfb_headers) \ + $(cairo_vg_headers) $(cairo_tee_headers) $(cairo_xml_headers) all_cairo_headers = $(cairo_headers) $(cairo_xlib_headers) \ $(cairo_xlib_xrender_headers) $(cairo_xcb_headers) \ $(cairo_xlib_xcb_headers) $(cairo_xcb_shm_headers) \ @@ -1153,15 +1186,16 @@ $(cairo_beos_headers) $(cairo_drm_headers) \ $(cairo_gallium_headers) $(cairo_png_headers) \ $(cairo_gl_headers) $(cairo_glesv2_headers) \ - $(cairo_cogl_headers) $(cairo_directfb_headers) \ - $(cairo_vg_headers) $(cairo_egl_headers) $(cairo_glx_headers) \ - $(cairo_wgl_headers) $(cairo_script_headers) \ - $(cairo_ft_headers) $(cairo_fc_headers) $(cairo_ps_headers) \ - $(cairo_pdf_headers) $(cairo_svg_headers) \ - $(cairo_image_headers) $(cairo_mime_headers) \ - $(cairo_recording_headers) $(cairo_observer_headers) \ - $(cairo_tee_headers) $(cairo_xml_headers) \ - $(cairo_user_headers) $(cairo_gobject_headers) + $(cairo_glesv3_headers) $(cairo_cogl_headers) \ + $(cairo_directfb_headers) $(cairo_vg_headers) \ + $(cairo_egl_headers) $(cairo_glx_headers) $(cairo_wgl_headers) \ + $(cairo_script_headers) $(cairo_ft_headers) \ + $(cairo_fc_headers) $(cairo_ps_headers) $(cairo_pdf_headers) \ + $(cairo_svg_headers) $(cairo_image_headers) \ + $(cairo_mime_headers) $(cairo_recording_headers) \ + $(cairo_observer_headers) $(cairo_tee_headers) \ + $(cairo_xml_headers) $(cairo_user_headers) \ + $(cairo_gobject_headers) all_cairo_private = $(cairo_private) $(cairo_xlib_private) \ $(cairo_xlib_xrender_private) $(cairo_xcb_private) \ $(cairo_xlib_xcb_private) $(cairo_xcb_shm_private) \ @@ -1172,20 +1206,21 @@ $(cairo_beos_private) $(cairo_drm_private) \ $(cairo_gallium_private) $(cairo_png_private) \ $(cairo_gl_private) $(cairo_glesv2_private) \ - $(cairo_cogl_private) $(cairo_directfb_private) \ - $(cairo_vg_private) $(cairo_egl_private) $(cairo_glx_private) \ - $(cairo_wgl_private) $(cairo_script_private) \ - $(cairo_ft_private) $(cairo_fc_private) $(cairo_ps_private) \ - $(cairo_pdf_private) $(cairo_svg_private) \ - $(cairo_test_surfaces_private) $(cairo_test_surfaces_headers) \ - $(cairo_image_private) $(cairo_mime_private) \ - $(cairo_recording_private) $(cairo_observer_private) \ - $(cairo_tee_private) $(cairo_xml_private) \ - $(cairo_user_private) $(cairo_pthread_private) \ - $(cairo_pthread_headers) $(cairo_gobject_private) \ - $(cairo_trace_private) $(cairo_trace_headers) \ - $(cairo_interpreter_private) $(cairo_interpreter_headers) \ - $(cairo_symbol_lookup_private) $(cairo_symbol_lookup_headers) + $(cairo_glesv3_private) $(cairo_cogl_private) \ + $(cairo_directfb_private) $(cairo_vg_private) \ + $(cairo_egl_private) $(cairo_glx_private) $(cairo_wgl_private) \ + $(cairo_script_private) $(cairo_ft_private) \ + $(cairo_fc_private) $(cairo_ps_private) $(cairo_pdf_private) \ + $(cairo_svg_private) $(cairo_test_surfaces_private) \ + $(cairo_test_surfaces_headers) $(cairo_image_private) \ + $(cairo_mime_private) $(cairo_recording_private) \ + $(cairo_observer_private) $(cairo_tee_private) \ + $(cairo_xml_private) $(cairo_user_private) \ + $(cairo_pthread_private) $(cairo_pthread_headers) \ + $(cairo_gobject_private) $(cairo_trace_private) \ + $(cairo_trace_headers) $(cairo_interpreter_private) \ + $(cairo_interpreter_headers) $(cairo_symbol_lookup_private) \ + $(cairo_symbol_lookup_headers) all_cairo_cxx_sources = $(cairo_cxx_sources) $(cairo_xlib_cxx_sources) \ $(cairo_xlib_xrender_cxx_sources) $(cairo_xcb_cxx_sources) \ $(cairo_xlib_xcb_cxx_sources) $(cairo_xcb_shm_cxx_sources) \ @@ -1196,19 +1231,19 @@ $(cairo_os2_cxx_sources) $(cairo_beos_cxx_sources) \ $(cairo_drm_cxx_sources) $(cairo_gallium_cxx_sources) \ $(cairo_png_cxx_sources) $(cairo_gl_cxx_sources) \ - $(cairo_glesv2_cxx_sources) $(cairo_cogl_cxx_sources) \ - $(cairo_directfb_cxx_sources) $(cairo_vg_cxx_sources) \ - $(cairo_egl_cxx_sources) $(cairo_glx_cxx_sources) \ - $(cairo_wgl_cxx_sources) $(cairo_script_cxx_sources) \ - $(cairo_ft_cxx_sources) $(cairo_fc_cxx_sources) \ - $(cairo_ps_cxx_sources) $(cairo_pdf_cxx_sources) \ - $(cairo_svg_cxx_sources) $(cairo_test_surfaces_cxx_sources) \ - $(cairo_image_cxx_sources) $(cairo_mime_cxx_sources) \ - $(cairo_recording_cxx_sources) $(cairo_observer_cxx_sources) \ - $(cairo_tee_cxx_sources) $(cairo_xml_cxx_sources) \ - $(cairo_user_cxx_sources) $(cairo_pthread_cxx_sources) \ - $(cairo_gobject_cxx_sources) $(cairo_trace_cxx_sources) \ - $(cairo_interpreter_cxx_sources) \ + $(cairo_glesv2_cxx_sources) $(cairo_glesv3_cxx_sources) \ + $(cairo_cogl_cxx_sources) $(cairo_directfb_cxx_sources) \ + $(cairo_vg_cxx_sources) $(cairo_egl_cxx_sources) \ + $(cairo_glx_cxx_sources) $(cairo_wgl_cxx_sources) \ + $(cairo_script_cxx_sources) $(cairo_ft_cxx_sources) \ + $(cairo_fc_cxx_sources) $(cairo_ps_cxx_sources) \ + $(cairo_pdf_cxx_sources) $(cairo_svg_cxx_sources) \ + $(cairo_test_surfaces_cxx_sources) $(cairo_image_cxx_sources) \ + $(cairo_mime_cxx_sources) $(cairo_recording_cxx_sources) \ + $(cairo_observer_cxx_sources) $(cairo_tee_cxx_sources) \ + $(cairo_xml_cxx_sources) $(cairo_user_cxx_sources) \ + $(cairo_pthread_cxx_sources) $(cairo_gobject_cxx_sources) \ + $(cairo_trace_cxx_sources) $(cairo_interpreter_cxx_sources) \ $(cairo_symbol_lookup_cxx_sources) all_cairo_sources = $(cairo_sources) $(cairo_xlib_sources) \ $(cairo_xlib_xrender_sources) $(cairo_xcb_sources) \ @@ -1220,18 +1255,18 @@ $(cairo_beos_sources) $(cairo_drm_sources) \ $(cairo_gallium_sources) $(cairo_png_sources) \ $(cairo_gl_sources) $(cairo_glesv2_sources) \ - $(cairo_cogl_sources) $(cairo_directfb_sources) \ - $(cairo_vg_sources) $(cairo_egl_sources) $(cairo_glx_sources) \ - $(cairo_wgl_sources) $(cairo_script_sources) \ - $(cairo_ft_sources) $(cairo_fc_sources) $(cairo_ps_sources) \ - $(cairo_pdf_sources) $(cairo_svg_sources) \ - $(cairo_test_surfaces_sources) $(cairo_image_sources) \ - $(cairo_mime_sources) $(cairo_recording_sources) \ - $(cairo_observer_sources) $(cairo_tee_sources) \ - $(cairo_xml_sources) $(cairo_user_sources) \ - $(cairo_pthread_sources) $(cairo_gobject_sources) \ - $(cairo_trace_sources) $(cairo_interpreter_sources) \ - $(cairo_symbol_lookup_sources) + $(cairo_glesv3_sources) $(cairo_cogl_sources) \ + $(cairo_directfb_sources) $(cairo_vg_sources) \ + $(cairo_egl_sources) $(cairo_glx_sources) $(cairo_wgl_sources) \ + $(cairo_script_sources) $(cairo_ft_sources) \ + $(cairo_fc_sources) $(cairo_ps_sources) $(cairo_pdf_sources) \ + $(cairo_svg_sources) $(cairo_test_surfaces_sources) \ + $(cairo_image_sources) $(cairo_mime_sources) \ + $(cairo_recording_sources) $(cairo_observer_sources) \ + $(cairo_tee_sources) $(cairo_xml_sources) \ + $(cairo_user_sources) $(cairo_pthread_sources) \ + $(cairo_gobject_sources) $(cairo_trace_sources) \ + $(cairo_interpreter_sources) $(cairo_symbol_lookup_sources) enabled_cairo_headers = $(cairo_headers) $(am__append_1) \ $(am__append_6) $(am__append_11) $(am__append_16) \ $(am__append_21) $(am__append_26) $(am__append_31) \ @@ -1243,10 +1278,10 @@ $(am__append_111) $(am__append_116) $(am__append_121) \ $(am__append_126) $(am__append_131) $(am__append_136) \ $(am__append_141) $(am__append_146) $(am__append_151) \ - $(cairo_image_headers) $(cairo_mime_headers) \ + $(am__append_156) $(cairo_image_headers) $(cairo_mime_headers) \ $(cairo_recording_headers) $(cairo_observer_headers) \ - $(am__append_159) $(am__append_164) $(cairo_user_headers) \ - $(am__append_172) + $(am__append_164) $(am__append_169) $(cairo_user_headers) \ + $(am__append_177) enabled_cairo_private = $(cairo_private) $(am__append_2) \ $(am__append_7) $(am__append_12) $(am__append_17) \ $(am__append_22) $(am__append_27) $(am__append_32) \ @@ -1258,11 +1293,11 @@ $(am__append_112) $(am__append_117) $(am__append_122) \ $(am__append_127) $(am__append_132) $(am__append_137) \ $(am__append_142) $(am__append_147) $(am__append_152) \ - $(am__append_156) $(cairo_image_private) $(cairo_mime_private) \ - $(cairo_recording_private) $(cairo_observer_private) \ - $(am__append_160) $(am__append_165) $(cairo_user_private) \ - $(am__append_169) $(am__append_173) $(am__append_177) \ - $(am__append_180) $(am__append_183) + $(am__append_157) $(am__append_161) $(cairo_image_private) \ + $(cairo_mime_private) $(cairo_recording_private) \ + $(cairo_observer_private) $(am__append_165) $(am__append_170) \ + $(cairo_user_private) $(am__append_174) $(am__append_178) \ + $(am__append_182) $(am__append_185) $(am__append_188) enabled_cairo_cxx_sources = $(cairo_cxx_sources) $(am__append_3) \ $(am__append_8) $(am__append_13) $(am__append_18) \ $(am__append_23) $(am__append_28) $(am__append_33) \ @@ -1274,12 +1309,12 @@ $(am__append_113) $(am__append_118) $(am__append_123) \ $(am__append_128) $(am__append_133) $(am__append_138) \ $(am__append_143) $(am__append_148) $(am__append_153) \ - $(am__append_157) $(cairo_image_cxx_sources) \ + $(am__append_158) $(am__append_162) $(cairo_image_cxx_sources) \ $(cairo_mime_cxx_sources) $(cairo_recording_cxx_sources) \ - $(cairo_observer_cxx_sources) $(am__append_161) \ - $(am__append_166) $(cairo_user_cxx_sources) $(am__append_170) \ - $(am__append_174) $(am__append_178) $(am__append_181) \ - $(am__append_184) + $(cairo_observer_cxx_sources) $(am__append_166) \ + $(am__append_171) $(cairo_user_cxx_sources) $(am__append_175) \ + $(am__append_179) $(am__append_183) $(am__append_186) \ + $(am__append_189) enabled_cairo_sources = $(cairo_sources) $(am__append_4) \ $(am__append_9) $(am__append_14) $(am__append_19) \ $(am__append_24) $(am__append_29) $(am__append_34) \ @@ -1291,21 +1326,21 @@ $(am__append_114) $(am__append_119) $(am__append_124) \ $(am__append_129) $(am__append_134) $(am__append_139) \ $(am__append_144) $(am__append_149) $(am__append_154) \ - $(am__append_158) $(cairo_image_sources) $(cairo_mime_sources) \ - $(cairo_recording_sources) $(cairo_observer_sources) \ - $(am__append_162) $(am__append_167) $(cairo_user_sources) \ - $(am__append_171) $(am__append_175) $(am__append_179) \ - $(am__append_182) $(am__append_185) + $(am__append_159) $(am__append_163) $(cairo_image_sources) \ + $(cairo_mime_sources) $(cairo_recording_sources) \ + $(cairo_observer_sources) $(am__append_167) $(am__append_172) \ + $(cairo_user_sources) $(am__append_176) $(am__append_180) \ + $(am__append_184) $(am__append_187) $(am__append_190) all_cairo_pkgconf = cairo.pc cairo-xlib.pc cairo-xlib-xrender.pc \ cairo-xcb.pc cairo-xlib-xcb.pc cairo-xcb-shm.pc cairo-qt.pc \ cairo-quartz.pc cairo-quartz-font.pc cairo-quartz-image.pc \ cairo-win32.pc cairo-win32-font.pc cairo-skia.pc cairo-os2.pc \ cairo-beos.pc cairo-drm.pc cairo-gallium.pc cairo-png.pc \ - cairo-gl.pc cairo-glesv2.pc cairo-cogl.pc cairo-directfb.pc \ - cairo-vg.pc cairo-egl.pc cairo-glx.pc cairo-wgl.pc \ - cairo-script.pc cairo-ft.pc cairo-fc.pc cairo-ps.pc \ - cairo-pdf.pc cairo-svg.pc cairo-tee.pc cairo-xml.pc \ - cairo-gobject.pc + cairo-gl.pc cairo-glesv2.pc cairo-glesv3.pc cairo-cogl.pc \ + cairo-directfb.pc cairo-vg.pc cairo-egl.pc cairo-glx.pc \ + cairo-wgl.pc cairo-script.pc cairo-ft.pc cairo-fc.pc \ + cairo-ps.pc cairo-pdf.pc cairo-svg.pc cairo-tee.pc \ + cairo-xml.pc cairo-gobject.pc enabled_cairo_pkgconf = cairo.pc $(am__append_5) $(am__append_10) \ $(am__append_15) $(am__append_20) $(am__append_25) \ $(am__append_30) $(am__append_35) $(am__append_40) \ @@ -1316,8 +1351,8 @@ $(am__append_105) $(am__append_110) $(am__append_115) \ $(am__append_120) $(am__append_125) $(am__append_130) \ $(am__append_135) $(am__append_140) $(am__append_145) \ - $(am__append_150) $(am__append_155) $(am__append_163) \ - $(am__append_168) $(am__append_176) + $(am__append_150) $(am__append_155) $(am__append_160) \ + $(am__append_168) $(am__append_173) $(am__append_181) # The name of the module. DOC_MODULE = cairo @@ -1409,7 +1444,6 @@ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign doc/public/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --foreign doc/public/Makefile -.PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ @@ -1418,7 +1452,7 @@ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; -$(top_srcdir)/build/Makefile.am.common $(top_srcdir)/src/Makefile.am.features $(top_srcdir)/src/Makefile.sources $(top_srcdir)/build/Makefile.am.gtk-doc: +$(top_srcdir)/build/Makefile.am.common $(top_srcdir)/src/Makefile.am.features $(top_srcdir)/src/Makefile.sources $(top_srcdir)/build/Makefile.am.gtk-doc $(am__empty): $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh @@ -1480,7 +1514,7 @@ if test -n "$$am__remaking_logs"; then \ echo "fatal: making $(TEST_SUITE_LOG): possible infinite" \ "recursion detected" >&2; \ - else \ + elif test -n "$$redo_logs"; then \ am__remaking_logs=yes $(MAKE) $(AM_MAKEFLAGS) $$redo_logs; \ fi; \ if $(am__make_dryrun); then :; else \ @@ -1782,6 +1816,8 @@ mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ recheck tags-am uninstall uninstall-am uninstall-local +.PRECIOUS: Makefile + version.xml: $(top_srcdir)/cairo-version.h echo $(CAIRO_VERSION_MAJOR).$(CAIRO_VERSION_MINOR).$(CAIRO_VERSION_MICRO) > $@ diff -Nru cairo-1.14.6/doc/public/tmpl/cairo-pdf.sgml cairo-1.15.10/doc/public/tmpl/cairo-pdf.sgml --- cairo-1.14.6/doc/public/tmpl/cairo-pdf.sgml 2015-12-09 20:45:07.000000000 +0000 +++ cairo-1.15.10/doc/public/tmpl/cairo-pdf.sgml 2017-12-11 21:03:31.000000000 +0000 @@ -27,6 +27,35 @@ + + + + + + + + + + + + +@CAIRO_PDF_OUTLINE_FLAG_OPEN: +@CAIRO_PDF_OUTLINE_FLAG_BOLD: +@CAIRO_PDF_OUTLINE_FLAG_ITALIC: + + + + + + +@CAIRO_PDF_METADATA_TITLE: +@CAIRO_PDF_METADATA_AUTHOR: +@CAIRO_PDF_METADATA_SUBJECT: +@CAIRO_PDF_METADATA_KEYWORDS: +@CAIRO_PDF_METADATA_CREATOR: +@CAIRO_PDF_METADATA_CREATE_DATE: +@CAIRO_PDF_METADATA_MOD_DATE: + @@ -95,3 +124,45 @@ @height_in_points: + + + + + +@surface: +@parent_id: +@utf8: +@link_attribs: +@flags: +@Returns: + + + + + + + +@surface: +@metadata: +@utf8: + + + + + + + +@surface: +@utf8: + + + + + + + +@surface: +@width: +@height: + + diff -Nru cairo-1.14.6/doc/public/tmpl/cairo-status.sgml cairo-1.15.10/doc/public/tmpl/cairo-status.sgml --- cairo-1.14.6/doc/public/tmpl/cairo-status.sgml 2015-12-09 20:45:07.000000000 +0000 +++ cairo-1.15.10/doc/public/tmpl/cairo-status.sgml 2017-12-11 21:03:31.000000000 +0000 @@ -64,6 +64,10 @@ @CAIRO_STATUS_INVALID_MESH_CONSTRUCTION: @CAIRO_STATUS_DEVICE_FINISHED: @CAIRO_STATUS_JBIG2_GLOBAL_MISSING: +@CAIRO_STATUS_PNG_ERROR: +@CAIRO_STATUS_FREETYPE_ERROR: +@CAIRO_STATUS_WIN32_GDI_ERROR: +@CAIRO_STATUS_TAG_ERROR: @CAIRO_STATUS_LAST_STATUS: diff -Nru cairo-1.14.6/doc/public/tmpl/cairo-surface.sgml cairo-1.15.10/doc/public/tmpl/cairo-surface.sgml --- cairo-1.14.6/doc/public/tmpl/cairo-surface.sgml 2015-12-09 20:45:07.000000000 +0000 +++ cairo-1.15.10/doc/public/tmpl/cairo-surface.sgml 2017-12-11 21:03:31.000000000 +0000 @@ -27,6 +27,34 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff -Nru cairo-1.14.6/doc/public/tmpl/cairo-tag.sgml cairo-1.15.10/doc/public/tmpl/cairo-tag.sgml --- cairo-1.14.6/doc/public/tmpl/cairo-tag.sgml 1970-01-01 00:00:00.000000000 +0000 +++ cairo-1.15.10/doc/public/tmpl/cairo-tag.sgml 2017-12-11 21:03:31.000000000 +0000 @@ -0,0 +1,57 @@ + +cairo-tag + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +@cr: +@tag_name: +@attributes: + + + + + + + +@cr: +@tag_name: + + diff -Nru cairo-1.14.6/doc/public/version.xml cairo-1.15.10/doc/public/version.xml --- cairo-1.14.6/doc/public/version.xml 2015-12-09 20:41:54.000000000 +0000 +++ cairo-1.15.10/doc/public/version.xml 2017-12-11 21:03:20.000000000 +0000 @@ -1 +1 @@ -1.14.6 +1.15.10 diff -Nru cairo-1.14.6/doc/public/xml/api-index-1.0.xml cairo-1.15.10/doc/public/xml/api-index-1.0.xml --- cairo-1.14.6/doc/public/xml/api-index-1.0.xml 2015-12-09 20:45:07.000000000 +0000 +++ cairo-1.15.10/doc/public/xml/api-index-1.0.xml 2017-12-11 21:03:31.000000000 +0000 @@ -1,9 +1,9 @@ - + ]> - + A cairo_antialias_t, enum in cairo_t cairo_append_path, function in Paths @@ -246,8 +246,8 @@ cairo_user_to_device_distance, function in Transformations V -cairo_version, function in Version Information CAIRO_VERSION, macro in Version Information +cairo_version, function in Version Information CAIRO_VERSION_ENCODE, macro in Version Information CAIRO_VERSION_MAJOR, macro in Version Information CAIRO_VERSION_MICRO, macro in Version Information diff -Nru cairo-1.14.6/doc/public/xml/api-index-1.10.xml cairo-1.15.10/doc/public/xml/api-index-1.10.xml --- cairo-1.14.6/doc/public/xml/api-index-1.10.xml 2015-12-09 20:45:07.000000000 +0000 +++ cairo-1.15.10/doc/public/xml/api-index-1.10.xml 2017-12-11 21:03:31.000000000 +0000 @@ -1,9 +1,9 @@ - + ]> - + D cairo_device_acquire, function in cairo_device_t cairo_device_destroy, function in cairo_device_t diff -Nru cairo-1.14.6/doc/public/xml/api-index-1.12.xml cairo-1.15.10/doc/public/xml/api-index-1.12.xml --- cairo-1.14.6/doc/public/xml/api-index-1.12.xml 2015-12-09 20:45:07.000000000 +0000 +++ cairo-1.15.10/doc/public/xml/api-index-1.12.xml 2017-12-11 21:03:31.000000000 +0000 @@ -1,9 +1,9 @@ - + ]> - + F cairo_ft_font_face_get_synthesize, function in FreeType Fonts cairo_ft_font_face_set_synthesize, function in FreeType Fonts diff -Nru cairo-1.14.6/doc/public/xml/api-index-1.14.3.xml cairo-1.15.10/doc/public/xml/api-index-1.14.3.xml --- cairo-1.14.6/doc/public/xml/api-index-1.14.3.xml 2015-12-09 20:45:07.000000000 +0000 +++ cairo-1.15.10/doc/public/xml/api-index-1.14.3.xml 2017-12-11 21:03:31.000000000 +0000 @@ -1,7 +1,7 @@ - + ]> - + diff -Nru cairo-1.14.6/doc/public/xml/api-index-1.14.xml cairo-1.15.10/doc/public/xml/api-index-1.14.xml --- cairo-1.14.6/doc/public/xml/api-index-1.14.xml 2015-12-09 20:45:07.000000000 +0000 +++ cairo-1.15.10/doc/public/xml/api-index-1.14.xml 2017-12-11 21:03:31.000000000 +0000 @@ -1,9 +1,9 @@ - + ]> - + M CAIRO_MIME_TYPE_JBIG2, macro in cairo_surface_t CAIRO_MIME_TYPE_JBIG2_GLOBAL, macro in cairo_surface_t diff -Nru cairo-1.14.6/doc/public/xml/api-index-1.16.xml cairo-1.15.10/doc/public/xml/api-index-1.16.xml --- cairo-1.14.6/doc/public/xml/api-index-1.16.xml 1970-01-01 00:00:00.000000000 +0000 +++ cairo-1.15.10/doc/public/xml/api-index-1.16.xml 2017-12-11 21:03:31.000000000 +0000 @@ -0,0 +1,31 @@ + + +]> + +M +CAIRO_MIME_TYPE_CCITT_FAX, macro in cairo_surface_t +CAIRO_MIME_TYPE_CCITT_FAX_PARAMS, macro in cairo_surface_t +CAIRO_MIME_TYPE_EPS, macro in cairo_surface_t +CAIRO_MIME_TYPE_EPS_PARAMS, macro in cairo_surface_t + +P +cairo_pdf_metadata_t, enum in PDF Surfaces +cairo_pdf_outline_flags_t, enum in PDF Surfaces +CAIRO_PDF_OUTLINE_ROOT, macro in PDF Surfaces +cairo_pdf_surface_add_outline, function in PDF Surfaces +cairo_pdf_surface_set_metadata, function in PDF Surfaces +cairo_pdf_surface_set_page_label, function in PDF Surfaces +cairo_pdf_surface_set_thumbnail_size, function in PDF Surfaces + +S +cairo_svg_version_t, enum in SVG Surfaces + +T +cairo_tag_begin, function in Tags and Links +CAIRO_TAG_DEST, macro in Tags and Links +cairo_tag_end, function in Tags and Links +CAIRO_TAG_LINK, macro in Tags and Links + + diff -Nru cairo-1.14.6/doc/public/xml/api-index-1.2.xml cairo-1.15.10/doc/public/xml/api-index-1.2.xml --- cairo-1.14.6/doc/public/xml/api-index-1.2.xml 2015-12-09 20:45:07.000000000 +0000 +++ cairo-1.15.10/doc/public/xml/api-index-1.2.xml 2017-12-11 21:03:31.000000000 +0000 @@ -1,9 +1,9 @@ - + ]> - + F cairo_font_face_get_type, function in cairo_font_face_t cairo_font_type_t, enum in cairo_font_face_t @@ -58,7 +58,6 @@ cairo_svg_surface_create, function in SVG Surfaces cairo_svg_surface_create_for_stream, function in SVG Surfaces cairo_svg_surface_restrict_to_version, function in SVG Surfaces -cairo_svg_version_t, enum in SVG Surfaces cairo_svg_version_to_string, function in SVG Surfaces W diff -Nru cairo-1.14.6/doc/public/xml/api-index-1.4.xml cairo-1.15.10/doc/public/xml/api-index-1.4.xml --- cairo-1.14.6/doc/public/xml/api-index-1.4.xml 2015-12-09 20:45:07.000000000 +0000 +++ cairo-1.15.10/doc/public/xml/api-index-1.4.xml 2017-12-11 21:03:31.000000000 +0000 @@ -1,9 +1,9 @@ - + ]> - + C cairo_clip_extents, function in cairo_t cairo_copy_clip_rectangle_list, function in cairo_t diff -Nru cairo-1.14.6/doc/public/xml/api-index-1.6.xml cairo-1.15.10/doc/public/xml/api-index-1.6.xml --- cairo-1.14.6/doc/public/xml/api-index-1.6.xml 2015-12-09 20:45:07.000000000 +0000 +++ cairo-1.15.10/doc/public/xml/api-index-1.6.xml 2017-12-11 21:03:31.000000000 +0000 @@ -1,9 +1,9 @@ - + ]> - + F cairo_format_stride_for_width, function in Image Surfaces diff -Nru cairo-1.14.6/doc/public/xml/api-index-1.8.xml cairo-1.15.10/doc/public/xml/api-index-1.8.xml --- cairo-1.14.6/doc/public/xml/api-index-1.8.xml 2015-12-09 20:45:07.000000000 +0000 +++ cairo-1.15.10/doc/public/xml/api-index-1.8.xml 2017-12-11 21:03:31.000000000 +0000 @@ -1,9 +1,9 @@ - + ]> - + G cairo_glyph_allocate, function in text cairo_glyph_free, function in text diff -Nru cairo-1.14.6/doc/public/xml/api-index-deprecated.xml cairo-1.15.10/doc/public/xml/api-index-deprecated.xml --- cairo-1.14.6/doc/public/xml/api-index-deprecated.xml 2015-12-09 20:45:07.000000000 +0000 +++ cairo-1.15.10/doc/public/xml/api-index-deprecated.xml 2017-12-11 21:03:31.000000000 +0000 @@ -1,7 +1,7 @@ - + ]> - + diff -Nru cairo-1.14.6/doc/public/xml/api-index-full.xml cairo-1.15.10/doc/public/xml/api-index-full.xml --- cairo-1.14.6/doc/public/xml/api-index-full.xml 2015-12-09 20:45:07.000000000 +0000 +++ cairo-1.15.10/doc/public/xml/api-index-full.xml 2017-12-11 21:03:31.000000000 +0000 @@ -1,9 +1,9 @@ - + ]> - + A cairo_antialias_t, enum in cairo_t cairo_append_path, function in Paths @@ -205,6 +205,10 @@ 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_CCITT_FAX, macro in cairo_surface_t +CAIRO_MIME_TYPE_CCITT_FAX_PARAMS, macro in cairo_surface_t +CAIRO_MIME_TYPE_EPS, macro in cairo_surface_t +CAIRO_MIME_TYPE_EPS_PARAMS, macro in cairo_surface_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 @@ -261,10 +265,17 @@ cairo_pattern_t, typedef in cairo_pattern_t cairo_pattern_type_t, enum in cairo_pattern_t cairo_pdf_get_versions, function in PDF Surfaces +cairo_pdf_metadata_t, enum in PDF Surfaces +cairo_pdf_outline_flags_t, enum in PDF Surfaces +CAIRO_PDF_OUTLINE_ROOT, macro in PDF Surfaces +cairo_pdf_surface_add_outline, function in PDF Surfaces cairo_pdf_surface_create, function in PDF Surfaces cairo_pdf_surface_create_for_stream, function in PDF Surfaces cairo_pdf_surface_restrict_to_version, function in PDF Surfaces +cairo_pdf_surface_set_metadata, function in PDF Surfaces +cairo_pdf_surface_set_page_label, function in PDF Surfaces cairo_pdf_surface_set_size, function in PDF Surfaces +cairo_pdf_surface_set_thumbnail_size, function in PDF Surfaces cairo_pdf_version_t, enum in PDF Surfaces cairo_pdf_version_to_string, function in PDF Surfaces cairo_pop_group, function in cairo_t @@ -469,6 +480,10 @@ T cairo_t, typedef in cairo_t +cairo_tag_begin, function in Tags and Links +CAIRO_TAG_DEST, macro in Tags and Links +cairo_tag_end, function in Tags and Links +CAIRO_TAG_LINK, macro in Tags and Links cairo_text_cluster_allocate, function in text cairo_text_cluster_flags_t, enum in text cairo_text_cluster_free, function in text @@ -502,14 +517,14 @@ cairo_user_to_device_distance, function in Transformations V -cairo_version, function in Version Information CAIRO_VERSION, macro in Version Information +cairo_version, function in Version Information CAIRO_VERSION_ENCODE, macro in Version Information CAIRO_VERSION_MAJOR, macro in Version Information CAIRO_VERSION_MICRO, macro in Version Information CAIRO_VERSION_MINOR, macro in Version Information -cairo_version_string, function in Version Information CAIRO_VERSION_STRING, macro in Version Information +cairo_version_string, function in Version Information CAIRO_VERSION_STRINGIZE, macro in Version Information W diff -Nru cairo-1.14.6/doc/public/xml/api-index-TBD.xml cairo-1.15.10/doc/public/xml/api-index-TBD.xml --- cairo-1.14.6/doc/public/xml/api-index-TBD.xml 2015-12-09 20:45:07.000000000 +0000 +++ cairo-1.15.10/doc/public/xml/api-index-TBD.xml 2017-12-11 21:03:31.000000000 +0000 @@ -1,7 +1,7 @@ - + ]> - + diff -Nru cairo-1.14.6/doc/public/xml/cairo-device.xml cairo-1.15.10/doc/public/xml/cairo-device.xml --- cairo-1.14.6/doc/public/xml/cairo-device.xml 2015-12-09 20:45:07.000000000 +0000 +++ cairo-1.15.10/doc/public/xml/cairo-device.xml 2017-12-11 21:03:31.000000000 +0000 @@ -1,15 +1,13 @@ - + ]> cairo_device_t 3 - - CAIRO Library - +CAIRO Library cairo_device_t @@ -78,11 +76,6 @@ - -Object Hierarchy - - - @@ -145,9 +138,9 @@ 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(). - +Use cairo_device_get_reference_count() to get the number of references +to a cairo_device_t. + Parameters @@ -159,11 +152,10 @@ a cairo_device_t - + Returns the referenced cairo_device_t. - -Since 1.10 +Since: 1.10 cairo_device_destroy () cairo_device_destroy @@ -175,7 +167,7 @@ and all associated resources are freed. See cairo_device_reference(). This function may acquire devices if the last reference was dropped. - + Parameters @@ -187,7 +179,7 @@ a cairo_device_t -Since 1.10 +Since: 1.10 cairo_device_status () cairo_device_status @@ -195,7 +187,7 @@ cairo_device_status (cairo_device_t *device); Checks whether an error has previously occurred for this device. - + Parameters @@ -207,12 +199,11 @@ 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 +Since: 1.10 cairo_device_finish () cairo_device_finish @@ -231,7 +222,7 @@ it hasn't been called already, before freeing the resources associated with the device. This function may acquire devices. - + Parameters @@ -243,7 +234,7 @@ the cairo_device_t to finish -Since 1.10 +Since: 1.10 cairo_device_flush () cairo_device_flush @@ -256,7 +247,7 @@ If the device doesn't support direct access, then this function does nothing. This function may acquire devices. - + Parameters @@ -268,7 +259,7 @@ a cairo_device_t -Since 1.10 +Since: 1.10 cairo_device_get_type () cairo_device_get_type @@ -276,7 +267,7 @@ 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 @@ -288,12 +279,11 @@ a cairo_device_t - + Returns The type of device . - -Since 1.10 +Since: 1.10 cairo_device_get_reference_count () cairo_device_get_reference_count @@ -301,7 +291,7 @@ cairo_device_get_reference_count (cairo_device_t *device); Returns the current reference count of device . - + Parameters @@ -313,13 +303,12 @@ 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 +Since: 1.10 cairo_device_set_user_data () cairo_device_set_user_data @@ -333,7 +322,7 @@ call this function with the key that was used to set it and NULL for data . - + Parameters @@ -356,12 +345,11 @@ 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 +Since: 1.10 cairo_device_get_user_data () cairo_device_get_user_data @@ -372,7 +360,7 @@ using the specified key. If no user data has been attached with the given key this function returns NULL. - + Parameters @@ -388,11 +376,10 @@ attached to - + Returns the user data previously attached or NULL. - -Since 1.10 +Since: 1.10 cairo_device_acquire () cairo_device_acquire @@ -415,7 +402,7 @@ must not have a device acquired when calling them. These functions are marked in the documentation. - + Parameters @@ -427,14 +414,13 @@ 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 +Since: 1.10 cairo_device_release () cairo_device_release @@ -443,7 +429,7 @@ Releases a device previously acquired using cairo_device_acquire(). See that function for details. - + Parameters @@ -455,7 +441,7 @@ a cairo_device_t -Since 1.10 +Since: 1.10 cairo_device_observer_elapsed () cairo_device_observer_elapsed @@ -463,11 +449,7 @@ cairo_device_observer_elapsed (cairo_device_t *device); - -Returns - - - + cairo_device_observer_fill_elapsed () cairo_device_observer_fill_elapsed @@ -475,11 +457,7 @@ cairo_device_observer_fill_elapsed (cairo_device_t *device); - -Returns - - - + cairo_device_observer_glyphs_elapsed () cairo_device_observer_glyphs_elapsed @@ -487,11 +465,7 @@ cairo_device_observer_glyphs_elapsed (cairo_device_t *device); - -Returns - - - + cairo_device_observer_mask_elapsed () cairo_device_observer_mask_elapsed @@ -499,11 +473,7 @@ cairo_device_observer_mask_elapsed (cairo_device_t *device); - -Returns - - - + cairo_device_observer_paint_elapsed () cairo_device_observer_paint_elapsed @@ -511,11 +481,7 @@ cairo_device_observer_paint_elapsed (cairo_device_t *device); - -Returns - - - + cairo_device_observer_print () cairo_device_observer_print @@ -525,11 +491,7 @@ void *closure); - -Returns - - - + cairo_device_observer_stroke_elapsed () cairo_device_observer_stroke_elapsed @@ -537,11 +499,7 @@ cairo_device_observer_stroke_elapsed (cairo_device_t *device); - -Returns - - - + @@ -559,7 +517,7 @@ 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 +Since: 1.10 enum cairo_device_type_t cairo_device_type_t @@ -575,7 +533,7 @@ 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 @@ -629,7 +587,7 @@ -Since 1.10 +Since: 1.10 diff -Nru cairo-1.14.6/doc/public/xml/cairo-font-face.xml cairo-1.15.10/doc/public/xml/cairo-font-face.xml --- cairo-1.14.6/doc/public/xml/cairo-font-face.xml 2015-12-09 20:45:07.000000000 +0000 +++ cairo-1.15.10/doc/public/xml/cairo-font-face.xml 2017-12-11 21:03:31.000000000 +0000 @@ -1,15 +1,13 @@ - + ]> cairo_font_face_t 3 - - CAIRO Library - +CAIRO Library cairo_font_face_t @@ -56,11 +54,6 @@ - -Object Hierarchy - - - @@ -87,9 +80,9 @@ 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(). - +Use cairo_font_face_get_reference_count() to get the number of +references to a cairo_font_face_t. + Parameters @@ -102,11 +95,10 @@ function does nothing). - + Returns the referenced cairo_font_face_t. - -Since 1.0 +Since: 1.0 cairo_font_face_destroy () cairo_font_face_destroy @@ -117,7 +109,7 @@ is zero, then font_face and all associated resources are freed. See cairo_font_face_reference(). - + Parameters @@ -129,7 +121,7 @@ a cairo_font_face_t -Since 1.0 +Since: 1.0 cairo_font_face_status () cairo_font_face_status @@ -137,7 +129,7 @@ cairo_font_face_status (cairo_font_face_t *font_face); Checks whether an error has previously occurred for this font face - + Parameters @@ -149,12 +141,11 @@ a cairo_font_face_t - + Returns CAIRO_STATUS_SUCCESS or another error such as CAIRO_STATUS_NO_MEMORY. - -Since 1.0 +Since: 1.0 cairo_font_face_get_type () cairo_font_face_get_type @@ -162,7 +153,7 @@ 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 @@ -174,12 +165,11 @@ a font face - + Returns The type of font_face . - -Since 1.2 +Since: 1.2 cairo_font_face_get_reference_count () cairo_font_face_get_reference_count @@ -187,7 +177,7 @@ cairo_font_face_get_reference_count (cairo_font_face_t *font_face); Returns the current reference count of font_face . - + Parameters @@ -199,13 +189,12 @@ 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 +Since: 1.4 cairo_font_face_set_user_data () cairo_font_face_set_user_data @@ -219,7 +208,7 @@ call this function with the key that was used to set it and NULL for data . - + Parameters @@ -242,12 +231,11 @@ 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 +Since: 1.0 cairo_font_face_get_user_data () cairo_font_face_get_user_data @@ -258,7 +246,7 @@ using the specified key. If no user data has been attached with the given key this function returns NULL. - + Parameters @@ -274,11 +262,10 @@ attached to - + Returns the user data previously attached or NULL. - -Since 1.0 +Since: 1.0 @@ -299,7 +286,7 @@ 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 +Since: 1.0 enum cairo_font_type_t cairo_font_type_t @@ -324,7 +311,7 @@ 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 @@ -359,7 +346,7 @@ -Since 1.2 +Since: 1.2 diff -Nru cairo-1.14.6/doc/public/xml/cairo-font-options.xml cairo-1.15.10/doc/public/xml/cairo-font-options.xml --- cairo-1.14.6/doc/public/xml/cairo-font-options.xml 2015-12-09 20:45:07.000000000 +0000 +++ cairo-1.15.10/doc/public/xml/cairo-font-options.xml 2017-12-11 21:03:31.000000000 +0000 @@ -1,15 +1,13 @@ - + ]> cairo_font_options_t 3 - - CAIRO Library - +CAIRO Library cairo_font_options_t @@ -74,11 +72,6 @@ - -Object Hierarchy - - - @@ -98,15 +91,14 @@ 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 +Since: 1.0 cairo_font_options_copy () cairo_font_options_copy @@ -115,7 +107,7 @@ Allocates a new font options object copying the option values from original . - + Parameters @@ -127,15 +119,14 @@ 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 +Since: 1.0 cairo_font_options_destroy () cairo_font_options_destroy @@ -143,7 +134,7 @@ 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 @@ -155,7 +146,7 @@ a cairo_font_options_t -Since 1.0 +Since: 1.0 cairo_font_options_status () cairo_font_options_status @@ -163,7 +154,7 @@ cairo_font_options_status (cairo_font_options_t *options); Checks whether an error has previously occurred for this font options object - + Parameters @@ -175,11 +166,10 @@ a cairo_font_options_t - + Returns CAIRO_STATUS_SUCCESS or CAIRO_STATUS_NO_MEMORY - -Since 1.0 +Since: 1.0 cairo_font_options_merge () cairo_font_options_merge @@ -194,7 +184,7 @@ onto options with the operation of CAIRO_OPERATOR_OVER. - + Parameters @@ -209,7 +199,7 @@ another cairo_font_options_t -Since 1.0 +Since: 1.0 cairo_font_options_hash () cairo_font_options_hash @@ -218,7 +208,7 @@ 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 @@ -230,13 +220,12 @@ 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 +Since: 1.0 cairo_font_options_equal () cairo_font_options_equal @@ -244,7 +233,7 @@ cairo_font_options_equal (const cairo_font_options_t *options, const cairo_font_options_t *other); Compares two font options objects for equality. - + Parameters @@ -259,13 +248,12 @@ 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 +Since: 1.0 cairo_font_options_set_antialias () cairo_font_options_set_antialias @@ -274,7 +262,7 @@ 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 @@ -289,14 +277,14 @@ the new antialiasing mode -Since 1.0 +Since: 1.0 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. - + Parameters @@ -308,11 +296,10 @@ a cairo_font_options_t - + Returns the antialiasing mode - -Since 1.0 +Since: 1.0 cairo_font_options_set_subpixel_order () cairo_font_options_set_subpixel_order @@ -324,7 +311,7 @@ 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 @@ -339,7 +326,7 @@ the new subpixel order -Since 1.0 +Since: 1.0 cairo_font_options_get_subpixel_order () cairo_font_options_get_subpixel_order @@ -347,7 +334,7 @@ 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 @@ -359,11 +346,10 @@ a cairo_font_options_t - + Returns the subpixel order for the font options object - -Since 1.0 +Since: 1.0 cairo_font_options_set_hint_style () cairo_font_options_set_hint_style @@ -374,7 +360,7 @@ 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 @@ -389,7 +375,7 @@ the new hint style -Since 1.0 +Since: 1.0 cairo_font_options_get_hint_style () cairo_font_options_get_hint_style @@ -397,7 +383,7 @@ 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 @@ -409,11 +395,10 @@ a cairo_font_options_t - + Returns the hint style for the font options object - -Since 1.0 +Since: 1.0 cairo_font_options_set_hint_metrics () cairo_font_options_set_hint_metrics @@ -424,7 +409,7 @@ controls whether metrics are quantized to integer values in device units. See the documentation for cairo_hint_metrics_t for full details. - + Parameters @@ -439,7 +424,7 @@ the new metrics hinting mode -Since 1.0 +Since: 1.0 cairo_font_options_get_hint_metrics () cairo_font_options_get_hint_metrics @@ -447,7 +432,7 @@ 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 @@ -459,11 +444,10 @@ a cairo_font_options_t - + Returns the metrics hinting mode for the font options object - -Since 1.0 +Since: 1.0 @@ -487,14 +471,14 @@ 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 +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 @@ -533,7 +517,7 @@ -Since 1.0 +Since: 1.0 enum cairo_hint_style_t cairo_hint_style_t @@ -544,7 +528,7 @@ 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 @@ -583,7 +567,7 @@ -Since 1.0 +Since: 1.0 enum cairo_hint_metrics_t cairo_hint_metrics_t @@ -592,7 +576,7 @@ 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. - + Members @@ -617,7 +601,7 @@ -Since 1.0 +Since: 1.0 diff -Nru cairo-1.14.6/doc/public/xml/cairo-ft.xml cairo-1.15.10/doc/public/xml/cairo-ft.xml --- cairo-1.14.6/doc/public/xml/cairo-ft.xml 2015-12-09 20:45:07.000000000 +0000 +++ cairo-1.15.10/doc/public/xml/cairo-ft.xml 2017-12-11 21:03:31.000000000 +0000 @@ -1,15 +1,13 @@ - + ]> FreeType Fonts 3 - - CAIRO Library - +CAIRO Library FreeType Fonts @@ -59,11 +57,6 @@ - -Object Hierarchy - - - @@ -104,7 +97,7 @@ return ERROR; } - + Parameters @@ -130,12 +123,11 @@ 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 +Since: 1.0 cairo_ft_font_face_create_for_pattern () cairo_ft_font_face_create_for_pattern @@ -168,7 +160,7 @@ 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. - + Parameters @@ -182,12 +174,11 @@ 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 +Since: 1.0 cairo_ft_font_options_substitute () cairo_ft_font_options_substitute @@ -199,7 +190,7 @@ 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(). - + Parameters @@ -214,7 +205,7 @@ an existing FcPattern -Since 1.0 +Since: 1.0 cairo_ft_scaled_font_lock_face () cairo_ft_scaled_font_lock_face @@ -237,7 +228,7 @@ 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). - + Parameters @@ -252,22 +243,21 @@ 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 +Since: 1.0 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(). - + Parameters @@ -282,14 +272,14 @@ cairo_ft_font_face_create_for_ft_face()). -Since 1.0 +Since: 1.0 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. - + Parameters @@ -301,11 +291,10 @@ The cairo_ft_font_face_t object to query - + Returns the current set of synthesis options. - -Since 1.12 +Since: 1.12 cairo_ft_font_face_set_synthesize () cairo_ft_font_face_set_synthesize @@ -315,7 +304,7 @@ 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 @@ -330,7 +319,7 @@ the set of synthesis options to enable -Since 1.12 +Since: 1.12 cairo_ft_font_face_unset_synthesize () cairo_ft_font_face_unset_synthesize @@ -338,7 +327,7 @@ cairo_ft_font_face_unset_synthesize (cairo_font_face_t *font_face, unsigned int synth_flags); See cairo_ft_font_face_set_synthesize(). - + Parameters @@ -353,7 +342,7 @@ the set of synthesis options to disable -Since 1.12 +Since: 1.12 @@ -365,7 +354,7 @@ Defined if the FreeType font backend is available. This macro can be used to conditionally compile backend-specific code. -Since 1.0 +Since: 1.0 CAIRO_HAS_FC_FONT CAIRO_HAS_FC_FONT @@ -374,7 +363,7 @@ 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 +Since: 1.10 enum cairo_ft_synthesize_t cairo_ft_synthesize_t @@ -386,7 +375,7 @@ 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 @@ -406,7 +395,7 @@ -Since 1.12 +Since: 1.12 diff -Nru cairo-1.14.6/doc/public/xml/cairo-image.xml cairo-1.15.10/doc/public/xml/cairo-image.xml --- cairo-1.14.6/doc/public/xml/cairo-image.xml 2015-12-09 20:45:07.000000000 +0000 +++ cairo-1.15.10/doc/public/xml/cairo-image.xml 2017-12-11 21:03:31.000000000 +0000 @@ -1,15 +1,13 @@ - + ]> Image Surfaces 3 - - CAIRO Library - +CAIRO Library Image Surfaces @@ -58,11 +56,6 @@ - -Object Hierarchy - - - @@ -94,7 +87,7 @@ width, height, stride); - + Parameters @@ -109,13 +102,12 @@ 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 +Since: 1.6 cairo_image_surface_create () cairo_image_surface_create @@ -124,13 +116,11 @@ 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 +dimensions. Initially the surface contents are set to 0. +(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 @@ -148,7 +138,7 @@ 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 @@ -156,8 +146,7 @@ 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 +Since: 1.0 cairo_image_surface_create_for_data () cairo_image_surface_create_for_data @@ -182,7 +171,7 @@ 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. - + Parameters @@ -211,7 +200,7 @@ buffer. - + Returns a pointer to the newly created surface. The caller owns the surface and should call cairo_surface_destroy() when done @@ -224,8 +213,7 @@ 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 +Since: 1.0 cairo_image_surface_get_data () cairo_image_surface_get_data @@ -237,7 +225,7 @@ 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. - + Parameters @@ -249,21 +237,20 @@ 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 +Since: 1.2 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. - + Parameters @@ -275,18 +262,17 @@ a cairo_image_surface_t - + Returns the format of the surface - -Since 1.2 +Since: 1.2 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. - + Parameters @@ -298,18 +284,17 @@ a cairo_image_surface_t - + Returns the width of the surface in pixels. - -Since 1.0 +Since: 1.0 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. - + Parameters @@ -321,18 +306,17 @@ a cairo_image_surface_t - + Returns the height of the surface in pixels. - -Since 1.0 +Since: 1.0 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 - + Parameters @@ -344,15 +328,14 @@ 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 +Since: 1.2 @@ -365,14 +348,14 @@ 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 +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 @@ -430,7 +413,7 @@ -Since 1.0 +Since: 1.0 diff -Nru cairo-1.14.6/doc/public/xml/cairo-matrix.xml cairo-1.15.10/doc/public/xml/cairo-matrix.xml --- cairo-1.14.6/doc/public/xml/cairo-matrix.xml 2015-12-09 20:45:07.000000000 +0000 +++ cairo-1.15.10/doc/public/xml/cairo-matrix.xml 2017-12-11 21:03:31.000000000 +0000 @@ -1,15 +1,13 @@ - + ]> cairo_matrix_t 3 - - CAIRO Library - +CAIRO Library cairo_matrix_t @@ -65,11 +63,6 @@ - -Object Hierarchy - - - @@ -116,7 +109,7 @@ x_new = xx * x + xy * y + x0; y_new = yx * x + yy * y + y0; - + Parameters @@ -146,7 +139,7 @@ Y translation component of the affine transformation -Since 1.0 +Since: 1.0 cairo_matrix_init_identity () cairo_matrix_init_identity @@ -154,7 +147,7 @@ cairo_matrix_init_identity (cairo_matrix_t *matrix); Modifies matrix to be an identity transformation. - + Parameters @@ -166,7 +159,7 @@ a cairo_matrix_t -Since 1.0 +Since: 1.0 cairo_matrix_init_translate () cairo_matrix_init_translate @@ -179,7 +172,7 @@ and ty in the X and Y dimensions, respectively. - + Parameters @@ -197,7 +190,7 @@ amount to translate in the Y direction -Since 1.0 +Since: 1.0 cairo_matrix_init_scale () cairo_matrix_init_scale @@ -210,7 +203,7 @@ and sy in the X and Y dimensions, respectively. - + Parameters @@ -228,7 +221,7 @@ scale factor in the Y direction -Since 1.0 +Since: 1.0 cairo_matrix_init_rotate () cairo_matrix_init_rotate @@ -238,7 +231,7 @@ Initialized matrix to a transformation that rotates by radians . - + Parameters @@ -257,7 +250,7 @@ direction. -Since 1.0 +Since: 1.0 cairo_matrix_translate () cairo_matrix_translate @@ -274,7 +267,7 @@ and ty , then apply the original transformation to the coordinates. - + Parameters @@ -292,7 +285,7 @@ amount to translate in the Y direction -Since 1.0 +Since: 1.0 cairo_matrix_scale () cairo_matrix_scale @@ -308,7 +301,7 @@ by sx and sy , then apply the original transformation to the coordinates. - + Parameters @@ -326,7 +319,7 @@ scale factor in the Y direction -Since 1.0 +Since: 1.0 cairo_matrix_rotate () cairo_matrix_rotate @@ -340,7 +333,7 @@ coordinates by radians , then apply the original transformation to the coordinates. - + Parameters @@ -359,7 +352,7 @@ direction. -Since 1.0 +Since: 1.0 cairo_matrix_invert () cairo_matrix_invert @@ -370,7 +363,7 @@ all transformation matrices have inverses; if the matrix collapses points together (it is degenerate), then it has no inverse and this function will fail. - + Parameters @@ -382,15 +375,14 @@ 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 +Since: 1.0 cairo_matrix_multiply () cairo_matrix_multiply @@ -412,7 +404,7 @@ to be identical to either a or b . - + Parameters @@ -430,7 +422,7 @@ a cairo_matrix_t -Since 1.0 +Since: 1.0 cairo_matrix_transform_distance () cairo_matrix_transform_distance @@ -467,7 +459,7 @@ ) for all values of x1 and x2 . - + Parameters @@ -485,7 +477,7 @@ Y component of a distance vector. An in/out parameter -Since 1.0 +Since: 1.0 cairo_matrix_transform_point () cairo_matrix_transform_point @@ -497,7 +489,7 @@ , y ) by matrix . - + Parameters @@ -515,7 +507,7 @@ Y position. An in/out parameter -Since 1.0 +Since: 1.0 @@ -536,7 +528,7 @@ x_new = xx * x + xy * y + x0; y_new = yx * x + yy * y + y0; - + Members @@ -544,39 +536,33 @@ -double xx; -xx component of the affine transformation +double xx; xx component of the affine transformation -double yx; -yx component of the affine transformation +double yx; yx component of the affine transformation -double xy; -xy component of the affine transformation +double xy; xy component of the affine transformation -double yy; -yy component of the affine transformation +double yy; yy component of the affine transformation -double x0; -X translation component of the affine transformation +double x0; X translation component of the affine transformation -double y0; -Y translation component of the affine transformation +double y0; Y translation component of the affine transformation -Since 1.0 +Since: 1.0 diff -Nru cairo-1.14.6/doc/public/xml/cairo-paths.xml cairo-1.15.10/doc/public/xml/cairo-paths.xml --- cairo-1.14.6/doc/public/xml/cairo-paths.xml 2015-12-09 20:45:07.000000000 +0000 +++ cairo-1.15.10/doc/public/xml/cairo-paths.xml 2017-12-11 21:03:31.000000000 +0000 @@ -1,15 +1,13 @@ - + ]> Paths 3 - - CAIRO Library - +CAIRO Library Paths @@ -85,11 +83,6 @@ - -Object Hierarchy - - - @@ -120,7 +113,7 @@ path->status will contain the same status that would be returned by cairo_status(). - + Parameters @@ -132,13 +125,12 @@ 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 +Since: 1.0 cairo_copy_path_flat () cairo_copy_path_flat @@ -165,7 +157,7 @@ path->status will contain the same status that would be returned by cairo_status(). - + Parameters @@ -177,13 +169,12 @@ 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 +Since: 1.0 cairo_path_destroy () cairo_path_destroy @@ -198,7 +189,7 @@ 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. - + Parameters @@ -211,7 +202,7 @@ cairo_copy_path_flat(). -Since 1.0 +Since: 1.0 cairo_append_path () cairo_append_path @@ -226,7 +217,7 @@ 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. - + Parameters @@ -241,7 +232,7 @@ path to be appended -Since 1.0 +Since: 1.0 cairo_has_current_point () cairo_has_current_point @@ -249,7 +240,7 @@ 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 @@ -261,11 +252,10 @@ a cairo context - + Returns whether a current point is defined. - -Since 1.6 +Since: 1.6 cairo_get_current_point () cairo_get_current_point @@ -295,7 +285,7 @@ cairo_show_text(). Some functions unset the current path and as a result, current point: cairo_fill(), cairo_stroke(). - + Parameters @@ -313,7 +303,7 @@ return value for Y coordinate of the current point -Since 1.0 +Since: 1.0 cairo_new_path () cairo_new_path @@ -321,7 +311,7 @@ cairo_new_path (cairo_t *cr); Clears the current path. After this call there will be no path and no current point. - + Parameters @@ -333,7 +323,7 @@ a cairo context -Since 1.0 +Since: 1.0 cairo_new_sub_path () cairo_new_sub_path @@ -348,7 +338,7 @@ makes things easier as it is no longer necessary to manually compute the arc's initial coordinates for a call to cairo_move_to(). - + Parameters @@ -360,7 +350,7 @@ a cairo context -Since 1.2 +Since: 1.2 cairo_close_path () cairo_close_path @@ -384,7 +374,7 @@ 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. - + Parameters @@ -396,7 +386,7 @@ a cairo context -Since 1.0 +Since: 1.0 cairo_arc () cairo_arc @@ -451,7 +441,7 @@ cairo_arc (cr, 0., 0., 1., 0., 2 * M_PI); cairo_restore (cr); - + Parameters @@ -478,7 +468,7 @@ the end angle, in radians -Since 1.0 +Since: 1.0 cairo_arc_negative () cairo_arc_negative @@ -504,7 +494,7 @@ . See cairo_arc() for more details. This function differs only in the direction of the arc between the two angles. - + Parameters @@ -531,7 +521,7 @@ the end angle, in radians -Since 1.0 +Since: 1.0 cairo_curve_to () cairo_curve_to @@ -561,7 +551,7 @@ , x1 , y1 ). - + Parameters @@ -591,7 +581,7 @@ the Y coordinate of the end of the curve -Since 1.0 +Since: 1.0 cairo_line_to () cairo_line_to @@ -611,7 +601,7 @@ , x , y ). - + Parameters @@ -629,7 +619,7 @@ the Y coordinate of the end of the new line -Since 1.0 +Since: 1.0 cairo_move_to () cairo_move_to @@ -641,7 +631,7 @@ , y ). - + Parameters @@ -659,7 +649,7 @@ the Y coordinate of the new position -Since 1.0 +Since: 1.0 cairo_rectangle () cairo_rectangle @@ -681,7 +671,7 @@ cairo_rel_line_to (cr, -width, 0); cairo_close_path (cr); - + Parameters @@ -705,7 +695,7 @@ the height of the rectangle -Since 1.0 +Since: 1.0 cairo_glyph_path () cairo_glyph_path @@ -716,7 +706,7 @@ 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(). - + Parameters @@ -734,7 +724,7 @@ number of glyphs to show -Since 1.0 +Since: 1.0 cairo_text_path () cairo_text_path @@ -756,7 +746,7 @@ 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. - + Parameters @@ -771,7 +761,7 @@ a NUL-terminated string of text encoded in UTF-8, or NULL -Since 1.0 +Since: 1.0 cairo_rel_curve_to () cairo_rel_curve_to @@ -818,7 +808,7 @@ so will cause cr to shutdown with a status of CAIRO_STATUS_NO_CURRENT_POINT. - + Parameters @@ -848,7 +838,7 @@ the Y offset to the end of the curve -Since 1.0 +Since: 1.0 cairo_rel_line_to () cairo_rel_line_to @@ -876,7 +866,7 @@ so will cause cr to shutdown with a status of CAIRO_STATUS_NO_CURRENT_POINT. - + Parameters @@ -894,7 +884,7 @@ the Y offset to the end of the new line -Since 1.0 +Since: 1.0 cairo_rel_move_to () cairo_rel_move_to @@ -918,7 +908,7 @@ so will cause cr to shutdown with a status of CAIRO_STATUS_NO_CURRENT_POINT. - + Parameters @@ -936,7 +926,7 @@ the Y offset -Since 1.0 +Since: 1.0 cairo_path_extents () cairo_path_extents @@ -963,7 +953,7 @@ considered as contributing to the extents. However, a lone cairo_move_to() will not contribute to the results of cairo_path_extents(). - + Parameters @@ -987,7 +977,7 @@ bottom of the resulting extents -Since 1.6 +Since: 1.6 @@ -1011,7 +1001,7 @@ 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 @@ -1019,24 +1009,21 @@ -cairo_status_t status; -the current error status +cairo_status_t status; the current error status -cairo_path_data_t *data; -the elements in the path +cairo_path_data_t *data; the elements in the path -int num_data; -the number of elements in the data array +int num_data; the number of elements in the data array -Since 1.0 +Since: 1.0 union cairo_path_data_t cairo_path_data_t @@ -1095,14 +1082,14 @@ 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 +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 @@ -1131,7 +1118,7 @@ -Since 1.0 +Since: 1.0 diff -Nru cairo-1.14.6/doc/public/xml/cairo-pattern.xml cairo-1.15.10/doc/public/xml/cairo-pattern.xml --- cairo-1.14.6/doc/public/xml/cairo-pattern.xml 2015-12-09 20:45:07.000000000 +0000 +++ cairo-1.15.10/doc/public/xml/cairo-pattern.xml 2017-12-11 21:03:31.000000000 +0000 @@ -1,15 +1,13 @@ - + ]> cairo_pattern_t 3 - - CAIRO Library - +CAIRO Library cairo_pattern_t @@ -122,11 +120,6 @@ - -Object Hierarchy - - - @@ -168,7 +161,7 @@ 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. - + Parameters @@ -192,7 +185,7 @@ blue component of color -Since 1.0 +Since: 1.0 cairo_pattern_add_color_stop_rgba () cairo_pattern_add_color_stop_rgba @@ -217,7 +210,7 @@ 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. - + Parameters @@ -244,7 +237,7 @@ alpha component of color -Since 1.0 +Since: 1.0 cairo_pattern_get_color_stop_count () cairo_pattern_get_color_stop_count @@ -253,7 +246,7 @@ int *count); Gets the number of color stops specified in the given gradient pattern. - + Parameters @@ -268,14 +261,13 @@ 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 +Since: 1.4 cairo_pattern_get_color_stop_rgba () cairo_pattern_get_color_stop_rgba @@ -293,7 +285,7 @@ range from 0 to n-1 where n is the number returned by cairo_pattern_get_color_stop_count(). - + Parameters @@ -323,15 +315,14 @@ 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 +Since: 1.4 cairo_pattern_create_rgb () cairo_pattern_create_rgb @@ -343,7 +334,7 @@ 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 @@ -361,7 +352,7 @@ 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 @@ -370,8 +361,7 @@ 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 +Since: 1.0 cairo_pattern_create_rgba () cairo_pattern_create_rgba @@ -386,7 +376,7 @@ If the values passed in are outside that range, they will be clamped. - + Parameters @@ -407,7 +397,7 @@ 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 @@ -416,8 +406,7 @@ 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 +Since: 1.0 cairo_pattern_get_rgba () cairo_pattern_get_rgba @@ -428,7 +417,7 @@ double *blue, double *alpha); Gets the solid color for a solid color pattern. - + Parameters @@ -452,20 +441,19 @@ 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 +Since: 1.4 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. - + Parameters @@ -477,7 +465,7 @@ the surface - + Returns the newly created cairo_pattern_t if successful, or an error pattern in case of no memory. The caller owns the @@ -486,8 +474,7 @@ 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 +Since: 1.0 cairo_pattern_get_surface () cairo_pattern_get_surface @@ -498,7 +485,7 @@ surface is owned by the pattern; the caller should call cairo_surface_reference() if the surface is to be retained. - + Parameters @@ -513,13 +500,12 @@ 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 +Since: 1.4 cairo_pattern_create_linear () cairo_pattern_create_linear @@ -536,7 +522,7 @@ 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(). - + Parameters @@ -557,7 +543,7 @@ 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 @@ -566,8 +552,7 @@ 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 +Since: 1.0 cairo_pattern_get_linear_points () cairo_pattern_get_linear_points @@ -578,7 +563,7 @@ double *x1, double *y1); Gets the gradient endpoints for a linear gradient. - + Parameters @@ -602,14 +587,13 @@ 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 +Since: 1.4 cairo_pattern_create_radial () cairo_pattern_create_radial @@ -628,7 +612,7 @@ 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(). - + Parameters @@ -655,7 +639,7 @@ 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 @@ -664,8 +648,7 @@ 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 +Since: 1.0 cairo_pattern_get_radial_circles () cairo_pattern_get_radial_circles @@ -679,7 +662,7 @@ double *r1); Gets the gradient endpoint circles for a radial gradient, each specified as a center coordinate and a radius. - + Parameters @@ -709,14 +692,13 @@ 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 +Since: 1.4 cairo_pattern_create_mesh () cairo_pattern_create_mesh @@ -841,7 +823,7 @@ pattern, pattern space is identical to user space, but the relationship between the spaces can be changed with cairo_pattern_set_matrix(). - + Returns the newly created cairo_pattern_t if successful, or an error pattern in case of no memory. The caller owns the returned @@ -850,8 +832,7 @@ 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 +Since: 1.12 cairo_mesh_pattern_begin_patch () cairo_mesh_pattern_begin_patch @@ -872,7 +853,7 @@ already has a current patch, it will be put into an error status with a status of CAIRO_STATUS_INVALID_MESH_CONSTRUCTION. - + Parameters @@ -884,7 +865,7 @@ a cairo_pattern_t -Since 1.12 +Since: 1.12 cairo_mesh_pattern_end_patch () cairo_mesh_pattern_end_patch @@ -904,7 +885,7 @@ will be put into an error status with a status of CAIRO_STATUS_INVALID_MESH_CONSTRUCTION. - + Parameters @@ -916,7 +897,7 @@ a cairo_pattern_t -Since 1.12 +Since: 1.12 cairo_mesh_pattern_move_to () cairo_mesh_pattern_move_to @@ -938,7 +919,7 @@ will be put into an error status with a status of CAIRO_STATUS_INVALID_MESH_CONSTRUCTION. - + Parameters @@ -956,7 +937,7 @@ the Y coordinate of the new position -Since 1.12 +Since: 1.12 cairo_mesh_pattern_line_to () cairo_mesh_pattern_line_to @@ -987,7 +968,7 @@ will be put into an error status with a status of CAIRO_STATUS_INVALID_MESH_CONSTRUCTION. - + Parameters @@ -1005,7 +986,7 @@ the Y coordinate of the end of the new line -Since 1.12 +Since: 1.12 cairo_mesh_pattern_curve_to () cairo_mesh_pattern_curve_to @@ -1046,7 +1027,7 @@ will be put into an error status with a status of CAIRO_STATUS_INVALID_MESH_CONSTRUCTION. - + Parameters @@ -1076,7 +1057,7 @@ the Y coordinate of the end of the curve -Since 1.12 +Since: 1.12 cairo_mesh_pattern_set_control_point () cairo_mesh_pattern_set_control_point @@ -1102,7 +1083,7 @@ pattern will be put into an error status with a status of CAIRO_STATUS_INVALID_MESH_CONSTRUCTION. - + Parameters @@ -1123,7 +1104,7 @@ the Y coordinate of the control point -Since 1.12 +Since: 1.12 cairo_mesh_pattern_set_corner_color_rgb () cairo_mesh_pattern_set_corner_color_rgb @@ -1152,7 +1133,7 @@ pattern will be put into an error status with a status of CAIRO_STATUS_INVALID_MESH_CONSTRUCTION. - + Parameters @@ -1176,7 +1157,7 @@ blue component of color -Since 1.12 +Since: 1.12 cairo_mesh_pattern_set_corner_color_rgba () cairo_mesh_pattern_set_corner_color_rgba @@ -1206,7 +1187,7 @@ pattern will be put into an error status with a status of CAIRO_STATUS_INVALID_MESH_CONSTRUCTION. - + Parameters @@ -1233,7 +1214,7 @@ alpha component of color -Since 1.12 +Since: 1.12 cairo_mesh_pattern_get_patch_count () cairo_mesh_pattern_get_patch_count @@ -1244,7 +1225,7 @@ 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 @@ -1259,14 +1240,13 @@ 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 +Since: 1.12 cairo_mesh_pattern_get_path () cairo_mesh_pattern_get_path @@ -1279,7 +1259,7 @@ patch_num can range from 0 to n-1 where n is the number returned by cairo_mesh_pattern_get_patch_count(). - + Parameters @@ -1294,7 +1274,7 @@ 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 @@ -1304,8 +1284,7 @@ . If pattern is not a mesh pattern, a path with status CAIRO_STATUS_PATTERN_TYPE_MISMATCH is returned. - -Since 1.12 +Since: 1.12 cairo_mesh_pattern_get_control_point () cairo_mesh_pattern_get_control_point @@ -1325,7 +1304,7 @@ Valid values for point_num are from 0 to 3 and identify the control points as explained in cairo_pattern_create_mesh(). - + Parameters @@ -1349,7 +1328,7 @@ return value for the y coordinate of the control point, or NULL - + Returns CAIRO_STATUS_SUCCESS, or CAIRO_STATUS_INVALID_INDEX if patch_num @@ -1358,8 +1337,7 @@ . If pattern is not a mesh pattern, CAIRO_STATUS_PATTERN_TYPE_MISMATCH is returned. - -Since 1.12 +Since: 1.12 cairo_mesh_pattern_get_corner_color_rgba () cairo_mesh_pattern_get_corner_color_rgba @@ -1382,7 +1360,7 @@ Valid values for corner_num are from 0 to 3 and identify the corners as explained in cairo_pattern_create_mesh(). - + Parameters @@ -1412,7 +1390,7 @@ return value for alpha component of color, or NULL - + Returns CAIRO_STATUS_SUCCESS, or CAIRO_STATUS_INVALID_INDEX if patch_num @@ -1422,8 +1400,7 @@ pattern is not a mesh pattern, CAIRO_STATUS_PATTERN_TYPE_MISMATCH is returned. - -Since 1.12 +Since: 1.12 cairo_pattern_reference () cairo_pattern_reference @@ -1434,9 +1411,9 @@ 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(). - +Use cairo_pattern_get_reference_count() to get the number of +references to a cairo_pattern_t. + Parameters @@ -1448,11 +1425,10 @@ a cairo_pattern_t - + Returns the referenced cairo_pattern_t. - -Since 1.0 +Since: 1.0 cairo_pattern_destroy () cairo_pattern_destroy @@ -1463,7 +1439,7 @@ zero, then pattern and all associated resources are freed. See cairo_pattern_reference(). - + Parameters @@ -1475,7 +1451,7 @@ a cairo_pattern_t -Since 1.0 +Since: 1.0 cairo_pattern_status () cairo_pattern_status @@ -1483,7 +1459,7 @@ cairo_pattern_status (cairo_pattern_t *pattern); Checks whether an error has previously occurred for this pattern. - + Parameters @@ -1495,13 +1471,12 @@ 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 +Since: 1.0 cairo_pattern_set_extend () cairo_pattern_set_extend @@ -1513,7 +1488,7 @@ strategy. The default extend mode is CAIRO_EXTEND_NONE for surface patterns and CAIRO_EXTEND_PAD for gradient patterns. - + Parameters @@ -1529,7 +1504,7 @@ pattern will be drawn -Since 1.0 +Since: 1.0 cairo_pattern_get_extend () cairo_pattern_get_extend @@ -1537,7 +1512,7 @@ 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 @@ -1549,12 +1524,11 @@ a cairo_pattern_t - + Returns the current extend strategy used for drawing the pattern. - -Since 1.0 +Since: 1.0 cairo_pattern_set_filter () cairo_pattern_set_filter @@ -1576,7 +1550,7 @@ cairo_set_source_surface (cr, image, x, y); cairo_pattern_set_filter (cairo_get_source (cr), CAIRO_FILTER_NEAREST); - + Parameters @@ -1592,7 +1566,7 @@ the pattern -Since 1.0 +Since: 1.0 cairo_pattern_get_filter () cairo_pattern_get_filter @@ -1600,7 +1574,7 @@ 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 @@ -1612,11 +1586,10 @@ a cairo_pattern_t - + Returns the current filter used for resizing the pattern. - -Since 1.0 +Since: 1.0 cairo_pattern_set_matrix () cairo_pattern_set_matrix @@ -1644,7 +1617,7 @@ 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 @@ -1659,7 +1632,7 @@ a cairo_matrix_t -Since 1.0 +Since: 1.0 cairo_pattern_get_matrix () cairo_pattern_get_matrix @@ -1668,7 +1641,7 @@ cairo_matrix_t *matrix); Stores the pattern's transformation matrix into matrix . - + Parameters @@ -1683,15 +1656,15 @@ return value for the matrix -Since 1.0 +Since: 1.0 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. - +Get the pattern's type. See cairo_pattern_type_t for available +types. + Parameters @@ -1703,12 +1676,11 @@ a cairo_pattern_t - + Returns The type of pattern . - -Since 1.2 +Since: 1.2 cairo_pattern_get_reference_count () cairo_pattern_get_reference_count @@ -1716,7 +1688,7 @@ cairo_pattern_get_reference_count (cairo_pattern_t *pattern); Returns the current reference count of pattern . - + Parameters @@ -1728,13 +1700,12 @@ 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 +Since: 1.4 cairo_pattern_set_user_data () cairo_pattern_set_user_data @@ -1748,7 +1719,7 @@ call this function with the key that was used to set it and NULL for data . - + Parameters @@ -1771,12 +1742,11 @@ 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 +Since: 1.4 cairo_pattern_get_user_data () cairo_pattern_get_user_data @@ -1787,7 +1757,7 @@ using the specified key. If no user data has been attached with the given key this function returns NULL. - + Parameters @@ -1803,11 +1773,10 @@ attached to - + Returns the user data previously attached or NULL. - -Since 1.4 +Since: 1.4 @@ -1830,7 +1799,7 @@ 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 +Since: 1.0 enum cairo_extend_t cairo_extend_t @@ -1842,7 +1811,7 @@ 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 @@ -1875,7 +1844,7 @@ -Since 1.0 +Since: 1.0 enum cairo_filter_t cairo_filter_t @@ -1883,7 +1852,7 @@ 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 @@ -1926,7 +1895,7 @@ -Since 1.0 +Since: 1.0 enum cairo_pattern_type_t cairo_pattern_type_t @@ -1945,7 +1914,7 @@ 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 @@ -1985,7 +1954,7 @@ -Since 1.2 +Since: 1.2 diff -Nru cairo-1.14.6/doc/public/xml/cairo-pdf.xml cairo-1.15.10/doc/public/xml/cairo-pdf.xml --- cairo-1.14.6/doc/public/xml/cairo-pdf.xml 2015-12-09 20:45:07.000000000 +0000 +++ cairo-1.15.10/doc/public/xml/cairo-pdf.xml 2017-12-11 21:03:31.000000000 +0000 @@ -1,15 +1,13 @@ - + ]> PDF Surfaces 3 - - CAIRO Library - +CAIRO Library PDF Surfaces @@ -35,6 +33,14 @@ cairo_pdf_version_to_string () void cairo_pdf_surface_set_size () +int +cairo_pdf_surface_add_outline () +void +cairo_pdf_surface_set_metadata () +void +cairo_pdf_surface_set_page_label () +void +cairo_pdf_surface_set_thumbnail_size () @@ -48,17 +54,15 @@ #defineCAIRO_HAS_PDF_SURFACE +#defineCAIRO_PDF_OUTLINE_ROOT +enumcairo_pdf_outline_flags_t +enumcairo_pdf_metadata_tenumcairo_pdf_version_t - -Object Hierarchy - - - @@ -68,18 +72,54 @@ 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 described in +CAIRO_MIME_TYPE_JBIG2_GLOBAL_ID, +CAIRO_MIME_TYPE_CCITT_FAX, CAIRO_MIME_TYPE_CCITT_FAX_PARAMS. +JBIG2 ImagesJBIG2 data in PDF must be in the embedded format as described 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 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 identifier. At least 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 +embedded once and shared by all JBIG2 images with the same CAIRO_MIME_TYPE_JBIG2_GLOBAL_ID. + +CCITT Fax ImagesThe CAIRO_MIME_TYPE_CCITT_FAX mime data requires a number of decoding +parameters These parameters are specified using CAIRO_MIME_TYPE_CCITT_FAX_PARAMS. +CAIRO_MIME_TYPE_CCITT_FAX_PARAMS mime data must contain a string of the form +"param1=value1 param2=value2 ...". +Columns +: [required] An integer specifying the width of the image in pixels. +Rows +: [required] An integer specifying the height of the image in scan lines. +K +: [optional] An integer identifying the encoding scheme used. < 0 +is 2 dimensional Group 4, = 0 is Group3 1 dimensional, > 0 is mixed 1 +and 2 dimensional encoding. Default is 0. +EndOfLine +: [optional] If true end-of-line bit patterns are present. Default is false. +EncodedByteAlign +: [optional] If true the end of line is padded +with 0 bits so the next line begins on a byte boundary. Default is false. +EndOfBlock +: [optional] If true the data contains an end-of-block pattern. Default is true. +BlackIs1 +: [optional] If true 1 bits are black pixels. Default is false. +DamagedRowsBeforeError +: [optional] An integer specifying the +number of damages rows tolerated before an error occurs. Default is 0. +Boolean values may be "true" or "false", or 1 or 0. +These parameters are the same as the CCITTFaxDecode parameters in the +PostScript Language Reference +and Portable Document Format (PDF). +Refer to these documents for further details. +An example CAIRO_MIME_TYPE_CCITT_FAX_PARAMS string is: + +"Columns=10230 Rows=40000 K=1 EndOfLine=true EncodedByteAlign=1 BlackIs1=false" + + @@ -94,7 +134,7 @@ Creates a PDF surface of the specified size in points to be written to filename . - + Parameters @@ -115,7 +155,7 @@ 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 @@ -123,8 +163,7 @@ 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 +Since: 1.2 cairo_pdf_surface_create_for_stream () cairo_pdf_surface_create_for_stream @@ -137,7 +176,7 @@ incrementally to the stream represented by write_func and closure . - + Parameters @@ -164,7 +203,7 @@ 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 @@ -172,8 +211,7 @@ 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 +Since: 1.2 cairo_pdf_surface_restrict_to_version () cairo_pdf_surface_restrict_to_version @@ -187,7 +225,7 @@ have been performed on the given surface. The simplest way to do this is to call this function immediately after creating the surface. - + Parameters @@ -202,7 +240,7 @@ PDF version -Since 1.10 +Since: 1.10 cairo_pdf_get_versions () cairo_pdf_get_versions @@ -211,7 +249,7 @@ int *num_versions); Used to retrieve the list of supported versions. See cairo_pdf_surface_restrict_to_version(). - + Parameters @@ -226,7 +264,7 @@ list length -Since 1.10 +Since: 1.10 cairo_pdf_version_to_string () cairo_pdf_version_to_string @@ -237,7 +275,7 @@ 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 @@ -249,11 +287,10 @@ a version id - + Returns the string associated to given version. - -Since 1.10 +Since: 1.10 cairo_pdf_surface_set_size () cairo_pdf_surface_set_size @@ -268,7 +305,7 @@ 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 @@ -286,7 +323,141 @@ new surface height, in points (1 point == 1/72.0 inch) -Since 1.2 +Since: 1.2 + +cairo_pdf_surface_add_outline () +cairo_pdf_surface_add_outline +int +cairo_pdf_surface_add_outline (cairo_surface_t *surface, + int parent_id, + const char *utf8, + const char *link_attribs, + cairo_pdf_outline_flags_t flags); +Add an item to the document outline hierarchy with the name utf8 + +that links to the location specified by link_attribs +. Link +attributes have the same keys and values as the Link Tag, +excluding the "rect" attribute. The item will be a child of the +item with id parent_id +. Use CAIRO_PDF_OUTLINE_ROOT as the parent +id of top level items. + +Parameters + + + + + + +surface +a PDF cairo_surface_t + +parent_id +the id of the parent item or CAIRO_PDF_OUTLINE_ROOT if this is a top level item. + +utf8 +the name of the outline + +link_attribs +the link attributes specifying where this outline links to + +flags +outline item flags + + + +Returns + the id for the added item. +Since: 1.16 + +cairo_pdf_surface_set_metadata () +cairo_pdf_surface_set_metadata +void +cairo_pdf_surface_set_metadata (cairo_surface_t *surface, + cairo_pdf_metadata_t metadata, + const char *utf8); +Set document metadata. The CAIRO_PDF_METADATA_CREATE_DATE and +CAIRO_PDF_METADATA_MOD_DATE values must be in ISO-8601 format: +YYYY-MM-DDThh:mm:ss. An optional timezone of the form "[+/-]hh:mm" +or "Z" for UTC time can be appended. All other metadata values can be any UTF-8 +string. +For example: + +cairo_pdf_surface_set_metadata (surface, CAIRO_PDF_METADATA_TITLE, "My Document"); +cairo_pdf_surface_set_metadata (surface, CAIRO_PDF_METADATA_CREATE_DATE, "2015-12-31T23:59+02:00"); + + +Parameters + + + + + + +surface +a PDF cairo_surface_t + +metadata +The metadata item to set. + +utf8 +metadata value + + +Since: 1.16 + +cairo_pdf_surface_set_page_label () +cairo_pdf_surface_set_page_label +void +cairo_pdf_surface_set_page_label (cairo_surface_t *surface, + const char *utf8); +Set page label for the current page. + +Parameters + + + + + + +surface +a PDF cairo_surface_t + +utf8 +The page label. + + +Since: 1.16 + +cairo_pdf_surface_set_thumbnail_size () +cairo_pdf_surface_set_thumbnail_size +void +cairo_pdf_surface_set_thumbnail_size (cairo_surface_t *surface, + int width, + int height); +Set the thumbnail image size for the current and all subsequent +pages. Setting a width or height of 0 disables thumbnails for the +current and subsequent pages. + +Parameters + + + + + + +surface +a PDF cairo_surface_t + +width +Thumbnail width. + +height +Thumbnail height + + +Since: 1.16 @@ -298,13 +469,102 @@ Defined if the PDF surface backend is available. This macro can be used to conditionally compile backend-specific code. -Since 1.2 +Since: 1.2 + +CAIRO_PDF_OUTLINE_ROOT +CAIRO_PDF_OUTLINE_ROOT +#define CAIRO_PDF_OUTLINE_ROOT 0 + +The root outline item in cairo_pdf_surface_add_outline(). +Since: 1.16 + +enum cairo_pdf_outline_flags_t +cairo_pdf_outline_flags_t +cairo_pdf_outline_flags_t is used by the +cairo_pdf_surface_add_outline() function specify the attributes of +an outline item. These flags may be bitwise-or'd to produce any +combination of flags. + +Members + + + + + + +CAIRO_PDF_OUTLINE_FLAG_OPEN +The outline item defaults to open in the PDF viewer (Since 1.16) + + + +CAIRO_PDF_OUTLINE_FLAG_BOLD +The outline item is displayed by the viewer in bold text (Since 1.16) + + + +CAIRO_PDF_OUTLINE_FLAG_ITALIC +The outline item is displayed by the viewer in italic text (Since 1.16) + + + + +Since: 1.16 + +enum cairo_pdf_metadata_t +cairo_pdf_metadata_t +cairo_pdf_metadata_t is used by the +cairo_pdf_surface_set_metadata() function specify the metadata to set. + +Members + + + + + + +CAIRO_PDF_METADATA_TITLE +The document title (Since 1.16) + + + +CAIRO_PDF_METADATA_AUTHOR +The document author (Since 1.16) + + + +CAIRO_PDF_METADATA_SUBJECT +The document subject (Since 1.16) + + + +CAIRO_PDF_METADATA_KEYWORDS +The document keywords (Since 1.16) + + + +CAIRO_PDF_METADATA_CREATOR +The document creator (Since 1.16) + + + +CAIRO_PDF_METADATA_CREATE_DATE +The document creation date (Since 1.16) + + + +CAIRO_PDF_METADATA_MOD_DATE +The document modification date (Since 1.16) + + + + +Since: 1.16 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 @@ -323,7 +583,7 @@ -Since 1.10 +Since: 1.10 diff -Nru cairo-1.14.6/doc/public/xml/cairo-png.xml cairo-1.15.10/doc/public/xml/cairo-png.xml --- cairo-1.14.6/doc/public/xml/cairo-png.xml 2015-12-09 20:45:07.000000000 +0000 +++ cairo-1.15.10/doc/public/xml/cairo-png.xml 2017-12-11 21:03:31.000000000 +0000 @@ -1,15 +1,13 @@ - + ]> PNG Support 3 - - CAIRO Library - +CAIRO Library PNG Support @@ -53,11 +51,6 @@ - -Object Hierarchy - - - @@ -82,7 +75,7 @@ cairo_image_surface_create_from_png (const char *filename); Creates a new image surface and initializes the contents to the given PNG file. - + Parameters @@ -91,10 +84,11 @@ filename -name of PNG file to load +name of PNG file to load. On Windows this filename +is encoded in UTF-8. - + Returns a new cairo_surface_t initialized with the contents of the PNG file, or a "nil" surface if any error occurred. A nil @@ -102,12 +96,12 @@ may return one of the following values: CAIRO_STATUS_NO_MEMORY CAIRO_STATUS_FILE_NOT_FOUND -CAIRO_STATUS_READ_ERROR +CAIRO_STATUS_READ_ERROR +CAIRO_STATUS_PNG_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 +Since: 1.0 cairo_read_func_t () cairo_read_func_t @@ -122,7 +116,7 @@ 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. - + Parameters @@ -140,11 +134,10 @@ the amount of data to read - + Returns the status code of the read operation - -Since 1.0 +Since: 1.0 cairo_image_surface_create_from_png_stream () cairo_image_surface_create_from_png_stream @@ -155,7 +148,7 @@ Creates a new image surface from PNG data read incrementally via the read_func function. - + Parameters @@ -171,7 +164,7 @@ . - + 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 @@ -179,12 +172,12 @@ 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 +CAIRO_STATUS_READ_ERROR +CAIRO_STATUS_PNG_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 +Since: 1.0 cairo_surface_write_to_png () cairo_surface_write_to_png @@ -195,7 +188,7 @@ to a new file filename as a PNG image. - + Parameters @@ -207,19 +200,20 @@ a cairo_surface_t with pixel contents filename -the name of a file to write to +the name of a file to write to; on Windows this filename +is encoded in UTF-8. - + 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, or CAIRO_STATUS_PNG_ERROR if libpng +returned an error. +Since: 1.0 cairo_write_func_t () cairo_write_func_t @@ -234,7 +228,7 @@ data in bytes. The write function should return CAIRO_STATUS_SUCCESS if all the data was successfully written, CAIRO_STATUS_WRITE_ERROR otherwise. - + Parameters @@ -252,11 +246,10 @@ the amount of data to write - + Returns the status code of the write operation - -Since 1.0 +Since: 1.0 cairo_surface_write_to_png_stream () cairo_surface_write_to_png_stream @@ -265,7 +258,7 @@ cairo_write_func_t write_func, void *closure); Writes the image surface to the write function. - + Parameters @@ -283,15 +276,15 @@ 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, or CAIRO_STATUS_PNG_ERROR if libpng +returned an error. +Since: 1.0 @@ -304,7 +297,7 @@ Defined if the PNG functions are available. This macro can be used to conditionally compile code using the cairo PNG functions. -Since 1.0 +Since: 1.0 diff -Nru cairo-1.14.6/doc/public/xml/cairo-ps.xml cairo-1.15.10/doc/public/xml/cairo-ps.xml --- cairo-1.14.6/doc/public/xml/cairo-ps.xml 2015-12-09 20:45:07.000000000 +0000 +++ cairo-1.15.10/doc/public/xml/cairo-ps.xml 2017-12-11 21:03:31.000000000 +0000 @@ -1,15 +1,13 @@ - + ]> PostScript Surfaces 3 - - CAIRO Library - +CAIRO Library PostScript Surfaces @@ -64,17 +62,38 @@ - -Object Hierarchy - - - Description The PostScript surface is used to render cairo graphics to Adobe PostScript files and is a multi-page vector surface backend. +The following mime types are supported: CAIRO_MIME_TYPE_JPEG, +CAIRO_MIME_TYPE_UNIQUE_ID, +CAIRO_MIME_TYPE_CCITT_FAX, CAIRO_MIME_TYPE_CCITT_FAX_PARAMS, +CAIRO_MIME_TYPE_CCITT_FAX, CAIRO_MIME_TYPE_CCITT_FAX_PARAMS, +CAIRO_MIME_TYPE_EPS, CAIRO_MIME_TYPE_EPS_PARAMS. +Source surfaces used by the PostScript surface that have a +CAIRO_MIME_TYPE_UNIQUE_ID mime type will be stored in PostScript +printer memory for the duration of the print +job. CAIRO_MIME_TYPE_UNIQUE_ID should only be used for small +frequently used sources. +The CAIRO_MIME_TYPE_CCITT_FAX and CAIRO_MIME_TYPE_CCITT_FAX_PARAMS mime types +are documented in CCITT Fax Images. +Embedding EPS filesEncapsulated PostScript files can be embedded in the PS output by +setting the CAIRO_MIME_TYPE_EPS mime data on a surface to the EPS +data and painting the surface. The EPS will be scaled and +translated to the extents of the surface the EPS data is attached +to. +The CAIRO_MIME_TYPE_EPS mime type requires the +CAIRO_MIME_TYPE_EPS_PARAMS mime data to also be provided in order +to specify the embeddding parameters. CAIRO_MIME_TYPE_EPS_PARAMS +mime data must contain a string of the form "bbox=[llx lly urx +ury]" that specifies the bounding box (in PS coordinates) of the +EPS graphics. The parameters are: lower left x, lower left y, upper +right x, upper right y. Normally the bbox data is identical to the +%%BoundingBox data in the EPS file. + @@ -93,7 +112,7 @@ 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 @@ -114,7 +133,7 @@ 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 @@ -122,8 +141,7 @@ 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 +Since: 1.2 cairo_ps_surface_create_for_stream () cairo_ps_surface_create_for_stream @@ -140,7 +158,7 @@ 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 @@ -167,7 +185,7 @@ 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 @@ -175,8 +193,7 @@ 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 +Since: 1.2 cairo_ps_surface_restrict_to_level () cairo_ps_surface_restrict_to_level @@ -191,7 +208,7 @@ have been performed on the given surface. The simplest way to do this is to call this function immediately after creating the surface. - + Parameters @@ -206,7 +223,7 @@ PostScript level -Since 1.6 +Since: 1.6 cairo_ps_get_levels () cairo_ps_get_levels @@ -215,7 +232,7 @@ int *num_levels); Used to retrieve the list of supported levels. See cairo_ps_surface_restrict_to_level(). - + Parameters @@ -230,7 +247,7 @@ list length -Since 1.6 +Since: 1.6 cairo_ps_level_to_string () cairo_ps_level_to_string @@ -241,7 +258,7 @@ 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 @@ -253,11 +270,10 @@ a level id - + Returns the string associated to given level. - -Since 1.6 +Since: 1.6 cairo_ps_surface_set_eps () cairo_ps_surface_set_eps @@ -272,7 +288,7 @@ this is to call this function immediately after creating the surface. An Encapsulated PostScript file should never contain more than one page. - + Parameters @@ -287,14 +303,14 @@ TRUE to output EPS format PostScript -Since 1.6 +Since: 1.6 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. - + Parameters @@ -306,11 +322,10 @@ a PostScript cairo_surface_t - + Returns TRUE if the surface will output Encapsulated PostScript. - -Since 1.6 +Since: 1.6 cairo_ps_surface_set_size () cairo_ps_surface_set_size @@ -325,7 +340,7 @@ 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 @@ -343,7 +358,7 @@ new surface height, in points (1 point == 1/72.0 inch) -Since 1.2 +Since: 1.2 cairo_ps_surface_dsc_begin_setup () cairo_ps_surface_dsc_begin_setup @@ -356,7 +371,7 @@ 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 @@ -368,7 +383,7 @@ a PostScript cairo_surface_t -Since 1.2 +Since: 1.2 cairo_ps_surface_dsc_begin_page_setup () cairo_ps_surface_dsc_begin_page_setup @@ -382,7 +397,7 @@ 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 @@ -394,7 +409,7 @@ a PostScript cairo_surface_t -Since 1.2 +Since: 1.2 cairo_ps_surface_dsc_comment () cairo_ps_surface_dsc_comment @@ -468,7 +483,7 @@ cairo_ps_surface_dsc_comment (surface, "%%IncludeFeature: *PageSize A5"); ... - + Parameters @@ -483,7 +498,7 @@ a comment string to be emitted into the PostScript output -Since 1.2 +Since: 1.2 @@ -495,14 +510,14 @@ Defined if the PostScript surface backend is available. This macro can be used to conditionally compile backend-specific code. -Since 1.2 +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 @@ -521,7 +536,7 @@ -Since 1.6 +Since: 1.6 diff -Nru cairo-1.14.6/doc/public/xml/cairo-quartz-fonts.xml cairo-1.15.10/doc/public/xml/cairo-quartz-fonts.xml --- cairo-1.14.6/doc/public/xml/cairo-quartz-fonts.xml 2015-12-09 20:45:07.000000000 +0000 +++ cairo-1.15.10/doc/public/xml/cairo-quartz-fonts.xml 2017-12-11 21:03:31.000000000 +0000 @@ -1,15 +1,13 @@ - + ]> Quartz (CGFont) Fonts 3 - - CAIRO Library - +CAIRO Library Quartz (CGFont) Fonts @@ -45,11 +43,6 @@ - -Object Hierarchy - - - @@ -70,7 +63,7 @@ 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(). - + Parameters @@ -82,12 +75,11 @@ 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 +Since: 1.6 cairo_quartz_font_face_create_for_atsu_font_id () cairo_quartz_font_face_create_for_atsu_font_id @@ -97,7 +89,7 @@ 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(). - + Parameters @@ -109,12 +101,11 @@ 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 +Since: 1.6 @@ -126,7 +117,7 @@ Defined if the Quartz font backend is available. This macro can be used to conditionally compile backend-specific code. -Since 1.6 +Since: 1.6 diff -Nru cairo-1.14.6/doc/public/xml/cairo-quartz.xml cairo-1.15.10/doc/public/xml/cairo-quartz.xml --- cairo-1.14.6/doc/public/xml/cairo-quartz.xml 2015-12-09 20:45:07.000000000 +0000 +++ cairo-1.15.10/doc/public/xml/cairo-quartz.xml 2017-12-11 21:03:31.000000000 +0000 @@ -1,15 +1,13 @@ - + ]> Quartz Surfaces 3 - - CAIRO Library - +CAIRO Library Quartz Surfaces @@ -47,11 +45,6 @@ - -Object Hierarchy - - - @@ -73,7 +66,7 @@ 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. - + Parameters @@ -91,11 +84,10 @@ height of the surface, in pixels - + Returns the newly created surface. - -Since 1.6 +Since: 1.6 cairo_quartz_surface_create_for_cg_context () cairo_quartz_surface_create_for_cg_context @@ -117,7 +109,7 @@ All Cairo operations are implemented in terms of Quartz operations, as long as Quartz-compatible elements are used (such as Quartz fonts). - + Parameters @@ -135,11 +127,10 @@ height of the surface, in pixels - + Returns the newly created Cairo surface. - -Since 1.6 +Since: 1.6 cairo_quartz_surface_get_cg_context () cairo_quartz_surface_get_cg_context @@ -153,7 +144,7 @@ to its state. A call to cairo_surface_mark_dirty() is required after the state or the content of the CGContextRef has been modified. - + Parameters @@ -165,11 +156,10 @@ the Cairo Quartz surface - + Returns the CGContextRef for the given surface. - -Since 1.6 +Since: 1.6 @@ -181,7 +171,7 @@ Defined if the Quartz surface backend is available. This macro can be used to conditionally compile backend-specific code. -Since 1.6 +Since: 1.6 diff -Nru cairo-1.14.6/doc/public/xml/cairo-raster-source.xml cairo-1.15.10/doc/public/xml/cairo-raster-source.xml --- cairo-1.14.6/doc/public/xml/cairo-raster-source.xml 2015-12-09 20:45:07.000000000 +0000 +++ cairo-1.15.10/doc/public/xml/cairo-raster-source.xml 2017-12-11 21:03:31.000000000 +0000 @@ -1,15 +1,13 @@ - + ]> Raster Sources 3 - - CAIRO Library - +CAIRO Library Raster Sources @@ -60,11 +58,6 @@ - -Object Hierarchy - - - @@ -96,7 +89,7 @@ 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 @@ -119,12 +112,11 @@ 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 +Since: 1.12 cairo_raster_source_pattern_set_callback_data () cairo_raster_source_pattern_set_callback_data @@ -133,7 +125,7 @@ (cairo_pattern_t *pattern, void *data); Updates the user data that is provided to all callbacks. - + Parameters @@ -148,7 +140,7 @@ the user data to be passed to all callbacks -Since 1.12 +Since: 1.12 cairo_raster_source_pattern_get_callback_data () cairo_raster_source_pattern_get_callback_data @@ -156,7 +148,7 @@ cairo_raster_source_pattern_get_callback_data (cairo_pattern_t *pattern); Queries the current user data. - + Parameters @@ -168,11 +160,10 @@ the pattern to update - + Returns the current user-data passed to each callback - -Since 1.12 +Since: 1.12 cairo_raster_source_pattern_set_acquire () cairo_raster_source_pattern_set_acquire @@ -191,7 +182,7 @@ 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(). - + Parameters @@ -209,7 +200,7 @@ release callback -Since 1.12 +Since: 1.12 cairo_raster_source_pattern_get_acquire () cairo_raster_source_pattern_get_acquire @@ -219,7 +210,7 @@ cairo_raster_source_acquire_func_t *acquire, cairo_raster_source_release_func_t *release); Queries the current acquire and release callbacks. - + Parameters @@ -237,7 +228,7 @@ return value for the current release callback -Since 1.12 +Since: 1.12 cairo_raster_source_pattern_set_snapshot () cairo_raster_source_pattern_set_snapshot @@ -248,7 +239,7 @@ 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. - + Parameters @@ -263,7 +254,7 @@ snapshot callback -Since 1.12 +Since: 1.12 cairo_raster_source_pattern_get_snapshot () cairo_raster_source_pattern_get_snapshot @@ -271,7 +262,7 @@ cairo_raster_source_pattern_get_snapshot (cairo_pattern_t *pattern); Queries the current snapshot callback. - + Parameters @@ -283,11 +274,10 @@ the pattern to query - + Returns the current snapshot callback - -Since 1.12 +Since: 1.12 cairo_raster_source_pattern_set_copy () cairo_raster_source_pattern_set_copy @@ -296,7 +286,7 @@ cairo_raster_source_copy_func_t copy); Updates the copy callback which is used whenever a temporary copy of the pattern is taken. - + Parameters @@ -311,14 +301,14 @@ the copy callback -Since 1.12 +Since: 1.12 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. - + Parameters @@ -330,11 +320,10 @@ the pattern to query - + Returns the current copy callback - -Since 1.12 +Since: 1.12 cairo_raster_source_pattern_set_finish () cairo_raster_source_pattern_set_finish @@ -344,7 +333,7 @@ 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 @@ -359,7 +348,7 @@ the finish callback -Since 1.12 +Since: 1.12 cairo_raster_source_pattern_get_finish () cairo_raster_source_pattern_get_finish @@ -367,7 +356,7 @@ cairo_raster_source_pattern_get_finish (cairo_pattern_t *pattern); Queries the current finish callback. - + Parameters @@ -379,11 +368,10 @@ the pattern to query - + Returns the current finish callback - -Since 1.12 +Since: 1.12 cairo_raster_source_acquire_func_t () cairo_raster_source_acquire_func_t @@ -404,7 +392,7 @@ 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). - + Parameters @@ -425,11 +413,10 @@ rectangular region of interest in pixels in sample space - + Returns a cairo_surface_t - -Since 1.12 +Since: 1.12 cairo_raster_source_release_func_t () cairo_raster_source_release_func_t @@ -441,7 +428,7 @@ 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. - + Parameters @@ -459,7 +446,7 @@ the surface created during acquire -Since 1.12 +Since: 1.12 cairo_raster_source_snapshot_func_t () cairo_raster_source_snapshot_func_t @@ -472,7 +459,7 @@ 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. - + Parameters @@ -487,12 +474,11 @@ 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 +Since: 1.12 cairo_raster_source_copy_func_t () cairo_raster_source_copy_func_t @@ -502,7 +488,7 @@ 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 @@ -520,12 +506,11 @@ 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 +Since: 1.12 cairo_raster_source_finish_func_t () cairo_raster_source_finish_func_t @@ -534,7 +519,7 @@ 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 @@ -549,7 +534,7 @@ the user data supplied during creation -Since 1.12 +Since: 1.12 diff -Nru cairo-1.14.6/doc/public/xml/cairo-recording.xml cairo-1.15.10/doc/public/xml/cairo-recording.xml --- cairo-1.14.6/doc/public/xml/cairo-recording.xml 2015-12-09 20:45:07.000000000 +0000 +++ cairo-1.15.10/doc/public/xml/cairo-recording.xml 2017-12-11 21:03:31.000000000 +0000 @@ -1,15 +1,13 @@ - + ]> Recording Surfaces 3 - - CAIRO Library - +CAIRO Library Recording Surfaces @@ -47,11 +45,6 @@ - -Object Hierarchy - - - @@ -101,7 +94,7 @@ The recording phase of the recording surface is careful to snapshot all necessary objects (paths, patterns, etc.), in order to achieve accurate replay. - + Parameters @@ -117,13 +110,12 @@ 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 +Since: 1.10 cairo_recording_surface_ink_extents () cairo_recording_surface_ink_extents @@ -136,7 +128,7 @@ 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. - + Parameters @@ -160,7 +152,7 @@ the height of the ink bounding box -Since 1.10 +Since: 1.10 cairo_recording_surface_get_extents () cairo_recording_surface_get_extents @@ -168,7 +160,7 @@ cairo_recording_surface_get_extents (cairo_surface_t *surface, cairo_rectangle_t *extents); Get the extents of the recording-surface. - + Parameters @@ -183,12 +175,11 @@ 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 +Since: 1.12 @@ -201,7 +192,7 @@ 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 +Since: 1.10 diff -Nru cairo-1.14.6/doc/public/xml/cairo-region.xml cairo-1.15.10/doc/public/xml/cairo-region.xml --- cairo-1.14.6/doc/public/xml/cairo-region.xml 2015-12-09 20:45:07.000000000 +0000 +++ cairo-1.15.10/doc/public/xml/cairo-region.xml 2017-12-11 21:03:31.000000000 +0000 @@ -1,15 +1,13 @@ - + ]> Regions 3 - - CAIRO Library - +CAIRO Library Regions @@ -88,11 +86,6 @@ - -Object Hierarchy - - - @@ -110,15 +103,14 @@ 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 +Since: 1.10 cairo_region_create_rectangle () cairo_region_create_rectangle @@ -126,7 +118,7 @@ cairo_region_create_rectangle (const cairo_rectangle_int_t *rectangle); Allocates a new region object containing rectangle . - + Parameters @@ -138,15 +130,14 @@ 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 +Since: 1.10 cairo_region_create_rectangles () cairo_region_create_rectangles @@ -155,7 +146,7 @@ int count); Allocates a new region object containing the union of all given rects . - + Parameters @@ -171,15 +162,14 @@ 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 +Since: 1.10 cairo_region_copy () cairo_region_copy @@ -187,7 +177,7 @@ cairo_region_copy (const cairo_region_t *original); Allocates a new region object copying the area from original . - + Parameters @@ -199,15 +189,14 @@ 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 +Since: 1.10 cairo_region_reference () cairo_region_reference @@ -218,7 +207,7 @@ region from being destroyed until a matching call to cairo_region_destroy() is made. - + Parameters @@ -230,11 +219,10 @@ a cairo_region_t - + Returns the referenced cairo_region_t. - -Since 1.10 +Since: 1.10 cairo_region_destroy () cairo_region_destroy @@ -243,7 +231,7 @@ Destroys a cairo_region_t object created with cairo_region_create(), cairo_region_copy(), or or cairo_region_create_rectangle(). - + Parameters @@ -255,7 +243,7 @@ a cairo_region_t -Since 1.10 +Since: 1.10 cairo_region_status () cairo_region_status @@ -263,7 +251,7 @@ cairo_region_status (const cairo_region_t *region); Checks whether an error has previous occurred for this region object. - + Parameters @@ -275,11 +263,10 @@ a cairo_region_t - + Returns CAIRO_STATUS_SUCCESS or CAIRO_STATUS_NO_MEMORY - -Since 1.10 +Since: 1.10 cairo_region_get_extents () cairo_region_get_extents @@ -288,7 +275,7 @@ cairo_rectangle_int_t *extents); Gets the bounding rectangle of region as a cairo_rectangle_int_t - + Parameters @@ -303,7 +290,7 @@ rectangle into which to store the extents -Since 1.10 +Since: 1.10 cairo_region_num_rectangles () cairo_region_num_rectangles @@ -311,7 +298,7 @@ cairo_region_num_rectangles (const cairo_region_t *region); Returns the number of rectangles contained in region . - + Parameters @@ -323,12 +310,11 @@ a cairo_region_t - + Returns The number of rectangles contained in region . - -Since 1.10 +Since: 1.10 cairo_region_get_rectangle () cairo_region_get_rectangle @@ -339,7 +325,7 @@ Stores the nth rectangle from the region in rectangle . - + Parameters @@ -357,7 +343,7 @@ return location for a cairo_rectangle_int_t -Since 1.10 +Since: 1.10 cairo_region_is_empty () cairo_region_is_empty @@ -365,7 +351,7 @@ cairo_region_is_empty (const cairo_region_t *region); Checks whether region is empty. - + Parameters @@ -377,12 +363,11 @@ a cairo_region_t - + Returns TRUE if region is empty, FALSE if it isn't. - -Since 1.10 +Since: 1.10 cairo_region_contains_point () cairo_region_contains_point @@ -394,7 +379,7 @@ , y ) is contained in region . - + Parameters @@ -412,14 +397,13 @@ the y coordinate of a point - + Returns TRUE if (x , y ) is contained in region , FALSE if it is not. - -Since 1.10 +Since: 1.10 cairo_region_contains_rectangle () cairo_region_contains_rectangle @@ -430,7 +414,7 @@ is inside, outside or partially contained in region - + Parameters @@ -445,7 +429,7 @@ a cairo_rectangle_int_t - + Returns CAIRO_REGION_OVERLAP_IN if rectangle is entirely inside region @@ -456,8 +440,7 @@ CAIRO_REGION_OVERLAP_PART if rectangle is partially inside and partially outside region . - -Since 1.10 +Since: 1.10 cairo_region_equal () cairo_region_equal @@ -466,7 +449,7 @@ 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 @@ -481,12 +464,11 @@ 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 +Since: 1.10 cairo_region_translate () cairo_region_translate @@ -498,7 +480,7 @@ by (dx , dy ). - + Parameters @@ -516,7 +498,7 @@ Amount to translate in the y direction -Since 1.10 +Since: 1.10 cairo_region_intersect () cairo_region_intersect @@ -527,7 +509,7 @@ with other and places the result in dst - + Parameters @@ -542,11 +524,10 @@ another cairo_region_t - + Returns CAIRO_STATUS_SUCCESS or CAIRO_STATUS_NO_MEMORY - -Since 1.10 +Since: 1.10 cairo_region_intersect_rectangle () cairo_region_intersect_rectangle @@ -558,7 +539,7 @@ and places the result in dst - + Parameters @@ -573,11 +554,10 @@ a cairo_rectangle_int_t - + Returns CAIRO_STATUS_SUCCESS or CAIRO_STATUS_NO_MEMORY - -Since 1.10 +Since: 1.10 cairo_region_subtract () cairo_region_subtract @@ -588,7 +568,7 @@ from dst and places the result in dst - + Parameters @@ -603,11 +583,10 @@ another cairo_region_t - + Returns CAIRO_STATUS_SUCCESS or CAIRO_STATUS_NO_MEMORY - -Since 1.10 +Since: 1.10 cairo_region_subtract_rectangle () cairo_region_subtract_rectangle @@ -618,7 +597,7 @@ from dst and places the result in dst - + Parameters @@ -633,11 +612,10 @@ a cairo_rectangle_int_t - + Returns CAIRO_STATUS_SUCCESS or CAIRO_STATUS_NO_MEMORY - -Since 1.10 +Since: 1.10 cairo_region_union () cairo_region_union @@ -648,7 +626,7 @@ with other and places the result in dst - + Parameters @@ -663,11 +641,10 @@ another cairo_region_t - + Returns CAIRO_STATUS_SUCCESS or CAIRO_STATUS_NO_MEMORY - -Since 1.10 +Since: 1.10 cairo_region_union_rectangle () cairo_region_union_rectangle @@ -678,7 +655,7 @@ with rectangle and places the result in dst . - + Parameters @@ -693,11 +670,10 @@ a cairo_rectangle_int_t - + Returns CAIRO_STATUS_SUCCESS or CAIRO_STATUS_NO_MEMORY - -Since 1.10 +Since: 1.10 cairo_region_xor () cairo_region_xor @@ -713,7 +689,7 @@ are either in dst or in other , but not in both. - + Parameters @@ -728,11 +704,10 @@ another cairo_region_t - + Returns CAIRO_STATUS_SUCCESS or CAIRO_STATUS_NO_MEMORY - -Since 1.10 +Since: 1.10 cairo_region_xor_rectangle () cairo_region_xor_rectangle @@ -748,7 +723,7 @@ either in dst or in rectangle , but not in both. - + Parameters @@ -763,11 +738,10 @@ a cairo_rectangle_int_t - + Returns CAIRO_STATUS_SUCCESS or CAIRO_STATUS_NO_MEMORY - -Since 1.10 +Since: 1.10 @@ -782,12 +756,12 @@ 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 +Since: 1.10 enum cairo_region_overlap_t cairo_region_overlap_t Used as the return value for cairo_region_contains_rectangle(). - + Members @@ -812,7 +786,7 @@ -Since 1.10 +Since: 1.10 diff -Nru cairo-1.14.6/doc/public/xml/cairo-scaled-font.xml cairo-1.15.10/doc/public/xml/cairo-scaled-font.xml --- cairo-1.14.6/doc/public/xml/cairo-scaled-font.xml 2015-12-09 20:45:07.000000000 +0000 +++ cairo-1.15.10/doc/public/xml/cairo-scaled-font.xml 2017-12-11 21:03:31.000000000 +0000 @@ -1,15 +1,13 @@ - + ]> cairo_scaled_font_t 3 - - CAIRO Library - +CAIRO Library cairo_scaled_font_t @@ -77,11 +75,6 @@ - -Object Hierarchy - - - @@ -103,7 +96,7 @@ 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 @@ -130,12 +123,11 @@ rendering with it. - + Returns a newly created cairo_scaled_font_t. Destroy with cairo_scaled_font_destroy() - -Since 1.0 +Since: 1.0 cairo_scaled_font_reference () cairo_scaled_font_reference @@ -146,9 +138,9 @@ 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(). - +Use cairo_scaled_font_get_reference_count() to get the number of +references to a cairo_scaled_font_t. + Parameters @@ -161,11 +153,10 @@ this function does nothing) - + Returns the referenced cairo_scaled_font_t - -Since 1.0 +Since: 1.0 cairo_scaled_font_destroy () cairo_scaled_font_destroy @@ -176,7 +167,7 @@ is zero, then font and all associated resources are freed. See cairo_scaled_font_reference(). - + Parameters @@ -188,7 +179,7 @@ a cairo_scaled_font_t -Since 1.0 +Since: 1.0 cairo_scaled_font_status () cairo_scaled_font_status @@ -196,7 +187,7 @@ cairo_scaled_font_status (cairo_scaled_font_t *scaled_font); Checks whether an error has previously occurred for this scaled_font. - + Parameters @@ -208,12 +199,11 @@ a cairo_scaled_font_t - + Returns CAIRO_STATUS_SUCCESS or another error such as CAIRO_STATUS_NO_MEMORY. - -Since 1.0 +Since: 1.0 cairo_scaled_font_extents () cairo_scaled_font_extents @@ -221,7 +211,7 @@ 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 @@ -236,7 +226,7 @@ a cairo_font_extents_t which to store the retrieved extents. -Since 1.0 +Since: 1.0 cairo_scaled_font_text_extents () cairo_scaled_font_text_extents @@ -258,7 +248,7 @@ 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. - + Parameters @@ -276,7 +266,7 @@ a cairo_text_extents_t which to store the retrieved extents. -Since 1.2 +Since: 1.2 cairo_scaled_font_glyph_extents () cairo_scaled_font_glyph_extents @@ -295,7 +285,7 @@ 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 @@ -317,7 +307,7 @@ a cairo_text_extents_t which to store the retrieved extents. -Since 1.0 +Since: 1.0 cairo_scaled_font_text_to_glyphs () cairo_scaled_font_text_to_glyphs @@ -458,7 +448,7 @@ cairo_show_glyphs(), or related functions, assuming that the exact same scaled_font is used for the operation. - + Parameters @@ -500,15 +490,14 @@ , 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 +Since: 1.8 cairo_scaled_font_get_font_face () cairo_scaled_font_get_font_face @@ -517,7 +506,7 @@ 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 @@ -529,14 +518,13 @@ 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 +Since: 1.2 cairo_scaled_font_get_font_options () cairo_scaled_font_get_font_options @@ -547,7 +535,7 @@ was created into options . - + Parameters @@ -562,7 +550,7 @@ return value for the font options -Since 1.2 +Since: 1.2 cairo_scaled_font_get_font_matrix () cairo_scaled_font_get_font_matrix @@ -573,7 +561,7 @@ was created into matrix . - + Parameters @@ -588,7 +576,7 @@ return value for the matrix -Since 1.2 +Since: 1.2 cairo_scaled_font_get_ctm () cairo_scaled_font_get_ctm @@ -601,7 +589,7 @@ 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. - + Parameters @@ -616,7 +604,7 @@ return value for the CTM -Since 1.2 +Since: 1.2 cairo_scaled_font_get_scale_matrix () cairo_scaled_font_get_scale_matrix @@ -629,7 +617,7 @@ 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. - + Parameters @@ -644,7 +632,7 @@ return value for the matrix -Since 1.8 +Since: 1.8 cairo_scaled_font_get_type () cairo_scaled_font_get_type @@ -653,7 +641,7 @@ 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. - + Parameters @@ -665,12 +653,11 @@ a cairo_scaled_font_t - + Returns The type of scaled_font . - -Since 1.2 +Since: 1.2 cairo_scaled_font_get_reference_count () cairo_scaled_font_get_reference_count @@ -678,7 +665,7 @@ cairo_scaled_font_get_reference_count (cairo_scaled_font_t *scaled_font); Returns the current reference count of scaled_font . - + Parameters @@ -690,13 +677,12 @@ 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 +Since: 1.4 cairo_scaled_font_set_user_data () cairo_scaled_font_set_user_data @@ -710,7 +696,7 @@ call this function with the key that was used to set it and NULL for data . - + Parameters @@ -733,12 +719,11 @@ 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 +Since: 1.4 cairo_scaled_font_get_user_data () cairo_scaled_font_get_user_data @@ -749,7 +734,7 @@ using the specified key. If no user data has been attached with the given key this function returns NULL. - + Parameters @@ -765,11 +750,10 @@ attached to - + Returns the user data previously attached or NULL. - -Since 1.4 +Since: 1.4 @@ -788,7 +772,7 @@ 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 +Since: 1.0 cairo_font_extents_t cairo_font_extents_t @@ -810,7 +794,7 @@ 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 @@ -818,12 +802,7 @@ -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 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 @@ -831,14 +810,7 @@ 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 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 @@ -848,18 +820,7 @@ 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 height; the recommended vertical distance between baselines when setting consecutive lines of text with the font. This is greater than ascent @@ -873,19 +834,12 @@ 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_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.) +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 @@ -895,7 +849,7 @@ -Since 1.0 +Since: 1.0 cairo_text_extents_t cairo_text_extents_t @@ -917,7 +871,7 @@ 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 @@ -925,47 +879,33 @@ -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 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 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 width; width of the glyphs as drawn -double height; -height 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 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. +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. @@ -973,7 +913,7 @@ -Since 1.0 +Since: 1.0 diff -Nru cairo-1.14.6/doc/public/xml/cairo-script.xml cairo-1.15.10/doc/public/xml/cairo-script.xml --- cairo-1.14.6/doc/public/xml/cairo-script.xml 2015-12-09 20:45:07.000000000 +0000 +++ cairo-1.15.10/doc/public/xml/cairo-script.xml 2017-12-11 21:03:31.000000000 +0000 @@ -1,15 +1,13 @@ - + ]> Script Surfaces 3 - - CAIRO Library - +CAIRO Library Script Surfaces @@ -58,11 +56,6 @@ - -Object Hierarchy - - - @@ -82,7 +75,7 @@ cairo_script_create (const char *filename); Creates a output device for emitting the script, used when creating the individual surfaces. - + Parameters @@ -94,7 +87,7 @@ 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 @@ -102,8 +95,7 @@ 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 +Since: 1.12 cairo_script_create_for_stream () cairo_script_create_for_stream @@ -112,7 +104,7 @@ void *closure); Creates a output device for emitting the script, used when creating the individual surfaces. - + Parameters @@ -127,7 +119,7 @@ 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 @@ -135,8 +127,7 @@ 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 +Since: 1.12 cairo_script_from_recording_surface () cairo_script_from_recording_surface @@ -145,7 +136,7 @@ cairo_surface_t *recording_surface); Converts the record operations in recording_surface into a script. - + Parameters @@ -160,18 +151,17 @@ the recording surface to replay - + Returns CAIRO_STATUS_SUCCESS on successful completion or an error code. - -Since 1.12 +Since: 1.12 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. - + Parameters @@ -183,11 +173,10 @@ The script (output device) to query - + Returns the current output mode of the script - -Since 1.12 +Since: 1.12 cairo_script_set_mode () cairo_script_set_mode @@ -195,7 +184,7 @@ cairo_script_set_mode (cairo_device_t *script, cairo_script_mode_t mode); Change the output mode of the script - + Parameters @@ -210,7 +199,7 @@ the new mode -Since 1.12 +Since: 1.12 cairo_script_surface_create () cairo_script_surface_create @@ -221,7 +210,7 @@ double height); Create a new surface that will emit its rendering through script - + Parameters @@ -242,7 +231,7 @@ height in pixels - + Returns a pointer to the newly created surface. The caller owns the surface and should call cairo_surface_destroy() when done @@ -250,8 +239,7 @@ 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 +Since: 1.12 cairo_script_surface_create_for_target () cairo_script_surface_create_for_target @@ -263,7 +251,7 @@ and record the operations to device . - + Parameters @@ -278,7 +266,7 @@ 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 @@ -286,8 +274,7 @@ 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 +Since: 1.12 cairo_script_write_comment () cairo_script_write_comment @@ -296,7 +283,7 @@ const char *comment, int len); Emit a string verbatim into the script. - + Parameters @@ -314,7 +301,7 @@ the length of the sting to write, or -1 to use strlen() -Since 1.12 +Since: 1.12 @@ -326,12 +313,12 @@ Defined if the script surface backend is available. The script surface backend is always built in since 1.12. -Since 1.12 +Since: 1.12 enum cairo_script_mode_t cairo_script_mode_t A set of script output variants. - + Members @@ -350,7 +337,7 @@ -Since 1.12 +Since: 1.12 diff -Nru cairo-1.14.6/doc/public/xml/cairo-skia.xml cairo-1.15.10/doc/public/xml/cairo-skia.xml --- cairo-1.14.6/doc/public/xml/cairo-skia.xml 2015-12-09 20:45:07.000000000 +0000 +++ cairo-1.15.10/doc/public/xml/cairo-skia.xml 2017-12-11 21:03:31.000000000 +0000 @@ -1,15 +1,13 @@ - + ]> cairo-skia 3 - - CAIRO Library - +CAIRO Library cairo-skia @@ -44,11 +42,6 @@ - -Object Hierarchy - - - @@ -66,11 +59,7 @@ format_to_sk_config (cairo_format_t format); - -Returns - - - + @@ -84,7 +73,7 @@ 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 +Since: 1.10 cairo_skia_surface_t cairo_skia_surface_t @@ -92,7 +81,7 @@ A cairo_skia_surface_t is a container for the underlying SkBitmap and the corresponding Cairo image surface. -Since 1.10 +Since: 1.10 diff -Nru cairo-1.14.6/doc/public/xml/cairo-status.xml cairo-1.15.10/doc/public/xml/cairo-status.xml --- cairo-1.14.6/doc/public/xml/cairo-status.xml 2015-12-09 20:45:07.000000000 +0000 +++ cairo-1.15.10/doc/public/xml/cairo-status.xml 2017-12-11 21:03:31.000000000 +0000 @@ -1,15 +1,13 @@ - + ]> Error handling 3 - - CAIRO Library - +CAIRO Library Error handling @@ -45,11 +43,6 @@ - -Object Hierarchy - - - @@ -73,7 +66,7 @@ const char * cairo_status_to_string (cairo_status_t status); Provides a human-readable description of a cairo_status_t. - + Parameters @@ -85,11 +78,10 @@ a cairo status - + Returns a string representation of the status - -Since 1.0 +Since: 1.0 cairo_debug_reset_static_data () cairo_debug_reset_static_data @@ -110,7 +102,7 @@ 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 +Since: 1.0 @@ -124,7 +116,7 @@ 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 @@ -331,6 +323,26 @@ +CAIRO_STATUS_PNG_ERROR +error occurred in libpng while reading from or writing to a PNG file (Since 1.16) + + + +CAIRO_STATUS_FREETYPE_ERROR +error occurred in libfreetype (Since 1.16) + + + +CAIRO_STATUS_WIN32_GDI_ERROR +error occurred in the Windows Graphics Device Interface (Since 1.16) + + + +CAIRO_STATUS_TAG_ERROR +invalid tag name, attributes, or nesting (Since 1.16) + + + CAIRO_STATUS_LAST_STATUS this is a special value indicating the number of status values defined in this enumeration. When using this value, note @@ -340,13 +352,13 @@ -Since 1.0 +Since: 1.0 See Also cairo_status(), cairo_surface_status(), cairo_pattern_status(), - cairo_font_face_status(), cairo_scaled_font_status(), + cairo_font_face_status(), cairo_scaled_font_status(), cairo_region_status() diff -Nru cairo-1.14.6/doc/public/xml/cairo-surface-observer.xml cairo-1.15.10/doc/public/xml/cairo-surface-observer.xml --- cairo-1.14.6/doc/public/xml/cairo-surface-observer.xml 2015-12-09 20:45:07.000000000 +0000 +++ cairo-1.15.10/doc/public/xml/cairo-surface-observer.xml 2017-12-11 21:03:31.000000000 +0000 @@ -1,15 +1,13 @@ - + ]> cairo-surface-observer 3 - - CAIRO Library - +CAIRO Library cairo-surface-observer @@ -64,11 +62,6 @@ - -Object Hierarchy - - - @@ -92,7 +85,7 @@ 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 @@ -107,7 +100,7 @@ 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 @@ -116,8 +109,7 @@ pointer to a "nil" surface if other is already in an error state or any other error occurs. - -Since 1.12 +Since: 1.12 cairo_surface_observer_add_fill_callback () cairo_surface_observer_add_fill_callback @@ -128,11 +120,7 @@ void *data); - -Returns - - - + cairo_surface_observer_add_finish_callback () cairo_surface_observer_add_finish_callback @@ -143,11 +131,7 @@ void *data); - -Returns - - - + cairo_surface_observer_add_flush_callback () cairo_surface_observer_add_flush_callback @@ -158,11 +142,7 @@ void *data); - -Returns - - - + cairo_surface_observer_add_glyphs_callback () cairo_surface_observer_add_glyphs_callback @@ -173,11 +153,7 @@ void *data); - -Returns - - - + cairo_surface_observer_add_mask_callback () cairo_surface_observer_add_mask_callback @@ -188,11 +164,7 @@ void *data); - -Returns - - - + cairo_surface_observer_add_paint_callback () cairo_surface_observer_add_paint_callback @@ -203,11 +175,7 @@ void *data); - -Returns - - - + cairo_surface_observer_add_stroke_callback () cairo_surface_observer_add_stroke_callback @@ -218,11 +186,7 @@ void *data); - -Returns - - - + cairo_surface_observer_callback_t () cairo_surface_observer_callback_t @@ -240,11 +204,7 @@ cairo_surface_observer_elapsed (cairo_surface_t *surface); - -Returns - - - + cairo_surface_observer_print () cairo_surface_observer_print @@ -254,11 +214,7 @@ void *closure); - -Returns - - - + @@ -275,7 +231,7 @@ enum cairo_surface_observer_mode_t cairo_surface_observer_mode_t Whether operations should be recorded. - + Members @@ -294,7 +250,7 @@ -Since 1.12 +Since: 1.12 diff -Nru cairo-1.14.6/doc/public/xml/cairo-surface.xml cairo-1.15.10/doc/public/xml/cairo-surface.xml --- cairo-1.14.6/doc/public/xml/cairo-surface.xml 2015-12-09 20:45:07.000000000 +0000 +++ cairo-1.15.10/doc/public/xml/cairo-surface.xml 2017-12-11 21:03:31.000000000 +0000 @@ -1,15 +1,13 @@ - + ]> cairo_surface_t 3 - - CAIRO Library - +CAIRO Library cairo_surface_t @@ -98,6 +96,10 @@ #defineCAIRO_HAS_MIME_SURFACE +#defineCAIRO_MIME_TYPE_CCITT_FAX +#defineCAIRO_MIME_TYPE_CCITT_FAX_PARAMS +#defineCAIRO_MIME_TYPE_EPS +#defineCAIRO_MIME_TYPE_EPS_PARAMS#defineCAIRO_MIME_TYPE_JBIG2#defineCAIRO_MIME_TYPE_JBIG2_GLOBAL#defineCAIRO_MIME_TYPE_JBIG2_GLOBAL_ID @@ -114,11 +116,6 @@ - -Object Hierarchy - - - @@ -174,17 +171,18 @@ 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 -not possible for some reason. The type of the returned surface may -be examined with cairo_surface_get_type(). +device scale, 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. - + Parameters @@ -205,7 +203,7 @@ 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 @@ -214,8 +212,7 @@ pointer to a "nil" surface if other is already in an error state or any other error occurs. - -Since 1.0 +Since: 1.0 cairo_surface_create_similar_image () cairo_surface_create_similar_image @@ -226,11 +223,14 @@ 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. +can still be used like any normal image surface. Unlike +cairo_surface_create_similar() the new image surface won't inherit +the device scale from other +. 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 @@ -245,13 +245,13 @@ the format for the new surface width -width of the new surface, (in device-space units) +width of the new surface, (in pixels) height -height of the new surface (in device-space units) +height of the new surface (in pixels) - + Returns a pointer to the newly allocated image surface. The caller owns the surface and should call cairo_surface_destroy() when done @@ -260,8 +260,7 @@ pointer to a "nil" surface if other is already in an error state or any other error occurs. - -Since 1.12 +Since: 1.12 cairo_surface_create_for_rectangle () cairo_surface_create_for_rectangle @@ -282,7 +281,7 @@ 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. - + Parameters @@ -306,7 +305,7 @@ 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 @@ -315,8 +314,7 @@ pointer to a "nil" surface if other is already in an error state or any other error occurs. - -Since 1.10 +Since: 1.10 cairo_surface_reference () cairo_surface_reference @@ -327,9 +325,9 @@ 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(). - +Use cairo_surface_get_reference_count() to get the number of +references to a cairo_surface_t. + Parameters @@ -341,11 +339,10 @@ a cairo_surface_t - + Returns the referenced cairo_surface_t. - -Since 1.0 +Since: 1.0 cairo_surface_destroy () cairo_surface_destroy @@ -356,7 +353,7 @@ zero, then surface and all associated resources are freed. See cairo_surface_reference(). - + Parameters @@ -368,7 +365,7 @@ a cairo_surface_t -Since 1.0 +Since: 1.0 cairo_surface_status () cairo_surface_status @@ -376,7 +373,7 @@ cairo_surface_status (cairo_surface_t *surface); Checks whether an error has previously occurred for this surface. - + Parameters @@ -388,14 +385,13 @@ 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 +Since: 1.0 cairo_surface_finish () cairo_surface_finish @@ -414,7 +410,7 @@ 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. - + Parameters @@ -426,7 +422,7 @@ the cairo_surface_t to finish -Since 1.0 +Since: 1.0 cairo_surface_flush () cairo_surface_flush @@ -438,7 +434,7 @@ cairo to drawing on it directly with native APIs, or accessing its memory outside of Cairo. If the surface doesn't support direct access, then this function does nothing. - + Parameters @@ -450,7 +446,7 @@ a cairo_surface_t -Since 1.0 +Since: 1.0 cairo_surface_get_device () cairo_surface_get_device @@ -459,7 +455,7 @@ This function returns the device for a surface . See cairo_device_t. - + Parameters @@ -471,13 +467,12 @@ a cairo_surface_t - + Returns The device for surface or NULL if the surface does not have an associated device. - -Since 1.10 +Since: 1.10 cairo_surface_get_font_options () cairo_surface_get_font_options @@ -489,7 +484,7 @@ 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(). - + Parameters @@ -505,7 +500,7 @@ the retrieved options. All existing values are overwritten -Since 1.0 +Since: 1.0 cairo_surface_get_content () cairo_surface_get_content @@ -515,7 +510,7 @@ which indicates whether the surface contains color and/or alpha information. See cairo_content_t. - + Parameters @@ -527,12 +522,11 @@ a cairo_surface_t - + Returns The content type of surface . - -Since 1.2 +Since: 1.2 cairo_surface_mark_dirty () cairo_surface_mark_dirty @@ -541,7 +535,7 @@ 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. - + Parameters @@ -553,7 +547,7 @@ a cairo_surface_t -Since 1.0 +Since: 1.0 cairo_surface_mark_dirty_rectangle () cairo_surface_mark_dirty_rectangle @@ -569,7 +563,7 @@ 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. - + Parameters @@ -593,7 +587,7 @@ height of dirty rectangle -Since 1.0 +Since: 1.0 cairo_surface_set_device_offset () cairo_surface_set_device_offset @@ -612,7 +606,7 @@ 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 @@ -630,7 +624,7 @@ the offset in the Y direction, in device units -Since 1.0 +Since: 1.0 cairo_surface_get_device_offset () cairo_surface_get_device_offset @@ -640,7 +634,7 @@ double *y_offset); This function returns the previous device offset set by cairo_surface_set_device_offset(). - + Parameters @@ -658,7 +652,7 @@ the offset in the Y direction, in device units -Since 1.2 +Since: 1.2 cairo_surface_get_device_scale () cairo_surface_get_device_scale @@ -668,7 +662,7 @@ double *y_scale); This function returns the previous device offset set by cairo_surface_set_device_scale(). - + Parameters @@ -686,7 +680,7 @@ the scale in the Y direction, in device units -Since 1.14 +Since: 1.14 cairo_surface_set_device_scale () cairo_surface_set_device_scale @@ -704,7 +698,7 @@ 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 @@ -722,7 +716,7 @@ a scale factor in the Y direction -Since 1.14 +Since: 1.14 cairo_surface_set_fallback_resolution () cairo_surface_set_fallback_resolution @@ -749,7 +743,7 @@ in effect on a single page. The default fallback resoultion is 300 pixels per inch in both dimensions. - + Parameters @@ -767,7 +761,7 @@ vertical setting for pixels per inch -Since 1.2 +Since: 1.2 cairo_surface_get_fallback_resolution () cairo_surface_get_fallback_resolution @@ -778,7 +772,7 @@ This function returns the previous fallback resolution set by cairo_surface_set_fallback_resolution(), or default fallback resolution if never set. - + Parameters @@ -796,7 +790,7 @@ vertical pixels per inch -Since 1.8 +Since: 1.8 cairo_surface_get_type () cairo_surface_get_type @@ -804,7 +798,7 @@ 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 @@ -816,12 +810,11 @@ a cairo_surface_t - + Returns The type of surface . - -Since 1.2 +Since: 1.2 cairo_surface_get_reference_count () cairo_surface_get_reference_count @@ -829,7 +822,7 @@ cairo_surface_get_reference_count (cairo_surface_t *surface); Returns the current reference count of surface . - + Parameters @@ -841,13 +834,12 @@ 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 +Since: 1.4 cairo_surface_set_user_data () cairo_surface_set_user_data @@ -861,7 +853,7 @@ call this function with the key that was used to set it and NULL for data . - + Parameters @@ -884,12 +876,11 @@ 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 +Since: 1.0 cairo_surface_get_user_data () cairo_surface_get_user_data @@ -900,7 +891,7 @@ using the specified key. If no user data has been attached with the given key this function returns NULL. - + Parameters @@ -916,11 +907,10 @@ attached to - + Returns the user data previously attached or NULL. - -Since 1.0 +Since: 1.0 cairo_surface_copy_page () cairo_surface_copy_page @@ -932,7 +922,7 @@ 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 @@ -944,7 +934,7 @@ a cairo_surface_t -Since 1.6 +Since: 1.6 cairo_surface_show_page () cairo_surface_show_page @@ -954,7 +944,7 @@ 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 @@ -966,7 +956,7 @@ a cairo_Surface_t -Since 1.6 +Since: 1.6 cairo_surface_has_show_text_glyphs () cairo_surface_has_show_text_glyphs @@ -983,7 +973,7 @@ 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. - + Parameters @@ -995,13 +985,12 @@ a cairo_surface_t - + Returns TRUE if surface supports cairo_show_text_glyphs(), FALSE otherwise - -Since 1.8 +Since: 1.8 cairo_surface_set_mime_data () cairo_surface_set_mime_data @@ -1027,7 +1016,8 @@ 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. +CAIRO_MIME_TYPE_JBIG2_GLOBAL, CAIRO_MIME_TYPE_JBIG2_GLOBAL_ID, +CAIRO_MIME_TYPE_CCITT_FAX, CAIRO_MIME_TYPE_CCITT_FAX_PARAMS. 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 @@ -1041,7 +1031,7 @@ 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 @@ -1071,12 +1061,11 @@ notifier - + Returns CAIRO_STATUS_SUCCESS or CAIRO_STATUS_NO_MEMORY if a slot could not be allocated for the user data. - -Since 1.10 +Since: 1.10 cairo_surface_get_mime_data () cairo_surface_get_mime_data @@ -1090,7 +1079,7 @@ specified mime type. If no data has been attached with the given mime type, data is set NULL. - + Parameters @@ -1111,7 +1100,7 @@ the length of the image data -Since 1.10 +Since: 1.10 cairo_surface_supports_mime_type () cairo_surface_supports_mime_type @@ -1121,7 +1110,7 @@ Return whether surface supports mime_type . - + Parameters @@ -1136,14 +1125,13 @@ the mime type - + Returns TRUE if surface supports mime_type , FALSE otherwise - -Since 1.12 +Since: 1.12 cairo_surface_map_to_image () cairo_surface_map_to_image @@ -1162,7 +1150,7 @@ surface or of surface before the image surface is unmapped results in undefined behavior. - + Parameters @@ -1177,7 +1165,7 @@ 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. @@ -1187,8 +1175,7 @@ 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 +Since: 1.12 cairo_surface_unmap_image () cairo_surface_unmap_image @@ -1200,7 +1187,7 @@ Afterwards, the image is destroyed. Using an image surface which wasn't returned by cairo_surface_map_to_image() results in undefined behavior. - + Parameters @@ -1215,7 +1202,7 @@ the currently mapped image -Since 1.12 +Since: 1.12 @@ -1228,20 +1215,52 @@ + +CAIRO_MIME_TYPE_CCITT_FAX +CAIRO_MIME_TYPE_CCITT_FAX +#define CAIRO_MIME_TYPE_CCITT_FAX "image/g3fax" + +Group 3 or Group 4 CCITT facsimile encoding (International +Telecommunication Union, Recommendations T.4 and T.6.) +Since: 1.16 + +CAIRO_MIME_TYPE_CCITT_FAX_PARAMS +CAIRO_MIME_TYPE_CCITT_FAX_PARAMS +#define CAIRO_MIME_TYPE_CCITT_FAX_PARAMS "application/x-cairo.ccitt.params" + +Decode parameters for Group 3 or Group 4 CCITT facsimile encoding. +See CCITT Fax Images. +Since: 1.16 + +CAIRO_MIME_TYPE_EPS +CAIRO_MIME_TYPE_EPS +#define CAIRO_MIME_TYPE_EPS "application/postscript" + +Encapsulated PostScript file. +Encapsulated PostScript File Format Specification +Since: 1.16 + +CAIRO_MIME_TYPE_EPS_PARAMS +CAIRO_MIME_TYPE_EPS_PARAMS +#define CAIRO_MIME_TYPE_EPS_PARAMS "application/x-cairo.eps.params" + +Embedding parameters Encapsulated PostScript data. +See Embedding EPS files. +Since: 1.16 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 +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 +Since: 1.14 CAIRO_MIME_TYPE_JBIG2_GLOBAL_ID CAIRO_MIME_TYPE_JBIG2_GLOBAL_ID @@ -1249,35 +1268,35 @@ An unique identifier shared by a JBIG2 global segment and all JBIG2 images that depend on the global segment. -Since 1.14 +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 +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 +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 +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 +Since: 1.10 CAIRO_MIME_TYPE_UNIQUE_ID CAIRO_MIME_TYPE_UNIQUE_ID @@ -1285,7 +1304,7 @@ Unique identifier for a surface (cairo specific MIME type). All surfaces with the same unique identifier will only be embedded once. -Since 1.12 +Since: 1.12 cairo_surface_t cairo_surface_t @@ -1309,7 +1328,7 @@ cairo_xlib_surface_create(). Memory management of cairo_surface_t is done with cairo_surface_reference() and cairo_surface_destroy(). -Since 1.0 +Since: 1.0 enum cairo_content_t cairo_content_t @@ -1319,7 +1338,7 @@ 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 @@ -1343,7 +1362,7 @@ -Since 1.0 +Since: 1.0 enum cairo_surface_type_t cairo_surface_type_t @@ -1363,7 +1382,7 @@ 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 @@ -1498,7 +1517,7 @@ -Since 1.2 +Since: 1.2 diff -Nru cairo-1.14.6/doc/public/xml/cairo-svg.xml cairo-1.15.10/doc/public/xml/cairo-svg.xml --- cairo-1.14.6/doc/public/xml/cairo-svg.xml 2015-12-09 20:45:07.000000000 +0000 +++ cairo-1.15.10/doc/public/xml/cairo-svg.xml 2017-12-11 21:03:31.000000000 +0000 @@ -1,15 +1,13 @@ - + ]> SVG Surfaces 3 - - CAIRO Library - +CAIRO Library SVG Surfaces @@ -52,11 +50,6 @@ - -Object Hierarchy - - - @@ -90,7 +83,9 @@ 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. - +If CAIRO_MIME_TYPE_UNIQUE_ID is present, all surfaces with the same +unique identifier will only be embedded once. + Parameters @@ -111,7 +106,7 @@ 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 @@ -119,8 +114,7 @@ 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 +Since: 1.2 cairo_svg_surface_create_for_stream () cairo_svg_surface_create_for_stream @@ -133,7 +127,7 @@ incrementally to the stream represented by write_func and closure . - + Parameters @@ -160,7 +154,7 @@ 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 @@ -168,8 +162,7 @@ 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 +Since: 1.2 cairo_svg_surface_restrict_to_version () cairo_svg_surface_restrict_to_version @@ -183,7 +176,7 @@ have been performed on the given surface. The simplest way to do this is to call this function immediately after creating the surface. - + Parameters @@ -198,7 +191,7 @@ SVG version -Since 1.2 +Since: 1.2 cairo_svg_get_versions () cairo_svg_get_versions @@ -207,7 +200,7 @@ int *num_versions); Used to retrieve the list of supported versions. See cairo_svg_surface_restrict_to_version(). - + Parameters @@ -222,7 +215,7 @@ list length -Since 1.2 +Since: 1.2 cairo_svg_version_to_string () cairo_svg_version_to_string @@ -233,7 +226,7 @@ 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 @@ -245,11 +238,10 @@ a version id - + Returns the string associated to given version. - -Since 1.2 +Since: 1.2 @@ -261,13 +253,40 @@ Defined if the SVG surface backend is available. This macro can be used to conditionally compile backend-specific code. -Since 1.2 - +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. - +cairo_svg_version_t +CAIRO_SVG_UNIT_USER +: User unit, a value in the current coordinate system. + If used in the root element for the initial coordinate systems it + corresponds to pixels. (Since 1.16) +CAIRO_SVG_UNIT_EM +: The size of the element's font. (Since 1.16) +CAIRO_SVG_UNIT_EX +: The x-height of the element’s font. (Since 1.16) +CAIRO_SVG_UNIT_PX +: Pixels (1px = 1/96th of 1in). (Since 1.16) +CAIRO_SVG_UNIT_IN +: Inches (1in = 2.54cm = 96px). (Since 1.16) +CAIRO_SVG_UNIT_CM +: Centimeters (1cm = 96px/2.54). (Since 1.16) +CAIRO_SVG_UNIT_MM +: Millimeters (1mm = 1/10th of 1cm). (Since 1.16) +CAIRO_SVG_UNIT_PT +: Points (1pt = 1/72th of 1in). (Since 1.16) +CAIRO_SVG_UNIT_PC +: Picas (1pc = 1/6th of 1in). (Since 1.16) +CAIRO_SVG_UNIT_PERCENT +: Percent, a value that is some fraction of another + reference value. (Since 1.16) +cairo_svg_unit_t is used to describe the units valid for coordinates and +lengths in the SVG specification. +See also: +https://www.w3.org/TR/SVG/coords.htmlUnits +https://www.w3.org/TR/SVG/types.htmlDataTypeLength +https://www.w3.org/TR/css-values-3/lengths + Members @@ -276,17 +295,15 @@ 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 +Since: 1.16 diff -Nru cairo-1.14.6/doc/public/xml/cairo-tag.xml cairo-1.15.10/doc/public/xml/cairo-tag.xml --- cairo-1.14.6/doc/public/xml/cairo-tag.xml 1970-01-01 00:00:00.000000000 +0000 +++ cairo-1.15.10/doc/public/xml/cairo-tag.xml 2017-12-11 21:03:31.000000000 +0000 @@ -0,0 +1,353 @@ + + +]> + + +Tags and Links +3 +CAIRO Library + + +Tags and Links +Hyperlinks and document structure + + + +Functions + + + + + +void +cairo_tag_begin () +void +cairo_tag_end () + + + + + + +Types and Values + + + + + +#defineCAIRO_TAG_DEST +#defineCAIRO_TAG_LINK + + + + + + + + +Description +The tag functions provide the ability to specify hyperlinks and +document logical structure on supported backends. The following tags are supported: + +Link - Create a hyperlink +Destinations - Create a hyperlink destination + +Document Structure Tags - Create PDF Document Structure + + +Link TagsA hyperlink is specified by enclosing the hyperlink text with the CAIRO_TAG_LINK tag. +For example: + +cairo_tag_begin (cr, CAIRO_TAG_LINK, "uri='http://cairographics.org'"); +cairo_move_to (cr, 50, 50); +cairo_show_text (cr, "This is a link to the cairo website."); +cairo_tag_end (cr, CAIRO_TAG_LINK); + +The PDF backend uses one or more rectangles to define the clickable +area of the link. By default cairo will use the extents of the +drawing operations enclosed by the begin/end link tags to define the +clickable area. In some cases, such as a link split across two +lines, the default rectangle is undesirable. +rect +: [optional] The "rect" attribute allows the application to +specify one or more rectangles that form the clickable region. The +value of this attribute is an array of floats. Each rectangle is +specified by four elements in the array: x, y, width, height. The +array size must be a multiple of four. +An example of creating a link with user specified clickable region: + +cairo_font_extents_t font_extents; +cairo_text_extents_t text1_extents; +cairo_text_extents_t text2_extents; +char attribs[100]; +const char *text1 = "This link is split"; +const char *text2 = "across two lines"; + +cairo_font_extents (cr, &font_extents); +cairo_move_to (cr, 450, 50); +cairo_text_extents (cr, text1, &text1_extents); +cairo_move_to (cr, 50, 70); +cairo_text_extents (cr, text2, &text2_extents); +sprintf (attribs, + "rect=[%f %f %f %f %f %f %f %f] uri='http://cairographics.org'", + text1_extents.x_bearing, + text1_extents.y_bearing, + text1_extents.width, + text1_extents.height, + text2_extents.x_bearing, + text2_extents.y_bearing, + text2_extents.width, + text2_extents.height); + +cairo_tag_begin (cr, CAIRO_TAG_LINK, attribs); +cairo_show_text (cr, "This is a link to the cairo website"); +cairo_move_to (cr, 450, 50); +cairo_show_text (cr, text1); +cairo_move_to (cr, 50, 70); +cairo_show_text (cr, text2); +cairo_tag_end (cr, CAIRO_TAG_LINK); + +There are three types of links. Each type has its own attributes as detailed below. + +Internal Links - A link to a location in the same document +URI Links - A link to a Uniform resource identifier + +File Links - A link to a location in another document + + +Internal LinksAn internal link is a link to a location in the same document. The destination +is specified with either: +dest +: a UTF-8 string specifying the destination in the PDF file to link +to. Destinations are created with the CAIRO_TAG_DEST tag. +or the two attributes: +page +: An integer specifying the page number in the PDF file to link to. +pos +: [optional] An array of two floats specifying the x,y position +on the page. +An example of the link attributes to link to a page and x,y position: + +"page=3 pos=[3.1 6.2]" + + +URI LinksA URI link is a link to a Uniform Resource Identifier (RFC 2396). +A URI is specified with the following attribute: +uri +: An ASCII string specifying the URI. +An example of the link attributes to the cairo website: + +"uri='http://cairographics.org'" + + +File LinksA file link is a link a location in another PDF file. +The file attribute (required) specifies the name of the PDF file: +file +: File name of PDF file to link to. +The position is specified by either: + dest +: a UTF-8 string specifying the named destination in the PDF file. +or + page +: An integer specifying the page number in the PDF file. + pos +: [optional] An array of two floats specifying the x,y + position on the page. Position coordinates in external files are in PDF + coordinates (0,0 at bottom left). +An example of the link attributes to PDF file: + +"file='document.pdf' page=16 pos=[25 40]" + + + +Destination TagsA destination is specified by enclosing the destination drawing +operations with the CAIRO_TAG_DEST tag. +name +: [required] A UTF-8 string specifying the name of this destination. +x +: [optional] A float specifying the x coordinate of destination + position on this page. If not specified the default + x coordinate is the left side of the extents of the + operations enclosed by the CAIRO_TAG_DEST begin/end tags. If + no operations are enclosed, the x coordidate is 0. +y +: [optional] A float specifying the y coordinate of destination + position on this page. If not specified the default + y coordinate is the top of the extents of the + operations enclosed by the CAIRO_TAG_DEST begin/end tags. If + no operations are enclosed, the y coordidate is 0. +internal +: A boolean that if true, the destination name may be + ommitted from PDF where possible. In this case, links + refer directly to the page and position instead of via + the named destination table. Note that if this + destination is referenced by another PDF (see File Links), + this attribute must be false. Default is false. + +/* Create a hyperlink */ +cairo_tag_begin (cr, CAIRO_TAG_LINK, "dest='mydest' internal"); +cairo_move_to (cr, 50, 50); +cairo_show_text (cr, "This is a hyperlink."); +cairo_tag_end (cr, CAIRO_TAG_LINK); + +/* Create a destination */ +cairo_tag_begin (cr, CAIRO_TAG_DEST, "name='mydest'"); +cairo_move_to (cr, 50, 250); +cairo_show_text (cr, "This paragraph is the destination of the above link."); +cairo_tag_end (cr, CAIRO_TAG_DEST); + + +Document Structure (PDF)The document structure tags provide a means of specifying structural information +such as headers, paragraphs, tables, and figures. The inclusion of structural information faciliates: + +Extraction of text and graphics for copy and paste +Reflow of text and graphics in the viewer +Proccessing text eg searching and indexing +Conversion to other formats + +Accessability support + + +The list of structure types is specified in section 14.8.4 of the +PDF Reference. +Note the PDF "Link" structure tag is the same as the cairo CAIRO_TAG_LINK tag. +The following example creates a document structure for a document containing two section, each with +a header and a paragraph. + +cairo_tag_begin (cr, "Document", NULL); + +cairo_tag_begin (cr, "Sect", NULL); +cairo_tag_begin (cr, "H1", NULL); +cairo_show_text (cr, "Heading 1"); +cairo_tag_end (cr, "H1"); + +cairo_tag_begin (cr, "P", NULL); +cairo_show_text (cr, "Paragraph 1"); +cairo_tag_end (cr, "P"); +cairo_tag_end (cr, "Sect"); + +cairo_tag_begin (cr, "Sect", NULL); +cairo_tag_begin (cr, "H1", NULL); +cairo_show_text (cr, "Heading 2"); +cairo_tag_end (cr, "H1"); + +cairo_tag_begin (cr, "P", NULL); +cairo_show_text (cr, "Paragraph 2"); +cairo_tag_end (cr, "P"); +cairo_tag_end (cr, "Sect"); + +cairo_tag_end (cr, "Document"); + + + + + +Functions + +cairo_tag_begin () +cairo_tag_begin +void +cairo_tag_begin (cairo_t *cr, + const char *tag_name, + const char *attributes); +Marks the beginning of the tag_name + structure. Call +cairo_tag_end() with the same tag_name + to mark the end of the +structure. +The attributes string is of the form "key1=value2 key2=value2 ...". +Values may be boolean (true/false or 1/0), integer, float, string, +or an array. +String values are enclosed in single quotes +('). Single quotes and backslashes inside the string should be +escaped with a backslash. +Boolean values may be set to true by only +specifying the key. eg the attribute string "key" is the equivalent +to "key=true". +Arrays are enclosed in '[]'. eg "rect=[1.2 4.3 2.0 3.0]". +If no attributes are required, attributes + can be an empty string or NULL. +See Tags and Links Description +for the list of tags and attributes. +Invalid nesting of tags or invalid attributes will cause cr + to +shutdown with a status of CAIRO_STATUS_TAG_ERROR. +See cairo_tag_end(). + +Parameters + + + + + + +cr +a cairo context + +tag_name +tag name + +attributes +tag attributes + + +Since: 1.16 + +cairo_tag_end () +cairo_tag_end +void +cairo_tag_end (cairo_t *cr, + const char *tag_name); +Marks the end of the tag_name + structure. +Invalid nesting of tags will cause cr + to shutdown with a status of +CAIRO_STATUS_TAG_ERROR. +See cairo_tag_begin(). + +Parameters + + + + + + +cr +a cairo context + +tag_name +tag name + + +Since: 1.16 + + + +Types and Values + +CAIRO_TAG_DEST +CAIRO_TAG_DEST +#define CAIRO_TAG_DEST "cairo.dest" + +Create a destination for a hyperlink. Destination tag attributes +are detailed at Destinations. +Since: 1.16 + +CAIRO_TAG_LINK +CAIRO_TAG_LINK +#define CAIRO_TAG_LINK "Link" + +Create hyperlink. Link tag attributes are detailed at +Links. +Since: 1.16 + + + +See Also +cairo_pdf_surface_t + + + + diff -Nru cairo-1.14.6/doc/public/xml/cairo-text.xml cairo-1.15.10/doc/public/xml/cairo-text.xml --- cairo-1.14.6/doc/public/xml/cairo-text.xml 2015-12-09 20:45:07.000000000 +0000 +++ cairo-1.15.10/doc/public/xml/cairo-text.xml 2017-12-11 21:03:31.000000000 +0000 @@ -1,15 +1,13 @@ - + ]> text 3 - - CAIRO Library - +CAIRO Library text @@ -93,11 +91,6 @@ - -Object Hierarchy - - - @@ -171,7 +164,7 @@ CAIRO_FONT_WEIGHT_NORMAL. This function is equivalent to a call to cairo_toy_font_face_create() followed by cairo_set_font_face(). - + Parameters @@ -192,7 +185,7 @@ the weight for the font -Since 1.0 +Since: 1.0 cairo_set_font_size () cairo_set_font_size @@ -211,7 +204,7 @@ 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 @@ -226,7 +219,7 @@ the new font size, in user space units -Since 1.0 +Since: 1.0 cairo_set_font_matrix () cairo_set_font_matrix @@ -240,7 +233,7 @@ 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 - + Parameters @@ -256,7 +249,7 @@ the current font. -Since 1.0 +Since: 1.0 cairo_get_font_matrix () cairo_get_font_matrix @@ -266,7 +259,7 @@ Stores the current font matrix into matrix . See cairo_set_font_matrix(). - + Parameters @@ -281,7 +274,7 @@ return value for the matrix -Since 1.0 +Since: 1.0 cairo_set_font_options () cairo_set_font_options @@ -294,7 +287,7 @@ has a default value (like CAIRO_ANTIALIAS_DEFAULT), then the value from the surface is used. - + Parameters @@ -309,7 +302,7 @@ font options to use -Since 1.0 +Since: 1.0 cairo_get_font_options () cairo_get_font_options @@ -320,7 +313,7 @@ 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(). - + Parameters @@ -336,7 +329,7 @@ the retrieved options. All existing values are overwritten -Since 1.0 +Since: 1.0 cairo_set_font_face () cairo_set_font_face @@ -347,7 +340,7 @@ font_face . The replaced font face in the cairo_t will be destroyed if there are no other references to it. - + Parameters @@ -362,14 +355,14 @@ a cairo_font_face_t, or NULL to restore to the default font -Since 1.0 +Since: 1.0 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. - + Parameters @@ -381,7 +374,7 @@ a cairo_t - + Returns the current font face. This object is owned by cairo. To keep a reference to it, you must call @@ -393,8 +386,7 @@ 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 +Since: 1.0 cairo_set_scaled_font () cairo_set_scaled_font @@ -406,7 +398,7 @@ 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(). - + Parameters @@ -421,14 +413,14 @@ a cairo_scaled_font_t -Since 1.2 +Since: 1.2 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. - + Parameters @@ -440,7 +432,7 @@ a cairo_t - + Returns the current scaled font. This object is owned by cairo. To keep a reference to it, you must call @@ -452,8 +444,7 @@ 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 +Since: 1.4 cairo_show_text () cairo_show_text @@ -478,7 +469,7 @@ 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. - + Parameters @@ -493,7 +484,7 @@ a NUL-terminated string of text encoded in UTF-8, or NULL -Since 1.0 +Since: 1.0 cairo_show_glyphs () cairo_show_glyphs @@ -504,7 +495,7 @@ 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. - + Parameters @@ -522,7 +513,7 @@ number of glyphs to show -Since 1.0 +Since: 1.0 cairo_show_text_glyphs () cairo_show_text_glyphs @@ -564,7 +555,7 @@ array and following clusters move backward. See cairo_text_cluster_t for constraints on valid clusters. - + Parameters @@ -598,7 +589,7 @@ cluster mapping flags -Since 1.8 +Since: 1.8 cairo_font_extents () cairo_font_extents @@ -606,7 +597,7 @@ cairo_font_extents (cairo_t *cr, cairo_font_extents_t *extents); Gets the font extents for the currently selected font. - + Parameters @@ -622,7 +613,7 @@ will be stored. -Since 1.0 +Since: 1.0 cairo_text_extents () cairo_text_extents @@ -641,7 +632,7 @@ 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. - + Parameters @@ -660,7 +651,7 @@ will be stored -Since 1.0 +Since: 1.0 cairo_glyph_extents () cairo_glyph_extents @@ -677,7 +668,7 @@ cairo_show_glyphs(). Note that whitespace glyphs do not contribute to the size of the rectangle (extents.width and extents.height). - + Parameters @@ -700,7 +691,7 @@ will be stored -Since 1.0 +Since: 1.0 cairo_toy_font_face_create () cairo_toy_font_face_create @@ -717,7 +708,7 @@ 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 @@ -735,19 +726,18 @@ 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 +Since: 1.8 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. - + Parameters @@ -759,19 +749,18 @@ 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 +Since: 1.8 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. - + Parameters @@ -783,18 +772,17 @@ A toy font face - + Returns The slant value - -Since 1.8 +Since: 1.8 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. - + Parameters @@ -806,11 +794,10 @@ A toy font face - + Returns The weight value - -Since 1.8 +Since: 1.8 cairo_glyph_allocate () cairo_glyph_allocate @@ -827,7 +814,7 @@ or if out of memory. That means, the NULL return value signals out-of-memory only if num_glyphs was positive. - + Parameters @@ -839,12 +826,11 @@ number of glyphs to allocate - + Returns the newly allocated array of glyphs that should be freed using cairo_glyph_free() - -Since 1.8 +Since: 1.8 cairo_glyph_free () cairo_glyph_free @@ -856,7 +842,7 @@ an array of glyphs that the user will free. For all other uses, user can use their own allocation method for glyphs. - + Parameters @@ -868,7 +854,7 @@ array of glyphs to free, or NULL -Since 1.8 +Since: 1.8 cairo_text_cluster_allocate () cairo_text_cluster_allocate @@ -885,7 +871,7 @@ or if out of memory. That means, the NULL return value signals out-of-memory only if num_clusters was positive. - + Parameters @@ -897,12 +883,11 @@ 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 +Since: 1.8 cairo_text_cluster_free () cairo_text_cluster_free @@ -914,7 +899,7 @@ 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 @@ -926,7 +911,7 @@ array of text clusters to free, or NULL -Since 1.8 +Since: 1.8 @@ -955,7 +940,7 @@ are not cumulative. When drawing or measuring text, each glyph is individually positioned with respect to the overall origin - + Members @@ -963,35 +948,29 @@ -unsigned long index; -glyph index in the font. The exact interpretation of the -glyph index depends on the font technology being used. +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 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. +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 +Since: 1.0 enum cairo_font_slant_t cairo_font_slant_t Specifies variants of a font face based on their slant. - + Members @@ -1015,12 +994,12 @@ -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 @@ -1039,7 +1018,7 @@ -Since 1.0 +Since: 1.0 cairo_text_cluster_t cairo_text_cluster_t @@ -1060,7 +1039,7 @@ ignore those clusters when PDF text is being selected. See cairo_show_text_glyphs() for how clusters are used in advanced text operations. - + Members @@ -1068,24 +1047,22 @@ -int num_bytes; -the number of bytes of UTF-8 text covered by cluster +int num_bytes; the number of bytes of UTF-8 text covered by cluster -int num_glyphs; -the number of glyphs covered by cluster +int num_glyphs; the number of glyphs covered by cluster -Since 1.8 +Since: 1.8 enum cairo_text_cluster_flags_t cairo_text_cluster_flags_t Specifies properties of a text cluster mapping. - + Members @@ -1100,7 +1077,7 @@ -Since 1.8 +Since: 1.8 diff -Nru cairo-1.14.6/doc/public/xml/cairo-transforms.xml cairo-1.15.10/doc/public/xml/cairo-transforms.xml --- cairo-1.14.6/doc/public/xml/cairo-transforms.xml 2015-12-09 20:45:07.000000000 +0000 +++ cairo-1.15.10/doc/public/xml/cairo-transforms.xml 2017-12-11 21:03:31.000000000 +0000 @@ -1,15 +1,13 @@ - + ]> Transformations 3 - - CAIRO Library - +CAIRO Library Transformations @@ -50,11 +48,6 @@ - -Object Hierarchy - - - @@ -82,7 +75,7 @@ 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. - + Parameters @@ -100,7 +93,7 @@ amount to translate in the Y direction -Since 1.0 +Since: 1.0 cairo_scale () cairo_scale @@ -114,7 +107,7 @@ respectively. The scaling of the axes takes place after any existing transformation of user space. - + Parameters @@ -132,7 +125,7 @@ scale factor for the Y dimension -Since 1.0 +Since: 1.0 cairo_rotate () cairo_rotate @@ -145,7 +138,7 @@ 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. - + Parameters @@ -161,7 +154,7 @@ rotated -Since 1.0 +Since: 1.0 cairo_transform () cairo_transform @@ -172,7 +165,7 @@ matrix as an additional transformation. The new transformation of user space takes place after any existing transformation. - + Parameters @@ -187,7 +180,7 @@ a transformation to be applied to the user-space axes -Since 1.0 +Since: 1.0 cairo_set_matrix () cairo_set_matrix @@ -197,7 +190,7 @@ Modifies the current transformation matrix (CTM) by setting it equal to matrix . - + Parameters @@ -212,7 +205,7 @@ a transformation matrix from user space to device space -Since 1.0 +Since: 1.0 cairo_get_matrix () cairo_get_matrix @@ -221,7 +214,7 @@ cairo_matrix_t *matrix); Stores the current transformation matrix (CTM) into matrix . - + Parameters @@ -236,7 +229,7 @@ return value for the matrix -Since 1.0 +Since: 1.0 cairo_identity_matrix () cairo_identity_matrix @@ -246,7 +239,7 @@ 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. - + Parameters @@ -258,7 +251,7 @@ a cairo context -Since 1.0 +Since: 1.0 cairo_user_to_device () cairo_user_to_device @@ -269,7 +262,7 @@ Transform a coordinate from user space to device space by multiplying the given point by the current transformation matrix (CTM). - + Parameters @@ -287,7 +280,7 @@ Y value of coordinate (in/out parameter) -Since 1.0 +Since: 1.0 cairo_user_to_device_distance () cairo_user_to_device_distance @@ -301,7 +294,7 @@ (dx ,dy ). - + Parameters @@ -319,7 +312,7 @@ Y component of a distance vector (in/out parameter) -Since 1.0 +Since: 1.0 cairo_device_to_user () cairo_device_to_user @@ -330,7 +323,7 @@ Transform a coordinate from device space to user space by multiplying the given point by the inverse of the current transformation matrix (CTM). - + Parameters @@ -348,7 +341,7 @@ Y value of coordinate (in/out parameter) -Since 1.0 +Since: 1.0 cairo_device_to_user_distance () cairo_device_to_user_distance @@ -362,7 +355,7 @@ transforming (dx ,dy ). - + Parameters @@ -380,7 +373,7 @@ Y component of a distance vector (in/out parameter) -Since 1.0 +Since: 1.0 diff -Nru cairo-1.14.6/doc/public/xml/cairo-types.xml cairo-1.15.10/doc/public/xml/cairo-types.xml --- cairo-1.14.6/doc/public/xml/cairo-types.xml 2015-12-09 20:45:07.000000000 +0000 +++ cairo-1.15.10/doc/public/xml/cairo-types.xml 2017-12-11 21:03:31.000000000 +0000 @@ -1,15 +1,13 @@ - + ]> Types 3 - - CAIRO Library - +CAIRO Library Types @@ -45,11 +43,6 @@ - -Object Hierarchy - - - @@ -67,7 +60,7 @@ 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 @@ -79,7 +72,7 @@ The data element being destroyed. -Since 1.0 +Since: 1.0 @@ -98,7 +91,7 @@ /* do something */ } -Since 1.0 +Since: 1.0 cairo_user_data_key_t cairo_user_data_key_t @@ -111,7 +104,7 @@ 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. - + Members @@ -119,14 +112,13 @@ -int unused; -not used; ignore. +int unused; not used; ignore. -Since 1.0 +Since: 1.0 cairo_rectangle_int_t cairo_rectangle_int_t @@ -136,7 +128,7 @@ } cairo_rectangle_int_t; A data structure for holding a rectangle with integer coordinates. - + Members @@ -144,29 +136,25 @@ -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 +Since: 1.10 diff -Nru cairo-1.14.6/doc/public/xml/cairo-user-fonts.xml cairo-1.15.10/doc/public/xml/cairo-user-fonts.xml --- cairo-1.14.6/doc/public/xml/cairo-user-fonts.xml 2015-12-09 20:45:07.000000000 +0000 +++ cairo-1.15.10/doc/public/xml/cairo-user-fonts.xml 2017-12-11 21:03:31.000000000 +0000 @@ -1,15 +1,13 @@ - + ]> User Fonts 3 - - CAIRO Library - +CAIRO Library User Fonts @@ -67,11 +65,6 @@ - -Object Hierarchy - - - @@ -114,7 +107,7 @@ is not fully initialized at this point and trying to use it for text operations in the callback will result in deadlock. - + Parameters @@ -132,11 +125,10 @@ font extents to fill in, in font space - + Returns CAIRO_STATUS_SUCCESS upon success, or an error status on error. - -Since 1.8 +Since: 1.8 cairo_user_scaled_font_render_glyph_func_t () cairo_user_scaled_font_render_glyph_func_t @@ -188,7 +180,7 @@ extents, it must be ink extents, and include the extents of all drawing done to cr in the callback. - + Parameters @@ -209,12 +201,11 @@ 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 +Since: 1.8 cairo_user_scaled_font_text_to_glyphs_func_t () cairo_user_scaled_font_text_to_glyphs_func_t @@ -287,7 +278,7 @@ 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. - + Parameters @@ -323,13 +314,12 @@ - + 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 +Since: 1.8 cairo_user_scaled_font_unicode_to_glyph_func_t () cairo_user_scaled_font_unicode_to_glyph_func_t @@ -360,7 +350,7 @@ 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. - + Parameters @@ -378,13 +368,12 @@ 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 +Since: 1.8 cairo_user_font_face_create () cairo_user_font_face_create @@ -398,12 +387,11 @@ 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 +Since: 1.8 cairo_user_font_face_set_init_func () cairo_user_font_face_set_init_func @@ -416,7 +404,7 @@ 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. - + Parameters @@ -431,14 +419,14 @@ The init callback, or NULL -Since 1.8 +Since: 1.8 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. - + Parameters @@ -450,12 +438,11 @@ A user font face - + Returns The init callback of font_face or NULL if none set or an error has occurred. - -Since 1.8 +Since: 1.8 cairo_user_font_face_set_render_glyph_func () cairo_user_font_face_set_render_glyph_func @@ -473,7 +460,7 @@ 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 @@ -488,7 +475,7 @@ The render_glyph callback, or NULL -Since 1.8 +Since: 1.8 cairo_user_font_face_get_render_glyph_func () cairo_user_font_face_get_render_glyph_func @@ -496,7 +483,7 @@ cairo_user_font_face_get_render_glyph_func (cairo_font_face_t *font_face); Gets the glyph rendering function of a user-font. - + Parameters @@ -508,12 +495,11 @@ 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 +Since: 1.8 cairo_user_font_face_set_unicode_to_glyph_func () cairo_user_font_face_set_unicode_to_glyph_func @@ -527,7 +513,7 @@ 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. - + Parameters @@ -542,7 +528,7 @@ The unicode_to_glyph callback, or NULL -Since 1.8 +Since: 1.8 cairo_user_font_face_get_unicode_to_glyph_func () cairo_user_font_face_get_unicode_to_glyph_func @@ -550,7 +536,7 @@ 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 @@ -562,12 +548,11 @@ 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 +Since: 1.8 cairo_user_font_face_set_text_to_glyphs_func () cairo_user_font_face_set_text_to_glyphs_func @@ -581,7 +566,7 @@ 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. - + Parameters @@ -596,7 +581,7 @@ The text_to_glyphs callback, or NULL -Since 1.8 +Since: 1.8 cairo_user_font_face_get_text_to_glyphs_func () cairo_user_font_face_get_text_to_glyphs_func @@ -604,7 +589,7 @@ 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 @@ -616,12 +601,11 @@ 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 +Since: 1.8 @@ -635,7 +619,7 @@ 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 +Since: 1.8 diff -Nru cairo-1.14.6/doc/public/xml/cairo-version.xml cairo-1.15.10/doc/public/xml/cairo-version.xml --- cairo-1.14.6/doc/public/xml/cairo-version.xml 2015-12-09 20:45:07.000000000 +0000 +++ cairo-1.15.10/doc/public/xml/cairo-version.xml 2017-12-11 21:03:31.000000000 +0000 @@ -1,15 +1,13 @@ - + ]> Version Information 3 - - CAIRO Library - +CAIRO Library Version Information @@ -51,11 +49,6 @@ - -Object Hierarchy - - - @@ -157,7 +150,7 @@ 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 @@ -175,11 +168,10 @@ the micro component of the version number - + Returns the encoded version. - -Since 1.0 +Since: 1.0 CAIRO_VERSION_STRINGIZE() CAIRO_VERSION_STRINGIZE @@ -187,7 +179,7 @@ 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 @@ -205,11 +197,10 @@ the micro component of the version number - + Returns a string literal containing the version. - -Since 1.8 +Since: 1.8 cairo_version () cairo_version @@ -225,11 +216,10 @@ 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 +Since: 1.0 cairo_version_string () cairo_version_string @@ -239,11 +229,10 @@ 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 +Since: 1.0 @@ -254,35 +243,35 @@ #define CAIRO_VERSION The version of cairo available at compile-time, encoded using CAIRO_VERSION_ENCODE(). -Since 1.0 +Since: 1.0 CAIRO_VERSION_MAJOR 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 +Since: 1.0 CAIRO_VERSION_MINOR 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 +Since: 1.0 CAIRO_VERSION_MICRO 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 +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 +Since: 1.8 diff -Nru cairo-1.14.6/doc/public/xml/cairo-win32-fonts.xml cairo-1.15.10/doc/public/xml/cairo-win32-fonts.xml --- cairo-1.14.6/doc/public/xml/cairo-win32-fonts.xml 2015-12-09 20:45:07.000000000 +0000 +++ cairo-1.15.10/doc/public/xml/cairo-win32-fonts.xml 2017-12-11 21:03:31.000000000 +0000 @@ -1,15 +1,13 @@ - + ]> Win32 Fonts 3 - - CAIRO Library - +CAIRO Library Win32 Fonts @@ -57,11 +55,6 @@ - -Object Hierarchy - - - @@ -84,7 +77,7 @@ 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(). - + Parameters @@ -98,12 +91,11 @@ 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 +Since: 1.0 cairo_win32_font_face_create_for_hfont () cairo_win32_font_face_create_for_hfont @@ -116,7 +108,7 @@ 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(). - + Parameters @@ -128,12 +120,11 @@ 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 +Since: 1.2 cairo_win32_font_face_create_for_logfontw_hfont () cairo_win32_font_face_create_for_logfontw_hfont @@ -147,7 +138,7 @@ 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(). - + Parameters @@ -167,12 +158,11 @@ -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 +Since: 1.6 cairo_win32_scaled_font_select_font () cairo_win32_scaled_font_select_font @@ -190,7 +180,7 @@ 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 @@ -206,20 +196,19 @@ 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 +Since: 1.0 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() - + Parameters @@ -231,7 +220,7 @@ A scaled font from the Win32 font backend. -Since 1.0 +Since: 1.0 cairo_win32_scaled_font_get_metrics_factor () cairo_win32_scaled_font_get_metrics_factor @@ -242,7 +231,7 @@ 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. - + Parameters @@ -254,12 +243,11 @@ a scaled font from the Win32 font backend - + Returns factor to multiply logical units by to get font space coordinates. - -Since 1.0 +Since: 1.0 cairo_win32_scaled_font_get_logical_to_device () cairo_win32_scaled_font_get_logical_to_device @@ -270,7 +258,7 @@ Gets the transformation mapping the logical space used by scaled_font to device space. - + Parameters @@ -285,7 +273,7 @@ matrix to return -Since 1.4 +Since: 1.4 cairo_win32_scaled_font_get_device_to_logical () cairo_win32_scaled_font_get_device_to_logical @@ -296,7 +284,7 @@ Gets the transformation mapping device space to the logical space used by scaled_font . - + Parameters @@ -311,7 +299,7 @@ matrix to return -Since 1.4 +Since: 1.4 @@ -323,7 +311,7 @@ Defined if the Microsoft Windows font backend is available. This macro can be used to conditionally compile backend-specific code. -Since 1.8 +Since: 1.8 diff -Nru cairo-1.14.6/doc/public/xml/cairo-win32.xml cairo-1.15.10/doc/public/xml/cairo-win32.xml --- cairo-1.14.6/doc/public/xml/cairo-win32.xml 2015-12-09 20:45:07.000000000 +0000 +++ cairo-1.15.10/doc/public/xml/cairo-win32.xml 2017-12-11 21:03:31.000000000 +0000 @@ -1,15 +1,13 @@ - + ]> Win32 Surfaces 3 - - CAIRO Library - +CAIRO Library Win32 Surfaces @@ -53,11 +51,6 @@ - -Object Hierarchy - - - @@ -83,8 +76,9 @@ 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_format() or cairo_win32_surface_create_with_dib(). - + Parameters @@ -96,11 +90,10 @@ the DC to create a surface for - + Returns - the newly created surface - -Since 1.0 + the newly created surface, NULL on failure +Since: 1.0 cairo_win32_surface_create_with_dib () cairo_win32_surface_create_with_dib @@ -111,7 +104,7 @@ Creates a device-independent-bitmap surface not associated with any particular existing surface or device context. The created bitmap will be uninitialized. - + Parameters @@ -129,11 +122,10 @@ height of the surface, in pixels - + Returns the newly created surface - -Since 1.2 +Since: 1.2 cairo_win32_surface_create_with_ddb () cairo_win32_surface_create_with_ddb @@ -145,7 +137,7 @@ Creates a device-dependent-bitmap surface not associated with any particular existing surface or device context. The created bitmap will be uninitialized. - + Parameters @@ -166,11 +158,10 @@ height of the surface, in pixels - + Returns the newly created surface - -Since 1.4 +Since: 1.4 cairo_win32_printing_surface_create () cairo_win32_printing_surface_create @@ -184,7 +175,7 @@ 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 @@ -196,11 +187,10 @@ the DC to create a surface for - + Returns the newly created surface - -Since 1.6 +Since: 1.6 cairo_win32_surface_get_dc () cairo_win32_surface_get_dc @@ -213,7 +203,7 @@ 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. - + Parameters @@ -225,11 +215,10 @@ a cairo_surface_t - + Returns HDC or NULL if no HDC available. - -Since 1.2 +Since: 1.2 cairo_win32_surface_get_image () cairo_win32_surface_get_image @@ -238,7 +227,7 @@ 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. - + Parameters @@ -250,12 +239,11 @@ 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 +Since: 1.4 @@ -267,7 +255,7 @@ Defined if the Microsoft Windows surface backend is available. This macro can be used to conditionally compile backend-specific code. -Since 1.0 +Since: 1.0 diff -Nru cairo-1.14.6/doc/public/xml/cairo-xcb.xml cairo-1.15.10/doc/public/xml/cairo-xcb.xml --- cairo-1.14.6/doc/public/xml/cairo-xcb.xml 2015-12-09 20:45:07.000000000 +0000 +++ cairo-1.15.10/doc/public/xml/cairo-xcb.xml 2017-12-11 21:03:31.000000000 +0000 @@ -1,15 +1,13 @@ - + ]> XCB Surfaces 3 - - CAIRO Library - +CAIRO Library XCB Surfaces @@ -62,11 +60,6 @@ - -Object Hierarchy - - - @@ -100,7 +93,7 @@ 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. - + Parameters @@ -129,7 +122,7 @@ - + Returns a pointer to the newly created surface. The caller owns the surface and should call cairo_surface_destroy() when done @@ -137,8 +130,7 @@ 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 +Since: 1.12 cairo_xcb_surface_create_for_bitmap () cairo_xcb_surface_create_for_bitmap @@ -150,7 +142,7 @@ int height); Creates an XCB surface that draws to the given bitmap. This will be drawn to as a CAIRO_FORMAT_A1 object. - + Parameters @@ -177,7 +169,7 @@ - + Returns a pointer to the newly created surface. The caller owns the surface and should call cairo_surface_destroy() when done @@ -185,8 +177,7 @@ 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 +Since: 1.12 cairo_xcb_surface_create_with_xrender_format () cairo_xcb_surface_create_with_xrender_format @@ -210,7 +201,7 @@ 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. - + Parameters @@ -243,7 +234,7 @@ - + Returns a pointer to the newly created surface. The caller owns the surface and should call cairo_surface_destroy() when done @@ -251,8 +242,7 @@ 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 +Since: 1.12 cairo_xcb_surface_set_size () cairo_xcb_surface_set_size @@ -270,7 +260,7 @@ this function on a surface created for a pixmap. If cairo_surface_flush() wasn't called, some pending operations might be discarded. - + Parameters @@ -288,7 +278,7 @@ the new height of the surface -Since 1.12 +Since: 1.12 cairo_xcb_surface_set_drawable () cairo_xcb_surface_set_drawable @@ -301,7 +291,7 @@ surface. If cairo_surface_flush() wasn't called, some pending operations might be discarded. - + Parameters @@ -322,14 +312,14 @@ the new height of the surface -Since 1.12 +Since: 1.12 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. - + Parameters @@ -341,11 +331,10 @@ a cairo_device_t for the XCB backend - + Returns the xcb_connection_t for the connection - -Since 1.12 +Since: 1.12 cairo_xcb_device_debug_cap_xrender_version () cairo_xcb_device_debug_cap_xrender_version @@ -359,7 +348,7 @@ 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. - + Parameters @@ -377,7 +366,7 @@ minor version to restrict to -Since 1.12 +Since: 1.12 cairo_xcb_device_debug_cap_xshm_version () cairo_xcb_device_debug_cap_xshm_version @@ -391,7 +380,7 @@ 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. - + Parameters @@ -409,14 +398,14 @@ minor version to restrict to -Since 1.12 +Since: 1.12 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. - + Parameters @@ -428,11 +417,10 @@ a cairo_device_t for the XCB backend - + Returns the render precision mode - -Since 1.12 +Since: 1.12 cairo_xcb_device_debug_set_precision () cairo_xcb_device_debug_set_precision @@ -441,7 +429,7 @@ int precision); Render supports two modes of precision when rendering trapezoids. Set the precision to the desired mode. - + Parameters @@ -456,7 +444,7 @@ the precision to use -Since 1.12 +Since: 1.12 @@ -468,7 +456,7 @@ Defined if the xcb surface backend is available. This macro can be used to conditionally compile backend-specific code. -Since 1.12 +Since: 1.12 CAIRO_HAS_XCB_SHM_FUNCTIONS CAIRO_HAS_XCB_SHM_FUNCTIONS diff -Nru cairo-1.14.6/doc/public/xml/cairo-xlib.xml cairo-1.15.10/doc/public/xml/cairo-xlib.xml --- cairo-1.14.6/doc/public/xml/cairo-xlib.xml 2015-12-09 20:45:07.000000000 +0000 +++ cairo-1.15.10/doc/public/xml/cairo-xlib.xml 2017-12-11 21:03:31.000000000 +0000 @@ -1,15 +1,13 @@ - + ]> XLib Surfaces 3 - - CAIRO Library - +CAIRO Library XLib Surfaces @@ -69,11 +67,6 @@ - -Object Hierarchy - - - @@ -107,7 +100,7 @@ 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. - + Parameters @@ -136,11 +129,10 @@ . - + Returns the newly created surface - -Since 1.0 +Since: 1.0 cairo_xlib_surface_create_for_bitmap () cairo_xlib_surface_create_for_bitmap @@ -152,7 +144,7 @@ int height); Creates an Xlib surface that draws to the given bitmap. This will be drawn to as a CAIRO_FORMAT_A1 object. - + Parameters @@ -179,11 +171,10 @@ . - + Returns the newly created surface - -Since 1.0 +Since: 1.0 cairo_xlib_surface_set_size () cairo_xlib_surface_set_size @@ -199,7 +190,7 @@ 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 @@ -217,14 +208,14 @@ the new height of the surface -Since 1.0 +Since: 1.0 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. - + Parameters @@ -236,18 +227,17 @@ a cairo_xlib_surface_t - + Returns the display. - -Since 1.2 +Since: 1.2 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. - + Parameters @@ -259,11 +249,10 @@ a cairo_xlib_surface_t - + Returns the screen. - -Since 1.2 +Since: 1.2 cairo_xlib_surface_set_drawable () cairo_xlib_surface_set_drawable @@ -278,7 +267,7 @@ will get X protocol errors and will probably terminate. No checks are done by this function to ensure this compatibility. - + Parameters @@ -299,14 +288,14 @@ the height of the new drawable -Since 1.0 +Since: 1.0 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. - + Parameters @@ -318,11 +307,10 @@ a cairo_xlib_surface_t - + Returns the drawable. - -Since 1.2 +Since: 1.2 cairo_xlib_surface_get_visual () cairo_xlib_surface_get_visual @@ -334,7 +322,7 @@ was created by cairo_xlib_surface_create(), the return value is the Visual passed to that constructor. - + Parameters @@ -346,20 +334,19 @@ a cairo_xlib_surface_t - + Returns the Visual or NULL if there is no appropriate Visual for surface . - -Since 1.2 +Since: 1.2 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. - + Parameters @@ -371,18 +358,17 @@ a cairo_xlib_surface_t - + Returns the width of the surface in pixels. - -Since 1.2 +Since: 1.2 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. - + Parameters @@ -394,18 +380,17 @@ a cairo_xlib_surface_t - + Returns the height of the surface in pixels. - -Since 1.2 +Since: 1.2 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. - + Parameters @@ -417,11 +402,10 @@ a cairo_xlib_surface_t - + Returns the depth of the surface in bits. - -Since 1.2 +Since: 1.2 cairo_xlib_device_debug_cap_xrender_version () cairo_xlib_device_debug_cap_xrender_version @@ -435,7 +419,7 @@ 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 @@ -453,14 +437,14 @@ minor version to restrict to -Since 1.12 +Since: 1.12 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. - + Parameters @@ -472,11 +456,10 @@ a cairo_device_t for the Xlib backend - + Returns the render precision mode - -Since 1.12 +Since: 1.12 cairo_xlib_device_debug_set_precision () cairo_xlib_device_debug_set_precision @@ -485,7 +468,7 @@ int precision); Render supports two modes of precision when rendering trapezoids. Set the precision to the desired mode. - + Parameters @@ -500,7 +483,7 @@ the precision to use -Since 1.12 +Since: 1.12 @@ -512,7 +495,7 @@ Defined if the Xlib surface backend is available. This macro can be used to conditionally compile backend-specific code. -Since 1.0 +Since: 1.0 diff -Nru cairo-1.14.6/doc/public/xml/cairo-xlib-xrender.xml cairo-1.15.10/doc/public/xml/cairo-xlib-xrender.xml --- cairo-1.14.6/doc/public/xml/cairo-xlib-xrender.xml 2015-12-09 20:45:07.000000000 +0000 +++ cairo-1.15.10/doc/public/xml/cairo-xlib-xrender.xml 2017-12-11 21:03:31.000000000 +0000 @@ -1,15 +1,13 @@ - + ]> XLib-XRender Backend 3 - - CAIRO Library - +CAIRO Library XLib-XRender Backend @@ -45,11 +43,6 @@ - -Object Hierarchy - - - @@ -80,7 +73,7 @@ is a Window, then the function cairo_xlib_surface_set_size() must be called whenever the size of the window changes. - + Parameters @@ -113,11 +106,10 @@ . - + Returns the newly created surface - -Since 1.0 +Since: 1.0 cairo_xlib_surface_get_xrender_format () cairo_xlib_surface_get_xrender_format @@ -128,7 +120,7 @@ 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. - + Parameters @@ -140,14 +132,13 @@ 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 +Since: 1.6 @@ -159,7 +150,7 @@ Defined if the XLib/XRender surface functions are available. This macro can be used to conditionally compile backend-specific code. -Since 1.6 +Since: 1.6 diff -Nru cairo-1.14.6/doc/public/xml/cairo.xml cairo-1.15.10/doc/public/xml/cairo.xml --- cairo-1.14.6/doc/public/xml/cairo.xml 2015-12-09 20:45:07.000000000 +0000 +++ cairo-1.15.10/doc/public/xml/cairo.xml 2017-12-11 21:03:31.000000000 +0000 @@ -1,15 +1,13 @@ - + ]> cairo_t 3 - - CAIRO Library - +CAIRO Library cairo_t @@ -168,11 +166,6 @@ - -Object Hierarchy - - - @@ -205,7 +198,7 @@ , so you can immediately call cairo_surface_destroy() on it if you don't need to maintain a separate reference to it. - + Parameters @@ -217,7 +210,7 @@ target surface for the context - + Returns a newly allocated cairo_t with a reference count of 1. The initial reference count should be released @@ -229,8 +222,7 @@ 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 +Since: 1.0 cairo_reference () cairo_reference @@ -241,9 +233,9 @@ 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(). - +Use cairo_get_reference_count() to get the number of references to +a cairo_t. + Parameters @@ -255,11 +247,10 @@ a cairo_t - + Returns the referenced cairo_t. - -Since 1.0 +Since: 1.0 cairo_destroy () cairo_destroy @@ -270,7 +261,7 @@ is zero, then cr and all associated resources are freed. See cairo_reference(). - + Parameters @@ -282,14 +273,14 @@ a cairo_t -Since 1.0 +Since: 1.0 cairo_status () cairo_status cairo_status_t cairo_status (cairo_t *cr); Checks whether an error has previously occurred for this context. - + Parameters @@ -301,11 +292,10 @@ a cairo context - + Returns the current status of this context, see cairo_status_t - -Since 1.0 +Since: 1.0 cairo_save () cairo_save @@ -324,7 +314,7 @@ 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 @@ -336,7 +326,7 @@ a cairo_t -Since 1.0 +Since: 1.0 cairo_restore () cairo_restore @@ -346,7 +336,7 @@ to the state saved by a preceding call to cairo_save() and removes that state from the stack of saved states. - + Parameters @@ -358,7 +348,7 @@ a cairo_t -Since 1.0 +Since: 1.0 cairo_get_target () cairo_get_target @@ -372,7 +362,7 @@ (ie. cairo_status() != CAIRO_STATUS_SUCCESS). A nil surface is indicated by cairo_surface_status() != CAIRO_STATUS_SUCCESS. - + Parameters @@ -384,12 +374,11 @@ 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 +Since: 1.0 cairo_push_group () cairo_push_group @@ -426,7 +415,7 @@ cairo_pop_group_to_source (cr); cairo_paint_with_alpha (cr, alpha); - + Parameters @@ -438,7 +427,7 @@ a cairo context -Since 1.2 +Since: 1.2 cairo_push_group_with_content () cairo_push_group_with_content @@ -455,7 +444,7 @@ 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 @@ -471,7 +460,7 @@ will be created -Since 1.2 +Since: 1.2 cairo_pop_group () cairo_pop_group @@ -485,7 +474,7 @@ 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 @@ -497,14 +486,13 @@ 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 +Since: 1.2 cairo_pop_group_to_source () cairo_pop_group_to_source @@ -526,7 +514,7 @@ 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 @@ -538,7 +526,7 @@ a cairo context -Since 1.2 +Since: 1.2 cairo_get_group_target () cairo_get_group_target @@ -554,7 +542,7 @@ (ie. cairo_status() != CAIRO_STATUS_SUCCESS). A nil surface is indicated by cairo_surface_status() != CAIRO_STATUS_SUCCESS. - + Parameters @@ -566,12 +554,11 @@ 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 +Since: 1.2 cairo_set_source_rgb () cairo_set_source_rgb @@ -593,7 +580,7 @@ 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 @@ -614,7 +601,7 @@ blue component of color -Since 1.0 +Since: 1.0 cairo_set_source_rgba () cairo_set_source_rgba @@ -633,7 +620,7 @@ 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 @@ -657,7 +644,7 @@ alpha component of color -Since 1.0 +Since: 1.0 cairo_set_source () cairo_set_source @@ -676,7 +663,7 @@ 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 @@ -692,7 +679,7 @@ subsequent drawing operations. -Since 1.0 +Since: 1.0 cairo_set_source_surface () cairo_set_source_surface @@ -720,7 +707,7 @@ 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 @@ -741,7 +728,7 @@ User-space Y coordinate for surface origin -Since 1.0 +Since: 1.0 cairo_get_source () cairo_get_source @@ -749,7 +736,7 @@ cairo_get_source (cairo_t *cr); Gets the current source pattern for cr . - + Parameters @@ -761,13 +748,12 @@ 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 +Since: 1.0 cairo_set_antialias () cairo_set_antialias @@ -780,7 +766,7 @@ CAIRO_ANTIALIAS_SUBPIXEL when drawing shapes. Note that this option does not affect text rendering, instead see cairo_font_options_set_antialias(). - + Parameters @@ -795,7 +781,7 @@ the new antialiasing mode -Since 1.0 +Since: 1.0 cairo_get_antialias () cairo_get_antialias @@ -803,7 +789,7 @@ cairo_get_antialias (cairo_t *cr); Gets the current shape antialiasing mode, as set by cairo_set_antialias(). - + Parameters @@ -815,11 +801,10 @@ a cairo context - + Returns the current shape antialiasing mode. - -Since 1.0 +Since: 1.0 cairo_set_dash () cairo_set_dash @@ -854,7 +839,7 @@ cr will be put into an error state with a status of CAIRO_STATUS_INVALID_DASH. - + Parameters @@ -875,7 +860,7 @@ an offset into the dash pattern at which the stroke should start -Since 1.0 +Since: 1.0 cairo_get_dash_count () cairo_get_dash_count @@ -885,7 +870,7 @@ (0 if dashing is not currently in effect). See also cairo_set_dash() and cairo_get_dash(). - + Parameters @@ -897,11 +882,10 @@ a cairo_t - + Returns the length of the dash array, or 0 if no dash array set. - -Since 1.4 +Since: 1.4 cairo_get_dash () cairo_get_dash @@ -913,7 +897,7 @@ should be big enough to hold at least the number of values returned by cairo_get_dash_count(). - + Parameters @@ -931,7 +915,7 @@ return value for the current dash offset, or NULL -Since 1.4 +Since: 1.4 cairo_set_fill_rule () cairo_set_fill_rule @@ -944,7 +928,7 @@ 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 @@ -959,14 +943,14 @@ a fill rule, specified as a cairo_fill_rule_t -Since 1.0 +Since: 1.0 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(). - + Parameters @@ -978,11 +962,10 @@ a cairo context - + Returns the current fill rule. - -Since 1.0 +Since: 1.0 cairo_set_line_cap () cairo_set_line_cap @@ -997,7 +980,7 @@ cairo_stroke_to_path(), but does not have any effect during path construction. The default line cap style is CAIRO_LINE_CAP_BUTT. - + Parameters @@ -1012,14 +995,14 @@ a line cap style -Since 1.0 +Since: 1.0 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(). - + Parameters @@ -1031,11 +1014,10 @@ a cairo context - + Returns the current line cap style. - -Since 1.0 +Since: 1.0 cairo_set_line_join () cairo_set_line_join @@ -1050,7 +1032,7 @@ cairo_stroke_to_path(), but does not have any effect during path construction. The default line join style is CAIRO_LINE_JOIN_MITER. - + Parameters @@ -1065,14 +1047,14 @@ a line join style -Since 1.0 +Since: 1.0 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(). - + Parameters @@ -1084,11 +1066,10 @@ a cairo context - + Returns the current line join style. - -Since 1.0 +Since: 1.0 cairo_set_line_width () cairo_set_line_width @@ -1112,7 +1093,7 @@ cairo_stroke_to_path(), but does not have any effect during path construction. The default line width value is 2.0. - + Parameters @@ -1127,7 +1108,7 @@ a line width -Since 1.0 +Since: 1.0 cairo_get_line_width () cairo_get_line_width @@ -1137,7 +1118,7 @@ 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 @@ -1149,11 +1130,10 @@ a cairo context - + Returns the current line width. - -Since 1.0 +Since: 1.0 cairo_set_miter_limit () cairo_set_miter_limit @@ -1178,7 +1158,7 @@ degrees. A miter limit for a desired angle can be computed as: miter limit = 1/sin(angle/2) - + Parameters @@ -1193,14 +1173,14 @@ miter limit to set -Since 1.0 +Since: 1.0 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(). - + Parameters @@ -1212,11 +1192,10 @@ a cairo context - + Returns the current miter limit. - -Since 1.0 +Since: 1.0 cairo_set_operator () cairo_set_operator @@ -1227,7 +1206,7 @@ operations. See cairo_operator_t for details on the semantics of each available compositing operator. The default operator is CAIRO_OPERATOR_OVER. - + Parameters @@ -1242,14 +1221,14 @@ a compositing operator, specified as a cairo_operator_t -Since 1.0 +Since: 1.0 cairo_get_operator () cairo_get_operator cairo_operator_t cairo_get_operator (cairo_t *cr); Gets the current compositing operator for a cairo context. - + Parameters @@ -1261,11 +1240,10 @@ a cairo context - + Returns the current compositing operator. - -Since 1.0 +Since: 1.0 cairo_set_tolerance () cairo_set_tolerance @@ -1284,7 +1262,7 @@ the prescribed tolerance is restricted to the smallest representable internal value. - + Parameters @@ -1299,14 +1277,14 @@ the tolerance, in device units (typically pixels) -Since 1.0 +Since: 1.0 cairo_get_tolerance () cairo_get_tolerance double cairo_get_tolerance (cairo_t *cr); Gets the current tolerance value, as set by cairo_set_tolerance(). - + Parameters @@ -1318,11 +1296,10 @@ a cairo context - + Returns the current tolerance value. - -Since 1.0 +Since: 1.0 cairo_clip () cairo_clip @@ -1342,7 +1319,7 @@ 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(). - + Parameters @@ -1354,7 +1331,7 @@ a cairo context -Since 1.0 +Since: 1.0 cairo_clip_preserve () cairo_clip_preserve @@ -1374,7 +1351,7 @@ 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(). - + Parameters @@ -1386,7 +1363,7 @@ a cairo context -Since 1.0 +Since: 1.0 cairo_clip_extents () cairo_clip_extents @@ -1398,7 +1375,7 @@ double *y2); Computes a bounding box in user coordinates covering the area inside the current clip. - + Parameters @@ -1422,7 +1399,7 @@ bottom of the resulting extents -Since 1.4 +Since: 1.4 cairo_in_clip () cairo_in_clip @@ -1434,7 +1411,7 @@ 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(). - + Parameters @@ -1452,12 +1429,11 @@ Y coordinate of the point to test - + Returns A non-zero value if the point is inside, or zero if outside. - -Since 1.10 +Since: 1.10 cairo_reset_clip () cairo_reset_clip @@ -1473,7 +1449,7 @@ 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 @@ -1485,7 +1461,7 @@ a cairo context -Since 1.0 +Since: 1.0 cairo_rectangle_list_destroy () cairo_rectangle_list_destroy @@ -1496,7 +1472,7 @@ references. After this call, the rectangle_list pointer must not be dereferenced. - + Parameters @@ -1508,7 +1484,7 @@ a rectangle list, as obtained from cairo_copy_clip_rectangle_list() -Since 1.4 +Since: 1.4 cairo_copy_clip_rectangle_list () cairo_copy_clip_rectangle_list @@ -1520,7 +1496,7 @@ 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 @@ -1532,12 +1508,11 @@ 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 +Since: 1.4 cairo_fill () cairo_fill @@ -1548,7 +1523,7 @@ filled). After cairo_fill(), the current path will be cleared from the cairo context. See cairo_set_fill_rule() and cairo_fill_preserve(). - + Parameters @@ -1560,7 +1535,7 @@ a cairo context -Since 1.0 +Since: 1.0 cairo_fill_preserve () cairo_fill_preserve @@ -1571,7 +1546,7 @@ filled). Unlike cairo_fill(), cairo_fill_preserve() preserves the path within the cairo context. See cairo_set_fill_rule() and cairo_fill(). - + Parameters @@ -1583,7 +1558,7 @@ a cairo context -Since 1.0 +Since: 1.0 cairo_fill_extents () cairo_fill_extents @@ -1606,7 +1581,7 @@ 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 @@ -1630,7 +1605,7 @@ bottom of the resulting extents -Since 1.0 +Since: 1.0 cairo_in_fill () cairo_in_fill @@ -1643,7 +1618,7 @@ filling parameters. Surface dimensions and clipping are not taken into account. See cairo_fill(), cairo_set_fill_rule() and cairo_fill_preserve(). - + Parameters @@ -1661,12 +1636,11 @@ Y coordinate of the point to test - + Returns A non-zero value if the point is inside, or zero if outside. - -Since 1.0 +Since: 1.0 cairo_mask () cairo_mask @@ -1679,7 +1653,7 @@ areas of pattern are painted with the source, transparent areas are not painted.) - + Parameters @@ -1694,7 +1668,7 @@ a cairo_pattern_t -Since 1.0 +Since: 1.0 cairo_mask_surface () cairo_mask_surface @@ -1709,7 +1683,7 @@ areas of surface are painted with the source, transparent areas are not painted.) - + Parameters @@ -1732,7 +1706,7 @@ -Since 1.0 +Since: 1.0 cairo_paint () cairo_paint @@ -1740,7 +1714,7 @@ cairo_paint (cairo_t *cr); A drawing operator that paints the current source everywhere within the current clip region. - + Parameters @@ -1752,7 +1726,7 @@ a cairo context -Since 1.0 +Since: 1.0 cairo_paint_with_alpha () cairo_paint_with_alpha @@ -1764,7 +1738,7 @@ alpha . The effect is similar to cairo_paint(), but the drawing is faded out using the alpha value. - + Parameters @@ -1779,7 +1753,7 @@ alpha value, between 0 (transparent) and 1 (opaque) -Since 1.0 +Since: 1.0 cairo_stroke () cairo_stroke @@ -1814,7 +1788,7 @@ 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 @@ -1826,7 +1800,7 @@ a cairo context -Since 1.0 +Since: 1.0 cairo_stroke_preserve () cairo_stroke_preserve @@ -1839,7 +1813,7 @@ See cairo_set_line_width(), cairo_set_line_join(), cairo_set_line_cap(), cairo_set_dash(), and cairo_stroke_preserve(). - + Parameters @@ -1851,7 +1825,7 @@ a cairo context -Since 1.0 +Since: 1.0 cairo_stroke_extents () cairo_stroke_extents @@ -1877,7 +1851,7 @@ See cairo_stroke(), cairo_set_line_width(), cairo_set_line_join(), cairo_set_line_cap(), cairo_set_dash(), and cairo_stroke_preserve(). - + Parameters @@ -1901,7 +1875,7 @@ bottom of the resulting extents -Since 1.0 +Since: 1.0 cairo_in_stroke () cairo_in_stroke @@ -1916,7 +1890,7 @@ See cairo_stroke(), cairo_set_line_width(), cairo_set_line_join(), cairo_set_line_cap(), cairo_set_dash(), and cairo_stroke_preserve(). - + Parameters @@ -1934,12 +1908,11 @@ Y coordinate of the point to test - + Returns A non-zero value if the point is inside, or zero if outside. - -Since 1.0 +Since: 1.0 cairo_copy_page () cairo_copy_page @@ -1952,7 +1925,7 @@ This is a convenience function that simply calls cairo_surface_copy_page() on cr 's target. - + Parameters @@ -1964,7 +1937,7 @@ a cairo context -Since 1.0 +Since: 1.0 cairo_show_page () cairo_show_page @@ -1975,7 +1948,7 @@ This is a convenience function that simply calls cairo_surface_show_page() on cr 's target. - + Parameters @@ -1987,7 +1960,7 @@ a cairo context -Since 1.0 +Since: 1.0 cairo_get_reference_count () cairo_get_reference_count @@ -1995,7 +1968,7 @@ cairo_get_reference_count (cairo_t *cr); Returns the current reference count of cr . - + Parameters @@ -2007,13 +1980,12 @@ a cairo_t - + Returns the current reference count of cr . If the object is a nil object, 0 will be returned. - -Since 1.4 +Since: 1.4 cairo_set_user_data () cairo_set_user_data @@ -2027,7 +1999,7 @@ call this function with the key that was used to set it and NULL for data . - + Parameters @@ -2050,12 +2022,11 @@ 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 +Since: 1.4 cairo_get_user_data () cairo_get_user_data @@ -2066,7 +2037,7 @@ using the specified key. If no user data has been attached with the given key this function returns NULL. - + Parameters @@ -2082,11 +2053,10 @@ attached to - + Returns the user data previously attached or NULL. - -Since 1.4 +Since: 1.4 @@ -2103,7 +2073,7 @@ object. Memory management of cairo_t is done with cairo_reference() and cairo_destroy(). -Since 1.0 +Since: 1.0 enum cairo_antialias_t cairo_antialias_t @@ -2131,7 +2101,7 @@ is left entirely up to the backend, typically this will be similar to CAIRO_ANTIALIAS_GOOD . - + Members @@ -2182,7 +2152,7 @@ -Since 1.0 +Since: 1.0 enum cairo_fill_rule_t cairo_fill_rule_t @@ -2196,7 +2166,7 @@ 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 @@ -2222,13 +2192,13 @@ -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 @@ -2252,13 +2222,13 @@ -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 @@ -2285,7 +2255,7 @@ -Since 1.0 +Since: 1.0 enum cairo_operator_t cairo_operator_t @@ -2303,7 +2273,7 @@ For a more detailed explanation of the effects of each operator, including the mathematical definitions, see http://cairographics.org/operators/. - + Members @@ -2487,7 +2457,7 @@ -Since 1.0 +Since: 1.0 cairo_rectangle_t cairo_rectangle_t @@ -2496,7 +2466,7 @@ } cairo_rectangle_t; A data structure for holding a rectangle. - + Members @@ -2504,29 +2474,25 @@ -double x; -X coordinate of the left side of the 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 y; Y coordinate of the the top side of the rectangle -double width; -width of the rectangle +double width; width of the rectangle -double height; -height of the rectangle +double height; height of the rectangle -Since 1.4 +Since: 1.4 cairo_rectangle_list_t cairo_rectangle_list_t @@ -2538,7 +2504,7 @@ A data structure for holding a dynamically allocated array of rectangles. - + Members @@ -2546,24 +2512,21 @@ -cairo_status_t status; -Error status of the rectangle list +cairo_status_t status; Error status of the rectangle list -cairo_rectangle_t *rectangles; -Array containing the rectangles +cairo_rectangle_t *rectangles; Array containing the rectangles -int num_rectangles; -Number of rectangles in this list +int num_rectangles; Number of rectangles in this list -Since 1.4 +Since: 1.4 diff -Nru cairo-1.14.6/Makefile.in cairo-1.15.10/Makefile.in --- cairo-1.14.6/Makefile.in 2015-12-09 20:41:43.000000000 +0000 +++ cairo-1.15.10/Makefile.in 2017-12-11 21:03:10.000000000 +0000 @@ -1,7 +1,7 @@ -# Makefile.in generated by automake 1.14.1 from Makefile.am. +# Makefile.in generated by automake 1.15 from Makefile.am. # @configure_input@ -# Copyright (C) 1994-2013 Free Software Foundation, Inc. +# Copyright (C) 1994-2014 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -30,7 +30,17 @@ # To make a quick properly named (date and git hash stamped) tarball: # make snapshot VPATH = @srcdir@ -am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' +am__is_gnu_make = { \ + if test -z '$(MAKELEVEL)'; then \ + false; \ + elif test -n '$(MAKE_HOST)'; then \ + true; \ + elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ + true; \ + else \ + false; \ + fi; \ +} am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ @@ -93,22 +103,6 @@ POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ -DIST_COMMON = $(top_srcdir)/build/Makefile.am.common \ - $(srcdir)/build/Makefile.am.changelog \ - $(srcdir)/build/Makefile.am.releasing \ - $(srcdir)/build/Makefile.am.analysis $(srcdir)/Makefile.in \ - $(srcdir)/Makefile.am $(top_srcdir)/configure \ - $(am__configure_deps) $(srcdir)/config.h.in \ - $(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/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 EXTRA_PROGRAMS = TESTS = check_PROGRAMS = @@ -139,6 +133,8 @@ $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) +DIST_COMMON = $(srcdir)/Makefile.am $(top_srcdir)/configure \ + $(am__configure_deps) $(am__DIST_COMMON) am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \ configure.lineno config.status.lineno mkinstalldirs = $(install_sh) -d @@ -153,14 +149,15 @@ cairo-os2-uninstalled.pc cairo-beos-uninstalled.pc \ cairo-drm-uninstalled.pc cairo-gallium-uninstalled.pc \ cairo-png-uninstalled.pc cairo-gl-uninstalled.pc \ - cairo-glesv2-uninstalled.pc cairo-cogl-uninstalled.pc \ - cairo-directfb-uninstalled.pc cairo-vg-uninstalled.pc \ - cairo-egl-uninstalled.pc cairo-glx-uninstalled.pc \ - cairo-wgl-uninstalled.pc cairo-script-uninstalled.pc \ - cairo-ft-uninstalled.pc cairo-fc-uninstalled.pc \ - cairo-ps-uninstalled.pc cairo-pdf-uninstalled.pc \ - cairo-svg-uninstalled.pc cairo-tee-uninstalled.pc \ - cairo-xml-uninstalled.pc cairo-gobject-uninstalled.pc + cairo-glesv2-uninstalled.pc cairo-glesv3-uninstalled.pc \ + cairo-cogl-uninstalled.pc cairo-directfb-uninstalled.pc \ + cairo-vg-uninstalled.pc cairo-egl-uninstalled.pc \ + cairo-glx-uninstalled.pc cairo-wgl-uninstalled.pc \ + cairo-script-uninstalled.pc cairo-ft-uninstalled.pc \ + cairo-fc-uninstalled.pc cairo-ps-uninstalled.pc \ + cairo-pdf-uninstalled.pc cairo-svg-uninstalled.pc \ + cairo-tee-uninstalled.pc cairo-xml-uninstalled.pc \ + cairo-gobject-uninstalled.pc CONFIG_CLEAN_VPATH_FILES = AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) @@ -419,6 +416,21 @@ *) \ b='$*';; \ esac +am__DIST_COMMON = $(srcdir)/Makefile.in \ + $(srcdir)/build/Makefile.am.analysis \ + $(srcdir)/build/Makefile.am.changelog \ + $(srcdir)/build/Makefile.am.releasing $(srcdir)/config.h.in \ + $(top_srcdir)/build/Makefile.am.common \ + $(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 \ + $(top_srcdir)/build/test-driver \ + $(top_srcdir)/src/cairo-features-uninstalled.pc.in \ + $(top_srcdir)/src/cairo-uninstalled.pc.in AUTHORS COPYING \ + ChangeLog INSTALL NEWS README build/ar-lib build/compile \ + build/config.guess build/config.sub build/depcomp \ + build/install-sh build/ltmain.sh build/missing DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) distdir = $(PACKAGE)-$(VERSION) top_distdir = $(distdir) @@ -544,6 +556,7 @@ LTLIBOBJS = @LTLIBOBJS@ LTP = @LTP@ LTP_GENHTML = @LTP_GENHTML@ +LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MKDIR_P = @MKDIR_P@ @@ -620,6 +633,8 @@ gl_LIBS = @gl_LIBS@ glesv2_CFLAGS = @glesv2_CFLAGS@ glesv2_LIBS = @glesv2_LIBS@ +glesv3_CFLAGS = @glesv3_CFLAGS@ +glesv3_LIBS = @glesv3_LIBS@ glib_CFLAGS = @glib_CFLAGS@ glib_LIBS = @glib_LIBS@ gtk_CFLAGS = @gtk_CFLAGS@ @@ -657,6 +672,7 @@ qt_LIBS = @qt_LIBS@ real_pthread_CFLAGS = @real_pthread_CFLAGS@ real_pthread_LIBS = @real_pthread_LIBS@ +runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ shm_LIBS = @shm_LIBS@ @@ -763,7 +779,6 @@ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --foreign Makefile -.PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ @@ -773,7 +788,7 @@ echo ' cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe);; \ esac; -$(top_srcdir)/build/Makefile.am.common $(srcdir)/build/Makefile.am.changelog $(srcdir)/build/Makefile.am.releasing $(srcdir)/build/Makefile.am.analysis: +$(top_srcdir)/build/Makefile.am.common $(srcdir)/build/Makefile.am.changelog $(srcdir)/build/Makefile.am.releasing $(srcdir)/build/Makefile.am.analysis $(am__empty): $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) $(SHELL) ./config.status --recheck @@ -838,6 +853,8 @@ cd $(top_builddir) && $(SHELL) ./config.status $@ cairo-glesv2-uninstalled.pc: $(top_builddir)/config.status $(top_srcdir)/src/cairo-features-uninstalled.pc.in cd $(top_builddir) && $(SHELL) ./config.status $@ +cairo-glesv3-uninstalled.pc: $(top_builddir)/config.status $(top_srcdir)/src/cairo-features-uninstalled.pc.in + cd $(top_builddir) && $(SHELL) ./config.status $@ cairo-cogl-uninstalled.pc: $(top_builddir)/config.status $(top_srcdir)/src/cairo-features-uninstalled.pc.in cd $(top_builddir) && $(SHELL) ./config.status $@ cairo-directfb-uninstalled.pc: $(top_builddir)/config.status $(top_srcdir)/src/cairo-features-uninstalled.pc.in @@ -1023,7 +1040,7 @@ if test -n "$$am__remaking_logs"; then \ echo "fatal: making $(TEST_SUITE_LOG): possible infinite" \ "recursion detected" >&2; \ - else \ + elif test -n "$$redo_logs"; then \ am__remaking_logs=yes $(MAKE) $(AM_MAKEFLAGS) $$redo_logs; \ fi; \ if $(am__make_dryrun); then :; else \ @@ -1232,15 +1249,15 @@ $(am__post_remove_distdir) dist-tarZ: distdir - @echo WARNING: "Support for shar distribution archives is" \ - "deprecated." >&2 + @echo WARNING: "Support for distribution archives compressed with" \ + "legacy program 'compress' is deprecated." >&2 @echo WARNING: "It will be removed altogether in Automake 2.0" >&2 tardir=$(distdir) && $(am__tar) | compress -c >$(distdir).tar.Z $(am__post_remove_distdir) dist-shar: distdir - @echo WARNING: "Support for distribution archives compressed with" \ - "legacy program 'compress' is deprecated." >&2 + @echo WARNING: "Support for shar distribution archives is" \ + "deprecated." >&2 @echo WARNING: "It will be removed altogether in Automake 2.0" >&2 shar $(distdir) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).shar.gz $(am__post_remove_distdir) @@ -1276,17 +1293,17 @@ esac chmod -R a-w $(distdir) chmod u+w $(distdir) - mkdir $(distdir)/_build $(distdir)/_inst + mkdir $(distdir)/_build $(distdir)/_build/sub $(distdir)/_inst chmod a-w $(distdir) test -d $(distdir)/_build || exit 0; \ dc_install_base=`$(am__cd) $(distdir)/_inst && pwd | sed -e 's,^[^:\\/]:[\\/],/,'` \ && dc_destdir="$${TMPDIR-/tmp}/am-dc-$$$$/" \ && am__cwd=`pwd` \ - && $(am__cd) $(distdir)/_build \ - && ../configure \ + && $(am__cd) $(distdir)/_build/sub \ + && ../../configure \ $(AM_DISTCHECK_CONFIGURE_FLAGS) \ $(DISTCHECK_CONFIGURE_FLAGS) \ - --srcdir=.. --prefix="$$dc_install_base" \ + --srcdir=../.. --prefix="$$dc_install_base" \ && $(MAKE) $(AM_MAKEFLAGS) \ && $(MAKE) $(AM_MAKEFLAGS) dvi \ && $(MAKE) $(AM_MAKEFLAGS) check \ @@ -1478,6 +1495,8 @@ mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ recheck tags tags-am uninstall uninstall-am +.PRECIOUS: Makefile + configure: cairo-version.h diff -Nru cairo-1.14.6/NEWS cairo-1.15.10/NEWS --- cairo-1.14.6/NEWS 2015-12-09 20:40:15.000000000 +0000 +++ cairo-1.15.10/NEWS 2017-12-08 18:24:52.000000000 +0000 @@ -1,3 +1,369 @@ +Release 1.15.10 (2017-12-07 Bryce Harrington ) +======================================================================== +This release adds GLESv3 support to the cairo_gl backend, adds +tracking of SVG units in generated svg documents, and cleans up numerous +test failures and related issues in the PDF and Postscript backends. + +For a complete log of changes, please see + + http://cairographics.org/releases/ChangeLog.1.15.10 + +Features and Enhancements +------------------------- +* Add support for OpenGL ES 3.0 to the gl backend. +* Use Reusable streams for forms in Level 3 Postscript. +* Add CAIRO_MIME_TYPE_EPS mime type for embedding EPS files. +* Add CCITT_FAX mime type for PDF and PS surfaces +* svg: add a new function to specify the SVG document unit + (Bug #90166) +* Use UTF-8 filenames on Windows + +API Changes +----------- +* cairo_svg_surface_set_document_unit() and + cairo_svg_surface_get_document_unit() + +Dependency Changes +------------------ +None + +Performance Optimizations +------------------------- +None + +Bug Fixes +--------- +* Fix regression in gles version detection +* Fix undefined-behavior with integer math. +* Handle SOURCE and CLEAR operators when painting color glyphs. + (Bug #102661) +* Convert images to rgba or a8 formats when uploading with GLESv2 +* Use _WIN32 instead of windows.h to check for windows build. +* Fix sigabrt printing documents with fonts lacking the mandatory .nodef + glyph. + (Bug #102922) +* Prevent curved strokes in small ctms from being culled from vector + surfaces + (Bug #103071) +* Fix painting an unbounded recording surface with the SVG backend. +* Fix falling back to system font with PDFs using certain embedded + fonts, due to truncated font names. + (Bug #103249) +* Fix handling of truetype fonts with excessively long font names + (Bug #103249) +* Fix race conditions with cairo_mask_compositor_t + (Bug #103037) +* Fix build error with util/font-view +* Fix assertion hit with PDFs using Type 4 fonts rendered with user + fonts, due to error when destroying glyph page. + (Bug #103335) +* Set default creation date for PDFs +* Prevent invalid ptr access for > 4GB images. + (Bug #98165) +* Prevent self-copy infinite loop in Postscript surface. +* Fix padded image crash in Postscript surface. +* Fix annotation bugs in PDFs and related memory leaks +* Fix test failures and other assorted issues in ps and pdf code. +* Fix code generation when using GCC legacy atomic operations + (Bug #103559) +* Fix various compilation warnings and errors. +* Fix various distcheck errors with private symbols, doxygen formatting, + etc. + +Release 1.15.8 (2017-08-29 Bryce Harrington ) +======================================================================== +This small snapshot provides new colored emoji glyph support, and a +handful of minor fixes. + +For a complete log of changes, please see + + http://cairographics.org/releases/ChangeLog.1.15.8 + +Features and Enhancements +------------------------- +* Support colored emoji glyphs, stored as PNG images in OpenType fonts. + + +API Changes +----------- +None + +Dependency Changes +------------------ +None + +Performance Optimizations +------------------------- +None + +Bug Fixes +--------- + +* pdf: Fix internal links pointing to other pages, by pre-calculating + page heights so that link positions can be calculated more accurately. + +* image: Fix crash on negative lengths + +* win32: Fix initialization of mutexes for static builds + +* pdf: Don't emit /PageLabel dict when no labels defined + +* font: Fix color font loading on big-endian systems + +* font: Fix color font support infinite-loop with empty glyphs + +* Fix off by one check in cairo-image-info.c + + + +Release 1.15.6 (2017-06-13 Bryce Harrington ) +======================================================================== +This new snapshot incorporates changes over the past half-year since the +1.15.4 snapshot, including all the fixes from the 1.14 release series. + +The PDF code continues to be enhanced, and we're restored MacOSX 10.4 +support. Font-related fixes and improved error handling for X round out +the release. + +For a complete log of changes, please see + + http://cairographics.org/releases/ChangeLog.1.15.6 + + +Features and Enhancements +------------------------- +* Detect if variable fonts have synthesized bold/italic or non-default + variants, and use a fallback font where needed. + +* Restore MacOSX 10.4 support. Cairo had dropped 10.4 support when + moving to the CoreText API. Now we automatically detect which API to + use via dynamic linking, so can resume supporting this older version + of MacOSX. + + +API Changes +----------- +None + +Dependency Changes +------------------ +None + +Performance Optimizations +------------------------- +None + +Bug Fixes +--------- +* Fix error reporting in the xcb backend if fallback fails. Instead of + returning NULL when the X11 server can't do some operation, return a + surface in an error state. + +* Call XSync in the xlib backend before setting the error handler to + ignore errors for certain requests, to make sure all pending errors + are handled first. + +* Fix text-glyph-range for quartz-font. Use 0xFFFF instead of 0 for + invalid index tracking. + +* Fix handling of Supplementary Multilingual Plane (SMP) Unicode + characters in quartz-font. + +* Fix various issues in the drm backend including updating API usage and + general code cleanup. + +* Clarify documentation regarding device scale inheritance and the units + used in cairo_surface_create_similar_image. + Bug #99094. + + +Release 1.15.4 (2016-12-9 Bryce Harrington ) +======================================================================= +This new snapshot incorporates changes over the past year since the +1.15.2 snapshot, including all the fixes from the 1.14 release series. + +Of particular note in this snapshot is a wealth of work by Adrian +Johnson to enhance PDF support, as well as numerous bug fixes provided +by him and other contributors. + +For a complete log of changes since the last release, please see: + + http://cairographics.org/releases/ChangeLog.1.15.4 + +Features +-------- +* The PDF backend has gained support for a range of widely used + features, including thumbnails, page labels, metadata, document + outlines, structured text, hyperlinks, and tags. Tags permit adding + logical info such as headings, tables, figures, etc. that facilitates + indexing, accessibility, text reflow, searching, and extraction of the + tagged items to other software. For details on this new PDF + functionality, see: + + https://lists.cairographics.org/archives/cairo/2016-June/027427.html + + +API Changes +----------- + + cairo_win32_surface_create_with_format + + Added a cairo API to set up Win32 surfaces for HDC with alpha channels. + + cairo_pdf_surface_add_outline + cairo_pdf_surface_set_metadata + cairo_pdf_surface_set_page_label + cairo_pdf_surface_set_thumbnail_size + cairo_tag_begin + cairo_tag_end + CAIRO_STATUS_TAG_ERROR + + New API for added PDF functionality (see above), and new error + status item for problems relating to PDF tagging. + + CAIRO_STATUS_WIN32_GDI_ERROR + CAIRO_STATUS_FREETYPE_ERROR + CAIRO_STATUS_PNG_ERROR + + New error status items for handling of GDI, libfreetype, and libpng + errors, respectively. + +Dependency Changes +------------------ +None + +Performance Optimizations +------------------------- +None + +Bug Fixes +--------- +* Bug fixes from 1.15.2 (see the 1.15.2 NEWS for details) + +* Fix playback of recording surfaces into PDF surfaces, where objects + with negative coordinates were not getting drawn. To address this, + the coordinate systems for PDF and PS have been changed to match + cairo's coordinate system. This allows recording surfaces to be + emitted in cairo coordinates, and results in the same origin being + used for all operations when using the recording surface XObject. + Test cases for PDF and PS have also been updated accordingly. + (Bug #89232) + +* Fix "invalidfont" error on some printers when printing PDFs with + embedded fonts that have glyphs (such as spaces) with + num_contours == 0. (Bug #79897) + +* Fix missing glyphs such as thin dashes, which get scaled to 0 in + userspace and thus have their drawing operations culled. (Bug #94615) + +* Fix other oddities caused by variously idiosyncratic fonts. + +* Fix deadlock when destruction of a scaled font indirectly triggers + destruction of a second scaled font, causing the global cache to be + locked twice. (Bug #93891) + +* Fix X errors reported to applications when shmdt() is called before + the Attach request is processed, due to missing xcb and xlib calls. + +* Fix random failure in record-paint-alpha-clip-mast test case, caused + by an incorrect assumption that a deferred clear can be skipped. + (Bug #84330) + +* Fix crash when dealing with an XShmGetImage() failure, caused by a + double free in _get_image_surface(). (Bug #91967) + +* Fix invalid execution of ASCII85 data by the PS interpreter that the + image operator didn't use, by flushing the extraneous data after + drawing the image. (Bug #84811) + +* Fix decoding of Adobe Photoshop's inverted CMYK JPEG files in PDF + export. + +* Fix unbounded surface assertion in win32-print code. + +* Fix a data race in freed_pool discovered by Firefox's cairo usage. + The patch adads atomic int load and store functions, with relaxed + memory ordering. (Bug #90318) + +* Cleanup debugging text sent to stdout instead of log. (Bug #95227) + +* Fix build issue when using non-GNU strings utility. (Bug #88639) + +* Fix build of cairo modules as regular modules, not as versioned shared + libaries. (Bug #29319) + +* Fix build on win32 using gcc 5.4. + +* Fix build of script backend to require zlib. + +* Update test suite reference images using Debian Jessie 64-bit and + poppler current as of June, 2016. + +* Various improvements to documentation and tests, compiler warning + fixes, and an assortment of code refactoring and cleanup. + + +Release 1.15.2 (2015-12-10 Bryce Harrington ) +======================================================================== +This release is largely a rollup to include a variety of fixes that +didn't make the cut for the stable 1.14.2 and 1.14.4 releases, as well +as all the fixes from those releases. Notably this includes a highly +requested new API for Win32 surfaces. + +For a complete log of changes since the last release, please see: + + http://cairographics.org/releases/ChangeLog.1.15.2 + +Features +-------- +None + +API Changes +----------- + + cairo_win32_surface_create_with_format + + Added a cairo API to set up Win32 surfaces for HDC with alpha channels. + +Dependency Changes +------------------ +None + +Performance Optimizations +------------------------- +None + +Bug Fixes +--------- +* All the bug fixes from 1.14.2, 1.14.4, and 1.14.6 + +* Fix xcb/xlib compilation and calls. Make image boxes behave when SHM + is not available. + +* Fix various issues with printing and transparent images on Win32. + +* Fix thin lines that don't show up when printing in Inkscape due to + overly aggressive culling. + (Bug #77298) + +* Fix broken printing via pdf when glyph 0 is used for rendering, + resulting in missing spaces and letters. + (Bug #89082) + +* Fix crash for certain glyphs in opentype fonts. + (Bug #91902) + +* Fix incorrect rendering of SVG paths with more than one subpath. If + more than one trap is passed in then it's guaranteed that the returned + traps will have their left edge to the left of their right edge, but + if only one trap is passed in then the function always returns without + doing anything. + (Bug #90984) + +* Improve rendering with Quartz to better match pixman's blending and + filtering behavior. + + Release 1.14.6 (2015-12-09 Bryce Harrington ) ======================================================================== Simple bugfix release to fix one Windows issue. @@ -39,10 +405,9 @@ updates to documentation, etc. For a complete log of changes since 1.14.2, please see: - + http://cairographics.org/releases/ChangeLog.cairo-1.14.4 - Features -------- None @@ -117,7 +482,7 @@ with XCB. -Release 1.14.2 (2014-03-09 Bryce Harrington ) +Release 1.14.2 (2015-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 @@ -192,6 +557,7 @@ (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 @@ -693,7 +1059,7 @@ and then back again to user coordinates (cairo_copy_path, cairo_append_path) https://bugs.freedesktop.org/show_bug.cgi?id=54732 - + Fix extents computations for a degenerate path consisting only of a move-to https://bugs.freedesktop.org/show_bug.cgi?id=54549 @@ -701,7 +1067,7 @@ Prevent crashing on a degenerate project edge after polygon intersection https://bugs.freedesktop.org/show_bug.cgi?id=54822 - + Release 1.12.2 (2012-04-29 Chris Wilson ) @@ -721,7 +1087,7 @@ Allow applications to create 0x0 xlib surfaces, such as used by LibreOffice. https://bugs.freedesktop.org/show_bug.cgi?id=49118 - + Trim composite extents for SOURCE/CLEAR operators to the mask. Use fallback fonts in PDF for unhandled computed glyph widths @@ -1035,7 +1401,7 @@ applications to understand issues and as a means for profiling real-world usage of cairo. -The traces generated by cairo-trace have been collected in +The traces generated by cairo-trace have been collected in git://git.cairographics.org/git/cairo-traces @@ -1251,7 +1617,7 @@ The Cairo region API was actually added a couple of snapshots ago, but we forgot to mention it at the time. A simple API for the handling of rectangular pixel-aligned regions by Soeren Sandmann. - + Backend-specific improvements ----------------------------- @@ -1456,10 +1822,10 @@ QT OpenVG - The initial work was done by Øyvind Kolås, and made ready for - inclusion by Pierre Tardy. + inclusion by Pierre Tardy. OpenGL - An advanced OpenGL compositor. The aim is to write a integrate - directed rendering using OpenGL at a high-level into Cairo. In + directed rendering using OpenGL at a high-level into Cairo. In contrast to the previous attempt using Glitz which tried to implement the RENDER protocol on top of OpenGL, using the high-level interface should permit greater flexibility and @@ -2898,7 +3264,7 @@ following usage: --enable-atsui -> --enable-quartz-font - CAIRO_HAS_ATSUI_FONT -> CAIRO_HAS_QUARTZ_FONT + CAIRO_HAS_ATSUI_FONT -> CAIRO_HAS_QUARTZ_FONT CAIRO_FONT_TYPE_ATSUI -> CAIRO_FONT_TYPE_QUARTZ cairo_atsui_font_face_create_for_atsu_font_id -> @@ -3711,8 +4077,8 @@ it.) This fixes the bug causing OpenOffice.org to crash as described here: - XError on right click menus in OOo. - https://bugzilla.redhat.com/bugzilla/show_bug.cgi?id=243811 + XError on right click menus in OOo. + https://bugzilla.redhat.com/bugzilla/show_bug.cgi?id=243811 Use IncludeInferiors when using xlib surface as a source (Ryan Lortie) ---------------------------------------------------------------------- @@ -3892,16 +4258,16 @@ To build, do: - make malloc-stats.so + make malloc-stats.so inside util/, and to use, run: - LD_PRELOAD=malloc-stats.so some-program + LD_PRELOAD=malloc-stats.so some-program For binaries managed by libtool, eg, cairo-perf, do: - ../libtool --mode=execute /bin/true ./cairo-perf - LD_PRELOAD="../util/malloc-stats.so" .libs/lt-cairo-perf + ../libtool --mode=execute /bin/true ./cairo-perf + LD_PRELOAD="../util/malloc-stats.so" .libs/lt-cairo-perf Finally, the cairo-perf-diff-files utility was enhanced to allow for generating performance reports from several runs of the same backend @@ -5744,9 +6110,9 @@ specific to the PostScript backend: cairo_ps_surface_set_size - cairo_ps_surface_dsc_comment - cairo_ps_surface_dsc_begin_setup - cairo_ps_surface_dsc_begin_page_setup + cairo_ps_surface_dsc_comment + cairo_ps_surface_dsc_begin_setup + cairo_ps_surface_dsc_begin_page_setup These functions allow variation of the page size/orientation from one page to the next in the PostScript output. They also allow the toolkit @@ -7032,23 +7398,23 @@ cc `pkg-config --cflags --libs cairo` -o foo foo.c IMPORTANT: Users with old versions of cairo installed will need to - manually remove cairo.h and cairo-features.h from the - system include directories in order to prevent the old - headers from being used in preference to the new ones. + manually remove cairo.h and cairo-features.h from the + system include directories in order to prevent the old + headers from being used in preference to the new ones. 2) The backend-specific portions of the old monolithic cairo.h have been split out into individual public header files. The new files are: cairo-atsui.h - cairo-ft.h - cairo-glitz.h - cairo-pdf.h - cairo-png.h - cairo-ps.h + cairo-ft.h + cairo-glitz.h + cairo-pdf.h + cairo-png.h + cairo-ps.h cairo-quartz.h - cairo-xcb.h - cairo-xlib.h + cairo-xcb.h + cairo-xlib.h Applications will need to be modified to explicitly include the new header files where appropriate. @@ -7412,10 +7778,10 @@ This snapshot provides much better text support by implementing the following four functions: - cairo_text_extents - cairo_glyph_extents - cairo_text_path - cairo_glyph_path + cairo_text_extents + cairo_glyph_extents + cairo_text_path + cairo_glyph_path The text/glyph_extents functions can be used to determine the bounding box (and advance) for text as if drawn by show_text/glyphs. diff -Nru cairo-1.14.6/perf/Makefile.in cairo-1.15.10/perf/Makefile.in --- cairo-1.14.6/perf/Makefile.in 2015-12-09 20:41:44.000000000 +0000 +++ cairo-1.15.10/perf/Makefile.in 2017-12-11 21:03:10.000000000 +0000 @@ -1,7 +1,7 @@ -# Makefile.in generated by automake 1.14.1 from Makefile.am. +# Makefile.in generated by automake 1.15 from Makefile.am. # @configure_input@ -# Copyright (C) 1994-2013 Free Software Foundation, Inc. +# Copyright (C) 1994-2014 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -15,7 +15,17 @@ @SET_MAKE@ VPATH = @srcdir@ -am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' +am__is_gnu_make = { \ + if test -z '$(MAKELEVEL)'; then \ + false; \ + elif test -n '$(MAKE_HOST)'; then \ + true; \ + elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ + true; \ + else \ + false; \ + fi; \ +} am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ @@ -78,10 +88,6 @@ POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ -DIST_COMMON = $(top_srcdir)/build/Makefile.am.common \ - $(top_srcdir)/perf/Makefile.sources $(srcdir)/Makefile.in \ - $(srcdir)/Makefile.am $(top_srcdir)/build/depcomp \ - $(top_srcdir)/build/test-driver COPYING README EXTRA_PROGRAMS = cairo-analyse-trace$(EXEEXT) \ cairo-perf-micro$(EXEEXT) cairo-perf-trace$(EXEEXT) \ cairo-perf-diff-files$(EXEEXT) cairo-perf-print$(EXEEXT) \ @@ -116,6 +122,7 @@ $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) +DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = @@ -470,6 +477,10 @@ b='$*';; \ esac DIST_SUBDIRS = $(SUBDIRS) +am__DIST_COMMON = $(srcdir)/Makefile.in \ + $(top_srcdir)/build/Makefile.am.common \ + $(top_srcdir)/build/depcomp $(top_srcdir)/build/test-driver \ + $(top_srcdir)/perf/Makefile.sources COPYING README DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) am__relativize = \ dir0=`pwd`; \ @@ -579,6 +590,7 @@ LTLIBOBJS = @LTLIBOBJS@ LTP = @LTP@ LTP_GENHTML = @LTP_GENHTML@ +LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MKDIR_P = @MKDIR_P@ @@ -655,6 +667,8 @@ gl_LIBS = @gl_LIBS@ glesv2_CFLAGS = @glesv2_CFLAGS@ glesv2_LIBS = @glesv2_LIBS@ +glesv3_CFLAGS = @glesv3_CFLAGS@ +glesv3_LIBS = @glesv3_LIBS@ glib_CFLAGS = @glib_CFLAGS@ glib_LIBS = @glib_LIBS@ gtk_CFLAGS = @gtk_CFLAGS@ @@ -692,6 +706,7 @@ qt_LIBS = @qt_LIBS@ real_pthread_CFLAGS = @real_pthread_CFLAGS@ real_pthread_LIBS = @real_pthread_LIBS@ +runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ shm_LIBS = @shm_LIBS@ @@ -853,7 +868,6 @@ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign perf/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --foreign perf/Makefile -.PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ @@ -862,7 +876,7 @@ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; -$(top_srcdir)/build/Makefile.am.common $(top_srcdir)/perf/Makefile.sources: +$(top_srcdir)/build/Makefile.am.common $(top_srcdir)/perf/Makefile.sources $(am__empty): $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh @@ -1167,7 +1181,7 @@ if test -n "$$am__remaking_logs"; then \ echo "fatal: making $(TEST_SUITE_LOG): possible infinite" \ "recursion detected" >&2; \ - else \ + elif test -n "$$redo_logs"; then \ am__remaking_logs=yes $(MAKE) $(AM_MAKEFLAGS) $$redo_logs; \ fi; \ if $(am__make_dryrun); then :; else \ @@ -1484,6 +1498,8 @@ pdf pdf-am ps ps-am recheck tags tags-am uninstall \ uninstall-am +.PRECIOUS: Makefile + # Install rules to rebuild the libraries and add explicit dependencies $(top_builddir)/perf/micro/libcairo-perf-micro.la: diff -Nru cairo-1.14.6/perf/micro/Makefile.in cairo-1.15.10/perf/micro/Makefile.in --- cairo-1.14.6/perf/micro/Makefile.in 2015-12-09 20:41:44.000000000 +0000 +++ cairo-1.15.10/perf/micro/Makefile.in 2017-12-11 21:03:10.000000000 +0000 @@ -1,7 +1,7 @@ -# Makefile.in generated by automake 1.14.1 from Makefile.am. +# Makefile.in generated by automake 1.15 from Makefile.am. # @configure_input@ -# Copyright (C) 1994-2013 Free Software Foundation, Inc. +# Copyright (C) 1994-2014 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -15,7 +15,17 @@ @SET_MAKE@ VPATH = @srcdir@ -am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' +am__is_gnu_make = { \ + if test -z '$(MAKELEVEL)'; then \ + false; \ + elif test -n '$(MAKE_HOST)'; then \ + true; \ + elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ + true; \ + else \ + false; \ + fi; \ +} am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ @@ -78,10 +88,6 @@ POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ -DIST_COMMON = $(top_srcdir)/build/Makefile.am.common \ - $(top_srcdir)/perf/micro/Makefile.sources \ - $(srcdir)/Makefile.in $(srcdir)/Makefile.am \ - $(top_srcdir)/build/depcomp $(top_srcdir)/build/test-driver EXTRA_PROGRAMS = TESTS = check_PROGRAMS = @@ -110,6 +116,7 @@ $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) +DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = @@ -396,6 +403,10 @@ *) \ b='$*';; \ esac +am__DIST_COMMON = $(srcdir)/Makefile.in \ + $(top_srcdir)/build/Makefile.am.common \ + $(top_srcdir)/build/depcomp $(top_srcdir)/build/test-driver \ + $(top_srcdir)/perf/micro/Makefile.sources DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ @@ -480,6 +491,7 @@ LTLIBOBJS = @LTLIBOBJS@ LTP = @LTP@ LTP_GENHTML = @LTP_GENHTML@ +LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MKDIR_P = @MKDIR_P@ @@ -556,6 +568,8 @@ gl_LIBS = @gl_LIBS@ glesv2_CFLAGS = @glesv2_CFLAGS@ glesv2_LIBS = @glesv2_LIBS@ +glesv3_CFLAGS = @glesv3_CFLAGS@ +glesv3_LIBS = @glesv3_LIBS@ glib_CFLAGS = @glib_CFLAGS@ glib_LIBS = @glib_LIBS@ gtk_CFLAGS = @gtk_CFLAGS@ @@ -593,6 +607,7 @@ qt_LIBS = @qt_LIBS@ real_pthread_CFLAGS = @real_pthread_CFLAGS@ real_pthread_LIBS = @real_pthread_LIBS@ +runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ shm_LIBS = @shm_LIBS@ @@ -702,7 +717,6 @@ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign perf/micro/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --foreign perf/micro/Makefile -.PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ @@ -711,7 +725,7 @@ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; -$(top_srcdir)/build/Makefile.am.common $(top_srcdir)/perf/micro/Makefile.sources: +$(top_srcdir)/build/Makefile.am.common $(top_srcdir)/perf/micro/Makefile.sources $(am__empty): $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh @@ -904,7 +918,7 @@ if test -n "$$am__remaking_logs"; then \ echo "fatal: making $(TEST_SUITE_LOG): possible infinite" \ "recursion detected" >&2; \ - else \ + elif test -n "$$redo_logs"; then \ am__remaking_logs=yes $(MAKE) $(AM_MAKEFLAGS) $$redo_logs; \ fi; \ if $(am__make_dryrun); then :; else \ @@ -1193,6 +1207,8 @@ pdf pdf-am ps ps-am recheck tags tags-am uninstall \ uninstall-am +.PRECIOUS: Makefile + # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. diff -Nru cairo-1.14.6/README cairo-1.15.10/README --- cairo-1.14.6/README 2015-10-27 21:04:21.000000000 +0000 +++ cairo-1.15.10/README 2017-12-07 02:14:36.000000000 +0000 @@ -121,7 +121,7 @@ quartz backend -------------- - MacOS X >= 10.5 with Xcode >= 3.0 + MacOS X >= 10.4 with Xcode >= 2.5 win32 backend ------------- diff -Nru cairo-1.14.6/RELEASING cairo-1.15.10/RELEASING --- cairo-1.14.6/RELEASING 2015-10-27 21:04:30.000000000 +0000 +++ cairo-1.15.10/RELEASING 2017-12-07 02:14:36.000000000 +0000 @@ -1,10 +1,24 @@ Here are the steps to follow to create a new cairo release: -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. Also make - sure you have libglib2.0-doc installed (else you'll get excessive - gtk-doc cross reference warnings in the next step). +0) Decide type of release and checkout the appropriate branch. + + The Cairo project makes three types of releases: Development + snapshot releases, stable minor releases, and stable micro (aka + "point") releases. Micro releases should be only bugfixes and + no API additions. If there are API additions consider making a + Minor release. Snapshot releases can be done of the current + development tree between Minor releases, as desired. + + For stable releases (both minor and micro), the work should be + done on the given release branch. E.g. for 1.14.12, check out + the 1.14 branch via "git checkout origin/1.14 -b 1.14". + +1) Ensure that there are no local, uncommitted/unpushed mods. + + You're probably in a good state if both "git diff + 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" @@ -37,19 +51,44 @@ suite passing, here's the magic env vars to set when doing 'make distcheck' and 'make release-publish' that will let you get away with it. At any cost, never ever release without - (implied) distchecking. Every time we got around it, it turned + (implied) distchecking. Every time we got around it, it turned out to be a disaster. Anyway, here's the pass code: DISPLAY= CAIRO_TEST_TARGET=" " -3) Fill out an entry in the NEWS file +3) Decide what the new version number for the release will be. + + Cairo uses even numbers for official releases, and odd numbers + for development snapshots. Thus, for a Minor release it would + be: + + LAST_RELEASE="X.Y.Z" # e.g. 1.12.0 + THIS_RELEASE="X.Y+2.0" # e.g. 1.14.0 + + While for a Micro release the version numbers should be: + + LAST_RELEASE="X.Y.Z" # e.g. 1.14.0 + THIS_RELEASE="X.Y.Z+2" # e.g. 1.14.2 + + Snapshots are similar but have odd minor versions. Also, the + first snapshot release in a new series will be .2 rather than + .0, e.g.: + + LAST_RELEASE="X.Y.Z" # e.g. 1.14.0 + THIS_RELEASE="X.Y+1.0" # e.g. 1.15.2 + + and subsequent snapshots in that series are just normal micro + releases: + + LAST_RELEASE="X.Y.Z" # e.g. 1.15.2 + THIS_RELEASE="X.Y.Z+2" # e.g. 1.15.4 + +4) Fill out an entry in the NEWS file Sift through the logs since the last release. This is most easily done with a command such as: - git log --stat X.Y.Z.. - - where X.Y.Z is the previous release version. + git log --stat ${LAST_RELEASE}.. Summarize major changes briefly in a style similar to other entries in NEWS. Take special care to note any additions in @@ -58,8 +97,14 @@ the following command will show each patch that has changed a public header file since the given version: - find src/ -name '*.h' ! -name '*-private.h' ! -name 'cairoint.h' ! -name 'cairo-*features*.h' | \ - xargs git diff X.Y.Z.. -- + find src/ -name '*.h' ! -name '*-private.h' \ + ! -name 'cairoint.h' ! -name 'cairo-*features*.h' | \ + xargs git diff ${LAST_RELEASE}.. -- + + Include a link to the incremental ChangeLog for this release, + which we'll be uploading in a later step: + + http://cairographics.org/releases/ChangeLog.cairo-${THIS_RELEASE} 4) Increment cairo_version_{minor|micro} in cairo-version.h: @@ -77,12 +122,21 @@ Otherwise, (i.e. there are only bug fixes), increment cairo_version_micro to the next larger (even) number. -5) Commit the changes to NEWS and cairo-version.h +5) For Minor releases, add an index entry to doc/public/cairo-docs.xml + + Towards the end of the file, add a new section for the stable + release. It'll look something like: + + + Index of new symbols in X.Y + + +6) Commit the changes to NEWS and cairo-version.h It's especially important to mention the new version number in your commit log. -6) Run "make release-publish" which will perform the following steps +7) Run "make release-publish" which will perform the following steps for you: * Generate ChangeLog files out of git repository @@ -95,11 +149,11 @@ * Sign the sha1sum using your GPG setup (asks for your GPG password) * scp the three files to appear on http://cairographics.org/releases * Generate a versioned manual and upload it to appear as both: - http://cairographics.org/manual-X.Y.Z + http://cairographics.org/manual-${THIS_RELEASE} http://cairographics.org/manual * Place local copies of the three files in the releases directory * Create a LATEST-package-version file (after deleting any old one) - * Tag the entire source tree with a tag of the form X.Y.Z, and sign + * Tag the entire source tree with a ${THIS_RELEASE} tag, and sign the tag with your GPG key (asks for your GPG password, and you may need to set GIT_COMMITTER_NAME and GIT_COMMITTER_EMAIL to match your public-key's setting or this fails.) @@ -107,32 +161,47 @@ If for some reason you lost this message, "make release-publish-message" prints it for you. -7) Increment cairo_version_micro to the next larger (odd) number in - cairo-version.h, commit, and push. + Upload the incremental ChangeLog generated by the above: + + scp ChangeLog.cache-${LAST_RELEASE}.. \ + cairographics.org:/srv/cairo.freedesktop.org/www/releases/ChangeLog.cairo-${THIS_RELEASE} + + To undo a release-publish, before you've sent any emails or + pushed changes to master, delete the locally created tag (git + tag -d ${THIS_RELEASE}); then log into the webserver, repoint + the manual and LATEST-cairo-${THIS_RELEASE} symlinks to the + previous versions, remove manual-${THIS_RELEASE} and + release/cairo-${THIS_RELEASE}. + +8) Update master (or the stable branch) version number. + + For Micro releases (X.Y.Z), increment cairo_version_micro to the + next larger (odd) number in cairo-version.h, commit, and push. + + For Minor releases (X.Y.0), increment cairo_version_minor to the + next larger (odd) number, and set cairo_version_micro to 1. Then + commit and push. + +9) Push the new tag out to the central tree with a command like: + + git push origin master ${THIS_RELEASE} -8) Push the newly created tag out to the central tree with a command - something like: +10) Edit the cairo bugzilla product and add the new version numbers. - git push origin master X.Y.Z + Note that you need to add two versions. One for the + release/snapshot (with an even micro version), another with the + post-release version (with an odd micro version). -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 - an even micro version), another with the post-release version (with an - odd micro version). - -10) Send a message to cairo-announce@cairographics.org and CC - cairo@cairographics.org, gnome-announce-list@gnome.org and - ftp-release@lists.freedesktop.org (pr@lwn.net as well for major - releases) to announce the new release using the text provided from - "make release-publish", adding the excerpt from NEWS, your - signature, followed by the standard "What is cairo" and "Where to - get more information about cairo" blurbs from README, and finally - the shortlog of all changes since last release, generated by: +11) Send out an announcement message. - git shortlog X.Y.Z... + Send a message to cairo-announce@cairographics.org and CC + cairo@cairographics.org, gnome-announce-list@gnome.org and + ftp-release@lists.freedesktop.org (pr@lwn.net as well for major + releases) to announce the new release using the text provided from + "make release-publish", adding the excerpt from NEWS and + the shortlog of all changes since last release, generated by: - where X.Y.Z is the last released version. + git shortlog ${LAST_RELEASE}... -11) Edit the cairo wiki to add the announcement to the NEWS page and - the front page. (just the parts before your signature). +12) Add the announcement to the NEWS page and the front page. diff -Nru cairo-1.14.6/src/cairo-analysis-surface.c cairo-1.15.10/src/cairo-analysis-surface.c --- cairo-1.14.6/src/cairo-analysis-surface.c 2015-10-27 21:04:30.000000000 +0000 +++ cairo-1.15.10/src/cairo-analysis-surface.c 2017-12-07 02:14:36.000000000 +0000 @@ -122,7 +122,7 @@ if (unlikely (proxy == NULL)) return _cairo_surface_create_in_error (CAIRO_STATUS_NO_MEMORY); - _cairo_surface_init (&proxy->base, &proxy_backend, NULL, target->content); + _cairo_surface_init (&proxy->base, &proxy_backend, NULL, target->content, target->is_vector); proxy->target = target; _cairo_surface_attach_snapshot (source, &proxy->base, NULL); @@ -138,53 +138,6 @@ } static cairo_int_status_t -_analyze_recording_surface_pattern (cairo_analysis_surface_t *surface, - const cairo_pattern_t *pattern) -{ - const cairo_surface_pattern_t *surface_pattern; - cairo_analysis_surface_t *tmp; - cairo_surface_t *source, *proxy; - cairo_matrix_t p2d; - cairo_status_t status, analysis_status; - - assert (pattern->type == CAIRO_PATTERN_TYPE_SURFACE); - surface_pattern = (const cairo_surface_pattern_t *) pattern; - assert (surface_pattern->surface->type == CAIRO_SURFACE_TYPE_RECORDING); - source = surface_pattern->surface; - - proxy = _cairo_surface_has_snapshot (source, &proxy_backend); - if (proxy != NULL) { - /* nothing untoward found so far */ - return CAIRO_STATUS_SUCCESS; - } - - tmp = (cairo_analysis_surface_t *) - _cairo_analysis_surface_create (surface->target); - if (unlikely (tmp->base.status)) - return tmp->base.status; - proxy = attach_proxy (source, &tmp->base); - - p2d = pattern->matrix; - status = cairo_matrix_invert (&p2d); - assert (status == CAIRO_STATUS_SUCCESS); - - cairo_matrix_multiply (&tmp->ctm, &p2d, &surface->ctm); - tmp->has_ctm = ! _cairo_matrix_is_identity (&tmp->ctm); - - source = _cairo_surface_get_source (source, NULL); - status = _cairo_recording_surface_replay_and_create_regions (source, - &tmp->base); - analysis_status = tmp->has_unsupported ? CAIRO_INT_STATUS_IMAGE_FALLBACK : CAIRO_INT_STATUS_SUCCESS; - detach_proxy (proxy); - cairo_surface_destroy (&tmp->base); - - if (unlikely (status)) - return status; - - return analysis_status; -} - -static cairo_int_status_t _add_operation (cairo_analysis_surface_t *surface, cairo_rectangle_int_t *rect, cairo_int_status_t backend_status) @@ -301,6 +254,103 @@ return status; } +static cairo_int_status_t +_analyze_recording_surface_pattern (cairo_analysis_surface_t *surface, + const cairo_pattern_t *pattern, + cairo_rectangle_int_t *extents) +{ + const cairo_surface_pattern_t *surface_pattern; + cairo_analysis_surface_t *tmp; + cairo_surface_t *source, *proxy; + cairo_matrix_t p2d; + cairo_int_status_t status, analysis_status; + cairo_bool_t surface_is_unbounded; + cairo_bool_t unused; + + assert (pattern->type == CAIRO_PATTERN_TYPE_SURFACE); + surface_pattern = (const cairo_surface_pattern_t *) pattern; + assert (surface_pattern->surface->type == CAIRO_SURFACE_TYPE_RECORDING); + source = surface_pattern->surface; + + proxy = _cairo_surface_has_snapshot (source, &proxy_backend); + if (proxy != NULL) { + /* nothing untoward found so far */ + return CAIRO_STATUS_SUCCESS; + } + + tmp = (cairo_analysis_surface_t *) + _cairo_analysis_surface_create (surface->target); + if (unlikely (tmp->base.status)) { + status =tmp->base.status; + goto cleanup1; + } + proxy = attach_proxy (source, &tmp->base); + + p2d = pattern->matrix; + status = cairo_matrix_invert (&p2d); + assert (status == CAIRO_INT_STATUS_SUCCESS); + _cairo_analysis_surface_set_ctm (&tmp->base, &p2d); + + + source = _cairo_surface_get_source (source, NULL); + surface_is_unbounded = (pattern->extend == CAIRO_EXTEND_REPEAT + || pattern->extend == CAIRO_EXTEND_REFLECT); + status = _cairo_recording_surface_replay_and_create_regions (source, + &pattern->matrix, + &tmp->base, + surface_is_unbounded); + if (unlikely (status)) + goto cleanup2; + + /* black background or mime data fills entire extents */ + if (!(source->content & CAIRO_CONTENT_ALPHA) || _cairo_surface_has_mime_image (source)) { + cairo_rectangle_int_t rect; + + if (_cairo_surface_get_extents (source, &rect)) { + cairo_box_t bbox; + + _cairo_box_from_rectangle (&bbox, &rect); + _cairo_matrix_transform_bounding_box_fixed (&p2d, &bbox, NULL); + _cairo_box_round_to_rectangle (&bbox, &rect); + status = _add_operation (tmp, &rect, CAIRO_INT_STATUS_SUCCESS); + if (status == CAIRO_INT_STATUS_IMAGE_FALLBACK) + status = CAIRO_INT_STATUS_SUCCESS; + if (unlikely (status)) + goto cleanup2; + } + } + + if (tmp->has_supported) { + surface->has_supported = TRUE; + unused = cairo_region_union (&surface->supported_region, &tmp->supported_region); + } + + if (tmp->has_unsupported) { + surface->has_unsupported = TRUE; + unused = cairo_region_union (&surface->fallback_region, &tmp->fallback_region); + } + + analysis_status = tmp->has_unsupported ? CAIRO_INT_STATUS_IMAGE_FALLBACK : CAIRO_INT_STATUS_SUCCESS; + if (pattern->extend != CAIRO_EXTEND_NONE) { + _cairo_unbounded_rectangle_init (extents); + } else { + status = cairo_matrix_invert (&tmp->ctm); + _cairo_matrix_transform_bounding_box_fixed (&tmp->ctm, + &tmp->page_bbox, NULL); + _cairo_box_round_to_rectangle (&tmp->page_bbox, extents); + } + + cleanup2: + detach_proxy (proxy); + cleanup1: + cairo_surface_destroy (&tmp->base); + + if (unlikely (status)) + return status; + + return analysis_status; +} + static cairo_status_t _cairo_analysis_surface_finish (void *abstract_surface) { @@ -344,7 +394,7 @@ if (_cairo_operator_bounded_by_source (op)) { cairo_rectangle_int_t source_extents; - _cairo_pattern_get_extents (source, &source_extents); + _cairo_pattern_get_extents (source, &source_extents, surface->target->is_vector); _cairo_rectangle_intersect (extents, &source_extents); } @@ -355,7 +405,7 @@ _cairo_analysis_surface_paint (void *abstract_surface, cairo_operator_t op, const cairo_pattern_t *source, - const cairo_clip_t *clip) + const cairo_clip_t *clip) { cairo_analysis_surface_t *surface = abstract_surface; cairo_int_status_t backend_status; @@ -371,12 +421,14 @@ return backend_status; } - if (backend_status == CAIRO_INT_STATUS_ANALYZE_RECORDING_SURFACE_PATTERN) - backend_status = _analyze_recording_surface_pattern (surface, source); - _cairo_analysis_surface_operation_extents (surface, op, source, clip, &extents); + if (backend_status == CAIRO_INT_STATUS_ANALYZE_RECORDING_SURFACE_PATTERN) { + cairo_rectangle_int_t rec_extents; + backend_status = _analyze_recording_surface_pattern (surface, source, &rec_extents); + _cairo_rectangle_intersect (&extents, &rec_extents); + } return _add_operation (surface, &extents, backend_status); } @@ -386,7 +438,7 @@ cairo_operator_t op, const cairo_pattern_t *source, const cairo_pattern_t *mask, - const cairo_clip_t *clip) + const cairo_clip_t *clip) { cairo_analysis_surface_t *surface = abstract_surface; cairo_int_status_t backend_status; @@ -402,18 +454,24 @@ return backend_status; } + _cairo_analysis_surface_operation_extents (surface, + op, source, clip, + &extents); if (backend_status == CAIRO_INT_STATUS_ANALYZE_RECORDING_SURFACE_PATTERN) { cairo_int_status_t backend_source_status = CAIRO_STATUS_SUCCESS; cairo_int_status_t backend_mask_status = CAIRO_STATUS_SUCCESS; + cairo_rectangle_int_t rec_extents; if (source->type == CAIRO_PATTERN_TYPE_SURFACE) { cairo_surface_t *src_surface = ((cairo_surface_pattern_t *)source)->surface; src_surface = _cairo_surface_get_source (src_surface, NULL); if (_cairo_surface_is_recording (src_surface)) { backend_source_status = - _analyze_recording_surface_pattern (surface, source); + _analyze_recording_surface_pattern (surface, source, &rec_extents); if (_cairo_int_status_is_error (backend_source_status)) return backend_source_status; + + _cairo_rectangle_intersect (&extents, &rec_extents); } } @@ -422,9 +480,11 @@ mask_surface = _cairo_surface_get_source (mask_surface, NULL); if (_cairo_surface_is_recording (mask_surface)) { backend_mask_status = - _analyze_recording_surface_pattern (surface, mask); + _analyze_recording_surface_pattern (surface, mask, &rec_extents); if (_cairo_int_status_is_error (backend_mask_status)) return backend_mask_status; + + _cairo_rectangle_intersect (&extents, &rec_extents); } } @@ -433,14 +493,10 @@ backend_mask_status); } - _cairo_analysis_surface_operation_extents (surface, - op, source, clip, - &extents); - if (_cairo_operator_bounded_by_mask (op)) { cairo_rectangle_int_t mask_extents; - _cairo_pattern_get_extents (mask, &mask_extents); + _cairo_pattern_get_extents (mask, &mask_extents, surface->target->is_vector); _cairo_rectangle_intersect (&extents, &mask_extents); } @@ -448,16 +504,16 @@ } static cairo_int_status_t -_cairo_analysis_surface_stroke (void *abstract_surface, - cairo_operator_t op, - const cairo_pattern_t *source, - const cairo_path_fixed_t *path, - const cairo_stroke_style_t *style, - const cairo_matrix_t *ctm, - const cairo_matrix_t *ctm_inverse, - double tolerance, - cairo_antialias_t antialias, - const cairo_clip_t *clip) +_cairo_analysis_surface_stroke (void *abstract_surface, + cairo_operator_t op, + const cairo_pattern_t *source, + const cairo_path_fixed_t *path, + const cairo_stroke_style_t *style, + const cairo_matrix_t *ctm, + const cairo_matrix_t *ctm_inverse, + double tolerance, + cairo_antialias_t antialias, + const cairo_clip_t *clip) { cairo_analysis_surface_t *surface = abstract_surface; cairo_int_status_t backend_status; @@ -476,12 +532,14 @@ return backend_status; } - if (backend_status == CAIRO_INT_STATUS_ANALYZE_RECORDING_SURFACE_PATTERN) - backend_status = _analyze_recording_surface_pattern (surface, source); - _cairo_analysis_surface_operation_extents (surface, op, source, clip, &extents); + if (backend_status == CAIRO_INT_STATUS_ANALYZE_RECORDING_SURFACE_PATTERN) { + cairo_rectangle_int_t rec_extents; + backend_status = _analyze_recording_surface_pattern (surface, source, &rec_extents); + _cairo_rectangle_intersect (&extents, &rec_extents); + } if (_cairo_operator_bounded_by_mask (op)) { cairo_rectangle_int_t mask_extents; @@ -508,7 +566,7 @@ cairo_fill_rule_t fill_rule, double tolerance, cairo_antialias_t antialias, - const cairo_clip_t *clip) + const cairo_clip_t *clip) { cairo_analysis_surface_t *surface = abstract_surface; cairo_int_status_t backend_status; @@ -526,12 +584,14 @@ return backend_status; } - if (backend_status == CAIRO_INT_STATUS_ANALYZE_RECORDING_SURFACE_PATTERN) - backend_status = _analyze_recording_surface_pattern (surface, source); - _cairo_analysis_surface_operation_extents (surface, op, source, clip, &extents); + if (backend_status == CAIRO_INT_STATUS_ANALYZE_RECORDING_SURFACE_PATTERN) { + cairo_rectangle_int_t rec_extents; + backend_status = _analyze_recording_surface_pattern (surface, source, &rec_extents); + _cairo_rectangle_intersect (&extents, &rec_extents); + } if (_cairo_operator_bounded_by_mask (op)) { cairo_rectangle_int_t mask_extents; @@ -588,12 +648,14 @@ backend_status = CAIRO_INT_STATUS_UNSUPPORTED; } - if (backend_status == CAIRO_INT_STATUS_ANALYZE_RECORDING_SURFACE_PATTERN) - backend_status = _analyze_recording_surface_pattern (surface, source); - _cairo_analysis_surface_operation_extents (surface, op, source, clip, &extents); + if (backend_status == CAIRO_INT_STATUS_ANALYZE_RECORDING_SURFACE_PATTERN) { + cairo_rectangle_int_t rec_extents; + backend_status = _analyze_recording_surface_pattern (surface, source, &rec_extents); + _cairo_rectangle_intersect (&extents, &rec_extents); + } if (_cairo_operator_bounded_by_mask (op)) { status = _cairo_scaled_font_glyph_device_extents (scaled_font, @@ -664,12 +726,14 @@ return backend_status; } - if (backend_status == CAIRO_INT_STATUS_ANALYZE_RECORDING_SURFACE_PATTERN) - backend_status = _analyze_recording_surface_pattern (surface, source); - _cairo_analysis_surface_operation_extents (surface, op, source, clip, &extents); + if (backend_status == CAIRO_INT_STATUS_ANALYZE_RECORDING_SURFACE_PATTERN) { + cairo_rectangle_int_t rec_extents; + backend_status = _analyze_recording_surface_pattern (surface, source, &rec_extents); + _cairo_rectangle_intersect (&extents, &rec_extents); + } if (_cairo_operator_bounded_by_mask (op)) { status = _cairo_scaled_font_glyph_device_extents (scaled_font, @@ -686,6 +750,39 @@ return _add_operation (surface, &extents, backend_status); } +static cairo_int_status_t +_cairo_analysis_surface_tag (void *abstract_surface, + cairo_bool_t begin, + const char *tag_name, + const char *attributes, + const cairo_pattern_t *source, + const cairo_stroke_style_t *stroke_style, + const cairo_matrix_t *ctm, + const cairo_matrix_t *ctm_inverse, + const cairo_clip_t *clip) +{ + cairo_analysis_surface_t *surface = abstract_surface; + cairo_int_status_t backend_status; + + backend_status = CAIRO_INT_STATUS_SUCCESS; + if (surface->target->backend->tag != NULL) { + backend_status = + surface->target->backend->tag (surface->target, + begin, + tag_name, + attributes, + source, + stroke_style, + ctm, + ctm_inverse, + clip); + if (_cairo_int_status_is_error (backend_status)) + return backend_status; + } + + return backend_status; +} + static const cairo_surface_backend_t cairo_analysis_surface_backend = { CAIRO_INTERNAL_SURFACE_TYPE_ANALYSIS, @@ -718,7 +815,9 @@ NULL, /* fill_stroke */ _cairo_analysis_surface_show_glyphs, _cairo_analysis_surface_has_show_text_glyphs, - _cairo_analysis_surface_show_text_glyphs + _cairo_analysis_surface_show_text_glyphs, + NULL, /* get_supported_mime_types */ + _cairo_analysis_surface_tag }; cairo_surface_t * @@ -740,7 +839,8 @@ _cairo_surface_init (&surface->base, &cairo_analysis_surface_backend, NULL, /* device */ - CAIRO_CONTENT_COLOR_ALPHA); + CAIRO_CONTENT_COLOR_ALPHA, + target->is_vector); cairo_matrix_init_identity (&surface->ctm); surface->has_ctm = FALSE; @@ -928,7 +1028,8 @@ _cairo_surface_init (surface, &cairo_null_surface_backend, NULL, /* device */ - content); + content, + TRUE); /* is_vector */ return surface; } diff -Nru cairo-1.14.6/src/cairo-atomic.c cairo-1.15.10/src/cairo-atomic.c --- cairo-1.14.6/src/cairo-atomic.c 2015-10-27 21:04:21.000000000 +0000 +++ cairo-1.15.10/src/cairo-atomic.c 2017-12-07 02:14:36.000000000 +0000 @@ -101,6 +101,20 @@ return ret; } + +cairo_atomic_intptr_t +_cairo_atomic_int_get_relaxed (cairo_atomic_intptr_t *x) +{ + return _cairo_atomic_int_get (x); +} + +void +_cairo_atomic_int_set_relaxed (cairo_atomic_intptr_t *x, cairo_atomic_intptr_t val) +{ + CAIRO_MUTEX_LOCK (_cairo_atomic_mutex); + *x = val; + CAIRO_MUTEX_UNLOCK (_cairo_atomic_mutex); +} #endif #endif diff -Nru cairo-1.14.6/src/cairo-atomic-private.h cairo-1.15.10/src/cairo-atomic-private.h --- cairo-1.14.6/src/cairo-atomic-private.h 2015-10-27 21:04:21.000000000 +0000 +++ cairo-1.15.10/src/cairo-atomic-private.h 2017-12-07 02:14:36.000000000 +0000 @@ -45,6 +45,8 @@ #include "config.h" #endif +#include + /* The autoconf on OpenBSD 4.5 produces the malformed constant name * SIZEOF_VOID__ rather than SIZEOF_VOID_P. Work around that here. */ #if !defined(SIZEOF_VOID_P) && defined(SIZEOF_VOID__) @@ -75,6 +77,18 @@ return __atomic_load_n(x, __ATOMIC_SEQ_CST); } +static cairo_always_inline cairo_atomic_int_t +_cairo_atomic_int_get_relaxed (cairo_atomic_int_t *x) +{ + return __atomic_load_n(x, __ATOMIC_RELAXED); +} + +static cairo_always_inline void +_cairo_atomic_int_set_relaxed (cairo_atomic_int_t *x, cairo_atomic_int_t val) +{ + __atomic_store_n(x, val, __ATOMIC_RELAXED); +} + static cairo_always_inline void * _cairo_atomic_ptr_get (void **x) { @@ -143,13 +157,12 @@ #endif -#if HAVE_INTEL_ATOMIC_PRIMITIVES +#if HAVE_GCC_LEGACY_ATOMICS #define HAS_ATOMIC_OPS 1 typedef int cairo_atomic_int_t; -#ifdef ATOMIC_OP_NEEDS_MEMORY_BARRIER static cairo_always_inline cairo_atomic_int_t _cairo_atomic_int_get (cairo_atomic_int_t *x) { @@ -157,16 +170,24 @@ return *x; } +static cairo_always_inline cairo_atomic_int_t +_cairo_atomic_int_get_relaxed (cairo_atomic_int_t *x) +{ + return *x; +} + +static cairo_always_inline void +_cairo_atomic_int_set_relaxed (cairo_atomic_int_t *x, cairo_atomic_int_t val) +{ + *x = val; +} + static cairo_always_inline void * _cairo_atomic_ptr_get (void **x) { __sync_synchronize (); return *x; } -#else -# define _cairo_atomic_int_get(x) (*x) -# define _cairo_atomic_ptr_get(x) (*x) -#endif # define _cairo_atomic_int_inc(x) ((void) __sync_fetch_and_add(x, 1)) # define _cairo_atomic_int_dec(x) ((void) __sync_fetch_and_add(x, -1)) @@ -200,6 +221,8 @@ typedef AO_t cairo_atomic_int_t; # define _cairo_atomic_int_get(x) (AO_load_full (x)) +# define _cairo_atomic_int_get_relaxed(x) (AO_load_full (x)) +# define _cairo_atomic_int_set_relaxed(x, val) (AO_store_full ((x), (val))) # define _cairo_atomic_int_inc(x) ((void) AO_fetch_and_add1_full(x)) # define _cairo_atomic_int_dec(x) ((void) AO_fetch_and_sub1_full(x)) @@ -230,6 +253,8 @@ typedef int32_t cairo_atomic_int_t; # define _cairo_atomic_int_get(x) (OSMemoryBarrier(), *(x)) +# define _cairo_atomic_int_get_relaxed(x) *(x) +# define _cairo_atomic_int_set_relaxed(x, val) *(x) = (val) # define _cairo_atomic_int_inc(x) ((void) OSAtomicIncrement32Barrier (x)) # define _cairo_atomic_int_dec(x) ((void) OSAtomicDecrement32Barrier (x)) @@ -288,9 +313,15 @@ #ifdef ATOMIC_OP_NEEDS_MEMORY_BARRIER cairo_private cairo_atomic_int_t _cairo_atomic_int_get (cairo_atomic_int_t *x); +cairo_private cairo_atomic_int_t +_cairo_atomic_int_get_relaxed (cairo_atomic_int_t *x); +void +_cairo_atomic_int_set_relaxed (cairo_atomic_int_t *x, cairo_atomic_int_t val); # define _cairo_atomic_ptr_get(x) (void *) _cairo_atomic_int_get((cairo_atomic_int_t *) x) #else # define _cairo_atomic_int_get(x) (*x) +# define _cairo_atomic_int_get_relaxed(x) (*x) +# define _cairo_atomic_int_set_relaxed(x, val) (*x) = (val) # define _cairo_atomic_ptr_get(x) (*x) #endif @@ -357,6 +388,37 @@ (void) ret__; \ } while (0) +typedef cairo_atomic_int_t cairo_atomic_once_t; + +#define CAIRO_ATOMIC_ONCE_UNINITIALIZED (0) +#define CAIRO_ATOMIC_ONCE_INITIALIZING (1) +#define CAIRO_ATOMIC_ONCE_INITIALIZED (2) +#define CAIRO_ATOMIC_ONCE_INIT CAIRO_ATOMIC_ONCE_UNINITIALIZED + +static cairo_always_inline cairo_bool_t +_cairo_atomic_init_once_enter(cairo_atomic_once_t *once) +{ + if (likely(_cairo_atomic_int_get(once) == CAIRO_ATOMIC_ONCE_INITIALIZED)) + return 0; + + if (_cairo_atomic_int_cmpxchg(once, + CAIRO_ATOMIC_ONCE_UNINITIALIZED, + CAIRO_ATOMIC_ONCE_INITIALIZING)) + return 1; + + while (_cairo_atomic_int_get(once) != CAIRO_ATOMIC_ONCE_INITIALIZED) {} + return 0; +} + +static cairo_always_inline void +_cairo_atomic_init_once_leave(cairo_atomic_once_t *once) +{ + if (unlikely(!_cairo_atomic_int_cmpxchg(once, + CAIRO_ATOMIC_ONCE_INITIALIZING, + CAIRO_ATOMIC_ONCE_INITIALIZED))) + assert (0 && "incorrect use of _cairo_atomic_init_once API (once != CAIRO_ATOMIC_ONCE_INITIALIZING)"); +} + CAIRO_END_DECLS #endif diff -Nru cairo-1.14.6/src/cairo-backend-private.h cairo-1.15.10/src/cairo-backend-private.h --- cairo-1.14.6/src/cairo-backend-private.h 2015-10-27 21:04:21.000000000 +0000 +++ cairo-1.15.10/src/cairo-backend-private.h 2017-12-07 02:14:36.000000000 +0000 @@ -172,6 +172,9 @@ cairo_status_t (*copy_page) (void *cr); cairo_status_t (*show_page) (void *cr); + + cairo_status_t (*tag_begin) (void *cr, const char *tag_name, const char *attributes); + cairo_status_t (*tag_end) (void *cr, const char *tag_name); }; static inline void diff -Nru cairo-1.14.6/src/cairo-bentley-ottmann-rectangular.c cairo-1.15.10/src/cairo-bentley-ottmann-rectangular.c --- cairo-1.14.6/src/cairo-bentley-ottmann-rectangular.c 2015-10-27 21:04:30.000000000 +0000 +++ cairo-1.15.10/src/cairo-bentley-ottmann-rectangular.c 2017-12-07 02:14:36.000000000 +0000 @@ -593,6 +593,12 @@ pqueue_push (sweep, rectangle); } +static int +sweep_line_setjmp (sweep_line_t *sweep_line) +{ + return setjmp (sweep_line->unwind); +} + static cairo_status_t _cairo_bentley_ottmann_tessellate_rectangular (rectangle_t **rectangles, int num_rectangles, @@ -609,7 +615,7 @@ rectangles, num_rectangles, fill_rule, do_traps, container); - if ((status = setjmp (sweep_line.unwind))) + if ((status = sweep_line_setjmp (&sweep_line))) return status; rectangle = rectangle_pop_start (&sweep_line); @@ -672,10 +678,19 @@ cairo_status_t status; int i; - if (unlikely (traps->num_traps <= 1)) - return CAIRO_STATUS_SUCCESS; + assert (traps->is_rectangular); - assert (traps->is_rectangular); + if (unlikely (traps->num_traps <= 1)) { + if (traps->num_traps == 1) { + cairo_trapezoid_t *trap = traps->traps; + if (trap->left.p1.x > trap->right.p1.x) { + cairo_line_t tmp = trap->left; + trap->left = trap->right; + trap->right = tmp; + } + } + return CAIRO_STATUS_SUCCESS; + } dump_traps (traps, "bo-rects-traps-in.txt"); diff -Nru cairo-1.14.6/src/cairo-botor-scan-converter.c cairo-1.15.10/src/cairo-botor-scan-converter.c --- cairo-1.14.6/src/cairo-botor-scan-converter.c 2015-10-27 21:04:21.000000000 +0000 +++ cairo-1.15.10/src/cairo-botor-scan-converter.c 2017-12-07 02:14:36.000000000 +0000 @@ -456,7 +456,7 @@ HAVE_BX = 0x2, HAVE_BOTH = HAVE_AX | HAVE_BX } have_ax_bx = HAVE_BOTH; - int32_t ax, bx; + int32_t ax = 0, bx = 0; /* XXX given we have x and dx? */ @@ -2127,6 +2127,44 @@ return CAIRO_STATUS_SUCCESS; } + +#if 0 +static cairo_status_t +_cairo_botor_scan_converter_add_edge (void *converter, + const cairo_point_t *p1, + const cairo_point_t *p2, + int top, int bottom, + int dir) +{ + cairo_botor_scan_converter_t *self = converter; + cairo_edge_t edge; + + edge.line.p1 = *p1; + edge.line.p2 = *p2; + edge.top = top; + edge.bottom = bottom; + edge.dir = dir; + + return botor_add_edge (self, &edge); +} +#endif + +cairo_status_t +_cairo_botor_scan_converter_add_polygon (cairo_botor_scan_converter_t *converter, + const cairo_polygon_t *polygon) +{ + cairo_botor_scan_converter_t *self = converter; + cairo_status_t status; + int i; + + for (i = 0; i < polygon->num_edges; i++) { + status = botor_add_edge (self, &polygon->edges[i]); + if (unlikely (status)) + return status; + } + + return CAIRO_STATUS_SUCCESS; +} static void _cairo_botor_scan_converter_destroy (void *converter) diff -Nru cairo-1.14.6/src/cairo-boxes.c cairo-1.15.10/src/cairo-boxes.c --- cairo-1.14.6/src/cairo-boxes.c 2015-10-27 21:04:21.000000000 +0000 +++ cairo-1.15.10/src/cairo-boxes.c 2017-12-07 22:13:32.000000000 +0000 @@ -102,6 +102,17 @@ boxes->is_pixel_aligned = n == num_boxes; } +/** _cairo_boxes_limit: + * + * Computes the minimum bounding box of the given list of boxes and assign + * it to the given boxes set. It also assigns that list as the list of + * limiting boxes in the box set. + * + * @param boxes the box set to be filled (return buffer) + * @param limits array of the limiting boxes to compute the bounding + * box from + * @param num_limits length of the limits array + */ void _cairo_boxes_limit (cairo_boxes_t *boxes, const cairo_box_t *limits, @@ -265,6 +276,14 @@ return boxes->status; } +/** _cairo_boxes_extents: + * + * Computes the minimum bounding box of the given box set and stores + * it in the given box. + * + * @param boxes The box set whose minimum bounding is computed. + * @param box Return buffer for the computed result. + */ void _cairo_boxes_extents (const cairo_boxes_t *boxes, cairo_box_t *box) @@ -317,18 +336,25 @@ boxes->is_pixel_aligned = TRUE; } +/** _cairo_boxes_to_array: + * + * Linearize a box set of possibly multiple chunks into one big chunk + * and returns an array of boxes + * + * @param boxes The box set to be converted. + * @param num_boxes Return buffer for the number of boxes (array count). + * @return Pointer to the newly allocated array of boxes + * (the number o elements is given in num_boxes). + */ cairo_box_t * _cairo_boxes_to_array (const cairo_boxes_t *boxes, - int *num_boxes, - cairo_bool_t force_allocation) + int *num_boxes) { const struct _cairo_boxes_chunk *chunk; cairo_box_t *box; int i, j; *num_boxes = boxes->num_boxes; - if (boxes->chunks.next == NULL && ! force_allocation) - return boxes->chunks.base; box = _cairo_malloc_ab (boxes->num_boxes, sizeof (cairo_box_t)); if (box == NULL) { diff -Nru cairo-1.14.6/src/cairo-boxes-private.h cairo-1.15.10/src/cairo-boxes-private.h --- cairo-1.14.6/src/cairo-boxes-private.h 2015-10-27 21:04:21.000000000 +0000 +++ cairo-1.15.10/src/cairo-boxes-private.h 2017-12-07 02:14:36.000000000 +0000 @@ -92,8 +92,7 @@ cairo_private cairo_box_t * _cairo_boxes_to_array (const cairo_boxes_t *boxes, - int *num_boxes, - cairo_bool_t force_allocation); + int *num_boxes); cairo_private cairo_status_t _cairo_boxes_intersect (const cairo_boxes_t *a, diff -Nru cairo-1.14.6/src/cairo-box-inline.h cairo-1.15.10/src/cairo-box-inline.h --- cairo-1.14.6/src/cairo-box-inline.h 2015-10-27 21:04:21.000000000 +0000 +++ cairo-1.15.10/src/cairo-box-inline.h 2017-12-07 02:14:36.000000000 +0000 @@ -57,6 +57,16 @@ box->p2.y = _cairo_fixed_from_int (y + h); } +static inline void +_cairo_box_from_rectangle_int (cairo_box_t *box, + const cairo_rectangle_int_t *rect) +{ + box->p1.x = _cairo_fixed_from_int (rect->x); + box->p1.y = _cairo_fixed_from_int (rect->y); + box->p2.x = _cairo_fixed_from_int (rect->x + rect->width); + box->p2.y = _cairo_fixed_from_int (rect->y + rect->height); +} + /* assumes box->p1 is top-left, p2 bottom-right */ static inline void _cairo_box_add_point (cairo_box_t *box, diff -Nru cairo-1.14.6/src/cairo.c cairo-1.15.10/src/cairo.c --- cairo-1.14.6/src/cairo.c 2015-10-27 21:04:21.000000000 +0000 +++ cairo-1.15.10/src/cairo.c 2017-12-07 22:13:32.000000000 +0000 @@ -107,6 +107,221 @@ * space. **/ +/** + * SECTION:cairo-tag + * @Title: Tags and Links + * @Short_Description: Hyperlinks and document structure + * @See_Also: #cairo_pdf_surface_t + * + * The tag functions provide the ability to specify hyperlinks and + * document logical structure on supported backends. The following tags are supported: + * * [Link][link] - Create a hyperlink + * * [Destinations][dest] - Create a hyperlink destination + * * [Document Structure Tags][doc-struct] - Create PDF Document Structure + * + * # Link Tags # {#link} + * A hyperlink is specified by enclosing the hyperlink text with the %CAIRO_TAG_LINK tag. + * + * For example: + * + * cairo_tag_begin (cr, CAIRO_TAG_LINK, "uri='http://cairographics.org'"); + * cairo_move_to (cr, 50, 50); + * cairo_show_text (cr, "This is a link to the cairo website."); + * cairo_tag_end (cr, CAIRO_TAG_LINK); + * + * + * The PDF backend uses one or more rectangles to define the clickable + * area of the link. By default cairo will use the extents of the + * drawing operations enclosed by the begin/end link tags to define the + * clickable area. In some cases, such as a link split across two + * lines, the default rectangle is undesirable. + * + * @rect: [optional] The "rect" attribute allows the application to + * specify one or more rectangles that form the clickable region. The + * value of this attribute is an array of floats. Each rectangle is + * specified by four elements in the array: x, y, width, height. The + * array size must be a multiple of four. + * + * An example of creating a link with user specified clickable region: + * + * cairo_font_extents_t font_extents; + * cairo_text_extents_t text1_extents; + * cairo_text_extents_t text2_extents; + * char attribs[100]; + * const char *text1 = "This link is split"; + * const char *text2 = "across two lines"; + * + * cairo_font_extents (cr, &font_extents); + * cairo_move_to (cr, 450, 50); + * cairo_text_extents (cr, text1, &text1_extents); + * cairo_move_to (cr, 50, 70); + * cairo_text_extents (cr, text2, &text2_extents); + * sprintf (attribs, + * "rect=[%f %f %f %f %f %f %f %f] uri='http://cairographics.org'", + * text1_extents.x_bearing, + * text1_extents.y_bearing, + * text1_extents.width, + * text1_extents.height, + * text2_extents.x_bearing, + * text2_extents.y_bearing, + * text2_extents.width, + * text2_extents.height); + * + * cairo_tag_begin (cr, CAIRO_TAG_LINK, attribs); + * cairo_show_text (cr, "This is a link to the cairo website"); + * cairo_move_to (cr, 450, 50); + * cairo_show_text (cr, text1); + * cairo_move_to (cr, 50, 70); + * cairo_show_text (cr, text2); + * cairo_tag_end (cr, CAIRO_TAG_LINK); + * + * + * There are three types of links. Each type has its own attributes as detailed below. + * * [Internal Links][internal-link] - A link to a location in the same document + * * [URI Links][uri-link] - A link to a Uniform resource identifier + * * [File Links][file-link] - A link to a location in another document + * + * ## Internal Links ## {#internal-link} + * An internal link is a link to a location in the same document. The destination + * is specified with either: + * + * @dest: a UTF-8 string specifying the destination in the PDF file to link + * to. Destinations are created with the %CAIRO_TAG_DEST tag. + * + * or the two attributes: + * + * @page: An integer specifying the page number in the PDF file to link to. + * + * @pos: [optional] An array of two floats specifying the x,y position + * on the page. + * + * An example of the link attributes to link to a page and x,y position: + * + * "page=3 pos=[3.1 6.2]" + * + * + * ## URI Links ## {#uri-link} + * A URI link is a link to a Uniform Resource Identifier ([RFC 2396](http://tools.ietf.org/html/rfc2396)). + * + * A URI is specified with the following attribute: + * + * @uri: An ASCII string specifying the URI. + * + * An example of the link attributes to the cairo website: + * + * "uri='http://cairographics.org'" + * + * + * ## File Links ## {#file-link} + * A file link is a link a location in another PDF file. + * + * The file attribute (required) specifies the name of the PDF file: + * + * @file: File name of PDF file to link to. + * + * The position is specified by either: + * + * @dest: a UTF-8 string specifying the named destination in the PDF file. + * + * or + * + * @page: An integer specifying the page number in the PDF file. + * + * @pos: [optional] An array of two floats specifying the x,y + * position on the page. Position coordinates in external files are in PDF + * coordinates (0,0 at bottom left). + * + * An example of the link attributes to PDF file: + * + * "file='document.pdf' page=16 pos=[25 40]" + * + * + * # Destination Tags # {#dest} + * + * A destination is specified by enclosing the destination drawing + * operations with the %CAIRO_TAG_DEST tag. + * + * @name: [required] A UTF-8 string specifying the name of this destination. + * + * @x: [optional] A float specifying the x coordinate of destination + * position on this page. If not specified the default + * x coordinate is the left side of the extents of the + * operations enclosed by the %CAIRO_TAG_DEST begin/end tags. If + * no operations are enclosed, the x coordidate is 0. + * + * @y: [optional] A float specifying the y coordinate of destination + * position on this page. If not specified the default + * y coordinate is the top of the extents of the + * operations enclosed by the %CAIRO_TAG_DEST begin/end tags. If + * no operations are enclosed, the y coordidate is 0. + * + * @internal: A boolean that if true, the destination name may be + * ommitted from PDF where possible. In this case, links + * refer directly to the page and position instead of via + * the named destination table. Note that if this + * destination is referenced by another PDF (see [File Links][file-link]), + * this attribute must be false. Default is false. + * + * + * /* Create a hyperlink */ + * cairo_tag_begin (cr, CAIRO_TAG_LINK, "dest='mydest' internal"); + * cairo_move_to (cr, 50, 50); + * cairo_show_text (cr, "This is a hyperlink."); + * cairo_tag_end (cr, CAIRO_TAG_LINK); + * + * /* Create a destination */ + * cairo_tag_begin (cr, CAIRO_TAG_DEST, "name='mydest'"); + * cairo_move_to (cr, 50, 250); + * cairo_show_text (cr, "This paragraph is the destination of the above link."); + * cairo_tag_end (cr, CAIRO_TAG_DEST); + * + * + * # Document Structure (PDF) # {#doc-struct} + * + * The document structure tags provide a means of specifying structural information + * such as headers, paragraphs, tables, and figures. The inclusion of structural information faciliates: + * * Extraction of text and graphics for copy and paste + * * Reflow of text and graphics in the viewer + * * Proccessing text eg searching and indexing + * * Conversion to other formats + * * Accessability support + * + * The list of structure types is specified in section 14.8.4 of the + * [PDF Reference](http://www.adobe.com/content/dam/Adobe/en/devnet/acrobat/pdfs/PDF32000_2008.pdf). + * + * Note the PDF "Link" structure tag is the same as the cairo %CAIRO_TAG_LINK tag. + * + * The following example creates a document structure for a document containing two section, each with + * a header and a paragraph. + * + * + * cairo_tag_begin (cr, "Document", NULL); + * + * cairo_tag_begin (cr, "Sect", NULL); + * cairo_tag_begin (cr, "H1", NULL); + * cairo_show_text (cr, "Heading 1"); + * cairo_tag_end (cr, "H1"); + * + * cairo_tag_begin (cr, "P", NULL); + * cairo_show_text (cr, "Paragraph 1"); + * cairo_tag_end (cr, "P"); + * cairo_tag_end (cr, "Sect"); + * + * cairo_tag_begin (cr, "Sect", NULL); + * cairo_tag_begin (cr, "H1", NULL); + * cairo_show_text (cr, "Heading 2"); + * cairo_tag_end (cr, "H1"); + * + * cairo_tag_begin (cr, "P", NULL); + * cairo_show_text (cr, "Paragraph 2"); + * cairo_tag_end (cr, "P"); + * cairo_tag_end (cr, "Sect"); + * + * cairo_tag_end (cr, "Document"); + * + * + **/ + #define DEFINE_NIL_CONTEXT(status) \ { \ CAIRO_REFERENCE_COUNT_INVALID, /* ref_count */ \ @@ -153,7 +368,11 @@ DEFINE_NIL_CONTEXT (CAIRO_STATUS_DEVICE_ERROR), DEFINE_NIL_CONTEXT (CAIRO_STATUS_INVALID_MESH_CONSTRUCTION), DEFINE_NIL_CONTEXT (CAIRO_STATUS_DEVICE_FINISHED), - DEFINE_NIL_CONTEXT (CAIRO_STATUS_JBIG2_GLOBAL_MISSING) + DEFINE_NIL_CONTEXT (CAIRO_STATUS_JBIG2_GLOBAL_MISSING), + DEFINE_NIL_CONTEXT (CAIRO_STATUS_PNG_ERROR), + DEFINE_NIL_CONTEXT (CAIRO_STATUS_FREETYPE_ERROR), + DEFINE_NIL_CONTEXT (CAIRO_STATUS_WIN32_GDI_ERROR), + DEFINE_NIL_CONTEXT (CAIRO_STATUS_TAG_ERROR) }; COMPILE_TIME_ASSERT (ARRAY_LENGTH (_cairo_nil) == CAIRO_STATUS_LAST_STATUS - 1); @@ -260,8 +479,8 @@ * @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(). + * Use cairo_get_reference_count() to get the number of references to + * a #cairo_t. * * Return value: the referenced #cairo_t. * @@ -625,7 +844,7 @@ #if 0 -/** +/* * cairo_set_opacity: * @cr: a #cairo_t * @opacity: the level of opacity to use when compositing @@ -635,9 +854,7 @@ * using the alpha value. * * The default opacity is 1. - * - * Since: TBD - **/ + */ void cairo_set_opacity (cairo_t *cr, double opacity) { @@ -2664,6 +2881,100 @@ } /** + * CAIRO_TAG_DEST: + * + * Create a destination for a hyperlink. Destination tag attributes + * are detailed at [Destinations][dests]. + * + * Since: 1.16 + **/ + +/** + * CAIRO_TAG_LINK: + * + * Create hyperlink. Link tag attributes are detailed at + * [Links][links]. + * + * Since: 1.16 + **/ + +/** + * cairo_tag_begin: + * @cr: a cairo context + * @tag_name: tag name + * @attributes: tag attributes + * + * Marks the beginning of the @tag_name structure. Call + * cairo_tag_end() with the same @tag_name to mark the end of the + * structure. + * + * The attributes string is of the form "key1=value2 key2=value2 ...". + * Values may be boolean (true/false or 1/0), integer, float, string, + * or an array. + * + * String values are enclosed in single quotes + * ('). Single quotes and backslashes inside the string should be + * escaped with a backslash. + * + * Boolean values may be set to true by only + * specifying the key. eg the attribute string "key" is the equivalent + * to "key=true". + * + * Arrays are enclosed in '[]'. eg "rect=[1.2 4.3 2.0 3.0]". + * + * If no attributes are required, @attributes can be an empty string or NULL. + * + * See [Tags and Links Description][cairo-Tags-and-Links.description] + * for the list of tags and attributes. + * + * Invalid nesting of tags or invalid attributes will cause @cr to + * shutdown with a status of %CAIRO_STATUS_TAG_ERROR. + * + * See cairo_tag_end(). + * + * Since: 1.16 + **/ +void +cairo_tag_begin (cairo_t *cr, const char *tag_name, const char *attributes) +{ + cairo_status_t status; + + if (unlikely (cr->status)) + return; + + status = cr->backend->tag_begin (cr, tag_name, attributes); + if (unlikely (status)) + _cairo_set_error (cr, status); +} + +/** + * cairo_tag_end: + * @cr: a cairo context + * @tag_name: tag name + * + * Marks the end of the @tag_name structure. + * + * Invalid nesting of tags will cause @cr to shutdown with a status of + * %CAIRO_STATUS_TAG_ERROR. + * + * See cairo_tag_begin(). + * + * Since: 1.16 + **/ +cairo_public void +cairo_tag_end (cairo_t *cr, const char *tag_name) +{ + cairo_status_t status; + + if (unlikely (cr->status)) + return; + + status = cr->backend->tag_end (cr, tag_name); + if (unlikely (status)) + _cairo_set_error (cr, status); +} + +/** * cairo_select_font_face: * @cr: a #cairo_t * @family: a font family name, encoded in UTF-8 diff -Nru cairo-1.14.6/src/cairo-cff-subset.c cairo-1.15.10/src/cairo-cff-subset.c --- cairo-1.14.6/src/cairo-cff-subset.c 2015-10-27 21:04:30.000000000 +0000 +++ cairo-1.15.10/src/cairo-cff-subset.c 2017-12-07 02:14:36.000000000 +0000 @@ -41,7 +41,7 @@ * http://www.adobe.com/content/dam/Adobe/en/devnet/font/pdfs/5177.Type2.pdf */ -#define _BSD_SOURCE /* for snprintf(), strdup() */ +#define _DEFAULT_SOURCE /* for snprintf(), strdup() */ #include "cairoint.h" #include "cairo-array-private.h" @@ -295,20 +295,11 @@ static unsigned char * decode_real (unsigned char *p, double *real) { - const char *decimal_point; - int decimal_point_len; - int n; char buffer[100]; - char buffer2[200]; - char *q; char *buf = buffer; char *buf_end = buffer + sizeof (buffer); - - decimal_point = cairo_get_locale_decimal_point (); - decimal_point_len = strlen (decimal_point); - - assert (decimal_point_len != 0); - assert (sizeof(buffer) + decimal_point_len < sizeof(buffer2)); + char *end; + int n; p++; while (buf + 2 < buf_end) { @@ -324,19 +315,7 @@ }; *buf = 0; - buf = buffer; - if (strchr (buffer, '.')) { - q = strchr (buffer, '.'); - strncpy (buffer2, buffer, q - buffer); - buf = buffer2 + (q - buffer); - strncpy (buf, decimal_point, decimal_point_len); - buf += decimal_point_len; - strcpy (buf, q + 1); - buf = buffer2; - } - - if (sscanf(buf, "%lf", real) != 1) - *real = 0.0; + *real = _cairo_strtod (buffer, &end); return p; } @@ -1780,7 +1759,7 @@ font->subset_subroutines = TRUE; for (i = 0; i < font->scaled_font_subset->num_glyphs; i++) { - if (font->is_cid) { + if (font->is_cid && !font->is_opentype) { cid = font->scaled_font_subset->glyphs[i]; status = cairo_cff_font_get_gid_for_cid (font, cid, &glyph); if (unlikely (status)) @@ -1847,11 +1826,15 @@ font->num_subset_fontdicts = 0; 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)) { - free (reverse_map); - return status; + if (font->is_opentype) { + gid = font->scaled_font_subset->glyphs[i]; + } else { + cid = font->scaled_font_subset->glyphs[i]; + status = cairo_cff_font_get_gid_for_cid (font, cid, &gid); + if (unlikely (status)) { + free (reverse_map); + return status; + } } fd = font->fdselect[gid]; @@ -2784,13 +2767,20 @@ { const cairo_scaled_font_backend_t *backend; cairo_int_status_t status; + cairo_bool_t is_synthetic; cairo_cff_font_t *font; backend = scaled_font_subset->scaled_font->backend; - /* We need to use a fallback font generated from the synthesized outlines. */ - if (backend->is_synthetic && backend->is_synthetic (scaled_font_subset->scaled_font)) - return CAIRO_INT_STATUS_UNSUPPORTED; + /* We need to use a fallback font if this font differs from the CFF outlines. */ + if (backend->is_synthetic) { + status = backend->is_synthetic (scaled_font_subset->scaled_font, &is_synthetic); + if (unlikely (status)) + return status; + + if (is_synthetic) + return CAIRO_INT_STATUS_UNSUPPORTED; + } font = calloc (1, sizeof (cairo_cff_font_t)); if (unlikely (font == NULL)) diff -Nru cairo-1.14.6/src/cairo-clip-boxes.c cairo-1.15.10/src/cairo-clip-boxes.c --- cairo-1.14.6/src/cairo-clip-boxes.c 2015-10-27 21:04:21.000000000 +0000 +++ cairo-1.15.10/src/cairo-clip-boxes.c 2017-12-07 22:13:32.000000000 +0000 @@ -119,11 +119,7 @@ { cairo_box_t box; - box.p1.x = _cairo_fixed_from_int (rect->x); - box.p1.y = _cairo_fixed_from_int (rect->y); - box.p2.x = _cairo_fixed_from_int (rect->x + rect->width); - box.p2.y = _cairo_fixed_from_int (rect->y + rect->height); - + _cairo_box_from_rectangle_int (&box, rect); return _cairo_clip_contains_rectangle_box (clip, rect, &box); } @@ -268,6 +264,34 @@ return _cairo_clip_intersect_rectangle_box (clip, &r, box); } +/* Copy a box set to a clip + * + * @param boxes The box set to copy from. + * @param clip The clip to copy to (return buffer). + * @returns Zero if the allocation failed (the clip will be set to + * all-clipped), otherwise non-zero. + */ +static cairo_bool_t +_cairo_boxes_copy_to_clip (const cairo_boxes_t *boxes, cairo_clip_t *clip) +{ + /* XXX cow-boxes? */ + if (boxes->num_boxes == 1) { + clip->boxes = &clip->embedded_box; + clip->boxes[0] = boxes->chunks.base[0]; + clip->num_boxes = 1; + return TRUE; + } + + clip->boxes = _cairo_boxes_to_array (boxes, &clip->num_boxes); + if (unlikely (clip->boxes == NULL)) + { + _cairo_clip_set_all_clipped (clip); + return FALSE; + } + + return TRUE; +} + cairo_clip_t * _cairo_clip_intersect_boxes (cairo_clip_t *clip, const cairo_boxes_t *boxes) @@ -305,13 +329,10 @@ if (boxes->num_boxes == 0) { clip = _cairo_clip_set_all_clipped (clip); goto out; - } else if (boxes->num_boxes == 1) { - clip->boxes = &clip->embedded_box; - clip->boxes[0] = boxes->chunks.base[0]; - clip->num_boxes = 1; - } else { - clip->boxes = _cairo_boxes_to_array (boxes, &clip->num_boxes, TRUE); } + + _cairo_boxes_copy_to_clip (boxes, clip); + _cairo_boxes_extents (boxes, &limits); _cairo_box_round_to_rectangle (&limits, &extents); @@ -347,10 +368,7 @@ if (r->width == 0 || r->height == 0) return _cairo_clip_set_all_clipped (clip); - box.p1.x = _cairo_fixed_from_int (r->x); - box.p1.y = _cairo_fixed_from_int (r->y); - box.p2.x = _cairo_fixed_from_int (r->x + r->width); - box.p2.y = _cairo_fixed_from_int (r->y + r->height); + _cairo_box_from_rectangle_int (&box, r); return _cairo_clip_intersect_rectangle_box (clip, r, &box); } @@ -581,16 +599,8 @@ if (clip == NULL) return _cairo_clip_set_all_clipped (clip); - /* XXX cow-boxes? */ - if(boxes->num_boxes == 1) { - clip->boxes = &clip->embedded_box; - clip->boxes[0] = boxes->chunks.base[0]; - clip->num_boxes = 1; - } else { - clip->boxes = _cairo_boxes_to_array (boxes, &clip->num_boxes, TRUE); - if (clip->boxes == NULL) - return _cairo_clip_set_all_clipped (clip); - } + if (unlikely (! _cairo_boxes_copy_to_clip (boxes, clip))) + return clip; _cairo_boxes_extents (boxes, &extents); _cairo_box_round_to_rectangle (&extents, &clip->extents); diff -Nru cairo-1.14.6/src/cairo-cogl-surface.c cairo-1.15.10/src/cairo-cogl-surface.c --- cairo-1.14.6/src/cairo-cogl-surface.c 2015-10-27 21:04:30.000000000 +0000 +++ cairo-1.15.10/src/cairo-cogl-surface.c 2017-12-07 02:14:36.000000000 +0000 @@ -2544,7 +2544,8 @@ _cairo_surface_init (&surface->base, &_cairo_cogl_surface_backend, &dev->base, - CAIRO_CONTENT_COLOR_ALPHA); + CAIRO_CONTENT_COLOR_ALPHA, + FALSE); /* is_vector */ return &surface->base; } diff -Nru cairo-1.14.6/src/cairo-composite-rectangles.c cairo-1.15.10/src/cairo-composite-rectangles.c --- cairo-1.14.6/src/cairo-composite-rectangles.c 2015-10-27 21:04:30.000000000 +0000 +++ cairo-1.15.10/src/cairo-composite-rectangles.c 2017-12-07 02:14:36.000000000 +0000 @@ -97,7 +97,8 @@ _cairo_composite_reduce_pattern (source, &extents->source_pattern); _cairo_pattern_get_extents (&extents->source_pattern.base, - &extents->source); + &extents->source, + surface->is_vector); if (extents->is_bounded & CAIRO_OPERATOR_BOUND_BY_SOURCE) { if (! _cairo_rectangle_intersect (&extents->bounded, &extents->source)) return FALSE; @@ -146,10 +147,8 @@ _cairo_composite_rectangles_intersect (cairo_composite_rectangles_t *extents, const cairo_clip_t *clip) { - cairo_bool_t ret; - - ret = _cairo_rectangle_intersect (&extents->bounded, &extents->mask); - if (! ret && extents->is_bounded & CAIRO_OPERATOR_BOUND_BY_MASK) + if ((!_cairo_rectangle_intersect (&extents->bounded, &extents->mask)) && + (extents->is_bounded & CAIRO_OPERATOR_BOUND_BY_MASK)) return CAIRO_INT_STATUS_NOTHING_TO_DO; if (extents->is_bounded == (CAIRO_OPERATOR_BOUND_BY_MASK | CAIRO_OPERATOR_BOUND_BY_SOURCE)) { @@ -318,7 +317,7 @@ cairo_int_status_t _cairo_composite_rectangles_init_for_mask (cairo_composite_rectangles_t *extents, - cairo_surface_t*surface, + cairo_surface_t *surface, cairo_operator_t op, const cairo_pattern_t *source, const cairo_pattern_t *mask, @@ -332,7 +331,7 @@ extents->original_mask_pattern = mask; _cairo_composite_reduce_pattern (mask, &extents->mask_pattern); - _cairo_pattern_get_extents (&extents->mask_pattern.base, &extents->mask); + _cairo_pattern_get_extents (&extents->mask_pattern.base, &extents->mask, surface->is_vector); return _cairo_composite_rectangles_intersect (extents, clip); } @@ -353,7 +352,7 @@ return CAIRO_INT_STATUS_NOTHING_TO_DO; } - _cairo_path_fixed_approximate_stroke_extents (path, style, ctm, &extents->mask); + _cairo_path_fixed_approximate_stroke_extents (path, style, ctm, surface->is_vector, &extents->mask); return _cairo_composite_rectangles_intersect (extents, clip); } diff -Nru cairo-1.14.6/src/cairo-debug.c cairo-1.15.10/src/cairo-debug.c --- cairo-1.14.6/src/cairo-debug.c 2015-10-27 21:04:22.000000000 +0000 +++ cairo-1.15.10/src/cairo-debug.c 2017-12-07 02:14:36.000000000 +0000 @@ -237,7 +237,7 @@ } void -_cairo_debug_print_path (FILE *stream, cairo_path_fixed_t *path) +_cairo_debug_print_path (FILE *stream, const cairo_path_fixed_t *path) { cairo_status_t status; cairo_box_t box; @@ -262,7 +262,7 @@ box.p1.x, box.p1.y, box.p2.x, box.p2.y); } - printf ("\n"); + fprintf (stream, "\n"); } void @@ -302,3 +302,20 @@ } } + +void +_cairo_debug_print_matrix (FILE *file, const cairo_matrix_t *matrix) +{ + fprintf (file, "[%g %g %g %g %g %g]\n", + matrix->xx, matrix->yx, + matrix->xy, matrix->yy, + matrix->x0, matrix->y0); +} + +void +_cairo_debug_print_rect (FILE *file, const cairo_rectangle_int_t *rect) +{ + fprintf (file, "x: %d y: %d width: %d height: %d\n", + rect->x, rect->y, + rect->width, rect->height); +} diff -Nru cairo-1.14.6/src/cairo-default-context.c cairo-1.15.10/src/cairo-default-context.c --- cairo-1.14.6/src/cairo-default-context.c 2015-10-27 21:04:21.000000000 +0000 +++ cairo-1.15.10/src/cairo-default-context.c 2017-12-07 02:14:36.000000000 +0000 @@ -1156,6 +1156,24 @@ } static cairo_status_t +_cairo_default_context_tag_begin (void *abstract_cr, + const char *tag_name, const char *attributes) +{ + cairo_default_context_t *cr = abstract_cr; + + return _cairo_gstate_tag_begin (cr->gstate, tag_name, attributes); +} + +static cairo_status_t +_cairo_default_context_tag_end (void *abstract_cr, + const char *tag_name) +{ + cairo_default_context_t *cr = abstract_cr; + + return _cairo_gstate_tag_end (cr->gstate, tag_name); +} + +static cairo_status_t _cairo_default_context_show_page (void *abstract_cr) { cairo_default_context_t *cr = abstract_cr; @@ -1437,6 +1455,9 @@ _cairo_default_context_copy_page, _cairo_default_context_show_page, + + _cairo_default_context_tag_begin, + _cairo_default_context_tag_end, }; cairo_status_t diff -Nru cairo-1.14.6/src/cairo-device.c cairo-1.15.10/src/cairo-device.c --- cairo-1.14.6/src/cairo-device.c 2015-10-27 21:04:21.000000000 +0000 +++ cairo-1.15.10/src/cairo-device.c 2017-12-07 02:14:36.000000000 +0000 @@ -159,6 +159,10 @@ case CAIRO_STATUS_INVALID_MESH_CONSTRUCTION: case CAIRO_STATUS_DEVICE_FINISHED: case CAIRO_STATUS_JBIG2_GLOBAL_MISSING: + case CAIRO_STATUS_PNG_ERROR: + case CAIRO_STATUS_FREETYPE_ERROR: + case CAIRO_STATUS_WIN32_GDI_ERROR: + case CAIRO_STATUS_TAG_ERROR: default: _cairo_error_throw (CAIRO_STATUS_NO_MEMORY); return (cairo_device_t *) &_nil_device; @@ -190,8 +194,8 @@ * @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(). + * Use cairo_device_get_reference_count() to get the number of references + * to a #cairo_device_t. * * Return value: the referenced #cairo_device_t. * diff -Nru cairo-1.14.6/src/cairo-directfb-surface.c cairo-1.15.10/src/cairo-directfb-surface.c --- cairo-1.14.6/src/cairo-directfb-surface.c 2015-10-27 21:04:30.000000000 +0000 +++ cairo-1.15.10/src/cairo-directfb-surface.c 2017-12-07 02:14:36.000000000 +0000 @@ -522,7 +522,8 @@ _cairo_surface_init (&surface->image.base, &_cairo_dfb_surface_backend, NULL, /* device */ - _directfb_format_to_content (format)); + _directfb_format_to_content (format), + FALSE); /* is_vector */ surface->image.pixman_format = pixman_format; surface->image.format = _cairo_format_from_pixman_format (pixman_format); diff -Nru cairo-1.14.6/src/cairo-error-private.h cairo-1.15.10/src/cairo-error-private.h --- cairo-1.14.6/src/cairo-error-private.h 2015-10-27 21:04:21.000000000 +0000 +++ cairo-1.15.10/src/cairo-error-private.h 2017-12-07 02:14:36.000000000 +0000 @@ -94,6 +94,10 @@ CAIRO_INT_STATUS_INVALID_MESH_CONSTRUCTION, CAIRO_INT_STATUS_DEVICE_FINISHED, CAIRO_INT_STATUS_JBIG2_GLOBAL_MISSING, + CAIRO_INT_STATUS_PNG_ERROR, + CAIRO_INT_STATUS_FREETYPE_ERROR, + CAIRO_INT_STATUS_WIN32_GDI_ERROR, + CAIRO_INT_STATUS_TAG_ERROR, CAIRO_INT_STATUS_LAST_STATUS, diff -Nru cairo-1.14.6/src/cairo-fixed-private.h cairo-1.15.10/src/cairo-fixed-private.h --- cairo-1.14.6/src/cairo-fixed-private.h 2015-10-27 21:04:21.000000000 +0000 +++ cairo-1.15.10/src/cairo-fixed-private.h 2017-12-07 02:13:45.000000000 +0000 @@ -223,7 +223,7 @@ if (f > 0) return ((f - 1)>>CAIRO_FIXED_FRAC_BITS) + 1; else - return - (-f >> CAIRO_FIXED_FRAC_BITS); + return - ((cairo_fixed_t)(-(cairo_fixed_unsigned_t)f) >> CAIRO_FIXED_FRAC_BITS); } /* A bunch of explicit 16.16 operators; we need these diff -Nru cairo-1.14.6/src/cairo-font-face.c cairo-1.15.10/src/cairo-font-face.c --- cairo-1.14.6/src/cairo-font-face.c 2015-10-27 21:04:21.000000000 +0000 +++ cairo-1.15.10/src/cairo-font-face.c 2017-12-07 02:14:36.000000000 +0000 @@ -111,8 +111,8 @@ * @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(). + * Use cairo_font_face_get_reference_count() to get the number of + * references to a #cairo_font_face_t. * * Return value: the referenced #cairo_font_face_t. * diff -Nru cairo-1.14.6/src/cairo-freed-pool.c cairo-1.15.10/src/cairo-freed-pool.c --- cairo-1.14.6/src/cairo-freed-pool.c 2015-10-27 21:04:21.000000000 +0000 +++ cairo-1.15.10/src/cairo-freed-pool.c 2017-12-07 02:14:36.000000000 +0000 @@ -50,13 +50,13 @@ for (i = ARRAY_LENGTH (pool->pool); i--;) { ptr = _atomic_fetch (&pool->pool[i]); if (ptr != NULL) { - pool->top = i; + _cairo_atomic_int_set_relaxed (&pool->top, i); return ptr; } } /* empty */ - pool->top = 0; + _cairo_atomic_int_set_relaxed (&pool->top, 0); return NULL; } @@ -67,13 +67,13 @@ for (i = 0; i < ARRAY_LENGTH (pool->pool); i++) { if (_atomic_store (&pool->pool[i], ptr)) { - pool->top = i + 1; + _cairo_atomic_int_set_relaxed (&pool->top, i + 1); return; } } /* full */ - pool->top = i; + _cairo_atomic_int_set_relaxed (&pool->top, i); free (ptr); } @@ -87,7 +87,7 @@ pool->pool[i] = NULL; } - pool->top = 0; + _cairo_atomic_int_set_relaxed (&pool->top, 0); } #endif diff -Nru cairo-1.14.6/src/cairo-freed-pool-private.h cairo-1.15.10/src/cairo-freed-pool-private.h --- cairo-1.14.6/src/cairo-freed-pool-private.h 2015-10-27 21:04:21.000000000 +0000 +++ cairo-1.15.10/src/cairo-freed-pool-private.h 2017-12-07 02:14:36.000000000 +0000 @@ -51,7 +51,7 @@ #define MAX_FREED_POOL_SIZE 16 typedef struct { void *pool[MAX_FREED_POOL_SIZE]; - int top; + cairo_atomic_int_t top; } freed_pool_t; static cairo_always_inline void * @@ -81,13 +81,13 @@ void *ptr; int i; - i = pool->top - 1; + i = _cairo_atomic_int_get_relaxed (&pool->top) - 1; if (i < 0) i = 0; ptr = _atomic_fetch (&pool->pool[i]); if (likely (ptr != NULL)) { - pool->top = i; + _cairo_atomic_int_set_relaxed (&pool->top, i); return ptr; } @@ -103,11 +103,11 @@ { int i; - i = pool->top; + i = _cairo_atomic_int_get_relaxed (&pool->top); if (likely (i < ARRAY_LENGTH (pool->pool) && _atomic_store (&pool->pool[i], ptr))) { - pool->top = i + 1; + _cairo_atomic_int_set_relaxed (&pool->top, i + 1); return; } diff -Nru cairo-1.14.6/src/cairo-freelist.c cairo-1.15.10/src/cairo-freelist.c --- cairo-1.14.6/src/cairo-freelist.c 2015-10-27 21:04:30.000000000 +0000 +++ cairo-1.15.10/src/cairo-freelist.c 2017-12-07 02:14:36.000000000 +0000 @@ -80,7 +80,7 @@ if (node) { node->next = freelist->first_free_node; freelist->first_free_node = node; - VG (VALGRIND_MAKE_MEM_NOACCESS (node, freelist->nodesize)); + VG (VALGRIND_MAKE_MEM_UNDEFINED (node, freelist->nodesize)); } } @@ -97,7 +97,7 @@ freepool->embedded_pool.rem = sizeof (freepool->embedded_data); freepool->embedded_pool.data = freepool->embedded_data; - VG (VALGRIND_MAKE_MEM_NOACCESS (freepool->embedded_data, sizeof (freepool->embedded_data))); + VG (VALGRIND_MAKE_MEM_UNDEFINED (freepool->embedded_data, sizeof (freepool->embedded_data))); } void @@ -119,7 +119,7 @@ pool = next; } - VG (VALGRIND_MAKE_MEM_NOACCESS (freepool, sizeof (freepool))); + VG (VALGRIND_MAKE_MEM_UNDEFINED (freepool, sizeof (freepool))); } void * @@ -152,7 +152,7 @@ pool->rem = poolsize - freepool->nodesize; pool->data = (uint8_t *) (pool + 1) + freepool->nodesize; - VG (VALGRIND_MAKE_MEM_NOACCESS (pool->data, pool->rem)); + VG (VALGRIND_MAKE_MEM_UNDEFINED (pool->data, pool->rem)); return pool + 1; } diff -Nru cairo-1.14.6/src/cairo-freelist-private.h cairo-1.15.10/src/cairo-freelist-private.h --- cairo-1.14.6/src/cairo-freelist-private.h 2015-10-27 21:04:30.000000000 +0000 +++ cairo-1.15.10/src/cairo-freelist-private.h 2017-12-07 02:14:36.000000000 +0000 @@ -133,7 +133,7 @@ node->next = freepool->first_free_node; freepool->first_free_node = node; - VG (VALGRIND_MAKE_MEM_NOACCESS (node, freepool->nodesize)); + VG (VALGRIND_MAKE_MEM_UNDEFINED (node, freepool->nodesize)); } #endif /* CAIRO_FREELIST_H */ diff -Nru cairo-1.14.6/src/cairo-ft-font.c cairo-1.15.10/src/cairo-ft-font.c --- cairo-1.14.6/src/cairo-ft-font.c 2015-10-27 21:04:21.000000000 +0000 +++ cairo-1.15.10/src/cairo-ft-font.c 2017-12-07 02:14:36.000000000 +0000 @@ -38,7 +38,7 @@ * Carl Worth */ -#define _BSD_SOURCE /* for strdup() */ +#define _DEFAULT_SOURCE /* for strdup() */ #include "cairoint.h" #include "cairo-error-private.h" @@ -58,6 +58,7 @@ #include FT_BITMAP_H #include FT_TRUETYPE_TABLES_H #include FT_XFREE86_H +#include FT_MULTIPLE_MASTERS_H #if HAVE_FT_GLYPHSLOT_EMBOLDEN #include FT_SYNTHESIS_H #endif @@ -168,6 +169,9 @@ cairo_matrix_t current_shape; FT_Matrix Current_Shape; + unsigned int have_color_set : 1; + unsigned int have_color : 1; /* true if the font contains color glyphs */ + cairo_mutex_t mutex; int lock_count; @@ -223,7 +227,10 @@ * Populate as needed. */ switch (error) { - default: return CAIRO_STATUS_NO_MEMORY; + case FT_Err_Out_Of_Memory: + return CAIRO_STATUS_NO_MEMORY; + default: + return CAIRO_STATUS_FREETYPE_ERROR; } } @@ -422,6 +429,9 @@ if (from_face) { unscaled->from_face = TRUE; _cairo_ft_unscaled_font_init_key (unscaled, TRUE, NULL, 0, face); + + unscaled->have_color = FT_HAS_COLOR (face) != 0; + unscaled->have_color_set = TRUE; } else { char *filename_copy; @@ -433,6 +443,8 @@ return _cairo_error (CAIRO_STATUS_NO_MEMORY); _cairo_ft_unscaled_font_init_key (unscaled, FALSE, filename_copy, id, NULL); + + unscaled->have_color_set = FALSE; } unscaled->have_scale = FALSE; @@ -700,6 +712,9 @@ unscaled->face = face; + unscaled->have_color = FT_HAS_COLOR (face) != 0; + unscaled->have_color_set = TRUE; + font_map->num_open_faces++; return face; @@ -1240,6 +1255,15 @@ memcpy (data, bitmap->buffer, stride * height); } + + if (!_cairo_is_little_endian ()) + { + /* Byteswap. */ + unsigned int i, count = height * width; + uint32_t *p = (uint32_t *) data; + for (i = 0; i < count; i++) + p[i] = be32_to_cpu (p[i]); + } format = CAIRO_FORMAT_ARGB32; break; #endif @@ -1423,6 +1447,7 @@ (*surface) = (cairo_image_surface_t *) cairo_image_surface_create_for_data (NULL, format, 0, 0, 0); + pixman_image_set_component_alpha ((*surface)->pixman_image, TRUE); if ((*surface)->base.status) return (*surface)->base.status; } else { @@ -1647,6 +1672,10 @@ old_image = (*surface); (*surface) = (cairo_image_surface_t *)image; + + /* Note: we converted subpixel-rendered RGBA images to grayscale, + * so, no need to copy component alpha to new image. */ + cairo_surface_destroy (&old_image->base); cairo_surface_set_device_offset (&(*surface)->base, @@ -2206,6 +2235,55 @@ } static cairo_int_status_t +_cairo_ft_scaled_glyph_load_glyph (cairo_ft_scaled_font_t *scaled_font, + cairo_scaled_glyph_t *scaled_glyph, + FT_Face face, + int load_flags, + cairo_bool_t use_em_size, + cairo_bool_t vertical_layout) +{ + FT_Error error; + cairo_status_t status; + + if (use_em_size) { + cairo_matrix_t em_size; + cairo_matrix_init_scale (&em_size, face->units_per_EM, face->units_per_EM); + status = _cairo_ft_unscaled_font_set_scale (scaled_font->unscaled, &em_size); + } else { + status = _cairo_ft_unscaled_font_set_scale (scaled_font->unscaled, + &scaled_font->base.scale); + } + if (unlikely (status)) + return status; + + error = FT_Load_Glyph (face, + _cairo_scaled_glyph_index(scaled_glyph), + load_flags); + /* XXX ignoring all other errors for now. They are not fatal, typically + * just a glyph-not-found. */ + if (error == FT_Err_Out_Of_Memory) + return _cairo_error (CAIRO_STATUS_NO_MEMORY); + + /* + * synthesize glyphs if requested + */ +#if HAVE_FT_GLYPHSLOT_EMBOLDEN + if (scaled_font->ft_options.synth_flags & CAIRO_FT_SYNTHESIZE_BOLD) + FT_GlyphSlot_Embolden (face->glyph); +#endif + +#if HAVE_FT_GLYPHSLOT_OBLIQUE + if (scaled_font->ft_options.synth_flags & CAIRO_FT_SYNTHESIZE_OBLIQUE) + FT_GlyphSlot_Oblique (face->glyph); +#endif + + if (vertical_layout) + _cairo_ft_scaled_glyph_vertical_layout_bearing_fix (scaled_font, face->glyph); + + return CAIRO_STATUS_SUCCESS; +} + +static cairo_int_status_t _cairo_ft_scaled_glyph_init (void *abstract_font, cairo_scaled_glyph_t *scaled_glyph, cairo_scaled_glyph_info_t info) @@ -2215,28 +2293,25 @@ cairo_ft_unscaled_font_t *unscaled = scaled_font->unscaled; FT_GlyphSlot glyph; FT_Face face; - FT_Error error; int load_flags = scaled_font->ft_options.load_flags; FT_Glyph_Metrics *metrics; double x_factor, y_factor; cairo_bool_t vertical_layout = FALSE; - cairo_status_t status; + cairo_status_t status = CAIRO_STATUS_SUCCESS; + cairo_bool_t scaled_glyph_loaded = FALSE; face = _cairo_ft_unscaled_font_lock_face (unscaled); if (!face) return _cairo_error (CAIRO_STATUS_NO_MEMORY); - status = _cairo_ft_unscaled_font_set_scale (scaled_font->unscaled, - &scaled_font->base.scale); - if (unlikely (status)) - goto FAIL; - /* Ignore global advance unconditionally */ load_flags |= FT_LOAD_IGNORE_GLOBAL_ADVANCE_WIDTH; if ((info & CAIRO_SCALED_GLYPH_INFO_PATH) != 0 && - (info & CAIRO_SCALED_GLYPH_INFO_SURFACE) == 0) + (info & (CAIRO_SCALED_GLYPH_INFO_SURFACE | + CAIRO_SCALED_GLYPH_INFO_COLOR_SURFACE)) == 0) { load_flags |= FT_LOAD_NO_BITMAP; + } /* * Don't pass FT_LOAD_VERTICAL_LAYOUT to FT_Load_Glyph here as @@ -2248,50 +2323,26 @@ } #ifdef FT_LOAD_COLOR - /* Color-glyph support: - * - * This flags needs plumbing through fontconfig (does it?), and - * maybe we should cache color and grayscale bitmaps separately - * such that users of the font (ie. the surface) can choose which - * version to use based on target content type. - * - * Moreover, none of our backends and compositors currently support - * color glyphs. As such, this is currently disabled. - */ - /* load_flags |= FT_LOAD_COLOR; */ + load_flags |= FT_LOAD_COLOR; #endif - error = FT_Load_Glyph (face, - _cairo_scaled_glyph_index(scaled_glyph), - load_flags); - /* XXX ignoring all other errors for now. They are not fatal, typically - * just a glyph-not-found. */ - if (error == FT_Err_Out_Of_Memory) { - status = _cairo_error (CAIRO_STATUS_NO_MEMORY); - goto FAIL; - } - - glyph = face->glyph; - /* - * synthesize glyphs if requested - */ -#if HAVE_FT_GLYPHSLOT_EMBOLDEN - if (scaled_font->ft_options.synth_flags & CAIRO_FT_SYNTHESIZE_BOLD) - FT_GlyphSlot_Embolden (glyph); -#endif + if (info & CAIRO_SCALED_GLYPH_INFO_METRICS) { -#if HAVE_FT_GLYPHSLOT_OBLIQUE - if (scaled_font->ft_options.synth_flags & CAIRO_FT_SYNTHESIZE_OBLIQUE) - FT_GlyphSlot_Oblique (glyph); -#endif + cairo_bool_t hint_metrics = scaled_font->base.options.hint_metrics != CAIRO_HINT_METRICS_OFF; - if (vertical_layout) - _cairo_ft_scaled_glyph_vertical_layout_bearing_fix (scaled_font, glyph); + status = _cairo_ft_scaled_glyph_load_glyph (scaled_font, + scaled_glyph, + face, + load_flags, + !hint_metrics, + vertical_layout); + if (unlikely (status)) + goto FAIL; - if (info & CAIRO_SCALED_GLYPH_INFO_METRICS) { + glyph = face->glyph; + scaled_glyph_loaded = hint_metrics; - cairo_bool_t hint_metrics = scaled_font->base.options.hint_metrics != CAIRO_HINT_METRICS_OFF; /* * Compute font-space metrics */ @@ -2386,9 +2437,24 @@ &fs_metrics); } - if ((info & CAIRO_SCALED_GLYPH_INFO_SURFACE) != 0) { +LOAD: + if (info & (CAIRO_SCALED_GLYPH_INFO_SURFACE | CAIRO_SCALED_GLYPH_INFO_COLOR_SURFACE)) { cairo_image_surface_t *surface; + if (!scaled_glyph_loaded) { + status = _cairo_ft_scaled_glyph_load_glyph (scaled_font, + scaled_glyph, + face, + load_flags, + FALSE, + vertical_layout); + if (unlikely (status)) + goto FAIL; + + glyph = face->glyph; + scaled_glyph_loaded = TRUE; + } + if (glyph->format == FT_GLYPH_FORMAT_OUTLINE) { status = _render_glyph_outline (face, &scaled_font->ft_options.base, &surface); @@ -2400,17 +2466,38 @@ { status = _transform_glyph_bitmap (&unscaled->current_shape, &surface); - if (unlikely (status)) - cairo_surface_destroy (&surface->base); - } + if (unlikely (status)) + cairo_surface_destroy (&surface->base); + } } if (unlikely (status)) goto FAIL; - _cairo_scaled_glyph_set_surface (scaled_glyph, - &scaled_font->base, - surface); + if (pixman_image_get_format (surface->pixman_image) == PIXMAN_a8r8g8b8 && + !pixman_image_get_component_alpha (surface->pixman_image)) { + _cairo_scaled_glyph_set_color_surface (scaled_glyph, + &scaled_font->base, + surface); + } else { + _cairo_scaled_glyph_set_surface (scaled_glyph, + &scaled_font->base, + surface); + } + } + +#ifdef FT_LOAD_COLOR + if (((info & (CAIRO_SCALED_GLYPH_INFO_SURFACE | CAIRO_SCALED_GLYPH_INFO_COLOR_SURFACE)) != 0) && + ((scaled_glyph->has_info & CAIRO_SCALED_GLYPH_INFO_SURFACE) == 0)) { + /* + * A kludge -- load again, without color. + * No need to load the metrics again, though + */ + scaled_glyph_loaded = FALSE; + info &= ~CAIRO_SCALED_GLYPH_INFO_METRICS; + load_flags &= ~FT_LOAD_COLOR; + goto LOAD; } +#endif if (info & CAIRO_SCALED_GLYPH_INFO_PATH) { cairo_path_fixed_t *path = NULL; /* hide compiler warning */ @@ -2419,28 +2506,24 @@ * A kludge -- the above code will trash the outline, * so reload it. This will probably never occur though */ - if ((info & CAIRO_SCALED_GLYPH_INFO_SURFACE) != 0) { - error = FT_Load_Glyph (face, - _cairo_scaled_glyph_index(scaled_glyph), - load_flags | FT_LOAD_NO_BITMAP); - /* XXX ignoring all other errors for now. They are not fatal, typically - * just a glyph-not-found. */ - if (error == FT_Err_Out_Of_Memory) { - status = _cairo_error (CAIRO_STATUS_NO_MEMORY); + if ((info & (CAIRO_SCALED_GLYPH_INFO_SURFACE | CAIRO_SCALED_GLYPH_INFO_COLOR_SURFACE)) != 0) { + scaled_glyph_loaded = FALSE; + load_flags |= FT_LOAD_NO_BITMAP; + } + + if (!scaled_glyph_loaded) { + status = _cairo_ft_scaled_glyph_load_glyph (scaled_font, + scaled_glyph, + face, + load_flags, + FALSE, + vertical_layout); + if (unlikely (status)) goto FAIL; - } -#if HAVE_FT_GLYPHSLOT_EMBOLDEN - if (scaled_font->ft_options.synth_flags & CAIRO_FT_SYNTHESIZE_BOLD) - FT_GlyphSlot_Embolden (glyph); -#endif -#if HAVE_FT_GLYPHSLOT_OBLIQUE - if (scaled_font->ft_options.synth_flags & CAIRO_FT_SYNTHESIZE_OBLIQUE) - FT_GlyphSlot_Oblique (glyph); -#endif - if (vertical_layout) - _cairo_ft_scaled_glyph_vertical_layout_bearing_fix (scaled_font, glyph); + glyph = face->glyph; } + if (glyph->format == FT_GLYPH_FORMAT_OUTLINE) status = _decompose_glyph_outline (face, &scaled_font->ft_options.base, &path); @@ -2552,11 +2635,75 @@ return CAIRO_STATUS_SUCCESS; } -static cairo_bool_t -_cairo_ft_is_synthetic (void *abstract_font) +static cairo_int_status_t +_cairo_ft_is_synthetic (void *abstract_font, + cairo_bool_t *is_synthetic) { + cairo_int_status_t status = CAIRO_STATUS_SUCCESS; cairo_ft_scaled_font_t *scaled_font = abstract_font; - return scaled_font->ft_options.synth_flags != 0; + cairo_ft_unscaled_font_t *unscaled = scaled_font->unscaled; + FT_Face face; + FT_Error error; + + if (scaled_font->ft_options.synth_flags != 0) { + *is_synthetic = TRUE; + return status; + } + + *is_synthetic = FALSE; + face = _cairo_ft_unscaled_font_lock_face (unscaled); + if (!face) + return _cairo_error (CAIRO_STATUS_NO_MEMORY); + + if (face->face_flags & FT_FACE_FLAG_MULTIPLE_MASTERS) { + FT_MM_Var *mm_var = NULL; + FT_Fixed *coords = NULL; + int num_axis; + + /* If this is an MM or variable font we can't assume the current outlines + * are the same as the font tables */ + *is_synthetic = TRUE; + + error = FT_Get_MM_Var (face, &mm_var); + if (error) { + status = _cairo_error (_ft_to_cairo_error (error)); + goto cleanup; + } + + num_axis = mm_var->num_axis; + coords = _cairo_malloc_ab (num_axis, sizeof(FT_Fixed)); + if (!coords) { + status = _cairo_error (CAIRO_STATUS_NO_MEMORY); + goto cleanup; + } + +#if FREETYPE_MAJOR > 2 || ( FREETYPE_MAJOR == 2 && FREETYPE_MINOR >= 8) + /* If FT_Get_Var_Design_Coordinates() is available, we can check if the + * current design coordinates are the default coordinates. In this case + * the current outlines match the font tables. + */ + { + int i; + + FT_Get_Var_Design_Coordinates (face, num_axis, coords); + *is_synthetic = FALSE; + for (i = 0; i < num_axis; i++) { + if (coords[i] != mm_var->axis[i].def) { + *is_synthetic = TRUE; + break; + } + } + } +#endif + + cleanup: + free (coords); + free (mm_var); + } + + _cairo_ft_unscaled_font_unlock_face (unscaled); + + return status; } static cairo_int_status_t @@ -2698,6 +2845,20 @@ return status; } +static cairo_bool_t +_cairo_ft_has_color_glyphs (void *scaled) +{ + cairo_ft_unscaled_font_t *unscaled = ((cairo_ft_scaled_font_t *)scaled)->unscaled; + + if (!unscaled->have_color_set) { + FT_Face face; + face = _cairo_ft_unscaled_font_lock_face (unscaled); + _cairo_ft_unscaled_font_unlock_face (unscaled); + } + + return unscaled->have_color; +} + static const cairo_scaled_font_backend_t _cairo_ft_scaled_font_backend = { CAIRO_FONT_TYPE_FT, _cairo_ft_scaled_font_fini, @@ -2708,7 +2869,8 @@ _cairo_ft_index_to_ucs4, _cairo_ft_is_synthetic, _cairo_index_to_glyph_name, - _cairo_ft_load_type1_data + _cairo_ft_load_type1_data, + _cairo_ft_has_color_glyphs }; /* #cairo_ft_font_face_t */ diff -Nru cairo-1.14.6/src/cairo-gl-composite.c cairo-1.15.10/src/cairo-gl-composite.c --- cairo-1.14.6/src/cairo-gl-composite.c 2015-10-28 23:59:39.000000000 +0000 +++ cairo-1.15.10/src/cairo-gl-composite.c 2017-12-07 02:14:36.000000000 +0000 @@ -52,6 +52,93 @@ #include "cairo-error-private.h" #include "cairo-image-surface-private.h" +/* FIXME: Copy of same routine in cairo-gl-msaa-compositor.c */ +static cairo_int_status_t +_draw_int_rect (cairo_gl_context_t *ctx, + cairo_gl_composite_t *setup, + cairo_rectangle_int_t *rect) +{ + cairo_box_t box; + cairo_point_t quad[4]; + + _cairo_box_from_rectangle (&box, rect); + quad[0].x = box.p1.x; + quad[0].y = box.p1.y; + quad[1].x = box.p1.x; + quad[1].y = box.p2.y; + quad[2].x = box.p2.x; + quad[2].y = box.p2.y; + quad[3].x = box.p2.x; + quad[3].y = box.p1.y; + + return _cairo_gl_composite_emit_quad_as_tristrip (ctx, setup, quad); +} + +static cairo_int_status_t +_blit_texture_to_renderbuffer (cairo_gl_surface_t *surface) +{ + cairo_gl_context_t *ctx = NULL; + cairo_gl_composite_t setup; + cairo_surface_pattern_t pattern; + cairo_rectangle_int_t extents; + cairo_int_status_t status; + + /* FIXME: This only permits blit when glesv3 is enabled. But note that + glesv2 with the ANGLE extension should also be able to support this feature, + so once the ANGLE support code is in place this check can be relaxed. */ + if (((cairo_gl_context_t *)surface->base.device)->gl_flavor != CAIRO_GL_FLAVOR_ES3) + return CAIRO_INT_STATUS_SUCCESS; + + if (! surface->content_in_texture) + return CAIRO_INT_STATUS_SUCCESS; + + memset (&setup, 0, sizeof (cairo_gl_composite_t)); + + status = _cairo_gl_composite_set_operator (&setup, + CAIRO_OPERATOR_SOURCE, + FALSE); + + if (status) + return status; + + setup.dst = surface; + setup.clip_region = surface->clip_region; + + _cairo_pattern_init_for_surface (&pattern, &surface->base); + status = _cairo_gl_composite_set_source (&setup, &pattern.base, + NULL, NULL, FALSE); + _cairo_pattern_fini (&pattern.base); + + if (unlikely (status)) + goto FAIL; + + _cairo_gl_composite_set_multisample (&setup); + + status = _cairo_gl_composite_begin (&setup, &ctx); + + if (unlikely (status)) + goto FAIL; + + extents.x = extents.y = 0; + extents.width = surface->width; + extents.height = surface->height; + + status = _draw_int_rect (ctx, &setup, &extents); + + if (status == CAIRO_INT_STATUS_SUCCESS) + surface->content_in_texture = FALSE; + +FAIL: + _cairo_gl_composite_fini (&setup); + + if (ctx) { + _cairo_gl_composite_flush (ctx); + status = _cairo_gl_context_release (ctx, status); + } + + return status; +} + cairo_int_status_t _cairo_gl_composite_set_source (cairo_gl_composite_t *setup, const cairo_pattern_t *pattern, @@ -68,8 +155,13 @@ _cairo_gl_composite_set_source_operand (cairo_gl_composite_t *setup, const cairo_gl_operand_t *source) { + cairo_int_status_t status; + _cairo_gl_operand_destroy (&setup->src); _cairo_gl_operand_copy (&setup->src, source); + + if (source->type == CAIRO_GL_OPERAND_TEXTURE) + status = _cairo_gl_surface_resolve_multisampling (source->texture.surface); } void @@ -99,9 +191,13 @@ _cairo_gl_composite_set_mask_operand (cairo_gl_composite_t *setup, const cairo_gl_operand_t *mask) { + cairo_int_status_t status; _cairo_gl_operand_destroy (&setup->mask); - if (mask) + if (mask) { _cairo_gl_operand_copy (&setup->mask, mask); + if (mask->type == CAIRO_GL_OPERAND_TEXTURE) + status = _cairo_gl_surface_resolve_multisampling (mask->texture.surface); + } } void @@ -174,7 +270,8 @@ switch (extend) { case CAIRO_EXTEND_NONE: - if (ctx->gl_flavor == CAIRO_GL_FLAVOR_ES) + if (ctx->gl_flavor == CAIRO_GL_FLAVOR_ES3 || + ctx->gl_flavor == CAIRO_GL_FLAVOR_ES2) wrap_mode = GL_CLAMP_TO_EDGE; else wrap_mode = GL_CLAMP_TO_BORDER; @@ -1178,6 +1275,8 @@ { cairo_status_t status; + status = _blit_texture_to_renderbuffer (dst); + memset (setup, 0, sizeof (cairo_gl_composite_t)); status = _cairo_gl_composite_set_operator (setup, op, diff -Nru cairo-1.14.6/src/cairo-gl-device.c cairo-1.15.10/src/cairo-gl-device.c --- cairo-1.14.6/src/cairo-gl-device.c 2015-10-27 21:04:21.000000000 +0000 +++ cairo-1.15.10/src/cairo-gl-device.c 2017-12-07 02:14:36.000000000 +0000 @@ -171,7 +171,8 @@ if (gl_flavor == CAIRO_GL_FLAVOR_DESKTOP) return TRUE; - assert (gl_flavor == CAIRO_GL_FLAVOR_ES); + assert (gl_flavor == CAIRO_GL_FLAVOR_ES3 || + gl_flavor == CAIRO_GL_FLAVOR_ES2); /* For OpenGL ES we have to look for the specific extension and BGRA only * matches cairo's integer packed bytes on little-endian machines. */ @@ -190,7 +191,8 @@ int n; cairo_bool_t is_desktop = gl_flavor == CAIRO_GL_FLAVOR_DESKTOP; - cairo_bool_t is_gles = gl_flavor == CAIRO_GL_FLAVOR_ES; + cairo_bool_t is_gles = (gl_flavor == CAIRO_GL_FLAVOR_ES3 || + gl_flavor == CAIRO_GL_FLAVOR_ES2); _cairo_device_init (&ctx->base, &_cairo_gl_device_backend); @@ -263,25 +265,31 @@ } #endif -#if CAIRO_HAS_GLESV2_SURFACE && defined(GL_MAX_SAMPLES_EXT) +#if CAIRO_HAS_GLESV3_SURFACE + if (is_gles && ctx->has_packed_depth_stencil) { + glGetIntegerv(GL_MAX_SAMPLES, &ctx->num_samples); + } + +#elif CAIRO_HAS_GLESV2_SURFACE && defined(GL_MAX_SAMPLES_EXT) if (is_gles && ctx->has_packed_depth_stencil && _cairo_gl_has_extension ("GL_EXT_multisampled_render_to_texture")) { glGetIntegerv(GL_MAX_SAMPLES_EXT, &ctx->num_samples); } -#endif -#if CAIRO_HAS_GLESV2_SURFACE && defined(GL_MAX_SAMPLES_IMG) if (is_gles && ctx->has_packed_depth_stencil && _cairo_gl_has_extension ("GL_IMG_multisampled_render_to_texture")) { glGetIntegerv(GL_MAX_SAMPLES_IMG, &ctx->num_samples); } #endif - ctx->supports_msaa = ctx->num_samples > 1; + /* we always use renderbuffer for rendering in glesv3 */ + if (ctx->gl_flavor == CAIRO_GL_FLAVOR_ES3) + ctx->supports_msaa = TRUE; + else + ctx->supports_msaa = ctx->num_samples > 1; if (ctx->num_samples > MAX_MSAA_SAMPLES) ctx->num_samples = MAX_MSAA_SAMPLES; - ctx->current_operator = -1; ctx->gl_flavor = gl_flavor; @@ -349,13 +357,15 @@ return GL_DEPTH_STENCIL; #endif -#if CAIRO_HAS_GLESV2_SURFACE +#if CAIRO_HAS_GLESV2_SURFACE && !CAIRO_HAS_GLESV3_SURFACE if (ctx->gl_flavor == CAIRO_GL_FLAVOR_DESKTOP) return GL_DEPTH24_STENCIL8_OES; #endif #if CAIRO_HAS_GL_SURFACE return GL_DEPTH_STENCIL; +#elif CAIRO_HAS_GLESV3_SURFACE + return GL_DEPTH24_STENCIL8; #elif CAIRO_HAS_GLESV2_SURFACE return GL_DEPTH24_STENCIL8_OES; #endif @@ -381,7 +391,7 @@ } #endif -static void +void _cairo_gl_ensure_framebuffer (cairo_gl_context_t *ctx, cairo_gl_surface_t *surface) { @@ -402,7 +412,7 @@ does not require an explicit multisample resolution. */ #if CAIRO_HAS_GLESV2_SURFACE if (surface->supports_msaa && _cairo_gl_msaa_compositor_enabled () && - ctx->gl_flavor == CAIRO_GL_FLAVOR_ES) { + ctx->gl_flavor == CAIRO_GL_FLAVOR_ES2) { _cairo_gl_ensure_msaa_gles_framebuffer (ctx, surface); } else #endif @@ -436,13 +446,14 @@ str, status); } } -#if CAIRO_HAS_GL_SURFACE +#if CAIRO_HAS_GL_SURFACE || CAIRO_HAS_GLESV3_SURFACE static void _cairo_gl_ensure_multisampling (cairo_gl_context_t *ctx, cairo_gl_surface_t *surface) { assert (surface->supports_msaa); - assert (ctx->gl_flavor == CAIRO_GL_FLAVOR_DESKTOP); + assert (ctx->gl_flavor == CAIRO_GL_FLAVOR_DESKTOP || + ctx->gl_flavor == CAIRO_GL_FLAVOR_ES3); if (surface->msaa_fb) return; @@ -460,7 +471,11 @@ this information. */ ctx->dispatch.RenderbufferStorageMultisample (GL_RENDERBUFFER, ctx->num_samples, +#if CAIRO_HAS_GLESV3_SURFACE + GL_RGBA8, +#else GL_RGBA, +#endif surface->width, surface->height); ctx->dispatch.FramebufferRenderbuffer (GL_FRAMEBUFFER, @@ -472,6 +487,11 @@ glDisable (GL_SCISSOR_TEST); glClearColor (0, 0, 0, 0); glClear (GL_COLOR_BUFFER_BIT); + + /* for glesv3 with multisample renderbuffer, we always render to + this renderbuffer */ + if (ctx->gl_flavor == CAIRO_GL_FLAVOR_ES3) + surface->msaa_active = TRUE; } #endif @@ -484,8 +504,9 @@ return TRUE; _cairo_gl_ensure_framebuffer (ctx, surface); -#if CAIRO_HAS_GL_SURFACE - if (ctx->gl_flavor == CAIRO_GL_FLAVOR_DESKTOP) +#if CAIRO_HAS_GL_SURFACE || CAIRO_HAS_GLESV3_SURFACE + if (ctx->gl_flavor == CAIRO_GL_FLAVOR_DESKTOP || + ctx->gl_flavor == CAIRO_GL_FLAVOR_ES3) _cairo_gl_ensure_multisampling (ctx, surface); #endif @@ -499,8 +520,9 @@ surface->width, surface->height); -#if CAIRO_HAS_GL_SURFACE - if (ctx->gl_flavor == CAIRO_GL_FLAVOR_DESKTOP) { +#if CAIRO_HAS_GL_SURFACE || CAIRO_HAS_GLESV3_SURFACE + if (ctx->gl_flavor == CAIRO_GL_FLAVOR_DESKTOP || + ctx->gl_flavor == CAIRO_GL_FLAVOR_ES3) { dispatch->FramebufferRenderbuffer (GL_FRAMEBUFFER, GL_DEPTH_STENCIL_ATTACHMENT, GL_RENDERBUFFER, @@ -509,7 +531,7 @@ #endif #if CAIRO_HAS_GLESV2_SURFACE - if (ctx->gl_flavor == CAIRO_GL_FLAVOR_ES) { + if (ctx->gl_flavor == CAIRO_GL_FLAVOR_ES2) { dispatch->FramebufferRenderbuffer (GL_FRAMEBUFFER, GL_DEPTH_ATTACHMENT, GL_RENDERBUFFER, @@ -615,7 +637,7 @@ #undef M } -#if CAIRO_HAS_GL_SURFACE +#if CAIRO_HAS_GL_SURFACE || CAIRO_HAS_GLESV3_SURFACE static void bind_multisample_framebuffer (cairo_gl_context_t *ctx, cairo_gl_surface_t *surface) @@ -624,14 +646,19 @@ cairo_bool_t scissor_test_enabled; assert (surface->supports_msaa); - assert (ctx->gl_flavor == CAIRO_GL_FLAVOR_DESKTOP); + assert (ctx->gl_flavor == CAIRO_GL_FLAVOR_DESKTOP || + ctx->gl_flavor == CAIRO_GL_FLAVOR_ES3); _cairo_gl_ensure_framebuffer (ctx, surface); _cairo_gl_ensure_multisampling (ctx, surface); if (surface->msaa_active) { +#if CAIRO_HAS_GL_SURFACE glEnable (GL_MULTISAMPLE); +#endif ctx->dispatch.BindFramebuffer (GL_FRAMEBUFFER, surface->msaa_fb); + if (ctx->gl_flavor == CAIRO_GL_FLAVOR_ES3) + surface->content_in_texture = FALSE; return; } @@ -642,7 +669,9 @@ glDisable (GL_STENCIL_TEST); glDisable (GL_SCISSOR_TEST); +#if CAIRO_HAS_GL_SURFACE glEnable (GL_MULTISAMPLE); +#endif /* The last time we drew to the surface, we were not using multisampling, so we need to blit from the non-multisampling framebuffer into the @@ -651,17 +680,24 @@ ctx->dispatch.BindFramebuffer (GL_READ_FRAMEBUFFER, surface->fb); ctx->dispatch.BlitFramebuffer (0, 0, surface->width, surface->height, 0, 0, surface->width, surface->height, - GL_COLOR_BUFFER_BIT, GL_NEAREST); + GL_COLOR_BUFFER_BIT +#if CAIRO_HAS_GL_SURFACE + | GL_STENCIL_BUFFER_BIT +#endif + , + GL_NEAREST); ctx->dispatch.BindFramebuffer (GL_FRAMEBUFFER, surface->msaa_fb); if (stencil_test_enabled) glEnable (GL_STENCIL_TEST); if (scissor_test_enabled) glEnable (GL_SCISSOR_TEST); + if (ctx->gl_flavor == CAIRO_GL_FLAVOR_ES3) + surface->content_in_texture = FALSE; } #endif -#if CAIRO_HAS_GL_SURFACE +#if CAIRO_HAS_GL_SURFACE || CAIRO_HAS_GLESV3_SURFACE static void bind_singlesample_framebuffer (cairo_gl_context_t *ctx, cairo_gl_surface_t *surface) @@ -669,11 +705,15 @@ cairo_bool_t stencil_test_enabled; cairo_bool_t scissor_test_enabled; - assert (ctx->gl_flavor == CAIRO_GL_FLAVOR_DESKTOP); + assert (ctx->gl_flavor == CAIRO_GL_FLAVOR_DESKTOP || + ctx->gl_flavor == CAIRO_GL_FLAVOR_ES3); _cairo_gl_ensure_framebuffer (ctx, surface); if (! surface->msaa_active) { +#if CAIRO_HAS_GL_SURFACE glDisable (GL_MULTISAMPLE); +#endif + ctx->dispatch.BindFramebuffer (GL_FRAMEBUFFER, surface->fb); return; } @@ -685,7 +725,9 @@ glDisable (GL_STENCIL_TEST); glDisable (GL_SCISSOR_TEST); +#if CAIRO_HAS_GL_SURFACE glDisable (GL_MULTISAMPLE); +#endif /* The last time we drew to the surface, we were using multisampling, so we need to blit from the multisampling framebuffer into the @@ -712,13 +754,13 @@ if (_cairo_gl_surface_is_texture (surface)) { /* OpenGL ES surfaces only have either a multisample framebuffer or a * singlesample framebuffer, so we cannot switch back and forth. */ - if (ctx->gl_flavor == CAIRO_GL_FLAVOR_ES) { + if (ctx->gl_flavor == CAIRO_GL_FLAVOR_ES2) { _cairo_gl_ensure_framebuffer (ctx, surface); ctx->dispatch.BindFramebuffer (GL_FRAMEBUFFER, surface->fb); return; } -#if CAIRO_HAS_GL_SURFACE +#if CAIRO_HAS_GL_SURFACE || CAIRO_HAS_GLESV3_SURFACE if (multisampling) bind_multisample_framebuffer (ctx, surface); else @@ -737,7 +779,8 @@ #endif } - surface->msaa_active = multisampling; + if (ctx->gl_flavor == CAIRO_GL_FLAVOR_DESKTOP) + surface->msaa_active = multisampling; } void @@ -749,11 +792,15 @@ /* The decision whether or not to use multisampling happens when * we create an OpenGL ES surface, so we can never switch modes. */ - if (ctx->gl_flavor == CAIRO_GL_FLAVOR_ES) + if (ctx->gl_flavor == CAIRO_GL_FLAVOR_ES2) multisampling = surface->msaa_active; + /* For GLESV3, we always use renderbuffer for drawing */ + else if (ctx->gl_flavor == CAIRO_GL_FLAVOR_ES3) + multisampling = TRUE; changing_surface = ctx->current_target != surface || surface->needs_update; - changing_sampling = surface->msaa_active != multisampling; + changing_sampling = (surface->msaa_active != multisampling || + surface->content_in_texture); if (! changing_surface && ! changing_sampling) return; diff -Nru cairo-1.14.6/src/cairo-gl-dispatch.c cairo-1.15.10/src/cairo-gl-dispatch.c --- cairo-1.14.6/src/cairo-gl-dispatch.c 2015-10-27 21:04:21.000000000 +0000 +++ cairo-1.15.10/src/cairo-gl-dispatch.c 2017-12-07 02:14:36.000000000 +0000 @@ -124,7 +124,11 @@ else return CAIRO_STATUS_DEVICE_ERROR; } - else if (gl_flavor == CAIRO_GL_FLAVOR_ES && + else if (gl_flavor == CAIRO_GL_FLAVOR_ES3) + { + dispatch_name = CAIRO_GL_DISPATCH_NAME_CORE; + } + else if (gl_flavor == CAIRO_GL_FLAVOR_ES2 && gl_version >= CAIRO_GL_VERSION_ENCODE (2, 0)) { dispatch_name = CAIRO_GL_DISPATCH_NAME_ES; @@ -156,7 +160,11 @@ else return CAIRO_STATUS_DEVICE_ERROR; } - else if (gl_flavor == CAIRO_GL_FLAVOR_ES && + else if (gl_flavor == CAIRO_GL_FLAVOR_ES3) + { + dispatch_name = CAIRO_GL_DISPATCH_NAME_CORE; + } + else if (gl_flavor == CAIRO_GL_FLAVOR_ES2 && gl_version >= CAIRO_GL_VERSION_ENCODE (2, 0)) { dispatch_name = CAIRO_GL_DISPATCH_NAME_ES; @@ -189,7 +197,11 @@ else return CAIRO_STATUS_DEVICE_ERROR; } - else if (gl_flavor == CAIRO_GL_FLAVOR_ES && + else if (gl_flavor == CAIRO_GL_FLAVOR_ES3) + { + dispatch_name = CAIRO_GL_DISPATCH_NAME_CORE; + } + else if (gl_flavor == CAIRO_GL_FLAVOR_ES2 && gl_version >= CAIRO_GL_VERSION_ENCODE (2, 0)) { dispatch_name = CAIRO_GL_DISPATCH_NAME_ES; @@ -214,7 +226,7 @@ /* For the multisampling table, there are two GLES versions of the * extension, so we put one in the EXT slot and one in the real ES slot.*/ cairo_gl_dispatch_name_t dispatch_name = CAIRO_GL_DISPATCH_NAME_CORE; - if (gl_flavor == CAIRO_GL_FLAVOR_ES) { + if (gl_flavor == CAIRO_GL_FLAVOR_ES2) { if (_cairo_gl_has_extension ("GL_EXT_multisampled_render_to_texture")) dispatch_name = CAIRO_GL_DISPATCH_NAME_EXT; else if (_cairo_gl_has_extension ("GL_IMG_multisampled_render_to_texture")) diff -Nru cairo-1.14.6/src/cairo-gl-gradient.c cairo-1.15.10/src/cairo-gl-gradient.c --- cairo-1.14.6/src/cairo-gl-gradient.c 2015-10-27 21:04:21.000000000 +0000 +++ cairo-1.15.10/src/cairo-gl-gradient.c 2017-12-07 02:14:36.000000000 +0000 @@ -282,7 +282,8 @@ * In OpenGL ES 2.0 no format conversion is allowed i.e. 'internalFormat' * must match 'format' in glTexImage2D. */ - if (_cairo_gl_get_flavor () == CAIRO_GL_FLAVOR_ES) + if (_cairo_gl_get_flavor () == CAIRO_GL_FLAVOR_ES3 || + _cairo_gl_get_flavor () == CAIRO_GL_FLAVOR_ES2) internal_format = GL_BGRA; else internal_format = GL_RGBA; diff -Nru cairo-1.14.6/src/cairo-gl-gradient-private.h cairo-1.15.10/src/cairo-gl-gradient-private.h --- cairo-1.14.6/src/cairo-gl-gradient-private.h 2015-10-27 21:04:22.000000000 +0000 +++ cairo-1.15.10/src/cairo-gl-gradient-private.h 2017-12-07 02:14:36.000000000 +0000 @@ -51,12 +51,15 @@ #include "cairo-gl.h" -#if CAIRO_HAS_GL_SURFACE -#include -#include +#if CAIRO_HAS_GLESV3_SURFACE +#include +#include #elif CAIRO_HAS_GLESV2_SURFACE #include #include +#elif CAIRO_HAS_GL_SURFACE +#include +#include #endif #define CAIRO_GL_GRADIENT_CACHE_SIZE 4096 diff -Nru cairo-1.14.6/src/cairo-gl.h cairo-1.15.10/src/cairo-gl.h --- cairo-1.14.6/src/cairo-gl.h 2015-10-27 21:04:21.000000000 +0000 +++ cairo-1.15.10/src/cairo-gl.h 2017-12-07 02:14:36.000000000 +0000 @@ -62,7 +62,7 @@ #include "cairo.h" -#if CAIRO_HAS_GL_SURFACE || CAIRO_HAS_GLESV2_SURFACE +#if CAIRO_HAS_GL_SURFACE || CAIRO_HAS_GLESV2_SURFACE || CAIRO_HAS_GLESV3_SURFACE CAIRO_BEGIN_DECLS diff -Nru cairo-1.14.6/src/cairo-gl-info.c cairo-1.15.10/src/cairo-gl-info.c --- cairo-1.14.6/src/cairo-gl-info.c 2015-10-27 21:04:21.000000000 +0000 +++ cairo-1.15.10/src/cairo-gl-info.c 2017-12-07 02:14:36.000000000 +0000 @@ -65,8 +65,10 @@ if (version == NULL) flavor = CAIRO_GL_FLAVOR_NONE; - else if (strstr (version, "OpenGL ES") != NULL) - flavor = CAIRO_GL_FLAVOR_ES; + else if (strstr (version, "OpenGL ES 3") != NULL) + flavor = CAIRO_GL_FLAVOR_ES3; + else if (strstr (version, "OpenGL ES 2") != NULL) + flavor = CAIRO_GL_FLAVOR_ES2; else flavor = CAIRO_GL_FLAVOR_DESKTOP; diff -Nru cairo-1.14.6/src/cairo-gl-msaa-compositor.c cairo-1.15.10/src/cairo-gl-msaa-compositor.c --- cairo-1.14.6/src/cairo-gl-msaa-compositor.c 2015-10-27 21:04:30.000000000 +0000 +++ cairo-1.15.10/src/cairo-gl-msaa-compositor.c 2017-12-07 02:14:36.000000000 +0000 @@ -273,6 +273,8 @@ can_use_msaa_compositor (cairo_gl_surface_t *surface, cairo_antialias_t antialias) { + cairo_gl_flavor_t gl_flavor = ((cairo_gl_context_t *) surface->base.device)->gl_flavor; + query_surface_capabilities (surface); if (! surface->supports_stencil) return FALSE; @@ -280,8 +282,10 @@ /* Multisampling OpenGL ES surfaces only maintain one multisampling framebuffer and thus must use the spans compositor to do non-antialiased rendering. */ - if (((cairo_gl_context_t *) surface->base.device)->gl_flavor == CAIRO_GL_FLAVOR_ES + if ((gl_flavor == CAIRO_GL_FLAVOR_ES3 || + gl_flavor == CAIRO_GL_FLAVOR_ES2) && surface->supports_msaa + && surface->num_samples > 1 && antialias == CAIRO_ANTIALIAS_NONE) return FALSE; @@ -378,6 +382,9 @@ FALSE); if (unlikely (status)) goto finish; + + _cairo_gl_context_set_destination (ctx, dst, setup.multisample); + status = _cairo_gl_set_operands_and_operator (&setup, ctx); if (unlikely (status)) goto finish; @@ -582,6 +589,7 @@ scissor_was_enabled = glIsEnabled (GL_SCISSOR_TEST); if (! scissor_was_enabled) { _cairo_path_fixed_approximate_stroke_extents (path, style, ctm, + FALSE, /* is_vector */ &stroke_extents); _cairo_gl_scissor_to_rectangle (setup->dst, &stroke_extents); } @@ -633,6 +641,7 @@ glGetIntegerv(GL_STENCIL_BITS, &stencil_bits); surface->supports_stencil = stencil_bits > 0; surface->supports_msaa = samples > 1; + surface->num_samples = samples; status = _cairo_gl_context_release (ctx, status); } @@ -935,10 +944,13 @@ const cairo_compositor_t * _cairo_gl_msaa_compositor_get (void) { + static cairo_atomic_once_t once = CAIRO_ATOMIC_ONCE_INIT; static cairo_compositor_t compositor; - if (compositor.delegate == NULL) + if (_cairo_atomic_init_once_enter(&once)) { _cairo_gl_msaa_compositor_init (&compositor, _cairo_gl_span_compositor_get ()); + _cairo_atomic_init_once_leave(&once); + } return &compositor; } diff -Nru cairo-1.14.6/src/cairo-gl-operand.c cairo-1.15.10/src/cairo-gl-operand.c --- cairo-1.14.6/src/cairo-gl-operand.c 2015-10-29 00:02:55.000000000 +0000 +++ cairo-1.15.10/src/cairo-gl-operand.c 2017-12-07 02:14:36.000000000 +0000 @@ -658,7 +658,8 @@ * with CAIRO_EXTEND_NONE). When bilinear filtering is enabled, * these shaders need the texture dimensions for their calculations. */ - if (ctx->gl_flavor == CAIRO_GL_FLAVOR_ES && + if ((ctx->gl_flavor == CAIRO_GL_FLAVOR_ES3 || + ctx->gl_flavor == CAIRO_GL_FLAVOR_ES2) && _cairo_gl_operand_get_extend (operand) == CAIRO_EXTEND_NONE && _cairo_gl_operand_get_gl_filter (operand) == GL_LINEAR) { diff -Nru cairo-1.14.6/src/cairo-gl-private.h cairo-1.15.10/src/cairo-gl-private.h --- cairo-1.14.6/src/cairo-gl-private.h 2015-10-27 21:04:21.000000000 +0000 +++ cairo-1.15.10/src/cairo-gl-private.h 2017-12-07 02:14:36.000000000 +0000 @@ -60,12 +60,15 @@ #include -#if CAIRO_HAS_GL_SURFACE -#include -#include +#if CAIRO_HAS_GLESV3_SURFACE +#include +#include #elif CAIRO_HAS_GLESV2_SURFACE #include #include +#elif CAIRO_HAS_GL_SURFACE +#include +#include #endif #include "cairo-gl-ext-def-private.h" @@ -99,14 +102,15 @@ typedef struct _cairo_gl_surface cairo_gl_surface_t; -/* GL flavor */ +/* GL flavor is the type of GL supported by the underlying platform. */ typedef enum cairo_gl_flavor { CAIRO_GL_FLAVOR_NONE = 0, CAIRO_GL_FLAVOR_DESKTOP = 1, - CAIRO_GL_FLAVOR_ES = 2 + CAIRO_GL_FLAVOR_ES2 = 2, + CAIRO_GL_FLAVOR_ES3 = 3 } cairo_gl_flavor_t; -/* Indices for vertex attributes used by BindAttribLocation etc */ +/* Indices for vertex attributes used by BindAttribLocation, etc. */ enum { CAIRO_GL_VERTEX_ATTRIB_INDEX = 0, CAIRO_GL_COLOR_ATTRIB_INDEX = 1, @@ -169,7 +173,7 @@ GLuint fb; /* GL framebuffer object wrapping our data. */ GLuint depth_stencil; /* GL renderbuffer object for holding stencil buffer clip. */ -#if CAIRO_HAS_GL_SURFACE +#if CAIRO_HAS_GL_SURFACE || CAIRO_HAS_GLESV3_SURFACE GLuint msaa_rb; /* The ARB MSAA path uses a renderbuffer. */ GLuint msaa_fb; #endif @@ -178,8 +182,12 @@ cairo_bool_t stencil_and_msaa_caps_initialized; cairo_bool_t supports_stencil; /* Stencil support for for non-texture surfaces. */ cairo_bool_t supports_msaa; + GLint num_samples; cairo_bool_t msaa_active; /* Whether the multisampling framebuffer is active or not. */ + cairo_bool_t content_in_texture; /* whether we just uploaded image + to texture, used for certain + gles2 extensions and glesv3 */ cairo_clip_t *clip_on_stencil_buffer; int owns_tex; @@ -801,6 +809,10 @@ cairo_composite_glyphs_info_t *info, cairo_clip_t *clip); +cairo_private void +_cairo_gl_ensure_framebuffer (cairo_gl_context_t *ctx, + cairo_gl_surface_t *surface); + cairo_private cairo_surface_t * _cairo_gl_surface_create_scratch (cairo_gl_context_t *ctx, cairo_content_t content, diff -Nru cairo-1.14.6/src/cairo-gl-shaders.c cairo-1.15.10/src/cairo-gl-shaders.c --- cairo-1.14.6/src/cairo-gl-shaders.c 2015-10-27 21:04:21.000000000 +0000 +++ cairo-1.15.10/src/cairo-gl-shaders.c 2017-12-07 02:14:36.000000000 +0000 @@ -398,7 +398,8 @@ "vec4 get_%s()\n" "{\n", rectstr, namestr, namestr, namestr, namestr); - if (ctx->gl_flavor == CAIRO_GL_FLAVOR_ES && + if ((ctx->gl_flavor == CAIRO_GL_FLAVOR_ES3 || + ctx->gl_flavor == CAIRO_GL_FLAVOR_ES2) && _cairo_gl_shader_needs_border_fade (op)) { _cairo_output_stream_printf (stream, @@ -425,7 +426,8 @@ "vec4 get_%s()\n" "{\n", namestr, namestr, rectstr, namestr, namestr); - if (ctx->gl_flavor == CAIRO_GL_FLAVOR_ES && + if ((ctx->gl_flavor == CAIRO_GL_FLAVOR_ES3 || + ctx->gl_flavor == CAIRO_GL_FLAVOR_ES2) && _cairo_gl_shader_needs_border_fade (op)) { _cairo_output_stream_printf (stream, @@ -462,7 +464,8 @@ " float is_valid = step (-%s_radius_0, t * %s_circle_d.z);\n", namestr, namestr, rectstr, namestr, namestr, namestr, namestr, namestr, namestr, namestr, namestr, namestr); - if (ctx->gl_flavor == CAIRO_GL_FLAVOR_ES && + if ((ctx->gl_flavor == CAIRO_GL_FLAVOR_ES3 || + ctx->gl_flavor == CAIRO_GL_FLAVOR_ES2) && _cairo_gl_shader_needs_border_fade (op)) { _cairo_output_stream_printf (stream, @@ -507,7 +510,8 @@ " float upper_t = mix (t.y, t.x, is_valid.x);\n", namestr, namestr, rectstr, namestr, namestr, namestr, namestr, namestr, namestr, namestr, namestr, namestr, namestr); - if (ctx->gl_flavor == CAIRO_GL_FLAVOR_ES && + if ((ctx->gl_flavor == CAIRO_GL_FLAVOR_ES3 || + ctx->gl_flavor == CAIRO_GL_FLAVOR_ES2) && _cairo_gl_shader_needs_border_fade (op)) { _cairo_output_stream_printf (stream, @@ -674,7 +678,8 @@ _cairo_gl_shader_emit_wrap (ctx, stream, src, CAIRO_GL_TEX_SOURCE); _cairo_gl_shader_emit_wrap (ctx, stream, mask, CAIRO_GL_TEX_MASK); - if (ctx->gl_flavor == CAIRO_GL_FLAVOR_ES) { + if (ctx->gl_flavor == CAIRO_GL_FLAVOR_ES3 || + ctx->gl_flavor == CAIRO_GL_FLAVOR_ES2) { if (_cairo_gl_shader_needs_border_fade (src)) _cairo_gl_shader_emit_border_fade (stream, src, CAIRO_GL_TEX_SOURCE); if (_cairo_gl_shader_needs_border_fade (mask)) diff -Nru cairo-1.14.6/src/cairo-gl-source.c cairo-1.15.10/src/cairo-gl-source.c --- cairo-1.14.6/src/cairo-gl-source.c 2015-10-27 21:04:30.000000000 +0000 +++ cairo-1.15.10/src/cairo-gl-source.c 2017-12-07 02:14:36.000000000 +0000 @@ -76,7 +76,8 @@ _cairo_surface_init (&source->base, &cairo_gl_source_backend, NULL, /* device */ - CAIRO_CONTENT_COLOR_ALPHA); + CAIRO_CONTENT_COLOR_ALPHA, + FALSE); /* is_vector */ *src_x = *src_y = 0; status = _cairo_gl_operand_init (&source->operand, pattern, @@ -103,7 +104,8 @@ _cairo_surface_init (&source->base, &cairo_gl_source_backend, NULL, /* device */ - CAIRO_CONTENT_COLOR_ALPHA); + CAIRO_CONTENT_COLOR_ALPHA, + FALSE); /* is_vector */ _cairo_gl_solid_operand_init (&source->operand, CAIRO_COLOR_WHITE); diff -Nru cairo-1.14.6/src/cairo-gl-spans-compositor.c cairo-1.15.10/src/cairo-gl-spans-compositor.c --- cairo-1.14.6/src/cairo-gl-spans-compositor.c 2015-10-27 21:04:21.000000000 +0000 +++ cairo-1.15.10/src/cairo-gl-spans-compositor.c 2017-12-07 02:14:36.000000000 +0000 @@ -528,10 +528,11 @@ const cairo_compositor_t * _cairo_gl_span_compositor_get (void) { + static cairo_atomic_once_t once = CAIRO_ATOMIC_ONCE_INIT; static cairo_spans_compositor_t spans; static cairo_compositor_t shape; - if (spans.base.delegate == NULL) { + if (_cairo_atomic_init_once_enter(&once)) { /* The fallback to traps here is essentially just for glyphs... */ _cairo_shape_mask_compositor_init (&shape, _cairo_gl_traps_compositor_get()); @@ -547,6 +548,8 @@ //spans.check_span_renderer = check_span_renderer; spans.renderer_init = _cairo_gl_span_renderer_init; spans.renderer_fini = _cairo_gl_span_renderer_fini; + + _cairo_atomic_init_once_leave(&once); } return &spans.base; diff -Nru cairo-1.14.6/src/cairo-gl-surface.c cairo-1.15.10/src/cairo-gl-surface.c --- cairo-1.14.6/src/cairo-gl-surface.c 2015-10-27 21:04:30.000000000 +0000 +++ cairo-1.15.10/src/cairo-gl-surface.c 2017-12-07 02:14:36.000000000 +0000 @@ -389,11 +389,13 @@ _cairo_surface_init (&surface->base, &_cairo_gl_surface_backend, device, - content); + content, + FALSE); /* is_vector */ surface->width = width; surface->height = height; surface->needs_update = FALSE; + surface->content_in_texture = FALSE; _cairo_gl_surface_embedded_operand_init (surface); } @@ -432,6 +434,7 @@ _cairo_gl_surface_init (&ctx->base, surface, content, width, height); surface->supports_msaa = ctx->supports_msaa; + surface->num_samples = ctx->num_samples; surface->supports_stencil = TRUE; /* Create the texture used to store the surface's data. */ @@ -867,12 +870,54 @@ cairo_image_surface_t *clone = NULL; cairo_gl_context_t *ctx; int cpp; + cairo_image_surface_t *rgba_clone = NULL; cairo_int_status_t status = CAIRO_INT_STATUS_SUCCESS; status = _cairo_gl_context_acquire (dst->base.device, &ctx); if (unlikely (status)) return status; + if (_cairo_gl_get_flavor () == CAIRO_GL_FLAVOR_ES3 || + _cairo_gl_get_flavor () == CAIRO_GL_FLAVOR_ES2) { + pixman_format_code_t pixman_format; + cairo_surface_pattern_t pattern; + cairo_bool_t require_conversion = FALSE; + pixman_format = _cairo_is_little_endian () ? PIXMAN_a8b8g8r8 : PIXMAN_r8g8b8a8; + + if (src->base.content != CAIRO_CONTENT_ALPHA) { + if (src->pixman_format != pixman_format) + require_conversion = TRUE; + } + else if (dst->base.content != CAIRO_CONTENT_ALPHA) { + require_conversion = TRUE; + } + else if (src->pixman_format != PIXMAN_a8) { + pixman_format = PIXMAN_a8; + require_conversion = TRUE; + } + + if (require_conversion) { + rgba_clone = (cairo_image_surface_t *) + _cairo_image_surface_create_with_pixman_format (NULL, + pixman_format, + src->width, + src->height, + 0); + if (unlikely (rgba_clone->base.status)) + goto FAIL; + + _cairo_pattern_init_for_surface (&pattern, &src->base); + status = _cairo_surface_paint (&rgba_clone->base, + CAIRO_OPERATOR_SOURCE, + &pattern.base, NULL); + _cairo_pattern_fini (&pattern.base); + if (unlikely (status)) + goto FAIL; + + src = rgba_clone; + } + } + if (! _cairo_gl_get_image_format_and_type (ctx->gl_flavor, src->pixman_format, &internal_format, @@ -921,7 +966,7 @@ * alignment constraint */ if (src->stride < 0 || - (ctx->gl_flavor == CAIRO_GL_FLAVOR_ES && + (ctx->gl_flavor == CAIRO_GL_FLAVOR_ES2 && (src->width * cpp < src->stride - 3 || width != src->width))) { @@ -937,10 +982,19 @@ else { glPixelStorei (GL_UNPACK_ALIGNMENT, 4); - if (ctx->gl_flavor == CAIRO_GL_FLAVOR_DESKTOP) + if (ctx->gl_flavor == CAIRO_GL_FLAVOR_DESKTOP || + ctx->gl_flavor == CAIRO_GL_FLAVOR_ES3) glPixelStorei (GL_UNPACK_ROW_LENGTH, src->stride / cpp); } + /* we must resolve the renderbuffer to texture before we + upload image */ + status = _cairo_gl_surface_resolve_multisampling (dst); + if (unlikely (status)) { + free (data_start_gles2); + goto FAIL; + } + _cairo_gl_context_activate (ctx, CAIRO_GL_TEX_TEMP); glBindTexture (ctx->tex_target, dst->tex); glTexParameteri (ctx->tex_target, GL_TEXTURE_MIN_FILTER, GL_NEAREST); @@ -960,6 +1014,8 @@ dst_x, dst_y, width, height); } + if (ctx->gl_flavor == CAIRO_GL_FLAVOR_ES3) + dst->content_in_texture = TRUE; } else { cairo_surface_t *tmp; @@ -999,6 +1055,8 @@ } cairo_surface_destroy (tmp); + if (ctx->gl_flavor == CAIRO_GL_FLAVOR_ES3) + dst->content_in_texture = TRUE; } FAIL: @@ -1007,6 +1065,9 @@ if (clone) cairo_surface_destroy (&clone->base); + if (rgba_clone) + cairo_surface_destroy (&rgba_clone->base); + return status; } @@ -1046,7 +1107,7 @@ if (surface->msaa_depth_stencil) ctx->dispatch.DeleteRenderbuffers (1, &surface->msaa_depth_stencil); -#if CAIRO_HAS_GL_SURFACE +#if CAIRO_HAS_GL_SURFACE || CAIRO_HAS_GLESV3_SURFACE if (surface->msaa_fb) ctx->dispatch.DeleteFramebuffers (1, &surface->msaa_fb); if (surface->msaa_rb) @@ -1098,7 +1159,8 @@ return NULL; } - if (_cairo_gl_surface_flavor (surface) == CAIRO_GL_FLAVOR_ES) { + if (_cairo_gl_surface_flavor (surface) == CAIRO_GL_FLAVOR_ES3 || + _cairo_gl_surface_flavor (surface) == CAIRO_GL_FLAVOR_ES2) { /* If only RGBA is supported, we must download data in a compatible * format. This means that pixman will convert the data on the CPU when * interacting with other image surfaces. For ALPHA, GLES2 does not @@ -1147,13 +1209,29 @@ * fall back instead. */ _cairo_gl_composite_flush (ctx); - _cairo_gl_context_set_destination (ctx, surface, FALSE); + + if (ctx->gl_flavor != CAIRO_GL_FLAVOR_ES3) { + _cairo_gl_context_set_destination (ctx, surface, FALSE); + } else { + if (surface->content_in_texture) { + _cairo_gl_ensure_framebuffer (ctx, surface); + ctx->dispatch.BindFramebuffer (GL_FRAMEBUFFER, surface->fb); + } else { + status = _cairo_gl_surface_resolve_multisampling (surface); + if (unlikely (status)) { + status = _cairo_gl_context_release (ctx, status); + cairo_surface_destroy (&image->base); + return _cairo_image_surface_create_in_error (status); + } + } + } flipped = ! _cairo_gl_surface_is_texture (surface); mesa_invert = flipped && ctx->has_mesa_pack_invert; glPixelStorei (GL_PACK_ALIGNMENT, 4); - if (ctx->gl_flavor == CAIRO_GL_FLAVOR_DESKTOP) + if (ctx->gl_flavor == CAIRO_GL_FLAVOR_DESKTOP || + ctx->gl_flavor == CAIRO_GL_FLAVOR_ES3) glPixelStorei (GL_PACK_ROW_LENGTH, image->stride / cpp); if (mesa_invert) glPixelStorei (GL_PACK_INVERT_MESA, 1); @@ -1318,7 +1396,10 @@ return CAIRO_INT_STATUS_SUCCESS; /* GLES surfaces do not need explicit resolution. */ - if (((cairo_gl_context_t *) surface->base.device)->gl_flavor == CAIRO_GL_FLAVOR_ES) + if (((cairo_gl_context_t *) surface->base.device)->gl_flavor == CAIRO_GL_FLAVOR_ES2) + return CAIRO_INT_STATUS_SUCCESS; + else if (((cairo_gl_context_t *) surface->base.device)->gl_flavor == CAIRO_GL_FLAVOR_ES3 && + surface->content_in_texture) return CAIRO_INT_STATUS_SUCCESS; if (! _cairo_gl_surface_is_texture (surface)) @@ -1328,10 +1409,20 @@ if (unlikely (status)) return status; - ctx->current_target = surface; +#if CAIRO_HAS_GLESV3_SURFACE + _cairo_gl_composite_flush (ctx); + ctx->current_target = NULL; + _cairo_gl_context_bind_framebuffer (ctx, surface, FALSE); + if (ctx->gl_flavor == CAIRO_GL_FLAVOR_ES3) + surface->content_in_texture = TRUE; -#if CAIRO_HAS_GL_SURFACE +#elif CAIRO_HAS_GL_SURFACE + ctx->current_target = surface; _cairo_gl_context_bind_framebuffer (ctx, surface, FALSE); + +#else + ctx->current_target = surface; + #endif status = _cairo_gl_context_release (ctx, status); diff -Nru cairo-1.14.6/src/cairo-gl-traps-compositor.c cairo-1.15.10/src/cairo-gl-traps-compositor.c --- cairo-1.14.6/src/cairo-gl-traps-compositor.c 2015-10-27 21:04:21.000000000 +0000 +++ cairo-1.15.10/src/cairo-gl-traps-compositor.c 2017-12-07 02:14:36.000000000 +0000 @@ -303,36 +303,6 @@ return image->status; } - /* GLES2 only supports RGB/RGBA when uploading */ - if (_cairo_gl_get_flavor () == CAIRO_GL_FLAVOR_ES) { - cairo_surface_pattern_t pattern; - cairo_surface_t *rgba_image; - - /* XXX perform this fixup inside _cairo_gl_draw_image() */ - - rgba_image = - _cairo_image_surface_create_with_pixman_format (NULL, - _cairo_is_little_endian () ? PIXMAN_a8b8g8r8 : PIXMAN_r8g8b8a8, - extents->width, - extents->height, - 0); - if (unlikely (rgba_image->status)) - return rgba_image->status; - - _cairo_pattern_init_for_surface (&pattern, image); - status = _cairo_surface_paint (rgba_image, CAIRO_OPERATOR_SOURCE, - &pattern.base, NULL); - _cairo_pattern_fini (&pattern.base); - - cairo_surface_destroy (image); - image = rgba_image; - - if (unlikely (status)) { - cairo_surface_destroy (image); - return status; - } - } - mask = _cairo_surface_create_scratch (_dst, CAIRO_CONTENT_COLOR_ALPHA, extents->width, @@ -530,9 +500,10 @@ const cairo_compositor_t * _cairo_gl_traps_compositor_get (void) { + static cairo_atomic_once_t once = CAIRO_ATOMIC_ONCE_INIT; static cairo_traps_compositor_t compositor; - if (compositor.base.delegate == NULL) { + if (_cairo_atomic_init_once_enter(&once)) { _cairo_traps_compositor_init (&compositor, &_cairo_fallback_compositor); compositor.acquire = acquire; compositor.release = release; @@ -552,6 +523,8 @@ compositor.composite_tristrip = composite_tristrip; compositor.check_composite_glyphs = _cairo_gl_check_composite_glyphs; compositor.composite_glyphs = _cairo_gl_composite_glyphs; + + _cairo_atomic_init_once_leave(&once); } return &compositor.base; diff -Nru cairo-1.14.6/src/cairo-gstate.c cairo-1.15.10/src/cairo-gstate.c --- cairo-1.14.6/src/cairo-gstate.c 2015-10-27 21:04:30.000000000 +0000 +++ cairo-1.15.10/src/cairo-gstate.c 2017-12-07 02:14:36.000000000 +0000 @@ -45,12 +45,6 @@ #include "cairo-pattern-private.h" #include "cairo-traps-private.h" -#if _XOPEN_SOURCE >= 600 || defined (_ISOC99_SOURCE) -#define ISFINITE(x) isfinite (x) -#else -#define ISFINITE(x) ((x) * (x) >= 0.) /* check for NaNs */ -#endif - static cairo_status_t _cairo_gstate_init_copy (cairo_gstate_t *gstate, cairo_gstate_t *other); @@ -225,7 +219,7 @@ cairo_pattern_destroy (gstate->source); gstate->source = NULL; - VG (VALGRIND_MAKE_MEM_NOACCESS (gstate, sizeof (cairo_gstate_t))); + VG (VALGRIND_MAKE_MEM_UNDEFINED (gstate, sizeof (cairo_gstate_t))); } /** @@ -1228,6 +1222,7 @@ _cairo_path_fixed_approximate_stroke_extents (path, &gstate->stroke_style, &gstate->ctm, + gstate->target->is_vector, &extents); if (x < extents.x || x > extents.x + extents.width || y < extents.y || y > extents.y + extents.height) @@ -1645,6 +1640,65 @@ return list; } +cairo_status_t +_cairo_gstate_tag_begin (cairo_gstate_t *gstate, + const char *tag_name, const char *attributes) +{ + cairo_pattern_union_t source_pattern; + cairo_stroke_style_t style; + double dash[2]; + cairo_status_t status; + cairo_matrix_t aggregate_transform; + cairo_matrix_t aggregate_transform_inverse; + + status = _cairo_gstate_get_pattern_status (gstate->source); + if (unlikely (status)) + return status; + + cairo_matrix_multiply (&aggregate_transform, + &gstate->ctm, + &gstate->target->device_transform); + cairo_matrix_multiply (&aggregate_transform_inverse, + &gstate->target->device_transform_inverse, + &gstate->ctm_inverse); + + memcpy (&style, &gstate->stroke_style, sizeof (gstate->stroke_style)); + if (_cairo_stroke_style_dash_can_approximate (&gstate->stroke_style, &aggregate_transform, gstate->tolerance)) { + style.dash = dash; + _cairo_stroke_style_dash_approximate (&gstate->stroke_style, &gstate->ctm, gstate->tolerance, + &style.dash_offset, + style.dash, + &style.num_dashes); + } + + _cairo_gstate_copy_transformed_source (gstate, &source_pattern.base); + + return _cairo_surface_tag (gstate->target, + TRUE, /* begin */ + tag_name, + attributes ? attributes : "", + &source_pattern.base, + &style, + &aggregate_transform, + &aggregate_transform_inverse, + gstate->clip); +} + +cairo_status_t +_cairo_gstate_tag_end (cairo_gstate_t *gstate, + const char *tag_name) +{ + return _cairo_surface_tag (gstate->target, + FALSE, /* begin */ + tag_name, + NULL, /* attributes */ + NULL, /* source */ + NULL, /* stroke_style */ + NULL, /* ctm */ + NULL, /* ctm_inverse*/ + NULL); /* clip */ +} + static void _cairo_gstate_unset_scaled_font (cairo_gstate_t *gstate) { diff -Nru cairo-1.14.6/src/cairo-gstate-private.h cairo-1.15.10/src/cairo-gstate-private.h --- cairo-1.14.6/src/cairo-gstate-private.h 2015-10-27 21:04:21.000000000 +0000 +++ cairo-1.15.10/src/cairo-gstate-private.h 2017-12-07 02:14:36.000000000 +0000 @@ -324,6 +324,15 @@ double height); cairo_private cairo_status_t +_cairo_gstate_tag_begin (cairo_gstate_t *gstate, + const char *tag_name, + const char *attributes); + +cairo_private cairo_status_t +_cairo_gstate_tag_end (cairo_gstate_t *gstate, + const char *tag_name); + +cairo_private cairo_status_t _cairo_gstate_set_font_size (cairo_gstate_t *gstate, double size); diff -Nru cairo-1.14.6/src/cairo.h cairo-1.15.10/src/cairo.h --- cairo-1.14.6/src/cairo.h 2015-10-27 21:04:21.000000000 +0000 +++ cairo-1.15.10/src/cairo.h 2017-12-07 02:14:36.000000000 +0000 @@ -292,6 +292,10 @@ * @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_PNG_ERROR: error occurred in libpng while reading from or writing to a PNG file (Since 1.16) + * @CAIRO_STATUS_FREETYPE_ERROR: error occurred in libfreetype (Since 1.16) + * @CAIRO_STATUS_WIN32_GDI_ERROR: error occurred in the Windows Graphics Device Interface (Since 1.16) + * @CAIRO_STATUS_TAG_ERROR: invalid tag name, attributes, or nesting (Since 1.16) * @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 @@ -348,6 +352,10 @@ CAIRO_STATUS_INVALID_MESH_CONSTRUCTION, CAIRO_STATUS_DEVICE_FINISHED, CAIRO_STATUS_JBIG2_GLOBAL_MISSING, + CAIRO_STATUS_PNG_ERROR, + CAIRO_STATUS_FREETYPE_ERROR, + CAIRO_STATUS_WIN32_GDI_ERROR, + CAIRO_STATUS_TAG_ERROR, CAIRO_STATUS_LAST_STATUS } cairo_status_t; @@ -1018,6 +1026,17 @@ cairo_public void cairo_rectangle_list_destroy (cairo_rectangle_list_t *rectangle_list); +/* Logical structure tagging functions */ + +#define CAIRO_TAG_DEST "cairo.dest" +#define CAIRO_TAG_LINK "Link" + +cairo_public void +cairo_tag_begin (cairo_t *cr, const char *tag_name, const char *attributes); + +cairo_public void +cairo_tag_end (cairo_t *cr, const char *tag_name); + /* Font/Text functions */ /** @@ -2434,6 +2453,10 @@ #define CAIRO_MIME_TYPE_JBIG2 "application/x-cairo.jbig2" #define CAIRO_MIME_TYPE_JBIG2_GLOBAL "application/x-cairo.jbig2-global" #define CAIRO_MIME_TYPE_JBIG2_GLOBAL_ID "application/x-cairo.jbig2-global-id" +#define CAIRO_MIME_TYPE_CCITT_FAX "image/g3fax" +#define CAIRO_MIME_TYPE_CCITT_FAX_PARAMS "application/x-cairo.ccitt.params" +#define CAIRO_MIME_TYPE_EPS "application/postscript" +#define CAIRO_MIME_TYPE_EPS_PARAMS "application/x-cairo.eps.params" cairo_public void cairo_surface_get_mime_data (cairo_surface_t *surface, diff -Nru cairo-1.14.6/src/cairo-image-compositor.c cairo-1.15.10/src/cairo-image-compositor.c --- cairo-1.14.6/src/cairo-image-compositor.c 2015-10-27 21:04:21.000000000 +0000 +++ cairo-1.15.10/src/cairo-image-compositor.c 2017-12-07 02:14:36.000000000 +0000 @@ -1244,11 +1244,12 @@ const cairo_compositor_t * _cairo_image_traps_compositor_get (void) { + static cairo_atomic_once_t once = CAIRO_ATOMIC_ONCE_INIT; static cairo_traps_compositor_t compositor; - if (compositor.base.delegate == NULL) { - _cairo_traps_compositor_init (&compositor, - &__cairo_no_compositor); + if (_cairo_atomic_init_once_enter(&once)) { + _cairo_traps_compositor_init(&compositor, + &__cairo_no_compositor); compositor.acquire = acquire; compositor.release = release; compositor.set_clip_region = set_clip_region; @@ -1269,6 +1270,8 @@ #endif compositor.check_composite_glyphs = check_composite_glyphs; compositor.composite_glyphs = composite_glyphs; + + _cairo_atomic_init_once_leave(&once); } return &compositor.base; @@ -1277,9 +1280,10 @@ const cairo_compositor_t * _cairo_image_mask_compositor_get (void) { + static cairo_atomic_once_t once = CAIRO_ATOMIC_ONCE_INIT; static cairo_mask_compositor_t compositor; - if (compositor.base.delegate == NULL) { + if (_cairo_atomic_init_once_enter(&once)) { _cairo_mask_compositor_init (&compositor, _cairo_image_traps_compositor_get ()); compositor.acquire = acquire; @@ -1296,6 +1300,8 @@ compositor.composite_boxes = composite_boxes; compositor.check_composite_glyphs = check_composite_glyphs; compositor.composite_glyphs = composite_glyphs; + + _cairo_atomic_init_once_leave(&once); } return &compositor.base; @@ -1575,7 +1581,7 @@ pixman_image_t *src, *mask; union { struct fill { - int stride; + ptrdiff_t stride; uint8_t *data; uint32_t pixel; } fill; @@ -1594,7 +1600,7 @@ struct finish { cairo_rectangle_int_t extents; int src_x, src_y; - int stride; + ptrdiff_t stride; uint8_t *data; } mask; } u; @@ -1763,7 +1769,7 @@ if (spans[0].coverage) { int len = spans[1].x - spans[0].x; uint16_t *d = (uint16_t*)(r->u.fill.data + r->u.fill.stride*y + spans[0].x*2); - while (len--) + while (len-- > 0) *d++ = r->u.fill.pixel; } spans++; @@ -1775,7 +1781,7 @@ do { int len = spans[1].x - spans[0].x; uint16_t *d = (uint16_t*)(r->u.fill.data + r->u.fill.stride*yy + spans[0].x*2); - while (len--) + while (len-- > 0) *d++ = r->u.fill.pixel; yy++; } while (--hh); @@ -1805,7 +1811,7 @@ 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; } } @@ -1823,7 +1829,7 @@ do { int len = spans[1].x - spans[0].x; uint32_t *d = (uint32_t*)(r->u.fill.data + r->u.fill.stride*yy + spans[0].x*4); - while (len--) + while (len-- > 0) *d++ = r->u.fill.pixel; yy++; } while (--hh); @@ -2180,7 +2186,7 @@ uint8_t s = mul8_8(a, r->u.fill.pixel); uint8_t *dst = d + spans[0].x; a = ~a; - while (len--) { + while (len-- > 0) { uint8_t t = mul8_8(*dst, a); *dst++ = t + s; } @@ -2206,7 +2212,7 @@ do { int len = spans[1].x - spans[0].x; uint8_t *d = r->u.fill.data + r->u.fill.stride*yy + spans[0].x; - while (len--) { + while (len-- > 0) { uint8_t t = mul8_8(*d, a); *d++ = t + s; } @@ -2266,7 +2272,7 @@ do { int len = spans[1].x - spans[0].x; uint32_t *d = (uint32_t*)(r->u.fill.data + r->u.fill.stride*yy + spans[0].x*4); - while (len--) + while (len-- > 0) *d++ = r->u.fill.pixel; yy++; } while (--hh); @@ -2276,7 +2282,7 @@ do { int len = spans[1].x - spans[0].x; uint32_t *d = (uint32_t *)(r->u.fill.data + r->u.fill.stride*yy + spans[0].x*4); - while (len--) { + while (len-- > 0) { *d = lerp8x4 (r->u.fill.pixel, a, *d); d++; } @@ -2308,7 +2314,7 @@ uint8_t *d = r->u.fill.data + r->u.fill.stride*y + spans[0].x; uint16_t p = (uint16_t)a * r->u.fill.pixel + 0x7f; uint16_t ia = ~a; - while (len--) { + while (len-- > 0) { uint16_t t = *d*ia + p; *d++ = (t + (t>>8)) >> 8; } @@ -2325,7 +2331,7 @@ do { int len = spans[1].x - spans[0].x; uint8_t *d = r->u.fill.data + r->u.fill.stride*yy + spans[0].x; - while (len--) { + while (len-- > 0) { uint16_t t = *d*ia + p; *d++ = (t + (t>>8)) >> 8; } @@ -2354,7 +2360,7 @@ if (a) { int len = spans[1].x - spans[0].x; uint32_t *d = (uint32_t*)(r->u.fill.data + r->u.fill.stride*y + spans[0].x*4); - while (len--) { + while (len-- > 0) { *d = lerp8x4 (r->u.fill.pixel, a, *d); d++; } @@ -2369,7 +2375,7 @@ do { int len = spans[1].x - spans[0].x; uint32_t *d = (uint32_t *)(r->u.fill.data + r->u.fill.stride*yy + spans[0].x*4); - while (len--) { + while (len-- > 0) { *d = lerp8x4 (r->u.fill.pixel, a, *d); d++; } @@ -2407,7 +2413,7 @@ else memcpy(d, s, len*4); } else { - while (len--) { + while (len-- > 0) { *d = lerp8x4 (*s, a, *d); s++, d++; } @@ -2430,7 +2436,7 @@ else memcpy(d, s, len * 4); } else { - while (len--) { + while (len-- > 0) { *d = lerp8x4 (*s, a, *d); s++, d++; } @@ -3105,10 +3111,11 @@ const cairo_compositor_t * _cairo_image_spans_compositor_get (void) { + static cairo_atomic_once_t once = CAIRO_ATOMIC_ONCE_INIT; static cairo_spans_compositor_t spans; static cairo_compositor_t shape; - if (spans.base.delegate == NULL) { + if (_cairo_atomic_init_once_enter(&once)) { _cairo_shape_mask_compositor_init (&shape, _cairo_image_traps_compositor_get()); shape.glyphs = NULL; @@ -3131,6 +3138,8 @@ //spans.check_span_renderer = check_span_renderer; spans.renderer_init = span_renderer_init; spans.renderer_fini = span_renderer_fini; + + _cairo_atomic_init_once_leave(&once); } return &spans.base; diff -Nru cairo-1.14.6/src/cairo-image-info.c cairo-1.15.10/src/cairo-image-info.c --- cairo-1.14.6/src/cairo-image-info.c 2015-10-27 21:04:21.000000000 +0000 +++ cairo-1.15.10/src/cairo-image-info.c 2017-12-07 02:14:36.000000000 +0000 @@ -67,6 +67,9 @@ #define SOF14 0xce #define SOF15 0xcf +/* Start of tag markers */ +#define APP14 0xee /* Adobe */ + static const unsigned char * _jpeg_skip_segment (const unsigned char *p) { @@ -94,6 +97,8 @@ { const unsigned char *p = data; + info->is_adobe_jpeg = FALSE; + while (p + 1 < data + length) { if (*p != 0xff) return CAIRO_INT_STATUS_UNSUPPORTED; @@ -131,13 +136,25 @@ _jpeg_extract_info (info, p); return CAIRO_STATUS_SUCCESS; + case APP14: + /* "Adobe" tags segment indicates inverted CMYK (in + * CMYK images). */ + if (p + 12 > data + length) + return CAIRO_INT_STATUS_UNSUPPORTED; + + info->is_adobe_jpeg = + (0 == strncmp((const char *)(p + 3), "Adobe", 5)); + + p = _jpeg_skip_segment(p); + break; + default: if (*p >= RST_begin && *p <= RST_end) { p++; break; } - if (p + 2 > data + length) + if (p + 3 > data + length) return CAIRO_INT_STATUS_UNSUPPORTED; p = _jpeg_skip_segment (p); @@ -206,6 +223,7 @@ info->width = get_unaligned_be32 (p + 4); info->num_components = (p[8] << 8) + p[9]; info->bits_per_component = p[10]; + info->is_adobe_jpeg = FALSE; } cairo_int_status_t @@ -283,6 +301,8 @@ p += 4; info->height = get_unaligned_be32 (p); + info->is_adobe_jpeg = FALSE; + return CAIRO_STATUS_SUCCESS; } @@ -395,6 +415,7 @@ info->height = get_unaligned_be32 (p + 4); info->num_components = 1; info->bits_per_component = 1; + info->is_adobe_jpeg = FALSE; } cairo_int_status_t diff -Nru cairo-1.14.6/src/cairo-image-info-private.h cairo-1.15.10/src/cairo-image-info-private.h --- cairo-1.14.6/src/cairo-image-info-private.h 2015-10-27 21:04:21.000000000 +0000 +++ cairo-1.15.10/src/cairo-image-info-private.h 2017-12-07 02:14:36.000000000 +0000 @@ -43,6 +43,7 @@ int height; int num_components; int bits_per_component; + int is_adobe_jpeg; } cairo_image_info_t; cairo_private cairo_int_status_t diff -Nru cairo-1.14.6/src/cairo-image-source.c cairo-1.15.10/src/cairo-image-source.c --- cairo-1.14.6/src/cairo-image-source.c 2015-10-27 21:04:30.000000000 +0000 +++ cairo-1.15.10/src/cairo-image-source.c 2017-12-07 02:14:36.000000000 +0000 @@ -1081,7 +1081,7 @@ if (unlikely (proxy == NULL)) return _cairo_surface_create_in_error (CAIRO_STATUS_NO_MEMORY); - _cairo_surface_init (&proxy->base, &proxy_backend, NULL, image->content); + _cairo_surface_init (&proxy->base, &proxy_backend, NULL, image->content, FALSE); proxy->image = image; _cairo_surface_attach_snapshot (source, &proxy->base, NULL); @@ -1113,10 +1113,12 @@ { cairo_surface_t *source, *clone, *proxy; cairo_rectangle_int_t limit; + cairo_rectangle_int_t src_limit; pixman_image_t *pixman_image; cairo_status_t status; cairo_extend_t extend; cairo_matrix_t *m, matrix; + double sx = 1.0, sy = 1.0; int tx = 0, ty = 0; TRACE ((stderr, "%s\n", __FUNCTION__)); @@ -1124,34 +1126,38 @@ *ix = *iy = 0; source = _cairo_pattern_get_source (pattern, &limit); + src_limit = limit; extend = pattern->base.extend; if (_cairo_rectangle_contains_rectangle (&limit, sample)) extend = CAIRO_EXTEND_NONE; + if (extend == CAIRO_EXTEND_NONE) { if (! _cairo_rectangle_intersect (&limit, sample)) return _pixman_transparent_image (); + } - if (! _cairo_matrix_is_identity (&pattern->base.matrix)) { - double x1, y1, x2, y2; + if (! _cairo_matrix_is_identity (&pattern->base.matrix)) { + double x1, y1, x2, y2; - matrix = pattern->base.matrix; - status = cairo_matrix_invert (&matrix); - assert (status == CAIRO_STATUS_SUCCESS); - - x1 = limit.x; - y1 = limit.y; - x2 = limit.x + limit.width; - y2 = limit.y + limit.height; - - _cairo_matrix_transform_bounding_box (&matrix, - &x1, &y1, &x2, &y2, NULL); - - limit.x = floor (x1); - limit.y = floor (y1); - limit.width = ceil (x2) - limit.x; - limit.height = ceil (y2) - limit.y; - } + matrix = pattern->base.matrix; + status = cairo_matrix_invert (&matrix); + assert (status == CAIRO_STATUS_SUCCESS); + + x1 = limit.x; + y1 = limit.y; + x2 = limit.x + limit.width; + y2 = limit.y + limit.height; + + _cairo_matrix_transform_bounding_box (&matrix, + &x1, &y1, &x2, &y2, NULL); + + limit.x = floor (x1); + limit.y = floor (y1); + limit.width = ceil (x2) - limit.x; + limit.height = ceil (y2) - limit.y; + sx = (double)src_limit.width / limit.width; + sy = (double)src_limit.height / limit.height; } tx = limit.x; ty = limit.y; @@ -1183,7 +1189,9 @@ cairo_matrix_translate (&matrix, tx, ty); m = &matrix; } else { - /* XXX extract scale factor for repeating patterns */ + cairo_matrix_init_scale (&matrix, sx, sy); + cairo_matrix_translate (&matrix, src_limit.x/sx, src_limit.y/sy); + m = &matrix; } /* Handle recursion by returning future reads from the current image */ @@ -1199,11 +1207,22 @@ pixman_image = pixman_image_ref (((cairo_image_surface_t *)clone)->pixman_image); cairo_surface_destroy (clone); - *ix = -limit.x; - *iy = -limit.y; - if (extend != CAIRO_EXTEND_NONE) { + if (extend == CAIRO_EXTEND_NONE) { + *ix = -limit.x; + *iy = -limit.y; + } else { + cairo_pattern_union_t tmp_pattern; + _cairo_pattern_init_static_copy (&tmp_pattern.base, &pattern->base); + matrix = pattern->base.matrix; + status = cairo_matrix_invert(&matrix); + assert (status == CAIRO_STATUS_SUCCESS); + cairo_matrix_translate (&matrix, src_limit.x, src_limit.y); + cairo_matrix_scale (&matrix, sx, sy); + status = cairo_matrix_invert(&matrix); + assert (status == CAIRO_STATUS_SUCCESS); + cairo_pattern_set_matrix (&tmp_pattern.base, &matrix); if (! _pixman_image_set_properties (pixman_image, - &pattern->base, extents, + &tmp_pattern.base, extents, ix, iy)) { pixman_image_unref (pixman_image); pixman_image= NULL; @@ -1592,7 +1611,8 @@ _cairo_surface_init (&source->base, &_cairo_image_source_backend, NULL, /* device */ - CAIRO_CONTENT_COLOR_ALPHA); + CAIRO_CONTENT_COLOR_ALPHA, + FALSE); /* is_vector */ source->is_opaque_solid = pattern == NULL || _cairo_pattern_is_opaque_solid (pattern); diff -Nru cairo-1.14.6/src/cairo-image-surface.c cairo-1.15.10/src/cairo-image-surface.c --- cairo-1.14.6/src/cairo-image-surface.c 2015-10-27 21:04:30.000000000 +0000 +++ cairo-1.15.10/src/cairo-image-surface.c 2017-12-07 02:14:36.000000000 +0000 @@ -52,6 +52,7 @@ #include "cairo-recording-surface-private.h" #include "cairo-region-private.h" #include "cairo-scaled-font-private.h" +#include "cairo-surface-snapshot-inline.h" #include "cairo-surface-snapshot-private.h" #include "cairo-surface-subsurface-private.h" @@ -188,7 +189,8 @@ _cairo_surface_init (&surface->base, &_cairo_image_surface_backend, NULL, /* device */ - _cairo_content_from_pixman_format (pixman_format)); + _cairo_content_from_pixman_format (pixman_format), + FALSE); /* is_vector */ _cairo_image_surface_init (surface, pixman_image, pixman_format); @@ -369,8 +371,8 @@ * @height: height of the surface, in pixels * * 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 + * dimensions. Initially the surface contents are set to 0. + * (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). * @@ -1152,79 +1154,87 @@ return (cairo_image_surface_t *) _cairo_surface_create_in_error (status); } -cairo_image_transparency_t -_cairo_image_analyze_transparency (cairo_image_surface_t *image) +static cairo_image_transparency_t +_cairo_image_compute_transparency (cairo_image_surface_t *image) { int x, y; - - if (image->transparency != CAIRO_IMAGE_UNKNOWN) - return image->transparency; + cairo_image_transparency_t transparency; if ((image->base.content & CAIRO_CONTENT_ALPHA) == 0) - return image->transparency = CAIRO_IMAGE_IS_OPAQUE; + return CAIRO_IMAGE_IS_OPAQUE; if (image->base.is_clear) - return image->transparency = CAIRO_IMAGE_HAS_BILEVEL_ALPHA; + return CAIRO_IMAGE_HAS_BILEVEL_ALPHA; if ((image->base.content & CAIRO_CONTENT_COLOR) == 0) { if (image->format == CAIRO_FORMAT_A1) { - return image->transparency = CAIRO_IMAGE_HAS_BILEVEL_ALPHA; + return CAIRO_IMAGE_HAS_BILEVEL_ALPHA; } else if (image->format == CAIRO_FORMAT_A8) { for (y = 0; y < image->height; y++) { uint8_t *alpha = (uint8_t *) (image->data + y * image->stride); for (x = 0; x < image->width; x++, alpha++) { if (*alpha > 0 && *alpha < 255) - return image->transparency = CAIRO_IMAGE_HAS_ALPHA; + return CAIRO_IMAGE_HAS_ALPHA; } } - return image->transparency = CAIRO_IMAGE_HAS_BILEVEL_ALPHA; + return CAIRO_IMAGE_HAS_BILEVEL_ALPHA; } else { - return image->transparency = CAIRO_IMAGE_HAS_ALPHA; + return CAIRO_IMAGE_HAS_ALPHA; } } if (image->format == CAIRO_FORMAT_RGB16_565) { - image->transparency = CAIRO_IMAGE_IS_OPAQUE; return CAIRO_IMAGE_IS_OPAQUE; } if (image->format != CAIRO_FORMAT_ARGB32) - return image->transparency = CAIRO_IMAGE_HAS_ALPHA; + return CAIRO_IMAGE_HAS_ALPHA; - image->transparency = CAIRO_IMAGE_IS_OPAQUE; + transparency = CAIRO_IMAGE_IS_OPAQUE; for (y = 0; y < image->height; y++) { uint32_t *pixel = (uint32_t *) (image->data + y * image->stride); for (x = 0; x < image->width; x++, pixel++) { int a = (*pixel & 0xff000000) >> 24; if (a > 0 && a < 255) { - return image->transparency = CAIRO_IMAGE_HAS_ALPHA; + return CAIRO_IMAGE_HAS_ALPHA; } else if (a == 0) { - image->transparency = CAIRO_IMAGE_HAS_BILEVEL_ALPHA; + transparency = CAIRO_IMAGE_HAS_BILEVEL_ALPHA; } } } - return image->transparency; + return transparency; } -cairo_image_color_t -_cairo_image_analyze_color (cairo_image_surface_t *image) +cairo_image_transparency_t +_cairo_image_analyze_transparency (cairo_image_surface_t *image) { - int x, y; + if (_cairo_surface_is_snapshot (&image->base)) { + if (image->transparency == CAIRO_IMAGE_UNKNOWN) + image->transparency = _cairo_image_compute_transparency (image); - if (image->color != CAIRO_IMAGE_UNKNOWN_COLOR) - return image->color; + return image->transparency; + } + + return _cairo_image_compute_transparency (image); +} + +static cairo_image_color_t +_cairo_image_compute_color (cairo_image_surface_t *image) +{ + int x, y; + cairo_image_color_t color; if (image->format == CAIRO_FORMAT_A1) - return image->color = CAIRO_IMAGE_IS_MONOCHROME; + return CAIRO_IMAGE_IS_MONOCHROME; if (image->format == CAIRO_FORMAT_A8) - return image->color = CAIRO_IMAGE_IS_GRAYSCALE; + return CAIRO_IMAGE_IS_GRAYSCALE; if (image->format == CAIRO_FORMAT_ARGB32) { - image->color = CAIRO_IMAGE_IS_MONOCHROME; + color = CAIRO_IMAGE_IS_MONOCHROME; for (y = 0; y < image->height; y++) { uint32_t *pixel = (uint32_t *) (image->data + y * image->stride); @@ -1241,16 +1251,16 @@ b = (b * 255 + a / 2) / a; } if (!(r == g && g == b)) - return image->color = CAIRO_IMAGE_IS_COLOR; + return CAIRO_IMAGE_IS_COLOR; else if (r > 0 && r < 255) - image->color = CAIRO_IMAGE_IS_GRAYSCALE; + color = CAIRO_IMAGE_IS_GRAYSCALE; } } - return image->color; + return color; } if (image->format == CAIRO_FORMAT_RGB24) { - image->color = CAIRO_IMAGE_IS_MONOCHROME; + color = CAIRO_IMAGE_IS_MONOCHROME; for (y = 0; y < image->height; y++) { uint32_t *pixel = (uint32_t *) (image->data + y * image->stride); @@ -1259,15 +1269,28 @@ int g = (*pixel & 0x0000ff00) >> 8; int b = (*pixel & 0x000000ff); if (!(r == g && g == b)) - return image->color = CAIRO_IMAGE_IS_COLOR; + return CAIRO_IMAGE_IS_COLOR; else if (r > 0 && r < 255) - image->color = CAIRO_IMAGE_IS_GRAYSCALE; + color = CAIRO_IMAGE_IS_GRAYSCALE; } } + return color; + } + + return CAIRO_IMAGE_IS_COLOR; +} + +cairo_image_color_t +_cairo_image_analyze_color (cairo_image_surface_t *image) +{ + if (_cairo_surface_is_snapshot (&image->base)) { + if (image->color == CAIRO_IMAGE_UNKNOWN_COLOR) + image->color = _cairo_image_compute_color (image); + return image->color; } - return image->color = CAIRO_IMAGE_IS_COLOR; + return _cairo_image_compute_color (image); } cairo_image_surface_t * diff -Nru cairo-1.14.6/src/cairo-image-surface-private.h cairo-1.15.10/src/cairo-image-surface-private.h --- cairo-1.14.6/src/cairo-image-surface-private.h 2015-10-27 21:04:21.000000000 +0000 +++ cairo-1.15.10/src/cairo-image-surface-private.h 2017-12-07 22:13:28.000000000 +0000 @@ -40,6 +40,7 @@ #include "cairo-surface-private.h" +#include #include CAIRO_BEGIN_DECLS @@ -71,7 +72,7 @@ int width; int height; - int stride; + ptrdiff_t stride; int depth; unsigned owns_data : 1; diff -Nru cairo-1.14.6/src/cairoint.h cairo-1.15.10/src/cairoint.h --- cairo-1.14.6/src/cairoint.h 2015-10-27 21:04:30.000000000 +0000 +++ cairo-1.15.10/src/cairoint.h 2017-12-07 02:14:36.000000000 +0000 @@ -107,6 +107,12 @@ #undef MAX #define MAX(a, b) ((a) > (b) ? (a) : (b)) +#if _XOPEN_SOURCE >= 600 || defined (_ISOC99_SOURCE) +#define ISFINITE(x) isfinite (x) +#else +#define ISFINITE(x) ((x) * (x) >= 0.) /* check for NaNs */ +#endif + #ifndef FALSE #define FALSE 0 #endif @@ -282,6 +288,12 @@ return (c >= '0' && c <= '9'); } +static inline int cairo_const +_cairo_isalpha (int c) +{ + return (c >= 'a' && c <= 'z') || (c >= 'A' && c <= 'Z'); +} + #include "cairo-types-private.h" #include "cairo-cache-private.h" #include "cairo-reference-count-private.h" @@ -471,7 +483,8 @@ CAIRO_SCALED_GLYPH_INFO_METRICS = (1 << 0), CAIRO_SCALED_GLYPH_INFO_SURFACE = (1 << 1), CAIRO_SCALED_GLYPH_INFO_PATH = (1 << 2), - CAIRO_SCALED_GLYPH_INFO_RECORDING_SURFACE = (1 << 3) + CAIRO_SCALED_GLYPH_INFO_RECORDING_SURFACE = (1 << 3), + CAIRO_SCALED_GLYPH_INFO_COLOR_SURFACE = (1 << 4) } cairo_scaled_glyph_info_t; typedef struct _cairo_scaled_font_subset { @@ -556,8 +569,12 @@ unsigned long index, uint32_t *ucs4); - cairo_warn cairo_bool_t - (*is_synthetic)(void *scaled_font); + /* Determine if this scaled font differs from the outlines in the font tables. + * eg synthesized bold/italic or a non default variant of a variable font. + */ + cairo_warn cairo_int_status_t + (*is_synthetic)(void *scaled_font, + cairo_bool_t *is_synthetic); /* For type 1 fonts, return the glyph name for a given glyph index. * A glyph index and list of glyph names in the Type 1 fonts is provided. @@ -597,6 +614,9 @@ long offset, unsigned char *buffer, unsigned long *length); + + cairo_bool_t + (*has_color_glyphs) (void *scaled_font); }; struct _cairo_font_face_backend { @@ -899,7 +919,10 @@ _cairo_intern_string_reset_static_data (void); cairo_private const char * -cairo_get_locale_decimal_point (void); +_cairo_get_locale_decimal_point (void); + +cairo_private double +_cairo_strtod (const char *nptr, char **endptr); /* cairo-path-fixed.c */ cairo_private cairo_path_fixed_t * @@ -1021,6 +1044,7 @@ _cairo_path_fixed_approximate_stroke_extents (const cairo_path_fixed_t *path, const cairo_stroke_style_t *style, const cairo_matrix_t *ctm, + cairo_bool_t vector, cairo_rectangle_int_t *extents); cairo_private cairo_status_t @@ -1244,6 +1268,11 @@ cairo_scaled_font_t *scaled_font, cairo_surface_t *recording_surface); +cairo_private void +_cairo_scaled_glyph_set_color_surface (cairo_scaled_glyph_t *scaled_glyph, + cairo_scaled_font_t *scaled_font, + cairo_image_surface_t *surface); + cairo_private cairo_int_status_t _cairo_scaled_glyph_lookup (cairo_scaled_font_t *scaled_font, unsigned long index, @@ -1307,6 +1336,9 @@ /* cairo-surface.c */ +cairo_private cairo_bool_t +_cairo_surface_has_mime_image (cairo_surface_t *surface); + cairo_private cairo_status_t _cairo_surface_copy_mime_data (cairo_surface_t *dst, cairo_surface_t *src); @@ -1335,7 +1367,8 @@ _cairo_surface_init (cairo_surface_t *surface, const cairo_surface_backend_t *backend, cairo_device_t *device, - cairo_content_t content); + cairo_content_t content, + cairo_bool_t is_vector); cairo_private void _cairo_surface_set_font_options (cairo_surface_t *surface, @@ -1416,6 +1449,17 @@ const cairo_clip_t *clip); cairo_private cairo_status_t +_cairo_surface_tag (cairo_surface_t *surface, + cairo_bool_t begin, + const char *tag_name, + const char *attributes, + const cairo_pattern_t *source, + const cairo_stroke_style_t *stroke_style, + const cairo_matrix_t *ctm, + const cairo_matrix_t *ctm_inverse, + const cairo_clip_t *clip); + +cairo_private cairo_status_t _cairo_surface_acquire_source_image (cairo_surface_t *surface, cairo_image_surface_t **image_out, void **image_extra); @@ -1779,6 +1823,12 @@ int *out_x_offset, int *out_y_offset); +cairo_private void +_cairo_debug_print_matrix (FILE *file, const cairo_matrix_t *matrix); + +cairo_private void +_cairo_debug_print_rect (FILE *file, const cairo_rectangle_int_t *rect); + cairo_private cairo_status_t _cairo_bentley_ottmann_tessellate_rectilinear_polygon (cairo_traps_t *traps, const cairo_polygon_t *polygon, @@ -1847,6 +1897,10 @@ _cairo_ucs4_to_utf8 (uint32_t unicode, char *utf8); +cairo_private int +_cairo_ucs4_to_utf16 (uint32_t unicode, + uint16_t *utf16); + #if CAIRO_HAS_WIN32_FONT || CAIRO_HAS_QUARTZ_FONT || CAIRO_HAS_PDF_OPERATORS # define CAIRO_HAS_UTF8_TO_UTF16 1 #endif @@ -1868,6 +1922,10 @@ cairo_private void _cairo_observers_notify (cairo_list_t *observers, void *arg); +/* Open a file with a UTF-8 filename */ +cairo_private cairo_status_t +_cairo_fopen (const char *filename, const char *mode, FILE **file_out); + /* Avoid unnecessary PLT entries. */ slim_hidden_proto (cairo_clip_preserve); slim_hidden_proto (cairo_close_path); @@ -2060,7 +2118,7 @@ #endif cairo_private void -_cairo_debug_print_path (FILE *stream, cairo_path_fixed_t *path); +_cairo_debug_print_path (FILE *stream, const cairo_path_fixed_t *path); cairo_private void _cairo_debug_print_polygon (FILE *stream, cairo_polygon_t *polygon); diff -Nru cairo-1.14.6/src/cairo-line.c cairo-1.15.10/src/cairo-line.c --- cairo-1.14.6/src/cairo-line.c 2015-10-27 21:04:21.000000000 +0000 +++ cairo-1.15.10/src/cairo-line.c 2017-12-07 02:14:36.000000000 +0000 @@ -110,9 +110,9 @@ * should prevent that before the tessellation algorithm * begins. */ - int32_t dx; - int32_t adx, ady; - int32_t bdx, bdy; + int32_t dx = 0; + int32_t adx = 0, ady = 0; + int32_t bdx = 0, bdy = 0; enum { HAVE_NONE = 0x0, HAVE_DX = 0x1, @@ -218,7 +218,7 @@ HAVE_BX = 0x2, HAVE_BOTH = HAVE_AX | HAVE_BX } have_ax_bx = HAVE_BOTH; - int32_t ax, bx; + int32_t ax = 0, bx = 0; if (y == a->p1.y) ax = a->p1.x; diff -Nru cairo-1.14.6/src/cairo-matrix.c cairo-1.15.10/src/cairo-matrix.c --- cairo-1.14.6/src/cairo-matrix.c 2015-10-27 21:04:21.000000000 +0000 +++ cairo-1.15.10/src/cairo-matrix.c 2017-12-07 02:14:36.000000000 +0000 @@ -40,12 +40,6 @@ #define PIXMAN_MAX_INT ((pixman_fixed_1 >> 1) - pixman_fixed_e) /* need to ensure deltas also fit */ -#if _XOPEN_SOURCE >= 600 || defined (_ISOC99_SOURCE) -#define ISFINITE(x) isfinite (x) -#else -#define ISFINITE(x) ((x) * (x) >= 0.) /* check for NaNs */ -#endif - /** * SECTION:cairo-matrix * @Title: cairo_matrix_t diff -Nru cairo-1.14.6/src/cairo-mesh-pattern-rasterizer.c cairo-1.15.10/src/cairo-mesh-pattern-rasterizer.c --- cairo-1.14.6/src/cairo-mesh-pattern-rasterizer.c 2015-10-27 21:04:21.000000000 +0000 +++ cairo-1.15.10/src/cairo-mesh-pattern-rasterizer.c 2017-12-07 02:14:36.000000000 +0000 @@ -470,7 +470,7 @@ tg += tg >> 16; tb += tb >> 16; - *((uint32_t*) (data + y*stride + 4*x)) = ((ta << 16) & 0xff000000) | + *((uint32_t*) (data + y*(ptrdiff_t)stride + 4*x)) = ((ta << 16) & 0xff000000) | ((tr >> 8) & 0xff0000) | ((tg >> 16) & 0xff00) | (tb >> 24); } } diff -Nru cairo-1.14.6/src/cairo-misc.c cairo-1.15.10/src/cairo-misc.c --- cairo-1.14.6/src/cairo-misc.c 2015-10-27 21:04:21.000000000 +0000 +++ cairo-1.15.10/src/cairo-misc.c 2017-12-07 02:14:36.000000000 +0000 @@ -41,6 +41,9 @@ #include "cairoint.h" #include "cairo-error-private.h" +#include +#include + COMPILE_TIME_ASSERT ((int)CAIRO_STATUS_LAST_STATUS < (int)CAIRO_INT_STATUS_UNSUPPORTED); COMPILE_TIME_ASSERT (CAIRO_INT_STATUS_LAST_STATUS <= 127); @@ -49,7 +52,7 @@ * @Title: Error handling * @Short_Description: Decoding cairo's status * @See_Also: cairo_status(), cairo_surface_status(), cairo_pattern_status(), - * cairo_font_face_status(), cairo_scaled_font_status(), + * cairo_font_face_status(), cairo_scaled_font_status(), * cairo_region_status() * * Cairo uses a single status type to represent all kinds of errors. A status @@ -158,6 +161,14 @@ return "the target device has been finished"; case CAIRO_STATUS_JBIG2_GLOBAL_MISSING: return "CAIRO_MIME_TYPE_JBIG2_GLOBAL_ID used but no CAIRO_MIME_TYPE_JBIG2_GLOBAL data provided"; + case CAIRO_STATUS_PNG_ERROR: + return "error occurred in libpng while reading from or writing to a PNG file"; + case CAIRO_STATUS_FREETYPE_ERROR: + return "error occurred in libfreetype"; + case CAIRO_STATUS_WIN32_GDI_ERROR: + return "error occurred in the Windows Graphics Device Interface"; + case CAIRO_STATUS_TAG_ERROR: + return "invalid tag name, attributes, or nesting"; default: case CAIRO_STATUS_LAST_STATUS: return ""; @@ -763,7 +774,7 @@ # include const char * -cairo_get_locale_decimal_point (void) +_cairo_get_locale_decimal_point (void) { struct lconv *locale_data = localeconv (); return locale_data->decimal_point; @@ -772,12 +783,127 @@ #else /* Android's Bionic libc doesn't provide decimal_point */ const char * -cairo_get_locale_decimal_point (void) +_cairo_get_locale_decimal_point (void) { return "."; } #endif +/* strtod replacement that ignores locale and only accepts decimal points */ +double +_cairo_strtod (const char *nptr, char **endptr) +{ + const char *decimal_point; + int decimal_point_len; + const char *p; + char buf[100]; + char *bufptr; + char *bufend = buf + sizeof(buf) - 1; + double value; + char *end; + int delta; + cairo_bool_t have_dp; + + decimal_point = _cairo_get_locale_decimal_point (); + decimal_point_len = strlen (decimal_point); + assert (decimal_point_len != 0); + + p = nptr; + bufptr = buf; + delta = 0; + have_dp = FALSE; + while (*p && _cairo_isspace (*p)) { + p++; + delta++; + } + + while (*p && (bufptr + decimal_point_len < bufend)) { + if (_cairo_isdigit (*p)) { + *bufptr++ = *p; + } else if (*p == '.') { + if (have_dp) + break; + strncpy (bufptr, decimal_point, decimal_point_len); + bufptr += decimal_point_len; + delta -= decimal_point_len - 1; + have_dp = TRUE; + } else { + break; + } + p++; + } + *bufptr = 0; + + value = strtod (buf, &end); + if (endptr) { + if (end == buf) + *endptr = (char*)(nptr); + else + *endptr = (char*)(nptr + (end - buf) + delta); + } + + return value; +} + +/** + * _cairo_fopen: + * @filename: filename to open + * @mode: mode string with which to open the file + * @file_out: reference to file handle + * + * Exactly like the C library function, but possibly doing encoding + * conversion on the filename. On all platforms, the filename is + * passed directly to the system, but on Windows, the filename is + * interpreted as UTF-8, rather than in a codepage that would depend + * on system settings. + * + * Return value: CAIRO_STATUS_SUCCESS when the filename was converted + * successfully to the native encoding, or the error reported by + * _cairo_utf8_to_utf16 otherwise. To check if the file handle could + * be obtained, dereference file_out and compare its value against + * NULL + **/ +cairo_status_t +_cairo_fopen (const char *filename, const char *mode, FILE **file_out) +{ + FILE *result; +#ifdef _WIN32 /* also defined on x86_64 */ + uint16_t *filename_w; + uint16_t *mode_w; + cairo_status_t status; + + *file_out = NULL; + + if (filename == NULL || mode == NULL) { + errno = EINVAL; + return CAIRO_STATUS_SUCCESS; + } + + if ((status = _cairo_utf8_to_utf16 (filename, -1, &filename_w, NULL)) != CAIRO_STATUS_SUCCESS) { + errno = EINVAL; + return status; + } + + if ((status = _cairo_utf8_to_utf16 (mode, -1, &mode_w, NULL)) != CAIRO_STATUS_SUCCESS) { + free (filename_w); + errno = EINVAL; + return status; + } + + result = _wfopen(filename_w, mode_w); + + free (filename_w); + free (mode_w); + +#else /* Use fopen directly */ + result = fopen (filename, mode); +#endif + + *file_out = result; + + return CAIRO_STATUS_SUCCESS; +} + #ifdef _WIN32 #define WIN32_LEAN_AND_MEAN diff -Nru cairo-1.14.6/src/cairo-os2-surface.c cairo-1.15.10/src/cairo-os2-surface.c --- cairo-1.14.6/src/cairo-os2-surface.c 2015-10-27 21:04:30.000000000 +0000 +++ cairo-1.15.10/src/cairo-os2-surface.c 2017-12-07 02:14:36.000000000 +0000 @@ -780,7 +780,8 @@ _cairo_surface_init (&local_os2_surface->base, &cairo_os2_surface_backend, NULL, /* device */ - _cairo_content_from_format (CAIRO_FORMAT_ARGB32)); + _cairo_content_from_format (CAIRO_FORMAT_ARGB32), + FALSE); /* is_vector */ /* Successful exit */ return (cairo_surface_t *)local_os2_surface; diff -Nru cairo-1.14.6/src/cairo-output-stream.c cairo-1.15.10/src/cairo-output-stream.c --- cairo-1.14.6/src/cairo-output-stream.c 2015-10-27 21:04:21.000000000 +0000 +++ cairo-1.15.10/src/cairo-output-stream.c 2017-12-07 02:14:36.000000000 +0000 @@ -33,7 +33,7 @@ * Kristian Høgsberg */ -#define _BSD_SOURCE /* for snprintf() */ +#define _DEFAULT_SOURCE /* for snprintf() */ #include "cairoint.h" #include "cairo-output-stream-private.h" @@ -312,7 +312,7 @@ if (d == 0.0) d = 0.0; - decimal_point = cairo_get_locale_decimal_point (); + decimal_point = _cairo_get_locale_decimal_point (); decimal_point_len = strlen (decimal_point); assert (decimal_point_len != 0); @@ -490,9 +490,13 @@ single_fmt, va_arg (ap, long int)); } break; - case 's': - snprintf (buffer, sizeof buffer, - single_fmt, va_arg (ap, const char *)); + case 's': { + /* Write out strings as they may be larger than the buffer. */ + const char *s = va_arg (ap, const char *); + int len = strlen(s); + _cairo_output_stream_write (stream, s, len); + buffer[0] = 0; + } break; case 'f': _cairo_dtostr (buffer, sizeof buffer, va_arg (ap, double), FALSE); @@ -653,11 +657,16 @@ { stdio_stream_t *stream; FILE *file; + cairo_status_t status; if (filename == NULL) return _cairo_null_stream_create (); - file = fopen (filename, "wb"); + status = _cairo_fopen (filename, "wb", &file); + + if (status != CAIRO_STATUS_SUCCESS) + return _cairo_output_stream_create_in_error (status); + if (file == NULL) { switch (errno) { case ENOMEM: diff -Nru cairo-1.14.6/src/cairo-paginated-private.h cairo-1.15.10/src/cairo-paginated-private.h --- cairo-1.14.6/src/cairo-paginated-private.h 2015-10-27 21:04:22.000000000 +0000 +++ cairo-1.15.10/src/cairo-paginated-private.h 2017-12-07 02:14:36.000000000 +0000 @@ -56,7 +56,7 @@ * CAIRO_PAGINATED_MODE_RENDER. See more details in the * documentation for _cairo_paginated_surface_create below. */ - void + cairo_warn cairo_int_status_t (*set_paginated_mode) (void *surface, cairo_paginated_mode_t mode); @@ -77,7 +77,23 @@ cairo_bool_t fallbacks_required); cairo_bool_t - (*supports_fine_grained_fallbacks) (void *surface); + (*supports_fine_grained_fallbacks) (void *surface); + + /* Optional. Indicates whether the page requires a thumbnail image to be + * supplied. If a thumbnail is required, set width, heigh to size required + * and return TRUE. + */ + cairo_bool_t + (*requires_thumbnail_image) (void *surface, + int *width, + int *height); + + /* If thumbbail image requested, this function will be called before + * _show_page(). + */ + cairo_warn cairo_int_status_t + (*set_thumbnail_image) (void *surface, + cairo_image_surface_t *image); }; /* A #cairo_paginated_surface_t provides a very convenient wrapper that diff -Nru cairo-1.14.6/src/cairo-paginated-surface.c cairo-1.15.10/src/cairo-paginated-surface.c --- cairo-1.14.6/src/cairo-paginated-surface.c 2015-10-27 21:04:30.000000000 +0000 +++ cairo-1.15.10/src/cairo-paginated-surface.c 2017-12-07 02:14:36.000000000 +0000 @@ -107,7 +107,8 @@ _cairo_surface_init (&surface->base, &cairo_paginated_surface_backend, NULL, /* device */ - content); + content, + target->is_vector); /* Override surface->base.type with target's type so we don't leak * evidence of the paginated wrapper out to the user. */ @@ -290,6 +291,63 @@ } static cairo_int_status_t +_paint_thumbnail_image (cairo_paginated_surface_t *surface, + int width, + int height) +{ + cairo_surface_pattern_t pattern; + cairo_rectangle_int_t extents; + double x_scale; + double y_scale; + cairo_surface_t *image = NULL; + cairo_surface_t *opaque = NULL; + cairo_status_t status = CAIRO_STATUS_SUCCESS; + + _cairo_surface_get_extents (surface->target, &extents); + x_scale = (double)width / extents.width; + y_scale = (double)height / extents.height; + + image = _cairo_paginated_surface_create_image_surface (surface, width, height); + cairo_surface_set_device_scale (image, x_scale, y_scale); + cairo_surface_set_device_offset (image, -extents.x*x_scale, -extents.y*y_scale); + status = _cairo_recording_surface_replay (surface->recording_surface, image); + if (unlikely (status)) + goto cleanup; + + /* flatten transparency */ + + opaque = cairo_image_surface_create (CAIRO_FORMAT_RGB24, width, height); + if (unlikely (opaque->status)) { + status = opaque->status; + goto cleanup; + } + + status = _cairo_surface_paint (opaque, + CAIRO_OPERATOR_SOURCE, + &_cairo_pattern_white.base, + NULL); + if (unlikely (status)) + goto cleanup; + + _cairo_pattern_init_for_surface (&pattern, image); + pattern.base.filter = CAIRO_FILTER_NEAREST; + status = _cairo_surface_paint (opaque, CAIRO_OPERATOR_OVER, &pattern.base, NULL); + _cairo_pattern_fini (&pattern.base); + if (unlikely (status)) + goto cleanup; + + status = surface->backend->set_thumbnail_image (surface->target, (cairo_image_surface_t *)opaque); + + cleanup: + if (image) + cairo_surface_destroy (image); + if (opaque) + cairo_surface_destroy (opaque); + + return status; +} + +static cairo_int_status_t _paint_fallback_image (cairo_paginated_surface_t *surface, cairo_rectangle_int_t *rect) { @@ -351,10 +409,13 @@ if (unlikely (analysis->status)) return _cairo_surface_set_error (surface->target, analysis->status); - surface->backend->set_paginated_mode (surface->target, + status = surface->backend->set_paginated_mode (surface->target, CAIRO_PAGINATED_MODE_ANALYZE); + if (unlikely (status)) + goto FAIL; + status = _cairo_recording_surface_replay_and_create_regions (surface->recording_surface, - analysis); + NULL, analysis, FALSE); if (status) goto FAIL; @@ -400,8 +461,10 @@ } if (has_supported) { - surface->backend->set_paginated_mode (surface->target, - CAIRO_PAGINATED_MODE_RENDER); + status = surface->backend->set_paginated_mode (surface->target, + CAIRO_PAGINATED_MODE_RENDER); + if (unlikely (status)) + goto FAIL; status = _cairo_recording_surface_replay_region (surface->recording_surface, NULL, @@ -416,8 +479,10 @@ cairo_rectangle_int_t extents; cairo_bool_t is_bounded; - surface->backend->set_paginated_mode (surface->target, - CAIRO_PAGINATED_MODE_FALLBACK); + status = surface->backend->set_paginated_mode (surface->target, + CAIRO_PAGINATED_MODE_FALLBACK); + if (unlikely (status)) + goto FAIL; is_bounded = _cairo_surface_get_extents (surface->target, &extents); if (! is_bounded) { @@ -434,8 +499,10 @@ cairo_region_t *region; int num_rects, i; - surface->backend->set_paginated_mode (surface->target, + status = surface->backend->set_paginated_mode (surface->target, CAIRO_PAGINATED_MODE_FALLBACK); + if (unlikely (status)) + goto FAIL; region = _cairo_analysis_surface_get_unsupported (analysis); @@ -450,6 +517,13 @@ } } + if (surface->backend->requires_thumbnail_image) { + int width, height; + + if (surface->backend->requires_thumbnail_image (surface->target, &width, &height)) + _paint_thumbnail_image (surface, width, height); + } + FAIL: cairo_surface_destroy (analysis); @@ -659,6 +733,26 @@ return NULL; } +static cairo_int_status_t +_cairo_paginated_surface_tag (void *abstract_surface, + cairo_bool_t begin, + const char *tag_name, + const char *attributes, + const cairo_pattern_t *source, + const cairo_stroke_style_t *style, + const cairo_matrix_t *ctm, + const cairo_matrix_t *ctm_inverse, + const cairo_clip_t *clip) +{ + cairo_paginated_surface_t *surface = abstract_surface; + + return _cairo_surface_tag (surface->recording_surface, + begin, tag_name, attributes, + source, style, + ctm, ctm_inverse, + clip); +} + static cairo_surface_t * _cairo_paginated_surface_snapshot (void *abstract_other) { @@ -713,4 +807,5 @@ _cairo_paginated_surface_has_show_text_glyphs, _cairo_paginated_surface_show_text_glyphs, _cairo_paginated_surface_get_supported_mime_types, + _cairo_paginated_surface_tag, }; diff -Nru cairo-1.14.6/src/cairo-path-bounds.c cairo-1.15.10/src/cairo-path-bounds.c --- cairo-1.14.6/src/cairo-path-bounds.c 2015-10-27 21:04:30.000000000 +0000 +++ cairo-1.15.10/src/cairo-path-bounds.c 2017-12-07 02:14:36.000000000 +0000 @@ -154,6 +154,7 @@ _cairo_path_fixed_approximate_stroke_extents (const cairo_path_fixed_t *path, const cairo_stroke_style_t *style, const cairo_matrix_t *ctm, + cairo_bool_t is_vector, cairo_rectangle_int_t *extents) { if (path->has_extents) { @@ -161,6 +162,17 @@ double dx, dy; _cairo_stroke_style_max_distance_from_path (style, path, ctm, &dx, &dy); + if (is_vector) + { + /* When calculating extents for vector surfaces, ensure lines thinner + * than the fixed point resolution are not optimized away. */ + double min = _cairo_fixed_to_double (CAIRO_FIXED_EPSILON*2); + if (dx < min) + dx = min; + + if (dy < min) + dy = min; + } box_extents = path->extents; box_extents.p1.x -= _cairo_fixed_from_double (dx); @@ -185,6 +197,17 @@ { cairo_polygon_t polygon; cairo_status_t status; + cairo_stroke_style_t style; + + /* When calculating extents for vector surfaces, ensure lines thinner + * than one point are not optimized away. */ + double min_line_width = _cairo_matrix_transformed_circle_major_axis (ctm_inverse, 1.0); + if (stroke_style->line_width < min_line_width) + { + style = *stroke_style; + style.line_width = min_line_width; + stroke_style = &style; + } _cairo_polygon_init (&polygon, NULL, 0); status = _cairo_path_fixed_stroke_to_polygon (path, diff -Nru cairo-1.14.6/src/cairo-path-fixed.c cairo-1.15.10/src/cairo-path-fixed.c --- cairo-1.14.6/src/cairo-path-fixed.c 2015-10-27 21:04:30.000000000 +0000 +++ cairo-1.15.10/src/cairo-path-fixed.c 2017-12-07 02:14:36.000000000 +0000 @@ -347,7 +347,7 @@ _cairo_path_buf_destroy (this); } - VG (VALGRIND_MAKE_MEM_NOACCESS (path, sizeof (cairo_path_fixed_t))); + VG (VALGRIND_MAKE_MEM_UNDEFINED (path, sizeof (cairo_path_fixed_t))); } void diff -Nru cairo-1.14.6/src/cairo-path-stroke-boxes.c cairo-1.15.10/src/cairo-path-stroke-boxes.c --- cairo-1.14.6/src/cairo-path-stroke-boxes.c 2015-10-27 21:04:21.000000000 +0000 +++ cairo-1.15.10/src/cairo-path-stroke-boxes.c 2017-12-07 02:13:45.000000000 +0000 @@ -36,7 +36,7 @@ * Chris Wilson */ -#define _BSD_SOURCE /* for hypot() */ +#define _DEFAULT_SOURCE /* for hypot() */ #include "cairoint.h" #include "cairo-box-inline.h" diff -Nru cairo-1.14.6/src/cairo-path-stroke.c cairo-1.15.10/src/cairo-path-stroke.c --- cairo-1.14.6/src/cairo-path-stroke.c 2015-10-27 21:04:21.000000000 +0000 +++ cairo-1.15.10/src/cairo-path-stroke.c 2017-12-07 02:13:45.000000000 +0000 @@ -36,7 +36,7 @@ * Chris Wilson */ -#define _BSD_SOURCE /* for hypot() */ +#define _DEFAULT_SOURCE /* for hypot() */ #include "cairoint.h" #include "cairo-box-inline.h" diff -Nru cairo-1.14.6/src/cairo-path-stroke-polygon.c cairo-1.15.10/src/cairo-path-stroke-polygon.c --- cairo-1.14.6/src/cairo-path-stroke-polygon.c 2015-10-27 21:04:21.000000000 +0000 +++ cairo-1.15.10/src/cairo-path-stroke-polygon.c 2017-12-07 02:13:45.000000000 +0000 @@ -37,7 +37,7 @@ * Chris Wilson */ -#define _BSD_SOURCE /* for hypot() */ +#define _DEFAULT_SOURCE /* for hypot() */ #include "cairoint.h" #include "cairo-box-inline.h" diff -Nru cairo-1.14.6/src/cairo-path-stroke-tristrip.c cairo-1.15.10/src/cairo-path-stroke-tristrip.c --- cairo-1.14.6/src/cairo-path-stroke-tristrip.c 2015-10-27 21:04:21.000000000 +0000 +++ cairo-1.15.10/src/cairo-path-stroke-tristrip.c 2017-12-07 02:13:45.000000000 +0000 @@ -37,7 +37,7 @@ * Chris Wilson */ -#define _BSD_SOURCE /* for hypot() */ +#define _DEFAULT_SOURCE /* for hypot() */ #include "cairoint.h" #include "cairo-box-inline.h" diff -Nru cairo-1.14.6/src/cairo-pattern.c cairo-1.15.10/src/cairo-pattern.c --- cairo-1.14.6/src/cairo-pattern.c 2015-10-29 00:33:30.000000000 +0000 +++ cairo-1.15.10/src/cairo-pattern.c 2017-12-07 02:14:36.000000000 +0000 @@ -357,6 +357,7 @@ /* The reference count and user_data array are unique to the copy. */ CAIRO_REFERENCE_COUNT_INIT (&pattern->ref_count, 0); _cairo_user_data_array_init (&pattern->user_data); + cairo_list_init (&pattern->observers); return CAIRO_STATUS_SUCCESS; } @@ -396,6 +397,7 @@ CAIRO_REFERENCE_COUNT_INIT (&pattern->ref_count, 0); _cairo_user_data_array_init (&pattern->user_data); + cairo_list_init (&pattern->observers); } cairo_status_t @@ -464,19 +466,19 @@ #if HAVE_VALGRIND switch (pattern->type) { case CAIRO_PATTERN_TYPE_SOLID: - VALGRIND_MAKE_MEM_NOACCESS (pattern, sizeof (cairo_solid_pattern_t)); + VALGRIND_MAKE_MEM_UNDEFINED (pattern, sizeof (cairo_solid_pattern_t)); break; case CAIRO_PATTERN_TYPE_SURFACE: - VALGRIND_MAKE_MEM_NOACCESS (pattern, sizeof (cairo_surface_pattern_t)); + VALGRIND_MAKE_MEM_UNDEFINED (pattern, sizeof (cairo_surface_pattern_t)); break; case CAIRO_PATTERN_TYPE_LINEAR: - VALGRIND_MAKE_MEM_NOACCESS (pattern, sizeof (cairo_linear_pattern_t)); + VALGRIND_MAKE_MEM_UNDEFINED (pattern, sizeof (cairo_linear_pattern_t)); break; case CAIRO_PATTERN_TYPE_RADIAL: - VALGRIND_MAKE_MEM_NOACCESS (pattern, sizeof (cairo_radial_pattern_t)); + VALGRIND_MAKE_MEM_UNDEFINED (pattern, sizeof (cairo_radial_pattern_t)); break; case CAIRO_PATTERN_TYPE_MESH: - VALGRIND_MAKE_MEM_NOACCESS (pattern, sizeof (cairo_mesh_pattern_t)); + VALGRIND_MAKE_MEM_UNDEFINED (pattern, sizeof (cairo_mesh_pattern_t)); break; case CAIRO_PATTERN_TYPE_RASTER_SOURCE: break; @@ -1045,8 +1047,8 @@ * @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(). + * Use cairo_pattern_get_reference_count() to get the number of + * references to a #cairo_pattern_t. * * Return value: the referenced #cairo_pattern_t. * @@ -1071,8 +1073,8 @@ * cairo_pattern_get_type: * @pattern: a #cairo_pattern_t * - * This function returns the type a pattern. - * See #cairo_pattern_type_t for available types. + * Get the pattern's type. See #cairo_pattern_type_t for available + * types. * * Return value: The type of @pattern. * @@ -3132,6 +3134,59 @@ return TRUE; } +/** + * _cairo_pattern_is_constant_alpha: + * + * Convenience function to determine whether a pattern has constant + * alpha within the given extents. In this case the alpha argument is + * initialized to the alpha within the extents. + * + * Return value: %TRUE if the pattern has constant alpha. + **/ +cairo_bool_t +_cairo_pattern_is_constant_alpha (const cairo_pattern_t *abstract_pattern, + const cairo_rectangle_int_t *extents, + double *alpha) +{ + const cairo_pattern_union_t *pattern; + cairo_color_t color; + + if (_cairo_pattern_is_clear (abstract_pattern)) { + *alpha = 0.0; + return TRUE; + } + + if (_cairo_pattern_is_opaque (abstract_pattern, extents)) { + *alpha = 1.0; + return TRUE; + } + + pattern = (cairo_pattern_union_t *) abstract_pattern; + switch (pattern->base.type) { + case CAIRO_PATTERN_TYPE_SOLID: + *alpha = pattern->solid.color.alpha; + return TRUE; + + case CAIRO_PATTERN_TYPE_LINEAR: + case CAIRO_PATTERN_TYPE_RADIAL: + if (_cairo_gradient_pattern_is_solid (&pattern->gradient.base, extents, &color)) { + *alpha = color.alpha; + return TRUE; + } else { + return FALSE; + } + + /* TODO: need to test these as well */ + case CAIRO_PATTERN_TYPE_SURFACE: + case CAIRO_PATTERN_TYPE_RASTER_SOURCE: + case CAIRO_PATTERN_TYPE_MESH: + return FALSE; + } + + ASSERT_NOT_REACHED; + return FALSE; +} + static cairo_bool_t _mesh_is_clear (const cairo_mesh_pattern_t *mesh) { @@ -3522,13 +3577,17 @@ * For unbounded patterns, the @extents will be initialized with * "infinite" extents, (minimum and maximum fixed-point values). * + * When is_vector is TRUE, avoid rounding to zero widths or heights that + * are less than 1 unit. + * * XXX: Currently, bounded gradient patterns will also return * "infinite" extents, though it would be possible to optimize these * with a little more work. **/ void _cairo_pattern_get_extents (const cairo_pattern_t *pattern, - cairo_rectangle_int_t *extents) + cairo_rectangle_int_t *extents, + cairo_bool_t is_vector) { double x1, y1, x2, y2; int ix1, ix2, iy1, iy2; @@ -3731,6 +3790,8 @@ else ix2 = _cairo_lround (x2); extents->x = ix1; extents->width = ix2 - ix1; + if (is_vector && extents->width == 0 && x1 != x2) + extents->width += 1; if (!round_y) { y1 -= 0.5; @@ -3745,6 +3806,8 @@ else iy2 = _cairo_lround (y2); extents->y = iy1; extents->height = iy2 - iy1; + if (is_vector && extents->height == 0 && y1 != y2) + extents->height += 1; return; @@ -3796,7 +3859,7 @@ } } - _cairo_pattern_get_extents (pattern, extents); + _cairo_pattern_get_extents (pattern, extents, TRUE); return CAIRO_STATUS_SUCCESS; } @@ -4607,14 +4670,43 @@ _cairo_debug_print_surface_pattern (FILE *file, const cairo_surface_pattern_t *pattern) { - printf (" surface type: %d\n", pattern->surface->type); + const char *s; + switch (pattern->surface->type) { + case CAIRO_SURFACE_TYPE_IMAGE: s = "image"; break; + case CAIRO_SURFACE_TYPE_PDF: s = "pdf"; break; + case CAIRO_SURFACE_TYPE_PS: s = "ps"; break; + case CAIRO_SURFACE_TYPE_XLIB: s = "xlib"; break; + case CAIRO_SURFACE_TYPE_XCB: s = "xcb"; break; + case CAIRO_SURFACE_TYPE_GLITZ: s = "glitz"; break; + case CAIRO_SURFACE_TYPE_QUARTZ: s = "quartz"; break; + case CAIRO_SURFACE_TYPE_WIN32: s = "win32"; break; + case CAIRO_SURFACE_TYPE_BEOS: s = "beos"; break; + case CAIRO_SURFACE_TYPE_DIRECTFB: s = "directfb"; break; + case CAIRO_SURFACE_TYPE_SVG: s = "svg"; break; + case CAIRO_SURFACE_TYPE_OS2: s = "os2"; break; + case CAIRO_SURFACE_TYPE_WIN32_PRINTING: s = "win32_printing"; break; + case CAIRO_SURFACE_TYPE_QUARTZ_IMAGE: s = "quartz_image"; break; + case CAIRO_SURFACE_TYPE_SCRIPT: s = "script"; break; + case CAIRO_SURFACE_TYPE_QT: s = "qt"; break; + case CAIRO_SURFACE_TYPE_RECORDING: s = "recording"; break; + case CAIRO_SURFACE_TYPE_VG: s = "vg"; break; + case CAIRO_SURFACE_TYPE_GL: s = "gl"; break; + case CAIRO_SURFACE_TYPE_DRM: s = "drm"; break; + case CAIRO_SURFACE_TYPE_TEE: s = "tee"; break; + case CAIRO_SURFACE_TYPE_XML: s = "xml"; break; + case CAIRO_SURFACE_TYPE_SKIA: s = "skia"; break; + case CAIRO_SURFACE_TYPE_SUBSURFACE: s = "subsurface"; break; + case CAIRO_SURFACE_TYPE_COGL: s = "cogl"; break; + default: s = "invalid"; ASSERT_NOT_REACHED; break; + } + fprintf (file, " surface type: %s\n", s); } static void _cairo_debug_print_raster_source_pattern (FILE *file, const cairo_raster_source_pattern_t *raster) { - printf (" content: %x, size %dx%d\n", raster->content, raster->extents.width, raster->extents.height); + fprintf (file, " content: %x, size %dx%d\n", raster->content, raster->extents.width, raster->extents.height); } static void diff -Nru cairo-1.14.6/src/cairo-pattern-private.h cairo-1.15.10/src/cairo-pattern-private.h --- cairo-1.14.6/src/cairo-pattern-private.h 2015-10-27 21:04:21.000000000 +0000 +++ cairo-1.15.10/src/cairo-pattern-private.h 2017-12-07 23:22:14.000000000 +0000 @@ -256,6 +256,11 @@ const cairo_rectangle_int_t *extents, cairo_color_t *color); +cairo_private cairo_bool_t +_cairo_pattern_is_constant_alpha (const cairo_pattern_t *abstract_pattern, + const cairo_rectangle_int_t *extents, + double *alpha); + cairo_private void _cairo_gradient_pattern_fit_to_range (const cairo_gradient_pattern_t *gradient, double max_value, @@ -296,7 +301,8 @@ cairo_private void _cairo_pattern_get_extents (const cairo_pattern_t *pattern, - cairo_rectangle_int_t *extents); + cairo_rectangle_int_t *extents, + cairo_bool_t is_vector); cairo_private cairo_int_status_t _cairo_pattern_get_ink_extents (const cairo_pattern_t *pattern, diff -Nru cairo-1.14.6/src/cairo-pdf.h cairo-1.15.10/src/cairo-pdf.h --- cairo-1.14.6/src/cairo-pdf.h 2015-10-27 21:04:21.000000000 +0000 +++ cairo-1.15.10/src/cairo-pdf.h 2017-12-07 02:14:36.000000000 +0000 @@ -85,6 +85,73 @@ double width_in_points, double height_in_points); +/** + * cairo_pdf_outline_flags_t: + * @CAIRO_PDF_OUTLINE_FLAG_OPEN: The outline item defaults to open in the PDF viewer (Since 1.16) + * @CAIRO_PDF_OUTLINE_FLAG_BOLD: The outline item is displayed by the viewer in bold text (Since 1.16) + * @CAIRO_PDF_OUTLINE_FLAG_ITALIC: The outline item is displayed by the viewer in italic text (Since 1.16) + * + * #cairo_pdf_outline_flags_t is used by the + * cairo_pdf_surface_add_outline() function specify the attributes of + * an outline item. These flags may be bitwise-or'd to produce any + * combination of flags. + * + * Since: 1.16 + **/ +typedef enum _cairo_pdf_outline_flags { + CAIRO_PDF_OUTLINE_FLAG_OPEN = 0x1, + CAIRO_PDF_OUTLINE_FLAG_BOLD = 0x2, + CAIRO_PDF_OUTLINE_FLAG_ITALIC = 0x4, +} cairo_pdf_outline_flags_t; + +#define CAIRO_PDF_OUTLINE_ROOT 0 + +cairo_public int +cairo_pdf_surface_add_outline (cairo_surface_t *surface, + int parent_id, + const char *utf8, + const char *link_attribs, + cairo_pdf_outline_flags_t flags); + +/** + * cairo_pdf_metadata_t: + * @CAIRO_PDF_METADATA_TITLE: The document title (Since 1.16) + * @CAIRO_PDF_METADATA_AUTHOR: The document author (Since 1.16) + * @CAIRO_PDF_METADATA_SUBJECT: The document subject (Since 1.16) + * @CAIRO_PDF_METADATA_KEYWORDS: The document keywords (Since 1.16) + * @CAIRO_PDF_METADATA_CREATOR: The document creator (Since 1.16) + * @CAIRO_PDF_METADATA_CREATE_DATE: The document creation date (Since 1.16) + * @CAIRO_PDF_METADATA_MOD_DATE: The document modification date (Since 1.16) + * + * #cairo_pdf_metadata_t is used by the + * cairo_pdf_surface_set_metadata() function specify the metadata to set. + * + * Since: 1.16 + **/ +typedef enum _cairo_pdf_metadata { + CAIRO_PDF_METADATA_TITLE, + CAIRO_PDF_METADATA_AUTHOR, + CAIRO_PDF_METADATA_SUBJECT, + CAIRO_PDF_METADATA_KEYWORDS, + CAIRO_PDF_METADATA_CREATOR, + CAIRO_PDF_METADATA_CREATE_DATE, + CAIRO_PDF_METADATA_MOD_DATE, +} cairo_pdf_metadata_t; + +cairo_public void +cairo_pdf_surface_set_metadata (cairo_surface_t *surface, + cairo_pdf_metadata_t metadata, + const char *utf8); + +cairo_public void +cairo_pdf_surface_set_page_label (cairo_surface_t *surface, + const char *utf8); + +cairo_public void +cairo_pdf_surface_set_thumbnail_size (cairo_surface_t *surface, + int width, + int height); + CAIRO_END_DECLS #else /* CAIRO_HAS_PDF_SURFACE */ diff -Nru cairo-1.14.6/src/cairo-pdf-interchange.c cairo-1.15.10/src/cairo-pdf-interchange.c --- cairo-1.14.6/src/cairo-pdf-interchange.c 1970-01-01 00:00:00.000000000 +0000 +++ cairo-1.15.10/src/cairo-pdf-interchange.c 2017-12-07 02:14:36.000000000 +0000 @@ -0,0 +1,1728 @@ +/* -*- Mode: c; c-basic-offset: 4; indent-tabs-mode: t; tab-width: 8; -*- */ +/* cairo - a vector graphics library with display and print output + * + * Copyright © 2016 Adrian Johnson + * + * This library is free software; you can redistribute it and/or + * modify it either under the terms of the GNU Lesser General Public + * License version 2.1 as published by the Free Software Foundation + * (the "LGPL") or, at your option, under the terms of the Mozilla + * Public License Version 1.1 (the "MPL"). If you do not alter this + * notice, a recipient may use your version of this file under either + * the MPL or the LGPL. + * + * You should have received a copy of the LGPL along with this library + * in the file COPYING-LGPL-2.1; if not, write to the Free Software + * Foundation, Inc., 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 Adrian Johnson. + * + * Contributor(s): + * Adrian Johnson + */ + + +/* PDF Document Interchange features: + * - metadata + * - document outline + * - tagged pdf + * - hyperlinks + * - page labels + */ + +#define _DEFAULT_SOURCE /* for localtime_r(), gmtime_r(), snprintf(), strdup() */ +#include "cairoint.h" + +#include "cairo-pdf.h" +#include "cairo-pdf-surface-private.h" + +#include "cairo-array-private.h" +#include "cairo-error-private.h" +#include "cairo-output-stream-private.h" + +#include + +#ifndef HAVE_LOCALTIME_R +#define localtime_r(T, BUF) (*(BUF) = *localtime (T)) +#endif +#ifndef HAVE_GMTIME_R +#define gmtime_r(T, BUF) (*(BUF) = *gmtime (T)) +#endif + +static void +write_rect_to_pdf_quad_points (cairo_output_stream_t *stream, + const cairo_rectangle_t *rect, + double surface_height) +{ + _cairo_output_stream_printf (stream, + "%f %f %f %f %f %f %f %f", + rect->x, + surface_height - rect->y, + rect->x + rect->width, + surface_height - rect->y, + rect->x + rect->width, + surface_height - (rect->y + rect->height), + rect->x, + surface_height - (rect->y + rect->height)); +} + +static void +write_rect_int_to_pdf_bbox (cairo_output_stream_t *stream, + const cairo_rectangle_int_t *rect, + double surface_height) +{ + _cairo_output_stream_printf (stream, + "%d %f %d %f", + rect->x, + surface_height - (rect->y + rect->height), + rect->x + rect->width, + surface_height - rect->y); +} + +static cairo_int_status_t +add_tree_node (cairo_pdf_surface_t *surface, + cairo_pdf_struct_tree_node_t *parent, + const char *name, + cairo_pdf_struct_tree_node_t **new_node) +{ + cairo_pdf_struct_tree_node_t *node; + + node = malloc (sizeof(cairo_pdf_struct_tree_node_t)); + if (unlikely (node == NULL)) + return _cairo_error (CAIRO_STATUS_NO_MEMORY); + + node->name = strdup (name); + node->res = _cairo_pdf_surface_new_object (surface); + if (node->res.id == 0) + return _cairo_error (CAIRO_STATUS_NO_MEMORY); + + node->parent = parent; + cairo_list_init (&node->children); + _cairo_array_init (&node->mcid, sizeof(struct page_mcid)); + node->annot_res.id = 0; + node->extents.valid = FALSE; + cairo_list_init (&node->extents.link); + + cairo_list_add_tail (&node->link, &parent->children); + + *new_node = node; + return CAIRO_STATUS_SUCCESS; +} + +static cairo_bool_t +is_leaf_node (cairo_pdf_struct_tree_node_t *node) +{ + return node->parent && cairo_list_is_empty (&node->children) ; +} + +static void +free_node (cairo_pdf_struct_tree_node_t *node) +{ + cairo_pdf_struct_tree_node_t *child, *next; + + if (!node) + return; + + cairo_list_foreach_entry_safe (child, next, cairo_pdf_struct_tree_node_t, + &node->children, link) + { + cairo_list_del (&child->link); + free_node (child); + } + free (node->name); + _cairo_array_fini (&node->mcid); + free (node); +} + +static cairo_status_t +add_mcid_to_node (cairo_pdf_surface_t *surface, + cairo_pdf_struct_tree_node_t *node, + int page, + int *mcid) +{ + struct page_mcid mcid_elem; + cairo_int_status_t status; + cairo_pdf_interchange_t *ic = &surface->interchange; + + status = _cairo_array_append (&ic->mcid_to_tree, &node); + if (unlikely (status)) + return status; + + mcid_elem.page = page; + mcid_elem.mcid = _cairo_array_num_elements (&ic->mcid_to_tree) - 1; + *mcid = mcid_elem.mcid; + return _cairo_array_append (&node->mcid, &mcid_elem); +} + +static cairo_int_status_t +add_annotation (cairo_pdf_surface_t *surface, + cairo_pdf_struct_tree_node_t *node, + const char *name, + const char *attributes) +{ + cairo_int_status_t status = CAIRO_STATUS_SUCCESS; + cairo_pdf_interchange_t *ic = &surface->interchange; + cairo_pdf_annotation_t *annot; + + annot = malloc (sizeof(cairo_pdf_annotation_t)); + if (unlikely (annot == NULL)) + return _cairo_error (CAIRO_STATUS_NO_MEMORY); + + status = _cairo_tag_parse_link_attributes (attributes, &annot->link_attrs); + if (unlikely (status)) { + free (annot); + return status; + } + + annot->node = node; + + status = _cairo_array_append (&ic->annots, &annot); + + return status; +} + +static void +free_annotation (cairo_pdf_annotation_t *annot) +{ + _cairo_array_fini (&annot->link_attrs.rects); + free (annot->link_attrs.dest); + free (annot->link_attrs.uri); + free (annot->link_attrs.file); + free (annot); +} + +static void +cairo_pdf_interchange_clear_annotations (cairo_pdf_surface_t *surface) +{ + cairo_pdf_interchange_t *ic = &surface->interchange; + int num_elems, i; + + num_elems = _cairo_array_num_elements (&ic->annots); + for (i = 0; i < num_elems; i++) { + cairo_pdf_annotation_t * annot; + + _cairo_array_copy_element (&ic->annots, i, &annot); + free_annotation (annot); + } + _cairo_array_truncate (&ic->annots, 0); +} + +static cairo_int_status_t +cairo_pdf_interchange_write_node_object (cairo_pdf_surface_t *surface, + cairo_pdf_struct_tree_node_t *node) +{ + struct page_mcid *mcid_elem; + int i, num_mcid, first_page; + cairo_pdf_resource_t *page_res; + cairo_pdf_struct_tree_node_t *child; + + _cairo_pdf_surface_update_object (surface, node->res); + _cairo_output_stream_printf (surface->output, + "%d 0 obj\n" + "<< /Type /StructElem\n" + " /S /%s\n" + " /P %d 0 R\n", + node->res.id, + node->name, + node->parent->res.id); + + if (! cairo_list_is_empty (&node->children)) { + if (cairo_list_is_singular (&node->children) && node->annot_res.id == 0) { + child = cairo_list_first_entry (&node->children, cairo_pdf_struct_tree_node_t, link); + _cairo_output_stream_printf (surface->output, " /K %d 0 R\n", child->res.id); + } else { + _cairo_output_stream_printf (surface->output, " /K [ "); + if (node->annot_res.id != 0) { + _cairo_output_stream_printf (surface->output, + "<< /Type /OBJR /Obj %d 0 R >> ", + node->annot_res.id); + } + cairo_list_foreach_entry (child, cairo_pdf_struct_tree_node_t, + &node->children, link) + { + _cairo_output_stream_printf (surface->output, "%d 0 R ", child->res.id); + } + _cairo_output_stream_printf (surface->output, "]\n"); + } + } else { + num_mcid = _cairo_array_num_elements (&node->mcid); + if (num_mcid > 0 ) { + mcid_elem = _cairo_array_index (&node->mcid, 0); + first_page = mcid_elem->page; + page_res = _cairo_array_index (&surface->pages, first_page - 1); + _cairo_output_stream_printf (surface->output, " /Pg %d 0 R\n", page_res->id); + + if (num_mcid == 1 && node->annot_res.id == 0) { + _cairo_output_stream_printf (surface->output, " /K %d\n", mcid_elem->mcid); + } else { + _cairo_output_stream_printf (surface->output, " /K [ "); + if (node->annot_res.id != 0) { + _cairo_output_stream_printf (surface->output, + "<< /Type /OBJR /Obj %d 0 R >> ", + node->annot_res.id); + } + for (i = 0; i < num_mcid; i++) { + mcid_elem = _cairo_array_index (&node->mcid, i); + page_res = _cairo_array_index (&surface->pages, mcid_elem->page - 1); + if (mcid_elem->page == first_page) { + _cairo_output_stream_printf (surface->output, "%d ", mcid_elem->mcid); + } else { + _cairo_output_stream_printf (surface->output, + "\n << /Type /MCR /Pg %d 0 R /MCID %d >> ", + page_res->id, + mcid_elem->mcid); + } + } + _cairo_output_stream_printf (surface->output, "]\n"); + } + } + } + _cairo_output_stream_printf (surface->output, + ">>\n" + "endobj\n"); + + return _cairo_output_stream_get_status (surface->output); +} + +static void +init_named_dest_key (cairo_pdf_named_dest_t *dest) +{ + dest->base.hash = _cairo_hash_bytes (_CAIRO_HASH_INIT_VALUE, + dest->attrs.name, + strlen (dest->attrs.name)); +} + +static cairo_bool_t +_named_dest_equal (const void *key_a, const void *key_b) +{ + const cairo_pdf_named_dest_t *a = key_a; + const cairo_pdf_named_dest_t *b = key_b; + + return strcmp (a->attrs.name, b->attrs.name) == 0; +} + +static void +_named_dest_pluck (void *entry, void *closure) +{ + cairo_pdf_named_dest_t *dest = entry; + cairo_hash_table_t *table = closure; + + _cairo_hash_table_remove (table, &dest->base); + free (dest->attrs.name); + free (dest); +} + +static cairo_int_status_t +cairo_pdf_interchange_write_explicit_dest (cairo_pdf_surface_t *surface, + int page, + cairo_bool_t has_pos, + double x, + double y) +{ + cairo_pdf_resource_t res; + double height; + + if (page < 1 || page > (int)_cairo_array_num_elements (&surface->pages)) + return CAIRO_INT_STATUS_TAG_ERROR; + + _cairo_array_copy_element (&surface->page_heights, page - 1, &height); + _cairo_array_copy_element (&surface->pages, page - 1, &res); + if (has_pos) { + _cairo_output_stream_printf (surface->output, + " /Dest [%d 0 R /XYZ %f %f 0]\n", + res.id, + x, + height - y); + } else { + _cairo_output_stream_printf (surface->output, + " /Dest [%d 0 R /XYZ null null 0]\n", + res.id); + } + + return CAIRO_STATUS_SUCCESS; +} + +static cairo_int_status_t +cairo_pdf_interchange_write_dest (cairo_pdf_surface_t *surface, + cairo_link_attrs_t *link_attrs) +{ + cairo_int_status_t status; + cairo_pdf_interchange_t *ic = &surface->interchange; + char *dest = NULL; + + if (link_attrs->dest) { + cairo_pdf_named_dest_t key; + cairo_pdf_named_dest_t *named_dest; + + /* check if this is a link to an internal named dest */ + key.attrs.name = link_attrs->dest; + init_named_dest_key (&key); + named_dest = _cairo_hash_table_lookup (ic->named_dests, &key.base); + if (named_dest && named_dest->attrs.internal) { + /* if dests exists and has internal attribute, use a direct + * reference instead of the name */ + double x = 0; + double y = 0; + + if (named_dest->extents.valid) { + x = named_dest->extents.extents.x; + y = named_dest->extents.extents.y; + } + + if (named_dest->attrs.x_valid) + x = named_dest->attrs.x; + + if (named_dest->attrs.y_valid) + y = named_dest->attrs.y; + + status = cairo_pdf_interchange_write_explicit_dest (surface, + named_dest->page, + TRUE, + x, y); + return status; + } + } + + if (link_attrs->dest) { + status = _cairo_utf8_to_pdf_string (link_attrs->dest, &dest); + if (unlikely (status)) + return status; + + _cairo_output_stream_printf (surface->output, + " /Dest %s\n", + dest); + free (dest); + } else { + status = cairo_pdf_interchange_write_explicit_dest (surface, + link_attrs->page, + link_attrs->has_pos, + link_attrs->pos.x, + link_attrs->pos.y); + } + + return CAIRO_STATUS_SUCCESS; +} + +static cairo_int_status_t +cairo_pdf_interchange_write_link_action (cairo_pdf_surface_t *surface, + cairo_link_attrs_t *link_attrs) +{ + cairo_int_status_t status; + char *dest = NULL; + + if (link_attrs->link_type == TAG_LINK_DEST) { + status = cairo_pdf_interchange_write_dest (surface, link_attrs); + if (unlikely (status)) + return status; + + } else if (link_attrs->link_type == TAG_LINK_URI) { + _cairo_output_stream_printf (surface->output, + " /A <<\n" + " /Type /Action\n" + " /S /URI\n" + " /URI (%s)\n" + " >>\n", + link_attrs->uri); + } else if (link_attrs->link_type == TAG_LINK_FILE) { + _cairo_output_stream_printf (surface->output, + " /A <<\n" + " /Type /Action\n" + " /S /GoToR\n" + " /F (%s)\n", + link_attrs->file); + if (link_attrs->dest) { + status = _cairo_utf8_to_pdf_string (link_attrs->dest, &dest); + if (unlikely (status)) + return status; + + _cairo_output_stream_printf (surface->output, + " /D %s\n", + dest); + free (dest); + } else { + if (link_attrs->has_pos) { + _cairo_output_stream_printf (surface->output, + " /D [%d %f %f 0]\n", + link_attrs->page, + link_attrs->pos.x, + link_attrs->pos.y); + } else { + _cairo_output_stream_printf (surface->output, + " /D [%d null null 0]\n", + link_attrs->page); + } + } + _cairo_output_stream_printf (surface->output, + " >>\n"); + } + + return CAIRO_STATUS_SUCCESS; +} + +static cairo_int_status_t +cairo_pdf_interchange_write_annot (cairo_pdf_surface_t *surface, + cairo_pdf_annotation_t *annot) +{ + cairo_int_status_t status = CAIRO_STATUS_SUCCESS; + cairo_pdf_interchange_t *ic = &surface->interchange; + cairo_pdf_struct_tree_node_t *node = annot->node; + int sp; + int i, num_rects; + double height; + + num_rects = _cairo_array_num_elements (&annot->link_attrs.rects); + if (strcmp (node->name, CAIRO_TAG_LINK) == 0 && + annot->link_attrs.link_type != TAG_LINK_EMPTY && + (node->extents.valid || num_rects > 0)) + { + status = _cairo_array_append (&ic->parent_tree, &node->res); + if (unlikely (status)) + return status; + + sp = _cairo_array_num_elements (&ic->parent_tree) - 1; + + node->annot_res = _cairo_pdf_surface_new_object (surface); + + status = _cairo_array_append (&surface->page_annots, &node->annot_res); + if (unlikely (status)) + return status; + + _cairo_pdf_surface_update_object (surface, node->annot_res); + _cairo_output_stream_printf (surface->output, + "%d 0 obj\n" + "<< /Type /Annot\n" + " /Subtype /Link\n" + " /StructParent %d\n", + node->annot_res.id, + sp); + + height = surface->height; + if (num_rects > 0) { + cairo_rectangle_int_t bbox_rect; + + _cairo_output_stream_printf (surface->output, + " /QuadPoints [ "); + for (i = 0; i < num_rects; i++) { + cairo_rectangle_t rectf; + cairo_rectangle_int_t recti; + + _cairo_array_copy_element (&annot->link_attrs.rects, i, &rectf); + _cairo_rectangle_int_from_double (&recti, &rectf); + if (i == 0) + bbox_rect = recti; + else + _cairo_rectangle_union (&bbox_rect, &recti); + + write_rect_to_pdf_quad_points (surface->output, &rectf, height); + _cairo_output_stream_printf (surface->output, " "); + } + _cairo_output_stream_printf (surface->output, + "]\n" + " /Rect [ "); + write_rect_int_to_pdf_bbox (surface->output, &bbox_rect, height); + _cairo_output_stream_printf (surface->output, " ]\n"); + } else { + _cairo_output_stream_printf (surface->output, + " /Rect [ "); + write_rect_int_to_pdf_bbox (surface->output, &node->extents.extents, height); + _cairo_output_stream_printf (surface->output, " ]\n"); + } + + status = cairo_pdf_interchange_write_link_action (surface, &annot->link_attrs); + if (unlikely (status)) + return status; + + _cairo_output_stream_printf (surface->output, + " /BS << /W 0 >>" + ">>\n" + "endobj\n"); + + status = _cairo_output_stream_get_status (surface->output); + } + + return status; +} + +static cairo_int_status_t +cairo_pdf_interchange_walk_struct_tree (cairo_pdf_surface_t *surface, + cairo_pdf_struct_tree_node_t *node, + cairo_int_status_t (*func) (cairo_pdf_surface_t *surface, + cairo_pdf_struct_tree_node_t *node)) +{ + cairo_int_status_t status; + cairo_pdf_struct_tree_node_t *child; + + if (node->parent) { + status = func (surface, node); + if (unlikely (status)) + return status; + } + + cairo_list_foreach_entry (child, cairo_pdf_struct_tree_node_t, + &node->children, link) + { + status = cairo_pdf_interchange_walk_struct_tree (surface, child, func); + if (unlikely (status)) + return status; + } + + return CAIRO_STATUS_SUCCESS; +} + +static cairo_int_status_t +cairo_pdf_interchange_write_struct_tree (cairo_pdf_surface_t *surface) +{ + cairo_pdf_interchange_t *ic = &surface->interchange; + cairo_pdf_struct_tree_node_t *child; + + if (cairo_list_is_empty (&ic->struct_root->children)) + return CAIRO_STATUS_SUCCESS; + + surface->struct_tree_root = _cairo_pdf_surface_new_object (surface); + ic->struct_root->res = surface->struct_tree_root; + + cairo_pdf_interchange_walk_struct_tree (surface, ic->struct_root, cairo_pdf_interchange_write_node_object); + + child = cairo_list_first_entry (&ic->struct_root->children, cairo_pdf_struct_tree_node_t, link); + _cairo_pdf_surface_update_object (surface, surface->struct_tree_root); + _cairo_output_stream_printf (surface->output, + "%d 0 obj\n" + "<< /Type /StructTreeRoot\n" + " /ParentTree %d 0 R\n", + surface->struct_tree_root.id, + ic->parent_tree_res.id); + + if (cairo_list_is_singular (&ic->struct_root->children)) { + child = cairo_list_first_entry (&ic->struct_root->children, cairo_pdf_struct_tree_node_t, link); + _cairo_output_stream_printf (surface->output, " /K [ %d 0 R ]\n", child->res.id); + } else { + _cairo_output_stream_printf (surface->output, " /K [ "); + + cairo_list_foreach_entry (child, cairo_pdf_struct_tree_node_t, + &ic->struct_root->children, link) + { + _cairo_output_stream_printf (surface->output, "%d 0 R ", child->res.id); + } + _cairo_output_stream_printf (surface->output, "]\n"); + } + + _cairo_output_stream_printf (surface->output, + ">>\n" + "endobj\n"); + + return CAIRO_STATUS_SUCCESS; +} + +static cairo_int_status_t +cairo_pdf_interchange_write_page_annots (cairo_pdf_surface_t *surface) +{ + cairo_pdf_interchange_t *ic = &surface->interchange; + int num_elems, i; + cairo_int_status_t status = CAIRO_STATUS_SUCCESS; + + num_elems = _cairo_array_num_elements (&ic->annots); + for (i = 0; i < num_elems; i++) { + cairo_pdf_annotation_t * annot; + + _cairo_array_copy_element (&ic->annots, i, &annot); + status = cairo_pdf_interchange_write_annot (surface, annot); + if (unlikely (status)) + return status; + } + + return status; +} + +static cairo_int_status_t +cairo_pdf_interchange_write_page_parent_elems (cairo_pdf_surface_t *surface) +{ + int num_elems, i; + cairo_pdf_struct_tree_node_t *node; + cairo_pdf_resource_t res; + cairo_pdf_interchange_t *ic = &surface->interchange; + cairo_int_status_t status = CAIRO_STATUS_SUCCESS; + + surface->page_parent_tree = -1; + num_elems = _cairo_array_num_elements (&ic->mcid_to_tree); + if (num_elems > 0) { + res = _cairo_pdf_surface_new_object (surface); + _cairo_output_stream_printf (surface->output, + "%d 0 obj\n" + "[\n", + res.id); + for (i = 0; i < num_elems; i++) { + _cairo_array_copy_element (&ic->mcid_to_tree, i, &node); + _cairo_output_stream_printf (surface->output, " %d 0 R\n", node->res.id); + } + _cairo_output_stream_printf (surface->output, + "]\n" + "endobj\n"); + status = _cairo_array_append (&ic->parent_tree, &res); + surface->page_parent_tree = _cairo_array_num_elements (&ic->parent_tree) - 1; + } + + return status; +} + +static cairo_int_status_t +cairo_pdf_interchange_write_parent_tree (cairo_pdf_surface_t *surface) +{ + int num_elems, i; + cairo_pdf_resource_t *res; + cairo_pdf_interchange_t *ic = &surface->interchange; + + num_elems = _cairo_array_num_elements (&ic->parent_tree); + if (num_elems > 0) { + ic->parent_tree_res = _cairo_pdf_surface_new_object (surface); + _cairo_output_stream_printf (surface->output, + "%d 0 obj\n" + "<< /Nums [\n", + ic->parent_tree_res.id); + for (i = 0; i < num_elems; i++) { + res = _cairo_array_index (&ic->parent_tree, i); + if (res->id) { + _cairo_output_stream_printf (surface->output, + " %d %d 0 R\n", + i, + res->id); + } + } + _cairo_output_stream_printf (surface->output, + " ]\n" + ">>\n" + "endobj\n"); + } + + return CAIRO_STATUS_SUCCESS; +} + +static cairo_int_status_t +cairo_pdf_interchange_write_outline (cairo_pdf_surface_t *surface) +{ + int num_elems, i; + cairo_pdf_outline_entry_t *outline; + cairo_pdf_interchange_t *ic = &surface->interchange; + cairo_int_status_t status; + char *name = NULL; + + num_elems = _cairo_array_num_elements (&ic->outline); + if (num_elems < 2) + return CAIRO_INT_STATUS_SUCCESS; + + _cairo_array_copy_element (&ic->outline, 0, &outline); + outline->res = _cairo_pdf_surface_new_object (surface); + surface->outlines_dict_res = outline->res; + _cairo_output_stream_printf (surface->output, + "%d 0 obj\n" + "<< /Type /Outlines\n" + " /First %d 0 R\n" + " /Last %d 0 R\n" + " /Count %d\n" + ">>\n" + "endobj\n", + outline->res.id, + outline->first_child->res.id, + outline->last_child->res.id, + outline->count); + + for (i = 1; i < num_elems; i++) { + _cairo_array_copy_element (&ic->outline, i, &outline); + _cairo_pdf_surface_update_object (surface, outline->res); + + status = _cairo_utf8_to_pdf_string (outline->name, &name); + if (unlikely (status)) + return status; + + _cairo_output_stream_printf (surface->output, + "%d 0 obj\n" + "<< /Title %s\n" + " /Parent %d 0 R\n", + outline->res.id, + name, + outline->parent->res.id); + free (name); + + if (outline->prev) { + _cairo_output_stream_printf (surface->output, + " /Prev %d 0 R\n", + outline->prev->res.id); + } + + if (outline->next) { + _cairo_output_stream_printf (surface->output, + " /Next %d 0 R\n", + outline->next->res.id); + } + + if (outline->first_child) { + _cairo_output_stream_printf (surface->output, + " /First %d 0 R\n" + " /Last %d 0 R\n" + " /Count %d\n", + outline->first_child->res.id, + outline->last_child->res.id, + outline->count); + } + + if (outline->flags) { + int flags = 0; + if (outline->flags & CAIRO_PDF_OUTLINE_FLAG_ITALIC) + flags |= 1; + if (outline->flags & CAIRO_PDF_OUTLINE_FLAG_BOLD) + flags |= 2; + _cairo_output_stream_printf (surface->output, + " /F %d\n", + flags); + } + + status = cairo_pdf_interchange_write_link_action (surface, &outline->link_attrs); + if (unlikely (status)) + return status; + + _cairo_output_stream_printf (surface->output, + ">>\n" + "endobj\n"); + } + + return status; +} + +/* + * Split a page label into a text prefix and numeric suffix. Leading '0's are + * included in the prefix. eg + * "3" => NULL, 3 + * "cover" => "cover", 0 + * "A-2" => "A-", 2 + * "A-002" => "A-00", 2 + */ +static char * +split_label (const char* label, int *num) +{ + int len, i; + + *num = 0; + len = strlen (label); + if (len == 0) + return NULL; + + i = len; + while (i > 0 && _cairo_isdigit (label[i-1])) + i--; + + while (i < len && label[i] == '0') + i++; + + if (i < len) + sscanf (label + i, "%d", num); + + if (i > 0) { + char *s; + s = _cairo_malloc (i + 1); + if (!s) + return NULL; + + memcpy (s, label, i); + s[i] = 0; + return s; + } + + return NULL; +} + +/* strcmp that handles NULL arguments */ +static cairo_bool_t +strcmp_null (const char *s1, const char *s2) +{ + if (s1 && s2) + return strcmp (s1, s2) == 0; + + if (!s1 && !s2) + return TRUE; + + return FALSE; +} + +static cairo_int_status_t +cairo_pdf_interchange_write_page_labels (cairo_pdf_surface_t *surface) +{ + int num_elems, i; + char *label; + char *prefix; + char *prev_prefix; + int num, prev_num; + cairo_int_status_t status; + cairo_bool_t has_labels; + + /* Check if any labels defined */ + num_elems = _cairo_array_num_elements (&surface->page_labels); + has_labels = FALSE; + for (i = 0; i < num_elems; i++) { + _cairo_array_copy_element (&surface->page_labels, i, &label); + if (label) { + has_labels = TRUE; + break; + } + } + + if (!has_labels) + return CAIRO_STATUS_SUCCESS; + + surface->page_labels_res = _cairo_pdf_surface_new_object (surface); + _cairo_output_stream_printf (surface->output, + "%d 0 obj\n" + "<< /Nums [\n", + surface->page_labels_res.id); + prefix = NULL; + prev_prefix = NULL; + num = 0; + prev_num = 0; + for (i = 0; i < num_elems; i++) { + _cairo_array_copy_element (&surface->page_labels, i, &label); + if (label) { + prefix = split_label (label, &num); + } else { + prefix = NULL; + num = i + 1; + } + + if (!strcmp_null (prefix, prev_prefix) || num != prev_num + 1) { + _cairo_output_stream_printf (surface->output, " %d << ", i); + + if (num) + _cairo_output_stream_printf (surface->output, "/S /D /St %d ", num); + + if (prefix) { + char *s; + status = _cairo_utf8_to_pdf_string (prefix, &s); + if (unlikely (status)) + return status; + + _cairo_output_stream_printf (surface->output, "/P %s ", s); + free (s); + } + + _cairo_output_stream_printf (surface->output, ">>\n"); + } + free (prev_prefix); + prev_prefix = prefix; + prefix = NULL; + prev_num = num; + } + free (prefix); + free (prev_prefix); + _cairo_output_stream_printf (surface->output, + " ]\n" + ">>\n" + "endobj\n"); + + return CAIRO_STATUS_SUCCESS; +} + +static void +_collect_dest (void *entry, void *closure) +{ + cairo_pdf_named_dest_t *dest = entry; + cairo_pdf_surface_t *surface = closure; + cairo_pdf_interchange_t *ic = &surface->interchange; + + ic->sorted_dests[ic->num_dests++] = dest; +} + +static int +_dest_compare (const void *a, const void *b) +{ + const cairo_pdf_named_dest_t * const *dest_a = a; + const cairo_pdf_named_dest_t * const *dest_b = b; + + return strcmp ((*dest_a)->attrs.name, (*dest_b)->attrs.name); +} + +static cairo_int_status_t +_cairo_pdf_interchange_write_document_dests (cairo_pdf_surface_t *surface) +{ + int i; + cairo_pdf_interchange_t *ic = &surface->interchange; + + if (ic->num_dests == 0) { + ic->dests_res.id = 0; + return CAIRO_STATUS_SUCCESS; + } + + ic->sorted_dests = calloc (ic->num_dests, sizeof (cairo_pdf_named_dest_t *)); + if (unlikely (ic->sorted_dests == NULL)) + return _cairo_error (CAIRO_STATUS_NO_MEMORY); + + ic->num_dests = 0; + _cairo_hash_table_foreach (ic->named_dests, _collect_dest, surface); + qsort (ic->sorted_dests, ic->num_dests, sizeof (cairo_pdf_named_dest_t *), _dest_compare); + + ic->dests_res = _cairo_pdf_surface_new_object (surface); + _cairo_output_stream_printf (surface->output, + "%d 0 obj\n" + "<< /Names [\n", + ic->dests_res.id); + for (i = 0; i < ic->num_dests; i++) { + cairo_pdf_named_dest_t *dest = ic->sorted_dests[i]; + cairo_pdf_resource_t page_res; + double x = 0; + double y = 0; + double height; + + if (dest->attrs.internal) + continue; + + if (dest->extents.valid) { + x = dest->extents.extents.x; + y = dest->extents.extents.y; + } + + if (dest->attrs.x_valid) + x = dest->attrs.x; + + if (dest->attrs.y_valid) + y = dest->attrs.y; + + _cairo_array_copy_element (&surface->pages, dest->page - 1, &page_res); + _cairo_array_copy_element (&surface->page_heights, dest->page - 1, &height); + _cairo_output_stream_printf (surface->output, + " (%s) [%d 0 R /XYZ %f %f 0]\n", + dest->attrs.name, + page_res.id, + x, + height - y); + } + _cairo_output_stream_printf (surface->output, + " ]\n" + ">>\n" + "endobj\n"); + + return CAIRO_STATUS_SUCCESS; +} + +static cairo_int_status_t +cairo_pdf_interchange_write_names_dict (cairo_pdf_surface_t *surface) +{ + cairo_pdf_interchange_t *ic = &surface->interchange; + cairo_int_status_t status; + + status = _cairo_pdf_interchange_write_document_dests (surface); + if (unlikely (status)) + return status; + + surface->names_dict_res.id = 0; + if (ic->dests_res.id != 0) { + surface->names_dict_res = _cairo_pdf_surface_new_object (surface); + _cairo_output_stream_printf (surface->output, + "%d 0 obj\n" + "<< /Dests %d 0 R >>\n" + "endobj\n", + surface->names_dict_res.id, + ic->dests_res.id); + } + + return CAIRO_STATUS_SUCCESS; +} + +static cairo_int_status_t +cairo_pdf_interchange_write_docinfo (cairo_pdf_surface_t *surface) +{ + cairo_pdf_interchange_t *ic = &surface->interchange; + + surface->docinfo_res = _cairo_pdf_surface_new_object (surface); + if (surface->docinfo_res.id == 0) + return _cairo_error (CAIRO_STATUS_NO_MEMORY); + + _cairo_output_stream_printf (surface->output, + "%d 0 obj\n" + "<< /Producer (cairo %s (http://cairographics.org))\n", + surface->docinfo_res.id, + cairo_version_string ()); + + if (ic->docinfo.title) + _cairo_output_stream_printf (surface->output, " /Title %s\n", ic->docinfo.title); + + if (ic->docinfo.author) + _cairo_output_stream_printf (surface->output, " /Author %s\n", ic->docinfo.author); + + if (ic->docinfo.subject) + _cairo_output_stream_printf (surface->output, " /Subject %s\n", ic->docinfo.subject); + + if (ic->docinfo.keywords) + _cairo_output_stream_printf (surface->output, " /Keywords %s\n", ic->docinfo.keywords); + + if (ic->docinfo.creator) + _cairo_output_stream_printf (surface->output, " /Creator %s\n", ic->docinfo.creator); + + if (ic->docinfo.create_date) + _cairo_output_stream_printf (surface->output, " /CreationDate %s\n", ic->docinfo.create_date); + + if (ic->docinfo.mod_date) + _cairo_output_stream_printf (surface->output, " /ModDate %s\n", ic->docinfo.mod_date); + + _cairo_output_stream_printf (surface->output, + ">>\n" + "endobj\n"); + + return CAIRO_STATUS_SUCCESS; +} + +static cairo_int_status_t +_cairo_pdf_interchange_begin_structure_tag (cairo_pdf_surface_t *surface, + cairo_tag_type_t tag_type, + const char *name, + const char *attributes) +{ + int page_num, mcid; + cairo_int_status_t status = CAIRO_STATUS_SUCCESS; + cairo_pdf_interchange_t *ic = &surface->interchange; + + if (surface->paginated_mode == CAIRO_PAGINATED_MODE_ANALYZE) { + status = add_tree_node (surface, ic->current_node, name, &ic->current_node); + if (unlikely (status)) + return status; + + _cairo_tag_stack_set_top_data (&ic->analysis_tag_stack, ic->current_node); + + if (tag_type & TAG_TYPE_LINK) { + status = add_annotation (surface, ic->current_node, name, attributes); + if (unlikely (status)) + return status; + + cairo_list_add_tail (&ic->current_node->extents.link, &ic->extents_list); + } + + } else if (surface->paginated_mode == CAIRO_PAGINATED_MODE_RENDER) { + ic->current_node = _cairo_tag_stack_top_elem (&ic->render_tag_stack)->data; + assert (ic->current_node != NULL); + if (is_leaf_node (ic->current_node)) { + page_num = _cairo_array_num_elements (&surface->pages); + add_mcid_to_node (surface, ic->current_node, page_num, &mcid); + status = _cairo_pdf_operators_tag_begin (&surface->pdf_operators, name, mcid); + } + } + + return status; +} + +static cairo_int_status_t +_cairo_pdf_interchange_begin_dest_tag (cairo_pdf_surface_t *surface, + cairo_tag_type_t tag_type, + const char *name, + const char *attributes) +{ + cairo_pdf_named_dest_t *dest; + cairo_pdf_interchange_t *ic = &surface->interchange; + cairo_int_status_t status = CAIRO_STATUS_SUCCESS; + + if (surface->paginated_mode == CAIRO_PAGINATED_MODE_ANALYZE) { + dest = calloc (1, sizeof (cairo_pdf_named_dest_t)); + if (unlikely (dest == NULL)) + return _cairo_error (CAIRO_STATUS_NO_MEMORY); + + status = _cairo_tag_parse_dest_attributes (attributes, &dest->attrs); + if (unlikely (status)) + return status; + + dest->page = _cairo_array_num_elements (&surface->pages); + init_named_dest_key (dest); + status = _cairo_hash_table_insert (ic->named_dests, &dest->base); + if (unlikely (status)) + return status; + + _cairo_tag_stack_set_top_data (&ic->analysis_tag_stack, dest); + cairo_list_add_tail (&dest->extents.link, &ic->extents_list); + ic->num_dests++; + } + + return status; +} + +cairo_int_status_t +_cairo_pdf_interchange_tag_begin (cairo_pdf_surface_t *surface, + const char *name, + const char *attributes) +{ + cairo_int_status_t status = CAIRO_STATUS_SUCCESS; + cairo_tag_type_t tag_type; + cairo_pdf_interchange_t *ic = &surface->interchange; + void *ptr; + + if (surface->paginated_mode == CAIRO_PAGINATED_MODE_ANALYZE) { + status = _cairo_tag_stack_push (&ic->analysis_tag_stack, name, attributes); + + } else if (surface->paginated_mode == CAIRO_PAGINATED_MODE_RENDER) { + status = _cairo_tag_stack_push (&ic->render_tag_stack, name, attributes); + _cairo_array_copy_element (&ic->push_data, ic->push_data_index++, &ptr); + _cairo_tag_stack_set_top_data (&ic->render_tag_stack, ptr); + } + + if (unlikely (status)) + return status; + + tag_type = _cairo_tag_get_type (name); + if (tag_type & TAG_TYPE_STRUCTURE) { + status = _cairo_pdf_interchange_begin_structure_tag (surface, tag_type, name, attributes); + if (unlikely (status)) + return status; + } + + if (tag_type & TAG_TYPE_DEST) { + status = _cairo_pdf_interchange_begin_dest_tag (surface, tag_type, name, attributes); + if (unlikely (status)) + return status; + } + + if (surface->paginated_mode == CAIRO_PAGINATED_MODE_ANALYZE) { + ptr = _cairo_tag_stack_top_elem (&ic->analysis_tag_stack)->data; + status = _cairo_array_append (&ic->push_data, &ptr); + } + + return status; +} + +static cairo_int_status_t +_cairo_pdf_interchange_end_structure_tag (cairo_pdf_surface_t *surface, + cairo_tag_type_t tag_type, + cairo_tag_stack_elem_t *elem) +{ + const cairo_pdf_struct_tree_node_t *node; + struct tag_extents *tag, *next; + cairo_pdf_interchange_t *ic = &surface->interchange; + cairo_int_status_t status = CAIRO_STATUS_SUCCESS; + + assert (elem->data != NULL); + node = elem->data; + if (surface->paginated_mode == CAIRO_PAGINATED_MODE_ANALYZE) { + if (tag_type & TAG_TYPE_LINK) { + cairo_list_foreach_entry_safe (tag, next, struct tag_extents, + &ic->extents_list, link) { + if (tag == &node->extents) { + cairo_list_del (&tag->link); + break; + } + } + } + } else if (surface->paginated_mode == CAIRO_PAGINATED_MODE_RENDER) { + if (is_leaf_node (ic->current_node)) { + status = _cairo_pdf_operators_tag_end (&surface->pdf_operators); + if (unlikely (status)) + return status; + } + } + + ic->current_node = ic->current_node->parent; + assert (ic->current_node != NULL); + + return status; +} + +static cairo_int_status_t +_cairo_pdf_interchange_end_dest_tag (cairo_pdf_surface_t *surface, + cairo_tag_type_t tag_type, + cairo_tag_stack_elem_t *elem) +{ + struct tag_extents *tag, *next; + cairo_pdf_named_dest_t *dest; + cairo_pdf_interchange_t *ic = &surface->interchange; + + if (surface->paginated_mode == CAIRO_PAGINATED_MODE_ANALYZE) { + assert (elem->data != NULL); + dest = (cairo_pdf_named_dest_t *) elem->data; + cairo_list_foreach_entry_safe (tag, next, struct tag_extents, + &ic->extents_list, link) { + if (tag == &dest->extents) { + cairo_list_del (&tag->link); + break; + } + } + } + + return CAIRO_STATUS_SUCCESS; +} + +cairo_int_status_t +_cairo_pdf_interchange_tag_end (cairo_pdf_surface_t *surface, + const char *name) +{ + cairo_int_status_t status = CAIRO_STATUS_SUCCESS; + cairo_pdf_interchange_t *ic = &surface->interchange; + cairo_tag_type_t tag_type; + cairo_tag_stack_elem_t *elem; + + if (surface->paginated_mode == CAIRO_PAGINATED_MODE_ANALYZE) + status = _cairo_tag_stack_pop (&ic->analysis_tag_stack, name, &elem); + else if (surface->paginated_mode == CAIRO_PAGINATED_MODE_RENDER) + status = _cairo_tag_stack_pop (&ic->render_tag_stack, name, &elem); + + if (unlikely (status)) + return status; + + tag_type = _cairo_tag_get_type (name); + if (tag_type & TAG_TYPE_STRUCTURE) { + status = _cairo_pdf_interchange_end_structure_tag (surface, tag_type, elem); + if (unlikely (status)) + goto cleanup; + } + + if (tag_type & TAG_TYPE_DEST) { + status = _cairo_pdf_interchange_end_dest_tag (surface, tag_type, elem); + if (unlikely (status)) + goto cleanup; + } + + cleanup: + _cairo_tag_stack_free_elem (elem); + + return status; +} + +cairo_int_status_t +_cairo_pdf_interchange_add_operation_extents (cairo_pdf_surface_t *surface, + const cairo_rectangle_int_t *extents) +{ + cairo_pdf_interchange_t *ic = &surface->interchange; + struct tag_extents *tag; + + if (surface->paginated_mode == CAIRO_PAGINATED_MODE_ANALYZE) { + cairo_list_foreach_entry (tag, struct tag_extents, &ic->extents_list, link) { + if (tag->valid) { + _cairo_rectangle_union (&tag->extents, extents); + } else { + tag->extents = *extents; + tag->valid = TRUE; + } + } + } + + return CAIRO_STATUS_SUCCESS; +} + +cairo_int_status_t +_cairo_pdf_interchange_begin_page_content (cairo_pdf_surface_t *surface) +{ + cairo_pdf_interchange_t *ic = &surface->interchange; + cairo_int_status_t status = CAIRO_STATUS_SUCCESS; + int page_num, mcid; + + if (surface->paginated_mode == CAIRO_PAGINATED_MODE_ANALYZE) { + _cairo_array_truncate (&ic->mcid_to_tree, 0); + _cairo_array_truncate (&ic->push_data, 0); + ic->begin_page_node = ic->current_node; + } else if (surface->paginated_mode == CAIRO_PAGINATED_MODE_RENDER) { + ic->push_data_index = 0; + ic->current_node = ic->begin_page_node; + if (ic->end_page_node && is_leaf_node (ic->end_page_node)) { + page_num = _cairo_array_num_elements (&surface->pages); + add_mcid_to_node (surface, ic->end_page_node, page_num, &mcid); + status = _cairo_pdf_operators_tag_begin (&surface->pdf_operators, + ic->end_page_node->name, + mcid); + } + } + + return status; +} + +cairo_int_status_t +_cairo_pdf_interchange_end_page_content (cairo_pdf_surface_t *surface) +{ + cairo_pdf_interchange_t *ic = &surface->interchange; + cairo_int_status_t status = CAIRO_STATUS_SUCCESS; + + if (surface->paginated_mode == CAIRO_PAGINATED_MODE_RENDER) { + ic->end_page_node = ic->current_node; + if (is_leaf_node (ic->current_node)) + status = _cairo_pdf_operators_tag_end (&surface->pdf_operators); + } + + return status; +} + +cairo_int_status_t +_cairo_pdf_interchange_write_page_objects (cairo_pdf_surface_t *surface) +{ + cairo_int_status_t status; + + status = cairo_pdf_interchange_write_page_annots (surface); + if (unlikely (status)) + return status; + + cairo_pdf_interchange_clear_annotations (surface); + + return cairo_pdf_interchange_write_page_parent_elems (surface); +} + +cairo_int_status_t +_cairo_pdf_interchange_write_document_objects (cairo_pdf_surface_t *surface) +{ + cairo_pdf_interchange_t *ic = &surface->interchange; + cairo_int_status_t status = CAIRO_STATUS_SUCCESS; + cairo_tag_stack_structure_type_t tag_type; + + tag_type = _cairo_tag_stack_get_structure_type (&ic->analysis_tag_stack); + if (tag_type == TAG_TREE_TYPE_TAGGED || tag_type == TAG_TREE_TYPE_STRUCTURE) { + + status = cairo_pdf_interchange_write_parent_tree (surface); + if (unlikely (status)) + return status; + + status = cairo_pdf_interchange_write_struct_tree (surface); + if (unlikely (status)) + return status; + + if (tag_type == TAG_TREE_TYPE_TAGGED) + surface->tagged = TRUE; + } + + status = cairo_pdf_interchange_write_outline (surface); + if (unlikely (status)) + return status; + + status = cairo_pdf_interchange_write_page_labels (surface); + if (unlikely (status)) + return status; + + status = cairo_pdf_interchange_write_names_dict (surface); + if (unlikely (status)) + return status; + + status = cairo_pdf_interchange_write_docinfo (surface); + + return status; +} + +static void +_cairo_pdf_interchange_set_create_date (cairo_pdf_surface_t *surface) +{ + time_t utc, local, offset; + struct tm tm_local, tm_utc; + char buf[50]; + int buf_size; + char *p; + cairo_pdf_interchange_t *ic = &surface->interchange; + + utc = time (NULL); + localtime_r (&utc, &tm_local); + strftime (buf, sizeof(buf), "(D:%Y%m%d%H%M%S", &tm_local); + + /* strftime "%z" is non standard and does not work on windows (it prints zone name, not offset). + * Calculate time zone offset by comparing local and utc time_t values for the same time. + */ + gmtime_r (&utc, &tm_utc); + tm_utc.tm_isdst = tm_local.tm_isdst; + local = mktime (&tm_utc); + offset = difftime (utc, local); + + if (offset == 0) { + strcat (buf, "Z"); + } else { + if (offset > 0) { + strcat (buf, "+"); + } else { + strcat (buf, "-"); + offset = -offset; + } + p = buf + strlen (buf); + buf_size = sizeof (buf) - strlen (buf); + snprintf (p, buf_size, "%02d'%02d", (int)(offset/3600), (int)(offset%3600)/60); + } + strcat (buf, ")"); + ic->docinfo.create_date = strdup (buf); +} + +cairo_int_status_t +_cairo_pdf_interchange_init (cairo_pdf_surface_t *surface) +{ + cairo_pdf_interchange_t *ic = &surface->interchange; + cairo_pdf_outline_entry_t *outline_root; + cairo_int_status_t status; + + _cairo_tag_stack_init (&ic->analysis_tag_stack); + _cairo_tag_stack_init (&ic->render_tag_stack); + _cairo_array_init (&ic->push_data, sizeof(void *)); + ic->struct_root = calloc (1, sizeof(cairo_pdf_struct_tree_node_t)); + if (unlikely (ic->struct_root == NULL)) + return _cairo_error (CAIRO_STATUS_NO_MEMORY); + + cairo_list_init (&ic->struct_root->children); + _cairo_array_init (&ic->struct_root->mcid, sizeof(struct page_mcid)); + ic->current_node = ic->struct_root; + ic->begin_page_node = NULL; + ic->end_page_node = NULL; + _cairo_array_init (&ic->parent_tree, sizeof(cairo_pdf_resource_t)); + _cairo_array_init (&ic->mcid_to_tree, sizeof(cairo_pdf_struct_tree_node_t *)); + _cairo_array_init (&ic->annots, sizeof(cairo_pdf_annotation_t *)); + ic->parent_tree_res.id = 0; + cairo_list_init (&ic->extents_list); + ic->named_dests = _cairo_hash_table_create (_named_dest_equal); + if (unlikely (ic->named_dests == NULL)) + return _cairo_error (CAIRO_STATUS_NO_MEMORY); + + ic->num_dests = 0; + ic->sorted_dests = NULL; + ic->dests_res.id = 0; + + _cairo_array_init (&ic->outline, sizeof(cairo_pdf_outline_entry_t *)); + outline_root = calloc (1, sizeof(cairo_pdf_outline_entry_t)); + if (unlikely (outline_root == NULL)) + return _cairo_error (CAIRO_STATUS_NO_MEMORY); + + memset (&ic->docinfo, 0, sizeof (ic->docinfo)); + _cairo_pdf_interchange_set_create_date (surface); + status = _cairo_array_append (&ic->outline, &outline_root); + + return status; +} + +static void +_cairo_pdf_interchange_free_outlines (cairo_pdf_surface_t *surface) +{ + cairo_pdf_interchange_t *ic = &surface->interchange; + int num_elems, i; + + num_elems = _cairo_array_num_elements (&ic->outline); + for (i = 0; i < num_elems; i++) { + cairo_pdf_outline_entry_t *outline; + + _cairo_array_copy_element (&ic->outline, i, &outline); + free (outline->name); + free (outline->link_attrs.dest); + free (outline->link_attrs.uri); + free (outline->link_attrs.file); + free (outline); + } + _cairo_array_fini (&ic->outline); +} + +cairo_int_status_t +_cairo_pdf_interchange_fini (cairo_pdf_surface_t *surface) +{ + cairo_pdf_interchange_t *ic = &surface->interchange; + + _cairo_tag_stack_fini (&ic->analysis_tag_stack); + _cairo_tag_stack_fini (&ic->render_tag_stack); + _cairo_array_fini (&ic->push_data); + free_node (ic->struct_root); + _cairo_array_fini (&ic->mcid_to_tree); + cairo_pdf_interchange_clear_annotations (surface); + _cairo_array_fini (&ic->annots); + _cairo_array_fini (&ic->parent_tree); + _cairo_hash_table_foreach (ic->named_dests, _named_dest_pluck, ic->named_dests); + _cairo_hash_table_destroy (ic->named_dests); + free (ic->sorted_dests); + _cairo_pdf_interchange_free_outlines (surface); + free (ic->docinfo.title); + free (ic->docinfo.author); + free (ic->docinfo.subject); + free (ic->docinfo.keywords); + free (ic->docinfo.creator); + free (ic->docinfo.create_date); + free (ic->docinfo.mod_date); + + return CAIRO_STATUS_SUCCESS; +} + +cairo_int_status_t +_cairo_pdf_interchange_add_outline (cairo_pdf_surface_t *surface, + int parent_id, + const char *name, + const char *link_attribs, + cairo_pdf_outline_flags_t flags, + int *id) +{ + cairo_pdf_interchange_t *ic = &surface->interchange; + cairo_pdf_outline_entry_t *outline; + cairo_pdf_outline_entry_t *parent; + cairo_int_status_t status; + + if (parent_id < 0 || parent_id >= (int)_cairo_array_num_elements (&ic->outline)) + return CAIRO_STATUS_SUCCESS; + + outline = _cairo_malloc (sizeof(cairo_pdf_outline_entry_t)); + if (unlikely (outline == NULL)) + return _cairo_error (CAIRO_STATUS_NO_MEMORY); + + status = _cairo_tag_parse_link_attributes (link_attribs, &outline->link_attrs); + if (unlikely (status)) { + free (outline); + return status; + } + + outline->res = _cairo_pdf_surface_new_object (surface); + if (outline->res.id == 0) + return _cairo_error (CAIRO_STATUS_NO_MEMORY); + + outline->name = strdup (name); + outline->flags = flags; + outline->count = 0; + + _cairo_array_copy_element (&ic->outline, parent_id, &parent); + + outline->parent = parent; + outline->first_child = NULL; + outline->last_child = NULL; + outline->next = NULL; + if (parent->last_child) { + parent->last_child->next = outline; + outline->prev = parent->last_child; + parent->last_child = outline; + } else { + parent->first_child = outline; + parent->last_child = outline; + outline->prev = NULL; + } + + *id = _cairo_array_num_elements (&ic->outline); + status = _cairo_array_append (&ic->outline, &outline); + if (unlikely (status)) + return status; + + /* Update Count */ + outline = outline->parent; + while (outline) { + if (outline->flags & CAIRO_PDF_OUTLINE_FLAG_OPEN) { + outline->count++; + } else { + outline->count--; + break; + } + outline = outline->parent; + } + + return CAIRO_STATUS_SUCCESS; +} + +/* + * Date must be in the following format: + * + * YYYY-MM-DDThh:mm:ss[Z+-]hh:mm + * + * Only the year is required. If a field is included all preceding + * fields must be included. + */ +static char * +iso8601_to_pdf_date_string (const char *iso) +{ + char buf[40]; + const char *p; + int i; + + /* Check that utf8 contains only the characters "0123456789-T:Z+" */ + p = iso; + while (*p) { + if (!_cairo_isdigit (*p) && *p != '-' && *p != 'T' && + *p != ':' && *p != 'Z' && *p != '+') + return NULL; + p++; + } + + p = iso; + strcpy (buf, "("); + + /* YYYY (required) */ + if (strlen (p) < 4) + return NULL; + + strncat (buf, p, 4); + p += 4; + + /* -MM, -DD, Thh, :mm, :ss */ + for (i = 0; i < 5; i++) { + if (strlen (p) < 3) + goto finish; + + strncat (buf, p + 1, 2); + p += 3; + } + + /* Z, +, - */ + if (strlen (p) < 1) + goto finish; + strncat (buf, p, 1); + p += 1; + + /* hh */ + if (strlen (p) < 2) + goto finish; + + strncat (buf, p, 2); + strcat (buf, "'"); + p += 2; + + /* :mm */ + if (strlen (p) < 3) + goto finish; + + strncat (buf, p + 1, 3); + + finish: + strcat (buf, ")"); + return strdup (buf); +} + +cairo_int_status_t +_cairo_pdf_interchange_set_metadata (cairo_pdf_surface_t *surface, + cairo_pdf_metadata_t metadata, + const char *utf8) +{ + cairo_pdf_interchange_t *ic = &surface->interchange; + cairo_status_t status; + char *s = NULL; + + if (utf8) { + if (metadata == CAIRO_PDF_METADATA_CREATE_DATE || + metadata == CAIRO_PDF_METADATA_MOD_DATE) { + s = iso8601_to_pdf_date_string (utf8); + } else { + status = _cairo_utf8_to_pdf_string (utf8, &s); + if (unlikely (status)) + return status; + } + } + + switch (metadata) { + case CAIRO_PDF_METADATA_TITLE: + free (ic->docinfo.title); + ic->docinfo.title = s; + break; + case CAIRO_PDF_METADATA_AUTHOR: + free (ic->docinfo.author); + ic->docinfo.author = s; + break; + case CAIRO_PDF_METADATA_SUBJECT: + free (ic->docinfo.subject); + ic->docinfo.subject = s; + break; + case CAIRO_PDF_METADATA_KEYWORDS: + free (ic->docinfo.keywords); + ic->docinfo.keywords = s; + break; + case CAIRO_PDF_METADATA_CREATOR: + free (ic->docinfo.creator); + ic->docinfo.creator = s; + break; + case CAIRO_PDF_METADATA_CREATE_DATE: + free (ic->docinfo.create_date); + ic->docinfo.create_date = s; + break; + case CAIRO_PDF_METADATA_MOD_DATE: + free (ic->docinfo.mod_date); + ic->docinfo.mod_date = s; + break; + } + + return CAIRO_STATUS_SUCCESS; +} diff -Nru cairo-1.14.6/src/cairo-pdf-operators.c cairo-1.15.10/src/cairo-pdf-operators.c --- cairo-1.14.6/src/cairo-pdf-operators.c 2015-10-27 21:04:21.000000000 +0000 +++ cairo-1.15.10/src/cairo-pdf-operators.c 2017-12-07 02:14:36.000000000 +0000 @@ -319,7 +319,8 @@ if (*data == '\n' || stream->column >= stream->max_column) { _cairo_output_stream_printf (stream->output, "\n"); stream->column = 0; - } else if (*data == '<') { + } + if (*data == '<') { stream->state = WRAP_STATE_HEXSTRING; } else if (*data == '(') { stream->state = WRAP_STATE_STRING; @@ -1492,9 +1493,6 @@ cairo_matrix_init_scale (&invert_y_axis, 1, -1); text_matrix = scaled_font->scale; - /* Invert y axis in font space */ - cairo_matrix_multiply (&text_matrix, &text_matrix, &invert_y_axis); - /* Invert y axis in device space */ cairo_matrix_multiply (&text_matrix, &invert_y_axis, &text_matrix); @@ -1556,5 +1554,42 @@ return _cairo_output_stream_get_status (pdf_operators->stream); } + +cairo_int_status_t +_cairo_pdf_operators_tag_begin (cairo_pdf_operators_t *pdf_operators, + const char *tag_name, + int mcid) +{ + cairo_status_t status; + + if (pdf_operators->in_text_object) { + status = _cairo_pdf_operators_end_text (pdf_operators); + if (unlikely (status)) + return status; + } + + _cairo_output_stream_printf (pdf_operators->stream, + "/%s << /MCID %d >> BDC\n", + tag_name, + mcid); + + return _cairo_output_stream_get_status (pdf_operators->stream); +} + +cairo_int_status_t +_cairo_pdf_operators_tag_end (cairo_pdf_operators_t *pdf_operators) +{ + cairo_status_t status; + + if (pdf_operators->in_text_object) { + status = _cairo_pdf_operators_end_text (pdf_operators); + if (unlikely (status)) + return status; + } + + _cairo_output_stream_printf (pdf_operators->stream, "EMC\n"); + + return _cairo_output_stream_get_status (pdf_operators->stream); +} #endif /* CAIRO_HAS_PDF_OPERATORS */ diff -Nru cairo-1.14.6/src/cairo-pdf-operators-private.h cairo-1.15.10/src/cairo-pdf-operators-private.h --- cairo-1.14.6/src/cairo-pdf-operators-private.h 2015-10-27 21:04:21.000000000 +0000 +++ cairo-1.15.10/src/cairo-pdf-operators-private.h 2017-12-07 02:14:36.000000000 +0000 @@ -173,4 +173,12 @@ cairo_text_cluster_flags_t cluster_flags, cairo_scaled_font_t *scaled_font); +cairo_private cairo_int_status_t +_cairo_pdf_operators_tag_begin (cairo_pdf_operators_t *pdf_operators, + const char *tag_name, + int mcid); + +cairo_private cairo_int_status_t +_cairo_pdf_operators_tag_end (cairo_pdf_operators_t *pdf_operators); + #endif /* CAIRO_PDF_OPERATORS_H */ diff -Nru cairo-1.14.6/src/cairo-pdf-surface.c cairo-1.15.10/src/cairo-pdf-surface.c --- cairo-1.14.6/src/cairo-pdf-surface.c 2015-10-27 21:04:30.000000000 +0000 +++ cairo-1.15.10/src/cairo-pdf-surface.c 2017-12-07 02:14:36.000000000 +0000 @@ -39,7 +39,7 @@ * Adrian Johnson */ -#define _BSD_SOURCE /* for snprintf() */ +#define _DEFAULT_SOURCE /* for snprintf() */ #include "cairoint.h" #include "cairo-pdf.h" @@ -63,18 +63,8 @@ #include "cairo-surface-subsurface-private.h" #include "cairo-type3-glyph-surface-private.h" -#include #include -/* Issues: - * - * - We embed an image in the stream each time it's composited. We - * could add generation counters to surfaces and remember the stream - * ID for a particular generation for a particular surface. - * - * - Backend specific meta data. - */ - /* * Page Structure of the Generated PDF: * @@ -134,19 +124,62 @@ * 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. + * %CAIRO_MIME_TYPE_JBIG2_GLOBAL_ID, + * %CAIRO_MIME_TYPE_CCITT_FAX, %CAIRO_MIME_TYPE_CCITT_FAX_PARAMS. * + * # JBIG2 Images # * JBIG2 data in PDF must be in the embedded format as described 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 * %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 identifier. At least * 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 + * embedded once and shared by all JBIG2 images with the same * %CAIRO_MIME_TYPE_JBIG2_GLOBAL_ID. + * + * # CCITT Fax Images # {#ccitt} + * The %CAIRO_MIME_TYPE_CCITT_FAX mime data requires a number of decoding + * parameters These parameters are specified using %CAIRO_MIME_TYPE_CCITT_FAX_PARAMS. + * + * %CAIRO_MIME_TYPE_CCITT_FAX_PARAMS mime data must contain a string of the form + * "param1=value1 param2=value2 ...". + * + * @Columns: [required] An integer specifying the width of the image in pixels. + * + * @Rows: [required] An integer specifying the height of the image in scan lines. + * + * @K: [optional] An integer identifying the encoding scheme used. < 0 + * is 2 dimensional Group 4, = 0 is Group3 1 dimensional, > 0 is mixed 1 + * and 2 dimensional encoding. Default is 0. + * + * @EndOfLine: [optional] If true end-of-line bit patterns are present. Default is false. + * + * @EncodedByteAlign: [optional] If true the end of line is padded + * with 0 bits so the next line begins on a byte boundary. Default is false. + * + * @EndOfBlock: [optional] If true the data contains an end-of-block pattern. Default is true. + * + * @BlackIs1: [optional] If true 1 bits are black pixels. Default is false. + * + * @DamagedRowsBeforeError: [optional] An integer specifying the + * number of damages rows tolerated before an error occurs. Default is 0. + * + * Boolean values may be "true" or "false", or 1 or 0. + * + * These parameters are the same as the CCITTFaxDecode parameters in the + * [PostScript Language Reference](https://www.adobe.com/products/postscript/pdfs/PLRM.pdf) + * and [Portable Document Format (PDF)](https://www.adobe.com/content/dam/Adobe/en/devnet/pdf/pdfs/PDF32000_2008.pdf). + * Refer to these documents for further details. + * + * An example %CAIRO_MIME_TYPE_CCITT_FAX_PARAMS string is: + * + * + * "Columns=10230 Rows=40000 K=1 EndOfLine=true EncodedByteAlign=1 BlackIs1=false" + * + * **/ static cairo_bool_t @@ -184,6 +217,8 @@ CAIRO_MIME_TYPE_JBIG2, CAIRO_MIME_TYPE_JBIG2_GLOBAL, CAIRO_MIME_TYPE_JBIG2_GLOBAL_ID, + CAIRO_MIME_TYPE_CCITT_FAX, + CAIRO_MIME_TYPE_CCITT_FAX_PARAMS, NULL }; @@ -209,9 +244,6 @@ double alpha2; } cairo_pdf_alpha_linear_function_t; -static cairo_pdf_resource_t -_cairo_pdf_surface_new_object (cairo_pdf_surface_t *surface); - static void _cairo_pdf_surface_clear (cairo_pdf_surface_t *surface); @@ -236,21 +268,28 @@ _cairo_pdf_surface_close_stream (cairo_pdf_surface_t *surface); static cairo_int_status_t +_cairo_pdf_surface_emit_surface (cairo_pdf_surface_t *surface, + cairo_pdf_source_surface_t *source, + cairo_bool_t test, + cairo_bool_t *is_image); + +static cairo_int_status_t _cairo_pdf_surface_write_page (cairo_pdf_surface_t *surface); static void _cairo_pdf_surface_write_pages (cairo_pdf_surface_t *surface); static cairo_pdf_resource_t -_cairo_pdf_surface_write_info (cairo_pdf_surface_t *surface); - -static cairo_pdf_resource_t _cairo_pdf_surface_write_catalog (cairo_pdf_surface_t *surface); static long _cairo_pdf_surface_write_xref (cairo_pdf_surface_t *surface); static cairo_int_status_t +_cairo_pdf_surface_write_patterns_and_smask_groups (cairo_pdf_surface_t *surface, + cairo_bool_t finish); + +static cairo_int_status_t _cairo_pdf_surface_write_page (cairo_pdf_surface_t *surface); static cairo_int_status_t @@ -262,7 +301,7 @@ static const cairo_surface_backend_t cairo_pdf_surface_backend; static const cairo_paginated_surface_backend_t cairo_pdf_surface_paginated_backend; -static cairo_pdf_resource_t +cairo_pdf_resource_t _cairo_pdf_surface_new_object (cairo_pdf_surface_t *surface) { cairo_pdf_resource_t resource; @@ -283,7 +322,7 @@ return resource; } -static void +void _cairo_pdf_surface_update_object (cairo_pdf_surface_t *surface, cairo_pdf_resource_t resource) { @@ -300,9 +339,10 @@ { surface->width = width; surface->height = height; - cairo_matrix_init (&surface->cairo_to_pdf, 1, 0, 0, -1, 0, height); - _cairo_pdf_operators_set_cairo_to_pdf_matrix (&surface->pdf_operators, - &surface->cairo_to_pdf); + surface->surface_extents.x = 0; + surface->surface_extents.y = 0; + surface->surface_extents.width = ceil (surface->width); + surface->surface_extents.height = ceil (surface->height); } static cairo_bool_t @@ -367,12 +407,19 @@ _cairo_surface_init (&surface->base, &cairo_pdf_surface_backend, NULL, /* device */ - CAIRO_CONTENT_COLOR_ALPHA); + CAIRO_CONTENT_COLOR_ALPHA, + TRUE); /* is_vector */ surface->output = output; surface->width = width; surface->height = height; - cairo_matrix_init (&surface->cairo_to_pdf, 1, 0, 0, -1, 0, height); + cairo_matrix_init (&surface->cairo_to_pdf, 1, 0, 0, 1, 0, 0); + surface->in_xobject = FALSE; + surface->surface_extents.x = 0; + surface->surface_extents.y = 0; + surface->surface_extents.width = ceil (surface->width); + surface->surface_extents.height = ceil (surface->height); + surface->surface_bounded = TRUE; _cairo_array_init (&surface->objects, sizeof (cairo_pdf_object_t)); _cairo_array_init (&surface->pages, sizeof (cairo_pdf_resource_t)); @@ -384,7 +431,9 @@ _cairo_array_init (&surface->page_patterns, sizeof (cairo_pdf_pattern_t)); _cairo_array_init (&surface->page_surfaces, sizeof (cairo_pdf_source_surface_t)); + _cairo_array_init (&surface->doc_surfaces, sizeof (cairo_pdf_source_surface_t)); _cairo_array_init (&surface->jbig2_global, sizeof (cairo_pdf_jbig2_global_t)); + _cairo_array_init (&surface->page_heights, sizeof (double)); surface->all_surfaces = _cairo_hash_table_create (_cairo_pdf_source_surface_equal); if (unlikely (surface->all_surfaces == NULL)) { status = _cairo_error (CAIRO_STATUS_NO_MEMORY); @@ -408,6 +457,7 @@ goto BAIL2; } + surface->struct_tree_root.id = 0; surface->pdf_version = CAIRO_PDF_VERSION_1_5; surface->compress_content = TRUE; surface->pdf_stream.active = FALSE; @@ -437,6 +487,26 @@ surface); _cairo_pdf_operators_enable_actual_text(&surface->pdf_operators, TRUE); + status = _cairo_pdf_interchange_init (surface); + if (unlikely (status)) + goto BAIL2; + + surface->page_parent_tree = -1; + _cairo_array_init (&surface->page_annots, sizeof (cairo_pdf_resource_t)); + surface->tagged = FALSE; + surface->current_page_label = NULL; + _cairo_array_init (&surface->page_labels, sizeof (char *)); + surface->outlines_dict_res.id = 0; + surface->names_dict_res.id = 0; + surface->docinfo_res.id = 0; + surface->page_labels_res.id = 0; + surface->thumbnail_width = 0; + surface->thumbnail_height = 0; + surface->thumbnail_image = NULL; + + if (getenv ("CAIRO_DEBUG_PDF") != NULL) + surface->compress_content = FALSE; + surface->paginated_surface = _cairo_paginated_surface_create ( &surface->base, CAIRO_CONTENT_COLOR_ALPHA, @@ -705,6 +775,143 @@ status = _cairo_surface_set_error (surface, status); } +/** + * CAIRO_PDF_OUTLINE_ROOT: + * + * The root outline item in cairo_pdf_surface_add_outline(). + * + * Since: 1.16 + **/ + +/** + * cairo_pdf_surface_add_outline: + * @surface: a PDF #cairo_surface_t + * @parent_id: the id of the parent item or %CAIRO_PDF_OUTLINE_ROOT if this is a top level item. + * @utf8: the name of the outline + * @link_attribs: the link attributes specifying where this outline links to + * @flags: outline item flags + * + * Add an item to the document outline hierarchy with the name @utf8 + * that links to the location specified by @link_attribs. Link + * attributes have the same keys and values as the [Link Tag][link], + * excluding the "rect" attribute. The item will be a child of the + * item with id @parent_id. Use %CAIRO_PDF_OUTLINE_ROOT as the parent + * id of top level items. + * + * Return value: the id for the added item. + * + * Since: 1.16 + **/ +int +cairo_pdf_surface_add_outline (cairo_surface_t *surface, + int parent_id, + const char *utf8, + const char *link_attribs, + cairo_pdf_outline_flags_t flags) +{ + cairo_pdf_surface_t *pdf_surface = NULL; /* hide compiler warning */ + cairo_status_t status; + int id = 0; + + if (! _extract_pdf_surface (surface, &pdf_surface)) + return 0; + + status = _cairo_pdf_interchange_add_outline (pdf_surface, + parent_id, + utf8, + link_attribs, + flags, + &id); + if (status) + status = _cairo_surface_set_error (surface, status); + + return id; +} + +/** + * cairo_pdf_surface_set_metadata: + * @surface: a PDF #cairo_surface_t + * @metadata: The metadata item to set. + * @utf8: metadata value + * + * Set document metadata. The %CAIRO_PDF_METADATA_CREATE_DATE and + * %CAIRO_PDF_METADATA_MOD_DATE values must be in ISO-8601 format: + * YYYY-MM-DDThh:mm:ss. An optional timezone of the form "[+/-]hh:mm" + * or "Z" for UTC time can be appended. All other metadata values can be any UTF-8 + * string. + * + * For example: + * + * cairo_pdf_surface_set_metadata (surface, CAIRO_PDF_METADATA_TITLE, "My Document"); + * cairo_pdf_surface_set_metadata (surface, CAIRO_PDF_METADATA_CREATE_DATE, "2015-12-31T23:59+02:00"); + * + * + * Since: 1.16 + **/ +void +cairo_pdf_surface_set_metadata (cairo_surface_t *surface, + cairo_pdf_metadata_t metadata, + const char *utf8) +{ + cairo_pdf_surface_t *pdf_surface = NULL; /* hide compiler warning */ + cairo_status_t status; + + if (! _extract_pdf_surface (surface, &pdf_surface)) + return; + + status = _cairo_pdf_interchange_set_metadata (pdf_surface, metadata, utf8); + if (status) + status = _cairo_surface_set_error (surface, status); +} + +/** + * cairo_pdf_surface_set_page_label: + * @surface: a PDF #cairo_surface_t + * @utf8: The page label. + * + * Set page label for the current page. + * + * Since: 1.16 + **/ +void +cairo_pdf_surface_set_page_label (cairo_surface_t *surface, + const char *utf8) +{ + cairo_pdf_surface_t *pdf_surface = NULL; /* hide compiler warning */ + + if (! _extract_pdf_surface (surface, &pdf_surface)) + return; + + free (pdf_surface->current_page_label); + pdf_surface->current_page_label = utf8 ? strdup (utf8) : NULL; +} + +/** + * cairo_pdf_surface_set_thumbnail_size: + * @surface: a PDF #cairo_surface_t + * @width: Thumbnail width. + * @height: Thumbnail height + * + * Set the thumbnail image size for the current and all subsequent + * pages. Setting a width or height of 0 disables thumbnails for the + * current and subsequent pages. + * + * Since: 1.16 + **/ +void +cairo_pdf_surface_set_thumbnail_size (cairo_surface_t *surface, + int width, + int height) +{ + cairo_pdf_surface_t *pdf_surface = NULL; /* hide compiler warning */ + + if (! _extract_pdf_surface (surface, &pdf_surface)) + return; + + pdf_surface->thumbnail_width = width; + pdf_surface->thumbnail_height = height; +} + static void _cairo_pdf_surface_clear (cairo_pdf_surface_t *surface) { @@ -734,6 +941,10 @@ } _cairo_array_truncate (&surface->smask_groups, 0); _cairo_array_truncate (&surface->knockout_group, 0); + _cairo_array_truncate (&surface->page_annots, 0); + + cairo_surface_destroy (&surface->thumbnail_image->base); + surface->thumbnail_image = NULL; } static void @@ -1196,186 +1407,105 @@ } static cairo_int_status_t -_get_jbig2_image_info (cairo_surface_t *source, - cairo_image_info_t *info, - const unsigned char **mime_data, - unsigned long *mime_data_length) -{ - cairo_surface_get_mime_data (source, CAIRO_MIME_TYPE_JBIG2, - mime_data, mime_data_length); - if (*mime_data == NULL) - return CAIRO_INT_STATUS_UNSUPPORTED; - - return _cairo_image_info_get_jbig2_info (info, *mime_data, *mime_data_length); -} - -static cairo_int_status_t -_get_jpx_image_info (cairo_surface_t *source, - cairo_image_info_t *info, - const unsigned char **mime_data, - unsigned long *mime_data_length) -{ - cairo_surface_get_mime_data (source, CAIRO_MIME_TYPE_JP2, - mime_data, mime_data_length); - if (*mime_data == NULL) - return CAIRO_INT_STATUS_UNSUPPORTED; - - return _cairo_image_info_get_jpx_info (info, *mime_data, *mime_data_length); -} - -static cairo_int_status_t -_get_jpeg_image_info (cairo_surface_t *source, - cairo_image_info_t *info, - const unsigned char **mime_data, - unsigned long *mime_data_length) -{ - cairo_surface_get_mime_data (source, CAIRO_MIME_TYPE_JPEG, - mime_data, mime_data_length); - if (*mime_data == NULL) - return CAIRO_INT_STATUS_UNSUPPORTED; - - return _cairo_image_info_get_jpeg_info (info, *mime_data, *mime_data_length); -} - -static cairo_int_status_t -_get_source_surface_size (cairo_surface_t *source, - int *width, - int *height, - cairo_rectangle_int_t *extents) +_get_source_surface_extents (cairo_surface_t *source, + cairo_rectangle_int_t *extents, + cairo_bool_t *bounded, + cairo_bool_t *subsurface) { cairo_int_status_t status; - cairo_image_info_t info; - const unsigned char *mime_data; - unsigned long mime_data_length; + *bounded = TRUE; + *subsurface = FALSE; if (source->type == CAIRO_SURFACE_TYPE_RECORDING) { + cairo_surface_t *free_me = NULL; + + if (_cairo_surface_is_snapshot (source)) + free_me = source = _cairo_surface_snapshot_get_target (source); + if (source->backend->type == CAIRO_SURFACE_TYPE_SUBSURFACE) { - cairo_surface_subsurface_t *sub = (cairo_surface_subsurface_t *) source; + cairo_surface_subsurface_t *sub = (cairo_surface_subsurface_t *) source; - *extents = sub->extents; - *width = extents->width; - *height = extents->height; + *extents = sub->extents; + *subsurface = TRUE; } else { - cairo_surface_t *free_me = NULL; - cairo_rectangle_int_t surf_extents; cairo_box_t box; - cairo_bool_t bounded; - - if (_cairo_surface_is_snapshot (source)) - free_me = source = _cairo_surface_snapshot_get_target (source); - status = _cairo_recording_surface_get_ink_bbox ((cairo_recording_surface_t *)source, - &box, NULL); - if (unlikely (status)) { - cairo_surface_destroy (free_me); - return status; + *bounded = _cairo_surface_get_extents (source, extents); + if (! *bounded) { + status = _cairo_recording_surface_get_ink_bbox ((cairo_recording_surface_t *)source, + &box, NULL); + if (unlikely (status)) { + cairo_surface_destroy (free_me); + return status; + } + _cairo_box_round_to_rectangle (&box, extents); } - - bounded = _cairo_surface_get_extents (source, &surf_extents); - cairo_surface_destroy (free_me); - - *width = surf_extents.width; - *height = surf_extents.height; - - _cairo_box_round_to_rectangle (&box, extents); } - - return CAIRO_STATUS_SUCCESS; - } - - extents->x = 0; - extents->y = 0; - - status = _get_jbig2_image_info (source, &info, &mime_data, &mime_data_length); - if (status != CAIRO_INT_STATUS_UNSUPPORTED) { - *width = info.width; - *height = info.height; - extents->width = info.width; - extents->height = info.height; - return status; - } - - status = _get_jpx_image_info (source, &info, &mime_data, &mime_data_length); - if (status != CAIRO_INT_STATUS_UNSUPPORTED) { - *width = info.width; - *height = info.height; - extents->width = info.width; - extents->height = info.height; - return status; - } - - status = _get_jpeg_image_info (source, &info, &mime_data, &mime_data_length); - if (status != CAIRO_INT_STATUS_UNSUPPORTED) { - *width = info.width; - *height = info.height; - extents->width = info.width; - extents->height = info.height; - return status; + cairo_surface_destroy (free_me); + } else { + *bounded = _cairo_surface_get_extents (source, extents); } - if (! _cairo_surface_get_extents (source, extents)) - return CAIRO_INT_STATUS_UNSUPPORTED; - - *width = extents->width; - *height = extents->height; - return CAIRO_STATUS_SUCCESS; } /** * _cairo_pdf_surface_add_source_surface: - * @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 - * @smask: if true, only the alpha channel will be written (images only) - * @extents: extents of the operation that is using this source - * @smask_res: if not NULL, the image written will specify this resource as the smask for the image (images only) - * @surface_res: return PDF resource number of the surface - * @width: returns width of surface - * @height: returns height of surface - * @x_offset: x offset of surface - * @t_offset: y offset of surface - * @source_extents: returns extents of source (either ink extents or extents needed to cover @extents) + * @surface: [in] the pdf surface + * @source_surface: [in] A #cairo_surface_t to use as the source surface + * @source_pattern: [in] A #cairo_pattern_t of type SURFACE or RASTER_SOURCE to use as the source + * @op: [in] the operator used to composite this source + * @filter: [in] filter type of the source pattern + * @stencil_mask: [in] if true, the surface will be written to the PDF as an /ImageMask + * @smask: [in] if true, only the alpha channel will be written (images only) + * @need_transp_group: [in] if true and an XObject is used, make it a Transparency group + * @extents: [in] extents of the operation that is using this source + * @smask_res: [in] if not NULL, the image written will specify this resource as the smask for + * the image (images only) + * @pdf_source: [out] return pdf_source_surface entry in hash table + * @x_offset: [out] if not NULL return x offset of surface + * @y_offset: [out] if not NULL return y offset of surface + * @source_extents: [out] if not NULL return operation extents in source space * * Add surface or raster_source pattern to list of surfaces to be * written to the PDF file when the current page is finished. Returns - * a PDF resource to reference the image. A hash table of all images - * in the PDF files (keyed by CAIRO_MIME_TYPE_UNIQUE_ID or surface - * unique_id) to ensure surfaces with the same id are only written - * once to the PDF file. + * a PDF resource to reference the surface. A hash table of all + * surfaces in the PDF file (keyed by CAIRO_MIME_TYPE_UNIQUE_ID or + * surface unique_id) is used to ensure surfaces with the same id are + * only written once to the PDF file. * * Only one of @source_pattern or @source_surface is to be * specified. Set the other to NULL. **/ static cairo_int_status_t -_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, - cairo_bool_t smask, - const cairo_rectangle_int_t *extents, - cairo_pdf_resource_t *smask_res, - cairo_pdf_resource_t *surface_res, - int *width, - int *height, - double *x_offset, - double *y_offset, - cairo_rectangle_int_t *source_extents) +_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, + cairo_bool_t smask, + cairo_bool_t need_transp_group, + const cairo_rectangle_int_t *extents, + cairo_pdf_resource_t *smask_res, + cairo_pdf_source_surface_entry_t **pdf_source, + double *x_offset, + double *y_offset, + cairo_rectangle_int_t *source_extents) { cairo_pdf_source_surface_t src_surface; cairo_pdf_source_surface_entry_t surface_key; cairo_pdf_source_surface_entry_t *surface_entry; - cairo_int_status_t status; + cairo_int_status_t status = CAIRO_STATUS_SUCCESS; cairo_bool_t interpolate; unsigned char *unique_id = NULL; unsigned long unique_id_length = 0; cairo_image_surface_t *image; void *image_extra; + cairo_box_t box; + cairo_rectangle_int_t op_extents; + double x, y; + cairo_bool_t subsurface; switch (filter) { default: @@ -1391,8 +1521,8 @@ break; } - *x_offset = 0; - *y_offset = 0; + x = 0; + y = 0; if (source_pattern) { if (source_pattern->type == CAIRO_PATTERN_TYPE_RASTER_SOURCE) { status = _cairo_pdf_surface_acquire_source_image_from_pattern (surface, source_pattern, @@ -1400,12 +1530,27 @@ if (unlikely (status)) return status; source_surface = &image->base; - cairo_surface_get_device_offset (source_surface, x_offset, y_offset); + cairo_surface_get_device_offset (source_surface, &x, &y); } else { cairo_surface_pattern_t *surface_pattern = (cairo_surface_pattern_t *) source_pattern; source_surface = surface_pattern->surface; } } + if (x_offset) + *x_offset = x; + if (y_offset) + *y_offset = y; + + /* transform operation extents to pattern space */ + op_extents = *extents; + if (source_pattern) + { + _cairo_box_from_rectangle (&box, extents); + _cairo_matrix_transform_bounding_box_fixed (&source_pattern->matrix, &box, NULL); + _cairo_box_round_to_rectangle (&box, &op_extents); + } + if (source_extents) + *source_extents = op_extents; surface_key.id = source_surface->unique_id; surface_key.interpolate = interpolate; @@ -1415,40 +1560,36 @@ _cairo_pdf_source_surface_init_key (&surface_key); surface_entry = _cairo_hash_table_lookup (surface->all_surfaces, &surface_key.base); if (surface_entry) { - *surface_res = surface_entry->surface_res; - *width = surface_entry->width; - *height = surface_entry->height; - *source_extents = surface_entry->extents; - status = CAIRO_STATUS_SUCCESS; - } else { - status = _get_source_surface_size (source_surface, - width, - height, - source_extents); - if (unlikely(status)) - goto release_source; + if (pdf_source) + *pdf_source = surface_entry; - if (surface_key.unique_id && surface_key.unique_id_length > 0) { - unique_id = _cairo_malloc (surface_key.unique_id_length); - if (unique_id == NULL) { - status = _cairo_error (CAIRO_STATUS_NO_MEMORY); - goto release_source; - } + if (source_pattern && source_pattern->extend != CAIRO_EXTEND_NONE) + _cairo_unbounded_rectangle_init (&op_extents); - unique_id_length = surface_key.unique_id_length; - memcpy (unique_id, surface_key.unique_id, unique_id_length); - } else { - unique_id = NULL; - unique_id_length = 0; - } + _cairo_rectangle_intersect (&op_extents, &surface_entry->extents); + _cairo_rectangle_union (&surface_entry->required_extents, &op_extents); + status = CAIRO_STATUS_SUCCESS; } -release_source: - if (source_pattern && source_pattern->type == CAIRO_PATTERN_TYPE_RASTER_SOURCE) - _cairo_pdf_surface_release_source_image_from_pattern (surface, source_pattern, image, image_extra); - - if (status || surface_entry) + if (status || surface_entry) { + if (source_pattern && source_pattern->type == CAIRO_PATTERN_TYPE_RASTER_SOURCE) + _cairo_pdf_surface_release_source_image_from_pattern (surface, source_pattern, image, image_extra); return status; + } + + if (surface_key.unique_id && surface_key.unique_id_length > 0) { + unique_id = _cairo_malloc (surface_key.unique_id_length); + if (unique_id == NULL) { + status = _cairo_error (CAIRO_STATUS_NO_MEMORY); + goto fail1; + } + + unique_id_length = surface_key.unique_id_length; + memcpy (unique_id, surface_key.unique_id, unique_id_length); + } else { + unique_id = NULL; + unique_id_length = 0; + } surface_entry = malloc (sizeof (cairo_pdf_source_surface_entry_t)); if (surface_entry == NULL) { @@ -1456,20 +1597,39 @@ goto fail1; } + if (pdf_source) + *pdf_source = surface_entry; surface_entry->id = surface_key.id; surface_entry->operator = op; surface_entry->interpolate = interpolate; surface_entry->stencil_mask = stencil_mask; surface_entry->smask = smask; + surface_entry->need_transp_group = need_transp_group; surface_entry->unique_id_length = unique_id_length; surface_entry->unique_id = unique_id; - surface_entry->width = *width; - surface_entry->height = *height; - surface_entry->extents = *source_extents; if (smask_res) surface_entry->smask_res = *smask_res; else surface_entry->smask_res.id = 0; + + status = _get_source_surface_extents (source_surface, + &surface_entry->extents, + &surface_entry->bounded, + &subsurface); + if (unlikely (status)) + goto fail2; + + if (subsurface) { + *x_offset = -surface_entry->extents.x; + *y_offset = -surface_entry->extents.y; + } + + if (source_pattern && source_pattern->extend != CAIRO_EXTEND_NONE) + _cairo_unbounded_rectangle_init (&op_extents); + + _cairo_rectangle_intersect (&op_extents, &surface_entry->extents); + surface_entry->required_extents = op_extents; + _cairo_pdf_source_surface_init_key (surface_entry); src_surface.hash_entry = surface_entry; @@ -1492,18 +1652,30 @@ goto fail3; } - status = _cairo_array_append (&surface->page_surfaces, &src_surface); + /* Test if surface will be emitted as image or recording */ + status = _cairo_pdf_surface_emit_surface (surface, &src_surface, TRUE, &surface_entry->emit_image); if (unlikely (status)) goto fail3; + if (surface_entry->bounded) { + status = _cairo_array_append (&surface->page_surfaces, &src_surface); + if (unlikely (status)) + goto fail3; + } else { + status = _cairo_array_append (&surface->doc_surfaces, &src_surface); + if (unlikely (status)) + goto fail3; + } + status = _cairo_hash_table_insert (surface->all_surfaces, &surface_entry->base); if (unlikely(status)) goto fail3; - *surface_res = surface_entry->surface_res; + if (source_pattern && source_pattern->type == CAIRO_PATTERN_TYPE_RASTER_SOURCE) + _cairo_pdf_surface_release_source_image_from_pattern (surface, source_pattern, image, image_extra); - return status; + return CAIRO_STATUS_SUCCESS; fail3: if (source_pattern && source_pattern->type == CAIRO_PATTERN_TYPE_RASTER_SOURCE) @@ -1515,7 +1687,11 @@ free (surface_entry); fail1: - free (unique_id); + if (unique_id) + free (unique_id); + + if (source_pattern && source_pattern->type == CAIRO_PATTERN_TYPE_RASTER_SOURCE) + _cairo_pdf_surface_release_source_image_from_pattern (surface, source_pattern, image, image_extra); return status; } @@ -1584,6 +1760,10 @@ *pattern_res = pdf_pattern.pattern_res; *gstate_res = pdf_pattern.gstate_res; + /* If the pattern requires a gstate it will be drawn from within + * an XObject. The initial space of each XObject has an inverted + * Y-axis. */ + pdf_pattern.inverted_y_axis = pdf_pattern.gstate_res.id ? TRUE : surface->in_xobject; status = _cairo_array_append (&surface->page_patterns, &pdf_pattern); if (unlikely (status)) { @@ -1594,16 +1774,15 @@ return CAIRO_INT_STATUS_SUCCESS; } -/* Get BBox in PDF coordinates from extents in cairo coordinates */ +/* Get BBox from extents */ static void -_get_bbox_from_extents (double surface_height, - const cairo_rectangle_int_t *extents, - cairo_box_double_t *bbox) +_get_bbox_from_extents (const cairo_rectangle_int_t *extents, + cairo_box_double_t *bbox) { bbox->p1.x = extents->x; - bbox->p1.y = surface_height - (extents->y + extents->height); + bbox->p1.y = extents->y; bbox->p2.x = extents->x + extents->width; - bbox->p2.y = surface_height - extents->y; + bbox->p2.y = extents->y + extents->height; } static cairo_int_status_t @@ -1705,6 +1884,7 @@ surface->output = output; _cairo_pdf_operators_set_stream (&surface->pdf_operators, surface->output); } + _cairo_pdf_operators_reset (&surface->pdf_operators); return _cairo_output_stream_get_status (surface->output); } @@ -1965,6 +2145,9 @@ resource, surface->compress_content, NULL); + _cairo_output_stream_printf (surface->output, + "1 0 0 -1 0 %f cm\n", + surface->height); } if (unlikely (status)) return status; @@ -1972,6 +2155,7 @@ surface->content = surface->pdf_stream.self; _cairo_output_stream_printf (surface->output, "q\n"); + _cairo_pdf_operators_reset (&surface->pdf_operators); return _cairo_output_stream_get_status (surface->output); } @@ -2021,10 +2205,16 @@ { cairo_pdf_surface_t *surface = abstract_surface; long offset; - cairo_pdf_resource_t info, catalog; + cairo_pdf_resource_t catalog; cairo_status_t status, status2; int size, i; cairo_pdf_jbig2_global_t *global; + char *label; + + _cairo_pdf_surface_clear (surface); + + /* Emit unbounded surfaces */ + _cairo_pdf_surface_write_patterns_and_smask_groups (surface, TRUE); status = surface->base.status; if (status == CAIRO_STATUS_SUCCESS) @@ -2032,9 +2222,9 @@ _cairo_pdf_surface_write_pages (surface); - info = _cairo_pdf_surface_write_info (surface); - if (info.id == 0 && status == CAIRO_STATUS_SUCCESS) - status = _cairo_error (CAIRO_STATUS_NO_MEMORY); + status = _cairo_pdf_interchange_write_document_objects (surface); + if (unlikely (status)) + return status; catalog = _cairo_pdf_surface_write_catalog (surface); if (catalog.id == 0 && status == CAIRO_STATUS_SUCCESS) @@ -2050,7 +2240,7 @@ ">>\n", surface->next_available_resource.id, catalog.id, - info.id); + surface->docinfo_res.id); _cairo_output_stream_printf (surface->output, "startxref\n" @@ -2090,7 +2280,6 @@ if (status == CAIRO_STATUS_SUCCESS) status = status2; - _cairo_pdf_surface_clear (surface); _cairo_pdf_group_resources_fini (&surface->resources); _cairo_array_fini (&surface->objects); @@ -2099,6 +2288,7 @@ _cairo_array_fini (&surface->alpha_linear_functions); _cairo_array_fini (&surface->page_patterns); _cairo_array_fini (&surface->page_surfaces); + _cairo_array_fini (&surface->doc_surfaces); _cairo_hash_table_foreach (surface->all_surfaces, _cairo_pdf_source_surface_entry_pluck, surface->all_surfaces); @@ -2106,6 +2296,7 @@ _cairo_array_fini (&surface->smask_groups); _cairo_array_fini (&surface->fonts); _cairo_array_fini (&surface->knockout_group); + _cairo_array_fini (&surface->page_annots); if (surface->font_subsets) { _cairo_scaled_font_subsets_destroy (surface->font_subsets); @@ -2120,18 +2311,26 @@ return _cairo_error (CAIRO_STATUS_JBIG2_GLOBAL_MISSING); } _cairo_array_fini (&surface->jbig2_global); + _cairo_array_fini (&surface->page_heights); - _cairo_array_truncate (&surface->page_surfaces, 0); + size = _cairo_array_num_elements (&surface->page_labels); + for (i = 0; i < size; i++) { + _cairo_array_copy_element (&surface->page_labels, i, &label); + free (label); + } + _cairo_array_fini (&surface->page_labels); _cairo_surface_clipper_reset (&surface->clipper); - return status; + return _cairo_pdf_interchange_fini (surface); } static cairo_int_status_t _cairo_pdf_surface_start_page (void *abstract_surface) { cairo_pdf_surface_t *surface = abstract_surface; + cairo_pdf_resource_t page; + cairo_int_status_t status; /* Document header */ if (! surface->header_emitted) { @@ -2155,6 +2354,15 @@ } _cairo_pdf_group_resources_clear (&surface->resources); + surface->in_xobject = FALSE; + + page = _cairo_pdf_surface_new_object (surface); + if (page.id == 0) + return _cairo_error (CAIRO_STATUS_NO_MEMORY); + + status = _cairo_array_append (&surface->pages, &page); + if (unlikely (status)) + return status; return CAIRO_STATUS_SUCCESS; } @@ -2168,6 +2376,7 @@ cairo_box_double_t bbox; surface->has_fallback_images = has_fallbacks; + surface->in_xobject = has_fallbacks; bbox.p1.x = 0; bbox.p1.y = 0; bbox.p2.x = surface->width; @@ -2185,22 +2394,47 @@ return TRUE; } +static cairo_bool_t +_cairo_pdf_surface_requires_thumbnail_image (void *abstract_surface, + int *width, + int *height) +{ + cairo_pdf_surface_t *surface = abstract_surface; + + if (surface->thumbnail_width > 0 && surface->thumbnail_height > 0) { + *width = surface->thumbnail_width; + *height = surface->thumbnail_height; + return TRUE; + } + + return FALSE; +} + +static cairo_int_status_t +_cairo_pdf_surface_set_thumbnail_image (void *abstract_surface, + cairo_image_surface_t *image) +{ + cairo_pdf_surface_t *surface = abstract_surface; + + surface->thumbnail_image = (cairo_image_surface_t *)cairo_surface_reference(&image->base); + + return CAIRO_STATUS_SUCCESS; +} + static cairo_int_status_t _cairo_pdf_surface_add_padded_image_surface (cairo_pdf_surface_t *surface, const cairo_pattern_t *source, const cairo_rectangle_int_t *extents, - cairo_pdf_resource_t *surface_res, - int *width, - int *height, + cairo_pdf_source_surface_entry_t **pdf_source, double *x_offset, - double *y_offset) + double *y_offset, + cairo_rectangle_int_t *source_extents) { cairo_image_surface_t *image; cairo_surface_t *pad_image; void *image_extra; cairo_int_status_t status; int w, h; - cairo_rectangle_int_t extents2; cairo_box_t box; cairo_rectangle_int_t rect; cairo_surface_pattern_t pad_pattern; @@ -2247,18 +2481,17 @@ status = _cairo_pdf_surface_add_source_surface (surface, pad_image, NULL, - FALSE, + CAIRO_OPERATOR_OVER, /* not used for images */ source->filter, - FALSE, - FALSE, + FALSE, /* stencil mask */ + FALSE, /* smask */ + FALSE, /* need_transp_group */ extents, - NULL, - surface_res, - width, - height, + NULL, /* smask_res */ + pdf_source, x_offset, y_offset, - &extents2); + source_extents); if (unlikely (status)) goto BAIL; @@ -2668,7 +2901,8 @@ static cairo_int_status_t _cairo_pdf_surface_emit_jbig2_image (cairo_pdf_surface_t *surface, cairo_surface_t *source, - cairo_pdf_source_surface_entry_t *surface_entry) + cairo_pdf_source_surface_entry_t *surface_entry, + cairo_bool_t test) { cairo_int_status_t status; const unsigned char *mime_data; @@ -2691,6 +2925,10 @@ if (status) return status; + /* At this point we know emitting jbig2 will succeed. */ + if (test) + return CAIRO_STATUS_SUCCESS; + cairo_surface_get_mime_data (source, CAIRO_MIME_TYPE_JBIG2_GLOBAL_ID, &global_id, &global_id_length); if (global_id && global_id_length > 0) { @@ -2776,7 +3014,8 @@ static cairo_int_status_t _cairo_pdf_surface_emit_jpx_image (cairo_pdf_surface_t *surface, cairo_surface_t *source, - cairo_pdf_source_surface_entry_t *surface_entry) + cairo_pdf_source_surface_entry_t *surface_entry, + cairo_bool_t test) { cairo_int_status_t status; const unsigned char *mime_data; @@ -2807,6 +3046,10 @@ else smask_buf[0] = 0; + /* At this point we know emitting jpx will succeed. */ + if (test) + return CAIRO_STATUS_SUCCESS; + if (surface_entry->stencil_mask) { status = _cairo_pdf_surface_open_stream (surface, &surface_entry->surface_res, @@ -2851,7 +3094,8 @@ static cairo_int_status_t _cairo_pdf_surface_emit_jpeg_image (cairo_pdf_surface_t *surface, cairo_surface_t *source, - cairo_pdf_source_surface_entry_t *surface_entry) + cairo_pdf_source_surface_entry_t *surface_entry, + cairo_bool_t test) { cairo_int_status_t status; const unsigned char *mime_data; @@ -2891,6 +3135,10 @@ return CAIRO_INT_STATUS_UNSUPPORTED; } + /* At this point we know emitting jpeg will succeed. */ + if (test) + return CAIRO_STATUS_SUCCESS; + if (surface_entry->smask_res.id) snprintf(smask_buf, sizeof(smask_buf), " /SMask %d 0 R\n", surface_entry->smask_res.id); else @@ -2922,6 +3170,7 @@ " /Height %d\n" " /ColorSpace %s\n" " /Interpolate %s\n" + "%s" " /BitsPerComponent %d\n" "%s" " /Filter /DCTDecode\n", @@ -2929,6 +3178,7 @@ info.height, colorspace, surface_entry->interpolate ? "true" : "false", + info.is_adobe_jpeg && info.num_components == 4 ? " /Decode [ 1 0 1 0 1 0 1 0 ]\n" : "", info.bits_per_component, smask_buf); } @@ -2942,45 +3192,113 @@ } static cairo_int_status_t -_cairo_pdf_surface_emit_image_surface (cairo_pdf_surface_t *surface, - cairo_pdf_source_surface_t *source) +_cairo_pdf_surface_emit_ccitt_image (cairo_pdf_surface_t *surface, + cairo_surface_t *source, + cairo_pdf_source_surface_entry_t *surface_entry, + cairo_bool_t test) { - cairo_image_surface_t *image; - void *image_extra; - cairo_int_status_t status; + cairo_status_t status; + const unsigned char *ccitt_data; + unsigned long ccitt_data_len; + const unsigned char *ccitt_params_string; + unsigned long ccitt_params_string_len; + char *params, *p, *end; + cairo_ccitt_params_t ccitt_params; + char buf[300]; - if (source->type == CAIRO_PATTERN_TYPE_SURFACE) { - status = _cairo_pdf_surface_emit_jbig2_image (surface, source->surface, source->hash_entry); - if (status != CAIRO_INT_STATUS_UNSUPPORTED) - return status; + cairo_surface_get_mime_data (source, CAIRO_MIME_TYPE_CCITT_FAX, + &ccitt_data, &ccitt_data_len); + if (unlikely (source->status)) + return source->status; + if (ccitt_data == NULL) + return CAIRO_INT_STATUS_UNSUPPORTED; - status = _cairo_pdf_surface_emit_jpx_image (surface, source->surface, source->hash_entry); - if (status != CAIRO_INT_STATUS_UNSUPPORTED) - return status; + cairo_surface_get_mime_data (source, CAIRO_MIME_TYPE_CCITT_FAX_PARAMS, + &ccitt_params_string, &ccitt_params_string_len); + if (unlikely (source->status)) + return source->status; + if (ccitt_params_string == NULL) + return CAIRO_INT_STATUS_UNSUPPORTED; - status = _cairo_pdf_surface_emit_jpeg_image (surface, source->surface, source->hash_entry); - if (status != CAIRO_INT_STATUS_UNSUPPORTED) - return status; + /* ensure params_string is null terminated */ + params = malloc (ccitt_params_string_len + 1); + memcpy (params, ccitt_params_string, ccitt_params_string_len); + params[ccitt_params_string_len] = 0; + status = _cairo_tag_parse_ccitt_params (params, &ccitt_params); + if (unlikely(status)) + return source->status; + + free (params); + + /* At this point we know emitting jbig2 will succeed. */ + if (test) + return CAIRO_STATUS_SUCCESS; + + p = buf; + *p = 0; + end = buf + sizeof(buf) - 1; + p += snprintf (p, end - p, "/Columns %d /Rows %d /K %d", + ccitt_params.columns, + ccitt_params.rows, + ccitt_params.k); + if (ccitt_params.end_of_line) + p += snprintf (p, end - p, " /EndOfLine true"); + + if (ccitt_params.encoded_byte_align) + p += snprintf (p, end - p, " /EncodedByteAlign true"); + + if (!ccitt_params.end_of_block) + p += snprintf (p, end - p, " /EndOfBlock false"); + + if (ccitt_params.black_is_1) + p += snprintf (p, end - p, " /BlackIs1 true"); + + if (ccitt_params.damaged_rows_before_error > 0) { + p += snprintf (p, end - p, " /DamagedRowsBeforeError %d", + ccitt_params.damaged_rows_before_error); } - if (source->type == CAIRO_PATTERN_TYPE_SURFACE) { - status = _cairo_surface_acquire_source_image (source->surface, &image, &image_extra); + if (surface_entry->stencil_mask) { + status = _cairo_pdf_surface_open_stream (surface, + &surface_entry->surface_res, + FALSE, + " /Type /XObject\n" + " /Subtype /Image\n" + " /ImageMask true\n" + " /Width %d\n" + " /Height %d\n" + " /Interpolate %s\n" + " /BitsPerComponent 1\n" + " /Decode [1 0]\n" + " /Filter /CCITTFaxDecode\n" + " /DecodeParms << %s >> ", + ccitt_params.columns, + ccitt_params.rows, + surface_entry->interpolate ? "true" : "false", + buf); } else { - status = _cairo_pdf_surface_acquire_source_image_from_pattern (surface, source->raster_pattern, - &image, &image_extra); + status = _cairo_pdf_surface_open_stream (surface, + &surface_entry->surface_res, + FALSE, + " /Type /XObject\n" + " /Subtype /Image\n" + " /Width %d\n" + " /Height %d\n" + " /ColorSpace /DeviceGray\n" + " /BitsPerComponent 1\n" + " /Interpolate %s\n" + " /Filter /CCITTFaxDecode\n" + " /DecodeParms << %s >> ", + ccitt_params.columns, + ccitt_params.rows, + surface_entry->interpolate ? "true" : "false", + buf); } if (unlikely (status)) return status; - status = _cairo_pdf_surface_emit_image (surface, - image, - source->hash_entry); - - if (source->type == CAIRO_PATTERN_TYPE_SURFACE) - _cairo_surface_release_source_image (source->surface, image, image_extra); - else - _cairo_pdf_surface_release_source_image_from_pattern (surface, source->raster_pattern, - image, image_extra); + _cairo_output_stream_write (surface->output, ccitt_data, ccitt_data_len); + status = _cairo_pdf_surface_close_stream (surface); return status; } @@ -2989,50 +3307,58 @@ _cairo_pdf_surface_emit_recording_surface (cairo_pdf_surface_t *surface, cairo_pdf_source_surface_t *pdf_source) { - double old_width, old_height; + cairo_rectangle_int_t old_surface_extents; + cairo_bool_t old_surface_bounded; cairo_paginated_mode_t old_paginated_mode; cairo_surface_clipper_t old_clipper; + cairo_bool_t old_in_xobject; cairo_box_double_t bbox; cairo_int_status_t status; int alpha = 0; cairo_surface_t *free_me = NULL; cairo_surface_t *source; const cairo_rectangle_int_t *extents; - 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; - width = pdf_source->hash_entry->width; - height = pdf_source->hash_entry->height; + + if (pdf_source->hash_entry->bounded) { + extents = &pdf_source->hash_entry->extents; + } else { + extents = &pdf_source->hash_entry->required_extents; + } + is_subsurface = FALSE; source = pdf_source->surface; - if (_cairo_surface_is_snapshot (source)) { + if (_cairo_surface_is_snapshot (source)) free_me = source = _cairo_surface_snapshot_get_target (source); - } else if (source->backend->type == CAIRO_SURFACE_TYPE_SUBSURFACE) { + + if (source->backend->type == CAIRO_SURFACE_TYPE_SUBSURFACE) { cairo_surface_subsurface_t *sub = (cairo_surface_subsurface_t *) source; source = sub->target; extents = &sub->extents; - width = extents->width; - height = extents->height; 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_in_xobject = surface->in_xobject; + old_surface_extents = surface->surface_extents; + old_surface_bounded = surface->surface_bounded; old_paginated_mode = surface->paginated_mode; old_clipper = surface->clipper; + surface->surface_extents = *extents; _cairo_surface_clipper_init (&surface->clipper, _cairo_pdf_surface_clipper_intersect_clip_path); - _cairo_pdf_surface_set_size_internal (surface, width, height); + _cairo_pdf_operators_reset (&surface->pdf_operators); + surface->in_xobject = TRUE; + surface->surface_extents = *extents; + surface->surface_bounded = TRUE; /* Patterns are emitted after fallback images. The paginated mode * needs to be set to _RENDER while the recording surface is replayed @@ -3040,17 +3366,24 @@ */ surface->paginated_mode = CAIRO_PAGINATED_MODE_RENDER; _cairo_pdf_group_resources_clear (&surface->resources); - _get_bbox_from_extents (height, extents, &bbox); + _get_bbox_from_extents (extents, &bbox); /* 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. + * to replay the group in place when: + * - ca/CA when painting this groups is 1.0 (need_transp_group is FALSE), + * - all operators are OVER, and + * - the recording contains only opaque and/or clear alpha. */ - transparency_group = !(pdf_source->hash_entry->operator == CAIRO_OPERATOR_OVER && + transparency_group = pdf_source->hash_entry->need_transp_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); + + status = _cairo_pdf_surface_open_content_stream (surface, + &bbox, + &pdf_source->hash_entry->surface_res, + TRUE, + transparency_group); if (unlikely (status)) goto err; @@ -3060,10 +3393,12 @@ goto err; _cairo_output_stream_printf (surface->output, - "q /a%d gs 0 0 0 rg 0 0 %f %f re f Q\n", + "q /a%d gs 0 0 0 rg %d %d %d %d re f Q\n", alpha, - surface->width, - surface->height); + extents->x, + extents->y, + extents->width, + extents->height); } status = _cairo_recording_surface_replay_region (source, @@ -3078,25 +3413,118 @@ _cairo_surface_clipper_reset (&surface->clipper); surface->clipper = old_clipper; - _cairo_pdf_surface_set_size_internal (surface, - old_width, - old_height); + _cairo_pdf_operators_reset (&surface->pdf_operators); + surface->in_xobject = old_in_xobject; surface->paginated_mode = old_paginated_mode; + surface->surface_extents = old_surface_extents; + surface->surface_bounded = old_surface_bounded; err: cairo_surface_destroy (free_me); return status; } +/** + * _cairo_pdf_surface_emit_surface: + * @surface: [in] the pdf surface + * @source: [in] #cairo_pdf_source_surface_t containing the surface to write + * @test: [in] if true, test what type of surface will be emitted. + * @is_image: [out] if @test is true, returns TRUE if the surface will be emitted + * as an Image XObject. + * + * If @test is FALSE, emit @src_surface as an XObject. + * If @test is TRUE, don't emit anything. Set @is_image based on the output that would be emitted. + **/ static cairo_int_status_t _cairo_pdf_surface_emit_surface (cairo_pdf_surface_t *surface, - cairo_pdf_source_surface_t *src_surface) + cairo_pdf_source_surface_t *source, + cairo_bool_t test, + cairo_bool_t *is_image) { - if (src_surface->type == CAIRO_PATTERN_TYPE_SURFACE && - src_surface->surface->type == CAIRO_SURFACE_TYPE_RECORDING) - return _cairo_pdf_surface_emit_recording_surface (surface, src_surface); + cairo_image_surface_t *image; + void *image_extra; + cairo_int_status_t status; + + /* Try all the supported mime types and recording type, falling through + * each option if unsupported */ + if (source->type == CAIRO_PATTERN_TYPE_SURFACE) { + status = _cairo_pdf_surface_emit_jbig2_image (surface, + source->surface, + source->hash_entry, + test); + if (status != CAIRO_INT_STATUS_UNSUPPORTED) { + *is_image = TRUE; + return status; + } + + status = _cairo_pdf_surface_emit_jpx_image (surface, + source->surface, + source->hash_entry, + test); + if (status != CAIRO_INT_STATUS_UNSUPPORTED) { + *is_image = TRUE; + return status; + } + + status = _cairo_pdf_surface_emit_jpeg_image (surface, + source->surface, + source->hash_entry, + test); + if (status != CAIRO_INT_STATUS_UNSUPPORTED) { + *is_image = TRUE; + return status; + } + + status = _cairo_pdf_surface_emit_ccitt_image (surface, + source->surface, + source->hash_entry, + test); + if (status != CAIRO_INT_STATUS_UNSUPPORTED) { + *is_image = TRUE; + return status; + } + + if (source->surface->type == CAIRO_SURFACE_TYPE_RECORDING) { + if (test) { + *is_image = FALSE; + return CAIRO_INT_STATUS_SUCCESS; + } else { + return _cairo_pdf_surface_emit_recording_surface (surface, source); + } + } + } + + /* The only option left is to emit as an image surface */ + + 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, + &image, + &image_extra); + } + if (unlikely (status)) + return status; + + if (test) { + *is_image = TRUE; + } else { + status = _cairo_pdf_surface_emit_image (surface, + image, + source->hash_entry); + } + + if (source->type == CAIRO_PATTERN_TYPE_SURFACE) { + _cairo_surface_release_source_image (source->surface, image, image_extra); + } else { + _cairo_pdf_surface_release_source_image_from_pattern (surface, + source->raster_pattern, + image, + image_extra); + } - return _cairo_pdf_surface_emit_image_surface (surface, src_surface); + return status; } static cairo_int_status_t @@ -3105,51 +3533,54 @@ { cairo_pattern_t *pattern = pdf_pattern->pattern; cairo_int_status_t status; - cairo_pdf_resource_t pattern_resource = {0}; cairo_matrix_t cairo_p2d, pdf_p2d; cairo_extend_t extend = cairo_pattern_get_extend (pattern); double xstep, ystep; cairo_rectangle_int_t pattern_extents; - int pattern_width = 0; /* squelch bogus compiler warning */ - int pattern_height = 0; /* squelch bogus compiler warning */ double x_offset; double y_offset; - char draw_surface[200]; - cairo_box_double_t bbox; + char draw_surface[50]; + char draw_surface2[200]; + cairo_box_double_t bbox; + cairo_matrix_t mat; + cairo_pdf_source_surface_entry_t *pdf_source; + cairo_rectangle_int_t op_extents; + assert (pattern->type == CAIRO_PATTERN_TYPE_SURFACE); if (pattern->extend == CAIRO_EXTEND_PAD) { status = _cairo_pdf_surface_add_padded_image_surface (surface, pattern, &pdf_pattern->extents, - &pattern_resource, - &pattern_width, - &pattern_height, + &pdf_source, &x_offset, - &y_offset); - pattern_extents.x = 0; - pattern_extents.y = 0; - pattern_extents.width = pattern_width; - pattern_extents.height = pattern_height; + &y_offset, + &op_extents); } else { status = _cairo_pdf_surface_add_source_surface (surface, NULL, pattern, pdf_pattern->operator, pattern->filter, - FALSE, - FALSE, + FALSE, /* stencil mask */ + FALSE, /* smask */ + FALSE, /* need_transp_group */ &pdf_pattern->extents, - NULL, - &pattern_resource, - &pattern_width, - &pattern_height, + NULL, /* smask_res */ + &pdf_source, &x_offset, &y_offset, - &pattern_extents); + &op_extents); } if (unlikely (status)) return status; + pattern_extents = pdf_source->extents; + if (!pdf_source->bounded) + { + extend = CAIRO_EXTEND_NONE; + _cairo_rectangle_intersect (&pattern_extents, &op_extents); + } + switch (extend) { case CAIRO_EXTEND_PAD: case CAIRO_EXTEND_NONE: @@ -3167,7 +3598,8 @@ * repeat visibly. */ double x1 = 0.0, y1 = 0.0; - double x2 = surface->width, y2 = surface->height; + double x2 = surface->surface_extents.width; + double y2 = surface->surface_extents.height; _cairo_matrix_transform_bounding_box (&pattern->matrix, &x1, &y1, &x2, &y2, NULL); @@ -3177,23 +3609,23 @@ * required an answer that's large enough, we don't really * care if it's not as tight as possible.*/ xstep = ystep = ceil ((x2 - x1) + (y2 - y1) + - pattern_width + pattern_height); + pattern_extents.width + pattern_extents.height); } break; case CAIRO_EXTEND_REPEAT: - xstep = pattern_width; - ystep = pattern_height; + xstep = pattern_extents.width; + ystep = pattern_extents.height; break; + case CAIRO_EXTEND_REFLECT: - pattern_extents.x = 0; - pattern_extents.y = 0; - pattern_extents.width = pattern_width*2; - pattern_extents.height = pattern_height*2; - xstep = pattern_width*2; - ystep = pattern_height*2; + pattern_extents.width *= 2; + pattern_extents.height *= 2; + xstep = pattern_extents.width; + ystep = pattern_extents.height; break; - /* All the rest (if any) should have been analyzed away, so this - * case should be unreachable. */ + + /* All the rest (if any) should have been analyzed away, so this + * case should be unreachable. */ default: ASSERT_NOT_REACHED; xstep = 0; @@ -3232,12 +3664,19 @@ /* cairo_pattern_set_matrix ensures the matrix is invertible */ assert (status == CAIRO_INT_STATUS_SUCCESS); - cairo_matrix_multiply (&pdf_p2d, &cairo_p2d, &surface->cairo_to_pdf); - cairo_matrix_translate (&pdf_p2d, -x_offset, -y_offset); - cairo_matrix_translate (&pdf_p2d, 0.0, pattern_height); - cairo_matrix_scale (&pdf_p2d, 1.0, -1.0); + if (pdf_pattern->inverted_y_axis) + cairo_matrix_init (&mat, 1, 0, 0, 1, 0, 0); + else + cairo_matrix_init (&mat, 1, 0, 0, -1, 0, surface->height); + + cairo_matrix_multiply (&pdf_p2d, &cairo_p2d, &mat); + cairo_matrix_translate (&pdf_p2d, x_offset, y_offset); + if (pdf_source->emit_image) { + cairo_matrix_translate (&pdf_p2d, 0.0, pdf_source->extents.height); + cairo_matrix_scale (&pdf_p2d, 1.0, -1.0); + } - _get_bbox_from_extents (pattern_height, &pattern_extents, &bbox); + _get_bbox_from_extents (&pattern_extents, &bbox); _cairo_pdf_surface_update_object (surface, pdf_pattern->pattern_res); status = _cairo_pdf_surface_open_stream (surface, &pdf_pattern->pattern_res, @@ -3255,40 +3694,59 @@ pdf_p2d.xx, pdf_p2d.yx, pdf_p2d.xy, pdf_p2d.yy, pdf_p2d.x0, pdf_p2d.y0, - pattern_resource.id, - pattern_resource.id); + pdf_source->surface_res.id, + pdf_source->surface_res.id); if (unlikely (status)) return status; - if (pattern->type == CAIRO_PATTERN_TYPE_SURFACE && - ((cairo_surface_pattern_t *) pattern)->surface->type == CAIRO_SURFACE_TYPE_RECORDING) { + if (pdf_source->emit_image) { snprintf(draw_surface, sizeof (draw_surface), - "/x%d Do\n", - pattern_resource.id); + "q %d 0 0 %d 0 0 cm /x%d Do Q", + pdf_source->extents.width, + pdf_source->extents.height, + pdf_source->surface_res.id); } else { snprintf(draw_surface, sizeof (draw_surface), - "q %d 0 0 %d 0 0 cm /x%d Do Q", - pattern_width, - pattern_height, - pattern_resource.id); + "/x%d Do", + pdf_source->surface_res.id); } if (extend == CAIRO_EXTEND_REFLECT) { - _cairo_output_stream_printf (surface->output, - "q 0 0 %d %d re W n %s Q\n" - "q -1 0 0 1 %d 0 cm 0 0 %d %d re W n %s Q\n" - "q 1 0 0 -1 0 %d cm 0 0 %d %d re W n %s Q\n" - "q -1 0 0 -1 %d %d cm 0 0 %d %d re W n %s Q\n", - pattern_width, pattern_height, - draw_surface, - pattern_width*2, pattern_width, pattern_height, - draw_surface, - pattern_height*2, pattern_width, pattern_height, - draw_surface, - pattern_width*2, pattern_height*2, pattern_width, pattern_height, - draw_surface); + cairo_rectangle_int_t p_extents = pdf_source->extents; + snprintf(draw_surface2, + sizeof (draw_surface2), + "%d %d %d %d re W n %s", + p_extents.x, p_extents.y, + p_extents.width, p_extents.height, + draw_surface); + + _cairo_output_stream_printf (surface->output, "q %s Q\n", draw_surface2); + + cairo_matrix_init_translate (&mat, p_extents.x, p_extents.y); + cairo_matrix_scale (&mat, -1, 1); + cairo_matrix_translate (&mat, -2*p_extents.width, 0); + cairo_matrix_translate (&mat, -p_extents.x, -p_extents.y); + _cairo_output_stream_printf (surface->output, "q "); + _cairo_output_stream_print_matrix (surface->output, &mat); + _cairo_output_stream_printf (surface->output, " cm %s Q\n", draw_surface2); + + cairo_matrix_init_translate (&mat, p_extents.x, p_extents.y); + cairo_matrix_scale (&mat, 1, -1); + cairo_matrix_translate (&mat, 0, -2*p_extents.height); + cairo_matrix_translate (&mat, -p_extents.x, -p_extents.y); + _cairo_output_stream_printf (surface->output, "q "); + _cairo_output_stream_print_matrix (surface->output, &mat); + _cairo_output_stream_printf (surface->output, " cm %s Q\n", draw_surface2); + + cairo_matrix_init_translate (&mat, p_extents.x, p_extents.y); + cairo_matrix_scale (&mat, -1, -1); + cairo_matrix_translate (&mat, -2*p_extents.width, -2*p_extents.height); + cairo_matrix_translate (&mat, -p_extents.x, -p_extents.y); + _cairo_output_stream_printf (surface->output, "q "); + _cairo_output_stream_print_matrix (surface->output, &mat); + _cairo_output_stream_printf (surface->output, " cm %s Q\n", draw_surface2); } else { _cairo_output_stream_printf (surface->output, " %s \n", @@ -3748,7 +4206,7 @@ * coordinates. The color and alpha shading patterns painted * in the XObject below contain the cairo pattern to pdf page * matrix in the /Matrix entry of the pattern. */ - _get_bbox_from_extents (pdf_pattern->height, &pdf_pattern->extents, &box); + _get_bbox_from_extents (&pdf_pattern->extents, &box); x1 = box.p1.x; y1 = box.p1.y; x2 = box.p2.x; @@ -3913,6 +4371,7 @@ cairo_circle_double_t start, end; double domain[2]; cairo_int_status_t status; + cairo_matrix_t mat; assert (pattern->n_stops != 0); @@ -3927,7 +4386,13 @@ status = cairo_matrix_invert (&pat_to_pdf); /* cairo_pattern_set_matrix ensures the matrix is invertible */ assert (status == CAIRO_INT_STATUS_SUCCESS); - cairo_matrix_multiply (&pat_to_pdf, &pat_to_pdf, &surface->cairo_to_pdf); + + if (pdf_pattern->inverted_y_axis) + cairo_matrix_init (&mat, 1, 0, 0, 1, 0, 0); + else + cairo_matrix_init (&mat, 1, 0, 0, -1, 0, surface->height); + + cairo_matrix_multiply (&pat_to_pdf, &pat_to_pdf, &mat); if (pattern->base.extend == CAIRO_EXTEND_REPEAT || pattern->base.extend == CAIRO_EXTEND_REFLECT) @@ -4059,13 +4524,19 @@ cairo_pdf_shading_t shading; int i; cairo_pdf_resource_t res; + cairo_matrix_t mat; pat_to_pdf = pattern->matrix; status = cairo_matrix_invert (&pat_to_pdf); /* cairo_pattern_set_matrix ensures the matrix is invertible */ assert (status == CAIRO_INT_STATUS_SUCCESS); - cairo_matrix_multiply (&pat_to_pdf, &pat_to_pdf, &surface->cairo_to_pdf); + if (pdf_pattern->inverted_y_axis) + cairo_matrix_init (&mat, 1, 0, 0, 1, 0, 0); + else + cairo_matrix_init (&mat, 1, 0, 0, -1, 0, surface->height); + + cairo_matrix_multiply (&pat_to_pdf, &pat_to_pdf, &mat); status = _cairo_pdf_shading_init_color (&shading, (cairo_mesh_pattern_t *) pattern); if (unlikely (status)) @@ -4197,15 +4668,8 @@ static cairo_int_status_t _cairo_pdf_surface_emit_pattern (cairo_pdf_surface_t *surface, cairo_pdf_pattern_t *pdf_pattern) { - double old_width, old_height; cairo_int_status_t status; - old_width = surface->width; - old_height = surface->height; - _cairo_pdf_surface_set_size_internal (surface, - pdf_pattern->width, - pdf_pattern->height); - switch (pdf_pattern->pattern->type) { case CAIRO_PATTERN_TYPE_SOLID: ASSERT_NOT_REACHED; @@ -4232,10 +4696,6 @@ break; } - _cairo_pdf_surface_set_size_internal (surface, - old_width, - old_height); - return status; } @@ -4244,17 +4704,16 @@ cairo_operator_t op, const cairo_pattern_t *source, const cairo_rectangle_int_t *extents, + double alpha, cairo_pdf_resource_t *smask_res, cairo_bool_t stencil_mask) { - cairo_pdf_resource_t surface_res; - int width, height; cairo_matrix_t cairo_p2d, pdf_p2d; cairo_int_status_t status; - int alpha; - cairo_rectangle_int_t extents2; + int alpha_id; double x_offset; double y_offset; + cairo_pdf_source_surface_entry_t *pdf_source; if (source->extend == CAIRO_EXTEND_PAD && !(source->type == CAIRO_PATTERN_TYPE_SURFACE && @@ -4263,11 +4722,10 @@ status = _cairo_pdf_surface_add_padded_image_surface (surface, source, extents, - &surface_res, - &width, - &height, + &pdf_source, &x_offset, - &y_offset); + &y_offset, + NULL); } else { status = _cairo_pdf_surface_add_source_surface (surface, NULL, @@ -4275,15 +4733,14 @@ op, source->filter, stencil_mask, - FALSE, + FALSE, /* smask */ + alpha != 1.0, /* need_transp_group */ extents, smask_res, - &surface_res, - &width, - &height, + &pdf_source, &x_offset, &y_offset, - &extents2); + NULL); } if (unlikely (status)) return status; @@ -4296,11 +4753,20 @@ pdf_p2d = surface->cairo_to_pdf; cairo_matrix_multiply (&pdf_p2d, &cairo_p2d, &pdf_p2d); cairo_matrix_translate (&pdf_p2d, x_offset, y_offset); - cairo_matrix_translate (&pdf_p2d, 0.0, height); - cairo_matrix_scale (&pdf_p2d, 1.0, -1.0); - if (!(source->type == CAIRO_PATTERN_TYPE_SURFACE && - ((cairo_surface_pattern_t *)source)->surface->type == CAIRO_SURFACE_TYPE_RECORDING)) - { + if (pdf_source->emit_image) { + int width, height; + + if (pdf_source->bounded) { + width = pdf_source->extents.width; + height = pdf_source->extents.height; + } else { + /* We can't scale an image to an unbounded surface size so just set the size to 1 */ + width = 1; + height = 1; + } + + cairo_matrix_translate (&pdf_p2d, 0.0, height); + cairo_matrix_scale (&pdf_p2d, 1.0, -1.0); cairo_matrix_scale (&pdf_p2d, width, height); } @@ -4313,34 +4779,35 @@ _cairo_output_stream_printf (surface->output, " cm\n"); } - status = _cairo_pdf_surface_add_alpha (surface, 1.0, &alpha); + status = _cairo_pdf_surface_add_alpha (surface, alpha, &alpha_id); if (unlikely (status)) return status; if (stencil_mask) { _cairo_output_stream_printf (surface->output, "/x%d Do\n", - surface_res.id); + pdf_source->surface_res.id); } else { _cairo_output_stream_printf (surface->output, "/a%d gs /x%d Do\n", - alpha, - surface_res.id); + alpha_id, + pdf_source->surface_res.id); } - return _cairo_pdf_surface_add_xobject (surface, surface_res); + return _cairo_pdf_surface_add_xobject (surface, pdf_source->surface_res); } 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) + const cairo_rectangle_int_t *extents, + double alpha) { cairo_pdf_resource_t shading_res, gstate_res; cairo_matrix_t pat_to_pdf; cairo_int_status_t status; - int alpha; + int alpha_id; status = _cairo_pdf_surface_add_pdf_shading (surface, source, op, extents, @@ -4379,13 +4846,13 @@ gstate_res.id, shading_res.id); } else { - status = _cairo_pdf_surface_add_alpha (surface, 1.0, &alpha); + status = _cairo_pdf_surface_add_alpha (surface, alpha, &alpha_id); if (unlikely (status)) return status; _cairo_output_stream_printf (surface->output, "/a%d gs /sh%d sh\n", - alpha, + alpha_id, shading_res.id); } @@ -4397,6 +4864,7 @@ cairo_operator_t op, const cairo_pattern_t *source, const cairo_rectangle_int_t *extents, + double alpha, cairo_bool_t mask) { switch (source->type) { @@ -4406,6 +4874,7 @@ op, source, extents, + alpha, NULL, mask); case CAIRO_PATTERN_TYPE_LINEAR: @@ -4414,7 +4883,8 @@ return _cairo_pdf_surface_paint_gradient (surface, op, source, - extents); + extents, + alpha); case CAIRO_PATTERN_TYPE_SOLID: default: @@ -4593,6 +5063,20 @@ cairo_pdf_surface_t *surface = abstract_surface; cairo_int_status_t status; + status = _cairo_array_append (&surface->page_heights, &surface->height); + if (unlikely (status)) + return status; + + status = _cairo_array_append (&surface->page_labels, &surface->current_page_label); + if (unlikely (status)) + return status; + + surface->current_page_label = NULL; + + status = _cairo_pdf_interchange_end_page_content (surface); + if (unlikely (status)) + return status; + status = _cairo_pdf_surface_close_content_stream (surface); if (unlikely (status)) return status; @@ -4614,17 +5098,10 @@ { cairo_pdf_surface_t *surface = abstract_surface; - rectangle->x = 0; - rectangle->y = 0; - - /* XXX: The conversion to integers here is pretty bogus, (not to - * mention the arbitrary limitation of width to a short(!). We - * may need to come up with a better interface for get_size. - */ - rectangle->width = ceil (surface->width); - rectangle->height = ceil (surface->height); + if (surface->surface_bounded) + *rectangle = surface->surface_extents; - return TRUE; + return surface->surface_bounded; } static void @@ -4639,28 +5116,6 @@ _cairo_font_options_set_round_glyph_positions (options, CAIRO_ROUND_GLYPH_POS_OFF); } -static cairo_pdf_resource_t -_cairo_pdf_surface_write_info (cairo_pdf_surface_t *surface) -{ - cairo_pdf_resource_t info; - - info = _cairo_pdf_surface_new_object (surface); - if (info.id == 0) - return info; - - _cairo_output_stream_printf (surface->output, - "%d 0 obj\n" - "<< /Creator (cairo %s (http://cairographics.org))\n" - " /Producer (cairo %s (http://cairographics.org))\n" - ">>\n" - "endobj\n", - info.id, - cairo_version_string (), - cairo_version_string ()); - - return info; -} - static void _cairo_pdf_surface_write_pages (cairo_pdf_surface_t *surface) { @@ -4691,8 +5146,8 @@ "endobj\n"); } -static cairo_int_status_t -_utf8_to_pdf_string (const char *utf8, char **str_out) +cairo_int_status_t +_cairo_utf8_to_pdf_string (const char *utf8, char **str_out) { int i; int len; @@ -4757,8 +5212,12 @@ if (utf8 && *utf8) { status = _cairo_utf8_to_utf16 (utf8, -1, &utf16, &utf16_len); - if (unlikely (status)) + if (unlikely (status == CAIRO_INT_STATUS_INVALID_STRING)) { + utf16 = NULL; + utf16_len = 0; + } else if (unlikely (status)) { return status; + } } _cairo_output_stream_printf (surface->output, "<"); @@ -5033,14 +5492,15 @@ if (subset->family_name_utf8) { char *pdf_str; - status = _utf8_to_pdf_string (subset->family_name_utf8, &pdf_str); - if (unlikely (status)) + status = _cairo_utf8_to_pdf_string (subset->family_name_utf8, &pdf_str); + if (likely (status == CAIRO_INT_STATUS_SUCCESS)) { + _cairo_output_stream_printf (surface->output, + " /FontFamily %s\n", + pdf_str); + free (pdf_str); + } else if (status != CAIRO_INT_STATUS_INVALID_STRING) { return status; - - _cairo_output_stream_printf (surface->output, - " /FontFamily %s\n", - pdf_str); - free (pdf_str); + } } _cairo_output_stream_printf (surface->output, @@ -5478,14 +5938,15 @@ if (subset.family_name_utf8) { char *pdf_str; - status = _utf8_to_pdf_string (subset.family_name_utf8, &pdf_str); - if (unlikely (status)) + status = _cairo_utf8_to_pdf_string (subset.family_name_utf8, &pdf_str); + if (likely (status == CAIRO_INT_STATUS_SUCCESS)) { + _cairo_output_stream_printf (surface->output, + " /FontFamily %s\n", + pdf_str); + free (pdf_str); + } else if (status != CAIRO_INT_STATUS_INVALID_STRING) { return status; - - _cairo_output_stream_printf (surface->output, - " /FontFamily %s\n", - pdf_str); - free (pdf_str); + } } _cairo_output_stream_printf (surface->output, @@ -5849,16 +6310,16 @@ "<< /Type /Font\n" " /Subtype /Type3\n" " /FontBBox [%f %f %f %f]\n" - " /FontMatrix [ 1 0 0 1 0 0 ]\n" + " /FontMatrix [ 1 0 0 -1 0 0 ]\n" " /Encoding %d 0 R\n" " /CharProcs %d 0 R\n" " /FirstChar 0\n" " /LastChar %d\n", subset_resource.id, _cairo_fixed_to_double (font_bbox.p1.x), - - _cairo_fixed_to_double (font_bbox.p2.y), + _cairo_fixed_to_double (font_bbox.p1.y), _cairo_fixed_to_double (font_bbox.p2.x), - - _cairo_fixed_to_double (font_bbox.p1.y), + _cairo_fixed_to_double (font_bbox.p2.y), encoding.id, char_procs.id, font_subset->num_glyphs - 1); @@ -5982,12 +6443,42 @@ _cairo_output_stream_printf (surface->output, "%d 0 obj\n" "<< /Type /Catalog\n" - " /Pages %d 0 R\n" - ">>\n" - "endobj\n", + " /Pages %d 0 R\n", catalog.id, surface->pages_resource.id); + if (surface->struct_tree_root.id != 0) { + _cairo_output_stream_printf (surface->output, + " /StructTreeRoot %d 0 R\n", + surface->struct_tree_root.id); + if (surface->tagged) { + _cairo_output_stream_printf (surface->output, + " /MarkInfo << /Marked true >>\n"); + } + } + + if (surface->outlines_dict_res.id != 0) { + _cairo_output_stream_printf (surface->output, + " /Outlines %d 0 R\n", + surface->outlines_dict_res.id); + } + + if (surface->page_labels_res.id != 0) { + _cairo_output_stream_printf (surface->output, + " /PageLabels %d 0 R\n", + surface->page_labels_res.id); + } + + if (surface->names_dict_res.id != 0) { + _cairo_output_stream_printf (surface->output, + " /Names %d 0 R\n", + surface->names_dict_res.id); + } + + _cairo_output_stream_printf (surface->output, + ">>\n" + "endobj\n"); + return catalog; } @@ -6031,7 +6522,7 @@ cairo_box_double_t bbox; /* Create mask group */ - _get_bbox_from_extents (group->height, &group->extents, &bbox); + _get_bbox_from_extents (&group->extents, &bbox); status = _cairo_pdf_surface_open_group (surface, &bbox, NULL); if (unlikely (status)) return status; @@ -6042,7 +6533,8 @@ CAIRO_OPERATOR_OVER, group->mask, &group->extents, - FALSE); + 1.0, /* alpha */ + FALSE); /* mask */ if (unlikely (status)) return status; @@ -6118,7 +6610,8 @@ CAIRO_OPERATOR_OVER, group->source, &group->extents, - FALSE); + 1.0, /* alpha */ + FALSE); /* mask */ if (unlikely (status)) return status; @@ -6218,14 +6711,20 @@ cairo_pdf_smask_group_t *group) { double old_width, old_height; + cairo_bool_t old_in_xobject; cairo_int_status_t status; cairo_box_double_t bbox; + cairo_rectangle_int_t old_surface_extents; old_width = surface->width; old_height = surface->height; + old_surface_extents = surface->surface_extents; + old_in_xobject = surface->in_xobject; + surface->in_xobject = TRUE; _cairo_pdf_surface_set_size_internal (surface, group->width, group->height); + _cairo_pdf_operators_reset (&surface->pdf_operators); /* _mask is a special case that requires two groups - source * and mask as well as a smask and gstate dictionary */ if (group->operation == PDF_MASK) { @@ -6233,7 +6732,7 @@ goto RESTORE_SIZE; } - _get_bbox_from_extents (group->height, &group->extents, &bbox); + _get_bbox_from_extents (&group->extents, &bbox); status = _cairo_pdf_surface_open_group (surface, &bbox, &group->group_res); if (unlikely (status)) return status; @@ -6285,21 +6784,26 @@ status = _cairo_pdf_surface_close_group (surface, NULL); RESTORE_SIZE: + surface->in_xobject = old_in_xobject; _cairo_pdf_surface_set_size_internal (surface, old_width, old_height); + surface->surface_extents = old_surface_extents; + _cairo_pdf_operators_reset (&surface->pdf_operators); return status; } static cairo_int_status_t -_cairo_pdf_surface_write_patterns_and_smask_groups (cairo_pdf_surface_t *surface) +_cairo_pdf_surface_write_patterns_and_smask_groups (cairo_pdf_surface_t *surface, + cairo_bool_t finish) { cairo_pdf_pattern_t pattern; cairo_pdf_smask_group_t *group; cairo_pdf_source_surface_t src_surface; - unsigned int pattern_index, group_index, surface_index; + unsigned int pattern_index, group_index, surface_index, doc_surface_index; cairo_int_status_t status; + cairo_bool_t is_image; /* Writing out PDF_MASK groups will cause additional smask groups * to be appended to surface->smask_groups. Additional patterns @@ -6311,9 +6815,11 @@ pattern_index = 0; group_index = 0; surface_index = 0; + doc_surface_index = 0; while ((pattern_index < _cairo_array_num_elements (&surface->page_patterns)) || (group_index < _cairo_array_num_elements (&surface->smask_groups)) || - (surface_index < _cairo_array_num_elements (&surface->page_surfaces))) + (surface_index < _cairo_array_num_elements (&surface->page_surfaces)) || + (finish && (doc_surface_index < _cairo_array_num_elements (&surface->doc_surfaces)))) { for (; group_index < _cairo_array_num_elements (&surface->smask_groups); group_index++) { _cairo_array_copy_element (&surface->smask_groups, group_index, &group); @@ -6331,10 +6837,19 @@ for (; surface_index < _cairo_array_num_elements (&surface->page_surfaces); surface_index++) { _cairo_array_copy_element (&surface->page_surfaces, surface_index, &src_surface); - status = _cairo_pdf_surface_emit_surface (surface, &src_surface); + status = _cairo_pdf_surface_emit_surface (surface, &src_surface, FALSE, &is_image); if (unlikely (status)) return status; } + + if (finish) { + for (; doc_surface_index < _cairo_array_num_elements (&surface->doc_surfaces); doc_surface_index++) { + _cairo_array_copy_element (&surface->doc_surfaces, doc_surface_index, &src_surface); + status = _cairo_pdf_surface_emit_surface (surface, &src_surface, FALSE, &is_image); + if (unlikely (status)) + return status; + } + } } return CAIRO_STATUS_SUCCESS; @@ -6343,9 +6858,14 @@ static cairo_int_status_t _cairo_pdf_surface_write_page (cairo_pdf_surface_t *surface) { - cairo_pdf_resource_t page, knockout, res; + cairo_pdf_resource_t knockout, res, thumbnail_res; + cairo_pdf_resource_t *page; cairo_int_status_t status; - unsigned int i, len; + unsigned int i, len, page_num, num_annots; + + status = _cairo_pdf_interchange_write_page_objects (surface); + if (unlikely (status)) + return status; _cairo_pdf_group_resources_clear (&surface->resources); if (surface->has_fallback_images) { @@ -6356,7 +6876,7 @@ extents.y = 0; extents.width = ceil (surface->width); extents.height = ceil (surface->height); - _get_bbox_from_extents (surface->height, &extents, &bbox); + _get_bbox_from_extents (&extents, &bbox); status = _cairo_pdf_surface_open_knockout_group (surface, &bbox); if (unlikely (status)) return status; @@ -6399,13 +6919,22 @@ return status; } - page = _cairo_pdf_surface_new_object (surface); - if (page.id == 0) - return _cairo_error (CAIRO_STATUS_NO_MEMORY); + thumbnail_res.id = 0; + if (surface->thumbnail_image) { + cairo_pdf_source_surface_entry_t entry; + + memset (&entry, 0, sizeof (entry)); + thumbnail_res = _cairo_pdf_surface_new_object (surface); + entry.surface_res = thumbnail_res; + _cairo_pdf_surface_emit_image (surface, surface->thumbnail_image, &entry); + } + page_num = _cairo_array_num_elements (&surface->pages); + page = _cairo_array_index (&surface->pages, page_num - 1); + _cairo_pdf_surface_update_object (surface, *page); _cairo_output_stream_printf (surface->output, "%d 0 obj\n" - "<< /Type /Page\n" + "<< /Type /Page %% %d\n" " /Parent %d 0 R\n" " /MediaBox [ 0 0 %f %f ]\n" " /Contents %d 0 R\n" @@ -6415,21 +6944,45 @@ " /I true\n" " /CS /DeviceRGB\n" " >>\n" - " /Resources %d 0 R\n" - ">>\n" - "endobj\n", - page.id, + " /Resources %d 0 R\n", + page->id, + page_num, surface->pages_resource.id, surface->width, surface->height, surface->content.id, surface->content_resources.id); - status = _cairo_array_append (&surface->pages, &page); - if (unlikely (status)) - return status; + if (surface->page_parent_tree >= 0) { + _cairo_output_stream_printf (surface->output, + " /StructParents %d\n", + surface->page_parent_tree); + } + + num_annots = _cairo_array_num_elements (&surface->page_annots); + if (num_annots > 0) { + _cairo_output_stream_printf (surface->output, + " /Annots [ "); + for (i = 0; i < num_annots; i++) { + _cairo_array_copy_element (&surface->page_annots, i, &res); + _cairo_output_stream_printf (surface->output, + "%d 0 R ", + res.id); + } + _cairo_output_stream_printf (surface->output, "]\n"); + } - status = _cairo_pdf_surface_write_patterns_and_smask_groups (surface); + if (thumbnail_res.id) { + _cairo_output_stream_printf (surface->output, + " /Thumb %d 0 R\n", + thumbnail_res.id); + } + + _cairo_output_stream_printf (surface->output, + ">>\n" + "endobj\n"); + + status = _cairo_pdf_surface_write_patterns_and_smask_groups (surface, FALSE); if (unlikely (status)) return status; @@ -6438,7 +6991,7 @@ static cairo_int_status_t _cairo_pdf_surface_analyze_surface_pattern_transparency (cairo_pdf_surface_t *surface, - cairo_surface_pattern_t *pattern) + cairo_surface_pattern_t *pattern) { cairo_image_surface_t *image; void *image_extra; @@ -6671,7 +7224,11 @@ 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, TRUE); + status = _cairo_pdf_surface_open_content_stream (surface, &bbox, NULL, TRUE, TRUE); + if (unlikely (status)) + return status; + + return _cairo_pdf_interchange_begin_page_content (surface); } /* If source is an opaque image and mask is an image and both images @@ -6688,7 +7245,6 @@ cairo_image_surface_t *image; void *image_extra; cairo_image_transparency_t transparency; - cairo_pdf_resource_t smask_res; int src_width, src_height; int mask_width, mask_height; double src_x_offset, src_y_offset; @@ -6697,8 +7253,8 @@ double mask_x1, mask_y1, mask_x2, mask_y2; cairo_matrix_t p2u; double src_radius, mask_radius, e; - cairo_rectangle_int_t extents2; cairo_bool_t need_smask; + cairo_pdf_source_surface_entry_t *pdf_source; /* Check that source and mask are images */ @@ -6817,16 +7373,15 @@ mask, op, source->filter, - FALSE, - TRUE, + FALSE, /* stencil mask */ + TRUE, /* smask */ + FALSE, /* need_transp_group */ extents, + NULL, /* smask_res */ + &pdf_source, NULL, - &smask_res, - &mask_width, - &mask_height, - &mask_x_offset, - &mask_y_offset, - &extents2); + NULL, + NULL); if (unlikely (status)) return status; } @@ -6837,7 +7392,8 @@ _cairo_output_stream_printf (surface->output, "q\n"); status = _cairo_pdf_surface_paint_surface_pattern (surface, op, source, extents, - need_smask ? &smask_res : NULL, + 1.0, /* alpha */ + need_smask ? &pdf_source->surface_res : NULL, FALSE); if (unlikely (status)) return status; @@ -6900,7 +7456,7 @@ return status; _cairo_output_stream_printf (surface->output, "q\n"); - status = _cairo_pdf_surface_paint_surface_pattern (surface, op, mask, extents, NULL, TRUE); + status = _cairo_pdf_surface_paint_surface_pattern (surface, op, mask, extents, 1.0, NULL, TRUE); if (unlikely (status)) return status; @@ -6950,11 +7506,15 @@ if (unlikely (status)) return status; + status = _cairo_pdf_interchange_add_operation_extents (surface, &extents.bounded); + if (unlikely (status)) + return status; + if (surface->paginated_mode == CAIRO_PAGINATED_MODE_ANALYZE) { status = _cairo_pdf_surface_analyze_operation (surface, op, source, &extents.bounded); goto cleanup; } else if (surface->paginated_mode == CAIRO_PAGINATED_MODE_FALLBACK) { - status = _cairo_pdf_surface_start_fallback (surface); + status = _cairo_pdf_surface_start_fallback (surface); if (unlikely (status)) goto cleanup; } @@ -6979,7 +7539,8 @@ op, source, &extents.bounded, - FALSE); + 1.0, /* alpha */ + FALSE); /* mask */ if (unlikely (status)) goto cleanup; @@ -7035,8 +7596,11 @@ goto cleanup; _cairo_output_stream_printf (surface->output, - "0 0 %f %f re f\n", - surface->width, surface->height); + "%d %d %d %d re f\n", + surface->surface_extents.x, + surface->surface_extents.y, + surface->surface_extents.width, + surface->surface_extents.height); status = _cairo_pdf_surface_unselect_pattern (surface); if (unlikely (status)) @@ -7064,6 +7628,7 @@ cairo_int_status_t status; cairo_rectangle_int_t r; cairo_box_t box; + double alpha; status = _cairo_composite_rectangles_init_for_mask (&extents, &surface->base, @@ -7071,6 +7636,10 @@ if (unlikely (status)) return status; + status = _cairo_pdf_interchange_add_operation_extents (surface, &extents.bounded); + if (unlikely (status)) + return status; + if (surface->paginated_mode == CAIRO_PAGINATED_MODE_ANALYZE) { cairo_int_status_t source_status, mask_status; @@ -7140,6 +7709,26 @@ if (status != CAIRO_INT_STATUS_UNSUPPORTED) goto cleanup; + /* Check if we can set ca/CA instead of an smask. We could handle + * other source patterns as well but for now this is the easiest, + * and most common, case to handle. */ + if (_cairo_pattern_is_constant_alpha (mask, &extents.bounded, &alpha) && + _can_paint_pattern (source)) { + _cairo_output_stream_printf (surface->output, "q\n"); + status = _cairo_pdf_surface_paint_pattern (surface, + op, + source, + &extents.bounded, + alpha, + FALSE); /* mask */ + if (unlikely (status)) + goto cleanup; + + _cairo_output_stream_printf (surface->output, "Q\n"); + _cairo_composite_rectangles_fini (&extents); + return _cairo_output_stream_get_status (surface->output); + } + group = _cairo_pdf_surface_create_smask_group (surface, &extents.bounded); if (unlikely (group == NULL)) { status = _cairo_error (CAIRO_STATUS_NO_MEMORY); @@ -7240,6 +7829,10 @@ goto cleanup; } + status = _cairo_pdf_interchange_add_operation_extents (surface, &extents.bounded); + if (unlikely (status)) + goto cleanup; + if (surface->paginated_mode == CAIRO_PAGINATED_MODE_ANALYZE) { status = _cairo_pdf_surface_analyze_operation (surface, op, source, &extents.bounded); goto cleanup; @@ -7374,6 +7967,10 @@ goto cleanup; } + status = _cairo_pdf_interchange_add_operation_extents (surface, &extents.bounded); + if (unlikely (status)) + goto cleanup; + if (surface->paginated_mode == CAIRO_PAGINATED_MODE_ANALYZE) { status = _cairo_pdf_surface_analyze_operation (surface, op, source, &extents.bounded); goto cleanup; @@ -7409,7 +8006,8 @@ op, source, &extents.bounded, - FALSE); + 1.0, /* alpha */ + FALSE); /* mask */ if (unlikely (status)) goto cleanup; @@ -7592,6 +8190,10 @@ goto cleanup; } + status = _cairo_pdf_interchange_add_operation_extents (surface, &extents.bounded); + if (unlikely (status)) + goto cleanup; + fill_pattern_res.id = 0; gstate_res.id = 0; status = _cairo_pdf_surface_add_pdf_pattern (surface, fill_source, @@ -7687,6 +8289,10 @@ if (unlikely (status)) return status; + status = _cairo_pdf_interchange_add_operation_extents (surface, &extents.bounded); + if (unlikely (status)) + return status; + if (surface->paginated_mode == CAIRO_PAGINATED_MODE_ANALYZE) { status = _cairo_pdf_surface_analyze_operation (surface, op, source, &extents.bounded); goto cleanup; @@ -7824,13 +8430,48 @@ return _cairo_pdf_supported_mime_types; } -static void +static cairo_int_status_t +_cairo_pdf_surface_tag (void *abstract_surface, + cairo_bool_t begin, + const char *tag_name, + const char *attributes, + const cairo_pattern_t *source, + const cairo_stroke_style_t *style, + const cairo_matrix_t *ctm, + const cairo_matrix_t *ctm_inverse, + const cairo_clip_t *clip) +{ + cairo_pdf_surface_t *surface = abstract_surface; + cairo_int_status_t status = 0; + + if (begin) + status = _cairo_pdf_interchange_tag_begin (surface, tag_name, attributes); + else + status = _cairo_pdf_interchange_tag_end (surface, tag_name); + + return status; +} + +static cairo_int_status_t _cairo_pdf_surface_set_paginated_mode (void *abstract_surface, cairo_paginated_mode_t paginated_mode) { cairo_pdf_surface_t *surface = abstract_surface; + cairo_int_status_t status; surface->paginated_mode = paginated_mode; + status = _cairo_pdf_interchange_begin_page_content (surface); + if (unlikely (status)) + return status; + + if (paginated_mode == CAIRO_PAGINATED_MODE_RENDER) { + surface->surface_extents.x = 0; + surface->surface_extents.y = 0; + surface->surface_extents.width = ceil (surface->width); + surface->surface_extents.height = ceil (surface->height); + } + + return CAIRO_INT_STATUS_SUCCESS; } static const cairo_surface_backend_t cairo_pdf_surface_backend = { @@ -7868,6 +8509,7 @@ _cairo_pdf_surface_has_show_text_glyphs, _cairo_pdf_surface_show_text_glyphs, _cairo_pdf_surface_get_supported_mime_types, + _cairo_pdf_surface_tag, }; static const cairo_paginated_surface_backend_t @@ -7877,4 +8519,6 @@ NULL, /* set_bounding_box */ _cairo_pdf_surface_has_fallback_images, _cairo_pdf_surface_supports_fine_grained_fallbacks, + _cairo_pdf_surface_requires_thumbnail_image, + _cairo_pdf_surface_set_thumbnail_image, }; diff -Nru cairo-1.14.6/src/cairo-pdf-surface-private.h cairo-1.15.10/src/cairo-pdf-surface-private.h --- cairo-1.14.6/src/cairo-pdf-surface-private.h 2015-10-27 21:04:22.000000000 +0000 +++ cairo-1.15.10/src/cairo-pdf-surface-private.h 2017-12-07 02:14:36.000000000 +0000 @@ -48,6 +48,8 @@ #include "cairo-surface-clipper-private.h" #include "cairo-pdf-operators-private.h" #include "cairo-path-fixed-private.h" +#include "cairo-tag-attributes-private.h" +#include "cairo-tag-stack-private.h" typedef struct _cairo_pdf_resource { unsigned int id; @@ -74,11 +76,19 @@ cairo_bool_t interpolate; cairo_bool_t stencil_mask; cairo_bool_t smask; + cairo_bool_t need_transp_group; cairo_pdf_resource_t surface_res; cairo_pdf_resource_t smask_res; - int width; - int height; + + /* True if surface will be emitted as an Image XObject. */ + cairo_bool_t emit_image; + + /* Extents of the source surface. */ + cairo_bool_t bounded; cairo_rectangle_int_t extents; + + /* Union of source extents required for all operations using this source */ + cairo_rectangle_int_t required_extents; } cairo_pdf_source_surface_entry_t; typedef struct _cairo_pdf_source_surface { @@ -97,6 +107,17 @@ cairo_pdf_resource_t gstate_res; cairo_operator_t operator; cairo_bool_t is_shading; + + /* PDF pattern space is the pattern matrix concatenated with the + * initial space of the parent object. If the parent object is the + * page, the intial space does not include the Y-axis flipping + * matrix emitted at the start of the page content stream. If the + * parent object is not the page content stream, the initial space + * will have a flipped Y-axis. The inverted_y_axis flag is true + * when the initial space of the parent object that is drawing + * this pattern has a flipped Y-axis. + */ + cairo_bool_t inverted_y_axis; } cairo_pdf_pattern_t; typedef enum _cairo_pdf_operation { @@ -138,6 +159,91 @@ cairo_bool_t emitted; } cairo_pdf_jbig2_global_t; +/* cairo-pdf-interchange.c types */ + +struct page_mcid { + int page; + int mcid; +}; + +struct tag_extents { + cairo_rectangle_int_t extents; + cairo_bool_t valid; + cairo_list_t link; +}; + +typedef struct _cairo_pdf_struct_tree_node { + char *name; + cairo_pdf_resource_t res; + struct _cairo_pdf_struct_tree_node *parent; + cairo_list_t children; + cairo_array_t mcid; /* array of struct page_mcid */ + cairo_pdf_resource_t annot_res; /* 0 if no annot */ + struct tag_extents extents; + cairo_list_t link; +} cairo_pdf_struct_tree_node_t; + +typedef struct _cairo_pdf_annotation { + cairo_pdf_struct_tree_node_t *node; /* node containing the annotation */ + cairo_link_attrs_t link_attrs; +} cairo_pdf_annotation_t; + +typedef struct _cairo_pdf_named_dest { + cairo_hash_entry_t base; + struct tag_extents extents; + cairo_dest_attrs_t attrs; + int page; +} cairo_pdf_named_dest_t; + +typedef struct _cairo_pdf_outline_entry { + char *name; + cairo_link_attrs_t link_attrs; + cairo_pdf_outline_flags_t flags; + cairo_pdf_resource_t res; + struct _cairo_pdf_outline_entry *parent; + struct _cairo_pdf_outline_entry *first_child; + struct _cairo_pdf_outline_entry *last_child; + struct _cairo_pdf_outline_entry *next; + struct _cairo_pdf_outline_entry *prev; + int count; +} cairo_pdf_outline_entry_t; + +struct docinfo { + char *title; + char *author; + char *subject; + char *keywords; + char *creator; + char *create_date; + char *mod_date; +}; + +typedef struct _cairo_pdf_interchange { + cairo_tag_stack_t analysis_tag_stack; + cairo_tag_stack_t render_tag_stack; + cairo_array_t push_data; /* records analysis_tag_stack data field for each push */ + int push_data_index; + cairo_pdf_struct_tree_node_t *struct_root; + cairo_pdf_struct_tree_node_t *current_node; + cairo_pdf_struct_tree_node_t *begin_page_node; + cairo_pdf_struct_tree_node_t *end_page_node; + cairo_array_t parent_tree; /* parent tree resources */ + cairo_array_t mcid_to_tree; /* mcid to tree node mapping for current page */ + cairo_array_t annots; /* array of pointers to cairo_pdf_annotation_t */ + cairo_pdf_resource_t parent_tree_res; + cairo_list_t extents_list; + cairo_hash_table_t *named_dests; + int num_dests; + cairo_pdf_named_dest_t **sorted_dests; + cairo_pdf_resource_t dests_res; + int annot_page; + cairo_array_t outline; /* array of pointers to cairo_pdf_outline_entry_t; */ + struct docinfo docinfo; + +} cairo_pdf_interchange_t; + +/* pdf surface data */ + typedef struct _cairo_pdf_surface cairo_pdf_surface_t; struct _cairo_pdf_surface { @@ -149,7 +255,10 @@ double width; double height; + cairo_rectangle_int_t surface_extents; + cairo_bool_t surface_bounded; cairo_matrix_t cairo_to_pdf; + cairo_bool_t in_xobject; cairo_array_t objects; cairo_array_t pages; @@ -157,16 +266,19 @@ cairo_array_t alpha_linear_functions; cairo_array_t page_patterns; cairo_array_t page_surfaces; + cairo_array_t doc_surfaces; cairo_hash_table_t *all_surfaces; cairo_array_t smask_groups; cairo_array_t knockout_group; cairo_array_t jbig2_global; + cairo_array_t page_heights; cairo_scaled_font_subsets_t *font_subsets; cairo_array_t fonts; cairo_pdf_resource_t next_available_resource; cairo_pdf_resource_t pages_resource; + cairo_pdf_resource_t struct_tree_root; cairo_pdf_version_t pdf_version; cairo_bool_t compress_content; @@ -212,7 +324,76 @@ double current_color_blue; double current_color_alpha; + cairo_pdf_interchange_t interchange; + int page_parent_tree; /* -1 if not used */ + cairo_array_t page_annots; + cairo_bool_t tagged; + char *current_page_label; + cairo_array_t page_labels; + cairo_pdf_resource_t outlines_dict_res; + cairo_pdf_resource_t names_dict_res; + cairo_pdf_resource_t docinfo_res; + cairo_pdf_resource_t page_labels_res; + + int thumbnail_width; + int thumbnail_height; + cairo_image_surface_t *thumbnail_image; + cairo_surface_t *paginated_surface; }; +cairo_private cairo_pdf_resource_t +_cairo_pdf_surface_new_object (cairo_pdf_surface_t *surface); + +cairo_private void +_cairo_pdf_surface_update_object (cairo_pdf_surface_t *surface, + cairo_pdf_resource_t resource); + +cairo_private cairo_int_status_t +_cairo_utf8_to_pdf_string (const char *utf8, char **str_out); + +cairo_private cairo_int_status_t +_cairo_pdf_interchange_init (cairo_pdf_surface_t *surface); + +cairo_private cairo_int_status_t +_cairo_pdf_interchange_fini (cairo_pdf_surface_t *surface); + +cairo_private cairo_int_status_t +_cairo_pdf_interchange_begin_page_content (cairo_pdf_surface_t *surface); + +cairo_private cairo_int_status_t +_cairo_pdf_interchange_end_page_content (cairo_pdf_surface_t *surface); + +cairo_private cairo_int_status_t +_cairo_pdf_interchange_tag_begin (cairo_pdf_surface_t *surface, + const char *name, + const char *attributes); + +cairo_private cairo_int_status_t +_cairo_pdf_interchange_tag_end (cairo_pdf_surface_t *surface, + const char *name); + +cairo_private cairo_int_status_t +_cairo_pdf_interchange_add_operation_extents (cairo_pdf_surface_t *surface, + const cairo_rectangle_int_t *extents); + +cairo_private cairo_int_status_t +_cairo_pdf_interchange_write_page_objects (cairo_pdf_surface_t *surface); + +cairo_private cairo_int_status_t +_cairo_pdf_interchange_write_document_objects (cairo_pdf_surface_t *surface); + +cairo_private cairo_int_status_t +_cairo_pdf_interchange_add_outline (cairo_pdf_surface_t *surface, + int parent_id, + const char *name, + const char *dest, + cairo_pdf_outline_flags_t flags, + int *id); + +cairo_private cairo_int_status_t +_cairo_pdf_interchange_set_metadata (cairo_pdf_surface_t *surface, + cairo_pdf_metadata_t metadata, + const char *utf8); + #endif /* CAIRO_PDF_SURFACE_PRIVATE_H */ diff -Nru cairo-1.14.6/src/cairo-pen.c cairo-1.15.10/src/cairo-pen.c --- cairo-1.14.6/src/cairo-pen.c 2015-10-27 21:04:30.000000000 +0000 +++ cairo-1.15.10/src/cairo-pen.c 2017-12-07 02:14:36.000000000 +0000 @@ -106,7 +106,7 @@ free (pen->vertices); - VG (VALGRIND_MAKE_MEM_NOACCESS (pen, sizeof (cairo_pen_t))); + VG (VALGRIND_MAKE_MEM_UNDEFINED (pen, sizeof (cairo_pen_t))); } cairo_status_t diff -Nru cairo-1.14.6/src/cairo-png.c cairo-1.15.10/src/cairo-png.c --- cairo-1.14.6/src/cairo-png.c 2015-10-27 21:04:21.000000000 +0000 +++ cairo-1.15.10/src/cairo-png.c 2017-12-07 02:14:36.000000000 +0000 @@ -136,7 +136,7 @@ /* default to the most likely error */ if (*error == CAIRO_STATUS_SUCCESS) - *error = _cairo_error (CAIRO_STATUS_NO_MEMORY); + *error = _cairo_error (CAIRO_STATUS_PNG_ERROR); #ifdef PNG_SETJMP_SUPPORTED longjmp (png_jmpbuf (png), 1); @@ -158,6 +158,14 @@ */ } +static int +png_setjmp (png_struct *png) +{ +#ifdef PNG_SETJMP_SUPPORTED + return setjmp (png_jmpbuf (png)); +#endif + return 0; +} /* Starting with libpng-1.2.30, we must explicitly specify an output_flush_fn. * Otherwise, we will segfault if we are writing to a stream. */ @@ -229,10 +237,8 @@ goto BAIL4; } -#ifdef PNG_SETJMP_SUPPORTED - if (setjmp (png_jmpbuf (png))) + if (png_setjmp (png)) goto BAIL4; -#endif png_set_write_fn (png, closure, write_func, png_simple_output_flush_fn); @@ -339,7 +345,8 @@ /** * cairo_surface_write_to_png: * @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; on Windows this filename + * is encoded in UTF-8. * * Writes the contents of @surface to a new file @filename as a PNG * image. @@ -349,7 +356,8 @@ * 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, or %CAIRO_STATUS_PNG_ERROR if libpng + * returned an error. * * Since: 1.0 **/ @@ -366,7 +374,11 @@ if (surface->finished) return _cairo_error (CAIRO_STATUS_SURFACE_FINISHED); - fp = fopen (filename, "wb"); + status = _cairo_fopen (filename, "wb", &fp); + + if (status != CAIRO_STATUS_SUCCESS) + return _cairo_error (status); + if (fp == NULL) { switch (errno) { case ENOMEM: @@ -417,7 +429,8 @@ * 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, or %CAIRO_STATUS_PNG_ERROR if libpng + * returned an error. * * Since: 1.0 **/ @@ -571,12 +584,11 @@ png_set_read_fn (png, png_closure, stream_read_func); status = CAIRO_STATUS_SUCCESS; -#ifdef PNG_SETJMP_SUPPORTED - if (setjmp (png_jmpbuf (png))) { + + if (png_setjmp (png)) { surface = _cairo_surface_create_in_error (status); goto BAIL; } -#endif png_read_info (png, info); @@ -671,7 +683,7 @@ } for (i = 0; i < png_height; i++) - row_pointers[i] = &data[i * stride]; + row_pointers[i] = &data[i * (ptrdiff_t)stride]; png_read_image (png, row_pointers); png_read_end (png, info); @@ -731,7 +743,8 @@ /** * cairo_image_surface_create_from_png: - * @filename: name of PNG file to load + * @filename: name of PNG file to load. On Windows this filename + * is encoded in UTF-8. * * Creates a new image surface and initializes the contents to the * given PNG file. @@ -744,6 +757,7 @@ * %CAIRO_STATUS_NO_MEMORY * %CAIRO_STATUS_FILE_NOT_FOUND * %CAIRO_STATUS_READ_ERROR + * %CAIRO_STATUS_PNG_ERROR * * Alternatively, you can allow errors to propagate through the drawing * operations and check the status on the context upon completion @@ -756,10 +770,14 @@ { struct png_read_closure_t png_closure; cairo_surface_t *surface; + cairo_status_t status; + + status = _cairo_fopen (filename, "rb", (FILE **) &png_closure.closure); + + if (status != CAIRO_STATUS_SUCCESS) + return _cairo_surface_create_in_error (status); - png_closure.closure = fopen (filename, "rb"); if (png_closure.closure == NULL) { - cairo_status_t status; switch (errno) { case ENOMEM: status = _cairo_error (CAIRO_STATUS_NO_MEMORY); @@ -799,6 +817,7 @@ * * %CAIRO_STATUS_NO_MEMORY * %CAIRO_STATUS_READ_ERROR + * %CAIRO_STATUS_PNG_ERROR * * Alternatively, you can allow errors to propagate through the drawing * operations and check the status on the context upon completion diff -Nru cairo-1.14.6/src/cairo-polygon.c cairo-1.15.10/src/cairo-polygon.c --- cairo-1.14.6/src/cairo-polygon.c 2015-10-27 21:04:30.000000000 +0000 +++ cairo-1.15.10/src/cairo-polygon.c 2017-12-07 02:14:36.000000000 +0000 @@ -248,7 +248,7 @@ if (polygon->edges != polygon->edges_embedded) free (polygon->edges); - VG (VALGRIND_MAKE_MEM_NOACCESS (polygon, sizeof (cairo_polygon_t))); + VG (VALGRIND_MAKE_MEM_UNDEFINED (polygon, sizeof (cairo_polygon_t))); } /* make room for at least one more edge */ diff -Nru cairo-1.14.6/src/cairo-polygon-intersect.c cairo-1.15.10/src/cairo-polygon-intersect.c --- cairo-1.14.6/src/cairo-polygon-intersect.c 2015-10-27 21:04:21.000000000 +0000 +++ cairo-1.15.10/src/cairo-polygon-intersect.c 2017-12-07 02:14:36.000000000 +0000 @@ -447,7 +447,7 @@ HAVE_BX = 0x2, HAVE_BOTH = HAVE_AX | HAVE_BX } have_ax_bx = HAVE_BOTH; - int32_t ax, bx; + int32_t ax = 0, bx = 0; if (y == a->edge.line.p1.y) ax = a->edge.line.p1.x; diff -Nru cairo-1.14.6/src/cairo-polygon-reduce.c cairo-1.15.10/src/cairo-polygon-reduce.c --- cairo-1.14.6/src/cairo-polygon-reduce.c 2015-10-27 21:04:21.000000000 +0000 +++ cairo-1.15.10/src/cairo-polygon-reduce.c 2017-12-07 02:14:36.000000000 +0000 @@ -445,7 +445,7 @@ HAVE_BX = 0x2, HAVE_BOTH = HAVE_AX | HAVE_BX } have_ax_bx = HAVE_BOTH; - int32_t ax, bx; + int32_t ax = 0, bx = 0; if (y == a->edge.line.p1.y) ax = a->edge.line.p1.x; diff -Nru cairo-1.14.6/src/cairo-ps-surface.c cairo-1.15.10/src/cairo-ps-surface.c --- cairo-1.14.6/src/cairo-ps-surface.c 2015-10-27 21:04:30.000000000 +0000 +++ cairo-1.15.10/src/cairo-ps-surface.c 2017-12-07 02:14:36.000000000 +0000 @@ -53,7 +53,7 @@ * 2. Using gs to do PS -> PDF and PDF -> PS will always work well. */ -#define _BSD_SOURCE /* for ctime_r(), snprintf(), strdup() */ +#define _DEFAULT_SOURCE /* for ctime_r(), snprintf(), strdup() */ #include "cairoint.h" #include "cairo-ps.h" @@ -77,6 +77,7 @@ #include "cairo-output-stream-private.h" #include "cairo-type3-glyph-surface-private.h" #include "cairo-image-info-private.h" +#include "cairo-tag-attributes-private.h" #include #include @@ -84,7 +85,14 @@ #include #include -#define DEBUG_PS 0 +/* Forms are emitted at the start and stored in memory so we limit the + * total size of all forms to prevent running out of memory. If this + * limit is exceeded, surfaces that would be stored in forms are + * emitted each time the surface is used. */ +#define MAX_L2_FORM_DATA (256*1024) +#define MAX_L3_FORM_DATA (2*1024*1024) /* Assume Level 3 printers have more memory */ + +/* #define DEBUG_PS 1 */ #if DEBUG_PS #define DEBUG_FALLBACK(s) \ @@ -105,11 +113,44 @@ * * The PostScript surface is used to render cairo graphics to Adobe * PostScript files and is a multi-page vector surface backend. + * + * The following mime types are supported: %CAIRO_MIME_TYPE_JPEG, + * %CAIRO_MIME_TYPE_UNIQUE_ID, + * %CAIRO_MIME_TYPE_CCITT_FAX, %CAIRO_MIME_TYPE_CCITT_FAX_PARAMS, + * %CAIRO_MIME_TYPE_CCITT_FAX, %CAIRO_MIME_TYPE_CCITT_FAX_PARAMS, + * %CAIRO_MIME_TYPE_EPS, %CAIRO_MIME_TYPE_EPS_PARAMS. + * + * Source surfaces used by the PostScript surface that have a + * %CAIRO_MIME_TYPE_UNIQUE_ID mime type will be stored in PostScript + * printer memory for the duration of the print + * job. %CAIRO_MIME_TYPE_UNIQUE_ID should only be used for small + * frequently used sources. + * + * The %CAIRO_MIME_TYPE_CCITT_FAX and %CAIRO_MIME_TYPE_CCITT_FAX_PARAMS mime types + * are documented in [CCITT Fax Images][ccitt]. + * + * # Embedding EPS files # {#eps} + * + * Encapsulated PostScript files can be embedded in the PS output by + * setting the CAIRO_MIME_TYPE_EPS mime data on a surface to the EPS + * data and painting the surface. The EPS will be scaled and + * translated to the extents of the surface the EPS data is attached + * to. + * + * The %CAIRO_MIME_TYPE_EPS mime type requires the + * %CAIRO_MIME_TYPE_EPS_PARAMS mime data to also be provided in order + * to specify the embeddding parameters. %CAIRO_MIME_TYPE_EPS_PARAMS + * mime data must contain a string of the form "bbox=[llx lly urx + * ury]" that specifies the bounding box (in PS coordinates) of the + * EPS graphics. The parameters are: lower left x, lower left y, upper + * right x, upper right y. Normally the bbox data is identical to the + * %%%BoundingBox data in the EPS file. + * **/ /** * CAIRO_HAS_PS_SURFACE: - * + * * Defined if the PostScript surface backend is available. * This macro can be used to conditionally compile backend-specific code. * @@ -120,7 +161,30 @@ CAIRO_PS_COMPRESS_NONE, CAIRO_PS_COMPRESS_LZW, CAIRO_PS_COMPRESS_DEFLATE - } cairo_ps_compress_t; +} cairo_ps_compress_t; + +typedef enum { + CAIRO_EMIT_SURFACE_ANALYZE, + CAIRO_EMIT_SURFACE_EMIT, + CAIRO_EMIT_SURFACE_EMIT_FORM +} cairo_emit_surface_mode_t; + +typedef struct { + /* input params */ + cairo_surface_t *src_surface; + cairo_operator_t op; + const cairo_rectangle_int_t *src_surface_extents; + cairo_bool_t src_surface_bounded; + const cairo_rectangle_int_t *src_op_extents; /* operation extents in src space */ + cairo_filter_t filter; + cairo_bool_t stencil_mask; /* TRUE if source is to be used as a mask */ + + /* output params */ + cairo_bool_t is_image; /* returns TRUE if PS image will be emitted */ + /* FALSE if recording will be emitted */ + long approx_size; + int eod_count; +} cairo_emit_surface_params_t; static const cairo_surface_backend_t cairo_ps_surface_backend; static const cairo_paginated_surface_backend_t cairo_ps_surface_paginated_backend; @@ -129,6 +193,9 @@ _cairo_ps_surface_get_extents (void *abstract_surface, cairo_rectangle_int_t *rectangle); +static void +_cairo_ps_form_emit (void *entry, void *closure); + static const cairo_ps_level_t _cairo_ps_levels[] = { CAIRO_PS_LEVEL_2, @@ -146,6 +213,8 @@ static const char *_cairo_ps_supported_mime_types[] = { CAIRO_MIME_TYPE_JPEG, + CAIRO_MIME_TYPE_CCITT_FAX, + CAIRO_MIME_TYPE_CCITT_FAX_PARAMS, NULL }; @@ -184,6 +253,40 @@ } cairo_page_media_t; static void +_cairo_ps_form_init_key (cairo_ps_form_t *key) +{ + key->base.hash = _cairo_hash_bytes (_CAIRO_HASH_INIT_VALUE, + key->unique_id, key->unique_id_length); +} + +static cairo_bool_t +_cairo_ps_form_equal (const void *key_a, const void *key_b) +{ + const cairo_ps_form_t *a = key_a; + const cairo_ps_form_t *b = key_b; + + if (a->filter != b->filter) + return FALSE; + + if (a->unique_id_length != b->unique_id_length) + return FALSE; + + return memcmp (a->unique_id, b->unique_id, a->unique_id_length) == 0; +} + +static void +_cairo_ps_form_pluck (void *entry, void *closure) +{ + cairo_ps_form_t *surface_entry = entry; + cairo_hash_table_t *patterns = closure; + + _cairo_hash_table_remove (patterns, &surface_entry->base); + free (surface_entry->unique_id); + cairo_surface_destroy (surface_entry->src_surface); + free (surface_entry); +} + +static void _cairo_ps_surface_emit_header (cairo_ps_surface_t *surface) { char ctime_buf[26]; @@ -259,10 +362,10 @@ if (!has_bbox) { _cairo_output_stream_printf (surface->final_stream, "%%%%BoundingBox: %d %d %d %d\n", - surface->bbox_x1, - surface->bbox_y1, - surface->bbox_x2, - surface->bbox_y2); + surface->document_bbox_p1.x, + surface->document_bbox_p1.y, + surface->document_bbox_p2.x, + surface->document_bbox_p2.y); } _cairo_output_stream_printf (surface->final_stream, @@ -273,7 +376,6 @@ if (surface->eps) { _cairo_output_stream_printf (surface->final_stream, - "save\n" "50 dict begin\n"); } else { _cairo_output_stream_printf (surface->final_stream, @@ -309,9 +411,6 @@ "/W* { eoclip } bind def\n" "/BT { } bind def\n" "/ET { } bind def\n" - "/pdfmark where { pop globaldict /?pdfmark /exec load put }\n" - " { globaldict begin /?pdfmark /pop load def /pdfmark\n" - " /cleartomark load def end } ifelse\n" "/BDC { mark 3 1 roll /BDC pdfmark } bind def\n" "/EMC { mark /EMC pdfmark } bind def\n" "/cairo_store_point { /cairo_point_y exch def /cairo_point_x exch def } def\n" @@ -335,7 +434,15 @@ " cairo_store_point /cairo_font where { pop cairo_selectfont } if } bind def\n" "/g { setgray } bind def\n" "/rg { setrgbcolor } bind def\n" - "/d1 { setcachedevice } bind def\n"); + "/d1 { setcachedevice } bind def\n" + "/cairo_data_source {\n" + " CairoDataIndex CairoData length lt\n" + " { CairoData CairoDataIndex get /CairoDataIndex CairoDataIndex 1 add def }\n" + " { () } ifelse\n" + "} def\n" + "/cairo_flush_ascii85_file { cairo_ascii85_file status { cairo_ascii85_file flushfile } if } def\n" + "/cairo_image { image cairo_flush_ascii85_file } def\n" + "/cairo_imagemask { imagemask cairo_flush_ascii85_file } def\n"); if (!surface->eps) { _cairo_output_stream_printf (surface->final_stream, @@ -371,11 +478,25 @@ " } ifelse\n" "} def\n"); } + if (surface->contains_eps) { + _cairo_output_stream_printf (surface->final_stream, + "/cairo_eps_begin {\n" + " /cairo_save_state save def\n" + " /dict_count countdictstack def\n" + " /op_count count 1 sub def\n" + " userdict begin\n" + " /showpage { } def\n" + " 0 g 0 J 1 w 0 j 10 M [ ] 0 d n\n" + "} bind def\n" + "/cairo_eps_end {\n" + " count op_count sub { pop } repeat\n" + " countdictstack dict_count sub { end } repeat\n" + " cairo_save_state restore\n" + "} bind def\n"); + } _cairo_output_stream_printf (surface->final_stream, "%%%%EndProlog\n"); - _cairo_output_stream_printf (surface->final_stream, - "%%%%BeginSetup\n"); num_comments = _cairo_array_num_elements (&surface->dsc_setup_comments); if (num_comments) { @@ -670,7 +791,7 @@ _cairo_output_stream_printf (surface->final_stream, "8 dict begin\n" "/FontType 3 def\n" - "/FontMatrix [1 0 0 1 0 0] def\n" + "/FontMatrix [1 0 0 -1 0 0] def\n" "/Encoding 256 array def\n" "0 1 255 { Encoding exch /.notdef put } for\n"); @@ -833,6 +954,16 @@ surface); } + +static cairo_int_status_t +_cairo_ps_surface_emit_forms (cairo_ps_surface_t *surface) +{ + _cairo_hash_table_foreach (surface->forms, + _cairo_ps_form_emit, + surface); + return surface->base.status; +} + static cairo_status_t _cairo_ps_surface_emit_body (cairo_ps_surface_t *surface) { @@ -860,7 +991,7 @@ if (surface->eps) { _cairo_output_stream_printf (surface->final_stream, - "end restore\n"); + "end\n"); } _cairo_output_stream_printf (surface->final_stream, @@ -879,11 +1010,11 @@ _cairo_box_round_to_rectangle (&box, &rect); /* skip trivial whole-page clips */ - if (_cairo_rectangle_intersect (&rect, &surface->page_bbox)) { - if (rect.x == surface->page_bbox.x && - rect.width == surface->page_bbox.width && - rect.y == surface->page_bbox.y && - rect.height == surface->page_bbox.height) + if (_cairo_rectangle_intersect (&rect, &surface->surface_extents)) { + if (rect.x == surface->surface_extents.x && + rect.width == surface->surface_extents.width && + rect.y == surface->surface_extents.y && + rect.height == surface->surface_extents.height) { return TRUE; } @@ -1017,7 +1148,8 @@ _cairo_surface_init (&surface->base, &cairo_ps_surface_backend, NULL, /* device */ - CAIRO_CONTENT_COLOR_ALPHA); + CAIRO_CONTENT_COLOR_ALPHA, + TRUE); /* is_vector */ surface->final_stream = stream; @@ -1052,17 +1184,23 @@ surface->ps_level_used = CAIRO_PS_LEVEL_2; surface->width = width; surface->height = height; - cairo_matrix_init (&surface->cairo_to_ps, 1, 0, 0, -1, 0, height); + cairo_matrix_init (&surface->cairo_to_ps, 1, 0, 0, 1, 0, 0); + surface->surface_extents.x = 0; + surface->surface_extents.y = 0; + surface->surface_extents.width = ceil (surface->width); + surface->surface_extents.height = ceil (surface->height); + surface->surface_bounded = TRUE; surface->paginated_mode = CAIRO_PAGINATED_MODE_ANALYZE; surface->force_fallbacks = FALSE; surface->content = CAIRO_CONTENT_COLOR_ALPHA; - surface->use_string_datasource = FALSE; surface->current_pattern_is_solid_color = FALSE; - - surface->page_bbox.x = 0; - surface->page_bbox.y = 0; - surface->page_bbox.width = width; - surface->page_bbox.height = height; + surface->document_bbox_p1.x = 0; + surface->document_bbox_p1.y = 0; + surface->document_bbox_p2.x = 0; + surface->document_bbox_p2.y = 0; + surface->total_form_size = 0; + surface->contains_eps = FALSE; + surface->paint_proc = FALSE; _cairo_surface_clipper_init (&surface->clipper, _cairo_ps_surface_clipper_intersect_clip_path); @@ -1078,6 +1216,14 @@ _cairo_array_init (&surface->dsc_header_comments, sizeof (char *)); _cairo_array_init (&surface->dsc_setup_comments, sizeof (char *)); _cairo_array_init (&surface->dsc_page_setup_comments, sizeof (char *)); + _cairo_array_init (&surface->recording_surf_stack, sizeof (unsigned int)); + + surface->num_forms = 0; + surface->forms = _cairo_hash_table_create (_cairo_ps_form_equal); + if (unlikely (surface->forms == NULL)) { + status = _cairo_error (CAIRO_STATUS_NO_MEMORY); + goto CLEANUP_FONT_SUBSETS; + } surface->dsc_comment_target = &surface->dsc_header_comments; @@ -1092,6 +1238,7 @@ return surface->paginated_surface; } + CLEANUP_FONT_SUBSETS: _cairo_scaled_font_subsets_destroy (surface->font_subsets); CLEANUP_OUTPUT_STREAM: status_ignored = _cairo_output_stream_destroy (surface->stream); @@ -1400,7 +1547,11 @@ ps_surface->width = width_in_points; ps_surface->height = height_in_points; - cairo_matrix_init (&ps_surface->cairo_to_ps, 1, 0, 0, -1, 0, height_in_points); + cairo_matrix_init (&ps_surface->cairo_to_ps, 1, 0, 0, 1, 0, 0); + ps_surface->surface_extents.x = 0; + ps_surface->surface_extents.y = 0; + ps_surface->surface_extents.width = ceil (ps_surface->width); + ps_surface->surface_extents.height = ceil (ps_surface->height); _cairo_pdf_operators_set_cairo_to_pdf_matrix (&ps_surface->pdf_operators, &ps_surface->cairo_to_ps); status = _cairo_paginated_surface_set_size (ps_surface->paginated_surface, @@ -1610,10 +1761,17 @@ _cairo_ps_surface_emit_header (surface); + _cairo_output_stream_printf (surface->final_stream, + "%%%%BeginSetup\n"); + status = _cairo_ps_surface_emit_font_subsets (surface); if (unlikely (status)) goto CLEANUP; + status = _cairo_ps_surface_emit_forms (surface); + if (unlikely (status)) + goto CLEANUP; + _cairo_output_stream_printf (surface->final_stream, "%%%%EndSetup\n"); @@ -1624,6 +1782,10 @@ _cairo_ps_surface_emit_footer (surface); CLEANUP: + _cairo_hash_table_foreach (surface->forms, + _cairo_ps_form_pluck, + surface->forms); + _cairo_hash_table_destroy (surface->forms); _cairo_scaled_font_subsets_destroy (surface->font_subsets); status2 = _cairo_output_stream_destroy (surface->stream); @@ -1665,6 +1827,8 @@ free (comments[i]); _cairo_array_fini (&surface->dsc_page_setup_comments); + _cairo_array_fini (&surface->recording_surf_stack); + _cairo_surface_clipper_reset (&surface->clipper); return status; @@ -1712,133 +1876,97 @@ /** * _cairo_ps_surface_acquire_source_surface_from_pattern: - * @surface: the ps surface - * @pattern: A #cairo_pattern_t of type SURFACE or RASTER_SOURCE to use as the source - * @extents: extents of the operation that is using this source - * @width: returns width of surface - * @height: returns height of surface - * @x_offset: returns x offset of surface - * @y_offset: returns y offset of surface - * @surface: returns surface of type image surface or recording surface - * @image_extra: returns image extra for image type surface + * @surface: [in] the ps surface + * @pattern: [in] A #cairo_pattern_t of type SURFACE or RASTER_SOURCE to use + * as the source + * @extents: [in] extents of the operation that is using this source + * @src_surface_extents: [out] return source surface extents + * @src_surface_bounded: [out] return TRUE if source surface is bounded + * @src_op_extents: [out] return operation extents in source space + * @source_surface: [out] returns surface of type image surface or recording surface + * @x_offset: [out] return x offset of surface + * @y_offset: [out] return y offset of surface * * Acquire source surface or raster source pattern. **/ static cairo_status_t -_cairo_ps_surface_acquire_source_surface_from_pattern (cairo_ps_surface_t *surface, - const cairo_pattern_t *pattern, - const cairo_rectangle_int_t *extents, - int *width, - int *height, - double *x_offset, - double *y_offset, - cairo_surface_t **source_surface, - void **image_extra) +_cairo_ps_surface_acquire_source_surface_from_pattern ( + cairo_ps_surface_t *surface, + const cairo_pattern_t *pattern, + const cairo_rectangle_int_t *extents, + cairo_rectangle_int_t *src_surface_extents, + cairo_bool_t *src_surface_bounded, + cairo_rectangle_int_t *src_op_extents, + cairo_surface_t **source_surface, + double *x_offset, + double *y_offset) { - cairo_status_t status; - cairo_image_surface_t *image; + cairo_status_t status; + cairo_box_t bbox; - *x_offset = *y_offset = 0; - switch (pattern->type) { - case CAIRO_PATTERN_TYPE_SURFACE: { - cairo_surface_t *surf = ((cairo_surface_pattern_t *) pattern)->surface; + *x_offset = 0; + *y_offset = 0; + + /* get the operation extents in pattern space */ + _cairo_box_from_rectangle (&bbox, extents); + _cairo_matrix_transform_bounding_box_fixed (&pattern->matrix, &bbox, NULL); + _cairo_box_round_to_rectangle (&bbox, src_op_extents); + if (pattern->type == CAIRO_PATTERN_TYPE_RASTER_SOURCE) { + cairo_surface_t *surf; + + surf = _cairo_raster_source_pattern_acquire (pattern, &surface->base, src_op_extents); + if (!surf) + return CAIRO_INT_STATUS_UNSUPPORTED; + + *src_surface_bounded = _cairo_surface_get_extents (surf, src_surface_extents); + cairo_surface_get_device_offset (surf, x_offset, y_offset); + *source_surface = surf; + } else if (pattern->type == CAIRO_PATTERN_TYPE_SURFACE) { + cairo_surface_t *surf = NULL; + + *source_surface = ((cairo_surface_pattern_t *) pattern)->surface; + surf = *source_surface; + *src_surface_bounded = _cairo_surface_get_extents (surf, src_surface_extents); if (surf->type == CAIRO_SURFACE_TYPE_RECORDING) { + if (_cairo_surface_is_snapshot (surf)) + surf = _cairo_surface_snapshot_get_target (surf); + if (surf->backend->type == CAIRO_SURFACE_TYPE_SUBSURFACE) { cairo_surface_subsurface_t *sub = (cairo_surface_subsurface_t *) surf; - *width = sub->extents.width; - *height = sub->extents.height; - } else { - cairo_surface_t *free_me = NULL; - cairo_recording_surface_t *recording_surface; - cairo_box_t bbox; - cairo_rectangle_int_t extents; - - recording_surface = (cairo_recording_surface_t *) surf; - if (_cairo_surface_is_snapshot (&recording_surface->base)) { - free_me = _cairo_surface_snapshot_get_target (&recording_surface->base); - recording_surface = (cairo_recording_surface_t *) free_me; - } - - status = _cairo_recording_surface_get_bbox (recording_surface, &bbox, NULL); - cairo_surface_destroy (free_me); - if (unlikely (status)) - return status; - - _cairo_box_round_to_rectangle (&bbox, &extents); - *width = extents.width; - *height = extents.height; + *src_surface_extents = sub->extents; + *src_surface_bounded = TRUE; + *x_offset = -sub->extents.x; + *y_offset = -sub->extents.y; } - *source_surface = surf; - return CAIRO_STATUS_SUCCESS; - } else { - status = _cairo_surface_acquire_source_image (surf, &image, image_extra); + cairo_surface_destroy (surf); + } else if (surf->type != CAIRO_SURFACE_TYPE_IMAGE) { + cairo_image_surface_t *image; + void *image_extra; + + status = _cairo_surface_acquire_source_image (surf, &image, &image_extra); if (unlikely (status)) return status; - } - } break; - - case CAIRO_PATTERN_TYPE_RASTER_SOURCE: { - cairo_surface_t *surf; - cairo_box_t box; - cairo_rectangle_int_t rect; - /* get the operation extents in pattern space */ - _cairo_box_from_rectangle (&box, extents); - _cairo_matrix_transform_bounding_box_fixed (&pattern->matrix, &box, NULL); - _cairo_box_round_to_rectangle (&box, &rect); - surf = _cairo_raster_source_pattern_acquire (pattern, &surface->base, &rect); - if (!surf) - return CAIRO_INT_STATUS_UNSUPPORTED; - assert (_cairo_surface_is_image (surf)); - image = (cairo_image_surface_t *) surf; - } break; - - case CAIRO_PATTERN_TYPE_SOLID: - case CAIRO_PATTERN_TYPE_LINEAR: - case CAIRO_PATTERN_TYPE_RADIAL: - case CAIRO_PATTERN_TYPE_MESH: - default: + *src_surface_bounded = _cairo_surface_get_extents (&image->base, src_surface_extents); + _cairo_surface_release_source_image (surf, image, image_extra); + } + } else { ASSERT_NOT_REACHED; - break; } - *width = image->width; - *height = image->height; - *source_surface = &image->base; return CAIRO_STATUS_SUCCESS; } static void _cairo_ps_surface_release_source_surface_from_pattern (cairo_ps_surface_t *surface, const cairo_pattern_t *pattern, - cairo_surface_t *source, - void *image_extra) + cairo_surface_t *source_surface) { - switch (pattern->type) { - case CAIRO_PATTERN_TYPE_SURFACE: { - cairo_surface_pattern_t *surf_pat = (cairo_surface_pattern_t *) pattern; - if (surf_pat->surface->type != CAIRO_SURFACE_TYPE_RECORDING) { - cairo_image_surface_t *image = (cairo_image_surface_t *) source; - _cairo_surface_release_source_image (surf_pat->surface, image, image_extra); - } - } break; - - case CAIRO_PATTERN_TYPE_RASTER_SOURCE: - _cairo_raster_source_pattern_release (pattern, source); - break; - - case CAIRO_PATTERN_TYPE_SOLID: - case CAIRO_PATTERN_TYPE_LINEAR: - case CAIRO_PATTERN_TYPE_RADIAL: - case CAIRO_PATTERN_TYPE_MESH: - default: - - ASSERT_NOT_REACHED; - break; - } + if (pattern->type == CAIRO_PATTERN_TYPE_RASTER_SOURCE) + _cairo_raster_source_pattern_release (pattern, source_surface); } /** @@ -1846,11 +1974,8 @@ * @surface: the ps surface * @source: The source image * @extents: extents of the operation that is using this source - * @width: returns width of padded image - * @height: returns height of padded image - * @x_offset: returns x offset of padded image - * @y_offset: returns y offset of padded image * @image: returns the padded image or NULL if padding not required to fill @extents + * @image_extents: returns extents of padded image. These extents in are in source image space. * * Creates a padded image if the source image does not fill the extents. **/ @@ -1859,11 +1984,8 @@ cairo_image_surface_t *source, const cairo_matrix_t *source_matrix, const cairo_rectangle_int_t *extents, - int *width, - int *height, - double *x_offset, - double *y_offset, - cairo_image_surface_t **image) + cairo_image_surface_t **image, + cairo_rectangle_int_t *image_extents) { cairo_box_t box; cairo_rectangle_int_t rect; @@ -1885,11 +2007,9 @@ _cairo_fixed_integer_floor(box.p2.y) > w || _cairo_fixed_integer_floor(box.p2.y) > h) { - pad_image = - _cairo_image_surface_create_with_pixman_format (NULL, - source->pixman_format, - rect.width, rect.height, - 0); + pad_image = _cairo_image_surface_create_with_content (source->base.content, + rect.width, + rect.height); if (pad_image->status) return pad_image->status; @@ -1902,10 +2022,10 @@ NULL); _cairo_pattern_fini (&pad_pattern.base); *image = (cairo_image_surface_t *) pad_image; - *width = rect.width; - *height = rect.height; - *x_offset = rect.x; - *y_offset = rect.y; + image_extents->x = rect.x; + image_extents->y = rect.y; + image_extents->width = rect.width; + image_extents->height = rect.height; } else { *image = NULL; status = CAIRO_STATUS_SUCCESS; @@ -1919,27 +2039,32 @@ const cairo_pattern_t *pattern, const cairo_rectangle_int_t *extents) { - int width, height; + cairo_rectangle_int_t src_surface_extents; + cairo_bool_t src_surface_bounded; + cairo_rectangle_int_t src_op_extents; + cairo_surface_t *source_surface; double x_offset, y_offset; - cairo_surface_t *source; cairo_image_surface_t *image; void *image_extra; - cairo_int_status_t status; + cairo_int_status_t status; cairo_image_transparency_t transparency; status = _cairo_ps_surface_acquire_source_surface_from_pattern (surface, pattern, extents, - &width, - &height, + &src_surface_extents, + &src_surface_bounded, + &src_op_extents, + &source_surface, &x_offset, - &y_offset, - &source, - &image_extra); + &y_offset); + if (unlikely (status)) + return status; + + status = _cairo_surface_acquire_source_image (source_surface, &image, &image_extra); if (unlikely (status)) return status; - image = (cairo_image_surface_t *) source; if (image->base.status) return image->base.status; @@ -1966,7 +2091,8 @@ ASSERT_NOT_REACHED; } - _cairo_ps_surface_release_source_surface_from_pattern (surface, pattern, source, image_extra); + _cairo_surface_release_source_image (source_surface, image, image_extra); + _cairo_ps_surface_release_source_surface_from_pattern (surface, pattern, source_surface); return status; } @@ -2153,14 +2279,9 @@ /* The "standard" implementation limit for PostScript string sizes is * 65535 characters (see PostScript Language Reference, Appendix - * B). We go one short of that because we sometimes need two - * characters in a string to represent a single ASCII85 byte, (for the - * escape sequences "\\", "\(", and "\)") and we must not split these - * across two strings. So we'd be in trouble if we went right to the - * limit and one of these escape sequences just happened to land at - * the end. + * B). */ -#define STRING_ARRAY_MAX_STRING_SIZE (65535-1) +#define STRING_ARRAY_MAX_STRING_SIZE 65535 #define STRING_ARRAY_MAX_COLUMN 72 typedef struct _string_array_stream { @@ -2168,64 +2289,62 @@ cairo_output_stream_t *output; int column; int string_size; + int tuple_count; cairo_bool_t use_strings; } string_array_stream_t; static cairo_status_t -_string_array_stream_write (cairo_output_stream_t *base, - const unsigned char *data, - unsigned int length) +_base85_string_wrap_stream_write (cairo_output_stream_t *base, + const unsigned char *data, + unsigned int length) { string_array_stream_t *stream = (string_array_stream_t *) base; unsigned char c; - const unsigned char backslash = '\\'; if (length == 0) return CAIRO_STATUS_SUCCESS; while (length--) { - if (stream->string_size == 0 && stream->use_strings) { - _cairo_output_stream_printf (stream->output, "("); - stream->column++; - } - - c = *data++; - if (stream->use_strings) { - switch (c) { - case '\\': - case '(': - case ')': - _cairo_output_stream_write (stream->output, &backslash, 1); - stream->column++; - stream->string_size++; - break; + if (stream->column == 0) { + if (stream->use_strings) { + _cairo_output_stream_printf (stream->output, "<~"); + stream->column = 2; + } else { + _cairo_output_stream_printf (stream->output, " "); + stream->column = 1; } } - /* Have to be careful to never split the final ~> sequence. */ - if (c == '~') { - _cairo_output_stream_write (stream->output, &c, 1); - stream->column++; - stream->string_size++; - if (length-- == 0) - break; - - c = *data++; - } + c = *data++; _cairo_output_stream_write (stream->output, &c, 1); stream->column++; - stream->string_size++; + /* Base85 encodes each 4 byte tuple with a 5 ASCII character + * tuple, except for 'z' with represents 4 zero bytes. We need + * to keep track of the string length after decoding. + */ + if (c == 'z') { + stream->string_size += 4; + stream->tuple_count = 0; + } else { + if (++stream->tuple_count == 5) { + stream->string_size += 4; + stream->tuple_count = 0; + } + } + + /* Split string at tuple boundary when there is not enough + * space for another tuple */ if (stream->use_strings && - stream->string_size >= STRING_ARRAY_MAX_STRING_SIZE) + stream->tuple_count == 0 && + stream->string_size > STRING_ARRAY_MAX_STRING_SIZE - 4) { - _cairo_output_stream_printf (stream->output, ")\n"); + _cairo_output_stream_printf (stream->output, "~>\n"); stream->string_size = 0; stream->column = 0; } if (stream->column >= STRING_ARRAY_MAX_COLUMN) { _cairo_output_stream_printf (stream->output, "\n "); - stream->string_size += 2; stream->column = 1; } } @@ -2234,35 +2353,28 @@ } static cairo_status_t -_string_array_stream_close (cairo_output_stream_t *base) +_base85_string_wrap_stream_close (cairo_output_stream_t *base) { - cairo_status_t status; string_array_stream_t *stream = (string_array_stream_t *) base; - if (stream->use_strings) - _cairo_output_stream_printf (stream->output, ")\n"); - - status = _cairo_output_stream_get_status (stream->output); + if (!stream->use_strings || stream->string_size != 0) + _cairo_output_stream_printf (stream->output, "~>"); - return status; + return _cairo_output_stream_get_status (stream->output); } -/* A string_array_stream wraps an existing output stream. It takes the - * data provided to it and output one or more consecutive string - * objects, each within the standard PostScript implementation limit - * of 65k characters. - * - * The strings are each separated by a space character for easy - * inclusion within an array object, (but the array delimiters are not - * added by the string_array_stream). - * +/* A _base85_strings_stream wraps an existing output stream. It takes + * base85 encoded data and splits it into strings each limited to + * STRING_ARRAY_MAX_STRING_SIZE bytes when decoded. Each string is + * enclosed in "<~" and "~>". + * The string array stream is also careful to wrap the output within - * STRING_ARRAY_MAX_COLUMN columns (+/- 1). The stream also adds - * necessary escaping for special characters within a string, - * (specifically '\', '(', and ')'). + * STRING_ARRAY_MAX_COLUMN columns. Wrapped lines start with a space + * in case an encoded line starts with %% which could be interpreted + * as a DSC comment. */ static cairo_output_stream_t * -_string_array_stream_create (cairo_output_stream_t *output) +_base85_strings_stream_create (cairo_output_stream_t *output) { string_array_stream_t *stream; @@ -2273,23 +2385,26 @@ } _cairo_output_stream_init (&stream->base, - _string_array_stream_write, + _base85_string_wrap_stream_write, NULL, - _string_array_stream_close); + _base85_string_wrap_stream_close); stream->output = output; stream->column = 0; stream->string_size = 0; + stream->tuple_count = 0; stream->use_strings = TRUE; return &stream->base; } -/* A base85_array_stream wraps an existing output stream. It wraps the - * output within STRING_ARRAY_MAX_COLUMN columns (+/- 1). The output - * is not enclosed in strings like string_array_stream. +/* A base85_wrap_stream wraps an existing output stream. It wraps the + * output within STRING_ARRAY_MAX_COLUMN columns. A base85 EOD "~>" is + * appended to the end. Wrapped lines start with a space in case an + * encoded line starts with %% which could be interpreted as a DSC + * comment. */ static cairo_output_stream_t * -_base85_array_stream_create (cairo_output_stream_t *output) +_base85_wrap_stream_create (cairo_output_stream_t *output) { string_array_stream_t *stream; @@ -2300,12 +2415,13 @@ } _cairo_output_stream_init (&stream->base, - _string_array_stream_write, + _base85_string_wrap_stream_write, NULL, - _string_array_stream_close); + _base85_string_wrap_stream_close); stream->output = output; stream->column = 0; stream->string_size = 0; + stream->tuple_count = 0; stream->use_strings = FALSE; return &stream->base; @@ -2367,9 +2483,9 @@ cairo_status_t status, status2; if (use_strings) - string_array_stream = _string_array_stream_create (surface->stream); + string_array_stream = _base85_strings_stream_create (surface->stream); else - string_array_stream = _base85_array_stream_create (surface->stream); + string_array_stream = _base85_wrap_stream_create (surface->stream); status = _cairo_output_stream_get_status (string_array_stream); if (unlikely (status)) @@ -2416,9 +2532,6 @@ break; } status = _cairo_output_stream_destroy (base85_stream); - - /* Mark end of base85 data */ - _cairo_output_stream_printf (string_array_stream, "~>"); status2 = _cairo_output_stream_destroy (string_array_stream); if (status == CAIRO_STATUS_SUCCESS) status = status2; @@ -2426,12 +2539,32 @@ return status; } +static const char * +get_interpolate (cairo_filter_t filter) +{ + const char *interpolate; + + switch (filter) { + default: + case CAIRO_FILTER_GOOD: + case CAIRO_FILTER_BEST: + case CAIRO_FILTER_BILINEAR: + interpolate = "true"; + break; + case CAIRO_FILTER_FAST: + case CAIRO_FILTER_NEAREST: + case CAIRO_FILTER_GAUSSIAN: + interpolate = "false"; + break; + } + + return interpolate; +} + static cairo_status_t -_cairo_ps_surface_emit_image (cairo_ps_surface_t *surface, - cairo_image_surface_t *image_surf, - cairo_operator_t op, - cairo_filter_t filter, - cairo_bool_t stencil_mask) +_cairo_ps_surface_emit_image (cairo_ps_surface_t *surface, + cairo_emit_surface_mode_t mode, + cairo_emit_surface_params_t *params) { cairo_status_t status; unsigned char *data; @@ -2447,10 +2580,16 @@ const char *interpolate; cairo_ps_compress_t compress; const char *compress_filter; + cairo_image_surface_t *image_surf; cairo_image_surface_t *image; + void *image_extra; + + if (params->src_surface->status) + return params->src_surface->status; - if (image_surf->base.status) - return image_surf->base.status; + status = _cairo_surface_acquire_source_image (params->src_surface, &image_surf, &image_extra); + if (unlikely (status)) + return status; image = image_surf; if (image->format != CAIRO_FORMAT_RGB24 && @@ -2461,16 +2600,16 @@ cairo_surface_t *surf; cairo_surface_pattern_t pattern; - surf = _cairo_image_surface_create_with_content (image_surf->base.content, - image_surf->width, - image_surf->height); + surf = _cairo_image_surface_create_with_content (image->base.content, + image->width, + image->height); image = (cairo_image_surface_t *) surf; if (surf->status) { status = surf->status; goto bail0; } - _cairo_pattern_init_for_surface (&pattern, &image_surf->base); + _cairo_pattern_init_for_surface (&pattern, &image->base); status = _cairo_surface_paint (surf, CAIRO_OPERATOR_SOURCE, &pattern.base, NULL); @@ -2479,22 +2618,9 @@ goto bail0; } ps_image = image; + interpolate = get_interpolate (params->filter); - switch (filter) { - default: - case CAIRO_FILTER_GOOD: - case CAIRO_FILTER_BEST: - case CAIRO_FILTER_BILINEAR: - interpolate = "true"; - break; - case CAIRO_FILTER_FAST: - case CAIRO_FILTER_NEAREST: - case CAIRO_FILTER_GAUSSIAN: - interpolate = "false"; - break; - } - - if (stencil_mask) { + if (params->stencil_mask) { use_mask = FALSE; color = CAIRO_IMAGE_IS_MONOCHROME; transparency = CAIRO_IMAGE_HAS_BILEVEL_ALPHA; @@ -2505,7 +2631,7 @@ current image over a white (or black for CONTENT_COLOR surfaces) RGB surface to eliminate it. */ - if (op == CAIRO_OPERATOR_SOURCE || + if (params->op == CAIRO_OPERATOR_SOURCE || transparency == CAIRO_IMAGE_HAS_ALPHA || (transparency == CAIRO_IMAGE_HAS_BILEVEL_ALPHA && surface->ps_level == CAIRO_PS_LEVEL_2)) @@ -2555,7 +2681,7 @@ i = 0; for (y = 0; y < ps_image->height; y++) { - if (stencil_mask || use_mask) { + if (params->stencil_mask || use_mask) { /* mask row */ if (ps_image->format == CAIRO_FORMAT_A1) { pixel8 = (uint8_t *) (ps_image->data + y * ps_image->stride); @@ -2596,7 +2722,7 @@ i++; } } - if (stencil_mask) + if (params->stencil_mask) continue; /* image row*/ @@ -2661,11 +2787,11 @@ surface->ps_level_used = CAIRO_PS_LEVEL_3; } - if (surface->use_string_datasource) { + if (surface->paint_proc) { /* Emit the image data as a base85-encoded string which will * be used as the data source for the image operator later. */ _cairo_output_stream_printf (surface->stream, - "/CairoImageData [\n"); + "/CairoData [\n"); status = _cairo_ps_surface_emit_base85_string (surface, data, @@ -2678,23 +2804,25 @@ _cairo_output_stream_printf (surface->stream, "] def\n"); _cairo_output_stream_printf (surface->stream, - "/CairoImageDataIndex 0 def\n"); + "/CairoDataIndex 0 def\n"); + } else { + _cairo_output_stream_printf (surface->stream, + "/cairo_ascii85_file currentfile /ASCII85Decode filter def\n"); } if (use_mask) { _cairo_output_stream_printf (surface->stream, "%s setcolorspace\n" - "5 dict dup begin\n" - " /ImageType 3 def\n" - " /InterleaveType 2 def\n" - " /DataDict 8 dict def\n" - " DataDict begin\n" - " /ImageType 1 def\n" - " /Width %d def\n" - " /Height %d def\n" - " /Interpolate %s def\n" - " /BitsPerComponent %d def\n" - " /Decode [ %s ] def\n", + "<<\n" + " /ImageType 3\n" + " /InterleaveType 2\n" + " /DataDict <<\n" + " /ImageType 1\n" + " /Width %d\n" + " /Height %d\n" + " /Interpolate %s\n" + " /BitsPerComponent %d\n" + " /Decode [ %s ]\n", color == CAIRO_IMAGE_IS_COLOR ? "/DeviceRGB" : "/DeviceGray", ps_image->width, ps_image->height, @@ -2702,84 +2830,89 @@ color == CAIRO_IMAGE_IS_MONOCHROME ? 1 : 8, color == CAIRO_IMAGE_IS_COLOR ? "0 1 0 1 0 1" : "0 1"); - if (surface->use_string_datasource) { + if (surface->paint_proc) { _cairo_output_stream_printf (surface->stream, - " /DataSource {\n" - " CairoImageData CairoImageDataIndex get\n" - " /CairoImageDataIndex CairoImageDataIndex 1 add def\n" - " CairoImageDataIndex CairoImageData length 1 sub gt\n" - " { /CairoImageDataIndex 0 def } if\n" - " } /ASCII85Decode filter /%s filter def\n", + " /DataSource { cairo_data_source } /%s filter\n", compress_filter); } else { _cairo_output_stream_printf (surface->stream, - " /DataSource currentfile /ASCII85Decode filter /%s filter def\n", + " /DataSource cairo_ascii85_file /%s filter\n", compress_filter); } _cairo_output_stream_printf (surface->stream, - " /ImageMatrix [ 1 0 0 -1 0 %d ] def\n" - " end\n" - " /MaskDict 8 dict def\n" - " MaskDict begin\n" - " /ImageType 1 def\n" - " /Width %d def\n" - " /Height %d def\n" - " /Interpolate %s def\n" - " /BitsPerComponent 1 def\n" - " /Decode [ 1 0 ] def\n" - " /ImageMatrix [ 1 0 0 -1 0 %d ] def\n" - " end\n" - "end\n" + " /ImageMatrix [ %d 0 0 %d 0 %d ]\n" + " >>\n" + " /MaskDict <<\n" + " /ImageType 1\n" + " /Width %d\n" + " /Height %d\n" + " /Interpolate %s\n" + " /BitsPerComponent 1\n" + " /Decode [ 1 0 ]\n" + " /ImageMatrix [ %d 0 0 %d 0 %d ]\n" + " >>\n" + ">>\n" "image\n", + ps_image->width, + -ps_image->height, ps_image->height, ps_image->width, ps_image->height, interpolate, + ps_image->width, + -ps_image->height, ps_image->height); } else { - if (!stencil_mask) { + const char *decode; + + if (!params->stencil_mask) { _cairo_output_stream_printf (surface->stream, "%s setcolorspace\n", color == CAIRO_IMAGE_IS_COLOR ? "/DeviceRGB" : "/DeviceGray"); } + if (params->stencil_mask) + decode = "1 0"; + else if (color == CAIRO_IMAGE_IS_COLOR) + decode = "0 1 0 1 0 1"; + else + decode ="0 1"; + _cairo_output_stream_printf (surface->stream, - "8 dict dup begin\n" - " /ImageType 1 def\n" - " /Width %d def\n" - " /Height %d def\n" - " /Interpolate %s def\n" - " /BitsPerComponent %d def\n" - " /Decode [ %s ] def\n", + "<<\n" + " /ImageType 1\n" + " /Width %d\n" + " /Height %d\n" + " /Interpolate %s\n" + " /BitsPerComponent %d\n" + " /Decode [ %s ]\n", ps_image->width, ps_image->height, interpolate, color == CAIRO_IMAGE_IS_MONOCHROME ? 1 : 8, - stencil_mask ? "1 0" : color == CAIRO_IMAGE_IS_COLOR ? "0 1 0 1 0 1" : "0 1"); - if (surface->use_string_datasource) { + decode); + if (surface->paint_proc) { _cairo_output_stream_printf (surface->stream, - " /DataSource {\n" - " CairoImageData CairoImageDataIndex get\n" - " /CairoImageDataIndex CairoImageDataIndex 1 add def\n" - " CairoImageDataIndex CairoImageData length 1 sub gt\n" - " { /CairoImageDataIndex 0 def } if\n" - " } /ASCII85Decode filter /%s filter def\n", + " /DataSource { cairo_data_source } /%s filter\n", compress_filter); } else { _cairo_output_stream_printf (surface->stream, - " /DataSource currentfile /ASCII85Decode filter /%s filter def\n", + " /DataSource cairo_ascii85_file /%s filter\n", compress_filter); } _cairo_output_stream_printf (surface->stream, - " /ImageMatrix [ 1 0 0 -1 0 %d ] def\n" - "end\n" - "%s\n", + " /ImageMatrix [ %d 0 0 %d 0 %d ]\n" + ">>\n" + "%s%s\n", + ps_image->width, + -ps_image->height, ps_image->height, - stencil_mask ? "imagemask" : "image"); + surface->paint_proc ? "" : "cairo_", + params->stencil_mask ? "imagemask" : "image"); } - if (!surface->use_string_datasource) { + if (!surface->paint_proc) { /* Emit the image data as a base85-encoded string which will * be used as the data source for the image operator. */ status = _cairo_ps_surface_emit_base85_string (surface, @@ -2803,14 +2936,15 @@ if (image != image_surf) cairo_surface_destroy (&image->base); + _cairo_surface_release_source_image (params->src_surface, image_surf, image_extra); + return status; } -static cairo_status_t -_cairo_ps_surface_emit_jpeg_image (cairo_ps_surface_t *surface, - cairo_surface_t *source, - int width, - int height) +static cairo_int_status_t +_cairo_ps_surface_emit_jpeg_image (cairo_ps_surface_t *surface, + cairo_emit_surface_mode_t mode, + cairo_emit_surface_params_t *params) { cairo_status_t status; const unsigned char *mime_data; @@ -2819,10 +2953,11 @@ const char *colorspace; const char *decode; - cairo_surface_get_mime_data (source, CAIRO_MIME_TYPE_JPEG, + if (unlikely (params->src_surface->status)) + return params->src_surface->status; + + cairo_surface_get_mime_data (params->src_surface, CAIRO_MIME_TYPE_JPEG, &mime_data, &mime_data_length); - if (unlikely (source->status)) - return source->status; if (mime_data == NULL) return CAIRO_INT_STATUS_UNSUPPORTED; @@ -2847,11 +2982,18 @@ return CAIRO_INT_STATUS_UNSUPPORTED; } - if (surface->use_string_datasource) { + /* At this point we know emitting jpeg will succeed. */ + if (mode == CAIRO_EMIT_SURFACE_ANALYZE) { + params->is_image = TRUE; + params->approx_size = mime_data_length; + return CAIRO_STATUS_SUCCESS; + } + + if (surface->paint_proc) { /* Emit the image data as a base85-encoded string which will * be used as the data source for the image operator later. */ _cairo_output_stream_printf (surface->stream, - "/CairoImageData [\n"); + "/CairoData [\n"); status = _cairo_ps_surface_emit_base85_string (surface, mime_data, @@ -2864,43 +3006,46 @@ _cairo_output_stream_printf (surface->stream, "] def\n"); _cairo_output_stream_printf (surface->stream, - "/CairoImageDataIndex 0 def\n"); + "/CairoDataIndex 0 def\n"); + } else { + _cairo_output_stream_printf (surface->stream, + "/cairo_ascii85_file currentfile /ASCII85Decode filter def\n"); } _cairo_output_stream_printf (surface->stream, "%s setcolorspace\n" - "8 dict dup begin\n" - " /ImageType 1 def\n" - " /Width %d def\n" - " /Height %d def\n" - " /BitsPerComponent %d def\n" - " /Decode [ %s ] def\n", + "<<\n" + " /ImageType 1\n" + " /Width %d\n" + " /Height %d\n" + " /BitsPerComponent %d\n" + " /Interpolate %s\n" + " /Decode [ %s ]\n", colorspace, info.width, info.height, info.bits_per_component, + get_interpolate (params->filter), decode); - if (surface->use_string_datasource) { + if (surface->paint_proc) { _cairo_output_stream_printf (surface->stream, - " /DataSource {\n" - " CairoImageData CairoImageDataIndex get\n" - " /CairoImageDataIndex CairoImageDataIndex 1 add def\n" - " CairoImageDataIndex CairoImageData length 1 sub gt\n" - " { /CairoImageDataIndex 0 def } if\n" - " } /ASCII85Decode filter /DCTDecode filter def\n"); + " /DataSource { cairo_data_source } /DCTDecode filter\n"); } else { _cairo_output_stream_printf (surface->stream, - " /DataSource currentfile /ASCII85Decode filter /DCTDecode filter def\n"); + " /DataSource cairo_ascii85_file /DCTDecode filter\n"); } _cairo_output_stream_printf (surface->stream, - " /ImageMatrix [ 1 0 0 -1 0 %d ] def\n" - "end\n" - "image\n", - info.height); + " /ImageMatrix [ %d 0 0 %d 0 %d ]\n" + ">>\n" + "%simage\n", + info.width, + -info.height, + info.height, + surface->paint_proc ? "" : "cairo_"); - if (!surface->use_string_datasource) { + if (!surface->paint_proc) { /* Emit the image data as a base85-encoded string which will * be used as the data source for the image operator. */ status = _cairo_ps_surface_emit_base85_string (surface, @@ -2913,117 +3058,309 @@ return status; } -static cairo_status_t -_cairo_ps_surface_emit_recording_surface (cairo_ps_surface_t *surface, - cairo_surface_t *recording_surface) +static cairo_int_status_t +_cairo_ps_surface_emit_ccitt_image (cairo_ps_surface_t *surface, + cairo_emit_surface_mode_t mode, + cairo_emit_surface_params_t *params) { - double old_width, old_height; - cairo_matrix_t old_cairo_to_ps; - cairo_content_t old_content; - cairo_rectangle_int_t old_page_bbox; - cairo_surface_t *free_me = NULL; - cairo_surface_clipper_t old_clipper; - cairo_box_t bbox; - cairo_int_status_t status; + cairo_status_t status; + const unsigned char *ccitt_data; + unsigned long ccitt_data_len; + const unsigned char *ccitt_params_data; + unsigned long ccitt_params_data_len; + char *ccitt_params_string; + cairo_ccitt_params_t ccitt_params; + + if (unlikely (params->src_surface->status)) + return params->src_surface->status; + + cairo_surface_get_mime_data (params->src_surface, CAIRO_MIME_TYPE_CCITT_FAX, + &ccitt_data, &ccitt_data_len); + if (ccitt_data == NULL) + return CAIRO_INT_STATUS_UNSUPPORTED; - old_content = surface->content; - old_width = surface->width; - old_height = surface->height; - old_page_bbox = surface->page_bbox; - old_cairo_to_ps = surface->cairo_to_ps; - old_clipper = surface->clipper; - _cairo_surface_clipper_init (&surface->clipper, - _cairo_ps_surface_clipper_intersect_clip_path); + cairo_surface_get_mime_data (params->src_surface, CAIRO_MIME_TYPE_CCITT_FAX_PARAMS, + &ccitt_params_data, &ccitt_params_data_len); + if (ccitt_params_data == NULL) + return CAIRO_INT_STATUS_UNSUPPORTED; - if (_cairo_surface_is_snapshot (recording_surface)) - free_me = recording_surface = _cairo_surface_snapshot_get_target (recording_surface); + /* ensure params_string is null terminated */ + ccitt_params_string = malloc (ccitt_params_data_len + 1); + memcpy (ccitt_params_string, ccitt_params_data, ccitt_params_data_len); + ccitt_params_string[ccitt_params_data_len] = 0; + status = _cairo_tag_parse_ccitt_params (ccitt_params_string, &ccitt_params); + if (unlikely(status)) + return status; - status = - _cairo_recording_surface_get_bbox ((cairo_recording_surface_t *) recording_surface, - &bbox, - NULL); - if (unlikely (status)) - goto err; + free (ccitt_params_string); -#if DEBUG_PS - _cairo_output_stream_printf (surface->stream, - "%% _cairo_ps_surface_emit_recording_surface (%f, %f), (%f, %f)\n", - _cairo_fixed_to_double (bbox.p1.x), - _cairo_fixed_to_double (bbox.p1.y), - _cairo_fixed_to_double (bbox.p2.x), - _cairo_fixed_to_double (bbox.p2.y)); -#endif + if (ccitt_params.columns <= 0 || ccitt_params.rows <= 0) + return CAIRO_INT_STATUS_UNSUPPORTED; - surface->width = _cairo_fixed_to_double (bbox.p2.x - bbox.p1.x); - surface->height = _cairo_fixed_to_double (bbox.p2.y - bbox.p1.y); - _cairo_box_round_to_rectangle (&bbox, &surface->page_bbox); + /* At this point we know emitting ccitt will succeed. */ + if (mode == CAIRO_EMIT_SURFACE_ANALYZE) { + params->is_image = TRUE; + params->approx_size = ccitt_data_len; + return CAIRO_STATUS_SUCCESS; + } - surface->current_pattern_is_solid_color = FALSE; - _cairo_pdf_operators_reset (&surface->pdf_operators); - cairo_matrix_init (&surface->cairo_to_ps, 1, 0, 0, -1, 0, surface->height); - _cairo_pdf_operators_set_cairo_to_pdf_matrix (&surface->pdf_operators, - &surface->cairo_to_ps); - _cairo_output_stream_printf (surface->stream, " q\n"); + if (surface->paint_proc) { + /* Emit the image data as a base85-encoded string which will + * be used as the data source for the image operator later. */ + _cairo_output_stream_printf (surface->stream, + "/CairoData [\n"); + + status = _cairo_ps_surface_emit_base85_string (surface, + ccitt_data, + ccitt_data_len, + CAIRO_PS_COMPRESS_NONE, + TRUE); + if (unlikely (status)) + return status; - if (recording_surface->content == CAIRO_CONTENT_COLOR) { - surface->content = CAIRO_CONTENT_COLOR; _cairo_output_stream_printf (surface->stream, - " 0 g %d %d %d %d rectfill\n", - surface->page_bbox.x, - surface->page_bbox.y, - surface->page_bbox.width, - surface->page_bbox.height); + "] def\n"); + _cairo_output_stream_printf (surface->stream, + "/CairoDataIndex 0 def\n"); + } else { + _cairo_output_stream_printf (surface->stream, + "/cairo_ascii85_file currentfile /ASCII85Decode filter def\n"); } - status = _cairo_recording_surface_replay_region (recording_surface, - NULL, - &surface->base, - CAIRO_RECORDING_REGION_NATIVE); - assert (status != CAIRO_INT_STATUS_UNSUPPORTED); - if (unlikely (status)) - goto err; + if (!params->stencil_mask) { + _cairo_output_stream_printf (surface->stream, + "/DeviceGray setcolorspace\n"); + } - status = _cairo_pdf_operators_flush (&surface->pdf_operators); - if (unlikely (status)) - goto err; + _cairo_output_stream_printf (surface->stream, + "<<\n" + " /ImageType 1\n" + " /Width %d\n" + " /Height %d\n" + " /BitsPerComponent 1\n" + " /Interpolate %s\n" + " /Decode [ 0 1 ]\n", + ccitt_params.columns, + ccitt_params.rows, + get_interpolate (params->filter)); - _cairo_output_stream_printf (surface->stream, " Q\n"); + if (surface->paint_proc) { + _cairo_output_stream_printf (surface->stream, + " /DataSource { cairo_data_source }\n"); + } else { + _cairo_output_stream_printf (surface->stream, + " /DataSource cairo_ascii85_file\n"); + } - _cairo_surface_clipper_reset (&surface->clipper); - surface->clipper = old_clipper; - surface->content = old_content; - surface->width = old_width; - surface->height = old_height; - surface->page_bbox = old_page_bbox; - surface->current_pattern_is_solid_color = FALSE; - _cairo_pdf_operators_reset (&surface->pdf_operators); - surface->cairo_to_ps = old_cairo_to_ps; + _cairo_output_stream_printf (surface->stream, + " << /Columns %d /Rows %d /K %d\n", + ccitt_params.columns, + ccitt_params.rows, + ccitt_params.k); - _cairo_pdf_operators_set_cairo_to_pdf_matrix (&surface->pdf_operators, - &surface->cairo_to_ps); + if (ccitt_params.end_of_line) + _cairo_output_stream_printf (surface->stream, " /EndOfLine true\n"); + + if (ccitt_params.encoded_byte_align) + _cairo_output_stream_printf (surface->stream, " /EncodedByteAlign true\n"); + + if (!ccitt_params.end_of_block) + _cairo_output_stream_printf (surface->stream, " /EndOfBlock false\n"); + + if (ccitt_params.black_is_1) + _cairo_output_stream_printf (surface->stream, " /BlackIs1 true\n"); + + if (ccitt_params.damaged_rows_before_error > 0) { + _cairo_output_stream_printf (surface->stream, + " /DamagedRowsBeforeError %d\n", + ccitt_params.damaged_rows_before_error); + } + + _cairo_output_stream_printf (surface->stream, + " >> /CCITTFaxDecode filter\n"); + + _cairo_output_stream_printf (surface->stream, + " /ImageMatrix [ %d 0 0 %d 0 %d ]\n" + ">>\n" + "%s%s\n", + ccitt_params.columns, + -ccitt_params.rows, + ccitt_params.rows, + surface->paint_proc ? "" : "cairo_", + params->stencil_mask ? "imagemask" : "image"); + + if (!surface->paint_proc) { + /* Emit the image data as a base85-encoded string which will + * be used as the data source for the image operator. */ + status = _cairo_ps_surface_emit_base85_string (surface, + ccitt_data, + ccitt_data_len, + CAIRO_PS_COMPRESS_NONE, + FALSE); + } -err: - cairo_surface_destroy (free_me); return status; } -static cairo_int_status_t -_cairo_ps_surface_emit_recording_subsurface (cairo_ps_surface_t *surface, - cairo_surface_t *recording_surface, - const cairo_rectangle_int_t *extents) +/* The '|' character is not used in PS (including ASCII85). We can + * speed up the search by first searching for the first char before + * comparing strings. + */ +#define SUBFILE_FILTER_EOD "|EOD|" + +/* Count number of non overlapping occurrences of SUBFILE_FILTER_EOD in data. */ +static int +count_eod_strings (const unsigned char *data, unsigned long data_len) +{ + const unsigned char *p = data; + const unsigned char *end; + int first_char, len, count; + const char *eod_str = SUBFILE_FILTER_EOD; + + first_char = eod_str[0]; + len = strlen (eod_str); + p = data; + end = data + data_len - len + 1; + count = 0; + while (p < end) { + p = memchr (p, first_char, end - p); + if (!p) + break; + + if (memcmp (p, eod_str, len) == 0) { + count++; + p += len; + } + } + + return count; +} + +static cairo_status_t +_cairo_ps_surface_emit_eps (cairo_ps_surface_t *surface, + cairo_emit_surface_mode_t mode, + cairo_emit_surface_params_t *params) +{ + cairo_status_t status; + const unsigned char *eps_data = NULL; + unsigned long eps_data_len; + const unsigned char *eps_params_string = NULL; + unsigned long eps_params_string_len; + char *params_string = NULL; + cairo_eps_params_t eps_params; + cairo_matrix_t mat; + double eps_width, eps_height; + + if (unlikely (params->src_surface->status)) + return params->src_surface->status; + + /* We only embed EPS with level 3 as we may use ReusableStreamDecode and we + * don't know what level the EPS file requires. */ + if (surface->ps_level == CAIRO_PS_LEVEL_2) + return CAIRO_INT_STATUS_UNSUPPORTED; + + cairo_surface_get_mime_data (params->src_surface, CAIRO_MIME_TYPE_EPS, + &eps_data, &eps_data_len); + if (eps_data == NULL) + return CAIRO_INT_STATUS_UNSUPPORTED; + + cairo_surface_get_mime_data (params->src_surface, CAIRO_MIME_TYPE_EPS_PARAMS, + &eps_params_string, &eps_params_string_len); + if (eps_params_string == NULL) + return CAIRO_INT_STATUS_UNSUPPORTED; + + /* ensure params_string is null terminated */ + params_string = malloc (eps_params_string_len + 1); + memcpy (params_string, eps_params_string, eps_params_string_len); + params_string[eps_params_string_len] = 0; + status = _cairo_tag_parse_eps_params (params_string, &eps_params); + if (unlikely(status)) + return status; + + /* At this point we know emitting EPS will succeed. */ + if (mode == CAIRO_EMIT_SURFACE_ANALYZE) { + params->is_image = FALSE; + params->approx_size = eps_data_len; + surface->contains_eps = TRUE; + + /* Find number of occurences of SUBFILE_FILTER_EOD in the EPS data. + * We will need it before emitting the data if a ReusableStream is used. + */ + params->eod_count = count_eod_strings (eps_data, eps_data_len); + return CAIRO_STATUS_SUCCESS; + } + + surface->ps_level_used = CAIRO_PS_LEVEL_3; + _cairo_output_stream_printf (surface->stream, "cairo_eps_begin\n"); + + eps_width = eps_params.bbox.p2.x - eps_params.bbox.p1.x; + eps_height = eps_params.bbox.p2.y - eps_params.bbox.p1.y; + cairo_matrix_init_translate (&mat, + params->src_surface_extents->x, + params->src_surface_extents->y); + cairo_matrix_scale (&mat, + params->src_surface_extents->width/eps_width, + params->src_surface_extents->height/eps_height); + cairo_matrix_scale (&mat, 1, -1); + cairo_matrix_translate (&mat, -eps_params.bbox.p1.x, -eps_params.bbox.p2.y); + + if (! _cairo_matrix_is_identity (&mat)) { + _cairo_output_stream_printf (surface->stream, "[ "); + _cairo_output_stream_print_matrix (surface->stream, &mat); + _cairo_output_stream_printf (surface->stream, " ] concat\n"); + } + + _cairo_output_stream_printf (surface->stream, + "%f %f %f %f rectclip\n", + eps_params.bbox.p1.x, + eps_params.bbox.p1.y, + eps_width, + eps_height); + + _cairo_output_stream_write (surface->stream, eps_data, eps_data_len); + _cairo_output_stream_printf (surface->stream, "\ncairo_eps_end\n"); + + return CAIRO_STATUS_SUCCESS; +} + +static cairo_status_t +_cairo_ps_surface_emit_recording_surface (cairo_ps_surface_t *surface, + cairo_surface_t *recording_surface, + const cairo_rectangle_int_t *recording_extents, + cairo_bool_t subsurface) { double old_width, old_height; + cairo_rectangle_int_t old_surface_extents; + cairo_bool_t old_surface_bounded; cairo_matrix_t old_cairo_to_ps; cairo_content_t old_content; - cairo_rectangle_int_t old_page_bbox; cairo_surface_clipper_t old_clipper; - cairo_surface_t *free_me = NULL; cairo_int_status_t status; + cairo_surface_t *free_me = NULL; + unsigned int id; + int i, recording_surf_stack_size; + + /* Prevent infinite recursion if the recording_surface references a recording + * currently being emitted */ + recording_surf_stack_size = _cairo_array_num_elements (&surface->recording_surf_stack); + for (i = 0; i < recording_surf_stack_size; i++) { + _cairo_array_copy_element (&surface->recording_surf_stack, i, &id); + if (id == recording_surface->unique_id) + return CAIRO_STATUS_SUCCESS; + } + id = recording_surface->unique_id; + status = _cairo_array_append (&surface->recording_surf_stack, &id); + if (unlikely (status)) + return status; + + if (_cairo_surface_is_snapshot (recording_surface)) + free_me = recording_surface = _cairo_surface_snapshot_get_target (recording_surface); old_content = surface->content; old_width = surface->width; old_height = surface->height; - old_page_bbox = surface->page_bbox; + old_surface_extents = surface->surface_extents; + old_surface_bounded = surface->surface_bounded; old_cairo_to_ps = surface->cairo_to_ps; old_clipper = surface->clipper; _cairo_surface_clipper_init (&surface->clipper, @@ -3031,46 +3368,44 @@ #if DEBUG_PS _cairo_output_stream_printf (surface->stream, - "%% _cairo_ps_surface_emit_recording_subsurface (%d, %d), (%d, %d)\n", - extents->x, extents->y, - extents->width, extents->height); + "%% _cairo_ps_surface_emit_recording_surface" + " x: %d, y: %d, w: %d, h: %d subsurface: %d\n", + recording_extents->x, recording_extents->y, + recording_extents->width, recording_extents->height, + subsurface); #endif - surface->page_bbox.x = surface->page_bbox.y = 0; - surface->page_bbox.width = surface->width = extents->width; - surface->page_bbox.height = surface->height = extents->height; - + surface->width = recording_extents->width; + surface->height = recording_extents->height; + surface->surface_extents = *recording_extents; surface->current_pattern_is_solid_color = FALSE; _cairo_pdf_operators_reset (&surface->pdf_operators); - cairo_matrix_init (&surface->cairo_to_ps, 1, 0, 0, -1, 0, surface->height); + cairo_matrix_init (&surface->cairo_to_ps, 1, 0, 0, 1, 0, 0); _cairo_pdf_operators_set_cairo_to_pdf_matrix (&surface->pdf_operators, &surface->cairo_to_ps); _cairo_output_stream_printf (surface->stream, " q\n"); - if (_cairo_surface_is_snapshot (recording_surface)) - free_me = recording_surface = _cairo_surface_snapshot_get_target (recording_surface); - if (recording_surface->content == CAIRO_CONTENT_COLOR) { surface->content = CAIRO_CONTENT_COLOR; _cairo_output_stream_printf (surface->stream, " 0 g %d %d %d %d rectfill\n", - surface->page_bbox.x, - surface->page_bbox.y, - surface->page_bbox.width, - surface->page_bbox.height); + recording_extents->x, + recording_extents->y, + recording_extents->width, + recording_extents->height); } status = _cairo_recording_surface_replay_region (recording_surface, - extents, + subsurface ? recording_extents : NULL, &surface->base, CAIRO_RECORDING_REGION_NATIVE); assert (status != CAIRO_INT_STATUS_UNSUPPORTED); if (unlikely (status)) - goto err; + return status; status = _cairo_pdf_operators_flush (&surface->pdf_operators); if (unlikely (status)) - goto err; + return status; _cairo_output_stream_printf (surface->stream, " Q\n"); @@ -3079,16 +3414,18 @@ surface->content = old_content; surface->width = old_width; surface->height = old_height; - surface->page_bbox = old_page_bbox; + surface->surface_extents = old_surface_extents; + surface->surface_bounded = old_surface_bounded; surface->current_pattern_is_solid_color = FALSE; _cairo_pdf_operators_reset (&surface->pdf_operators); surface->cairo_to_ps = old_cairo_to_ps; _cairo_pdf_operators_set_cairo_to_pdf_matrix (&surface->pdf_operators, &surface->cairo_to_ps); - -err: cairo_surface_destroy (free_me); + + _cairo_array_truncate (&surface->recording_surf_stack, recording_surf_stack_size); + return status; } @@ -3134,44 +3471,351 @@ red, green, blue); } -static cairo_status_t -_cairo_ps_surface_emit_surface (cairo_ps_surface_t *surface, - cairo_pattern_t *source_pattern, - cairo_surface_t *source_surface, - cairo_operator_t op, - int width, - int height, - cairo_bool_t stencil_mask) +/* + * PS Forms are used for sources that have CAIRO_MIME_TYPE_UNIQUE_ID. They will be + * emitted once in the PS header and can be rendered with the 'execform' operator. + * + * This function tries adding the source the form hash table. If the source does not + * have CAIRO_MIME_TYPE_UNIQUE_ID, CAIRO_INT_STATUS_UNSUPPORTED is returned. + + * @source: [in] the source for the form + * @params: [in] source parameters + * @test: [in] if TRUE, test if form will be used (excludes size check) + * @ps_form [out] the new or exisiting entry int the hash table. + * image or recording. + */ +static cairo_int_status_t +_cairo_ps_surface_use_form (cairo_ps_surface_t *surface, + cairo_emit_surface_params_t *params, + cairo_bool_t test, + cairo_ps_form_t **ps_form) +{ + cairo_ps_form_t source_key; + cairo_ps_form_t *source_entry; + unsigned char *unique_id = NULL; + unsigned long unique_id_length = 0; + cairo_status_t status; + long max_size; + + if (params->op != CAIRO_OPERATOR_OVER || params->stencil_mask) + return CAIRO_INT_STATUS_UNSUPPORTED; + + if (params->src_surface->backend->type == CAIRO_SURFACE_TYPE_SUBSURFACE) + return CAIRO_INT_STATUS_UNSUPPORTED; + + cairo_surface_get_mime_data (params->src_surface, CAIRO_MIME_TYPE_UNIQUE_ID, + (const unsigned char **) &source_key.unique_id, + &source_key.unique_id_length); + if (source_key.unique_id == NULL || source_key.unique_id_length == 0) + return CAIRO_INT_STATUS_UNSUPPORTED; + + if (test) + return CAIRO_STATUS_SUCCESS; + + source_key.filter = params->filter; + _cairo_ps_form_init_key (&source_key); + source_entry = _cairo_hash_table_lookup (surface->forms, &source_key.base); + if (source_entry) { + _cairo_rectangle_union (&source_entry->required_extents, params->src_op_extents); + *ps_form = source_entry; + return CAIRO_STATUS_SUCCESS; + } + + if (surface->ps_level == CAIRO_PS_LEVEL_3) + max_size = MAX_L3_FORM_DATA; + else + max_size = MAX_L3_FORM_DATA; + + /* Don't add any more Forms if we exceed the form memory limit */ + if (surface->total_form_size + params->approx_size > max_size) + return CAIRO_INT_STATUS_UNSUPPORTED; + + surface->total_form_size += params->approx_size > max_size; + unique_id = _cairo_malloc (source_key.unique_id_length); + if (unique_id == NULL) + return _cairo_error (CAIRO_STATUS_NO_MEMORY); + + unique_id_length = source_key.unique_id_length; + memcpy (unique_id, source_key.unique_id, unique_id_length); + + source_entry = calloc (sizeof (cairo_ps_form_t), 1); + if (source_entry == NULL) { + status = _cairo_error (CAIRO_STATUS_NO_MEMORY); + goto fail; + } + + source_entry->unique_id_length = unique_id_length; + source_entry->unique_id = unique_id; + source_entry->id = surface->num_forms++; + source_entry->src_surface = cairo_surface_reference (params->src_surface); + source_entry->required_extents = *params->src_op_extents; + source_entry->filter = params->filter; + source_entry->is_image = params->is_image; + _cairo_ps_form_init_key (source_entry); + status = _cairo_hash_table_insert (surface->forms, &source_entry->base); + if (unlikely(status)) + goto fail; + + *ps_form = source_entry; + return CAIRO_STATUS_SUCCESS; + + fail: + free (unique_id); + free (source_entry); + return status; +} + +static cairo_int_status_t +_cairo_ps_surface_emit_form (cairo_ps_surface_t *surface, + cairo_emit_surface_params_t *params, + cairo_bool_t test) +{ + cairo_ps_form_t *ps_form; + cairo_status_t status; + + status = _cairo_ps_surface_use_form (surface, + params, + test, + &ps_form); + if (test || status) + return status; + + /* _cairo_ps_form_emit will use Level 3 if permitted by ps_level */ + if (surface->ps_level == CAIRO_PS_LEVEL_3) + surface->ps_level_used = CAIRO_PS_LEVEL_3; + + _cairo_output_stream_printf (surface->stream, + "/cairoform-%d /Form findresource execform\n", + ps_form->id); + + return CAIRO_STATUS_SUCCESS; +} + +/* Emit a surface. This function has three modes. + * + * CAIRO_EMIT_SURFACE_ANALYZE: This will determine the surface type to + * be emitted and approximate size. is_image is set to TRUE if the + * emitted surface is an image surface (including mime images). This + * is used by the caller to setup the correct CTM. approx_size is set + * to the approximate size of the emitted surface and is used as an + * input by the emit mode. + * + * CAIRO_EMIT_SURFACE_EMIT: Emits the surface will be emitted. The + * approx_size and the surface unique id values are used to determine + * if a Form should be used. If a form is used, the exec form + * operation is emitted and the surface is added to the forms hash + * table. + * + * CAIRO_EMIT_SURFACE_EMIT_FORM: Emits the form definition for the surface. + * + * Usage is: + * 1) Setup input params and call with ANALYZE. + * 2) Setup CTM for surface and call with EMIT using same params struct. + * The EMIT_FORM mode is used when emitting the form definitions. + */ +static cairo_int_status_t +_cairo_ps_surface_emit_surface (cairo_ps_surface_t *surface, + cairo_emit_surface_mode_t mode, + cairo_emit_surface_params_t *params) { cairo_int_status_t status; + cairo_output_stream_t *old_stream; + cairo_bool_t use_form; - if (source_pattern->type == CAIRO_PATTERN_TYPE_SURFACE && - source_pattern->extend != CAIRO_EXTEND_PAD) - { - cairo_surface_t *surf = ((cairo_surface_pattern_t *) source_pattern)->surface; + /* Try emitting as a form. Returns unsupported if the surface is + * deemed unsuitable for a form. */ + use_form = FALSE; + if (mode == CAIRO_EMIT_SURFACE_ANALYZE || mode == CAIRO_EMIT_SURFACE_EMIT) { + status = _cairo_ps_surface_emit_form (surface, + params, + mode == CAIRO_EMIT_SURFACE_ANALYZE); + use_form = (status == CAIRO_INT_STATUS_SUCCESS); + if (status != CAIRO_INT_STATUS_SUCCESS && status != CAIRO_INT_STATUS_UNSUPPORTED) + return status; - status = _cairo_ps_surface_emit_jpeg_image (surface, surf, width, height); - if (status != CAIRO_INT_STATUS_UNSUPPORTED) + if (mode == CAIRO_EMIT_SURFACE_EMIT && status == CAIRO_INT_STATUS_SUCCESS) return status; } - if (source_surface->type == CAIRO_SURFACE_TYPE_RECORDING) { - if (source_surface->backend->type == CAIRO_SURFACE_TYPE_SUBSURFACE) { - cairo_surface_subsurface_t *sub = (cairo_surface_subsurface_t *) source_surface; - status = _cairo_ps_surface_emit_recording_subsurface (surface, sub->target, &sub->extents); + status = _cairo_ps_surface_emit_eps (surface, mode, params); + if (status == CAIRO_INT_STATUS_SUCCESS) { + params->is_image = FALSE; + goto surface_emitted; + } + if (status != CAIRO_INT_STATUS_UNSUPPORTED) + return status; + + status = _cairo_ps_surface_emit_jpeg_image (surface, mode, params); + if (status == CAIRO_INT_STATUS_SUCCESS) { + params->is_image = TRUE; + goto surface_emitted; + } + if (status != CAIRO_INT_STATUS_UNSUPPORTED) + return status; + + status = _cairo_ps_surface_emit_ccitt_image (surface, mode, params); + if (status == CAIRO_INT_STATUS_SUCCESS) { + params->is_image = TRUE; + goto surface_emitted; + } + if (status != CAIRO_INT_STATUS_UNSUPPORTED) + return status; + + if (mode == CAIRO_EMIT_SURFACE_ANALYZE) { + /* Find size of image or recording surface by emitting to a memory stream */ + status = _cairo_pdf_operators_flush (&surface->pdf_operators); + if (unlikely (status)) + return status; + + old_stream = surface->stream; + surface->stream = _cairo_memory_stream_create (); + _cairo_pdf_operators_set_stream (&surface->pdf_operators, surface->stream); + } + + if (params->src_surface->type == CAIRO_SURFACE_TYPE_RECORDING) { + params->is_image = FALSE; + if (params->src_surface->backend->type == CAIRO_SURFACE_TYPE_SUBSURFACE) { + cairo_surface_subsurface_t *sub = (cairo_surface_subsurface_t *) params->src_surface; + status = _cairo_ps_surface_emit_recording_surface (surface, + sub->target, + &sub->extents, + TRUE); } else { - status = _cairo_ps_surface_emit_recording_surface (surface, source_surface); + status = _cairo_ps_surface_emit_recording_surface (surface, + params->src_surface, + params->src_op_extents, + FALSE); } } else { - cairo_image_surface_t *image = (cairo_image_surface_t *) source_surface; + params->is_image = TRUE; + status = _cairo_ps_surface_emit_image (surface, mode, params); + } - status = _cairo_ps_surface_emit_image (surface, image, - op, source_pattern->filter, stencil_mask); + if (mode == CAIRO_EMIT_SURFACE_ANALYZE) { + unsigned char *data; + unsigned long length; + + status = _cairo_pdf_operators_flush (&surface->pdf_operators); + if (unlikely (status)) + return status; + + status = _cairo_memory_stream_destroy (surface->stream, &data, &length); + free (data); + if (unlikely (status)) + return status; + + params->approx_size = length; + surface->stream = old_stream; + _cairo_pdf_operators_set_stream (&surface->pdf_operators, + surface->stream); } + surface_emitted: + return status; } +static void +_cairo_ps_form_emit (void *entry, void *closure) +{ + cairo_ps_form_t *form = entry; + cairo_ps_surface_t *surface = closure; + cairo_emit_surface_params_t params; + cairo_int_status_t status; + cairo_output_stream_t *old_stream; + + params.src_surface = form->src_surface; + params.op = CAIRO_OPERATOR_OVER; + params.src_op_extents = &form->required_extents; + params.filter = form->filter; + params.stencil_mask = FALSE; + params.is_image = form->is_image; + params.approx_size = 0; + + _cairo_output_stream_printf (surface->final_stream, + "%%%%BeginResource: form cairoform-%d\n", + form->id); + + _cairo_output_stream_printf (surface->final_stream, + "/cairo_paint_form-%d", + form->id); + if (surface->ps_level == CAIRO_PS_LEVEL_3) { + surface->paint_proc = FALSE; + _cairo_output_stream_printf (surface->final_stream, + "\n" + "currentfile\n" + "<< /Filter /SubFileDecode\n" + " /DecodeParms << /EODString (%s) /EODCount 0 >>\n" + ">> /ReusableStreamDecode filter\n", + SUBFILE_FILTER_EOD); + } else { + surface->paint_proc = TRUE; + _cairo_output_stream_printf (surface->final_stream, + " {\n"); + } + _cairo_output_stream_printf (surface->final_stream, + "5 dict begin\n"); + + old_stream = surface->stream; + surface->stream = surface->final_stream; + _cairo_pdf_operators_set_stream (&surface->pdf_operators, surface->stream); + status = _cairo_ps_surface_emit_surface (surface, + CAIRO_EMIT_SURFACE_EMIT_FORM, + ¶ms); + status = _cairo_pdf_operators_flush (&surface->pdf_operators); + surface->stream = old_stream; + _cairo_pdf_operators_set_stream (&surface->pdf_operators, surface->stream); + + _cairo_output_stream_printf (surface->final_stream, + "end\n"); + if (surface->ps_level == CAIRO_PS_LEVEL_3) { + _cairo_output_stream_printf (surface->final_stream, + "%s\n" + "def\n", + SUBFILE_FILTER_EOD); + } else { + _cairo_output_stream_printf (surface->final_stream, + "} bind def\n"); + } + + _cairo_output_stream_printf (surface->final_stream, + "\n" + "/cairoform-%d\n" + "<<\n" + " /FormType 1\n", + form->id); + + if (form->is_image) { + _cairo_output_stream_printf (surface->final_stream, + " /BBox [ 0 0 1 1 ]\n"); + } else { + _cairo_output_stream_printf (surface->final_stream, + " /BBox [ %d %d %d %d ]\n", + form->required_extents.x, + form->required_extents.y, + form->required_extents.x + form->required_extents.width, + form->required_extents.y + form->required_extents.height); + } + + _cairo_output_stream_printf (surface->final_stream, + " /Matrix [ 1 0 0 1 0 0 ]\n" + " /PaintProc { pop cairo_paint_form-%d", + form->id); + + if (surface->ps_level == CAIRO_PS_LEVEL_3) { + _cairo_output_stream_printf (surface->final_stream, + " dup 0 setfileposition cvx exec"); + } + _cairo_output_stream_printf (surface->final_stream, + " } bind\n" + ">>\n" + "/Form defineresource pop\n"); + + _cairo_output_stream_printf (surface->final_stream, + "%%%%EndResource\n"); + if (status) + surface->base.status = status; +} static void _path_fixed_init_rectangle (cairo_path_fixed_t *path, @@ -3204,19 +3848,21 @@ static cairo_status_t _cairo_ps_surface_paint_surface (cairo_ps_surface_t *surface, - cairo_pattern_t *pattern, + const cairo_pattern_t *pattern, cairo_rectangle_int_t *extents, cairo_operator_t op, cairo_bool_t stencil_mask) { + cairo_rectangle_int_t src_surface_extents; + cairo_bool_t src_surface_bounded; + cairo_rectangle_int_t src_op_extents; + cairo_surface_t *source_surface; + double x_offset, y_offset; cairo_status_t status; - int width, height; cairo_matrix_t cairo_p2d, ps_p2d; cairo_path_fixed_t path; - double x_offset, y_offset; - cairo_surface_t *source; + cairo_emit_surface_params_t params; cairo_image_surface_t *image = NULL; - void *image_extra; status = _cairo_pdf_operators_flush (&surface->pdf_operators); if (unlikely (status)) @@ -3225,10 +3871,12 @@ status = _cairo_ps_surface_acquire_source_surface_from_pattern (surface, pattern, extents, - &width, &height, - &x_offset, &y_offset, - &source, - &image_extra); + &src_surface_extents, + &src_surface_bounded, + &src_op_extents, + &source_surface, + &x_offset, + &y_offset); if (unlikely (status)) return status; @@ -3237,16 +3885,18 @@ ((cairo_surface_pattern_t *)pattern)->surface->type == CAIRO_SURFACE_TYPE_IMAGE) { cairo_image_surface_t *img; - img = (cairo_image_surface_t *) source; + img = (cairo_image_surface_t *) source_surface; status = _cairo_ps_surface_create_padded_image_from_image (surface, img, &pattern->matrix, extents, - &width, &height, - &x_offset, &y_offset, - &image); + &image, + &src_surface_extents); if (unlikely (status)) goto release_source; + + x_offset = src_surface_extents.x; + y_offset = src_surface_extents.y; } _path_fixed_init_rectangle (&path, extents); @@ -3267,8 +3917,8 @@ "%% Fallback Image: x=%f y=%f w=%d h=%d ", -cairo_p2d.x0/x_scale, -cairo_p2d.y0/y_scale, - (int)(width/x_scale), - (int)(height/y_scale)); + (int)(src_surface_extents.width/x_scale), + (int)(src_surface_extents.height/y_scale)); if (x_scale == y_scale) { _cairo_output_stream_printf (surface->stream, "res=%fppi ", @@ -3281,14 +3931,16 @@ } _cairo_output_stream_printf (surface->stream, "size=%ld\n", - (long)width*height*3); + (long)src_surface_extents.width * src_surface_extents.height * 3); } else { if (op == CAIRO_OPERATOR_SOURCE) { _cairo_output_stream_printf (surface->stream, - "%d g 0 0 %f %f rectfill\n", + "%d g %d %d %d %d rectfill\n", surface->content == CAIRO_CONTENT_COLOR ? 0 : 1, - surface->width, - surface->height); + surface->surface_extents.x, + surface->surface_extents.y, + surface->surface_extents.width, + surface->surface_extents.height); } } @@ -3299,8 +3951,26 @@ ps_p2d = surface->cairo_to_ps; cairo_matrix_multiply (&ps_p2d, &cairo_p2d, &ps_p2d); cairo_matrix_translate (&ps_p2d, x_offset, y_offset); - cairo_matrix_translate (&ps_p2d, 0.0, height); - cairo_matrix_scale (&ps_p2d, 1.0, -1.0); + + params.src_surface = image ? &image->base : source_surface; + params.op = op; + params.src_surface_extents = &src_surface_extents; + params.src_surface_bounded = src_surface_bounded; + params.src_op_extents = &src_op_extents; + params.filter = pattern->filter; + params.stencil_mask = stencil_mask; + params.is_image = FALSE; + params.approx_size = 0; + + status = _cairo_ps_surface_emit_surface (surface, CAIRO_EMIT_SURFACE_ANALYZE, ¶ms); + if (unlikely (status)) + goto release_source; + + if (params.is_image) { + cairo_matrix_translate (&ps_p2d, 0.0, src_surface_extents.height); + cairo_matrix_scale (&ps_p2d, 1.0, -1.0); + cairo_matrix_scale (&ps_p2d, src_surface_extents.width, src_surface_extents.height); + } if (! _cairo_matrix_is_identity (&ps_p2d)) { _cairo_output_stream_printf (surface->stream, "[ "); @@ -3308,18 +3978,13 @@ _cairo_output_stream_printf (surface->stream, " ] concat\n"); } - status = _cairo_ps_surface_emit_surface (surface, - pattern, - image ? &image->base : source, - op, - width, height, - stencil_mask); + status = _cairo_ps_surface_emit_surface (surface, CAIRO_EMIT_SURFACE_EMIT, ¶ms); release_source: if (image) cairo_surface_destroy (&image->base); - _cairo_ps_surface_release_source_surface_from_pattern (surface, pattern, source, image_extra); + _cairo_ps_surface_release_source_surface_from_pattern (surface, pattern, source_surface); return status; } @@ -3331,15 +3996,17 @@ cairo_operator_t op) { cairo_status_t status; - int pattern_width = 0; /* squelch bogus compiler warning */ - int pattern_height = 0; /* squelch bogus compiler warning */ double xstep, ystep; + cairo_rectangle_int_t pattern_extents; + cairo_bool_t bounded; cairo_matrix_t cairo_p2d, ps_p2d; - cairo_bool_t old_use_string_datasource; + cairo_bool_t old_paint_proc; double x_offset, y_offset; - cairo_surface_t *source; + cairo_surface_t *source_surface; cairo_image_surface_t *image = NULL; - void *image_extra; + cairo_rectangle_int_t src_op_extents; + cairo_emit_surface_params_t params; + cairo_extend_t extend = cairo_pattern_get_extend (pattern); cairo_p2d = pattern->matrix; status = cairo_matrix_invert (&cairo_p2d); @@ -3349,32 +4016,38 @@ status = _cairo_ps_surface_acquire_source_surface_from_pattern (surface, pattern, extents, - &pattern_width, &pattern_height, - &x_offset, &y_offset, - &source, - &image_extra); + &pattern_extents, + &bounded, + &src_op_extents, + &source_surface, + &x_offset, &y_offset); if (unlikely (status)) return status; - if (pattern->extend == CAIRO_EXTEND_PAD) { + if (extend == CAIRO_EXTEND_PAD) { cairo_image_surface_t *img; - assert (source->type == CAIRO_SURFACE_TYPE_IMAGE); - img = (cairo_image_surface_t *) source; + assert (source_surface->type == CAIRO_SURFACE_TYPE_IMAGE); + img = (cairo_image_surface_t *) source_surface; status = _cairo_ps_surface_create_padded_image_from_image (surface, img, &pattern->matrix, extents, - &pattern_width, &pattern_height, - &x_offset, &y_offset, - &image); + &image, + &pattern_extents); if (unlikely (status)) goto release_source; } if (unlikely (status)) goto release_source; - switch (pattern->extend) { + if (!bounded) + { + extend = CAIRO_EXTEND_NONE; + _cairo_rectangle_intersect (&pattern_extents, &src_op_extents); + } + + switch (extend) { case CAIRO_EXTEND_PAD: case CAIRO_EXTEND_NONE: { @@ -3391,7 +4064,8 @@ * repeat visibly. */ double x1 = 0.0, y1 = 0.0; - double x2 = surface->width, y2 = surface->height; + double x2 = surface->surface_extents.width; + double y2 = surface->surface_extents.height; _cairo_matrix_transform_bounding_box (&pattern->matrix, &x1, &y1, &x2, &y2, NULL); @@ -3401,16 +4075,16 @@ * required an answer that's large enough, we don't really * care if it's not as tight as possible.*/ xstep = ystep = ceil ((x2 - x1) + (y2 - y1) + - pattern_width + pattern_height); + pattern_extents.width + pattern_extents.height); break; } case CAIRO_EXTEND_REPEAT: - xstep = pattern_width; - ystep = pattern_height; + xstep = pattern_extents.width; + ystep = pattern_extents.height; break; case CAIRO_EXTEND_REFLECT: - xstep = pattern_width*2; - ystep = pattern_height*2; + xstep = pattern_extents.width*2; + ystep = pattern_extents.height*2; break; /* All the rest (if any) should have been analyzed away, so these * cases should be unreachable. */ @@ -3421,27 +4095,49 @@ } _cairo_output_stream_printf (surface->stream, - "/CairoPattern {\n"); + "/CairoPattern {\n" + "q %d %d %d %d rectclip\n", + pattern_extents.x, pattern_extents.y, + pattern_extents.width, pattern_extents.height); + + if (extend == CAIRO_EXTEND_REPEAT || extend == CAIRO_EXTEND_REFLECT) + src_op_extents = pattern_extents; + + old_paint_proc = surface->paint_proc; + surface->paint_proc = TRUE; + params.src_surface = image ? &image->base : source_surface; + params.op = op; + params.src_surface_extents = &pattern_extents; + params.src_surface_bounded = bounded; + params.src_op_extents = &src_op_extents; + params.filter = pattern->filter; + params.stencil_mask = FALSE; + params.is_image = FALSE; + params.approx_size = 0; + status = _cairo_ps_surface_emit_surface (surface, CAIRO_EMIT_SURFACE_ANALYZE, ¶ms); + if (unlikely (status)) + goto release_source; + + if (params.is_image) { + _cairo_output_stream_printf (surface->stream, + "[ %d 0 0 %d 0 0 ] concat\n", + pattern_extents.width, pattern_extents.height); + } - old_use_string_datasource = surface->use_string_datasource; - surface->use_string_datasource = TRUE; if (op == CAIRO_OPERATOR_SOURCE) { _cairo_output_stream_printf (surface->stream, - "%d g 0 0 %f %f rectfill\n", + "%d g %d %d %f %f rectfill\n", surface->content == CAIRO_CONTENT_COLOR ? 0 : 1, + pattern_extents.x, pattern_extents.y, xstep, ystep); } - status = _cairo_ps_surface_emit_surface (surface, - pattern, - image ? &image->base : source, - op, - pattern_width, pattern_height, FALSE); + + status = _cairo_ps_surface_emit_surface (surface, CAIRO_EMIT_SURFACE_EMIT, ¶ms); if (unlikely (status)) goto release_source; - surface->use_string_datasource = old_use_string_datasource; _cairo_output_stream_printf (surface->stream, - "} bind def\n"); + " Q } bind def\n"); _cairo_output_stream_printf (surface->stream, "<< /PatternType 1\n" @@ -3451,20 +4147,43 @@ " /XStep %f /YStep %f\n", xstep, ystep); - if (pattern->extend == CAIRO_EXTEND_REFLECT) { + if (extend == CAIRO_EXTEND_REFLECT) { + cairo_matrix_t mat; + _cairo_output_stream_printf (surface->stream, - " /BBox [0 0 %d %d]\n" + " /BBox [%d %d %d %d]\n" " /PaintProc {\n" - " pop CairoPattern\n" - " [-1 0 0 1 %d 0] concat CairoPattern\n" - " [ 1 0 0 -1 0 %d] concat CairoPattern\n" - " [-1 0 0 1 %d 0] concat CairoPattern\n" - " CairoPattern\n" - " } bind\n", - pattern_width*2, pattern_height*2, - pattern_width*2, - pattern_height*2, - pattern_width*2); + " pop CairoPattern\n", + pattern_extents.x, + pattern_extents.y, + pattern_extents.x + pattern_extents.width*2, + pattern_extents.y + pattern_extents.height*2); + + cairo_matrix_init_translate (&mat, pattern_extents.x, pattern_extents.y); + cairo_matrix_scale (&mat, -1, 1); + cairo_matrix_translate (&mat, -2*pattern_extents.width, 0); + cairo_matrix_translate (&mat, -pattern_extents.x, -pattern_extents.y); + _cairo_output_stream_printf (surface->stream, " q ["); + _cairo_output_stream_print_matrix (surface->stream, &mat); + _cairo_output_stream_printf (surface->stream, "] concat CairoPattern Q\n"); + + cairo_matrix_init_translate (&mat, pattern_extents.x, pattern_extents.y); + cairo_matrix_scale (&mat, 1, -1); + cairo_matrix_translate (&mat, 0, -2*pattern_extents.height); + cairo_matrix_translate (&mat, -pattern_extents.x, -pattern_extents.y); + _cairo_output_stream_printf (surface->stream, " q ["); + _cairo_output_stream_print_matrix (surface->stream, &mat); + _cairo_output_stream_printf (surface->stream, "] concat CairoPattern Q\n"); + + cairo_matrix_init_translate (&mat, pattern_extents.x, pattern_extents.y); + cairo_matrix_scale (&mat, -1, -1); + cairo_matrix_translate (&mat, -2*pattern_extents.width, -2*pattern_extents.height); + cairo_matrix_translate (&mat, -pattern_extents.x, -pattern_extents.y); + _cairo_output_stream_printf (surface->stream, " q ["); + _cairo_output_stream_print_matrix (surface->stream, &mat); + _cairo_output_stream_printf (surface->stream, "] concat CairoPattern Q\n"); + + _cairo_output_stream_printf (surface->stream, " } bind\n"); } else { if (op == CAIRO_OPERATOR_SOURCE) { _cairo_output_stream_printf (surface->stream, @@ -3472,8 +4191,11 @@ xstep, ystep); } else { _cairo_output_stream_printf (surface->stream, - " /BBox [0 0 %d %d]\n", - pattern_width, pattern_height); + " /BBox [%d %d %d %d]\n", + pattern_extents.x, + pattern_extents.y, + pattern_extents.x + pattern_extents.width, + pattern_extents.y + pattern_extents.height); } _cairo_output_stream_printf (surface->stream, " /PaintProc { pop CairoPattern }\n"); @@ -3488,11 +4210,13 @@ assert (status == CAIRO_STATUS_SUCCESS); cairo_matrix_init_identity (&ps_p2d); - cairo_matrix_translate (&ps_p2d, 0.0, surface->height); - cairo_matrix_scale (&ps_p2d, 1.0, -1.0); cairo_matrix_multiply (&ps_p2d, &cairo_p2d, &ps_p2d); - cairo_matrix_translate (&ps_p2d, 0.0, pattern_height); - cairo_matrix_scale (&ps_p2d, 1.0, -1.0); + cairo_matrix_translate (&ps_p2d, x_offset, y_offset); + if (((cairo_surface_pattern_t *)pattern)->surface->type != CAIRO_SURFACE_TYPE_RECORDING) + { + cairo_matrix_translate (&ps_p2d, 0.0, pattern_extents.height); + cairo_matrix_scale (&ps_p2d, 1.0, -1.0); + } _cairo_output_stream_printf (surface->stream, "[ "); _cairo_output_stream_print_matrix (surface->stream, &ps_p2d); @@ -3500,11 +4224,13 @@ " ]\n" "makepattern setpattern\n"); + surface->paint_proc = old_paint_proc; + release_source: if (image) cairo_surface_destroy (&image->base); - _cairo_ps_surface_release_source_surface_from_pattern (surface, pattern, source, image_extra); + _cairo_ps_surface_release_source_surface_from_pattern (surface, pattern, source_surface); return status; } @@ -4087,7 +4813,7 @@ case CAIRO_PATTERN_TYPE_SURFACE: case CAIRO_PATTERN_TYPE_RASTER_SOURCE: return _cairo_ps_surface_paint_surface (surface, - (cairo_pattern_t *)source, + source, extents, op, stencil_mask); @@ -4096,8 +4822,8 @@ case CAIRO_PATTERN_TYPE_RADIAL: case CAIRO_PATTERN_TYPE_MESH: return _cairo_ps_surface_paint_gradient (surface, - source, - extents); + source, + extents); case CAIRO_PATTERN_TYPE_SOLID: default: @@ -4135,17 +4861,10 @@ { cairo_ps_surface_t *surface = abstract_surface; - rectangle->x = 0; - rectangle->y = 0; - - /* XXX: The conversion to integers here is pretty bogus, (not to - * mention the aribitray limitation of width to a short(!). We - * may need to come up with a better interface for get_extents. - */ - rectangle->width = ceil (surface->width); - rectangle->height = ceil (surface->height); + if (surface->surface_bounded) + *rectangle = surface->surface_extents; - return TRUE; + return surface->surface_bounded; } static void @@ -4229,8 +4948,11 @@ if (unlikely (status)) goto cleanup_composite; - _cairo_output_stream_printf (stream, "0 0 %f %f rectfill\n", - surface->width, surface->height); + _cairo_output_stream_printf (stream, "%d %d %d %d rectfill\n", + surface->surface_extents.x, + surface->surface_extents.y, + surface->surface_extents.width, + surface->surface_extents.height); } cleanup_composite: @@ -4525,7 +5247,7 @@ return _cairo_ps_supported_mime_types; } -static void +static cairo_int_status_t _cairo_ps_surface_set_paginated_mode (void *abstract_surface, cairo_paginated_mode_t paginated_mode) { @@ -4534,34 +5256,57 @@ surface->paginated_mode = paginated_mode; - if (surface->clipper.clip != NULL) { - status = _cairo_pdf_operators_flush (&surface->pdf_operators); + if (paginated_mode == CAIRO_PAGINATED_MODE_RENDER) { + surface->surface_extents.x = 0; + surface->surface_extents.y = 0; + surface->surface_extents.width = ceil (surface->width); + surface->surface_extents.height = ceil (surface->height); - _cairo_output_stream_printf (surface->stream, "Q q\n"); - _cairo_surface_clipper_reset (&surface->clipper); + if (surface->clipper.clip != NULL) + { + status = _cairo_pdf_operators_flush (&surface->pdf_operators); + + _cairo_output_stream_printf (surface->stream, "Q q\n"); + _cairo_surface_clipper_reset (&surface->clipper); + } } + + return CAIRO_STATUS_SUCCESS; } static cairo_int_status_t _cairo_ps_surface_set_bounding_box (void *abstract_surface, - cairo_box_t *bbox) + cairo_box_t *analysis_bbox) { cairo_ps_surface_t *surface = abstract_surface; int i, num_comments; char **comments; - int x1, y1, x2, y2; cairo_bool_t has_page_media, has_page_bbox; const char *page_media; + cairo_rectangle_int_t page_bbox; + cairo_point_int_t bbox_p1, bbox_p2; /* in PS coordinates */ + + _cairo_box_round_to_rectangle (analysis_bbox, &page_bbox); - x1 = floor (_cairo_fixed_to_double (bbox->p1.x)); - y1 = floor (surface->height - _cairo_fixed_to_double (bbox->p2.y)); - x2 = ceil (_cairo_fixed_to_double (bbox->p2.x)); - y2 = ceil (surface->height - _cairo_fixed_to_double (bbox->p1.y)); - - surface->page_bbox.x = x1; - surface->page_bbox.y = y1; - surface->page_bbox.width = x2 - x1; - surface->page_bbox.height = y2 - y1; + /* convert to PS coordinates */ + bbox_p1.x = page_bbox.x; + bbox_p1.y = ceil(surface->height) - (page_bbox.y + page_bbox.height); + bbox_p2.x = page_bbox.x + page_bbox.width; + bbox_p2.y = ceil(surface->height) - page_bbox.y; + + if (surface->num_pages == 1) { + surface->document_bbox_p1 = bbox_p1; + surface->document_bbox_p2 = bbox_p2; + } else { + if (bbox_p1.x < surface->document_bbox_p1.x) + surface->document_bbox_p1.x = bbox_p1.x; + if (bbox_p1.y < surface->document_bbox_p1.y) + surface->document_bbox_p1.y = bbox_p1.y; + if (bbox_p2.x < surface->document_bbox_p2.x) + surface->document_bbox_p2.x = bbox_p2.x; + if (bbox_p2.y < surface->document_bbox_p2.y) + surface->document_bbox_p2.y = bbox_p2.y; + } _cairo_output_stream_printf (surface->stream, "%%%%Page: %d %d\n", @@ -4602,7 +5347,10 @@ if (!has_page_bbox) { _cairo_output_stream_printf (surface->stream, "%%%%PageBoundingBox: %d %d %d %d\n", - x1, y1, x2, y2); + bbox_p1.x, + bbox_p1.y, + bbox_p2.x, + bbox_p2.y); } if (!surface->eps) { @@ -4614,27 +5362,14 @@ _cairo_output_stream_printf (surface->stream, "%%%%EndPageSetup\n" - "q %d %d %d %d rectclip q\n", - surface->page_bbox.x, - surface->page_bbox.y, - surface->page_bbox.width, - surface->page_bbox.height); + "q %d %d %d %d rectclip\n" + "1 0 0 -1 0 %f cm q\n", + bbox_p1.x, + bbox_p1.y, + bbox_p2.x - bbox_p1.x, + bbox_p2.y - bbox_p1.y, + ceil(surface->height)); - if (surface->num_pages == 1) { - surface->bbox_x1 = x1; - surface->bbox_y1 = y1; - surface->bbox_x2 = x2; - surface->bbox_y2 = y2; - } else { - if (x1 < surface->bbox_x1) - surface->bbox_x1 = x1; - if (y1 < surface->bbox_y1) - surface->bbox_y1 = y1; - if (x2 > surface->bbox_x2) - surface->bbox_x2 = x2; - if (y2 > surface->bbox_y2) - surface->bbox_y2 = y2; - } surface->current_pattern_is_solid_color = FALSE; _cairo_pdf_operators_reset (&surface->pdf_operators); diff -Nru cairo-1.14.6/src/cairo-ps-surface-private.h cairo-1.15.10/src/cairo-ps-surface-private.h --- cairo-1.14.6/src/cairo-ps-surface-private.h 2015-10-27 21:04:21.000000000 +0000 +++ cairo-1.15.10/src/cairo-ps-surface-private.h 2017-12-07 02:14:36.000000000 +0000 @@ -49,6 +49,19 @@ #include +typedef struct _cairo_ps_form { + cairo_hash_entry_t base; + unsigned char *unique_id; + unsigned long unique_id_length; + cairo_bool_t is_image; + int id; + cairo_surface_t *src_surface; + cairo_filter_t filter; + + /* Union of source extents required for all operations using this form */ + cairo_rectangle_int_t required_extents; +} cairo_ps_form_t; + typedef struct cairo_ps_surface { cairo_surface_t base; @@ -63,14 +76,15 @@ cairo_output_stream_t *stream; cairo_bool_t eps; + cairo_bool_t contains_eps; cairo_content_t content; double width; double height; - cairo_rectangle_int_t page_bbox; - int bbox_x1, bbox_y1, bbox_x2, bbox_y2; + cairo_point_int_t document_bbox_p1, document_bbox_p2; /* in PS coordinates */ + cairo_rectangle_int_t surface_extents; + cairo_bool_t surface_bounded; cairo_matrix_t cairo_to_ps; - - cairo_bool_t use_string_datasource; + cairo_bool_t paint_proc; /* TRUE if surface will be used in a PaintProc */ cairo_bool_t current_pattern_is_solid_color; cairo_color_t current_color; @@ -90,6 +104,8 @@ cairo_array_t dsc_setup_comments; cairo_array_t dsc_page_setup_comments; + cairo_array_t recording_surf_stack; + cairo_array_t *dsc_comment_target; cairo_ps_level_t ps_level; @@ -99,6 +115,9 @@ cairo_pdf_operators_t pdf_operators; cairo_surface_t *paginated_surface; + cairo_hash_table_t *forms; + int num_forms; + long total_form_size; } cairo_ps_surface_t; #endif /* CAIRO_PS_SURFACE_PRIVATE_H */ diff -Nru cairo-1.14.6/src/cairo-qt-surface.cpp cairo-1.15.10/src/cairo-qt-surface.cpp --- cairo-1.14.6/src/cairo-qt-surface.cpp 2015-10-27 21:04:21.000000000 +0000 +++ cairo-1.15.10/src/cairo-qt-surface.cpp 2017-12-07 02:14:36.000000000 +0000 @@ -1216,7 +1216,7 @@ cairo_clip_t clip, old_clip = qs->clipper.clip; - _cairo_clip_init_copy (&clip, &qs->clipper.clip); + qs->clipper.clip = _cairo_clip_copy (&clip); status = (cairo_int_status_t) _cairo_clip_clip (&clip, path, fill_rule, diff -Nru cairo-1.14.6/src/cairo-quartz-font.c cairo-1.15.10/src/cairo-quartz-font.c --- cairo-1.14.6/src/cairo-quartz-font.c 2015-10-27 21:04:21.000000000 +0000 +++ cairo-1.15.10/src/cairo-quartz-font.c 2017-12-07 02:14:36.000000000 +0000 @@ -81,6 +81,14 @@ 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; + +/* CTFontCreateWithGraphicsFont is not available until 10.5 */ +typedef const struct __CTFontDescriptor *CTFontDescriptorRef; +static CTFontRef (*CTFontCreateWithGraphicsFontPtr) (CGFontRef, CGFloat, const CGAffineTransform*, CTFontDescriptorRef) = NULL; +static CGPathRef (*CTFontCreatePathForGlyphPtr) (CTFontRef, CGGlyph, CGAffineTransform *) = NULL; + /* CGFontGetHMetrics isn't public, but the other functions are public/present in 10.5 */ typedef struct { int ascent; @@ -98,6 +106,10 @@ static cairo_bool_t _cairo_quartz_font_symbol_lookup_done = FALSE; static cairo_bool_t _cairo_quartz_font_symbols_present = FALSE; +/* Defined in 10.11 */ +#define CGGLYPH_MAX ((CGGlyph) 0xFFFE) /* kCGFontIndexMax */ +#define CGGLYPH_INVALID ((CGGlyph) 0xFFFF) /* kCGFontIndexInvalid */ + static void quartz_font_ensure_symbols(void) { @@ -125,6 +137,11 @@ CGFontGetUnitsPerEmPtr = dlsym(RTLD_DEFAULT, "CGFontGetUnitsPerEm"); CGFontGetGlyphAdvancesPtr = dlsym(RTLD_DEFAULT, "CGFontGetGlyphAdvances"); + CTFontCreateWithGraphicsFontPtr = dlsym(RTLD_DEFAULT, "CTFontCreateWithGraphicsFont"); + CTFontCreatePathForGlyphPtr = dlsym(RTLD_DEFAULT, "CTFontCreatePathForGlyph"); + if (!CTFontCreateWithGraphicsFontPtr || !CTFontCreatePathForGlyphPtr) + CGFontGetGlyphPathPtr = dlsym(RTLD_DEFAULT, "CGFontGetGlyphPath"); + CGFontGetHMetricsPtr = dlsym(RTLD_DEFAULT, "CGFontGetHMetrics"); CGFontGetAscentPtr = dlsym(RTLD_DEFAULT, "CGFontGetAscent"); CGFontGetDescentPtr = dlsym(RTLD_DEFAULT, "CGFontGetDescent"); @@ -140,6 +157,7 @@ CGFontGetGlyphsForUnicharsPtr && CGFontGetUnitsPerEmPtr && CGFontGetGlyphAdvancesPtr && + ((CTFontCreateWithGraphicsFontPtr && CTFontCreatePathForGlyphPtr) || CGFontGetGlyphPathPtr) && (CGFontGetHMetricsPtr || (CGFontGetAscentPtr && CGFontGetDescentPtr && CGFontGetLeadingPtr))) _cairo_quartz_font_symbols_present = TRUE; @@ -389,14 +407,10 @@ { } -#define INVALID_GLYPH 0x00 - static inline CGGlyph _cairo_quartz_scaled_glyph_index (cairo_scaled_glyph_t *scaled_glyph) { unsigned long index = _cairo_scaled_glyph_index (scaled_glyph); - if (index > 0xffff) - return INVALID_GLYPH; - return (CGGlyph) index; + return index <= CGGLYPH_MAX ? index : CGGLYPH_INVALID; } static cairo_int_status_t @@ -413,7 +427,7 @@ double emscale = CGFontGetUnitsPerEmPtr (font_face->cgFont); double xmin, ymin, xmax, ymax; - if (glyph == INVALID_GLYPH) + if (unlikely (glyph == CGGLYPH_INVALID)) goto FAIL; if (!CGFontGetGlyphAdvancesPtr (font_face->cgFont, &glyph, 1, &advance) || @@ -545,10 +559,9 @@ CGGlyph glyph = _cairo_quartz_scaled_glyph_index (scaled_glyph); CGAffineTransform textMatrix; CGPathRef glyphPath; - CTFontRef ctFont; cairo_path_fixed_t *path; - if (glyph == INVALID_GLYPH) { + if (unlikely (glyph == CGGLYPH_INVALID)) { _cairo_scaled_glyph_set_path (scaled_glyph, &font->base, _cairo_path_fixed_create()); return CAIRO_STATUS_SUCCESS; } @@ -560,9 +573,14 @@ -font->base.scale.yy, 0, 0); - ctFont = CTFontCreateWithGraphicsFont (font_face->cgFont, 1.0, NULL, NULL); - glyphPath = CTFontCreatePathForGlyph (ctFont, glyph, &textMatrix); - CFRelease (ctFont); + if (CTFontCreateWithGraphicsFontPtr && CTFontCreatePathForGlyphPtr) { + CTFontRef ctFont = CTFontCreateWithGraphicsFontPtr (font_face->cgFont, 1.0, NULL, NULL); + glyphPath = CTFontCreatePathForGlyphPtr (ctFont, glyph, &textMatrix); + CFRelease (ctFont); + } else { + glyphPath = CGFontGetGlyphPathPtr (font_face->cgFont, &textMatrix, 0, glyph); + } + if (!glyphPath) return CAIRO_INT_STATUS_UNSUPPORTED; @@ -609,7 +627,7 @@ * Maybe we should draw a better missing-glyph slug or something, * but this is ok for now. */ - if (glyph == INVALID_GLYPH) { + if (unlikely (glyph == CGGLYPH_INVALID)) { surface = (cairo_image_surface_t*) cairo_image_surface_create (CAIRO_FORMAT_A8, 2, 2); status = cairo_surface_status ((cairo_surface_t *) surface); if (status) @@ -748,12 +766,13 @@ { cairo_quartz_scaled_font_t *font = (cairo_quartz_scaled_font_t*) abstract_font; cairo_quartz_font_face_t *ffont = _cairo_quartz_scaled_to_face(font); - UniChar u = (UniChar) ucs4; - CGGlyph glyph; + CGGlyph glyph[2]; + UniChar utf16[2]; - CGFontGetGlyphsForUnicharsPtr (ffont->cgFont, &u, &glyph, 1); + int len = _cairo_ucs4_to_utf16 (ucs4, utf16); + CGFontGetGlyphsForUnicharsPtr (ffont->cgFont, utf16, glyph, len); - return glyph; + return glyph[0]; } static cairo_int_status_t diff -Nru cairo-1.14.6/src/cairo-quartz-image-surface.c cairo-1.15.10/src/cairo-quartz-image-surface.c --- cairo-1.14.6/src/cairo-quartz-image-surface.c 2015-10-27 21:04:30.000000000 +0000 +++ cairo-1.15.10/src/cairo-quartz-image-surface.c 2017-12-07 02:14:36.000000000 +0000 @@ -361,7 +361,8 @@ _cairo_surface_init (&qisurf->base, &cairo_quartz_image_surface_backend, NULL, /* device */ - _cairo_content_from_format (format)); + _cairo_content_from_format (format), + FALSE); /* is_vector */ qisurf->width = width; qisurf->height = height; diff -Nru cairo-1.14.6/src/cairo-quartz-private.h cairo-1.15.10/src/cairo-quartz-private.h --- cairo-1.14.6/src/cairo-quartz-private.h 2015-10-27 21:04:22.000000000 +0000 +++ cairo-1.15.10/src/cairo-quartz-private.h 2017-12-07 02:14:36.000000000 +0000 @@ -44,12 +44,13 @@ #include "cairo-quartz.h" #include "cairo-surface-clipper-private.h" -#ifdef CGFLOAT_DEFINED -typedef CGFloat cairo_quartz_float_t; -#else -typedef float cairo_quartz_float_t; +#ifndef CGFLOAT_DEFINED +/* On 10.4, Quartz APIs used float instead of CGFloat */ +typedef float CGFloat; #endif +typedef CGFloat cairo_quartz_float_t; + typedef enum { DO_DIRECT, DO_SHADING, @@ -57,6 +58,9 @@ DO_TILED_IMAGE } cairo_quartz_action_t; +/* define CTFontRef for pre-10.5 SDKs */ +typedef const struct __CTFont *CTFontRef; + typedef struct cairo_quartz_surface { cairo_surface_t base; diff -Nru cairo-1.14.6/src/cairo-quartz-surface.c cairo-1.15.10/src/cairo-quartz-surface.c --- cairo-1.14.6/src/cairo-quartz-surface.c 2015-10-27 21:04:30.000000000 +0000 +++ cairo-1.15.10/src/cairo-quartz-surface.c 2017-12-07 02:14:36.000000000 +0000 @@ -508,9 +508,13 @@ /* Quartz doesn't support SATURATE at all. COLOR_DODGE and * COLOR_BURN in Quartz follow the ISO32000 definition, but cairo - * uses the definition from the Adobe Supplement. + * uses the definition from the Adobe Supplement. Also fallback + * on SOFT_LIGHT and HSL_HUE, because their results are + * significantly different from those provided by pixman. */ if (op == CAIRO_OPERATOR_SATURATE || + op == CAIRO_OPERATOR_SOFT_LIGHT || + op == CAIRO_OPERATOR_HSL_HUE || op == CAIRO_OPERATOR_COLOR_DODGE || op == CAIRO_OPERATOR_COLOR_BURN) { @@ -605,14 +609,25 @@ static inline CGInterpolationQuality _cairo_quartz_filter_to_quartz (cairo_filter_t filter) { + /* The CGInterpolationQuality enumeration values seem to have the + * following meaning: + * - kCGInterpolationNone: nearest neighbor + * - kCGInterpolationLow: bilinear + * - kCGInterpolationHigh: bicubic? Lanczos? + */ + switch (filter) { case CAIRO_FILTER_NEAREST: case CAIRO_FILTER_FAST: return kCGInterpolationNone; case CAIRO_FILTER_BEST: + return kCGInterpolationHigh; + case CAIRO_FILTER_GOOD: case CAIRO_FILTER_BILINEAR: + return kCGInterpolationLow; + case CAIRO_FILTER_GAUSSIAN: return kCGInterpolationDefault; @@ -2247,7 +2262,8 @@ _cairo_surface_init (&surface->base, &cairo_quartz_surface_backend, NULL, /* device */ - content); + content, + FALSE); /* is_vector */ _cairo_surface_clipper_init (&surface->clipper, _cairo_quartz_surface_clipper_intersect_clip_path); diff -Nru cairo-1.14.6/src/cairo-recording-surface.c cairo-1.15.10/src/cairo-recording-surface.c --- cairo-1.14.6/src/cairo-recording-surface.c 2015-10-27 21:23:00.000000000 +0000 +++ cairo-1.15.10/src/cairo-recording-surface.c 2017-12-07 02:14:36.000000000 +0000 @@ -393,7 +393,8 @@ _cairo_surface_init (&surface->base, &cairo_recording_surface_backend, NULL, /* device */ - content); + content, + TRUE); /* is_vector */ surface->unbounded = TRUE; @@ -482,7 +483,16 @@ cairo_scaled_font_destroy (command->show_text_glyphs.scaled_font); break; - default: + case CAIRO_COMMAND_TAG: + free (command->tag.tag_name); + if (command->tag.begin) { + free (command->tag.attributes); + _cairo_pattern_fini (&command->tag.source.base); + _cairo_stroke_style_fini (&command->tag.style); + } + break; + + default: ASSERT_NOT_REACHED; } @@ -556,7 +566,7 @@ if (unlikely (proxy == NULL)) return _cairo_surface_create_in_error (CAIRO_STATUS_NO_MEMORY); - _cairo_surface_init (&proxy->base, &proxy_backend, NULL, image->content); + _cairo_surface_init (&proxy->base, &proxy_backend, NULL, image->content, FALSE); proxy->image = image; _cairo_surface_attach_snapshot (source, &proxy->base, NULL); @@ -683,21 +693,6 @@ _cairo_array_init (&surface->commands, sizeof (cairo_command_t *)); } -static cairo_bool_t -is_identity_recording_pattern (const cairo_pattern_t *pattern) -{ - cairo_surface_t *surface; - - if (pattern->type != CAIRO_PATTERN_TYPE_SURFACE) - return FALSE; - - if (!_cairo_matrix_is_identity(&pattern->matrix)) - return FALSE; - - surface = ((cairo_surface_pattern_t *)pattern)->surface; - return surface->backend->type == CAIRO_SURFACE_TYPE_RECORDING; -} - static cairo_int_status_t _cairo_recording_surface_paint (void *abstract_surface, cairo_operator_t op, @@ -724,10 +719,6 @@ (surface->base.is_clear || _cairo_pattern_is_opaque_solid (source))))) { _cairo_recording_surface_reset (surface); - if (is_identity_recording_pattern (source)) { - cairo_surface_t *src = ((cairo_surface_pattern_t *)source)->surface; - return _cairo_recording_surface_replay (src, &surface->base); - } } status = _cairo_composite_rectangles_init_for_paint (&composite, @@ -1094,6 +1085,90 @@ return status; } +static cairo_int_status_t +_cairo_recording_surface_tag (void *abstract_surface, + cairo_bool_t begin, + const char *tag_name, + const char *attributes, + const cairo_pattern_t *source, + const cairo_stroke_style_t *style, + const cairo_matrix_t *ctm, + const cairo_matrix_t *ctm_inverse, + const cairo_clip_t *clip) +{ + cairo_status_t status; + cairo_recording_surface_t *surface = abstract_surface; + cairo_command_tag_t *command; + cairo_composite_rectangles_t composite; + + TRACE ((stderr, "%s: surface=%d\n", __FUNCTION__, surface->base.unique_id)); + + status = _cairo_composite_rectangles_init_for_paint (&composite, + &surface->base, + CAIRO_OPERATOR_SOURCE, + source ? source : &_cairo_pattern_black.base, + clip); + if (unlikely (status)) + return status; + + command = calloc (1, sizeof (cairo_command_tag_t)); + if (unlikely (command == NULL)) { + status = _cairo_error (CAIRO_STATUS_NO_MEMORY); + goto CLEANUP_COMPOSITE; + } + + status = _command_init (surface, + &command->header, CAIRO_COMMAND_TAG, CAIRO_OPERATOR_SOURCE, + &composite); + if (unlikely (status)) + goto CLEANUP_COMMAND; + + command->begin = begin; + command->tag_name = strdup (tag_name); + if (begin) { + if (attributes) + command->attributes = strdup (attributes); + + status = _cairo_pattern_init_snapshot (&command->source.base, source); + if (unlikely (status)) + goto CLEANUP_STRINGS; + + status = _cairo_stroke_style_init_copy (&command->style, style); + if (unlikely (status)) + goto CLEANUP_SOURCE; + + command->ctm = *ctm; + command->ctm_inverse = *ctm_inverse; + } + + status = _cairo_recording_surface_commit (surface, &command->header); + if (unlikely (status)) { + if (begin) + goto CLEANUP_STRINGS; + else + goto CLEANUP_STYLE; + } + + _cairo_recording_surface_destroy_bbtree (surface); + + _cairo_composite_rectangles_fini (&composite); + return CAIRO_STATUS_SUCCESS; + + CLEANUP_STYLE: + _cairo_stroke_style_fini (&command->style); + CLEANUP_SOURCE: + _cairo_pattern_fini (&command->source.base); + CLEANUP_STRINGS: + free (command->tag_name); + free (command->attributes); + CLEANUP_COMMAND: + _cairo_clip_destroy (command->header.clip); + free (command); + CLEANUP_COMPOSITE: + _cairo_composite_rectangles_fini (&composite); + return status; +} + static void _command_init_copy (cairo_recording_surface_t *surface, cairo_command_header_t *dst, @@ -1360,6 +1435,63 @@ } static cairo_status_t +_cairo_recording_surface_copy__tag (cairo_recording_surface_t *surface, + const cairo_command_t *src) +{ + cairo_command_tag_t *command; + cairo_status_t status; + + command = calloc (1, sizeof (*command)); + if (unlikely (command == NULL)) { + status = _cairo_error (CAIRO_STATUS_NO_MEMORY); + goto err; + } + + _command_init_copy (surface, &command->header, &src->header); + + command->begin = src->tag.begin; + command->tag_name = strdup (src->tag.tag_name); + if (src->tag.begin) { + if (src->tag.attributes) + command->attributes = strdup (src->tag.attributes); + + status = _cairo_pattern_init_copy (&command->source.base, + &src->stroke.source.base); + if (unlikely (status)) + goto err_command; + + status = _cairo_stroke_style_init_copy (&command->style, + &src->stroke.style); + if (unlikely (status)) + goto err_source; + + command->ctm = src->stroke.ctm; + command->ctm_inverse = src->stroke.ctm_inverse; + } + + status = _cairo_recording_surface_commit (surface, &command->header); + if (unlikely (status)) { + if (src->tag.begin) + goto err_command; + else + goto err_style; + } + + return CAIRO_STATUS_SUCCESS; + +err_style: + _cairo_stroke_style_fini (&command->style); +err_source: + _cairo_pattern_fini (&command->source.base); +err_command: + free(command->tag_name); + free(command->attributes); + free(command); +err: + return status; +} + +static cairo_status_t _cairo_recording_surface_copy (cairo_recording_surface_t *dst, cairo_recording_surface_t *src) { @@ -1393,6 +1525,10 @@ status = _cairo_recording_surface_copy__glyphs (dst, command); break; + case CAIRO_COMMAND_TAG: + status = _cairo_recording_surface_copy__tag (dst, command); + break; + default: ASSERT_NOT_REACHED; } @@ -1431,7 +1567,8 @@ _cairo_surface_init (&surface->base, &cairo_recording_surface_backend, NULL, /* device */ - other->base.content); + other->base.content, + other->base.is_vector); surface->extents_pixels = other->extents_pixels; surface->extents = other->extents; @@ -1507,6 +1644,8 @@ NULL, _cairo_recording_surface_has_show_text_glyphs, _cairo_recording_surface_show_text_glyphs, + NULL, /* get_supported_mime_types */ + _cairo_recording_surface_tag, }; cairo_int_status_t @@ -1571,6 +1710,9 @@ break; } + case CAIRO_COMMAND_TAG: + break; + default: ASSERT_NOT_REACHED; } @@ -1674,14 +1816,14 @@ const cairo_matrix_t *surface_transform, cairo_surface_t *target, const cairo_clip_t *target_clip, + cairo_bool_t surface_is_unbounded, cairo_recording_replay_type_t type, cairo_recording_region_type_t region) { cairo_surface_wrapper_t wrapper; cairo_command_t **elements; cairo_bool_t replay_all = - type == CAIRO_RECORDING_REPLAY && - region == CAIRO_RECORDING_REGION_ALL; + type == CAIRO_RECORDING_CREATE_REGIONS || region == CAIRO_RECORDING_REGION_ALL; cairo_int_status_t status = CAIRO_STATUS_SUCCESS; cairo_rectangle_int_t extents; cairo_bool_t use_indices = FALSE; @@ -1706,7 +1848,7 @@ if (surface_extents) _cairo_surface_wrapper_intersect_extents (&wrapper, surface_extents); r = &_cairo_unbounded_rectangle; - if (! surface->unbounded) { + if (! surface->unbounded && !surface_is_unbounded) { _cairo_surface_wrapper_intersect_extents (&wrapper, &surface->extents); r = &surface->extents; } @@ -1714,7 +1856,7 @@ _cairo_surface_wrapper_set_clip (&wrapper, target_clip); /* Compute the extents of the target clip in recorded device space */ - if (! _cairo_surface_wrapper_get_target_extents (&wrapper, &extents)) + if (! _cairo_surface_wrapper_get_target_extents (&wrapper, surface_is_unbounded, &extents)) goto done; surface->has_bilevel_alpha = TRUE; @@ -1868,11 +2010,23 @@ } break; + case CAIRO_COMMAND_TAG: + status = _cairo_surface_wrapper_tag (&wrapper, + command->tag.begin, + command->tag.tag_name, + command->tag.attributes, + &command->tag.source.base, + &command->tag.style, + &command->tag.ctm, + &command->tag.ctm_inverse, + command->header.clip); + break; + default: ASSERT_NOT_REACHED; } - if (type == CAIRO_RECORDING_CREATE_REGIONS) { + if (type == CAIRO_RECORDING_CREATE_REGIONS && command->header.region != CAIRO_RECORDING_REGION_NATIVE) { if (status == CAIRO_INT_STATUS_SUCCESS) { command->header.region = CAIRO_RECORDING_REGION_NATIVE; } else if (status == CAIRO_INT_STATUS_IMAGE_FALLBACK) { @@ -1975,6 +2129,18 @@ command->header.clip); break; + case CAIRO_COMMAND_TAG: + status = _cairo_surface_wrapper_tag (&wrapper, + command->tag.begin, + command->tag.tag_name, + command->tag.attributes, + &command->tag.source.base, + &command->tag.style, + &command->tag.ctm, + &command->tag.ctm_inverse, + command->header.clip); + break; + default: ASSERT_NOT_REACHED; } @@ -1999,7 +2165,7 @@ cairo_surface_t *target) { return _cairo_recording_surface_replay_internal ((cairo_recording_surface_t *) surface, NULL, NULL, - target, NULL, + target, NULL, FALSE, CAIRO_RECORDING_REPLAY, CAIRO_RECORDING_REGION_ALL); } @@ -2011,7 +2177,7 @@ const cairo_clip_t *target_clip) { return _cairo_recording_surface_replay_internal ((cairo_recording_surface_t *) surface, NULL, surface_transform, - target, target_clip, + target, target_clip, FALSE, CAIRO_RECORDING_REPLAY, CAIRO_RECORDING_REGION_ALL); } @@ -2024,10 +2190,13 @@ */ cairo_status_t _cairo_recording_surface_replay_and_create_regions (cairo_surface_t *surface, - cairo_surface_t *target) + const cairo_matrix_t *surface_transform, + cairo_surface_t *target, + cairo_bool_t surface_is_unbounded) { - return _cairo_recording_surface_replay_internal ((cairo_recording_surface_t *) surface, NULL, NULL, + return _cairo_recording_surface_replay_internal ((cairo_recording_surface_t *) surface, NULL, surface_transform, target, NULL, + surface_is_unbounded, CAIRO_RECORDING_CREATE_REGIONS, CAIRO_RECORDING_REGION_ALL); } @@ -2040,7 +2209,7 @@ { return _cairo_recording_surface_replay_internal ((cairo_recording_surface_t *) surface, surface_extents, NULL, - target, NULL, + target, NULL, FALSE, CAIRO_RECORDING_REPLAY, region); } diff -Nru cairo-1.14.6/src/cairo-recording-surface-private.h cairo-1.15.10/src/cairo-recording-surface-private.h --- cairo-1.14.6/src/cairo-recording-surface-private.h 2015-10-27 21:04:21.000000000 +0000 +++ cairo-1.15.10/src/cairo-recording-surface-private.h 2017-12-07 02:14:36.000000000 +0000 @@ -49,6 +49,9 @@ CAIRO_COMMAND_STROKE, CAIRO_COMMAND_FILL, CAIRO_COMMAND_SHOW_TEXT_GLYPHS, + + /* cairo_tag_begin()/cairo_tag_end() */ + CAIRO_COMMAND_TAG, } cairo_command_type_t; typedef enum { @@ -112,6 +115,17 @@ cairo_scaled_font_t *scaled_font; } cairo_command_show_text_glyphs_t; +typedef struct _cairo_command_tag { + cairo_command_header_t header; + cairo_bool_t begin; + char *tag_name; + char *attributes; + cairo_pattern_union_t source; + cairo_stroke_style_t style; + cairo_matrix_t ctm; + cairo_matrix_t ctm_inverse; +} cairo_command_tag_t; + typedef union _cairo_command { cairo_command_header_t header; @@ -120,6 +134,7 @@ cairo_command_stroke_t stroke; cairo_command_fill_t fill; cairo_command_show_text_glyphs_t show_text_glyphs; + cairo_command_tag_t tag; } cairo_command_t; typedef struct _cairo_recording_surface { @@ -169,7 +184,9 @@ cairo_private cairo_status_t _cairo_recording_surface_replay_and_create_regions (cairo_surface_t *surface, - cairo_surface_t *target); + const cairo_matrix_t *surface_transform, + cairo_surface_t *target, + cairo_bool_t surface_is_unbounded); cairo_private cairo_status_t _cairo_recording_surface_replay_region (cairo_surface_t *surface, const cairo_rectangle_int_t *surface_extents, diff -Nru cairo-1.14.6/src/cairo-region.c cairo-1.15.10/src/cairo-region.c --- cairo-1.14.6/src/cairo-region.c 2015-10-27 21:04:30.000000000 +0000 +++ cairo-1.15.10/src/cairo-region.c 2017-12-07 02:14:36.000000000 +0000 @@ -107,6 +107,10 @@ case CAIRO_STATUS_INVALID_MESH_CONSTRUCTION: case CAIRO_STATUS_DEVICE_FINISHED: case CAIRO_STATUS_JBIG2_GLOBAL_MISSING: + case CAIRO_STATUS_PNG_ERROR: + case CAIRO_STATUS_FREETYPE_ERROR: + case CAIRO_STATUS_WIN32_GDI_ERROR: + case CAIRO_STATUS_TAG_ERROR: default: _cairo_error_throw (CAIRO_STATUS_NO_MEMORY); return (cairo_region_t *) &_cairo_region_nil; @@ -175,7 +179,7 @@ { assert (! CAIRO_REFERENCE_COUNT_HAS_REFERENCE (®ion->ref_count)); pixman_region32_fini (®ion->rgn); - VG (VALGRIND_MAKE_MEM_NOACCESS (region, sizeof (cairo_region_t))); + VG (VALGRIND_MAKE_MEM_UNDEFINED (region, sizeof (cairo_region_t))); } /** diff -Nru cairo-1.14.6/src/cairo-scaled-font.c cairo-1.15.10/src/cairo-scaled-font.c --- cairo-1.14.6/src/cairo-scaled-font.c 2015-10-27 21:04:21.000000000 +0000 +++ cairo-1.15.10/src/cairo-scaled-font.c 2017-12-07 02:14:36.000000000 +0000 @@ -46,12 +46,6 @@ #include "cairo-scaled-font-private.h" #include "cairo-surface-backend-private.h" -#if _XOPEN_SOURCE >= 600 || defined (_ISOC99_SOURCE) -#define ISFINITE(x) isfinite (x) -#else -#define ISFINITE(x) ((x) * (x) >= 0.) /* check for NaNs */ -#endif - /** * SECTION:cairo-scaled-font * @Title: cairo_scaled_font_t @@ -85,7 +79,7 @@ #define CAIRO_SCALED_GLYPH_PAGE_SIZE 32 struct _cairo_scaled_glyph_page { cairo_cache_entry_t cache_entry; - + cairo_scaled_font_t *scaled_font; cairo_list_t link; unsigned int num_glyphs; @@ -224,6 +218,9 @@ cairo_surface_finish (scaled_glyph->recording_surface); cairo_surface_destroy (scaled_glyph->recording_surface); } + + if (scaled_glyph->color_surface != NULL) + cairo_surface_destroy (&scaled_glyph->color_surface->base); } #define ZOMBIE 0 @@ -477,7 +474,7 @@ assert (! cairo_list_is_empty (&page->link)); - scaled_font = (cairo_scaled_font_t *) page->cache_entry.hash; + scaled_font = page->scaled_font; CAIRO_MUTEX_LOCK (scaled_font->mutex); _cairo_scaled_glyph_page_destroy (scaled_font, page); @@ -818,23 +815,35 @@ void _cairo_scaled_font_reset_cache (cairo_scaled_font_t *scaled_font) { + cairo_scaled_glyph_page_t *page; + CAIRO_MUTEX_LOCK (scaled_font->mutex); assert (! scaled_font->cache_frozen); assert (! scaled_font->global_cache_frozen); CAIRO_MUTEX_LOCK (_cairo_scaled_glyph_page_cache_mutex); - while (! cairo_list_is_empty (&scaled_font->glyph_pages)) { - cairo_scaled_glyph_page_t *page = - cairo_list_first_entry (&scaled_font->glyph_pages, - cairo_scaled_glyph_page_t, - link); + cairo_list_foreach_entry (page, + cairo_scaled_glyph_page_t, + &scaled_font->glyph_pages, + link) { cairo_scaled_glyph_page_cache.size -= page->cache_entry.size; _cairo_hash_table_remove (cairo_scaled_glyph_page_cache.hash_table, (cairo_hash_entry_t *) &page->cache_entry); + } + + CAIRO_MUTEX_UNLOCK (_cairo_scaled_glyph_page_cache_mutex); + + /* Destroy scaled_font's pages while holding its lock only, and not the + * global page cache lock. The destructor can cause us to recurse and + * end up back here for a different scaled_font. */ + while (! cairo_list_is_empty (&scaled_font->glyph_pages)) { + page = cairo_list_first_entry (&scaled_font->glyph_pages, + cairo_scaled_glyph_page_t, + link); _cairo_scaled_glyph_page_destroy (scaled_font, page); } - CAIRO_MUTEX_UNLOCK (_cairo_scaled_glyph_page_cache_mutex); + CAIRO_MUTEX_UNLOCK (scaled_font->mutex); } @@ -1265,8 +1274,8 @@ * @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(). + * Use cairo_scaled_font_get_reference_count() to get the number of + * references to a #cairo_scaled_font_t. * * Returns: the referenced #cairo_scaled_font_t * @@ -2818,13 +2827,31 @@ scaled_glyph->has_info &= ~CAIRO_SCALED_GLYPH_INFO_RECORDING_SURFACE; } +void +_cairo_scaled_glyph_set_color_surface (cairo_scaled_glyph_t *scaled_glyph, + cairo_scaled_font_t *scaled_font, + cairo_image_surface_t *surface) +{ + if (scaled_glyph->color_surface != NULL) + cairo_surface_destroy (&scaled_glyph->color_surface->base); + + /* sanity check the backend glyph contents */ + _cairo_debug_check_image_surface_is_defined (&surface->base); + scaled_glyph->color_surface = surface; + + if (surface != NULL) + scaled_glyph->has_info |= CAIRO_SCALED_GLYPH_INFO_COLOR_SURFACE; + else + scaled_glyph->has_info &= ~CAIRO_SCALED_GLYPH_INFO_COLOR_SURFACE; +} + static cairo_bool_t _cairo_scaled_glyph_page_can_remove (const void *closure) { const cairo_scaled_glyph_page_t *page = closure; const cairo_scaled_font_t *scaled_font; - scaled_font = (cairo_scaled_font_t *) page->cache_entry.hash; + scaled_font = page->scaled_font; return scaled_font->cache_frozen == 0; } @@ -2853,6 +2880,7 @@ return _cairo_error (CAIRO_STATUS_NO_MEMORY); page->cache_entry.hash = (unsigned long) scaled_font; + page->scaled_font = scaled_font; page->cache_entry.size = 1; /* XXX occupancy weighting? */ page->num_glyphs = 0; @@ -2895,6 +2923,7 @@ { cairo_scaled_glyph_page_t *page; + assert (scaled_font->cache_frozen); assert (! cairo_list_is_empty (&scaled_font->glyph_pages)); page = cairo_list_last_entry (&scaled_font->glyph_pages, cairo_scaled_glyph_page_t, @@ -2904,6 +2933,9 @@ _cairo_scaled_glyph_fini (scaled_font, scaled_glyph); if (--page->num_glyphs == 0) { + _cairo_scaled_font_thaw_cache (scaled_font); + CAIRO_MUTEX_LOCK (scaled_font->mutex); + CAIRO_MUTEX_LOCK (_cairo_scaled_glyph_page_cache_mutex); /* Temporarily disconnect callback to avoid recursive locking */ cairo_scaled_glyph_page_cache.entry_destroy = NULL; @@ -2912,6 +2944,9 @@ _cairo_scaled_glyph_page_destroy (scaled_font, page); cairo_scaled_glyph_page_cache.entry_destroy = _cairo_scaled_glyph_page_pluck; CAIRO_MUTEX_UNLOCK (_cairo_scaled_glyph_page_cache_mutex); + + CAIRO_MUTEX_UNLOCK (scaled_font->mutex); + _cairo_scaled_font_freeze_cache (scaled_font); } } @@ -3156,3 +3191,12 @@ _cairo_font_options_init_copy (options, &scaled_font->options); } slim_hidden_def (cairo_scaled_font_get_font_options); + +cairo_bool_t +_cairo_scaled_font_has_color_glyphs (cairo_scaled_font_t *scaled_font) +{ + if (scaled_font->backend != NULL && scaled_font->backend->has_color_glyphs != NULL) + return scaled_font->backend->has_color_glyphs (scaled_font); + else + return FALSE; +} diff -Nru cairo-1.14.6/src/cairo-scaled-font-private.h cairo-1.15.10/src/cairo-scaled-font-private.h --- cairo-1.14.6/src/cairo-scaled-font-private.h 2015-10-27 21:04:22.000000000 +0000 +++ cairo-1.15.10/src/cairo-scaled-font-private.h 2017-12-07 02:14:36.000000000 +0000 @@ -141,6 +141,7 @@ cairo_image_surface_t *surface; /* device-space image */ cairo_path_fixed_t *path; /* device-space outline */ cairo_surface_t *recording_surface; /* device-space recording-surface */ + cairo_image_surface_t *color_surface; /* device-space color image */ const void *dev_private_key; void *dev_private; @@ -177,6 +178,8 @@ void (*destroy) (cairo_scaled_glyph_private_t *, cairo_scaled_glyph_t *, cairo_scaled_font_t *)); +cairo_private cairo_bool_t +_cairo_scaled_font_has_color_glyphs (cairo_scaled_font_t *scaled_font); CAIRO_END_DECLS diff -Nru cairo-1.14.6/src/cairo-scaled-font-subsets.c cairo-1.15.10/src/cairo-scaled-font-subsets.c --- cairo-1.14.6/src/cairo-scaled-font-subsets.c 2015-10-29 00:04:11.000000000 +0000 +++ cairo-1.15.10/src/cairo-scaled-font-subsets.c 2017-12-07 02:13:45.000000000 +0000 @@ -40,7 +40,7 @@ * Adrian Johnson */ -#define _BSD_SOURCE /* for snprintf(), strdup() */ +#define _DEFAULT_SOURCE /* for snprintf(), strdup() */ #include "cairoint.h" #include "cairo-error-private.h" @@ -71,6 +71,7 @@ cairo_bool_t is_composite; cairo_bool_t is_user; cairo_bool_t use_latin_subset; + cairo_bool_t reserve_notdef; cairo_scaled_font_subsets_t *parent; cairo_scaled_font_t *scaled_font; unsigned int font_id; @@ -283,6 +284,7 @@ sub_font->is_scaled = is_scaled; sub_font->is_composite = is_composite; sub_font->is_user = _cairo_font_face_is_user (scaled_font->font_face); + sub_font->reserve_notdef = !sub_font->is_user; _cairo_sub_font_init_key (sub_font, scaled_font); sub_font->parent = parent; @@ -533,23 +535,8 @@ else num_glyphs_in_subset_ptr = &sub_font->num_glyphs_in_current_subset; - /* Reserve first glyph in subset for the .notdef glyph except for - * Type 3 fonts */ - if (*num_glyphs_in_subset_ptr == 0 && - scaled_font_glyph_index != 0 && - ! _cairo_font_face_is_user (sub_font->scaled_font->font_face)) - { - status = _cairo_sub_font_add_glyph (sub_font, - 0, - is_latin, - 0, - 0, - NULL, - -1, - &sub_font_glyph); - if (unlikely (status)) - return status; - } + if ((*num_glyphs_in_subset_ptr == 0) && sub_font->reserve_notdef) + (*num_glyphs_in_subset_ptr)++; sub_font_glyph = _cairo_sub_font_glyph_create (scaled_font_glyph_index, is_latin ? 0 : sub_font->current_subset, @@ -713,13 +700,26 @@ collection->max_glyph = 0; memset (collection->latin_to_subset_glyph_index, 0, 256*sizeof(unsigned long)); + if (sub_font->reserve_notdef) { + // add .notdef + collection->glyphs[0] = 0; + collection->utf8[0] = 0; + collection->to_latin_char[0] = 0; + collection->latin_to_subset_glyph_index[0] = 0; + collection->num_glyphs++; + } + _cairo_hash_table_foreach (sub_font->sub_font_glyphs, _cairo_sub_font_glyph_collect, collection); if (collection->status) break; + if (collection->num_glyphs == 0) continue; + if (sub_font->reserve_notdef && collection->num_glyphs == 1) + continue; + /* Ensure the resulting array has no uninitialized holes */ assert (collection->num_glyphs == collection->max_glyph + 1); @@ -1121,6 +1121,87 @@ return FALSE; } +#if DEBUG_SUBSETS + +static void +dump_glyph (void *entry, void *closure) +{ + cairo_sub_font_glyph_t *glyph = entry; + char buf[10]; + int i; + + printf(" font_glyph_index: %ld\n", glyph->base.hash); + printf(" subset_id: %d\n", glyph->subset_id); + printf(" subset_glyph_index: %d\n", glyph->subset_glyph_index); + printf(" x_advance: %f\n", glyph->x_advance); + printf(" y_advance: %f\n", glyph->y_advance); + printf(" is_latin: %d\n", glyph->is_latin); + printf(" latin_character: '%c' (0x%02x)\n", glyph->latin_character, glyph->latin_character); + printf(" is_latin: %d\n", glyph->is_latin); + printf(" is_mapped: %d\n", glyph->is_mapped); + printf(" unicode: U+%04x\n", glyph->unicode); + memset(buf, 0, sizeof(buf)); + memcpy(buf, glyph->utf8, glyph->utf8_len); + printf(" utf8: '%s'\n", buf); + printf(" utf8 (hex):"); + for (i = 0; i < glyph->utf8_len; i++) + printf(" 0x%02x", glyph->utf8[0]); + printf("\n\n"); +} + +static void +dump_subfont (cairo_sub_font_t *sub_font) +{ + while (sub_font) { + printf(" font_id: %d\n", sub_font->font_id); + printf(" current_subset: %d\n", sub_font->current_subset); + printf(" is_scaled: %d\n", sub_font->is_scaled); + printf(" is_composite: %d\n", sub_font->is_composite); + printf(" is_user: %d\n", sub_font->is_user); + printf(" use_latin_subset: %d\n", sub_font->use_latin_subset); + printf(" reserve_notdef: %d\n", sub_font->reserve_notdef); + printf(" num_glyphs_in_current_subset: %d\n", sub_font->num_glyphs_in_current_subset); + printf(" num_glyphs_in_latin_subset: %d\n", sub_font->num_glyphs_in_latin_subset); + printf(" max_glyphs_per_subset: %d\n\n", sub_font->max_glyphs_per_subset); + + _cairo_hash_table_foreach (sub_font->sub_font_glyphs, dump_glyph, NULL); + + printf("\n"); + sub_font = sub_font->next; + } +} + +void +dump_scaled_font_subsets (cairo_scaled_font_subsets_t *font_subsets) +{ + printf("font subsets\n"); + switch (font_subsets->type) + { + case CAIRO_SUBSETS_SCALED: + printf(" type: CAIRO_SUBSETS_SCALED\n"); + break; + case CAIRO_SUBSETS_SIMPLE: + printf(" type: CAIRO_SUBSETS_SIMPLE\n"); + break; + case CAIRO_SUBSETS_COMPOSITE: + printf(" type: CAIRO_SUBSETS_COMPOSITE\n"); + break; + } + printf(" use_latin_subset: %d\n", font_subsets->use_latin_subset); + printf(" max_glyphs_per_unscaled_subset_used: %d\n", font_subsets->max_glyphs_per_unscaled_subset_used); + printf(" max_glyphs_per_scaled_subset_used: %d\n", font_subsets->max_glyphs_per_scaled_subset_used); + printf(" num_sub_fonts: %d\n\n", font_subsets->num_sub_fonts); + + printf(" scaled subsets:\n"); + dump_subfont (font_subsets->scaled_sub_fonts_list); + + printf("\n unscaled subsets:\n"); + dump_subfont (font_subsets->unscaled_sub_fonts_list); +} + +#endif + + static void _cairo_string_init_key (cairo_string_entry_t *key, char *s) { @@ -1200,8 +1281,12 @@ utf16_len = 0; if (utf8 && *utf8) { status = _cairo_utf8_to_utf16 (utf8, -1, &utf16, &utf16_len); - if (unlikely (status)) + if (status == CAIRO_STATUS_INVALID_STRING) { + utf16 = NULL; + utf16_len = 0; + } else if (unlikely (status)) { goto CLEANUP_HASH; + } } if (utf16_len == 1) { diff -Nru cairo-1.14.6/src/cairo-scaled-font-subsets-private.h cairo-1.15.10/src/cairo-scaled-font-subsets-private.h --- cairo-1.14.6/src/cairo-scaled-font-subsets-private.h 2015-10-27 21:04:30.000000000 +0000 +++ cairo-1.15.10/src/cairo-scaled-font-subsets-private.h 2017-12-07 02:13:45.000000000 +0000 @@ -730,6 +730,11 @@ cairo_private cairo_int_status_t _cairo_escape_ps_name (char **ps_name); +#if DEBUG_SUBSETS +cairo_private void +dump_scaled_font_subsets (cairo_scaled_font_subsets_t *font_subsets); +#endif + #endif /* CAIRO_HAS_FONT_SUBSET */ #endif /* CAIRO_SCALED_FONT_SUBSETS_PRIVATE_H */ diff -Nru cairo-1.14.6/src/cairo-script-surface.c cairo-1.15.10/src/cairo-script-surface.c --- cairo-1.14.6/src/cairo-script-surface.c 2015-10-28 23:54:19.000000000 +0000 +++ cairo-1.15.10/src/cairo-script-surface.c 2017-12-07 02:14:36.000000000 +0000 @@ -1111,7 +1111,8 @@ _cairo_surface_init (&surface->base, &script_snapshot_backend, &ctx->base, - source->content); + source->content, + source->is_vector); _cairo_output_stream_printf (ctx->stream, "dup /s%d exch def ", @@ -1201,7 +1202,8 @@ _write_image_surface (cairo_output_stream_t *output, const cairo_image_surface_t *image) { - int stride, row, width; + int row, width; + ptrdiff_t stride; uint8_t row_stack[CAIRO_STACK_BUFFER_SIZE]; uint8_t *rowdata; uint8_t *data; @@ -3648,7 +3650,8 @@ _cairo_surface_init (&surface->base, &_cairo_script_surface_backend, &ctx->base, - content); + content, + TRUE); /* is_vector */ _cairo_surface_wrapper_init (&surface->wrapper, passthrough); diff -Nru cairo-1.14.6/src/cairo-spans.c cairo-1.15.10/src/cairo-spans.c --- cairo-1.14.6/src/cairo-spans.c 2015-10-27 21:04:21.000000000 +0000 +++ cairo-1.15.10/src/cairo-spans.c 2017-12-07 02:14:36.000000000 +0000 @@ -128,6 +128,10 @@ case CAIRO_STATUS_INVALID_MESH_CONSTRUCTION: RETURN_NIL; case CAIRO_STATUS_DEVICE_FINISHED: RETURN_NIL; case CAIRO_STATUS_JBIG2_GLOBAL_MISSING: + case CAIRO_STATUS_PNG_ERROR: + case CAIRO_STATUS_FREETYPE_ERROR: + case CAIRO_STATUS_WIN32_GDI_ERROR: + case CAIRO_STATUS_TAG_ERROR: default: break; } @@ -241,6 +245,10 @@ case CAIRO_STATUS_INVALID_MESH_CONSTRUCTION: RETURN_NIL; case CAIRO_STATUS_DEVICE_FINISHED: RETURN_NIL; case CAIRO_STATUS_JBIG2_GLOBAL_MISSING: RETURN_NIL; + case CAIRO_STATUS_PNG_ERROR: RETURN_NIL; + case CAIRO_STATUS_FREETYPE_ERROR: RETURN_NIL; + case CAIRO_STATUS_WIN32_GDI_ERROR: RETURN_NIL; + case CAIRO_STATUS_TAG_ERROR: RETURN_NIL; default: break; } diff -Nru cairo-1.14.6/src/cairo-spans-private.h cairo-1.15.10/src/cairo-spans-private.h --- cairo-1.14.6/src/cairo-spans-private.h 2015-10-27 21:04:21.000000000 +0000 +++ cairo-1.15.10/src/cairo-spans-private.h 2017-12-07 02:14:36.000000000 +0000 @@ -168,6 +168,10 @@ const cairo_box_t *extents, cairo_fill_rule_t fill_rule); +cairo_private cairo_status_t +_cairo_botor_scan_converter_add_polygon (cairo_botor_scan_converter_t *converter, + const cairo_polygon_t *polygon); + /* cairo-spans.c: */ cairo_private cairo_scan_converter_t * diff -Nru cairo-1.14.6/src/cairo-stroke-style.c cairo-1.15.10/src/cairo-stroke-style.c --- cairo-1.14.6/src/cairo-stroke-style.c 2015-10-27 21:04:30.000000000 +0000 +++ cairo-1.15.10/src/cairo-stroke-style.c 2017-12-07 02:14:36.000000000 +0000 @@ -91,7 +91,7 @@ style->num_dashes = 0; - VG (VALGRIND_MAKE_MEM_NOACCESS (style, sizeof (cairo_stroke_style_t))); + VG (VALGRIND_MAKE_MEM_UNDEFINED (style, sizeof (cairo_stroke_style_t))); } /* diff -Nru cairo-1.14.6/src/cairo-surface-backend-private.h cairo-1.15.10/src/cairo-surface-backend-private.h --- cairo-1.14.6/src/cairo-surface-backend-private.h 2015-10-27 21:04:21.000000000 +0000 +++ cairo-1.15.10/src/cairo-surface-backend-private.h 2017-12-07 02:14:36.000000000 +0000 @@ -200,6 +200,18 @@ const char ** (*get_supported_mime_types) (void *surface); + + cairo_warn cairo_int_status_t + (*tag) (void *surface, + cairo_bool_t begin, + const char *tag_name, + const char *attributes, + const cairo_pattern_t *source, + const cairo_stroke_style_t *style, + const cairo_matrix_t *ctm, + const cairo_matrix_t *ctm_inverse, + const cairo_clip_t *clip); + }; cairo_private cairo_status_t diff -Nru cairo-1.14.6/src/cairo-surface.c cairo-1.15.10/src/cairo-surface.c --- cairo-1.14.6/src/cairo-surface.c 2015-10-27 21:04:30.000000000 +0000 +++ cairo-1.15.10/src/cairo-surface.c 2017-12-07 02:14:36.000000000 +0000 @@ -113,7 +113,8 @@ FALSE, /* finished */ \ TRUE, /* is_clear */ \ FALSE, /* has_font_options */ \ - FALSE, /* owns_device */ \ + FALSE, /* owns_device */ \ + FALSE, /* is_vector */ \ { 0, 0, 0, NULL, }, /* user_data */ \ { 0, 0, 0, NULL, }, /* mime_data */ \ { 1.0, 0.0, 0.0, 1.0, 0.0, 0.0 }, /* device_transform */ \ @@ -400,7 +401,8 @@ _cairo_surface_init (cairo_surface_t *surface, const cairo_surface_backend_t *backend, cairo_device_t *device, - cairo_content_t content) + cairo_content_t content, + cairo_bool_t is_vector) { CAIRO_MUTEX_INITIALIZE (); @@ -408,6 +410,7 @@ surface->device = cairo_device_reference (device); surface->content = content; surface->type = backend->type; + surface->is_vector = is_vector; CAIRO_REFERENCE_COUNT_INIT (&surface->ref_count, 1); surface->status = CAIRO_STATUS_SUCCESS; @@ -463,10 +466,11 @@ * * 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 - * not possible for some reason. The type of the returned surface may - * be examined with cairo_surface_get_type(). + * device scale, 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.) @@ -500,13 +504,9 @@ return _cairo_surface_create_in_error (CAIRO_STATUS_SURFACE_FINISHED); if (unlikely (width < 0 || height < 0)) return _cairo_surface_create_in_error (CAIRO_STATUS_INVALID_SIZE); - if (unlikely (! CAIRO_CONTENT_VALID (content))) return _cairo_surface_create_in_error (CAIRO_STATUS_INVALID_CONTENT); - if (unlikely (other->status)) - return _cairo_surface_create_in_error (other->status); - /* We inherit the device scale, so create a larger surface */ width = width * other->device_transform.xx; height = height * other->device_transform.yy; @@ -548,12 +548,14 @@ * cairo_surface_create_similar_image: * @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) + * @width: width of the new surface, (in pixels) + * @height: height of the new surface (in pixels) * * 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. + * can still be used like any normal image surface. Unlike + * cairo_surface_create_similar() the new image surface won't inherit + * the device scale from @other. * * Initially the surface contents are all 0 (transparent if contents * have transparency, black otherwise.) @@ -911,8 +913,8 @@ * @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(). + * Use cairo_surface_get_reference_count() to get the number of + * references to a #cairo_surface_t. * * Return value: the referenced #cairo_surface_t. * @@ -1023,8 +1025,6 @@ { cairo_status_t status; - surface->finished = TRUE; - /* call finish even if in error mode */ if (surface->backend->finish) { status = surface->backend->finish (surface); @@ -1032,6 +1032,8 @@ _cairo_surface_set_error (surface, status); } + surface->finished = TRUE; + assert (surface->snapshot_of == NULL); assert (!_cairo_surface_has_snapshots (surface)); } @@ -1222,6 +1224,80 @@ free (mime_data); } + +static const char *_cairo_surface_image_mime_types[] = { + CAIRO_MIME_TYPE_JPEG, + CAIRO_MIME_TYPE_PNG, + CAIRO_MIME_TYPE_JP2, + CAIRO_MIME_TYPE_JBIG2, + CAIRO_MIME_TYPE_CCITT_FAX, +}; + +cairo_bool_t +_cairo_surface_has_mime_image (cairo_surface_t *surface) +{ + cairo_user_data_slot_t *slots; + int i, j, num_slots; + + /* Prevent reads of the array during teardown */ + if (! CAIRO_REFERENCE_COUNT_HAS_REFERENCE (&surface->ref_count)) + return FALSE; + + /* The number of mime-types attached to a surface is usually small, + * typically zero. Therefore it is quicker to do a strcmp() against + * each key than it is to intern the string (i.e. compute a hash, + * search the hash table, and do a final strcmp). + */ + num_slots = surface->mime_data.num_elements; + slots = _cairo_array_index (&surface->mime_data, 0); + for (i = 0; i < num_slots; i++) { + if (slots[i].key != NULL) { + for (j = 0; j < ARRAY_LENGTH (_cairo_surface_image_mime_types); j++) { + if (strcmp ((char *) slots[i].key, _cairo_surface_image_mime_types[j]) == 0) + return TRUE; + } + } + } + + return FALSE; +} + +/** + * CAIRO_MIME_TYPE_CCITT_FAX: + * + * Group 3 or Group 4 CCITT facsimile encoding (International + * Telecommunication Union, Recommendations T.4 and T.6.) + * + * Since: 1.16 + **/ + +/** + * CAIRO_MIME_TYPE_CCITT_FAX_PARAMS: + * + * Decode parameters for Group 3 or Group 4 CCITT facsimile encoding. + * See [CCITT Fax Images][ccitt]. + * + * Since: 1.16 + **/ + +/** + * CAIRO_MIME_TYPE_EPS: + * + * Encapsulated PostScript file. + * [Encapsulated PostScript File Format Specification](http://wwwimages.adobe.com/content/dam/Adobe/endevnet/postscript/pdfs/5002.EPSF_Spec.pdf) + * + * Since: 1.16 + **/ + +/** + * CAIRO_MIME_TYPE_EPS_PARAMS: + * + * Embedding parameters Encapsulated PostScript data. + * See [Embedding EPS files][eps]. + * + * Since: 1.16 + **/ + /** * CAIRO_MIME_TYPE_JBIG2: * @@ -1312,7 +1388,8 @@ * 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. + * %CAIRO_MIME_TYPE_JBIG2_GLOBAL, %CAIRO_MIME_TYPE_JBIG2_GLOBAL_ID, + * %CAIRO_MIME_TYPE_CCITT_FAX, %CAIRO_MIME_TYPE_CCITT_FAX_PARAMS. * * See corresponding backend surface docs for details about which MIME * types it can handle. Caution: the associated MIME data will be @@ -1384,6 +1461,8 @@ return _cairo_surface_set_error (surface, status); } + surface->is_clear = FALSE; + return CAIRO_STATUS_SUCCESS; } slim_hidden_def (cairo_surface_set_mime_data); @@ -1458,6 +1537,8 @@ _cairo_mime_data_reference, NULL); + dst->is_clear = FALSE; + return CAIRO_STATUS_SUCCESS; } @@ -2515,6 +2596,199 @@ } slim_hidden_def (cairo_surface_has_show_text_glyphs); +#define GLYPH_CACHE_SIZE 64 + +static inline cairo_int_status_t +ensure_scaled_glyph (cairo_scaled_font_t *scaled_font, + cairo_scaled_glyph_t **glyph_cache, + cairo_glyph_t *glyph, + cairo_scaled_glyph_t **scaled_glyph) +{ + int cache_index; + cairo_int_status_t status = CAIRO_INT_STATUS_SUCCESS; + + cache_index = glyph->index % GLYPH_CACHE_SIZE; + *scaled_glyph = glyph_cache[cache_index]; + if (*scaled_glyph == NULL || _cairo_scaled_glyph_index (*scaled_glyph) != glyph->index) { + status = _cairo_scaled_glyph_lookup (scaled_font, + glyph->index, + CAIRO_SCALED_GLYPH_INFO_SURFACE, + scaled_glyph); + if (unlikely (status)) + status = _cairo_scaled_font_set_error (scaled_font, status); + + glyph_cache[cache_index] = *scaled_glyph; + } + + return status; +} + +static inline cairo_int_status_t +composite_one_color_glyph (cairo_surface_t *surface, + cairo_operator_t op, + const cairo_pattern_t *source, + const cairo_clip_t *clip, + cairo_glyph_t *glyph, + cairo_scaled_glyph_t *scaled_glyph) +{ + cairo_int_status_t status; + cairo_image_surface_t *glyph_surface; + cairo_pattern_t *pattern; + cairo_matrix_t matrix; + + status = CAIRO_INT_STATUS_SUCCESS; + + glyph_surface = scaled_glyph->color_surface; + + if (glyph_surface->width && glyph_surface->height) { + int x, y; + /* round glyph locations to the nearest pixels */ + /* XXX: FRAGILE: We're ignoring device_transform scaling here. A bug? */ + x = _cairo_lround (glyph->x - glyph_surface->base.device_transform.x0); + y = _cairo_lround (glyph->y - glyph_surface->base.device_transform.y0); + + pattern = cairo_pattern_create_for_surface ((cairo_surface_t *)glyph_surface); + cairo_matrix_init_translate (&matrix, - x, - y); + cairo_pattern_set_matrix (pattern, &matrix); + if (op == CAIRO_OPERATOR_SOURCE || op == CAIRO_OPERATOR_CLEAR) + status = surface->backend->mask (surface, op, pattern, pattern, clip); + else + status = surface->backend->paint (surface, op, pattern, clip); + } + + return status; +} + +static cairo_int_status_t +composite_color_glyphs (cairo_surface_t *surface, + cairo_operator_t op, + const cairo_pattern_t *source, + 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_scaled_font_t *scaled_font, + const cairo_clip_t *clip) +{ + cairo_int_status_t status; + int i, j; + cairo_scaled_glyph_t *scaled_glyph; + int remaining_clusters = 0; + int remaining_glyphs = 0; + int remaining_bytes = 0; + int glyph_pos = 0; + int byte_pos = 0; + int gp; + cairo_scaled_glyph_t *glyph_cache[GLYPH_CACHE_SIZE]; + + memset (glyph_cache, 0, sizeof (glyph_cache)); + + status = CAIRO_INT_STATUS_SUCCESS; + + _cairo_scaled_font_freeze_cache (scaled_font); + + if (clusters) { + + if (cluster_flags & CAIRO_TEXT_CLUSTER_FLAG_BACKWARD) + glyph_pos = *num_glyphs - 1; + + for (i = 0; i < *num_clusters; i++) { + cairo_bool_t skip_cluster = FALSE; + + for (j = 0; j < clusters[i].num_glyphs; j++) { + if (cluster_flags & CAIRO_TEXT_CLUSTER_FLAG_BACKWARD) + gp = glyph_pos - j; + else + gp = glyph_pos + j; + + status = ensure_scaled_glyph (scaled_font, glyph_cache, + &glyphs[gp], &scaled_glyph); + if (unlikely (status)) + goto UNLOCK; + + if ((scaled_glyph->has_info & CAIRO_SCALED_GLYPH_INFO_COLOR_SURFACE) == 0) { + skip_cluster = TRUE; + break; + } + } + + if (skip_cluster) { + memmove (utf8 + remaining_bytes, utf8 + byte_pos, clusters[i].num_bytes); + remaining_bytes += clusters[i].num_bytes; + byte_pos += clusters[i].num_bytes; + for (j = 0; j < clusters[i].num_glyphs; j++, remaining_glyphs++) { + if (cluster_flags & CAIRO_TEXT_CLUSTER_FLAG_BACKWARD) + glyphs[*num_glyphs - 1 - remaining_glyphs] = glyphs[glyph_pos--]; + else + glyphs[remaining_glyphs] = glyphs[glyph_pos++]; + } + clusters[remaining_clusters++] = clusters[i]; + continue; + } + + for (j = 0; j < clusters[i].num_glyphs; j++) { + if (cluster_flags & CAIRO_TEXT_CLUSTER_FLAG_BACKWARD) + gp = glyph_pos - j; + else + gp = glyph_pos + j; + + status = ensure_scaled_glyph (scaled_font, glyph_cache, + &glyphs[gp], &scaled_glyph); + if (unlikely (status)) + goto UNLOCK; + + status = composite_one_color_glyph (surface, op, source, clip, + &glyphs[gp], scaled_glyph); + if (unlikely (status)) + goto UNLOCK; + } + + if (cluster_flags & CAIRO_TEXT_CLUSTER_FLAG_BACKWARD) + glyph_pos -= clusters[i].num_glyphs; + else + glyph_pos += clusters[i].num_glyphs; + + byte_pos += clusters[i].num_bytes; + } + + if (cluster_flags & CAIRO_TEXT_CLUSTER_FLAG_BACKWARD) + memmove (utf8, utf8 + *utf8_len - remaining_bytes, remaining_bytes); + + *utf8_len = remaining_bytes; + *num_glyphs = remaining_glyphs; + *num_clusters = remaining_clusters; + + } else { + + for (glyph_pos = 0; glyph_pos < *num_glyphs; glyph_pos++) { + status = ensure_scaled_glyph (scaled_font, glyph_cache, + &glyphs[glyph_pos], &scaled_glyph); + if (unlikely (status)) + goto UNLOCK; + + if ((scaled_glyph->has_info & CAIRO_SCALED_GLYPH_INFO_COLOR_SURFACE) == 0) { + glyphs[remaining_glyphs++] = glyphs[glyph_pos]; + continue; + } + + status = composite_one_color_glyph (surface, op, source, clip, + &glyphs[glyph_pos], scaled_glyph); + if (unlikely (status)) + goto UNLOCK; + } + + *num_glyphs = remaining_glyphs; + } + +UNLOCK: + _cairo_scaled_font_thaw_cache (scaled_font); + + return status; +} + /* Note: the backends may modify the contents of the glyph array as long as * they do not return %CAIRO_INT_STATUS_UNSUPPORTED. This makes it possible to * avoid copying the array again and again, and edit it in-place. @@ -2571,6 +2845,22 @@ status = CAIRO_INT_STATUS_UNSUPPORTED; + if (_cairo_scaled_font_has_color_glyphs (scaled_font)) { + status = composite_color_glyphs (surface, op, + source, + (char *)utf8, &utf8_len, + glyphs, &num_glyphs, + (cairo_text_cluster_t *)clusters, &num_clusters, cluster_flags, + scaled_font, + clip); + + if (unlikely (status)) + goto DONE; + + if (num_glyphs == 0) + goto DONE; + } + /* The logic here is duplicated in _cairo_analysis_surface show_glyphs and * show_text_glyphs. Keep in synch. */ if (clusters) { @@ -2621,6 +2911,7 @@ } } +DONE: if (status != CAIRO_INT_STATUS_NOTHING_TO_DO) { surface->is_clear = FALSE; surface->serial++; @@ -2629,6 +2920,42 @@ return _cairo_surface_set_error (surface, status); } +cairo_status_t +_cairo_surface_tag (cairo_surface_t *surface, + cairo_bool_t begin, + const char *tag_name, + const char *attributes, + const cairo_pattern_t *source, + const cairo_stroke_style_t *stroke_style, + const cairo_matrix_t *ctm, + const cairo_matrix_t *ctm_inverse, + const cairo_clip_t *clip) +{ + cairo_int_status_t status; + + TRACE ((stderr, "%s\n", __FUNCTION__)); + if (unlikely (surface->status)) + return surface->status; + if (unlikely (surface->finished)) + return _cairo_surface_set_error (surface, _cairo_error (CAIRO_STATUS_SURFACE_FINISHED)); + + if (surface->backend->tag == NULL) + return CAIRO_STATUS_SUCCESS; + + if (begin) { + status = _pattern_has_error (source); + if (unlikely (status)) + return status; + } + + status = surface->backend->tag (surface, begin, tag_name, attributes, + source, stroke_style, + ctm, ctm_inverse, clip); + + return _cairo_surface_set_error (surface, status); +} + + /** * _cairo_surface_set_resolution: * @surface: the surface @@ -2722,6 +3049,10 @@ case CAIRO_STATUS_INVALID_MESH_CONSTRUCTION: case CAIRO_STATUS_DEVICE_FINISHED: case CAIRO_STATUS_JBIG2_GLOBAL_MISSING: + case CAIRO_STATUS_PNG_ERROR: + case CAIRO_STATUS_FREETYPE_ERROR: + case CAIRO_STATUS_WIN32_GDI_ERROR: + case CAIRO_STATUS_TAG_ERROR: default: _cairo_error_throw (CAIRO_STATUS_NO_MEMORY); return (cairo_surface_t *) &_cairo_surface_nil; diff -Nru cairo-1.14.6/src/cairo-surface-observer.c cairo-1.15.10/src/cairo-surface-observer.c --- cairo-1.14.6/src/cairo-surface-observer.c 2015-10-27 21:04:30.000000000 +0000 +++ cairo-1.15.10/src/cairo-surface-observer.c 2017-12-07 02:14:36.000000000 +0000 @@ -385,7 +385,8 @@ _cairo_surface_init (&surface->base, &_cairo_surface_observer_backend, device, - target->content); + target->content, + target->is_vector); status = log_init (&surface->log, ((cairo_device_observer_t *)device)->log.record != NULL); @@ -1218,8 +1219,6 @@ cairo_surface_observer_t *surface = abstract_surface; cairo_status_t status; - printf ("mark-dirty (%d, %d) x (%d, %d)\n", x, y, width, height); - status = CAIRO_STATUS_SUCCESS; if (surface->target->backend->mark_dirty_rectangle) status = surface->target->backend->mark_dirty_rectangle (surface->target, diff -Nru cairo-1.14.6/src/cairo-surface-private.h cairo-1.15.10/src/cairo-surface-private.h --- cairo-1.14.6/src/cairo-surface-private.h 2015-10-27 21:04:30.000000000 +0000 +++ cairo-1.15.10/src/cairo-surface-private.h 2017-12-07 02:14:36.000000000 +0000 @@ -70,6 +70,7 @@ unsigned is_clear : 1; unsigned has_font_options : 1; unsigned owns_device : 1; + unsigned is_vector : 1; cairo_user_data_array_t user_data; cairo_user_data_array_t mime_data; diff -Nru cairo-1.14.6/src/cairo-surface-snapshot.c cairo-1.15.10/src/cairo-surface-snapshot.c --- cairo-1.14.6/src/cairo-surface-snapshot.c 2015-10-27 21:04:30.000000000 +0000 +++ cairo-1.15.10/src/cairo-surface-snapshot.c 2017-12-07 02:14:36.000000000 +0000 @@ -265,7 +265,8 @@ _cairo_surface_init (&snapshot->base, &_cairo_surface_snapshot_backend, NULL, /* device */ - surface->content); + surface->content, + surface->is_vector); snapshot->base.type = surface->type; CAIRO_MUTEX_INIT (snapshot->mutex); diff -Nru cairo-1.14.6/src/cairo-surface-subsurface.c cairo-1.15.10/src/cairo-surface-subsurface.c --- cairo-1.14.6/src/cairo-surface-subsurface.c 2015-10-27 21:04:30.000000000 +0000 +++ cairo-1.15.10/src/cairo-surface-subsurface.c 2017-12-07 02:14:36.000000000 +0000 @@ -478,7 +478,8 @@ _cairo_surface_init (&surface->base, &_cairo_surface_subsurface_backend, NULL, /* device */ - target->content); + target->content, + target->is_vector); /* XXX forced integer alignment */ surface->extents.x = ceil (x); @@ -528,7 +529,8 @@ _cairo_surface_init (&surface->base, &_cairo_surface_subsurface_backend, NULL, /* device */ - target->content); + target->content, + target->is_vector); surface->extents = *extents; surface->extents.x *= target->device_transform.xx; diff -Nru cairo-1.14.6/src/cairo-surface-wrapper.c cairo-1.15.10/src/cairo-surface-wrapper.c --- cairo-1.14.6/src/cairo-surface-wrapper.c 2015-10-27 21:04:30.000000000 +0000 +++ cairo-1.15.10/src/cairo-surface-wrapper.c 2017-12-07 02:14:36.000000000 +0000 @@ -81,9 +81,6 @@ { cairo_matrix_init_identity (m); - if (wrapper->has_extents && (wrapper->extents.x || wrapper->extents.y)) - cairo_matrix_translate (m, -wrapper->extents.x, -wrapper->extents.y); - if (! _cairo_matrix_is_identity (&wrapper->transform)) cairo_matrix_multiply (m, &wrapper->transform, m); @@ -109,9 +106,6 @@ assert (status == CAIRO_STATUS_SUCCESS); cairo_matrix_multiply (m, &inv, m); } - - if (wrapper->has_extents && (wrapper->extents.x || wrapper->extents.y)) - cairo_matrix_translate (m, wrapper->extents.x, wrapper->extents.y); } static cairo_clip_t * @@ -119,14 +113,14 @@ const cairo_clip_t *clip) { cairo_clip_t *copy; + cairo_matrix_t m; copy = _cairo_clip_copy (clip); if (wrapper->has_extents) { copy = _cairo_clip_intersect_rectangle (copy, &wrapper->extents); } - copy = _cairo_clip_transform (copy, &wrapper->transform); - if (! _cairo_matrix_is_identity (&wrapper->target->device_transform)) - copy = _cairo_clip_transform (copy, &wrapper->target->device_transform); + _cairo_surface_wrapper_get_transform (wrapper, &m); + copy = _cairo_clip_transform (copy, &m); if (wrapper->clip) copy = _cairo_clip_intersect_clip (copy, wrapper->clip); @@ -507,6 +501,53 @@ return status; } +cairo_status_t +_cairo_surface_wrapper_tag (cairo_surface_wrapper_t *wrapper, + cairo_bool_t begin, + const char *tag_name, + const char *attributes, + const cairo_pattern_t *source, + const cairo_stroke_style_t *stroke_style, + const cairo_matrix_t *ctm, + const cairo_matrix_t *ctm_inverse, + const cairo_clip_t *clip) +{ + cairo_status_t status; + cairo_clip_t *dev_clip; + cairo_matrix_t dev_ctm = *ctm; + cairo_matrix_t dev_ctm_inverse = *ctm_inverse; + cairo_pattern_union_t source_copy; + + if (unlikely (wrapper->target->status)) + return wrapper->target->status; + + dev_clip = _cairo_surface_wrapper_get_clip (wrapper, clip); + if (wrapper->needs_transform) { + cairo_matrix_t m; + + _cairo_surface_wrapper_get_transform (wrapper, &m); + + cairo_matrix_multiply (&dev_ctm, &dev_ctm, &m); + + status = cairo_matrix_invert (&m); + assert (status == CAIRO_STATUS_SUCCESS); + + cairo_matrix_multiply (&dev_ctm_inverse, &m, &dev_ctm_inverse); + + _copy_transformed_pattern (&source_copy.base, source, &m); + source = &source_copy.base; + } + + status = _cairo_surface_tag (wrapper->target, + begin, tag_name, attributes, + source, stroke_style, + &dev_ctm, &dev_ctm_inverse, + dev_clip); + + _cairo_clip_destroy (dev_clip); + return status; +} + cairo_surface_t * _cairo_surface_wrapper_create_similar (cairo_surface_wrapper_t *wrapper, cairo_content_t content, @@ -631,12 +672,15 @@ cairo_bool_t _cairo_surface_wrapper_get_target_extents (cairo_surface_wrapper_t *wrapper, + cairo_bool_t surface_is_unbounded, cairo_rectangle_int_t *extents) { cairo_rectangle_int_t clip; - cairo_bool_t has_clip; + cairo_bool_t has_clip = FALSE; + + if (!surface_is_unbounded) + has_clip = _cairo_surface_get_extents (wrapper->target, &clip); - has_clip = _cairo_surface_get_extents (wrapper->target, &clip); if (wrapper->clip) { if (has_clip) { if (! _cairo_rectangle_intersect (&clip, diff -Nru cairo-1.14.6/src/cairo-surface-wrapper-private.h cairo-1.15.10/src/cairo-surface-wrapper-private.h --- cairo-1.14.6/src/cairo-surface-wrapper-private.h 2015-10-27 21:04:21.000000000 +0000 +++ cairo-1.15.10/src/cairo-surface-wrapper-private.h 2017-12-07 02:14:36.000000000 +0000 @@ -159,6 +159,17 @@ cairo_scaled_font_t *scaled_font, const cairo_clip_t *clip); +cairo_private cairo_status_t +_cairo_surface_wrapper_tag (cairo_surface_wrapper_t *wrapper, + cairo_bool_t begin, + const char *tag_name, + const char *attributes, + const cairo_pattern_t *source, + const cairo_stroke_style_t *stroke_style, + const cairo_matrix_t *ctm, + const cairo_matrix_t *ctm_inverse, + const cairo_clip_t *clip); + cairo_private cairo_surface_t * _cairo_surface_wrapper_create_similar (cairo_surface_wrapper_t *wrapper, cairo_content_t content, @@ -186,6 +197,7 @@ cairo_private cairo_bool_t _cairo_surface_wrapper_get_target_extents (cairo_surface_wrapper_t *wrapper, + cairo_bool_t surface_is_unbounded, cairo_rectangle_int_t *extents); CAIRO_END_DECLS diff -Nru cairo-1.14.6/src/cairo-svg.h cairo-1.15.10/src/cairo-svg.h --- cairo-1.14.6/src/cairo-svg.h 2015-10-27 21:04:21.000000000 +0000 +++ cairo-1.15.10/src/cairo-svg.h 2017-12-07 02:14:36.000000000 +0000 @@ -53,6 +53,46 @@ CAIRO_SVG_VERSION_1_2 } cairo_svg_version_t; +/** + * cairo_svg_version_t: + * + * @CAIRO_SVG_UNIT_USER: User unit, a value in the current coordinate system. + * If used in the root element for the initial coordinate systems it + * corresponds to pixels. (Since 1.16) + * @CAIRO_SVG_UNIT_EM: The size of the element's font. (Since 1.16) + * @CAIRO_SVG_UNIT_EX: The x-height of the element’s font. (Since 1.16) + * @CAIRO_SVG_UNIT_PX: Pixels (1px = 1/96th of 1in). (Since 1.16) + * @CAIRO_SVG_UNIT_IN: Inches (1in = 2.54cm = 96px). (Since 1.16) + * @CAIRO_SVG_UNIT_CM: Centimeters (1cm = 96px/2.54). (Since 1.16) + * @CAIRO_SVG_UNIT_MM: Millimeters (1mm = 1/10th of 1cm). (Since 1.16) + * @CAIRO_SVG_UNIT_PT: Points (1pt = 1/72th of 1in). (Since 1.16) + * @CAIRO_SVG_UNIT_PC: Picas (1pc = 1/6th of 1in). (Since 1.16) + * @CAIRO_SVG_UNIT_PERCENT: Percent, a value that is some fraction of another + * reference value. (Since 1.16) + * + * #cairo_svg_unit_t is used to describe the units valid for coordinates and + * lengths in the SVG specification. + * + * See also: + * https://www.w3.org/TR/SVG/coords.html#Units + * https://www.w3.org/TR/SVG/types.html#DataTypeLength + * https://www.w3.org/TR/css-values-3/#lengths + * + * Since: 1.16 + **/ +typedef enum _cairo_svg_unit { + CAIRO_SVG_UNIT_USER = 0, + CAIRO_SVG_UNIT_EM, + CAIRO_SVG_UNIT_EX, + CAIRO_SVG_UNIT_PX, + CAIRO_SVG_UNIT_IN, + CAIRO_SVG_UNIT_CM, + CAIRO_SVG_UNIT_MM, + CAIRO_SVG_UNIT_PT, + CAIRO_SVG_UNIT_PC, + CAIRO_SVG_UNIT_PERCENT +} cairo_svg_unit_t; + cairo_public cairo_surface_t * cairo_svg_surface_create (const char *filename, double width_in_points, @@ -75,6 +115,13 @@ cairo_public const char * cairo_svg_version_to_string (cairo_svg_version_t version); +cairo_public void +cairo_svg_surface_set_document_unit (cairo_surface_t *surface, + cairo_svg_unit_t unit); + +cairo_public cairo_svg_unit_t +cairo_svg_surface_get_document_unit (cairo_surface_t *surface); + CAIRO_END_DECLS #else /* CAIRO_HAS_SVG_SURFACE */ diff -Nru cairo-1.14.6/src/cairo-svg-surface.c cairo-1.15.10/src/cairo-svg-surface.c --- cairo-1.14.6/src/cairo-svg-surface.c 2015-10-27 21:04:30.000000000 +0000 +++ cairo-1.15.10/src/cairo-svg-surface.c 2017-12-07 22:13:32.000000000 +0000 @@ -39,7 +39,7 @@ * Carl Worth */ -#define _BSD_SOURCE /* for snprintf() */ +#define _DEFAULT_SOURCE /* for snprintf() */ #include "cairoint.h" #include "cairo-svg.h" @@ -94,6 +94,7 @@ { CAIRO_MIME_TYPE_JPEG, CAIRO_MIME_TYPE_PNG, + CAIRO_MIME_TYPE_UNIQUE_ID, CAIRO_MIME_TYPE_URI, NULL }; @@ -121,6 +122,20 @@ "1.2" }; +static const char * _cairo_svg_unit_strings[] = +{ + [CAIRO_SVG_UNIT_USER] = "", + [CAIRO_SVG_UNIT_EM] = "em", + [CAIRO_SVG_UNIT_EX] = "ex", + [CAIRO_SVG_UNIT_PX] = "px", + [CAIRO_SVG_UNIT_IN] = "in", + [CAIRO_SVG_UNIT_CM] = "cm", + [CAIRO_SVG_UNIT_MM] = "mm", + [CAIRO_SVG_UNIT_PT] = "pt", + [CAIRO_SVG_UNIT_PC] = "pc", + [CAIRO_SVG_UNIT_PERCENT] = "%" +}; + struct cairo_svg_page { unsigned int surface_id; unsigned int clip_level; @@ -135,6 +150,7 @@ double width; double height; + cairo_svg_unit_t unit; cairo_output_stream_t *xml_node_defs; cairo_output_stream_t *xml_node_glyphs; @@ -176,7 +192,9 @@ _cairo_svg_surface_create_for_document (cairo_svg_document_t *document, cairo_content_t content, double width, - double height); + double height, + cairo_bool_t bounded); + static cairo_surface_t * _cairo_svg_surface_create_for_stream_internal (cairo_output_stream_t *stream, double width, @@ -252,6 +270,9 @@ * or %CAIRO_MIME_TYPE_PNG is specified, the corresponding data is * Base64-encoded and emitted. * + * If %CAIRO_MIME_TYPE_UNIQUE_ID is present, all surfaces with the same + * unique identifier will only be embedded once. + * * Return value: a pointer to the newly created surface. The caller * owns the surface and should call cairo_surface_destroy() when done * with it. @@ -399,6 +420,164 @@ return _cairo_svg_version_strings[version]; } +/** + * cairo_svg_surface_set_document_unit: + * @surface: a SVG #cairo_surface_t + * @unit: SVG unit + * + * Use the specified unit for the width and height of the generated SVG file. + * See #cairo_svg_unit_t for a list of available unit values that can be used + * here. + * + * This function can be called at any time before generating the SVG file. + * + * However to minimize the risk of ambiguities it's recommended to call it + * before any drawing operations have been performed on the given surface, to + * make it clearer what the unit used in the drawing operations is. + * + * The simplest way to do this is to call this function immediately after + * creating the SVG surface. + * + * Note if this function is never called, the default unit for SVG documents + * generated by cairo will be "pt". This is for historical reasons. + * + * Since: 1.16 + **/ +void +cairo_svg_surface_set_document_unit (cairo_surface_t *abstract_surface, + cairo_svg_unit_t unit) +{ + cairo_svg_surface_t *surface = NULL; /* hide compiler warning */ + + if (! _extract_svg_surface (abstract_surface, &surface)) + return; + + if (unit <= CAIRO_SVG_UNIT_PERCENT) + surface->document->unit = unit; +} + +/** + * cairo_svg_surface_get_document_unit: + * @surface: a SVG #cairo_surface_t + * + * Get the unit of the SVG surface. + * + * If the surface passed as an argument is not a SVG surface, the function + * sets the error status to CAIRO_STATUS_SURFACE_TYPE_MISMATCH and returns + * CAIRO_SVG_UNIT_USER. + * + * Return value: the SVG unit of the SVG surface. + * + * Since: 1.16 + **/ +cairo_svg_unit_t +cairo_svg_surface_get_document_unit (cairo_surface_t *abstract_surface) +{ + cairo_svg_surface_t *surface = NULL; /* hide compiler warning */ + + if (! _extract_svg_surface (abstract_surface, &surface)) { + _cairo_error_throw (CAIRO_STATUS_SURFACE_TYPE_MISMATCH); + return CAIRO_SVG_UNIT_USER; + } + + return surface->document->unit; +} + +static void +_cairo_svg_source_surface_init_key (cairo_svg_source_surface_t *key) +{ + if (key->unique_id && key->unique_id_length > 0) { + key->base.hash = _cairo_hash_bytes (_CAIRO_HASH_INIT_VALUE, + key->unique_id, key->unique_id_length); + } else { + key->base.hash = key->id; + } +} + +static cairo_bool_t +_cairo_svg_source_surface_equal (const void *key_a, const void *key_b) +{ + const cairo_svg_source_surface_t *a = key_a; + const cairo_svg_source_surface_t *b = key_b; + + if (a->unique_id && b->unique_id && a->unique_id_length == b->unique_id_length) + return (memcmp (a->unique_id, b->unique_id, a->unique_id_length) == 0); + + return (a->id == b->id); +} + +static void +_cairo_svg_source_surface_pluck (void *entry, void *closure) +{ + cairo_svg_source_surface_t *surface_entry = entry; + cairo_hash_table_t *patterns = closure; + + _cairo_hash_table_remove (patterns, &surface_entry->base); + free (surface_entry->unique_id); + free (surface_entry); +} + +static cairo_status_t +_cairo_svg_surface_add_source_surface (cairo_svg_surface_t *surface, + cairo_surface_t *source_surface, + int *source_id, + cairo_bool_t *is_new) +{ + cairo_svg_source_surface_t source_key; + cairo_svg_source_surface_t *source_entry; + unsigned char *unique_id = NULL; + unsigned long unique_id_length = 0; + cairo_status_t status; + + source_key.id = source_surface->unique_id; + cairo_surface_get_mime_data (source_surface, CAIRO_MIME_TYPE_UNIQUE_ID, + (const unsigned char **) &source_key.unique_id, + &source_key.unique_id_length); + _cairo_svg_source_surface_init_key (&source_key); + source_entry = _cairo_hash_table_lookup (surface->source_surfaces, &source_key.base); + if (source_entry) { + *source_id = source_entry->id; + *is_new = FALSE; + return CAIRO_STATUS_SUCCESS; + } + + if (source_key.unique_id && source_key.unique_id_length > 0) { + unique_id = _cairo_malloc (source_key.unique_id_length); + if (unique_id == NULL) { + return _cairo_error (CAIRO_STATUS_NO_MEMORY); + } + + unique_id_length = source_key.unique_id_length; + memcpy (unique_id, source_key.unique_id, unique_id_length); + } else { + unique_id = NULL; + unique_id_length = 0; + } + + source_entry = malloc (sizeof (cairo_svg_source_surface_t)); + if (source_entry == NULL) { + status = _cairo_error (CAIRO_STATUS_NO_MEMORY); + goto fail; + } + + source_entry->id = source_key.id; + source_entry->unique_id_length = unique_id_length; + source_entry->unique_id = unique_id; + _cairo_svg_source_surface_init_key (source_entry); + status = _cairo_hash_table_insert (surface->source_surfaces, &source_entry->base); + if (unlikely(status)) + goto fail; + + *is_new = TRUE; + *source_id = source_entry->id; + return CAIRO_STATUS_SUCCESS; + + fail: + free (unique_id); + free (source_entry); + return status; +} + static cairo_bool_t _cliprect_covers_surface (cairo_svg_surface_t *surface, cairo_path_fixed_t *path) @@ -470,7 +649,8 @@ _cairo_svg_surface_create_for_document (cairo_svg_document_t *document, cairo_content_t content, double width, - double height) + double height, + cairo_bool_t bounded) { cairo_svg_surface_t *surface; cairo_surface_t *paginated; @@ -483,10 +663,12 @@ _cairo_surface_init (&surface->base, &cairo_svg_surface_backend, NULL, /* device */ - content); + content, + TRUE); /* is_vector */ surface->width = width; surface->height = height; + surface->surface_bounded = bounded; surface->document = _cairo_svg_document_reference (document); @@ -519,6 +701,12 @@ surface->force_fallbacks = FALSE; surface->content = content; + surface->source_surfaces = _cairo_hash_table_create (_cairo_svg_source_surface_equal); + if (unlikely (surface->source_surfaces == NULL)) { + status = _cairo_error (CAIRO_STATUS_NO_MEMORY); + goto CLEANUP; + } + paginated = _cairo_paginated_surface_create (&surface->base, surface->content, &cairo_svg_surface_paginated_backend); @@ -560,7 +748,7 @@ } surface = _cairo_svg_surface_create_for_document (document, CAIRO_CONTENT_COLOR_ALPHA, - width, height); + width, height, TRUE); if (surface->status) { status = _cairo_svg_document_destroy (document); return surface; @@ -1010,6 +1198,11 @@ _cairo_surface_clipper_reset (&surface->clipper); + _cairo_hash_table_foreach (surface->source_surfaces, + _cairo_svg_source_surface_pluck, + surface->source_surfaces); + _cairo_hash_table_destroy (surface->source_surfaces); + status2 = _cairo_svg_document_destroy (document); if (status == CAIRO_STATUS_SUCCESS) status = status2; @@ -1281,7 +1474,8 @@ static cairo_status_t _cairo_svg_surface_emit_surface (cairo_svg_document_t *document, - cairo_surface_t *surface) + cairo_surface_t *surface, + int source_id) { cairo_rectangle_int_t extents; cairo_bool_t is_bounded; @@ -1289,18 +1483,12 @@ const unsigned char *uri; unsigned long uri_len; - if (_cairo_user_data_array_get_data (&surface->user_data, - (cairo_user_data_key_t *) document)) - { - return CAIRO_STATUS_SUCCESS; - } - is_bounded = _cairo_surface_get_extents (surface, &extents); assert (is_bounded); _cairo_output_stream_printf (document->xml_node_defs, "unique_id, + source_id, extents.width, extents.height); _cairo_output_stream_printf (document->xml_node_defs, " xlink:href=\""); @@ -1319,10 +1507,7 @@ _cairo_output_stream_printf (document->xml_node_defs, "\"/>\n"); - /* and tag it */ - return _cairo_user_data_array_set_data (&surface->user_data, - (cairo_user_data_key_t *) document, - document, NULL); + return CAIRO_STATUS_SUCCESS; } static cairo_status_t @@ -1336,17 +1521,29 @@ { cairo_status_t status; cairo_matrix_t p2u; + int source_id; + cairo_bool_t is_new; p2u = pattern->base.matrix; status = cairo_matrix_invert (&p2u); /* cairo_pattern_set_matrix ensures the matrix is invertible */ assert (status == CAIRO_STATUS_SUCCESS); - status = _cairo_svg_surface_emit_surface (svg_surface->document, - pattern->surface); + status = _cairo_svg_surface_add_source_surface (svg_surface, + pattern->surface, + &source_id, + &is_new); if (unlikely (status)) return status; + if (is_new) { + status = _cairo_svg_surface_emit_surface (svg_surface->document, + pattern->surface, + source_id); + if (unlikely (status)) + return status; + } + if (pattern_id != invalid_pattern_id) { cairo_rectangle_int_t extents; cairo_bool_t is_bounded; @@ -1368,7 +1565,7 @@ _cairo_output_stream_printf (output, "surface->unique_id); + source_id); if (extra_attributes) _cairo_output_stream_printf (output, " %s", extra_attributes); @@ -1389,25 +1586,23 @@ static cairo_status_t _cairo_svg_surface_emit_recording_surface (cairo_svg_document_t *document, - cairo_recording_surface_t *source) + cairo_recording_surface_t *source, + int source_id) { cairo_status_t status; cairo_surface_t *paginated_surface; cairo_svg_surface_t *svg_surface; cairo_array_t *page_set; - + cairo_rectangle_int_t extents; + cairo_bool_t bounded; cairo_output_stream_t *contents; - if (_cairo_user_data_array_get_data (&source->base.user_data, - (cairo_user_data_key_t *) document)) - { - return CAIRO_STATUS_SUCCESS; - } - + bounded = _cairo_surface_get_extents (&source->base, &extents); paginated_surface = _cairo_svg_surface_create_for_document (document, source->base.content, - source->extents_pixels.width, - source->extents_pixels.height); + extents.width, + extents.height, + bounded); if (unlikely (paginated_surface->status)) return paginated_surface->status; @@ -1435,13 +1630,17 @@ if (! svg_surface->is_base_clip_emitted) { svg_surface->is_base_clip_emitted = TRUE; - _cairo_output_stream_printf (document->xml_node_defs, - "\n" - " \n" - "\n", - svg_surface->base_clip, - svg_surface->width, - svg_surface->height); + if (_cairo_surface_get_extents (&svg_surface->base, &extents)) { + _cairo_output_stream_printf (document->xml_node_defs, + "\n" + " \n" + "\n", + svg_surface->base_clip, + extents.x, + extents.y, + extents.width, + extents.height); + } } if (source->base.content == CAIRO_CONTENT_ALPHA) { @@ -1450,13 +1649,13 @@ "\n", - source->base.unique_id, + source_id, svg_surface->base_clip); } else { _cairo_output_stream_printf (document->xml_node_defs, "\n", - source->base.unique_id, + source_id, svg_surface->base_clip); } @@ -1482,13 +1681,7 @@ status = cairo_surface_status (paginated_surface); cairo_surface_destroy (paginated_surface); - if (unlikely (status)) - return status; - - /* and tag it */ - return _cairo_user_data_array_set_data (&source->base.user_data, - (cairo_user_data_key_t *) document, - document, NULL); + return status; } static cairo_recording_surface_t * @@ -1515,17 +1708,28 @@ cairo_recording_surface_t *recording_surface; cairo_matrix_t p2u; cairo_status_t status; + int source_id; + cairo_bool_t is_new; p2u = pattern->base.matrix; status = cairo_matrix_invert (&p2u); /* cairo_pattern_set_matrix ensures the matrix is invertible */ assert (status == CAIRO_STATUS_SUCCESS); - recording_surface = to_recording_surface (pattern); - status = _cairo_svg_surface_emit_recording_surface (document, recording_surface); + status = _cairo_svg_surface_add_source_surface (surface, + pattern->surface, + &source_id, + &is_new); if (unlikely (status)) return status; + recording_surface = to_recording_surface (pattern); + if (is_new) { + status = _cairo_svg_surface_emit_recording_surface (document, recording_surface, source_id); + if (unlikely (status)) + return status; + } + if (pattern_id != invalid_pattern_id) { _cairo_output_stream_printf (output, "base.unique_id); + source_id); if (pattern_id == invalid_pattern_id) { _cairo_svg_surface_emit_operator (output, surface, op); @@ -2257,7 +2461,7 @@ rectangle->width = ceil (surface->width); rectangle->height = ceil (surface->height); - return TRUE; + return surface->surface_bounded; } static cairo_status_t @@ -2675,6 +2879,7 @@ document->finished = FALSE; document->width = width; document->height = height; + document->unit = CAIRO_SVG_UNIT_PT; document->linear_pattern_id = 0; document->radial_pattern_id = 0; @@ -2777,9 +2982,10 @@ "\n" "\n", - document->width, document->height, + document->width, _cairo_svg_unit_strings [document->unit], + document->height, _cairo_svg_unit_strings [document->unit], document->width, document->height, _cairo_svg_internal_version_strings [document->svg_version]); @@ -2851,13 +3057,15 @@ return status; } -static void +static cairo_int_status_t _cairo_svg_surface_set_paginated_mode (void *abstract_surface, cairo_paginated_mode_t paginated_mode) { cairo_svg_surface_t *surface = abstract_surface; surface->paginated_mode = paginated_mode; + + return CAIRO_STATUS_SUCCESS; } static cairo_bool_t diff -Nru cairo-1.14.6/src/cairo-svg-surface-private.h cairo-1.15.10/src/cairo-svg-surface-private.h --- cairo-1.14.6/src/cairo-svg-surface-private.h 2015-10-27 21:04:21.000000000 +0000 +++ cairo-1.15.10/src/cairo-svg-surface-private.h 2017-12-07 02:14:36.000000000 +0000 @@ -48,6 +48,13 @@ typedef struct cairo_svg_document cairo_svg_document_t; +typedef struct _cairo_svg_source_surface { + cairo_hash_entry_t base; + unsigned int id; + unsigned char *unique_id; + unsigned long unique_id_length; +} cairo_svg_source_surface_t; + typedef struct cairo_svg_surface { cairo_surface_t base; @@ -55,11 +62,13 @@ double width; double height; + cairo_bool_t surface_bounded; cairo_svg_document_t *document; cairo_output_stream_t *xml_node; cairo_array_t page_set; + cairo_hash_table_t *source_surfaces; cairo_surface_clipper_t clipper; unsigned int clip_level; diff -Nru cairo-1.14.6/src/cairo-tag-attributes.c cairo-1.15.10/src/cairo-tag-attributes.c --- cairo-1.14.6/src/cairo-tag-attributes.c 1970-01-01 00:00:00.000000000 +0000 +++ cairo-1.15.10/src/cairo-tag-attributes.c 2017-12-07 02:14:36.000000000 +0000 @@ -0,0 +1,702 @@ +/* -*- Mode: c; c-basic-offset: 4; indent-tabs-mode: t; tab-width: 8; -*- */ +/* cairo - a vector graphics library with display and print output + * + * Copyright © 2016 Adrian Johnson + * + * This library is free software; you can redistribute it and/or + * modify it either under the terms of the GNU Lesser General Public + * License version 2.1 as published by the Free Software Foundation + * (the "LGPL") or, at your option, under the terms of the Mozilla + * Public License Version 1.1 (the "MPL"). If you do not alter this + * notice, a recipient may use your version of this file under either + * the MPL or the LGPL. + * + * You should have received a copy of the LGPL along with this library + * in the file COPYING-LGPL-2.1; if not, write to the Free Software + * Foundation, Inc., 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 Adrian Johnson. + * + * Contributor(s): + * Adrian Johnson + */ + +#include "cairoint.h" + +#include "cairo-array-private.h" +#include "cairo-list-inline.h" +#include "cairo-tag-attributes-private.h" + +#include + +typedef enum { + ATTRIBUTE_BOOL, /* Either true/false or 1/0 may be used. */ + ATTRIBUTE_INT, + ATTRIBUTE_FLOAT, /* Decimal separator is in current locale. */ + ATTRIBUTE_STRING, /* Enclose in single quotes. String escapes: + * \' - single quote + * \\ - backslash + */ +} attribute_type_t; + +typedef struct _attribute_spec { + const char *name; + attribute_type_t type; + int array_size; /* 0 = scalar, -1 = variable size array */ +} attribute_spec_t; + +/* + * name [required] Unique name of this destination (UTF-8) + * x [optional] x coordinate of destination on page. Default is x coord of + * extents of operations enclosed by the dest begin/end tags. + * y [optional] y coordinate of destination on page. Default is y coord of + * extents of operations enclosed by the dest begin/end tags. + * internal [optional] If true, the name may be optimized out of the PDF where + * possible. Default false. + */ +static attribute_spec_t _dest_attrib_spec[] = { + { "name", ATTRIBUTE_STRING }, + { "x", ATTRIBUTE_FLOAT }, + { "y", ATTRIBUTE_FLOAT }, + { "internal", ATTRIBUTE_BOOL }, + { NULL } +}; + +/* + * rect [optional] One or more rectangles to define link region. Default + * is the extents of the operations enclosed by the link begin/end tags. + * Each rectangle is specified by four array elements: x, y, width, height. + * ie the array size must be a multiple of four. + * + * Internal Links + * -------------- + * either: + * dest - name of dest tag in the PDF file to link to (UTF8) + * or + * page - Page number in the PDF file to link to + * pos - [optional] Position of destination on page. Default is 0,0. + * + * URI Links + * --------- + * uri [required] Uniform resource identifier (ASCII). + + * File Links + * ---------- + * file - [required] File name of PDF file to link to. + * either: + * dest - name of dest tag in the PDF file to link to (UTF8) + * or + * page - Page number in the PDF file to link to + * pos - [optional] Position of destination on page. Default is 0,0. + */ +static attribute_spec_t _link_attrib_spec[] = +{ + { "rect", ATTRIBUTE_FLOAT, -1 }, + { "dest", ATTRIBUTE_STRING }, + { "uri", ATTRIBUTE_STRING }, + { "file", ATTRIBUTE_STRING }, + { "page", ATTRIBUTE_INT }, + { "pos", ATTRIBUTE_FLOAT, 2 }, + { NULL } +}; + +/* + * Required: + * Columns - width of the image in pixels. + * Rows - height of the image in scan lines. + * + * Optional: + * K - An integer identifying the encoding scheme used. < 0 is 2 dimensional + * Group 4, = 0 is Group3 1 dimensional, > 0 is mixed 1 and 2 dimensional + * encoding. Default: 0. + * EndOfLine - If true end-of-line bit patterns are present. Default: false. + * EncodedByteAlign - If true the end of line is padded with 0 bits so the next + * line begins on a byte boundary. Default: false. + * EndOfBlock - If true the data contains an end-of-block pattern. Default: true. + * BlackIs1 - If true 1 bits are black pixels. Default: false. + * DamagedRowsBeforeError - Number of damages rows tolerated before an error + * occurs. Default: 0. + */ +static attribute_spec_t _ccitt_params_spec[] = +{ + { "Columns", ATTRIBUTE_INT }, + { "Rows", ATTRIBUTE_INT }, + { "K", ATTRIBUTE_INT }, + { "EndOfLine", ATTRIBUTE_BOOL }, + { "EncodedByteAlign", ATTRIBUTE_BOOL }, + { "EndOfBlock", ATTRIBUTE_BOOL }, + { "BlackIs1", ATTRIBUTE_BOOL }, + { "DamagedRowsBeforeError", ATTRIBUTE_INT }, + { NULL } +}; + +/* + * bbox - Bounding box of EPS file. The format is [ llx lly urx ury ] + * llx - lower left x xoordinate + * lly - lower left y xoordinate + * urx - upper right x xoordinate + * ury - upper right y xoordinate + * all cordinates are in PostScript coordinates. + */ +static attribute_spec_t _eps_params_spec[] = +{ + { "bbox", ATTRIBUTE_FLOAT, 4 }, + { NULL } +}; + +typedef union { + cairo_bool_t b; + int i; + double f; + char *s; +} attrib_val_t; + +typedef struct _attribute { + char *name; + attribute_type_t type; + int array_len; /* 0 = scalar */ + attrib_val_t scalar; + cairo_array_t array; /* array of attrib_val_t */ + cairo_list_t link; +} attribute_t; + +static const char * +skip_space (const char *p) +{ + while (_cairo_isspace (*p)) + p++; + + return p; +} + +static const char * +parse_bool (const char *p, cairo_bool_t *b) +{ + if (*p == '1') { + *b = TRUE; + return p + 1; + } else if (*p == '0') { + *b = FALSE; + return p + 1; + } else if (strcmp (p, "true") == 0) { + *b = TRUE; + return p + 4; + } else if (strcmp (p, "false") == 0) { + *b = FALSE; + return p + 5; + } + + return NULL; +} + +static const char * +parse_int (const char *p, int *i) +{ + int n; + + if (sscanf(p, "%d%n", i, &n) > 0) + return p + n; + + return NULL; +} + +static const char * +parse_float (const char *p, double *d) +{ + int n; + + if (sscanf(p, "%lf%n", d, &n) > 0) + return p + n; + + return NULL; +} + +static const char * +decode_string (const char *p, int *len, char *s) +{ + if (*p != '\'') + return NULL; + + p++; + if (! *p) + return NULL; + + *len = 0; + while (*p) { + if (*p == '\\') { + p++; + if (*p) { + if (s) + *s++ = *p; + p++; + (*len)++; + } + } else if (*p == '\'') { + return p + 1; + } else { + if (s) + *s++ = *p; + p++; + (*len)++; + } + } + + return NULL; +} + +static const char * +parse_string (const char *p, char **s) +{ + const char *end; + int len; + + end = decode_string (p, &len, NULL); + if (!end) + return NULL; + + *s = malloc (len + 1); + decode_string (p, &len, *s); + (*s)[len] = 0; + + return end; +} + +static const char * +parse_scalar (const char *p, attribute_type_t type, attrib_val_t *scalar) +{ + switch (type) { + case ATTRIBUTE_BOOL: + return parse_bool (p, &scalar->b); + case ATTRIBUTE_INT: + return parse_int (p, &scalar->i); + case ATTRIBUTE_FLOAT: + return parse_float (p, &scalar->f); + case ATTRIBUTE_STRING: + return parse_string (p, &scalar->s); + } + + return NULL; +} + +static cairo_int_status_t +parse_array (const char *p, attribute_type_t type, cairo_array_t *array, const char **end) +{ + attrib_val_t val; + cairo_int_status_t status; + + p = skip_space (p); + if (! *p) + return _cairo_error (CAIRO_INT_STATUS_TAG_ERROR); + + if (*p++ != '[') + return _cairo_error (CAIRO_INT_STATUS_TAG_ERROR); + + while (TRUE) { + p = skip_space (p); + if (! *p) + return _cairo_error (CAIRO_INT_STATUS_TAG_ERROR); + + if (*p == ']') { + *end = p + 1; + return CAIRO_INT_STATUS_SUCCESS; + } + + p = parse_scalar (p, type, &val); + if (!p) + return _cairo_error (CAIRO_INT_STATUS_TAG_ERROR); + + status = _cairo_array_append (array, &val); + if (unlikely (status)) + return status; + } + + return _cairo_error (CAIRO_INT_STATUS_TAG_ERROR); +} + +static cairo_int_status_t +parse_name (const char *p, const char **end, char **s) +{ + const char *p2; + char *name; + int len; + + if (! _cairo_isalpha (*p)) + return _cairo_error (CAIRO_INT_STATUS_TAG_ERROR); + + p2 = p; + while (_cairo_isalpha (*p2) || _cairo_isdigit (*p2)) + p2++; + + len = p2 - p; + name = malloc (len + 1); + if (unlikely (name == NULL)) + return _cairo_error (CAIRO_STATUS_NO_MEMORY); + + memcpy (name, p, len); + name[len] = 0; + *s = name; + *end = p2; + + return CAIRO_INT_STATUS_SUCCESS; +} + +static cairo_int_status_t +parse_attributes (const char *attributes, attribute_spec_t *attrib_def, cairo_list_t *list) +{ + attribute_spec_t *def; + attribute_t *attrib; + char *name = NULL; + cairo_int_status_t status; + const char *p = attributes; + + if (! p) + return _cairo_error (CAIRO_INT_STATUS_TAG_ERROR); + + while (*p) { + p = skip_space (p); + if (! *p) + break; + + status = parse_name (p, &p, &name); + if (status) + return status; + + def = attrib_def; + while (def->name) { + if (strcmp (name, def->name) == 0) + break; + def++; + } + if (! def->name) { + status = _cairo_error (CAIRO_INT_STATUS_TAG_ERROR); + goto fail1; + } + + attrib = calloc (1, sizeof (attribute_t)); + if (unlikely (attrib == NULL)) { + status = _cairo_error (CAIRO_STATUS_NO_MEMORY); + goto fail1; + } + + attrib->name = name; + attrib->type = def->type; + _cairo_array_init (&attrib->array, sizeof(attrib_val_t)); + + p = skip_space (p); + if (def->type == ATTRIBUTE_BOOL && *p != '=') { + attrib->scalar.b = TRUE; + } else { + if (*p++ != '=') { + status = _cairo_error (CAIRO_INT_STATUS_TAG_ERROR); + goto fail2; + } + + if (def->array_size == 0) { + p = parse_scalar (p, def->type, &attrib->scalar); + if (!p) { + status = _cairo_error (CAIRO_INT_STATUS_TAG_ERROR); + goto fail2; + } + + attrib->array_len = 0; + } else { + status = parse_array (p, def->type, &attrib->array, &p); + if (unlikely (status)) + goto fail2; + + attrib->array_len = _cairo_array_num_elements (&attrib->array); + if (def->array_size > 0 && attrib->array_len != def->array_size) { + status = _cairo_error (CAIRO_INT_STATUS_TAG_ERROR); + goto fail2; + } + } + } + + cairo_list_add_tail (&attrib->link, list); + } + + return CAIRO_INT_STATUS_SUCCESS; + + fail2: + _cairo_array_fini (&attrib->array); + if (attrib->type == ATTRIBUTE_STRING) + free (attrib->scalar.s); + free (attrib); + fail1: + free (name); + + return status; +} + +static void +free_attributes_list (cairo_list_t *list) +{ + attribute_t *attr, *next; + + cairo_list_foreach_entry_safe (attr, next, attribute_t, list, link) + { + cairo_list_del (&attr->link); + free (attr->name); + _cairo_array_fini (&attr->array); + if (attr->type == ATTRIBUTE_STRING) + free (attr->scalar.s); + free (attr); + } +} + +static attribute_t * +find_attribute (cairo_list_t *list, const char *name) +{ + attribute_t *attr; + + cairo_list_foreach_entry (attr, attribute_t, list, link) + { + if (strcmp (attr->name, name) == 0) + return attr; + } + + return NULL; +} + +cairo_int_status_t +_cairo_tag_parse_link_attributes (const char *attributes, cairo_link_attrs_t *link_attrs) +{ + cairo_list_t list; + cairo_int_status_t status; + attribute_t *attr; + attrib_val_t val; + + cairo_list_init (&list); + status = parse_attributes (attributes, _link_attrib_spec, &list); + if (unlikely (status)) + return status; + + memset (link_attrs, 0, sizeof (cairo_link_attrs_t)); + _cairo_array_init (&link_attrs->rects, sizeof (cairo_rectangle_t)); + if (find_attribute (&list, "uri")) { + link_attrs->link_type = TAG_LINK_URI; + } else if (find_attribute (&list, "file")) { + link_attrs->link_type = TAG_LINK_FILE; + } else if (find_attribute (&list, "dest")) { + link_attrs->link_type = TAG_LINK_DEST; + } else if (find_attribute (&list, "page")) { + link_attrs->link_type = TAG_LINK_DEST; + } else { + link_attrs->link_type = TAG_LINK_EMPTY; + goto cleanup; + } + + cairo_list_foreach_entry (attr, attribute_t, &list, link) + { + if (strcmp (attr->name, "uri") == 0) { + if (link_attrs->link_type != TAG_LINK_URI) { + status = _cairo_error (CAIRO_INT_STATUS_TAG_ERROR); + goto cleanup; + } + + link_attrs->uri = strdup (attr->scalar.s); + } else if (strcmp (attr->name, "file") == 0) { + if (link_attrs->link_type != TAG_LINK_FILE) { + status = _cairo_error (CAIRO_INT_STATUS_TAG_ERROR); + goto cleanup; + } + + link_attrs->file = strdup (attr->scalar.s); + } else if (strcmp (attr->name, "dest") == 0) { + if (! (link_attrs->link_type == TAG_LINK_DEST || + link_attrs->link_type != TAG_LINK_FILE)) { + status = _cairo_error (CAIRO_INT_STATUS_TAG_ERROR); + goto cleanup; + } + + link_attrs->dest = strdup (attr->scalar.s); + } else if (strcmp (attr->name, "page") == 0) { + if (! (link_attrs->link_type == TAG_LINK_DEST || + link_attrs->link_type != TAG_LINK_FILE)) { + status = _cairo_error (CAIRO_INT_STATUS_TAG_ERROR); + goto cleanup; + } + + link_attrs->page = attr->scalar.i; + + } else if (strcmp (attr->name, "pos") == 0) { + if (! (link_attrs->link_type == TAG_LINK_DEST || + link_attrs->link_type != TAG_LINK_FILE)) { + status = _cairo_error (CAIRO_INT_STATUS_TAG_ERROR); + goto cleanup; + } + + _cairo_array_copy_element (&attr->array, 0, &val); + link_attrs->pos.x = val.f; + _cairo_array_copy_element (&attr->array, 1, &val); + link_attrs->pos.y = val.f; + link_attrs->has_pos = TRUE; + } else if (strcmp (attr->name, "rect") == 0) { + cairo_rectangle_t rect; + int i; + int num_elem = _cairo_array_num_elements (&attr->array); + if (num_elem == 0 || num_elem % 4 != 0) { + status = _cairo_error (CAIRO_INT_STATUS_TAG_ERROR); + goto cleanup; + } + + for (i = 0; i < num_elem; i += 4) { + _cairo_array_copy_element (&attr->array, i, &val); + rect.x = val.f; + _cairo_array_copy_element (&attr->array, i+1, &val); + rect.y = val.f; + _cairo_array_copy_element (&attr->array, i+2, &val); + rect.width = val.f; + _cairo_array_copy_element (&attr->array, i+3, &val); + rect.height = val.f; + status = _cairo_array_append (&link_attrs->rects, &rect); + if (unlikely (status)) + goto cleanup; + } + } + } + + cleanup: + free_attributes_list (&list); + if (unlikely (status)) { + free (link_attrs->dest); + free (link_attrs->uri); + free (link_attrs->file); + _cairo_array_fini (&link_attrs->rects); + } + + return status; +} + +cairo_int_status_t +_cairo_tag_parse_dest_attributes (const char *attributes, cairo_dest_attrs_t *dest_attrs) +{ + cairo_list_t list; + cairo_int_status_t status; + attribute_t *attr; + + memset (dest_attrs, 0, sizeof (cairo_dest_attrs_t)); + cairo_list_init (&list); + status = parse_attributes (attributes, _dest_attrib_spec, &list); + if (unlikely (status)) + goto cleanup; + + cairo_list_foreach_entry (attr, attribute_t, &list, link) + { + if (strcmp (attr->name, "name") == 0) { + dest_attrs->name = strdup (attr->scalar.s); + } else if (strcmp (attr->name, "x") == 0) { + dest_attrs->x = attr->scalar.f; + dest_attrs->x_valid = TRUE; + } else if (strcmp (attr->name, "y") == 0) { + dest_attrs->y = attr->scalar.f; + dest_attrs->y_valid = TRUE; + } else if (strcmp (attr->name, "internal") == 0) { + dest_attrs->internal = attr->scalar.b; + } + } + + if (! dest_attrs->name) + status = _cairo_error (CAIRO_INT_STATUS_TAG_ERROR); + + cleanup: + free_attributes_list (&list); + + return status; +} + +cairo_int_status_t +_cairo_tag_parse_ccitt_params (const char *attributes, cairo_ccitt_params_t *ccitt_params) +{ + cairo_list_t list; + cairo_int_status_t status; + attribute_t *attr; + + ccitt_params->columns = -1; + ccitt_params->rows = -1; + + /* set defaults */ + ccitt_params->k = 0; + ccitt_params->end_of_line = FALSE; + ccitt_params->encoded_byte_align = FALSE; + ccitt_params->end_of_block = TRUE; + ccitt_params->black_is_1 = FALSE; + ccitt_params->damaged_rows_before_error = 0; + + cairo_list_init (&list); + status = parse_attributes (attributes, _ccitt_params_spec, &list); + if (unlikely (status)) + goto cleanup; + + cairo_list_foreach_entry (attr, attribute_t, &list, link) + { + if (strcmp (attr->name, "Columns") == 0) { + ccitt_params->columns = attr->scalar.i; + } else if (strcmp (attr->name, "Rows") == 0) { + ccitt_params->rows = attr->scalar.i; + } else if (strcmp (attr->name, "K") == 0) { + ccitt_params->k = attr->scalar.i; + } else if (strcmp (attr->name, "EndOfLine") == 0) { + ccitt_params->end_of_line = attr->scalar.b; + } else if (strcmp (attr->name, "EncodedByteAlign") == 0) { + ccitt_params->encoded_byte_align = attr->scalar.b; + } else if (strcmp (attr->name, "EndOfBlock") == 0) { + ccitt_params->end_of_block = attr->scalar.b; + } else if (strcmp (attr->name, "BlackIs1") == 0) { + ccitt_params->black_is_1 = attr->scalar.b; + } else if (strcmp (attr->name, "DamagedRowsBeforeError") == 0) { + ccitt_params->damaged_rows_before_error = attr->scalar.b; + } + } + + cleanup: + free_attributes_list (&list); + + return status; +} + +cairo_int_status_t +_cairo_tag_parse_eps_params (const char *attributes, cairo_eps_params_t *eps_params) +{ + cairo_list_t list; + cairo_int_status_t status; + attribute_t *attr; + attrib_val_t val; + + cairo_list_init (&list); + status = parse_attributes (attributes, _eps_params_spec, &list); + if (unlikely (status)) + goto cleanup; + + cairo_list_foreach_entry (attr, attribute_t, &list, link) + { + if (strcmp (attr->name, "bbox") == 0) { + _cairo_array_copy_element (&attr->array, 0, &val); + eps_params->bbox.p1.x = val.f; + _cairo_array_copy_element (&attr->array, 1, &val); + eps_params->bbox.p1.y = val.f; + _cairo_array_copy_element (&attr->array, 2, &val); + eps_params->bbox.p2.x = val.f; + _cairo_array_copy_element (&attr->array, 3, &val); + eps_params->bbox.p2.y = val.f; + } + } + + cleanup: + free_attributes_list (&list); + + return status; +} diff -Nru cairo-1.14.6/src/cairo-tag-attributes-private.h cairo-1.15.10/src/cairo-tag-attributes-private.h --- cairo-1.14.6/src/cairo-tag-attributes-private.h 1970-01-01 00:00:00.000000000 +0000 +++ cairo-1.15.10/src/cairo-tag-attributes-private.h 2017-12-07 02:14:36.000000000 +0000 @@ -0,0 +1,99 @@ +/* -*- Mode: c; c-basic-offset: 4; indent-tabs-mode: t; tab-width: 8; -*- */ +/* cairo - a vector graphics library with display and print output + * + * Copyright © 2016 Adrian Johnson + * + * This library is free software; you can redistribute it and/or + * modify it either under the terms of the GNU Lesser General Public + * License version 2.1 as published by the Free Software Foundation + * (the "LGPL") or, at your option, under the terms of the Mozilla + * Public License Version 1.1 (the "MPL"). If you do not alter this + * notice, a recipient may use your version of this file under either + * the MPL or the LGPL. + * + * You should have received a copy of the LGPL along with this library + * in the file COPYING-LGPL-2.1; if not, write to the Free Software + * Foundation, Inc., 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 Adrian Johnson. + * + * Contributor(s): + * Adrian Johnson + */ + +#ifndef CAIRO_TAG_ATTRIBUTES_PRIVATE_H +#define CAIRO_TAG_ATTRIBUTES_PRIVATE_H + +#include "cairo-array-private.h" +#include "cairo-error-private.h" +#include "cairo-types-private.h" + +typedef enum { + TAG_LINK_INVALID = 0, + TAG_LINK_EMPTY, + TAG_LINK_DEST, + TAG_LINK_URI, + TAG_LINK_FILE, +} cairo_tag_link_type_t; + +typedef struct _cairo_link_attrs { + cairo_tag_link_type_t link_type; + cairo_array_t rects; + char *dest; + char *uri; + char *file; + int page; + cairo_bool_t has_pos; + cairo_point_double_t pos; +} cairo_link_attrs_t; + +typedef struct _cairo_dest_attrs { + char *name; + double x; + double y; + cairo_bool_t x_valid; + cairo_bool_t y_valid; + cairo_bool_t internal; +} cairo_dest_attrs_t; + +typedef struct _cairo_ccitt_params { + int columns; + int rows; + int k; + cairo_bool_t end_of_line; + cairo_bool_t encoded_byte_align; + cairo_bool_t end_of_block; + cairo_bool_t black_is_1; + int damaged_rows_before_error; +} cairo_ccitt_params_t; + +typedef struct _cairo_eps_params { + cairo_box_double_t bbox; +} cairo_eps_params_t; + +cairo_private cairo_int_status_t +_cairo_tag_parse_link_attributes (const char *attributes, cairo_link_attrs_t *link_attrs); + +cairo_private cairo_int_status_t +_cairo_tag_parse_dest_attributes (const char *attributes, cairo_dest_attrs_t *dest_attrs); + +cairo_private cairo_int_status_t +_cairo_tag_parse_ccitt_params (const char *attributes, cairo_ccitt_params_t *dest_attrs); + +cairo_private cairo_int_status_t +_cairo_tag_parse_eps_params (const char *attributes, cairo_eps_params_t *dest_attrs); + +#endif /* CAIRO_TAG_ATTRIBUTES_PRIVATE_H */ diff -Nru cairo-1.14.6/src/cairo-tag-stack.c cairo-1.15.10/src/cairo-tag-stack.c --- cairo-1.14.6/src/cairo-tag-stack.c 1970-01-01 00:00:00.000000000 +0000 +++ cairo-1.15.10/src/cairo-tag-stack.c 2017-12-07 02:14:36.000000000 +0000 @@ -0,0 +1,280 @@ +/* -*- Mode: c; c-basic-offset: 4; indent-tabs-mode: t; tab-width: 8; -*- */ +/* cairo - a vector graphics library with display and print output + * + * Copyright © 2016 Adrian Johnson + * + * This library is free software; you can redistribute it and/or + * modify it either under the terms of the GNU Lesser General Public + * License version 2.1 as published by the Free Software Foundation + * (the "LGPL") or, at your option, under the terms of the Mozilla + * Public License Version 1.1 (the "MPL"). If you do not alter this + * notice, a recipient may use your version of this file under either + * the MPL or the LGPL. + * + * You should have received a copy of the LGPL along with this library + * in the file COPYING-LGPL-2.1; if not, write to the Free Software + * Foundation, Inc., 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 Adrian Johnson. + * + * Contributor(s): + * Adrian Johnson + */ + +#include "cairoint.h" + +#include "cairo-tag-stack-private.h" + +/* Tagged PDF must have one of these tags at the top level */ +static const char * _cairo_tag_stack_tagged_pdf_top_level_element_list[] = +{ + "Document", + "Part", + "Art", + "Sect", + "Div", + NULL +}; + +/* List of valid tag names. Table numbers reference PDF 32000 */ +static const char * _cairo_tag_stack_struct_pdf_list[] = +{ + /* Table 333 - Grouping Elements */ + "Document", + "Part", + "Art", + "Sect", + "Div", + "BlockQuote", + "Caption", + "TOC", + "TOCI", + "Index", + "NonStruct", + "Private", + + /* Table 335 - Standard structure types for paragraphlike elements */ + "P", "H", + "H1", "H2", "H3", "H4", "H5", "H6", + + /* Table 336 - Standard structure types for list elements */ + "L", "LI", "Lbl", "LBody", + + /* Table 337 - Standard structure types for table elements */ + "Table", + "TR", "TH", "TD", + "THead", "TBody", "TFoot", + + /* Table 338 - Standard structure types for inline-level structure elements */ + "Span", + "Quote", + "Note", + "Reference", + "BibEntry", + "Code", + "Link", /* CAIRO_TAG_LINK */ + "Annot", + "Ruby", + "Warichu", + + /* Table 339 - Standard structure types for Ruby and Warichu elements */ + "RB", "RT", "RP", + "WT", "WP", + + /* Table 340 - Standard structure types for illustration elements */ + "Figure", + "Formula", + "Form", + + NULL +}; + +/* List of cairo specific tag names */ +static const char * _cairo_tag_stack_cairo_tag_list[] = +{ + CAIRO_TAG_DEST, + NULL +}; + +void +_cairo_tag_stack_init (cairo_tag_stack_t *stack) +{ + cairo_list_init (&stack->list); + stack->type = TAG_TREE_TYPE_NO_TAGS; + stack->size = 0; +} + +void +_cairo_tag_stack_fini (cairo_tag_stack_t *stack) +{ + while (! cairo_list_is_empty (&stack->list)) { + cairo_tag_stack_elem_t *elem; + + elem = cairo_list_first_entry (&stack->list, cairo_tag_stack_elem_t, link); + cairo_list_del (&elem->link); + free (elem->name); + free (elem->attributes); + free (elem); + } +} + +cairo_tag_stack_structure_type_t +_cairo_tag_stack_get_structure_type (cairo_tag_stack_t *stack) +{ + return stack->type; +} + +static cairo_bool_t +name_in_list (const char *name, const char **list) +{ + if (! name) + return FALSE; + + while (*list) { + if (strcmp (name, *list) == 0) + return TRUE; + list++; + } + + return FALSE; +} + +cairo_int_status_t +_cairo_tag_stack_push (cairo_tag_stack_t *stack, + const char *name, + const char *attributes) +{ + cairo_tag_stack_elem_t *elem; + + if (! name_in_list (name, _cairo_tag_stack_struct_pdf_list) && + ! name_in_list (name, _cairo_tag_stack_cairo_tag_list)) + { + stack->type = TAG_TYPE_INVALID; + return _cairo_error (CAIRO_STATUS_TAG_ERROR); + } + + if (stack->type == TAG_TREE_TYPE_NO_TAGS) { + if (name_in_list (name, _cairo_tag_stack_tagged_pdf_top_level_element_list)) + stack->type = TAG_TREE_TYPE_TAGGED; + else if (strcmp (name, "Link") == 0) + stack->type = TAG_TREE_TYPE_LINK_ONLY; + else if (name_in_list (name, _cairo_tag_stack_struct_pdf_list)) + stack->type = TAG_TREE_TYPE_STRUCTURE; + } else { + if (stack->type == TAG_TREE_TYPE_LINK_ONLY && + (strcmp (name, "Link") != 0) && + name_in_list (name, _cairo_tag_stack_struct_pdf_list)) + { + stack->type = TAG_TREE_TYPE_STRUCTURE; + } + } + + elem = malloc (sizeof(cairo_tag_stack_elem_t)); + if (unlikely (elem == NULL)) + return _cairo_error (CAIRO_STATUS_NO_MEMORY); + + elem->name = strdup (name); + if (unlikely (elem->name == NULL)) + return _cairo_error (CAIRO_STATUS_NO_MEMORY); + + if (attributes) { + elem->attributes = strdup (attributes); + if (unlikely (elem->attributes == NULL)) + return _cairo_error (CAIRO_STATUS_NO_MEMORY); + } else { + elem->attributes = NULL; + } + + elem->data = NULL; + + cairo_list_add_tail (&elem->link, &stack->list); + stack->size++; + + return CAIRO_STATUS_SUCCESS; +} + +cairo_private void +_cairo_tag_stack_set_top_data (cairo_tag_stack_t *stack, + void *data) +{ + cairo_tag_stack_elem_t *top; + + top = _cairo_tag_stack_top_elem (stack); + if (top) + top->data = data; +} + +cairo_int_status_t +_cairo_tag_stack_pop (cairo_tag_stack_t *stack, + const char *name, + cairo_tag_stack_elem_t **elem) +{ + cairo_tag_stack_elem_t *top; + + top = _cairo_tag_stack_top_elem (stack); + if (!top) { + stack->type = TAG_TYPE_INVALID; + return _cairo_error (CAIRO_STATUS_TAG_ERROR); + } + + cairo_list_del (&top->link); + stack->size--; + if (strcmp (top->name, name) != 0) { + stack->type = TAG_TYPE_INVALID; + _cairo_tag_stack_free_elem (top); + return _cairo_error (CAIRO_STATUS_TAG_ERROR); + } + + if (elem) + *elem = top; + else + _cairo_tag_stack_free_elem (top); + + return CAIRO_STATUS_SUCCESS; +} + +cairo_tag_stack_elem_t * +_cairo_tag_stack_top_elem (cairo_tag_stack_t *stack) +{ + if (cairo_list_is_empty (&stack->list)) + return NULL; + + return cairo_list_last_entry (&stack->list, cairo_tag_stack_elem_t, link); +} + +void +_cairo_tag_stack_free_elem (cairo_tag_stack_elem_t *elem) +{ + free (elem->name); + free (elem->attributes); + free (elem); +} + +cairo_tag_type_t +_cairo_tag_get_type (const char *name) +{ + if (! name_in_list (name, _cairo_tag_stack_struct_pdf_list) && + ! name_in_list (name, _cairo_tag_stack_cairo_tag_list)) + return TAG_TYPE_INVALID; + + if (strcmp(name, "Link") == 0) + return (TAG_TYPE_LINK | TAG_TYPE_STRUCTURE); + + if (strcmp(name, "cairo.dest") == 0) + return TAG_TYPE_DEST; + + return TAG_TYPE_STRUCTURE; +} diff -Nru cairo-1.14.6/src/cairo-tag-stack-private.h cairo-1.15.10/src/cairo-tag-stack-private.h --- cairo-1.14.6/src/cairo-tag-stack-private.h 1970-01-01 00:00:00.000000000 +0000 +++ cairo-1.15.10/src/cairo-tag-stack-private.h 2017-12-07 02:14:36.000000000 +0000 @@ -0,0 +1,107 @@ +/* -*- Mode: c; c-basic-offset: 4; indent-tabs-mode: t; tab-width: 8; -*- */ +/* cairo - a vector graphics library with display and print output + * + * Copyright © 2016 Adrian Johnson + * + * This library is free software; you can redistribute it and/or + * modify it either under the terms of the GNU Lesser General Public + * License version 2.1 as published by the Free Software Foundation + * (the "LGPL") or, at your option, under the terms of the Mozilla + * Public License Version 1.1 (the "MPL"). If you do not alter this + * notice, a recipient may use your version of this file under either + * the MPL or the LGPL. + * + * You should have received a copy of the LGPL along with this library + * in the file COPYING-LGPL-2.1; if not, write to the Free Software + * Foundation, Inc., 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 Adrian Johnson. + * + * Contributor(s): + * Adrian Johnson + */ + +#ifndef CAIRO_TAG_STACK_PRIVATE_H +#define CAIRO_TAG_STACK_PRIVATE_H + +#include "cairo-error-private.h" +#include "cairo-list-inline.h" + +/* The type of a single tag */ +typedef enum { + TAG_TYPE_INVALID = 0, + TAG_TYPE_STRUCTURE = 1, + TAG_TYPE_LINK = 2, + TAG_TYPE_DEST = 4, +} cairo_tag_type_t; + +/* The type of the structure tree. */ +typedef enum _cairo_tag_stack_structure_type { + TAG_TREE_TYPE_TAGGED, /* compliant with Tagged PDF */ + TAG_TREE_TYPE_STRUCTURE, /* valid structure but not 'Tagged PDF' compliant */ + TAG_TREE_TYPE_LINK_ONLY, /* contains Link tags only */ + TAG_TREE_TYPE_NO_TAGS, /* no tags used */ + TAG_TREE_TYPE_INVALID, /* invalid tag structure */ +} cairo_tag_stack_structure_type_t; + +typedef struct _cairo_tag_stack_elem { + char *name; + char *attributes; + void *data; + cairo_list_t link; + +} cairo_tag_stack_elem_t; + +typedef struct _cairo_tag_stack { + cairo_list_t list; + cairo_tag_stack_structure_type_t type; + int size; + +} cairo_tag_stack_t; + +cairo_private void +_cairo_tag_stack_init (cairo_tag_stack_t *stack); + +cairo_private void +_cairo_tag_stack_fini (cairo_tag_stack_t *stack); + +cairo_private cairo_tag_stack_structure_type_t +_cairo_tag_stack_get_structure_type (cairo_tag_stack_t *stack); + +cairo_private cairo_int_status_t +_cairo_tag_stack_push (cairo_tag_stack_t *stack, + const char *name, + const char *attributes); + +cairo_private void +_cairo_tag_stack_set_top_data (cairo_tag_stack_t *stack, + void *data); + +cairo_private cairo_int_status_t +_cairo_tag_stack_pop (cairo_tag_stack_t *stack, + const char *name, + cairo_tag_stack_elem_t **elem); + +cairo_private cairo_tag_stack_elem_t * +_cairo_tag_stack_top_elem (cairo_tag_stack_t *stack); + +cairo_private void +_cairo_tag_stack_free_elem (cairo_tag_stack_elem_t *elem); + +cairo_private cairo_tag_type_t +_cairo_tag_get_type (const char *name); + +#endif /* CAIRO_TAG_STACK_PRIVATE_H */ diff -Nru cairo-1.14.6/src/cairo-tee-surface.c cairo-1.15.10/src/cairo-tee-surface.c --- cairo-1.14.6/src/cairo-tee-surface.c 2015-10-27 21:04:30.000000000 +0000 +++ cairo-1.15.10/src/cairo-tee-surface.c 2017-12-07 02:14:36.000000000 +0000 @@ -435,7 +435,8 @@ _cairo_surface_init (&surface->base, &cairo_tee_surface_backend, master->device, - master->content); + master->content, + TRUE); /* is_vector */ _cairo_surface_wrapper_init (&surface->master, master); diff -Nru cairo-1.14.6/src/cairo-toy-font-face.c cairo-1.15.10/src/cairo-toy-font-face.c --- cairo-1.14.6/src/cairo-toy-font-face.c 2015-10-27 21:04:21.000000000 +0000 +++ cairo-1.15.10/src/cairo-toy-font-face.c 2017-12-07 02:13:45.000000000 +0000 @@ -39,7 +39,7 @@ * Behdad Esfahbod */ -#define _BSD_SOURCE /* for strdup() */ +#define _DEFAULT_SOURCE /* for strdup() */ #include "cairoint.h" #include "cairo-error-private.h" diff -Nru cairo-1.14.6/src/cairo-traps.c cairo-1.15.10/src/cairo-traps.c --- cairo-1.14.6/src/cairo-traps.c 2015-10-27 21:04:30.000000000 +0000 +++ cairo-1.15.10/src/cairo-traps.c 2017-12-07 02:14:36.000000000 +0000 @@ -113,7 +113,7 @@ if (traps->traps != traps->traps_embedded) free (traps->traps); - VG (VALGRIND_MAKE_MEM_NOACCESS (traps, sizeof (cairo_traps_t))); + VG (VALGRIND_MAKE_MEM_UNDEFINED (traps, sizeof (cairo_traps_t))); } /* make room for at least one more trap */ diff -Nru cairo-1.14.6/src/cairo-tristrip.c cairo-1.15.10/src/cairo-tristrip.c --- cairo-1.14.6/src/cairo-tristrip.c 2015-10-27 21:04:30.000000000 +0000 +++ cairo-1.15.10/src/cairo-tristrip.c 2017-12-07 02:14:36.000000000 +0000 @@ -58,7 +58,7 @@ if (strip->points != strip->points_embedded) free (strip->points); - VG (VALGRIND_MAKE_MEM_NOACCESS (strip, sizeof (cairo_tristrip_t))); + VG (VALGRIND_MAKE_MEM_UNDEFINED (strip, sizeof (cairo_tristrip_t))); } diff -Nru cairo-1.14.6/src/cairo-truetype-subset.c cairo-1.15.10/src/cairo-truetype-subset.c --- cairo-1.14.6/src/cairo-truetype-subset.c 2015-10-27 21:04:30.000000000 +0000 +++ cairo-1.15.10/src/cairo-truetype-subset.c 2017-12-07 02:14:36.000000000 +0000 @@ -40,7 +40,7 @@ * http://www.microsoft.com/typography/specs/default.htm */ -#define _BSD_SOURCE /* for snprintf(), strdup() */ +#define _DEFAULT_SOURCE /* for snprintf(), strdup() */ #include "cairoint.h" #include "cairo-array-private.h" @@ -77,22 +77,22 @@ struct { char *font_name; char *ps_name; - unsigned int num_glyphs; - int *widths; + int num_glyphs_in_face; /* glyphs in font */ long x_min, y_min, x_max, y_max; long ascent, descent; int units_per_em; } base; - subset_glyph_t *glyphs; + subset_glyph_t *glyphs; /* array size: num_glyphs_in_face + 2 */ const cairo_scaled_font_backend_t *backend; - int num_glyphs_in_face; + unsigned int num_glyphs; /* glyphs used */ + int *widths; /* array size: num_glyphs_in_face + 1 */ int checksum_index; cairo_array_t output; cairo_array_t string_offsets; unsigned long last_offset; unsigned long last_boundary; - int *parent_to_subset; + int *parent_to_subset; /* array size: num_glyphs_in_face + 1 */ cairo_status_t status; cairo_bool_t is_pdf; }; @@ -107,7 +107,6 @@ check (tt_maxp_t, 32); check (tt_name_record_t, 12); check (tt_name_t, 18); -check (tt_name_t, 18); check (tt_composite_glyph_t, 16); check (tt_glyph_data_t, 26); #undef check @@ -139,6 +138,7 @@ cairo_truetype_font_t **font_return) { cairo_status_t status; + cairo_bool_t is_synthetic; cairo_truetype_font_t *font; const cairo_scaled_font_backend_t *backend; tt_head_t head; @@ -159,9 +159,15 @@ * return CAIRO_INT_STATUS_UNSUPPORTED; */ - /* We need to use a fallback font generated from the synthesized outlines. */ - if (backend->is_synthetic && backend->is_synthetic (scaled_font_subset->scaled_font)) - return CAIRO_INT_STATUS_UNSUPPORTED; + /* We need to use a fallback font if this font differs from the glyf outlines. */ + if (backend->is_synthetic) { + status = backend->is_synthetic (scaled_font_subset->scaled_font, &is_synthetic); + if (unlikely (status)) + return status; + + if (is_synthetic) + return CAIRO_INT_STATUS_UNSUPPORTED; + } size = sizeof (tt_head_t); status = backend->load_truetype_table (scaled_font_subset->scaled_font, @@ -192,7 +198,7 @@ return _cairo_error (CAIRO_STATUS_NO_MEMORY); font->backend = backend; - font->num_glyphs_in_face = be16_to_cpu (maxp.num_glyphs); + font->base.num_glyphs_in_face = be16_to_cpu (maxp.num_glyphs); font->scaled_font_subset = scaled_font_subset; font->last_offset = 0; @@ -202,20 +208,24 @@ if (unlikely (status)) goto fail1; - font->glyphs = calloc (font->num_glyphs_in_face + 1, sizeof (subset_glyph_t)); + /* Add 2: +1 case font does not contain .notdef, and +1 because an extra + * entry is required to contain the end location of the last glyph. + */ + font->glyphs = calloc (font->base.num_glyphs_in_face + 2, sizeof (subset_glyph_t)); if (unlikely (font->glyphs == NULL)) { status = _cairo_error (CAIRO_STATUS_NO_MEMORY); goto fail1; } - font->parent_to_subset = calloc (font->num_glyphs_in_face, sizeof (int)); + /* Add 1 in case font does not contain .notdef */ + font->parent_to_subset = calloc (font->base.num_glyphs_in_face + 1, sizeof (int)); if (unlikely (font->parent_to_subset == NULL)) { status = _cairo_error (CAIRO_STATUS_NO_MEMORY); goto fail2; } font->is_pdf = is_pdf; - font->base.num_glyphs = 0; + font->num_glyphs = 0; font->base.x_min = (int16_t) be16_to_cpu (head.x_min); font->base.y_min = (int16_t) be16_to_cpu (head.y_min); font->base.x_max = (int16_t) be16_to_cpu (head.x_max); @@ -247,8 +257,9 @@ scaled_font_subset->subset_id); } - font->base.widths = calloc (font->num_glyphs_in_face, sizeof (int)); - if (unlikely (font->base.widths == NULL)) { + /* Add 1 in case font does not contain .notdef */ + font->widths = calloc (font->base.num_glyphs_in_face + 1, sizeof (int)); + if (unlikely (font->widths == NULL)) { status = _cairo_error (CAIRO_STATUS_NO_MEMORY); goto fail4; } @@ -266,7 +277,7 @@ fail5: _cairo_array_fini (&font->string_offsets); - free (font->base.widths); + free (font->widths); fail4: free (font->base.ps_name); fail3: @@ -285,7 +296,7 @@ cairo_truetype_font_destroy (cairo_truetype_font_t *font) { _cairo_array_fini (&font->string_offsets); - free (font->base.widths); + free (font->widths); free (font->base.ps_name); free (font->base.font_name); free (font->parent_to_subset); @@ -607,9 +618,9 @@ return _cairo_truetype_font_set_error (font, status); if (be16_to_cpu (header.index_to_loc_format) == 0) - size = sizeof (int16_t) * (font->num_glyphs_in_face + 1); + size = sizeof (int16_t) * (font->base.num_glyphs_in_face + 1); else - size = sizeof (int32_t) * (font->num_glyphs_in_face + 1); + size = sizeof (int32_t) * (font->base.num_glyphs_in_face + 1); u.bytes = malloc (size); if (unlikely (u.bytes == NULL)) @@ -621,7 +632,7 @@ return _cairo_truetype_font_set_error (font, status); start_offset = _cairo_array_num_elements (&font->output); - for (i = 0; i < font->base.num_glyphs; i++) { + for (i = 0; i < font->num_glyphs; i++) { index = font->glyphs[i].parent_index; if (be16_to_cpu (header.index_to_loc_format) == 0) { begin = be16_to_cpu (u.short_offsets[index]) * 2; @@ -653,16 +664,34 @@ if (unlikely (status)) goto FAIL; - if (size != 0) { - status = font->backend->load_truetype_table (font->scaled_font_subset->scaled_font, + if (size > 1) { + tt_glyph_data_t *glyph_data; + int num_contours; + + status = font->backend->load_truetype_table (font->scaled_font_subset->scaled_font, TT_TAG_glyf, begin, buffer, &size); if (unlikely (status)) goto FAIL; - status = cairo_truetype_font_remap_composite_glyph (font, buffer, size); - if (unlikely (status)) - goto FAIL; - } + glyph_data = (tt_glyph_data_t *) buffer; + num_contours = (int16_t)be16_to_cpu (glyph_data->num_contours); + if (num_contours < 0) { + status = cairo_truetype_font_remap_composite_glyph (font, buffer, size); + if (unlikely (status)) + goto FAIL; + } else if (num_contours == 0) { + /* num_contours == 0 is undefined in the Opentype + * spec. There are some embedded fonts that have a + * space glyph with num_contours = 0 that fails on + * some printers. The spec requires glyphs without + * contours to have a 0 size glyph entry in the loca + * table. + * + * If num_contours == 0, truncate the glyph to 0 size. + */ + _cairo_array_truncate (&font->output, _cairo_array_num_elements (&font->output) - size); + } + } } status = cairo_truetype_font_align_output (font, &next); @@ -731,7 +760,7 @@ if (unlikely (status)) return _cairo_truetype_font_set_error (font, status); - hhea->num_hmetrics = cpu_to_be16 ((uint16_t)(font->base.num_glyphs)); + hhea->num_hmetrics = cpu_to_be16 ((uint16_t)(font->num_glyphs)); return CAIRO_STATUS_SUCCESS; } @@ -761,7 +790,7 @@ num_hmetrics = be16_to_cpu(hhea.num_hmetrics); - for (i = 0; i < font->base.num_glyphs; i++) { + for (i = 0; i < font->num_glyphs; i++) { long_entry_size = 2 * sizeof (int16_t); short_entry_size = sizeof (int16_t); status = cairo_truetype_font_allocate_write_buffer (font, @@ -795,7 +824,7 @@ if (unlikely (status)) return _cairo_truetype_font_set_error (font, status); } - font->base.widths[i] = be16_to_cpu (p[0]); + font->widths[i] = be16_to_cpu (p[0]); } return CAIRO_STATUS_SUCCESS; @@ -822,10 +851,10 @@ if (be16_to_cpu (header.index_to_loc_format) == 0) { - for (i = 0; i < font->base.num_glyphs + 1; i++) + for (i = 0; i < font->num_glyphs + 1; i++) cairo_truetype_font_write_be16 (font, font->glyphs[i].location / 2); } else { - for (i = 0; i < font->base.num_glyphs + 1; i++) + for (i = 0; i < font->num_glyphs + 1; i++) cairo_truetype_font_write_be32 (font, font->glyphs[i].location); } @@ -853,7 +882,7 @@ if (unlikely (status)) return _cairo_truetype_font_set_error (font, status); - maxp->num_glyphs = cpu_to_be16 (font->base.num_glyphs); + maxp->num_glyphs = cpu_to_be16 (font->num_glyphs); return CAIRO_STATUS_SUCCESS; } @@ -997,13 +1026,13 @@ unsigned short glyph, unsigned short *out) { - if (glyph >= font->num_glyphs_in_face) + if (glyph >= font->base.num_glyphs_in_face) return CAIRO_INT_STATUS_UNSUPPORTED; if (font->parent_to_subset[glyph] == 0) { - font->parent_to_subset[glyph] = font->base.num_glyphs; - font->glyphs[font->base.num_glyphs].parent_index = glyph; - font->base.num_glyphs++; + font->parent_to_subset[glyph] = font->num_glyphs; + font->glyphs[font->num_glyphs].parent_index = glyph; + font->num_glyphs++; } *out = font->parent_to_subset[glyph]; @@ -1156,7 +1185,7 @@ goto fail3; } for (i = 0; i < font->scaled_font_subset->num_glyphs; i++) - truetype_subset->widths[i] = (double)font->base.widths[i]/font->base.units_per_em; + truetype_subset->widths[i] = (double)font->widths[i]/font->base.units_per_em; truetype_subset->x_min = (double)font->base.x_min/font->base.units_per_em; truetype_subset->y_min = (double)font->base.y_min/font->base.units_per_em; @@ -1292,11 +1321,14 @@ /* search for glyph in segments with rangeOffset=0 */ for (i = 0; i < num_segments; i++) { + uint16_t start = be16_to_cpu (start_code[i]); + uint16_t end = be16_to_cpu (end_code[i]); + + if (start == 0xffff && end == 0xffff) + break; + c = index - be16_to_cpu (delta[i]); - if (range_offset[i] == 0 && - c >= be16_to_cpu (start_code[i]) && - c <= be16_to_cpu (end_code[i])) - { + if (range_offset[i] == 0 && c >= start && c <= end) { *ucs4 = c; goto found; } @@ -1304,9 +1336,15 @@ /* search for glyph in segments with rangeOffset=1 */ for (i = 0; i < num_segments; i++) { + uint16_t start = be16_to_cpu (start_code[i]); + uint16_t end = be16_to_cpu (end_code[i]); + + if (start == 0xffff && end == 0xffff) + break; + if (range_offset[i] != 0) { uint16_t *glyph_ids = &range_offset[i] + be16_to_cpu (range_offset[i])/2; - int range_size = be16_to_cpu (end_code[i]) - be16_to_cpu (start_code[i]) + 1; + int range_size = end - start + 1; uint16_t g_id_be = cpu_to_be16 (index); int j; @@ -1316,7 +1354,7 @@ for (j = 0; j < range_size; j++) { if (glyph_ids[j] == g_id_be) { - *ucs4 = be16_to_cpu (start_code[i]) + j; + *ucs4 = start + j; goto found; } } @@ -1393,6 +1431,12 @@ return status; } +/* + * Sanity check on font name length as some broken fonts may return very long + * strings of garbage. 127 is maximum length of a PS name. + */ +#define MAX_FONT_NAME_LENGTH 127 + static cairo_status_t find_name (tt_name_t *name, int name_id, int platform, int encoding, int language, char **str_out) { @@ -1411,11 +1455,17 @@ be16_to_cpu (record->encoding) == encoding && (language == -1 || be16_to_cpu (record->language) == language)) { - str = malloc (be16_to_cpu (record->length) + 1); + len = be16_to_cpu (record->length); + if (platform == 3 && len > MAX_FONT_NAME_LENGTH*2) /* UTF-16 name */ + break; + + if (len > MAX_FONT_NAME_LENGTH) + break; + + str = malloc (len + 1); if (str == NULL) return _cairo_error (CAIRO_STATUS_NO_MEMORY); - len = be16_to_cpu (record->length); memcpy (str, ((char*)name) + be16_to_cpu (name->strings_offset) + be16_to_cpu (record->offset), len); diff -Nru cairo-1.14.6/src/cairo-type1-fallback.c cairo-1.15.10/src/cairo-type1-fallback.c --- cairo-1.14.6/src/cairo-type1-fallback.c 2015-10-27 21:04:21.000000000 +0000 +++ cairo-1.15.10/src/cairo-type1-fallback.c 2017-12-07 02:13:45.000000000 +0000 @@ -33,7 +33,7 @@ * Adrian Johnson */ -#define _BSD_SOURCE /* for snprintf(), strdup() */ +#define _DEFAULT_SOURCE /* for snprintf(), strdup() */ #include "cairoint.h" #include "cairo-array-private.h" diff -Nru cairo-1.14.6/src/cairo-type1-subset.c cairo-1.15.10/src/cairo-type1-subset.c --- cairo-1.14.6/src/cairo-type1-subset.c 2015-10-27 21:04:21.000000000 +0000 +++ cairo-1.15.10/src/cairo-type1-subset.c 2017-12-07 02:14:36.000000000 +0000 @@ -40,7 +40,7 @@ */ -#define _BSD_SOURCE /* for snprintf(), strdup() */ +#define _DEFAULT_SOURCE /* for snprintf(), strdup() */ #include "cairoint.h" #include "cairo-array-private.h" @@ -311,7 +311,7 @@ const char *decimal_point; int decimal_point_len; - decimal_point = cairo_get_locale_decimal_point (); + decimal_point = _cairo_get_locale_decimal_point (); decimal_point_len = strlen (decimal_point); assert (decimal_point_len != 0); @@ -1715,14 +1715,20 @@ { cairo_type1_font_subset_t font; cairo_status_t status; + cairo_bool_t is_synthetic; unsigned long length; unsigned int i; char buf[30]; - /* We need to use a fallback font generated from the synthesized outlines. */ - if (scaled_font_subset->scaled_font->backend->is_synthetic && - scaled_font_subset->scaled_font->backend->is_synthetic (scaled_font_subset->scaled_font)) - return CAIRO_INT_STATUS_UNSUPPORTED; + /* We need to use a fallback font if this font differs from the type1 outlines. */ + if (scaled_font_subset->scaled_font->backend->is_synthetic) { + status = scaled_font_subset->scaled_font->backend->is_synthetic (scaled_font_subset->scaled_font, &is_synthetic); + if (unlikely (status)) + return status; + + if (is_synthetic) + return CAIRO_INT_STATUS_UNSUPPORTED; + } status = _cairo_type1_font_subset_init (&font, scaled_font_subset, hex_encode); if (unlikely (status)) diff -Nru cairo-1.14.6/src/cairo-type3-glyph-surface.c cairo-1.15.10/src/cairo-type3-glyph-surface.c --- cairo-1.14.6/src/cairo-type3-glyph-surface.c 2015-10-27 21:04:30.000000000 +0000 +++ cairo-1.15.10/src/cairo-type3-glyph-surface.c 2017-12-07 02:14:36.000000000 +0000 @@ -78,7 +78,6 @@ cairo_bool_t ps) { cairo_type3_glyph_surface_t *surface; - cairo_matrix_t invert_y_axis; if (unlikely (stream != NULL && stream->status)) return _cairo_surface_create_in_error (stream->status); @@ -90,7 +89,8 @@ _cairo_surface_init (&surface->base, &cairo_type3_glyph_surface_backend, NULL, /* device */ - CAIRO_CONTENT_COLOR_ALPHA); + CAIRO_CONTENT_COLOR_ALPHA, + TRUE); /* is_vector */ surface->scaled_font = scaled_font; surface->stream = stream; @@ -101,8 +101,6 @@ * entry in the Type 3 dictionary. In the PDF backend this is an * identity matrix. */ surface->cairo_to_pdf = scaled_font->scale_inverse; - cairo_matrix_init_scale (&invert_y_axis, 1, -1); - cairo_matrix_multiply (&surface->cairo_to_pdf, &surface->cairo_to_pdf, &invert_y_axis); _cairo_pdf_operators_init (&surface->pdf_operators, surface->stream, @@ -294,15 +292,13 @@ cairo_type3_glyph_surface_t *surface = abstract_surface; cairo_int_status_t status; cairo_scaled_font_t *font; - cairo_matrix_t new_ctm, invert_y_axis; + cairo_matrix_t new_ctm; status = _cairo_surface_clipper_set_clip (&surface->clipper, clip); if (unlikely (status)) return status; - cairo_matrix_init_scale (&invert_y_axis, 1, -1); - cairo_matrix_multiply (&new_ctm, &invert_y_axis, &scaled_font->ctm); - cairo_matrix_multiply (&new_ctm, &surface->cairo_to_pdf, &new_ctm); + cairo_matrix_multiply (&new_ctm, &surface->cairo_to_pdf, &scaled_font->ctm); font = cairo_scaled_font_create (scaled_font->font_face, &scaled_font->font_matrix, &new_ctm, @@ -387,14 +383,10 @@ x = _cairo_fixed_to_double (scaled_glyph->bbox.p1.x); y = _cairo_fixed_to_double (scaled_glyph->bbox.p2.y); - mat.xx = image->width; - mat.xy = 0; - mat.yx = 0; - mat.yy = image->height; - mat.x0 = x; - mat.y0 = y; + cairo_matrix_init(&mat, image->width, 0, + 0, -image->height, + x, y); cairo_matrix_multiply (&mat, &mat, &surface->scaled_font->scale_inverse); - mat.y0 *= -1; return _cairo_type3_glyph_surface_emit_image (surface, image, &mat); } @@ -523,9 +515,9 @@ "%f 0 %f %f %f %f d1\n", x_advance, _cairo_fixed_to_double (bbox->p1.x), - - _cairo_fixed_to_double (bbox->p2.y), + _cairo_fixed_to_double (bbox->p1.y), _cairo_fixed_to_double (bbox->p2.x), - - _cairo_fixed_to_double (bbox->p1.y)); + _cairo_fixed_to_double (bbox->p2.y)); if (status == CAIRO_INT_STATUS_SUCCESS) { cairo_output_stream_t *mem_stream; diff -Nru cairo-1.14.6/src/cairo-unicode.c cairo-1.15.10/src/cairo-unicode.c --- cairo-1.14.6/src/cairo-unicode.c 2015-10-27 21:04:21.000000000 +0000 +++ cairo-1.15.10/src/cairo-unicode.c 2017-12-07 02:14:36.000000000 +0000 @@ -342,6 +342,36 @@ return bytes; } +/** + * _cairo_ucs4_to_utf16: + * @unicode: a UCS-4 character + * @utf16: buffer to write utf16 string into. Must have at least 2 + * elements. Or %NULL. + * + * This space left intentionally blank. + * + * Return value: Number of elements in the utf16 string or 0 if an + * invalid unicode character + **/ +int +_cairo_ucs4_to_utf16 (uint32_t unicode, + uint16_t *utf16) +{ + if (unicode < 0x10000) { + if (utf16) + utf16[0] = unicode; + return 1; + } else if (unicode < 0x110000) { + if (utf16) { + utf16[0] = (unicode - 0x10000) / 0x400 + 0xd800; + utf16[1] = (unicode - 0x10000) % 0x400 + 0xdc00; + } + return 2; + } else { + return 0; + } +} + #if CAIRO_HAS_UTF8_TO_UTF16 /** * _cairo_utf8_to_utf16: @@ -401,12 +431,7 @@ for (i = 0; i < n16;) { uint32_t wc = _utf8_get_char (in); - if (wc < 0x10000) { - str16[i++] = wc; - } else { - str16[i++] = (wc - 0x10000) / 0x400 + 0xd800; - str16[i++] = (wc - 0x10000) % 0x400 + 0xdc00; - } + i += _cairo_ucs4_to_utf16 (wc, str16 + i); in = UTF8_NEXT_CHAR (in); } diff -Nru cairo-1.14.6/src/cairo-vg-surface.c cairo-1.15.10/src/cairo-vg-surface.c --- cairo-1.14.6/src/cairo-vg-surface.c 2015-10-27 21:04:30.000000000 +0000 +++ cairo-1.15.10/src/cairo-vg-surface.c 2017-12-07 02:14:36.000000000 +0000 @@ -1529,7 +1529,8 @@ _cairo_surface_init (&surface->base, &cairo_vg_surface_backend, NULL, /* device */ - _vg_format_to_content (format)); + _vg_format_to_content (format), + FALSE); /* is_vector */ surface->width = width; surface->height = height; diff -Nru cairo-1.14.6/src/cairo-win32.h cairo-1.15.10/src/cairo-win32.h --- cairo-1.14.6/src/cairo-win32.h 2015-10-29 00:37:41.000000000 +0000 +++ cairo-1.15.10/src/cairo-win32.h 2017-12-07 02:14:36.000000000 +0000 @@ -49,6 +49,10 @@ cairo_win32_surface_create (HDC hdc); cairo_public cairo_surface_t * +cairo_win32_surface_create_with_format (HDC hdc, + cairo_format_t format); + +cairo_public cairo_surface_t * cairo_win32_printing_surface_create (HDC hdc); cairo_public cairo_surface_t * diff -Nru cairo-1.14.6/src/cairo-xcb-surface.c cairo-1.15.10/src/cairo-xcb-surface.c --- cairo-1.14.6/src/cairo-xcb-surface.c 2015-10-29 00:11:41.000000000 +0000 +++ cairo-1.15.10/src/cairo-xcb-surface.c 2017-12-07 02:14:36.000000000 +0000 @@ -833,12 +833,13 @@ image = (cairo_image_surface_t *) _get_image (surface, TRUE, 0, 0, surface->width, surface->height); + if (image->base.status != CAIRO_STATUS_SUCCESS) + return &image->base; + /* If there was a deferred clear, _get_image applied it */ - if (image->base.status == CAIRO_STATUS_SUCCESS) { - surface->deferred_clear = FALSE; + surface->deferred_clear = FALSE; - surface->fallback = image; - } + surface->fallback = image; return &surface->fallback->base; } @@ -1081,7 +1082,8 @@ _cairo_surface_init (&surface->base, &_cairo_xcb_surface_backend, &screen->connection->device, - _cairo_content_from_pixman_format (pixman_format)); + _cairo_content_from_pixman_format (pixman_format), + FALSE); /* is_vector */ surface->connection = _cairo_xcb_connection_reference (screen->connection); surface->screen = screen; diff -Nru cairo-1.14.6/src/cairo-xcb-surface-core.c cairo-1.15.10/src/cairo-xcb-surface-core.c --- cairo-1.14.6/src/cairo-xcb-surface-core.c 2015-10-27 21:04:30.000000000 +0000 +++ cairo-1.15.10/src/cairo-xcb-surface-core.c 2017-12-07 02:14:36.000000000 +0000 @@ -93,7 +93,8 @@ _cairo_surface_init (&surface->base, &_cairo_xcb_pixmap_backend, NULL, - target->base.content); + target->base.content, + FALSE); /* is_vector */ surface->connection = target->connection; surface->screen = target->screen; @@ -126,7 +127,8 @@ _cairo_surface_init (&surface->base, &_cairo_xcb_pixmap_backend, NULL, - target->base.content); + target->base.content, + FALSE); /* is_vector */ surface->connection = target->connection; surface->screen = target->screen; diff -Nru cairo-1.14.6/src/cairo-xcb-surface-render.c cairo-1.15.10/src/cairo-xcb-surface-render.c --- cairo-1.14.6/src/cairo-xcb-surface-render.c 2015-10-27 21:04:30.000000000 +0000 +++ cairo-1.15.10/src/cairo-xcb-surface-render.c 2017-12-07 02:14:36.000000000 +0000 @@ -122,7 +122,8 @@ _cairo_surface_init (&surface->base, &_cairo_xcb_picture_backend, &screen->connection->device, - _cairo_content_from_pixman_format (pixman_format)); + _cairo_content_from_pixman_format (pixman_format), + FALSE); /* is_vector */ cairo_list_add (&surface->link, &screen->pictures); @@ -3399,8 +3400,6 @@ } } - dst->deferred_clear = FALSE; /* assert(trap extents == extents); */ - status = _composite_traps (&info, dst, CAIRO_OPERATOR_SOURCE, mask_pattern, dst_x, dst_y, diff -Nru cairo-1.14.6/src/cairo-xlib-core-compositor.c cairo-1.15.10/src/cairo-xlib-core-compositor.c --- cairo-1.14.6/src/cairo-xlib-core-compositor.c 2015-10-27 21:04:21.000000000 +0000 +++ cairo-1.15.10/src/cairo-xlib-core-compositor.c 2017-12-07 02:14:36.000000000 +0000 @@ -632,9 +632,10 @@ const cairo_compositor_t * _cairo_xlib_core_compositor_get (void) { + static cairo_atomic_once_t once = CAIRO_ATOMIC_ONCE_INIT; static cairo_compositor_t compositor; - if (compositor.delegate == NULL) { + if (_cairo_atomic_init_once_enter(&once)) { compositor.delegate = _cairo_xlib_fallback_compositor_get (); compositor.paint = _cairo_xlib_core_compositor_paint; @@ -642,6 +643,8 @@ compositor.fill = _cairo_xlib_core_compositor_fill; compositor.stroke = _cairo_xlib_core_compositor_stroke; compositor.glyphs = NULL; /* XXX PolyGlyph? */ + + _cairo_atomic_init_once_leave(&once); } return &compositor; diff -Nru cairo-1.14.6/src/cairo-xlib-render-compositor.c cairo-1.15.10/src/cairo-xlib-render-compositor.c --- cairo-1.14.6/src/cairo-xlib-render-compositor.c 2015-10-27 21:04:30.000000000 +0000 +++ cairo-1.15.10/src/cairo-xlib-render-compositor.c 2017-12-07 02:14:36.000000000 +0000 @@ -965,7 +965,7 @@ cairo_list_del (&priv->link); status = _cairo_xlib_display_acquire (priv->device, &display); - if (status) + if (unlikely (status)) /* this should be impossible but leak just in case */ goto BAIL; for (i = 0; i < NUM_GLYPHSETS; i++) { @@ -978,7 +978,7 @@ cairo_device_release (&display->base); BAIL: - cairo_device_destroy (&display->base); + cairo_device_destroy (priv->device); free (priv); } @@ -1725,9 +1725,10 @@ const cairo_compositor_t * _cairo_xlib_mask_compositor_get (void) { + static cairo_atomic_once_t once = CAIRO_ATOMIC_ONCE_INIT; static cairo_mask_compositor_t compositor; - if (compositor.base.delegate == NULL) { + if (_cairo_atomic_init_once_enter(&once)) { _cairo_mask_compositor_init (&compositor, _cairo_xlib_fallback_compositor_get ()); @@ -1745,6 +1746,8 @@ compositor.composite_boxes = composite_boxes; compositor.check_composite_glyphs = check_composite_glyphs; compositor.composite_glyphs = composite_glyphs; + + _cairo_atomic_init_once_leave(&once); } return &compositor.base; @@ -1973,9 +1976,10 @@ const cairo_compositor_t * _cairo_xlib_traps_compositor_get (void) { + static cairo_atomic_once_t once = CAIRO_ATOMIC_ONCE_INIT; static cairo_traps_compositor_t compositor; - if (compositor.base.delegate == NULL) { + if (_cairo_atomic_init_once_enter(&once)) { _cairo_traps_compositor_init (&compositor, _cairo_xlib_mask_compositor_get ()); @@ -1997,6 +2001,8 @@ compositor.composite_tristrip = composite_tristrip; compositor.check_composite_glyphs = check_composite_glyphs; compositor.composite_glyphs = composite_glyphs; + + _cairo_atomic_init_once_leave(&once); } return &compositor.base; diff -Nru cairo-1.14.6/src/cairo-xlib-source.c cairo-1.15.10/src/cairo-xlib-source.c --- cairo-1.14.6/src/cairo-xlib-source.c 2015-10-27 21:04:30.000000000 +0000 +++ cairo-1.15.10/src/cairo-xlib-source.c 2017-12-07 02:14:36.000000000 +0000 @@ -120,7 +120,8 @@ _cairo_surface_init (&source->base, &cairo_xlib_source_backend, NULL, /* device */ - CAIRO_CONTENT_COLOR_ALPHA); + CAIRO_CONTENT_COLOR_ALPHA, + FALSE); /* is_vector */ /* The source exists only within an operation */ source->picture = picture; @@ -626,7 +627,8 @@ _cairo_surface_init (&source->base, &cairo_xlib_source_backend, NULL, /* device */ - CAIRO_CONTENT_COLOR_ALPHA); + CAIRO_CONTENT_COLOR_ALPHA, + FALSE); /* is_vector */ pa.subwindow_mode = IncludeInferiors; source->picture = XRenderCreatePicture (dpy, @@ -971,7 +973,8 @@ _cairo_surface_init (&proxy->source.base, &cairo_xlib_proxy_backend, dst->base.device, - src->content); + src->content, + src->is_vector); proxy->source.dpy = dst->display->display; proxy->source.picture = XRenderCreatePicture (proxy->source.dpy, diff -Nru cairo-1.14.6/src/cairo-xlib-surface.c cairo-1.15.10/src/cairo-xlib-surface.c --- cairo-1.14.6/src/cairo-xlib-surface.c 2015-10-27 21:04:30.000000000 +0000 +++ cairo-1.15.10/src/cairo-xlib-surface.c 2017-12-07 02:14:36.000000000 +0000 @@ -189,12 +189,6 @@ #define CAIRO_ASSUME_PIXMAP 20 -static const XTransform identity = { { - { 1 << 16, 0x00000, 0x00000 }, - { 0x00000, 1 << 16, 0x00000 }, - { 0x00000, 0x00000, 1 << 16 }, -} }; - static Visual * _visual_for_xrender_format(Screen *screen, XRenderPictFormat *xrender_format) @@ -793,6 +787,7 @@ _cairo_xlib_shm_surface_get_ximage (&image->base, &shm_image); + XSync (display->display, False); old_handler = XSetErrorHandler (_noop_error_handler); success = XShmGetImage (display->display, surface->drawable, @@ -807,12 +802,14 @@ } cairo_surface_destroy (&image->base); + image = NULL; } } if (surface->use_pixmap == 0) { cairo_xlib_error_func_t old_handler; + XSync (display->display, False); old_handler = XSetErrorHandler (_noop_error_handler); ximage = XGetImage (display->display, @@ -1011,7 +1008,8 @@ cairo_device_release (&display->base); if (unlikely (status)) { - cairo_surface_destroy (&image->base); + if (image) + cairo_surface_destroy (&image->base); return _cairo_surface_create_in_error (status); } @@ -1796,7 +1794,8 @@ _cairo_surface_init (&surface->base, &cairo_xlib_surface_backend, screen->device, - _xrender_format_to_content (xrender_format)); + _xrender_format_to_content (xrender_format), + FALSE); /* is_vector */ surface->screen = screen; surface->compositor = display->compositor; diff -Nru cairo-1.14.6/src/cairo-xlib-surface-shm.c cairo-1.15.10/src/cairo-xlib-surface-shm.c --- cairo-1.14.6/src/cairo-xlib-surface-shm.c 2015-10-27 21:04:30.000000000 +0000 +++ cairo-1.15.10/src/cairo-xlib-surface-shm.c 2017-12-07 02:14:36.000000000 +0000 @@ -441,7 +441,7 @@ ev.type = display->shm->event; ev.send_event = 1; /* XXX or lie? */ - ev.serial = NextRequest (display->display); + ev.serial = XNextRequest (display->display); ev.drawable = display->shm->window; ev.major_code = display->shm->opcode; ev.minor_code = X_ShmPutImage; @@ -599,7 +599,7 @@ goto cleanup; } - pool->attached = NextRequest (dpy); + pool->attached = XNextRequest (dpy); success = XShmAttach (dpy, &pool->shm); #if !IPC_RMID_DEFERRED_RELEASE XSync (dpy, FALSE); @@ -821,7 +821,8 @@ _cairo_surface_init (&shm->image.base, &cairo_xlib_shm_surface_backend, other->base.device, - _cairo_content_from_pixman_format (format)); + _cairo_content_from_pixman_format (format), + FALSE); /* is_vector */ if (_cairo_xlib_display_acquire (other->base.device, &display)) goto cleanup_shm; @@ -1199,7 +1200,7 @@ cairo_xlib_shm_surface_t *shm = (cairo_xlib_shm_surface_t *) _shm; cairo_xlib_display_t *display = (cairo_xlib_display_t *) _shm->device; - shm->active = NextRequest (display->display); + shm->active = XNextRequest (display->display); } void @@ -1241,7 +1242,7 @@ cairo_xlib_display_t *display = (cairo_xlib_display_t *) surface->device; cairo_xlib_shm_surface_t *shm = (cairo_xlib_shm_surface_t *) surface; - display->shm->last_event = shm->active = NextRequest (display->display); + display->shm->last_event = shm->active = XNextRequest (display->display); return &shm->info->pool->shm; } diff -Nru cairo-1.14.6/src/cairo-xlib-xcb-surface.c cairo-1.15.10/src/cairo-xlib-xcb-surface.c --- cairo-1.14.6/src/cairo-xlib-xcb-surface.c 2015-10-27 21:04:21.000000000 +0000 +++ cairo-1.15.10/src/cairo-xlib-xcb-surface.c 2017-12-07 02:14:36.000000000 +0000 @@ -447,7 +447,8 @@ _cairo_surface_init (&surface->base, &_cairo_xlib_xcb_surface_backend, _cairo_xlib_xcb_device_create (dpy, xcb->device), - xcb->content); + xcb->content, + FALSE); /* is_vector */ /* _cairo_surface_init() got another reference to the device, drop ours */ cairo_device_destroy (surface->base.device); diff -Nru cairo-1.14.6/src/cairo-xml-surface.c cairo-1.15.10/src/cairo-xml-surface.c --- cairo-1.14.6/src/cairo-xml-surface.c 2015-10-27 21:04:30.000000000 +0000 +++ cairo-1.15.10/src/cairo-xml-surface.c 2017-12-07 02:14:36.000000000 +0000 @@ -1105,7 +1105,8 @@ _cairo_surface_init (&surface->base, &_cairo_xml_surface_backend, device, - content); + content, + TRUE); /* is_vector */ surface->width = width; surface->height = height; diff -Nru cairo-1.14.6/src/drm/cairo-drm-bo.c cairo-1.15.10/src/drm/cairo-drm-bo.c --- cairo-1.14.6/src/drm/cairo-drm-bo.c 2015-10-27 21:04:21.000000000 +0000 +++ cairo-1.15.10/src/drm/cairo-drm-bo.c 2017-12-07 02:14:36.000000000 +0000 @@ -28,46 +28,15 @@ */ #include "cairoint.h" - #include "cairo-drm-private.h" -#include "cairo-drm-ioctl-private.h" - #include "cairo-error-private.h" #include #include +#include #define ERR_DEBUG(x) x -struct drm_gem_close { - /** Handle of the object to be closed. */ - uint32_t handle; - uint32_t pad; -}; - -struct drm_gem_flink { - /** Handle for the object being named */ - uint32_t handle; - - /** Returned global name */ - uint32_t name; -}; - -struct drm_gem_open { - /** Name of object being opened */ - uint32_t name; - - /** Returned handle for the object */ - uint32_t handle; - - /** Returned size of the object */ - uint64_t size; -}; - -#define DRM_IOCTL_GEM_CLOSE DRM_IOW (0x09, struct drm_gem_close) -#define DRM_IOCTL_GEM_FLINK DRM_IOWR(0x0a, struct drm_gem_flink) -#define DRM_IOCTL_GEM_OPEN DRM_IOWR(0x0b, struct drm_gem_open) - cairo_status_t _cairo_drm_bo_open_for_name (const cairo_drm_device_t *dev, cairo_drm_bo_t *bo, diff -Nru cairo-1.14.6/src/drm/cairo-drm-i915-glyphs.c cairo-1.15.10/src/drm/cairo-drm-i915-glyphs.c --- cairo-1.14.6/src/drm/cairo-drm-i915-glyphs.c 2015-10-27 21:04:21.000000000 +0000 +++ cairo-1.15.10/src/drm/cairo-drm-i915-glyphs.c 2017-12-07 02:14:36.000000000 +0000 @@ -39,6 +39,7 @@ #include "cairo-drm-i915-private.h" #include "cairo-error-private.h" #include "cairo-rtree-private.h" +#include "cairo-clip-inline.h" static void i915_emit_glyph_rectangle_zero (i915_device_t *device, diff -Nru cairo-1.14.6/src/drm/cairo-drm-i915-shader.c cairo-1.15.10/src/drm/cairo-drm-i915-shader.c --- cairo-1.14.6/src/drm/cairo-drm-i915-shader.c 2015-10-27 21:04:21.000000000 +0000 +++ cairo-1.15.10/src/drm/cairo-drm-i915-shader.c 2017-12-07 02:14:36.000000000 +0000 @@ -38,6 +38,7 @@ #include "cairo-surface-offset-private.h" #include "cairo-surface-subsurface-private.h" #include "cairo-surface-snapshot-private.h" +#include "cairo-image-surface-private.h" #if 0 static cairo_status_t diff -Nru cairo-1.14.6/src/drm/cairo-drm-i915-surface.c cairo-1.15.10/src/drm/cairo-drm-i915-surface.c --- cairo-1.14.6/src/drm/cairo-drm-i915-surface.c 2015-10-27 21:04:21.000000000 +0000 +++ cairo-1.15.10/src/drm/cairo-drm-i915-surface.c 2017-12-07 02:14:36.000000000 +0000 @@ -94,7 +94,6 @@ #include "cairoint.h" #include "cairo-drm-private.h" -#include "cairo-drm-ioctl-private.h" #include "cairo-drm-intel-private.h" #include "cairo-drm-intel-command-private.h" #include "cairo-drm-intel-ioctl-private.h" @@ -110,6 +109,7 @@ #include "cairo-path-fixed-private.h" #include "cairo-region-private.h" #include "cairo-surface-offset-private.h" +#include "cairo-image-surface-private.h" #include #include diff -Nru cairo-1.14.6/src/drm/cairo-drm-i965-surface.c cairo-1.15.10/src/drm/cairo-drm-i965-surface.c --- cairo-1.14.6/src/drm/cairo-drm-i965-surface.c 2015-10-27 21:04:21.000000000 +0000 +++ cairo-1.15.10/src/drm/cairo-drm-i965-surface.c 2017-12-07 02:14:36.000000000 +0000 @@ -48,7 +48,6 @@ #include "cairoint.h" #include "cairo-drm-private.h" -#include "cairo-drm-ioctl-private.h" #include "cairo-drm-intel-private.h" #include "cairo-drm-intel-command-private.h" #include "cairo-drm-intel-ioctl-private.h" diff -Nru cairo-1.14.6/src/drm/cairo-drm-intel-brw-eu.h cairo-1.15.10/src/drm/cairo-drm-intel-brw-eu.h --- cairo-1.14.6/src/drm/cairo-drm-intel-brw-eu.h 2015-10-27 21:04:21.000000000 +0000 +++ cairo-1.15.10/src/drm/cairo-drm-intel-brw-eu.h 2017-12-07 02:14:36.000000000 +0000 @@ -32,6 +32,7 @@ #ifndef CAIRO_DRM_INTEL_BRW_EU_H #define CAIRO_DRM_INTEL_BRW_EU_H +#include "cairo.h" #include "cairo-drm-intel-brw-structs.h" #include "cairo-drm-intel-brw-defines.h" diff -Nru cairo-1.14.6/src/drm/cairo-drm-intel-brw-structs.h cairo-1.15.10/src/drm/cairo-drm-intel-brw-structs.h --- cairo-1.14.6/src/drm/cairo-drm-intel-brw-structs.h 2015-10-27 21:04:21.000000000 +0000 +++ cairo-1.15.10/src/drm/cairo-drm-intel-brw-structs.h 2017-12-07 02:14:36.000000000 +0000 @@ -28,6 +28,7 @@ #ifndef CAIRO_DRM_INTEL_BRW_STRUCTS_H #define CAIRO_DRM_INTEL_BRW_STRUCTS_H +#include "cairo.h" #include "cairo-types-private.h" /* Command packets: diff -Nru cairo-1.14.6/src/drm/cairo-drm-intel.c cairo-1.15.10/src/drm/cairo-drm-intel.c --- cairo-1.14.6/src/drm/cairo-drm-intel.c 2015-10-27 21:04:21.000000000 +0000 +++ cairo-1.15.10/src/drm/cairo-drm-intel.c 2017-12-07 02:14:36.000000000 +0000 @@ -30,16 +30,18 @@ #include "cairoint.h" #include "cairo-drm-private.h" -#include "cairo-drm-ioctl-private.h" #include "cairo-drm-intel-private.h" #include "cairo-drm-intel-ioctl-private.h" #include "cairo-error-private.h" #include "cairo-freelist-private.h" +#include "cairo-pattern-private.h" +#include "cairo-image-surface-private.h" #include #include #include +#include #define GLYPH_CACHE_WIDTH 1024 #define GLYPH_CACHE_HEIGHT 1024 @@ -52,7 +54,7 @@ int intel_get (int fd, int param) { - struct intel_getparam gp; + struct drm_i915_getparam gp; int value; gp.param = param; @@ -528,50 +530,6 @@ bo->_stride = bo->stride; } -cairo_surface_t * -intel_bo_get_image (const intel_device_t *device, - intel_bo_t *bo, - const cairo_drm_surface_t *surface) -{ - cairo_image_surface_t *image; - uint8_t *dst; - int size, row; - - image = (cairo_image_surface_t *) - cairo_image_surface_create (surface->format, - surface->width, - surface->height); - if (unlikely (image->base.status)) - return &image->base; - - intel_bo_set_tiling (device, bo); - - if (bo->tiling == I915_TILING_NONE && image->stride == surface->stride) { - size = surface->stride * surface->height; - intel_bo_read (device, bo, 0, size, image->data); - } else { - const uint8_t *src; - - src = intel_bo_map (device, bo); - if (unlikely (src == NULL)) - return _cairo_surface_create_in_error (_cairo_error (CAIRO_STATUS_NO_MEMORY)); - - size = surface->width; - if (surface->format != CAIRO_FORMAT_A8) - size *= 4; - - row = surface->height; - dst = image->data; - while (row--) { - memcpy (dst, src, size); - dst += image->stride; - src += surface->stride; - } - } - - return &image->base; -} - static cairo_status_t _intel_bo_put_a1_image (intel_device_t *device, intel_bo_t *bo, diff -Nru cairo-1.14.6/src/drm/cairo-drm-intel-ioctl-private.h cairo-1.15.10/src/drm/cairo-drm-intel-ioctl-private.h --- cairo-1.14.6/src/drm/cairo-drm-intel-ioctl-private.h 2015-10-27 21:04:21.000000000 +0000 +++ cairo-1.15.10/src/drm/cairo-drm-intel-ioctl-private.h 2017-12-07 02:14:36.000000000 +0000 @@ -32,410 +32,13 @@ #include "cairo-drm-intel-command-private.h" -#define I915_PARAM_IRQ_ACTIVE 1 -#define I915_PARAM_ALLOW_BATCHBUFFER 2 -#define I915_PARAM_LAST_DISPATCH 3 -#define I915_PARAM_CHIPSET_ID 4 -#define I915_PARAM_HAS_GEM 5 -#define I915_PARAM_NUM_FENCES_AVAIL 6 -#define I915_PARAM_HAS_OVERLAY 7 -#define I915_PARAM_HAS_PAGEFLIPPING 8 -#define I915_PARAM_HAS_EXECBUF2 9 - -struct intel_getparam { - int param; - int *value; -}; - - -/* @{ - * Intel memory domains - * - * Most of these just align with the various caches in - * the system and are used to flush and invalidate as - * objects end up cached in different domains. - */ -/* CPU cache */ -#define I915_GEM_DOMAIN_CPU 0x00000001 -/* Render cache, used by 2D and 3D drawing */ -#define I915_GEM_DOMAIN_RENDER 0x00000002 -/* Sampler cache, used by texture engine */ -#define I915_GEM_DOMAIN_SAMPLER 0x00000004 -/* Command queue, used to load batch buffers */ -#define I915_GEM_DOMAIN_COMMAND 0x00000008 -/* Instruction cache, used by shader programs */ -#define I915_GEM_DOMAIN_INSTRUCTION 0x00000010 -/* Vertex address cache */ -#define I915_GEM_DOMAIN_VERTEX 0x00000020 -/* GTT domain - aperture and scanout */ -#define I915_GEM_DOMAIN_GTT 0x00000040 -/* @} */ - -#define I915_TILING_NONE 0 -#define I915_TILING_X 1 -#define I915_TILING_Y 2 - -#define I915_BIT_6_SWIZZLE_NONE 0 -#define I915_BIT_6_SWIZZLE_9 1 -#define I915_BIT_6_SWIZZLE_9_10 2 -#define I915_BIT_6_SWIZZLE_9_11 3 -#define I915_BIT_6_SWIZZLE_9_10_11 4 - -#define DRM_I915_GEM_EXECBUFFER 0x14 -#define DRM_I915_GEM_BUSY 0x17 -#define DRM_I915_GEM_THROTTLE 0x18 -#define DRM_I915_GEM_CREATE 0x1b -#define DRM_I915_GEM_PREAD 0x1c -#define DRM_I915_GEM_PWRITE 0x1d -#define DRM_I915_GEM_MMAP 0x1e -#define DRM_I915_GEM_SET_DOMAIN 0x1f -#define DRM_I915_GEM_SET_TILING 0x21 -#define DRM_I915_GEM_GET_TILING 0x22 -#define DRM_I915_GEM_GET_APERTURE 0x23 -#define DRM_I915_GEM_MMAP_GTT 0x24 - -struct drm_i915_gem_create { - /* - * Requested size for the object. - * - * The (page-aligned) allocated size for the object will be returned. - */ - uint64_t size; - /* - * Returned handle for the object. - * - * Object handles are nonzero. - */ - uint32_t handle; - uint32_t pad; -}; - -struct drm_i915_gem_pread { - /* Handle for the object being read. */ - uint32_t handle; - uint32_t pad; - /* Offset into the object to read from */ - uint64_t offset; - /* Length of data to read */ - uint64_t size; - /* - * Pointer to write the data into. - * - * This is a fixed-size type for 32/64 compatibility. - */ - uint64_t data_ptr; -}; - -struct drm_i915_gem_pwrite { - /* Handle for the object being written to. */ - uint32_t handle; - uint32_t pad; - /* Offset into the object to write to */ - uint64_t offset; - /* Length of data to write */ - uint64_t size; - /* - * Pointer to read the data from. - * - * This is a fixed-size type for 32/64 compatibility. - */ - uint64_t data_ptr; -}; - -struct drm_i915_gem_mmap { - /* Handle for the object being mapped. */ - uint32_t handle; - uint32_t pad; - /* Offset in the object to map. */ - uint64_t offset; - /* - * Length of data to map. - * - * The value will be page-aligned. - */ - uint64_t size; - /* - * Returned pointer the data was mapped at. - * - * This is a fixed-size type for 32/64 compatibility. - */ - uint64_t addr_ptr; -}; - -struct drm_i915_gem_mmap_gtt { - /* Handle for the object being mapped. */ - uint32_t handle; - uint32_t pad; - /* - * Fake offset to use for subsequent mmap call - * - * This is a fixed-size type for 32/64 compatibility. - */ - uint64_t offset; -}; - -struct drm_i915_gem_set_domain { - /* Handle for the object */ - uint32_t handle; - - /* New read domains */ - uint32_t read_domains; - - /* New write domain */ - uint32_t write_domain; -}; - -struct drm_i915_gem_relocation_entry { - /* - * Handle of the buffer being pointed to by this relocation entry. - * - * It's appealing to make this be an index into the mm_validate_entry - * list to refer to the buffer, but this allows the driver to create - * a relocation list for state buffers and not re-write it per - * exec using the buffer. - */ - uint32_t target_handle; - - /* - * Value to be added to the offset of the target buffer to make up - * the relocation entry. - */ - uint32_t delta; - - /* Offset in the buffer the relocation entry will be written into */ - uint64_t offset; - - /* - * Offset value of the target buffer that the relocation entry was last - * written as. - * - * If the buffer has the same offset as last time, we can skip syncing - * and writing the relocation. This value is written back out by - * the execbuffer ioctl when the relocation is written. - */ - uint64_t presumed_offset; - - /* - * Target memory domains read by this operation. - */ - uint32_t read_domains; - - /* - * Target memory domains written by this operation. - * - * Note that only one domain may be written by the whole - * execbuffer operation, so that where there are conflicts, - * the application will get -EINVAL back. - */ - uint32_t write_domain; -}; - -struct drm_i915_gem_exec_object { - /* - * User's handle for a buffer to be bound into the GTT for this - * operation. - */ - uint32_t handle; - - /* Number of relocations to be performed on this buffer */ - uint32_t relocation_count; - /* - * Pointer to array of struct drm_i915_gem_relocation_entry containing - * the relocations to be performed in this buffer. - */ - uint64_t relocs_ptr; - - /* Required alignment in graphics aperture */ - uint64_t alignment; - - /* - * Returned value of the updated offset of the object, for future - * presumed_offset writes. - */ - uint64_t offset; -}; - -struct drm_i915_gem_execbuffer { - /* - * List of buffers to be validated with their relocations to be - * performend on them. - * - * This is a pointer to an array of struct drm_i915_gem_validate_entry. - * - * These buffers must be listed in an order such that all relocations - * a buffer is performing refer to buffers that have already appeared - * in the validate list. - */ - uint64_t buffers_ptr; - uint32_t buffer_count; - - /* Offset in the batchbuffer to start execution from. */ - uint32_t batch_start_offset; - /* Bytes used in batchbuffer from batch_start_offset */ - uint32_t batch_len; - uint32_t DR1; - uint32_t DR4; - uint32_t num_cliprects; - /* This is a struct drm_clip_rect *cliprects */ - uint64_t cliprects_ptr; -}; - -struct drm_i915_gem_busy { - /* Handle of the buffer to check for busy */ - uint32_t handle; - - /* Return busy status (1 if busy, 0 if idle) */ - uint32_t busy; -}; - -struct drm_i915_gem_set_tiling { - /* Handle of the buffer to have its tiling state updated */ - uint32_t handle; - - /* - * Tiling mode for the object (I915_TILING_NONE, I915_TILING_X, - * I915_TILING_Y). - * - * This value is to be set on request, and will be updated by the - * kernel on successful return with the actual chosen tiling layout. - * - * The tiling mode may be demoted to I915_TILING_NONE when the system - * has bit 6 swizzling that can't be managed correctly by GEM. - * - * Buffer contents become undefined when changing tiling_mode. - */ - uint32_t tiling_mode; - - /* - * Stride in bytes for the object when in I915_TILING_X or - * I915_TILING_Y. - */ - uint32_t stride; - - /* - * Returned address bit 6 swizzling required for CPU access through - * mmap mapping. - */ - uint32_t swizzle_mode; -}; - -struct drm_i915_gem_get_tiling { - /* Handle of the buffer to get tiling state for. */ - uint32_t handle; - - /* - * Current tiling mode for the object (I915_TILING_NONE, I915_TILING_X, - * I915_TILING_Y). - */ - uint32_t tiling_mode; - - /* - * Returned address bit 6 swizzling required for CPU access through - * mmap mapping. - */ - uint32_t swizzle_mode; -}; - -struct drm_i915_gem_get_aperture { - /* Total size of the aperture used by i915_gem_execbuffer, in bytes */ - uint64_t aper_size; - - /* - * Available space in the aperture used by i915_gem_execbuffer, in - * bytes - */ - uint64_t aper_available_size; -}; - -#define DRM_I915_GETPARAM 0x06 - -#define DRM_IOCTL_I915_GETPARAM DRM_IOWR(DRM_COMMAND_BASE + DRM_I915_GETPARAM, struct intel_getparam) -#define DRM_IOCTL_I915_GEM_EXECBUFFER DRM_IOW(DRM_COMMAND_BASE + DRM_I915_GEM_EXECBUFFER, struct drm_i915_gem_execbuffer) -#define DRM_IOCTL_I915_GEM_BUSY DRM_IOWR(DRM_COMMAND_BASE + DRM_I915_GEM_BUSY, struct drm_i915_gem_busy) -#define DRM_IOCTL_I915_GEM_THROTTLE DRM_IO ( DRM_COMMAND_BASE + DRM_I915_GEM_THROTTLE) -#define DRM_IOCTL_I915_GEM_CREATE DRM_IOWR(DRM_COMMAND_BASE + DRM_I915_GEM_CREATE, struct drm_i915_gem_create) -#define DRM_IOCTL_I915_GEM_PREAD DRM_IOW (DRM_COMMAND_BASE + DRM_I915_GEM_PREAD, struct drm_i915_gem_pread) -#define DRM_IOCTL_I915_GEM_PWRITE DRM_IOW (DRM_COMMAND_BASE + DRM_I915_GEM_PWRITE, struct drm_i915_gem_pwrite) -#define DRM_IOCTL_I915_GEM_MMAP DRM_IOWR(DRM_COMMAND_BASE + DRM_I915_GEM_MMAP, struct drm_i915_gem_mmap) -#define DRM_IOCTL_I915_GEM_MMAP_GTT DRM_IOWR(DRM_COMMAND_BASE + DRM_I915_GEM_MMAP_GTT, struct drm_i915_gem_mmap_gtt) -#define DRM_IOCTL_I915_GEM_SET_DOMAIN DRM_IOW (DRM_COMMAND_BASE + DRM_I915_GEM_SET_DOMAIN, struct drm_i915_gem_set_domain) -#define DRM_IOCTL_I915_GEM_SET_TILING DRM_IOWR (DRM_COMMAND_BASE + DRM_I915_GEM_SET_TILING, struct drm_i915_gem_set_tiling) -#define DRM_IOCTL_I915_GEM_GET_TILING DRM_IOWR (DRM_COMMAND_BASE + DRM_I915_GEM_GET_TILING, struct drm_i915_gem_get_tiling) -#define DRM_IOCTL_I915_GEM_GET_APERTURE DRM_IOR (DRM_COMMAND_BASE + DRM_I915_GEM_GET_APERTURE, struct drm_i915_gem_get_aperture) - -#define I915_MADV_WILLNEED 0 -#define I915_MADV_DONTNEED 1 - -struct drm_i915_gem_madvise { - uint32_t handle; - uint32_t madv; - uint32_t retained; -}; -#define DRM_I915_GEM_MADVISE 0x26 -#define DRM_IOCTL_I915_GEM_MADVISE DRM_IOWR (DRM_COMMAND_BASE + DRM_I915_GEM_MADVISE, struct drm_i915_gem_madvise) - - -/* XXX execbuffer2 */ -struct drm_i915_gem_exec_object2 { - /* - * User's handle for a buffer to be bound into the GTT for this - * operation. - */ - uint32_t handle; - - /* Number of relocations to be performed on this buffer */ - uint32_t relocation_count; - /* - * Pointer to array of struct drm_i915_gem_relocation_entry containing - * the relocations to be performed in this buffer. - */ - uint64_t relocs_ptr; - - /* Required alignment in graphics aperture */ - uint64_t alignment; - - /* - * Returned value of the updated offset of the object, for future - * presumed_offset writes. - */ - uint64_t offset; - -#define EXEC_OBJECT_NEEDS_FENCE (1<<0) - uint64_t flags; - uint64_t rsvd1; - uint64_t rsvd2; -}; - -struct drm_i915_gem_execbuffer2 { - /* - * List of gem_exec_object2 structs - */ - uint64_t buffers_ptr; - uint32_t buffer_count; - - /* Offset in the batchbuffer to start execution from. */ - uint32_t batch_start_offset; - /* Bytes used in batchbuffer from batch_start_offset */ - uint32_t batch_len; - uint32_t DR1; - uint32_t DR4; - uint32_t num_cliprects; - /* This is a struct drm_clip_rect *cliprects */ - uint64_t cliprects_ptr; - uint64_t flags; - uint64_t rsvd1; - uint64_t rsvd2; -}; - -#define I915_GEM_3D_PIPELINE 0x1 -#define I915_GEM_MEDIA_PIPELINE 0x2 -#define DRM_I915_GEM_EXECBUFFER2 0x29 -#define DRM_IOCTL_I915_GEM_EXECBUFFER2 DRM_IOW(DRM_COMMAND_BASE + DRM_I915_GEM_EXECBUFFER2, struct drm_i915_gem_execbuffer2) +#include struct drm_i915_gem_real_size { uint32_t handle; uint64_t size; }; + #define DRM_I915_GEM_REAL_SIZE 0x2a #define DRM_IOCTL_I915_GEM_REAL_SIZE DRM_IOWR (DRM_COMMAND_BASE + DRM_I915_GEM_REAL_SIZE, struct drm_i915_gem_real_size) diff -Nru cairo-1.14.6/src/drm/cairo-drm-intel-private.h cairo-1.15.10/src/drm/cairo-drm-intel-private.h --- cairo-1.14.6/src/drm/cairo-drm-intel-private.h 2015-10-27 21:04:21.000000000 +0000 +++ cairo-1.15.10/src/drm/cairo-drm-intel-private.h 2017-12-07 02:14:36.000000000 +0000 @@ -39,6 +39,7 @@ #include "cairo-mutex-private.h" #include "cairo-rtree-private.h" #include "cairo-types-private.h" +#include "cairo-pattern-private.h" #include "cairo-drm-intel-ioctl-private.h" @@ -313,11 +314,6 @@ uint32_t size, uint32_t name); -cairo_private cairo_surface_t * -intel_bo_get_image (const intel_device_t *device, - intel_bo_t *bo, - const cairo_drm_surface_t *surface); - cairo_private cairo_status_t intel_bo_put_image (intel_device_t *dev, intel_bo_t *bo, diff -Nru cairo-1.14.6/src/drm/cairo-drm-intel-surface.c cairo-1.15.10/src/drm/cairo-drm-intel-surface.c --- cairo-1.14.6/src/drm/cairo-drm-intel-surface.c 2015-10-27 21:04:21.000000000 +0000 +++ cairo-1.15.10/src/drm/cairo-drm-intel-surface.c 2017-12-07 02:14:36.000000000 +0000 @@ -34,6 +34,7 @@ #include "cairo-default-context-private.h" #include "cairo-error-private.h" +#include "cairo-image-surface-private.h" /* Basic generic/stub surface for intel chipsets */ @@ -295,7 +296,9 @@ _cairo_surface_init (&surface->drm.base, backend, &device->base, - _cairo_content_from_format (format)); + _cairo_content_from_format (format), + FALSE); + _cairo_drm_surface_init (&surface->drm, format, width, height); surface->snapshot_cache_entry.hash = 0; diff -Nru cairo-1.14.6/src/drm/cairo-drm-ioctl-private.h cairo-1.15.10/src/drm/cairo-drm-ioctl-private.h --- cairo-1.14.6/src/drm/cairo-drm-ioctl-private.h 2015-10-27 21:04:21.000000000 +0000 +++ cairo-1.15.10/src/drm/cairo-drm-ioctl-private.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,12 +0,0 @@ -#ifndef CAIRO_DRM_IOCTL_PRIVATE_H -#define CAIRO_DRM_IOCTL_PRIVATE_H - -#define DRM_IOCTL_BASE 'd' -#define DRM_IO(nr) _IO(DRM_IOCTL_BASE,nr) -#define DRM_IOR(nr,type) _IOR(DRM_IOCTL_BASE,nr,type) -#define DRM_IOW(nr,type) _IOW(DRM_IOCTL_BASE,nr,type) -#define DRM_IOWR(nr,type) _IOWR(DRM_IOCTL_BASE,nr,type) - -#define DRM_COMMAND_BASE 0x40 - -#endif /* CAIRO_DRM_IOCTL_PRIVATE_H */ diff -Nru cairo-1.14.6/src/drm/cairo-drm-radeon.c cairo-1.15.10/src/drm/cairo-drm-radeon.c --- cairo-1.14.6/src/drm/cairo-drm-radeon.c 2015-10-27 21:04:21.000000000 +0000 +++ cairo-1.15.10/src/drm/cairo-drm-radeon.c 2017-12-07 02:14:36.000000000 +0000 @@ -31,134 +31,14 @@ #include "cairo-drm-private.h" #include "cairo-drm-radeon-private.h" -#include "cairo-drm-ioctl-private.h" #include "cairo-error-private.h" +#include "cairo-image-surface-private.h" #include #include #include - -#define DRM_RADEON_GEM_INFO 0x1c -#define DRM_RADEON_GEM_CREATE 0x1d -#define DRM_RADEON_GEM_MMAP 0x1e -#define DRM_RADEON_GEM_PREAD 0x21 -#define DRM_RADEON_GEM_PWRITE 0x22 -#define DRM_RADEON_GEM_SET_DOMAIN 0x23 -#define DRM_RADEON_GEM_WAIT_IDLE 0x24 -#define DRM_RADEON_CS 0x26 -#define DRM_RADEON_INFO 0x27 - -#define DRM_IOCTL_RADEON_GEM_INFO DRM_IOWR(DRM_COMMAND_BASE + DRM_RADEON_GEM_INFO, struct drm_radeon_gem_info) -#define DRM_IOCTL_RADEON_GEM_CREATE DRM_IOWR(DRM_COMMAND_BASE + DRM_RADEON_GEM_CREATE, struct drm_radeon_gem_create) -#define DRM_IOCTL_RADEON_GEM_WAIT_IDLE DRM_IOW(DRM_COMMAND_BASE + DRM_RADEON_GEM_WAIT_IDLE, struct drm_radeon_gem_wait_idle) -#define DRM_IOCTL_RADEON_GEM_MMAP DRM_IOWR(DRM_COMMAND_BASE + DRM_RADEON_GEM_MMAP, struct drm_radeon_gem_mmap) -#define DRM_IOCTL_RADEON_GEM_PREAD DRM_IOWR(DRM_COMMAND_BASE + DRM_RADEON_GEM_PREAD, struct drm_radeon_gem_pread) -#define DRM_IOCTL_RADEON_GEM_PWRITE DRM_IOWR(DRM_COMMAND_BASE + DRM_RADEON_GEM_PWRITE, struct drm_radeon_gem_pwrite) -#define DRM_IOCTL_RADEON_GEM_SET_DOMAIN DRM_IOWR(DRM_COMMAND_BASE + DRM_RADEON_GEM_SET_DOMAIN, struct drm_radeon_gem_set_domain) -//#define DRM_IOCTL_RADEON_CS DRM_IOWR(DRM_COMMAND_BASE + DRM_RADEON_CS, struct drm_radeon_cs) - -struct drm_radeon_gem_info { - uint64_t gart_size; - uint64_t vram_size; - uint64_t vram_visible; -}; - -#define RADEON_GEM_NO_BACKING_STORE 1 - -struct drm_radeon_gem_create { - uint64_t size; - uint64_t alignment; - uint32_t handle; - uint32_t initial_domain; - uint32_t flags; -}; - -struct drm_radeon_gem_mmap { - uint32_t handle; - uint32_t pad; - uint64_t offset; - uint64_t size; - uint64_t addr_ptr; -}; - -struct drm_radeon_gem_set_domain { - uint32_t handle; - uint32_t read_domains; - uint32_t write_domain; -}; - -struct drm_radeon_gem_wait_idle { - uint32_t handle; - uint32_t pad; -}; - -struct drm_radeon_gem_busy { - uint32_t handle; - uint32_t busy; -}; - -struct drm_radeon_gem_pread { - /** Handle for the object being read. */ - uint32_t handle; - uint32_t pad; - /** Offset into the object to read from */ - uint64_t offset; - /** Length of data to read */ - uint64_t size; - /** Pointer to write the data into. */ - /* void *, but pointers are not 32/64 compatible */ - uint64_t data_ptr; -}; - -struct drm_radeon_gem_pwrite { - /** Handle for the object being written to. */ - uint32_t handle; - uint32_t pad; - /** Offset into the object to write to */ - uint64_t offset; - /** Length of data to write */ - uint64_t size; - /** Pointer to read the data from. */ - /* void *, but pointers are not 32/64 compatible */ - uint64_t data_ptr; -}; - -#define RADEON_CHUNK_ID_RELOCS 0x01 -#define RADEON_CHUNK_ID_IB 0x02 - -struct drm_radeon_cs_chunk { - uint32_t chunk_id; - uint32_t length_dw; - uint64_t chunk_data; -}; - -struct drm_radeon_cs_reloc { - uint32_t handle; - uint32_t read_domains; - uint32_t write_domain; - uint32_t flags; -}; - -struct drm_radeon_cs { - uint32_t num_chunks; - uint32_t cs_id; - /* this points to uint64_t * which point to cs chunks */ - uint64_t chunks; - /* updates to the limits after this CS ioctl */ - uint64_t gart_limit; - uint64_t vram_limit; -}; - -#define RADEON_INFO_DEVICE_ID 0x00 -#define RADEON_INFO_NUM_GB_PIPES 0x01 - -struct drm_radeon_info { - uint32_t request; - uint32_t pad; - uint64_t value; -}; - +#include cairo_bool_t radeon_info (int fd, diff -Nru cairo-1.14.6/src/drm/cairo-drm-radeon-private.h cairo-1.15.10/src/drm/cairo-drm-radeon-private.h --- cairo-1.14.6/src/drm/cairo-drm-radeon-private.h 2015-10-27 21:04:21.000000000 +0000 +++ cairo-1.15.10/src/drm/cairo-drm-radeon-private.h 2017-12-07 02:14:36.000000000 +0000 @@ -35,10 +35,6 @@ #include "cairo-drm-private.h" #include "cairo-freelist-private.h" -#define RADEON_GEM_DOMAIN_CPU 0x1 -#define RADEON_GEM_DOMAIN_GTT 0x2 -#define RADEON_GEM_DOMAIN_VRAM 0x4 - typedef struct _radeon_bo { cairo_drm_bo_t base; diff -Nru cairo-1.14.6/src/drm/cairo-drm-radeon-surface.c cairo-1.15.10/src/drm/cairo-drm-radeon-surface.c --- cairo-1.14.6/src/drm/cairo-drm-radeon-surface.c 2015-10-27 21:04:21.000000000 +0000 +++ cairo-1.15.10/src/drm/cairo-drm-radeon-surface.c 2017-12-07 02:14:36.000000000 +0000 @@ -34,6 +34,11 @@ #include "cairo-default-context-private.h" #include "cairo-error-private.h" +#include "cairo-image-surface-private.h" + +#include +#include /* workaround for broken */ +#include /* Basic stub surface for radeon chipsets */ @@ -299,7 +304,8 @@ _cairo_surface_init (&surface->base.base, &radeon_surface_backend, &device->base, - _cairo_content_from_format (format)); + _cairo_content_from_format (format), + FALSE); _cairo_drm_surface_init (&surface->base, format, width, height); } diff -Nru cairo-1.14.6/src/Makefile.am.features cairo-1.15.10/src/Makefile.am.features --- cairo-1.14.6/src/Makefile.am.features 2015-12-09 19:05:26.000000000 +0000 +++ cairo-1.15.10/src/Makefile.am.features 2017-12-07 02:15:43.000000000 +0000 @@ -321,6 +321,22 @@ enabled_cairo_pkgconf += cairo-glesv2.pc endif +unsupported_cairo_headers += $(cairo_glesv3_headers) +all_cairo_headers += $(cairo_glesv3_headers) +all_cairo_private += $(cairo_glesv3_private) +all_cairo_cxx_sources += $(cairo_glesv3_cxx_sources) +all_cairo_sources += $(cairo_glesv3_sources) +if CAIRO_HAS_GLESV3_SURFACE +enabled_cairo_headers += $(cairo_glesv3_headers) +enabled_cairo_private += $(cairo_glesv3_private) +enabled_cairo_cxx_sources += $(cairo_glesv3_cxx_sources) +enabled_cairo_sources += $(cairo_glesv3_sources) +endif +all_cairo_pkgconf += cairo-glesv3.pc +if CAIRO_HAS_GLESV3_SURFACE +enabled_cairo_pkgconf += cairo-glesv3.pc +endif + unsupported_cairo_headers += $(cairo_cogl_headers) all_cairo_headers += $(cairo_cogl_headers) all_cairo_private += $(cairo_cogl_private) diff -Nru cairo-1.14.6/src/Makefile.in cairo-1.15.10/src/Makefile.in --- cairo-1.14.6/src/Makefile.in 2015-12-09 20:41:44.000000000 +0000 +++ cairo-1.15.10/src/Makefile.in 2017-12-11 21:03:10.000000000 +0000 @@ -1,7 +1,7 @@ -# Makefile.in generated by automake 1.14.1 from Makefile.am. +# Makefile.in generated by automake 1.15 from Makefile.am. # @configure_input@ -# Copyright (C) 1994-2013 Free Software Foundation, Inc. +# Copyright (C) 1994-2014 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -72,7 +72,17 @@ VPATH = @srcdir@ -am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' +am__is_gnu_make = { \ + if test -z '$(MAKELEVEL)'; then \ + false; \ + elif test -n '$(MAKE_HOST)'; then \ + true; \ + elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ + true; \ + else \ + false; \ + fi; \ +} am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ @@ -135,16 +145,8 @@ POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ -DIST_COMMON = $(top_srcdir)/build/Makefile.am.common \ - $(srcdir)/Makefile.am.features \ - $(top_srcdir)/src/Makefile.sources \ - $(srcdir)/Makefile.am.analysis $(srcdir)/Makefile.in \ - $(srcdir)/Makefile.am $(srcdir)/cairo.pc.in \ - $(srcdir)/cairo-features.pc.in $(top_srcdir)/build/depcomp \ - $(am__cairoinclude_HEADERS_DIST) \ - $(top_srcdir)/build/test-driver README EXTRA_PROGRAMS = -TESTS = $(am__EXEEXT_1) $(am__append_186) +TESTS = $(am__EXEEXT_1) $(am__append_191) check_PROGRAMS = check-link$(EXEEXT) @CAIRO_HAS_XLIB_SURFACE_TRUE@am__append_1 = $(cairo_xlib_headers) @CAIRO_HAS_XLIB_SURFACE_TRUE@am__append_2 = $(cairo_xlib_private) @@ -241,97 +243,102 @@ @CAIRO_HAS_GLESV2_SURFACE_TRUE@am__append_93 = $(cairo_glesv2_cxx_sources) @CAIRO_HAS_GLESV2_SURFACE_TRUE@am__append_94 = $(cairo_glesv2_sources) @CAIRO_HAS_GLESV2_SURFACE_TRUE@am__append_95 = cairo-glesv2.pc -@CAIRO_HAS_COGL_SURFACE_TRUE@am__append_96 = $(cairo_cogl_headers) -@CAIRO_HAS_COGL_SURFACE_TRUE@am__append_97 = $(cairo_cogl_private) -@CAIRO_HAS_COGL_SURFACE_TRUE@am__append_98 = $(cairo_cogl_cxx_sources) -@CAIRO_HAS_COGL_SURFACE_TRUE@am__append_99 = $(cairo_cogl_sources) -@CAIRO_HAS_COGL_SURFACE_TRUE@am__append_100 = cairo-cogl.pc -@CAIRO_HAS_DIRECTFB_SURFACE_TRUE@am__append_101 = $(cairo_directfb_headers) -@CAIRO_HAS_DIRECTFB_SURFACE_TRUE@am__append_102 = $(cairo_directfb_private) -@CAIRO_HAS_DIRECTFB_SURFACE_TRUE@am__append_103 = $(cairo_directfb_cxx_sources) -@CAIRO_HAS_DIRECTFB_SURFACE_TRUE@am__append_104 = $(cairo_directfb_sources) -@CAIRO_HAS_DIRECTFB_SURFACE_TRUE@am__append_105 = cairo-directfb.pc -@CAIRO_HAS_VG_SURFACE_TRUE@am__append_106 = $(cairo_vg_headers) -@CAIRO_HAS_VG_SURFACE_TRUE@am__append_107 = $(cairo_vg_private) -@CAIRO_HAS_VG_SURFACE_TRUE@am__append_108 = $(cairo_vg_cxx_sources) -@CAIRO_HAS_VG_SURFACE_TRUE@am__append_109 = $(cairo_vg_sources) -@CAIRO_HAS_VG_SURFACE_TRUE@am__append_110 = cairo-vg.pc -@CAIRO_HAS_EGL_FUNCTIONS_TRUE@am__append_111 = $(cairo_egl_headers) -@CAIRO_HAS_EGL_FUNCTIONS_TRUE@am__append_112 = $(cairo_egl_private) -@CAIRO_HAS_EGL_FUNCTIONS_TRUE@am__append_113 = $(cairo_egl_cxx_sources) -@CAIRO_HAS_EGL_FUNCTIONS_TRUE@am__append_114 = $(cairo_egl_sources) -@CAIRO_HAS_EGL_FUNCTIONS_TRUE@am__append_115 = cairo-egl.pc -@CAIRO_HAS_GLX_FUNCTIONS_TRUE@am__append_116 = $(cairo_glx_headers) -@CAIRO_HAS_GLX_FUNCTIONS_TRUE@am__append_117 = $(cairo_glx_private) -@CAIRO_HAS_GLX_FUNCTIONS_TRUE@am__append_118 = $(cairo_glx_cxx_sources) -@CAIRO_HAS_GLX_FUNCTIONS_TRUE@am__append_119 = $(cairo_glx_sources) -@CAIRO_HAS_GLX_FUNCTIONS_TRUE@am__append_120 = cairo-glx.pc -@CAIRO_HAS_WGL_FUNCTIONS_TRUE@am__append_121 = $(cairo_wgl_headers) -@CAIRO_HAS_WGL_FUNCTIONS_TRUE@am__append_122 = $(cairo_wgl_private) -@CAIRO_HAS_WGL_FUNCTIONS_TRUE@am__append_123 = $(cairo_wgl_cxx_sources) -@CAIRO_HAS_WGL_FUNCTIONS_TRUE@am__append_124 = $(cairo_wgl_sources) -@CAIRO_HAS_WGL_FUNCTIONS_TRUE@am__append_125 = cairo-wgl.pc -@CAIRO_HAS_SCRIPT_SURFACE_TRUE@am__append_126 = $(cairo_script_headers) -@CAIRO_HAS_SCRIPT_SURFACE_TRUE@am__append_127 = $(cairo_script_private) -@CAIRO_HAS_SCRIPT_SURFACE_TRUE@am__append_128 = $(cairo_script_cxx_sources) -@CAIRO_HAS_SCRIPT_SURFACE_TRUE@am__append_129 = $(cairo_script_sources) -@CAIRO_HAS_SCRIPT_SURFACE_TRUE@am__append_130 = cairo-script.pc -@CAIRO_HAS_FT_FONT_TRUE@am__append_131 = $(cairo_ft_headers) -@CAIRO_HAS_FT_FONT_TRUE@am__append_132 = $(cairo_ft_private) -@CAIRO_HAS_FT_FONT_TRUE@am__append_133 = $(cairo_ft_cxx_sources) -@CAIRO_HAS_FT_FONT_TRUE@am__append_134 = $(cairo_ft_sources) -@CAIRO_HAS_FT_FONT_TRUE@am__append_135 = cairo-ft.pc -@CAIRO_HAS_FC_FONT_TRUE@am__append_136 = $(cairo_fc_headers) -@CAIRO_HAS_FC_FONT_TRUE@am__append_137 = $(cairo_fc_private) -@CAIRO_HAS_FC_FONT_TRUE@am__append_138 = $(cairo_fc_cxx_sources) -@CAIRO_HAS_FC_FONT_TRUE@am__append_139 = $(cairo_fc_sources) -@CAIRO_HAS_FC_FONT_TRUE@am__append_140 = cairo-fc.pc -@CAIRO_HAS_PS_SURFACE_TRUE@am__append_141 = $(cairo_ps_headers) -@CAIRO_HAS_PS_SURFACE_TRUE@am__append_142 = $(cairo_ps_private) -@CAIRO_HAS_PS_SURFACE_TRUE@am__append_143 = $(cairo_ps_cxx_sources) -@CAIRO_HAS_PS_SURFACE_TRUE@am__append_144 = $(cairo_ps_sources) -@CAIRO_HAS_PS_SURFACE_TRUE@am__append_145 = cairo-ps.pc -@CAIRO_HAS_PDF_SURFACE_TRUE@am__append_146 = $(cairo_pdf_headers) -@CAIRO_HAS_PDF_SURFACE_TRUE@am__append_147 = $(cairo_pdf_private) -@CAIRO_HAS_PDF_SURFACE_TRUE@am__append_148 = $(cairo_pdf_cxx_sources) -@CAIRO_HAS_PDF_SURFACE_TRUE@am__append_149 = $(cairo_pdf_sources) -@CAIRO_HAS_PDF_SURFACE_TRUE@am__append_150 = cairo-pdf.pc -@CAIRO_HAS_SVG_SURFACE_TRUE@am__append_151 = $(cairo_svg_headers) -@CAIRO_HAS_SVG_SURFACE_TRUE@am__append_152 = $(cairo_svg_private) -@CAIRO_HAS_SVG_SURFACE_TRUE@am__append_153 = $(cairo_svg_cxx_sources) -@CAIRO_HAS_SVG_SURFACE_TRUE@am__append_154 = $(cairo_svg_sources) -@CAIRO_HAS_SVG_SURFACE_TRUE@am__append_155 = cairo-svg.pc -@CAIRO_HAS_TEST_SURFACES_TRUE@am__append_156 = $(cairo_test_surfaces_private) $(cairo_test_surfaces_headers) -@CAIRO_HAS_TEST_SURFACES_TRUE@am__append_157 = $(cairo_test_surfaces_cxx_sources) -@CAIRO_HAS_TEST_SURFACES_TRUE@am__append_158 = $(cairo_test_surfaces_sources) -@CAIRO_HAS_TEE_SURFACE_TRUE@am__append_159 = $(cairo_tee_headers) -@CAIRO_HAS_TEE_SURFACE_TRUE@am__append_160 = $(cairo_tee_private) -@CAIRO_HAS_TEE_SURFACE_TRUE@am__append_161 = $(cairo_tee_cxx_sources) -@CAIRO_HAS_TEE_SURFACE_TRUE@am__append_162 = $(cairo_tee_sources) -@CAIRO_HAS_TEE_SURFACE_TRUE@am__append_163 = cairo-tee.pc -@CAIRO_HAS_XML_SURFACE_TRUE@am__append_164 = $(cairo_xml_headers) -@CAIRO_HAS_XML_SURFACE_TRUE@am__append_165 = $(cairo_xml_private) -@CAIRO_HAS_XML_SURFACE_TRUE@am__append_166 = $(cairo_xml_cxx_sources) -@CAIRO_HAS_XML_SURFACE_TRUE@am__append_167 = $(cairo_xml_sources) -@CAIRO_HAS_XML_SURFACE_TRUE@am__append_168 = cairo-xml.pc -@CAIRO_HAS_PTHREAD_TRUE@am__append_169 = $(cairo_pthread_private) $(cairo_pthread_headers) -@CAIRO_HAS_PTHREAD_TRUE@am__append_170 = $(cairo_pthread_cxx_sources) -@CAIRO_HAS_PTHREAD_TRUE@am__append_171 = $(cairo_pthread_sources) -@CAIRO_HAS_GOBJECT_FUNCTIONS_TRUE@am__append_172 = $(cairo_gobject_headers) -@CAIRO_HAS_GOBJECT_FUNCTIONS_TRUE@am__append_173 = $(cairo_gobject_private) -@CAIRO_HAS_GOBJECT_FUNCTIONS_TRUE@am__append_174 = $(cairo_gobject_cxx_sources) -@CAIRO_HAS_GOBJECT_FUNCTIONS_TRUE@am__append_175 = $(cairo_gobject_sources) -@CAIRO_HAS_GOBJECT_FUNCTIONS_TRUE@am__append_176 = cairo-gobject.pc -@CAIRO_HAS_TRACE_TRUE@am__append_177 = $(cairo_trace_private) $(cairo_trace_headers) -@CAIRO_HAS_TRACE_TRUE@am__append_178 = $(cairo_trace_cxx_sources) -@CAIRO_HAS_TRACE_TRUE@am__append_179 = $(cairo_trace_sources) -@CAIRO_HAS_INTERPRETER_TRUE@am__append_180 = $(cairo_interpreter_private) $(cairo_interpreter_headers) -@CAIRO_HAS_INTERPRETER_TRUE@am__append_181 = $(cairo_interpreter_cxx_sources) -@CAIRO_HAS_INTERPRETER_TRUE@am__append_182 = $(cairo_interpreter_sources) -@CAIRO_HAS_SYMBOL_LOOKUP_TRUE@am__append_183 = $(cairo_symbol_lookup_private) $(cairo_symbol_lookup_headers) -@CAIRO_HAS_SYMBOL_LOOKUP_TRUE@am__append_184 = $(cairo_symbol_lookup_cxx_sources) -@CAIRO_HAS_SYMBOL_LOOKUP_TRUE@am__append_185 = $(cairo_symbol_lookup_sources) -@CROSS_COMPILING_FALSE@am__append_186 = check-link$(EXEEXT) +@CAIRO_HAS_GLESV3_SURFACE_TRUE@am__append_96 = $(cairo_glesv3_headers) +@CAIRO_HAS_GLESV3_SURFACE_TRUE@am__append_97 = $(cairo_glesv3_private) +@CAIRO_HAS_GLESV3_SURFACE_TRUE@am__append_98 = $(cairo_glesv3_cxx_sources) +@CAIRO_HAS_GLESV3_SURFACE_TRUE@am__append_99 = $(cairo_glesv3_sources) +@CAIRO_HAS_GLESV3_SURFACE_TRUE@am__append_100 = cairo-glesv3.pc +@CAIRO_HAS_COGL_SURFACE_TRUE@am__append_101 = $(cairo_cogl_headers) +@CAIRO_HAS_COGL_SURFACE_TRUE@am__append_102 = $(cairo_cogl_private) +@CAIRO_HAS_COGL_SURFACE_TRUE@am__append_103 = $(cairo_cogl_cxx_sources) +@CAIRO_HAS_COGL_SURFACE_TRUE@am__append_104 = $(cairo_cogl_sources) +@CAIRO_HAS_COGL_SURFACE_TRUE@am__append_105 = cairo-cogl.pc +@CAIRO_HAS_DIRECTFB_SURFACE_TRUE@am__append_106 = $(cairo_directfb_headers) +@CAIRO_HAS_DIRECTFB_SURFACE_TRUE@am__append_107 = $(cairo_directfb_private) +@CAIRO_HAS_DIRECTFB_SURFACE_TRUE@am__append_108 = $(cairo_directfb_cxx_sources) +@CAIRO_HAS_DIRECTFB_SURFACE_TRUE@am__append_109 = $(cairo_directfb_sources) +@CAIRO_HAS_DIRECTFB_SURFACE_TRUE@am__append_110 = cairo-directfb.pc +@CAIRO_HAS_VG_SURFACE_TRUE@am__append_111 = $(cairo_vg_headers) +@CAIRO_HAS_VG_SURFACE_TRUE@am__append_112 = $(cairo_vg_private) +@CAIRO_HAS_VG_SURFACE_TRUE@am__append_113 = $(cairo_vg_cxx_sources) +@CAIRO_HAS_VG_SURFACE_TRUE@am__append_114 = $(cairo_vg_sources) +@CAIRO_HAS_VG_SURFACE_TRUE@am__append_115 = cairo-vg.pc +@CAIRO_HAS_EGL_FUNCTIONS_TRUE@am__append_116 = $(cairo_egl_headers) +@CAIRO_HAS_EGL_FUNCTIONS_TRUE@am__append_117 = $(cairo_egl_private) +@CAIRO_HAS_EGL_FUNCTIONS_TRUE@am__append_118 = $(cairo_egl_cxx_sources) +@CAIRO_HAS_EGL_FUNCTIONS_TRUE@am__append_119 = $(cairo_egl_sources) +@CAIRO_HAS_EGL_FUNCTIONS_TRUE@am__append_120 = cairo-egl.pc +@CAIRO_HAS_GLX_FUNCTIONS_TRUE@am__append_121 = $(cairo_glx_headers) +@CAIRO_HAS_GLX_FUNCTIONS_TRUE@am__append_122 = $(cairo_glx_private) +@CAIRO_HAS_GLX_FUNCTIONS_TRUE@am__append_123 = $(cairo_glx_cxx_sources) +@CAIRO_HAS_GLX_FUNCTIONS_TRUE@am__append_124 = $(cairo_glx_sources) +@CAIRO_HAS_GLX_FUNCTIONS_TRUE@am__append_125 = cairo-glx.pc +@CAIRO_HAS_WGL_FUNCTIONS_TRUE@am__append_126 = $(cairo_wgl_headers) +@CAIRO_HAS_WGL_FUNCTIONS_TRUE@am__append_127 = $(cairo_wgl_private) +@CAIRO_HAS_WGL_FUNCTIONS_TRUE@am__append_128 = $(cairo_wgl_cxx_sources) +@CAIRO_HAS_WGL_FUNCTIONS_TRUE@am__append_129 = $(cairo_wgl_sources) +@CAIRO_HAS_WGL_FUNCTIONS_TRUE@am__append_130 = cairo-wgl.pc +@CAIRO_HAS_SCRIPT_SURFACE_TRUE@am__append_131 = $(cairo_script_headers) +@CAIRO_HAS_SCRIPT_SURFACE_TRUE@am__append_132 = $(cairo_script_private) +@CAIRO_HAS_SCRIPT_SURFACE_TRUE@am__append_133 = $(cairo_script_cxx_sources) +@CAIRO_HAS_SCRIPT_SURFACE_TRUE@am__append_134 = $(cairo_script_sources) +@CAIRO_HAS_SCRIPT_SURFACE_TRUE@am__append_135 = cairo-script.pc +@CAIRO_HAS_FT_FONT_TRUE@am__append_136 = $(cairo_ft_headers) +@CAIRO_HAS_FT_FONT_TRUE@am__append_137 = $(cairo_ft_private) +@CAIRO_HAS_FT_FONT_TRUE@am__append_138 = $(cairo_ft_cxx_sources) +@CAIRO_HAS_FT_FONT_TRUE@am__append_139 = $(cairo_ft_sources) +@CAIRO_HAS_FT_FONT_TRUE@am__append_140 = cairo-ft.pc +@CAIRO_HAS_FC_FONT_TRUE@am__append_141 = $(cairo_fc_headers) +@CAIRO_HAS_FC_FONT_TRUE@am__append_142 = $(cairo_fc_private) +@CAIRO_HAS_FC_FONT_TRUE@am__append_143 = $(cairo_fc_cxx_sources) +@CAIRO_HAS_FC_FONT_TRUE@am__append_144 = $(cairo_fc_sources) +@CAIRO_HAS_FC_FONT_TRUE@am__append_145 = cairo-fc.pc +@CAIRO_HAS_PS_SURFACE_TRUE@am__append_146 = $(cairo_ps_headers) +@CAIRO_HAS_PS_SURFACE_TRUE@am__append_147 = $(cairo_ps_private) +@CAIRO_HAS_PS_SURFACE_TRUE@am__append_148 = $(cairo_ps_cxx_sources) +@CAIRO_HAS_PS_SURFACE_TRUE@am__append_149 = $(cairo_ps_sources) +@CAIRO_HAS_PS_SURFACE_TRUE@am__append_150 = cairo-ps.pc +@CAIRO_HAS_PDF_SURFACE_TRUE@am__append_151 = $(cairo_pdf_headers) +@CAIRO_HAS_PDF_SURFACE_TRUE@am__append_152 = $(cairo_pdf_private) +@CAIRO_HAS_PDF_SURFACE_TRUE@am__append_153 = $(cairo_pdf_cxx_sources) +@CAIRO_HAS_PDF_SURFACE_TRUE@am__append_154 = $(cairo_pdf_sources) +@CAIRO_HAS_PDF_SURFACE_TRUE@am__append_155 = cairo-pdf.pc +@CAIRO_HAS_SVG_SURFACE_TRUE@am__append_156 = $(cairo_svg_headers) +@CAIRO_HAS_SVG_SURFACE_TRUE@am__append_157 = $(cairo_svg_private) +@CAIRO_HAS_SVG_SURFACE_TRUE@am__append_158 = $(cairo_svg_cxx_sources) +@CAIRO_HAS_SVG_SURFACE_TRUE@am__append_159 = $(cairo_svg_sources) +@CAIRO_HAS_SVG_SURFACE_TRUE@am__append_160 = cairo-svg.pc +@CAIRO_HAS_TEST_SURFACES_TRUE@am__append_161 = $(cairo_test_surfaces_private) $(cairo_test_surfaces_headers) +@CAIRO_HAS_TEST_SURFACES_TRUE@am__append_162 = $(cairo_test_surfaces_cxx_sources) +@CAIRO_HAS_TEST_SURFACES_TRUE@am__append_163 = $(cairo_test_surfaces_sources) +@CAIRO_HAS_TEE_SURFACE_TRUE@am__append_164 = $(cairo_tee_headers) +@CAIRO_HAS_TEE_SURFACE_TRUE@am__append_165 = $(cairo_tee_private) +@CAIRO_HAS_TEE_SURFACE_TRUE@am__append_166 = $(cairo_tee_cxx_sources) +@CAIRO_HAS_TEE_SURFACE_TRUE@am__append_167 = $(cairo_tee_sources) +@CAIRO_HAS_TEE_SURFACE_TRUE@am__append_168 = cairo-tee.pc +@CAIRO_HAS_XML_SURFACE_TRUE@am__append_169 = $(cairo_xml_headers) +@CAIRO_HAS_XML_SURFACE_TRUE@am__append_170 = $(cairo_xml_private) +@CAIRO_HAS_XML_SURFACE_TRUE@am__append_171 = $(cairo_xml_cxx_sources) +@CAIRO_HAS_XML_SURFACE_TRUE@am__append_172 = $(cairo_xml_sources) +@CAIRO_HAS_XML_SURFACE_TRUE@am__append_173 = cairo-xml.pc +@CAIRO_HAS_PTHREAD_TRUE@am__append_174 = $(cairo_pthread_private) $(cairo_pthread_headers) +@CAIRO_HAS_PTHREAD_TRUE@am__append_175 = $(cairo_pthread_cxx_sources) +@CAIRO_HAS_PTHREAD_TRUE@am__append_176 = $(cairo_pthread_sources) +@CAIRO_HAS_GOBJECT_FUNCTIONS_TRUE@am__append_177 = $(cairo_gobject_headers) +@CAIRO_HAS_GOBJECT_FUNCTIONS_TRUE@am__append_178 = $(cairo_gobject_private) +@CAIRO_HAS_GOBJECT_FUNCTIONS_TRUE@am__append_179 = $(cairo_gobject_cxx_sources) +@CAIRO_HAS_GOBJECT_FUNCTIONS_TRUE@am__append_180 = $(cairo_gobject_sources) +@CAIRO_HAS_GOBJECT_FUNCTIONS_TRUE@am__append_181 = cairo-gobject.pc +@CAIRO_HAS_TRACE_TRUE@am__append_182 = $(cairo_trace_private) $(cairo_trace_headers) +@CAIRO_HAS_TRACE_TRUE@am__append_183 = $(cairo_trace_cxx_sources) +@CAIRO_HAS_TRACE_TRUE@am__append_184 = $(cairo_trace_sources) +@CAIRO_HAS_INTERPRETER_TRUE@am__append_185 = $(cairo_interpreter_private) $(cairo_interpreter_headers) +@CAIRO_HAS_INTERPRETER_TRUE@am__append_186 = $(cairo_interpreter_cxx_sources) +@CAIRO_HAS_INTERPRETER_TRUE@am__append_187 = $(cairo_interpreter_sources) +@CAIRO_HAS_SYMBOL_LOOKUP_TRUE@am__append_188 = $(cairo_symbol_lookup_private) $(cairo_symbol_lookup_headers) +@CAIRO_HAS_SYMBOL_LOOKUP_TRUE@am__append_189 = $(cairo_symbol_lookup_cxx_sources) +@CAIRO_HAS_SYMBOL_LOOKUP_TRUE@am__append_190 = $(cairo_symbol_lookup_sources) +@CROSS_COMPILING_FALSE@am__append_191 = check-link$(EXEEXT) subdir = src ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/build/aclocal.cairo.m4 \ @@ -357,6 +364,8 @@ $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) +DIST_COMMON = $(srcdir)/Makefile.am $(am__cairoinclude_HEADERS_DIST) \ + $(am__DIST_COMMON) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = cairo.pc cairo-xlib.pc cairo-xlib-xrender.pc \ @@ -364,11 +373,11 @@ cairo-quartz.pc cairo-quartz-font.pc cairo-quartz-image.pc \ cairo-win32.pc cairo-win32-font.pc cairo-skia.pc cairo-os2.pc \ cairo-beos.pc cairo-drm.pc cairo-gallium.pc cairo-png.pc \ - cairo-gl.pc cairo-glesv2.pc cairo-cogl.pc cairo-directfb.pc \ - cairo-vg.pc cairo-egl.pc cairo-glx.pc cairo-wgl.pc \ - cairo-script.pc cairo-ft.pc cairo-fc.pc cairo-ps.pc \ - cairo-pdf.pc cairo-svg.pc cairo-tee.pc cairo-xml.pc \ - cairo-gobject.pc + cairo-gl.pc cairo-glesv2.pc cairo-glesv3.pc cairo-cogl.pc \ + cairo-directfb.pc cairo-vg.pc cairo-egl.pc cairo-glx.pc \ + cairo-wgl.pc cairo-script.pc cairo-ft.pc cairo-fc.pc \ + cairo-ps.pc cairo-pdf.pc cairo-svg.pc cairo-tee.pc \ + cairo-xml.pc cairo-gobject.pc CONFIG_CLEAN_VPATH_FILES = am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ @@ -458,11 +467,11 @@ cairo-truetype-subset-private.h cairo-type1-private.h \ cairo-type3-glyph-surface-private.h \ cairo-pdf-operators-private.h cairo-pdf-shading-private.h \ - cairo-xlib-private.h cairo-xlib-surface-private.h \ - cairo-xlib-xrender-private.h cairo-xcb-private.h \ - cairo-quartz-private.h win32/cairo-win32-private.h \ - skia/cairo-skia-private.h cairo-os2-private.h \ - drm/cairo-drm-private.h drm/cairo-drm-ioctl-private.h \ + cairo-tag-attributes-private.h cairo-xlib-private.h \ + cairo-xlib-surface-private.h cairo-xlib-xrender-private.h \ + cairo-xcb-private.h cairo-quartz-private.h \ + win32/cairo-win32-private.h skia/cairo-skia-private.h \ + cairo-os2-private.h drm/cairo-drm-private.h \ drm/cairo-drm-intel-private.h \ drm/cairo-drm-intel-brw-defines.h \ drm/cairo-drm-intel-brw-structs.h drm/cairo-drm-intel-brw-eu.h \ @@ -475,8 +484,9 @@ cairo-cogl-gradient-private.h cairo-cogl-context-private.h \ cairo-cogl-utils-private.h cairo-script-private.h \ cairo-ft-private.h cairo-ps-surface-private.h \ - cairo-pdf-surface-private.h cairo-svg-surface-private.h \ - test-compositor-surface.h test-compositor-surface-private.h \ + cairo-pdf-surface-private.h cairo-tag-stack-private.h \ + cairo-svg-surface-private.h test-compositor-surface.h \ + test-compositor-surface-private.h \ test-null-compositor-surface.h test-paginated-surface.h \ cairo-tee-surface-private.h cairo-analysis-surface.c \ cairo-arc.c cairo-array.c cairo-atomic.c cairo-base64-stream.c \ @@ -525,8 +535,9 @@ cairo-type1-fallback.c cairo-type1-glyph-names.c \ cairo-type1-subset.c cairo-type3-glyph-surface.c \ cairo-pdf-operators.c cairo-pdf-shading.c \ - cairo-deflate-stream.c cairo-xlib-display.c \ - cairo-xlib-core-compositor.c cairo-xlib-fallback-compositor.c \ + cairo-tag-attributes.c cairo-deflate-stream.c \ + cairo-xlib-display.c cairo-xlib-core-compositor.c \ + cairo-xlib-fallback-compositor.c \ cairo-xlib-render-compositor.c cairo-xlib-screen.c \ cairo-xlib-source.c cairo-xlib-surface.c \ cairo-xlib-surface-shm.c cairo-xlib-visual.c \ @@ -561,10 +572,11 @@ cairo-directfb-surface.c cairo-vg-surface.c \ cairo-egl-context.c cairo-glx-context.c cairo-wgl-context.c \ cairo-script-surface.c cairo-ft-font.c cairo-ps-surface.c \ - cairo-pdf-surface.c cairo-svg-surface.c \ - test-compositor-surface.c test-null-compositor-surface.c \ - test-base-compositor-surface.c test-paginated-surface.c \ - cairo-tee-surface.c cairo-xml-surface.c cairo-version.h + cairo-pdf-surface.c cairo-pdf-interchange.c cairo-tag-stack.c \ + cairo-svg-surface.c test-compositor-surface.c \ + test-null-compositor-surface.c test-base-compositor-surface.c \ + test-paginated-surface.c cairo-tee-surface.c \ + cairo-xml-surface.c cairo-version.h am__objects_1 = @CAIRO_HAS_XLIB_SURFACE_TRUE@am__objects_2 = $(am__objects_1) @CAIRO_HAS_XLIB_XRENDER_SURFACE_TRUE@am__objects_3 = $(am__objects_1) @@ -580,51 +592,53 @@ @CAIRO_HAS_GL_SURFACE_TRUE@am__objects_13 = $(am__objects_1) am__objects_14 = $(am__objects_1) @CAIRO_HAS_GLESV2_SURFACE_TRUE@am__objects_15 = $(am__objects_14) -@CAIRO_HAS_COGL_SURFACE_TRUE@am__objects_16 = $(am__objects_1) -@CAIRO_HAS_DIRECTFB_SURFACE_TRUE@am__objects_17 = $(am__objects_1) -@CAIRO_HAS_VG_SURFACE_TRUE@am__objects_18 = $(am__objects_1) -@CAIRO_HAS_SCRIPT_SURFACE_TRUE@am__objects_19 = $(am__objects_1) -@CAIRO_HAS_FT_FONT_TRUE@am__objects_20 = $(am__objects_1) -@CAIRO_HAS_PS_SURFACE_TRUE@am__objects_21 = $(am__objects_1) -@CAIRO_HAS_PDF_SURFACE_TRUE@am__objects_22 = $(am__objects_1) -@CAIRO_HAS_SVG_SURFACE_TRUE@am__objects_23 = $(am__objects_1) -@CAIRO_HAS_TEE_SURFACE_TRUE@am__objects_24 = $(am__objects_1) -@CAIRO_HAS_XML_SURFACE_TRUE@am__objects_25 = $(am__objects_1) -am__objects_26 = $(am__objects_1) $(am__objects_2) $(am__objects_3) \ +@CAIRO_HAS_GLESV3_SURFACE_TRUE@am__objects_16 = $(am__objects_14) +@CAIRO_HAS_COGL_SURFACE_TRUE@am__objects_17 = $(am__objects_1) +@CAIRO_HAS_DIRECTFB_SURFACE_TRUE@am__objects_18 = $(am__objects_1) +@CAIRO_HAS_VG_SURFACE_TRUE@am__objects_19 = $(am__objects_1) +@CAIRO_HAS_SCRIPT_SURFACE_TRUE@am__objects_20 = $(am__objects_1) +@CAIRO_HAS_FT_FONT_TRUE@am__objects_21 = $(am__objects_1) +@CAIRO_HAS_PS_SURFACE_TRUE@am__objects_22 = $(am__objects_1) +@CAIRO_HAS_PDF_SURFACE_TRUE@am__objects_23 = $(am__objects_1) +@CAIRO_HAS_SVG_SURFACE_TRUE@am__objects_24 = $(am__objects_1) +@CAIRO_HAS_TEE_SURFACE_TRUE@am__objects_25 = $(am__objects_1) +@CAIRO_HAS_XML_SURFACE_TRUE@am__objects_26 = $(am__objects_1) +am__objects_27 = $(am__objects_1) $(am__objects_2) $(am__objects_3) \ $(am__objects_4) $(am__objects_1) $(am__objects_1) \ $(am__objects_5) $(am__objects_6) $(am__objects_1) \ $(am__objects_7) $(am__objects_8) $(am__objects_1) \ $(am__objects_9) $(am__objects_10) $(am__objects_11) \ $(am__objects_12) $(am__objects_1) $(am__objects_1) \ $(am__objects_13) $(am__objects_15) $(am__objects_16) \ - $(am__objects_17) $(am__objects_18) $(am__objects_1) \ - $(am__objects_1) $(am__objects_1) $(am__objects_19) \ - $(am__objects_20) $(am__objects_1) $(am__objects_21) \ + $(am__objects_17) $(am__objects_18) $(am__objects_19) \ + $(am__objects_1) $(am__objects_1) $(am__objects_1) \ + $(am__objects_20) $(am__objects_21) $(am__objects_1) \ $(am__objects_22) $(am__objects_23) $(am__objects_24) \ - $(am__objects_25) $(am__objects_1) -am__objects_27 = $(am__objects_1) $(am__objects_1) -@CAIRO_HAS_TEST_SURFACES_TRUE@am__objects_28 = $(am__objects_1) -am__objects_29 = $(am__objects_27) $(am__objects_2) $(am__objects_1) \ + $(am__objects_25) $(am__objects_26) $(am__objects_1) +am__objects_28 = $(am__objects_1) $(am__objects_1) +@CAIRO_HAS_TEST_SURFACES_TRUE@am__objects_29 = $(am__objects_1) +am__objects_30 = $(am__objects_28) $(am__objects_2) $(am__objects_1) \ $(am__objects_4) $(am__objects_1) $(am__objects_1) \ $(am__objects_1) $(am__objects_6) $(am__objects_1) \ $(am__objects_1) $(am__objects_8) $(am__objects_1) \ $(am__objects_9) $(am__objects_10) $(am__objects_1) \ $(am__objects_12) $(am__objects_1) $(am__objects_1) \ $(am__objects_13) $(am__objects_15) $(am__objects_16) \ + $(am__objects_17) $(am__objects_1) $(am__objects_1) \ $(am__objects_1) $(am__objects_1) $(am__objects_1) \ - $(am__objects_1) $(am__objects_1) $(am__objects_19) \ - $(am__objects_20) $(am__objects_1) $(am__objects_21) \ - $(am__objects_22) $(am__objects_23) $(am__objects_28) \ - $(am__objects_24) $(am__objects_1) $(am__objects_1) \ + $(am__objects_20) $(am__objects_21) $(am__objects_1) \ + $(am__objects_22) $(am__objects_23) $(am__objects_24) \ + $(am__objects_29) $(am__objects_25) $(am__objects_1) \ $(am__objects_1) $(am__objects_1) $(am__objects_1) \ - $(am__objects_1) -am__objects_30 = cairo-cff-subset.lo cairo-scaled-font-subsets.lo \ + $(am__objects_1) $(am__objects_1) +am__objects_31 = cairo-cff-subset.lo cairo-scaled-font-subsets.lo \ cairo-truetype-subset.lo cairo-type1-fallback.lo \ cairo-type1-glyph-names.lo cairo-type1-subset.lo \ cairo-type3-glyph-surface.lo -am__objects_31 = cairo-pdf-operators.lo cairo-pdf-shading.lo -am__objects_32 = cairo-deflate-stream.lo -am__objects_33 = cairo-analysis-surface.lo cairo-arc.lo cairo-array.lo \ +am__objects_32 = cairo-pdf-operators.lo cairo-pdf-shading.lo \ + cairo-tag-attributes.lo +am__objects_33 = cairo-deflate-stream.lo +am__objects_34 = cairo-analysis-surface.lo cairo-arc.lo cairo-array.lo \ cairo-atomic.lo cairo-base64-stream.lo cairo-base85-stream.lo \ cairo-bentley-ottmann.lo cairo-bentley-ottmann-rectangular.lo \ cairo-bentley-ottmann-rectilinear.lo \ @@ -666,38 +680,38 @@ cairo-clip-tor-scan-converter.lo cairo-toy-font-face.lo \ cairo-traps.lo cairo-tristrip.lo cairo-traps-compositor.lo \ cairo-unicode.lo cairo-user-font.lo cairo-version.lo \ - cairo-wideint.lo $(am__objects_30) $(am__objects_31) \ - $(am__objects_32) -am__objects_34 = cairo-xlib-display.lo cairo-xlib-core-compositor.lo \ + cairo-wideint.lo $(am__objects_31) $(am__objects_32) \ + $(am__objects_33) +am__objects_35 = cairo-xlib-display.lo cairo-xlib-core-compositor.lo \ cairo-xlib-fallback-compositor.lo \ cairo-xlib-render-compositor.lo cairo-xlib-screen.lo \ cairo-xlib-source.lo cairo-xlib-surface.lo \ cairo-xlib-surface-shm.lo cairo-xlib-visual.lo \ cairo-xlib-xcb-surface.lo -@CAIRO_HAS_XLIB_SURFACE_TRUE@am__objects_35 = $(am__objects_34) -am__objects_36 = cairo-xcb-connection.lo cairo-xcb-connection-core.lo \ +@CAIRO_HAS_XLIB_SURFACE_TRUE@am__objects_36 = $(am__objects_35) +am__objects_37 = 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-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) -am__objects_40 = cairo-quartz-font.lo -@CAIRO_HAS_QUARTZ_FONT_TRUE@am__objects_41 = $(am__objects_40) -am__objects_42 = cairo-quartz-image-surface.lo -@CAIRO_HAS_QUARTZ_IMAGE_SURFACE_TRUE@am__objects_43 = \ -@CAIRO_HAS_QUARTZ_IMAGE_SURFACE_TRUE@ $(am__objects_42) -am__objects_44 = cairo-win32-debug.lo cairo-win32-device.lo \ +@CAIRO_HAS_XCB_SURFACE_TRUE@am__objects_38 = $(am__objects_37) +am__objects_39 = cairo-quartz-surface.lo +@CAIRO_HAS_QUARTZ_SURFACE_TRUE@am__objects_40 = $(am__objects_39) +am__objects_41 = cairo-quartz-font.lo +@CAIRO_HAS_QUARTZ_FONT_TRUE@am__objects_42 = $(am__objects_41) +am__objects_43 = cairo-quartz-image-surface.lo +@CAIRO_HAS_QUARTZ_IMAGE_SURFACE_TRUE@am__objects_44 = \ +@CAIRO_HAS_QUARTZ_IMAGE_SURFACE_TRUE@ $(am__objects_43) +am__objects_45 = cairo-win32-debug.lo cairo-win32-device.lo \ cairo-win32-gdi-compositor.lo cairo-win32-system.lo \ cairo-win32-surface.lo cairo-win32-display-surface.lo \ cairo-win32-printing-surface.lo -@CAIRO_HAS_WIN32_SURFACE_TRUE@am__objects_45 = $(am__objects_44) -am__objects_46 = cairo-win32-font.lo -@CAIRO_HAS_WIN32_FONT_TRUE@am__objects_47 = $(am__objects_46) -am__objects_48 = cairo-os2-surface.lo -@CAIRO_HAS_OS2_SURFACE_TRUE@am__objects_49 = $(am__objects_48) -am__objects_50 = cairo-drm.lo cairo-drm-bo.lo cairo-drm-surface.lo \ +@CAIRO_HAS_WIN32_SURFACE_TRUE@am__objects_46 = $(am__objects_45) +am__objects_47 = cairo-win32-font.lo +@CAIRO_HAS_WIN32_FONT_TRUE@am__objects_48 = $(am__objects_47) +am__objects_49 = cairo-os2-surface.lo +@CAIRO_HAS_OS2_SURFACE_TRUE@am__objects_50 = $(am__objects_49) +am__objects_51 = cairo-drm.lo cairo-drm-bo.lo cairo-drm-surface.lo \ cairo-drm-intel.lo cairo-drm-intel-debug.lo \ cairo-drm-intel-surface.lo cairo-drm-i915-surface.lo \ cairo-drm-i915-glyphs.lo cairo-drm-i915-shader.lo \ @@ -706,67 +720,69 @@ cairo-drm-i965-spans.lo cairo-drm-intel-brw-eu.lo \ cairo-drm-intel-brw-eu-emit.lo cairo-drm-intel-brw-eu-util.lo \ cairo-drm-radeon.lo cairo-drm-radeon-surface.lo -@CAIRO_HAS_DRM_SURFACE_TRUE@am__objects_51 = $(am__objects_50) -am__objects_52 = cairo-drm-gallium-surface.lo -@CAIRO_HAS_GALLIUM_SURFACE_TRUE@am__objects_53 = $(am__objects_52) -am__objects_54 = cairo-png.lo -@CAIRO_HAS_PNG_FUNCTIONS_TRUE@am__objects_55 = $(am__objects_54) -am__objects_56 = cairo-gl-composite.lo cairo-gl-device.lo \ +@CAIRO_HAS_DRM_SURFACE_TRUE@am__objects_52 = $(am__objects_51) +am__objects_53 = cairo-drm-gallium-surface.lo +@CAIRO_HAS_GALLIUM_SURFACE_TRUE@am__objects_54 = $(am__objects_53) +am__objects_55 = cairo-png.lo +@CAIRO_HAS_PNG_FUNCTIONS_TRUE@am__objects_56 = $(am__objects_55) +am__objects_57 = cairo-gl-composite.lo cairo-gl-device.lo \ cairo-gl-dispatch.lo cairo-gl-glyphs.lo cairo-gl-gradient.lo \ cairo-gl-info.lo cairo-gl-operand.lo cairo-gl-shaders.lo \ cairo-gl-msaa-compositor.lo cairo-gl-spans-compositor.lo \ cairo-gl-traps-compositor.lo cairo-gl-source.lo \ cairo-gl-surface.lo -@CAIRO_HAS_GL_SURFACE_TRUE@am__objects_57 = $(am__objects_56) -am__objects_58 = $(am__objects_56) -@CAIRO_HAS_GLESV2_SURFACE_TRUE@am__objects_59 = $(am__objects_58) -am__objects_60 = cairo-cogl-surface.lo cairo-cogl-gradient.lo \ +@CAIRO_HAS_GL_SURFACE_TRUE@am__objects_58 = $(am__objects_57) +am__objects_59 = $(am__objects_57) +@CAIRO_HAS_GLESV2_SURFACE_TRUE@am__objects_60 = $(am__objects_59) +@CAIRO_HAS_GLESV3_SURFACE_TRUE@am__objects_61 = $(am__objects_59) +am__objects_62 = cairo-cogl-surface.lo cairo-cogl-gradient.lo \ cairo-cogl-context.lo cairo-cogl-utils.lo -@CAIRO_HAS_COGL_SURFACE_TRUE@am__objects_61 = $(am__objects_60) -am__objects_62 = cairo-directfb-surface.lo -@CAIRO_HAS_DIRECTFB_SURFACE_TRUE@am__objects_63 = $(am__objects_62) -am__objects_64 = cairo-vg-surface.lo -@CAIRO_HAS_VG_SURFACE_TRUE@am__objects_65 = $(am__objects_64) -am__objects_66 = cairo-egl-context.lo -@CAIRO_HAS_EGL_FUNCTIONS_TRUE@am__objects_67 = $(am__objects_66) -am__objects_68 = cairo-glx-context.lo -@CAIRO_HAS_GLX_FUNCTIONS_TRUE@am__objects_69 = $(am__objects_68) -am__objects_70 = cairo-wgl-context.lo -@CAIRO_HAS_WGL_FUNCTIONS_TRUE@am__objects_71 = $(am__objects_70) -am__objects_72 = cairo-script-surface.lo -@CAIRO_HAS_SCRIPT_SURFACE_TRUE@am__objects_73 = $(am__objects_72) -am__objects_74 = cairo-ft-font.lo -@CAIRO_HAS_FT_FONT_TRUE@am__objects_75 = $(am__objects_74) -am__objects_76 = cairo-ps-surface.lo -@CAIRO_HAS_PS_SURFACE_TRUE@am__objects_77 = $(am__objects_76) -am__objects_78 = cairo-pdf-surface.lo -@CAIRO_HAS_PDF_SURFACE_TRUE@am__objects_79 = $(am__objects_78) -am__objects_80 = cairo-svg-surface.lo -@CAIRO_HAS_SVG_SURFACE_TRUE@am__objects_81 = $(am__objects_80) -am__objects_82 = test-compositor-surface.lo \ +@CAIRO_HAS_COGL_SURFACE_TRUE@am__objects_63 = $(am__objects_62) +am__objects_64 = cairo-directfb-surface.lo +@CAIRO_HAS_DIRECTFB_SURFACE_TRUE@am__objects_65 = $(am__objects_64) +am__objects_66 = cairo-vg-surface.lo +@CAIRO_HAS_VG_SURFACE_TRUE@am__objects_67 = $(am__objects_66) +am__objects_68 = cairo-egl-context.lo +@CAIRO_HAS_EGL_FUNCTIONS_TRUE@am__objects_69 = $(am__objects_68) +am__objects_70 = cairo-glx-context.lo +@CAIRO_HAS_GLX_FUNCTIONS_TRUE@am__objects_71 = $(am__objects_70) +am__objects_72 = cairo-wgl-context.lo +@CAIRO_HAS_WGL_FUNCTIONS_TRUE@am__objects_73 = $(am__objects_72) +am__objects_74 = cairo-script-surface.lo +@CAIRO_HAS_SCRIPT_SURFACE_TRUE@am__objects_75 = $(am__objects_74) +am__objects_76 = cairo-ft-font.lo +@CAIRO_HAS_FT_FONT_TRUE@am__objects_77 = $(am__objects_76) +am__objects_78 = cairo-ps-surface.lo +@CAIRO_HAS_PS_SURFACE_TRUE@am__objects_79 = $(am__objects_78) +am__objects_80 = cairo-pdf-surface.lo cairo-pdf-interchange.lo \ + cairo-tag-stack.lo +@CAIRO_HAS_PDF_SURFACE_TRUE@am__objects_81 = $(am__objects_80) +am__objects_82 = cairo-svg-surface.lo +@CAIRO_HAS_SVG_SURFACE_TRUE@am__objects_83 = $(am__objects_82) +am__objects_84 = test-compositor-surface.lo \ test-null-compositor-surface.lo \ test-base-compositor-surface.lo test-paginated-surface.lo -@CAIRO_HAS_TEST_SURFACES_TRUE@am__objects_83 = $(am__objects_82) -am__objects_84 = cairo-tee-surface.lo -@CAIRO_HAS_TEE_SURFACE_TRUE@am__objects_85 = $(am__objects_84) -am__objects_86 = cairo-xml-surface.lo -@CAIRO_HAS_XML_SURFACE_TRUE@am__objects_87 = $(am__objects_86) -am__objects_88 = $(am__objects_33) $(am__objects_35) $(am__objects_1) \ - $(am__objects_37) $(am__objects_1) $(am__objects_1) \ - $(am__objects_1) $(am__objects_39) $(am__objects_41) \ - $(am__objects_43) $(am__objects_45) $(am__objects_47) \ - $(am__objects_1) $(am__objects_49) $(am__objects_1) \ - $(am__objects_51) $(am__objects_53) $(am__objects_55) \ - $(am__objects_57) $(am__objects_59) $(am__objects_61) \ +@CAIRO_HAS_TEST_SURFACES_TRUE@am__objects_85 = $(am__objects_84) +am__objects_86 = cairo-tee-surface.lo +@CAIRO_HAS_TEE_SURFACE_TRUE@am__objects_87 = $(am__objects_86) +am__objects_88 = cairo-xml-surface.lo +@CAIRO_HAS_XML_SURFACE_TRUE@am__objects_89 = $(am__objects_88) +am__objects_90 = $(am__objects_34) $(am__objects_36) $(am__objects_1) \ + $(am__objects_38) $(am__objects_1) $(am__objects_1) \ + $(am__objects_1) $(am__objects_40) $(am__objects_42) \ + $(am__objects_44) $(am__objects_46) $(am__objects_48) \ + $(am__objects_1) $(am__objects_50) $(am__objects_1) \ + $(am__objects_52) $(am__objects_54) $(am__objects_56) \ + $(am__objects_58) $(am__objects_60) $(am__objects_61) \ $(am__objects_63) $(am__objects_65) $(am__objects_67) \ $(am__objects_69) $(am__objects_71) $(am__objects_73) \ - $(am__objects_75) $(am__objects_1) $(am__objects_77) \ + $(am__objects_75) $(am__objects_77) $(am__objects_1) \ $(am__objects_79) $(am__objects_81) $(am__objects_83) \ - $(am__objects_85) $(am__objects_87) $(am__objects_1) \ + $(am__objects_85) $(am__objects_87) $(am__objects_89) \ $(am__objects_1) $(am__objects_1) $(am__objects_1) \ - $(am__objects_1) -am_libcairo_la_OBJECTS = $(am__objects_26) $(am__objects_29) \ - $(am__objects_88) + $(am__objects_1) $(am__objects_1) +am_libcairo_la_OBJECTS = $(am__objects_27) $(am__objects_30) \ + $(am__objects_90) nodist_libcairo_la_OBJECTS = libcairo_la_OBJECTS = $(am_libcairo_la_OBJECTS) \ $(nodist_libcairo_la_OBJECTS) @@ -833,11 +849,11 @@ cairo-truetype-subset-private.h cairo-type1-private.h \ cairo-type3-glyph-surface-private.h \ cairo-pdf-operators-private.h cairo-pdf-shading-private.h \ - cairo-xlib-private.h cairo-xlib-surface-private.h \ - cairo-xlib-xrender-private.h cairo-xcb-private.h \ - cairo-quartz-private.h win32/cairo-win32-private.h \ - skia/cairo-skia-private.h cairo-os2-private.h \ - drm/cairo-drm-private.h drm/cairo-drm-ioctl-private.h \ + cairo-tag-attributes-private.h cairo-xlib-private.h \ + cairo-xlib-surface-private.h cairo-xlib-xrender-private.h \ + cairo-xcb-private.h cairo-quartz-private.h \ + win32/cairo-win32-private.h skia/cairo-skia-private.h \ + cairo-os2-private.h drm/cairo-drm-private.h \ drm/cairo-drm-intel-private.h \ drm/cairo-drm-intel-brw-defines.h \ drm/cairo-drm-intel-brw-structs.h drm/cairo-drm-intel-brw-eu.h \ @@ -850,23 +866,25 @@ cairo-cogl-gradient-private.h cairo-cogl-context-private.h \ cairo-cogl-utils-private.h cairo-script-private.h \ cairo-ft-private.h cairo-ps-surface-private.h \ - cairo-pdf-surface-private.h cairo-svg-surface-private.h \ - test-compositor-surface.h test-compositor-surface-private.h \ + cairo-pdf-surface-private.h cairo-tag-stack-private.h \ + cairo-svg-surface-private.h test-compositor-surface.h \ + test-compositor-surface-private.h \ test-null-compositor-surface.h test-paginated-surface.h \ cairo-tee-surface-private.h cairo-qt-surface.cpp \ skia/cairo-skia-context.cpp skia/cairo-skia-surface.cpp \ cairo-beos-surface.cpp -am__objects_89 = cairo-qt-surface.lo -@CAIRO_HAS_QT_SURFACE_TRUE@am__objects_90 = $(am__objects_89) -am__objects_91 = cairo-skia-context.lo cairo-skia-surface.lo -@CAIRO_HAS_SKIA_SURFACE_TRUE@am__objects_92 = $(am__objects_91) -am__objects_93 = cairo-beos-surface.lo -@CAIRO_HAS_BEOS_SURFACE_TRUE@am__objects_94 = $(am__objects_93) -am__objects_95 = $(am__objects_1) $(am__objects_1) $(am__objects_1) \ - $(am__objects_1) $(am__objects_1) $(am__objects_90) \ - $(am__objects_1) $(am__objects_1) $(am__objects_1) \ +am__objects_91 = cairo-qt-surface.lo +@CAIRO_HAS_QT_SURFACE_TRUE@am__objects_92 = $(am__objects_91) +am__objects_93 = cairo-skia-context.lo cairo-skia-surface.lo +@CAIRO_HAS_SKIA_SURFACE_TRUE@am__objects_94 = $(am__objects_93) +am__objects_95 = cairo-beos-surface.lo +@CAIRO_HAS_BEOS_SURFACE_TRUE@am__objects_96 = $(am__objects_95) +am__objects_97 = $(am__objects_1) $(am__objects_1) $(am__objects_1) \ $(am__objects_1) $(am__objects_1) $(am__objects_92) \ - $(am__objects_1) $(am__objects_94) $(am__objects_1) \ + $(am__objects_1) $(am__objects_1) $(am__objects_1) \ + $(am__objects_1) $(am__objects_1) $(am__objects_94) \ + $(am__objects_1) $(am__objects_96) $(am__objects_1) \ + $(am__objects_1) $(am__objects_1) $(am__objects_1) \ $(am__objects_1) $(am__objects_1) $(am__objects_1) \ $(am__objects_1) $(am__objects_1) $(am__objects_1) \ $(am__objects_1) $(am__objects_1) $(am__objects_1) \ @@ -874,9 +892,9 @@ $(am__objects_1) $(am__objects_1) $(am__objects_1) \ $(am__objects_1) $(am__objects_1) $(am__objects_1) \ $(am__objects_1) $(am__objects_1) $(am__objects_1) \ - $(am__objects_1) $(am__objects_1) $(am__objects_1) -am_libcairo_cxx_la_OBJECTS = $(am__objects_26) $(am__objects_29) \ - $(am__objects_95) + $(am__objects_1) +am_libcairo_cxx_la_OBJECTS = $(am__objects_27) $(am__objects_30) \ + $(am__objects_97) libcairo_cxx_la_OBJECTS = $(am_libcairo_cxx_la_OBJECTS) libcairo_cxx_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX \ $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CXXLD) \ @@ -1154,6 +1172,12 @@ TEST_LOG_DRIVER = $(SHELL) $(top_srcdir)/build/test-driver TEST_LOG_COMPILE = $(TEST_LOG_COMPILER) $(AM_TEST_LOG_FLAGS) \ $(TEST_LOG_FLAGS) +am__DIST_COMMON = $(srcdir)/Makefile.am.analysis \ + $(srcdir)/Makefile.am.features $(srcdir)/Makefile.in \ + $(srcdir)/cairo-features.pc.in $(srcdir)/cairo.pc.in \ + $(top_srcdir)/build/Makefile.am.common \ + $(top_srcdir)/build/depcomp $(top_srcdir)/build/test-driver \ + $(top_srcdir)/src/Makefile.sources README DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ @@ -1238,6 +1262,7 @@ LTLIBOBJS = @LTLIBOBJS@ LTP = @LTP@ LTP_GENHTML = @LTP_GENHTML@ +LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MKDIR_P = @MKDIR_P@ @@ -1314,6 +1339,8 @@ gl_LIBS = @gl_LIBS@ glesv2_CFLAGS = @glesv2_CFLAGS@ glesv2_LIBS = @glesv2_LIBS@ +glesv3_CFLAGS = @glesv3_CFLAGS@ +glesv3_LIBS = @glesv3_LIBS@ glib_CFLAGS = @glib_CFLAGS@ glib_LIBS = @glib_LIBS@ gtk_CFLAGS = @gtk_CFLAGS@ @@ -1351,6 +1378,7 @@ qt_LIBS = @qt_LIBS@ real_pthread_CFLAGS = @real_pthread_CFLAGS@ real_pthread_LIBS = @real_pthread_LIBS@ +runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ shm_LIBS = @shm_LIBS@ @@ -1492,16 +1520,26 @@ cairo_egl_sources = cairo-egl-context.c cairo_glx_sources = cairo-glx-context.c cairo_wgl_sources = cairo-wgl-context.c -_cairo_pdf_operators_private = cairo-pdf-operators-private.h cairo-pdf-shading-private.h -_cairo_pdf_operators_sources = cairo-pdf-operators.c cairo-pdf-shading.c +_cairo_pdf_operators_private = \ + cairo-pdf-operators-private.h \ + cairo-pdf-shading-private.h \ + cairo-tag-attributes-private.h \ + $(NULL) + +_cairo_pdf_operators_sources = \ + cairo-pdf-operators.c \ + cairo-pdf-shading.c \ + cairo-tag-attributes.c \ + $(NULL) + cairo_png_sources = cairo-png.c cairo_ps_headers = cairo-ps.h cairo_ps_private = cairo-ps-surface-private.h cairo_ps_sources = cairo-ps-surface.c _cairo_deflate_stream_sources = cairo-deflate-stream.c cairo_pdf_headers = cairo-pdf.h -cairo_pdf_private = cairo-pdf-surface-private.h -cairo_pdf_sources = cairo-pdf-surface.c +cairo_pdf_private = cairo-pdf-surface-private.h cairo-tag-stack-private.h +cairo_pdf_sources = cairo-pdf-surface.c cairo-pdf-interchange.c cairo-tag-stack.c cairo_svg_headers = cairo-svg.h cairo_svg_private = cairo-svg-surface-private.h cairo_svg_sources = cairo-svg-surface.c @@ -1622,11 +1660,13 @@ cairo_glesv2_headers = $(cairo_gl_headers) cairo_glesv2_private = $(cairo_gl_private) cairo_glesv2_sources = $(cairo_gl_sources) +cairo_glesv3_headers = $(cairo_gl_headers) +cairo_glesv3_private = $(cairo_gl_private) +cairo_glesv3_sources = $(cairo_gl_sources) cairo_directfb_headers = cairo-directfb.h cairo_directfb_sources = cairo-directfb-surface.c cairo_drm_headers = cairo-drm.h cairo_drm_private = drm/cairo-drm-private.h \ - drm/cairo-drm-ioctl-private.h \ drm/cairo-drm-intel-private.h \ drm/cairo-drm-intel-brw-defines.h \ drm/cairo-drm-intel-brw-structs.h \ @@ -1696,9 +1736,9 @@ $(cairo_skia_headers) $(cairo_os2_headers) \ $(cairo_beos_headers) $(cairo_drm_headers) \ $(cairo_gallium_headers) $(cairo_gl_headers) \ - $(cairo_glesv2_headers) $(cairo_cogl_headers) \ - $(cairo_directfb_headers) $(cairo_vg_headers) \ - $(cairo_tee_headers) $(cairo_xml_headers) + $(cairo_glesv2_headers) $(cairo_glesv3_headers) \ + $(cairo_cogl_headers) $(cairo_directfb_headers) \ + $(cairo_vg_headers) $(cairo_tee_headers) $(cairo_xml_headers) all_cairo_headers = $(cairo_headers) $(cairo_xlib_headers) \ $(cairo_xlib_xrender_headers) $(cairo_xcb_headers) \ $(cairo_xlib_xcb_headers) $(cairo_xcb_shm_headers) \ @@ -1709,15 +1749,16 @@ $(cairo_beos_headers) $(cairo_drm_headers) \ $(cairo_gallium_headers) $(cairo_png_headers) \ $(cairo_gl_headers) $(cairo_glesv2_headers) \ - $(cairo_cogl_headers) $(cairo_directfb_headers) \ - $(cairo_vg_headers) $(cairo_egl_headers) $(cairo_glx_headers) \ - $(cairo_wgl_headers) $(cairo_script_headers) \ - $(cairo_ft_headers) $(cairo_fc_headers) $(cairo_ps_headers) \ - $(cairo_pdf_headers) $(cairo_svg_headers) \ - $(cairo_image_headers) $(cairo_mime_headers) \ - $(cairo_recording_headers) $(cairo_observer_headers) \ - $(cairo_tee_headers) $(cairo_xml_headers) \ - $(cairo_user_headers) $(cairo_gobject_headers) + $(cairo_glesv3_headers) $(cairo_cogl_headers) \ + $(cairo_directfb_headers) $(cairo_vg_headers) \ + $(cairo_egl_headers) $(cairo_glx_headers) $(cairo_wgl_headers) \ + $(cairo_script_headers) $(cairo_ft_headers) \ + $(cairo_fc_headers) $(cairo_ps_headers) $(cairo_pdf_headers) \ + $(cairo_svg_headers) $(cairo_image_headers) \ + $(cairo_mime_headers) $(cairo_recording_headers) \ + $(cairo_observer_headers) $(cairo_tee_headers) \ + $(cairo_xml_headers) $(cairo_user_headers) \ + $(cairo_gobject_headers) all_cairo_private = $(cairo_private) $(cairo_xlib_private) \ $(cairo_xlib_xrender_private) $(cairo_xcb_private) \ $(cairo_xlib_xcb_private) $(cairo_xcb_shm_private) \ @@ -1728,20 +1769,21 @@ $(cairo_beos_private) $(cairo_drm_private) \ $(cairo_gallium_private) $(cairo_png_private) \ $(cairo_gl_private) $(cairo_glesv2_private) \ - $(cairo_cogl_private) $(cairo_directfb_private) \ - $(cairo_vg_private) $(cairo_egl_private) $(cairo_glx_private) \ - $(cairo_wgl_private) $(cairo_script_private) \ - $(cairo_ft_private) $(cairo_fc_private) $(cairo_ps_private) \ - $(cairo_pdf_private) $(cairo_svg_private) \ - $(cairo_test_surfaces_private) $(cairo_test_surfaces_headers) \ - $(cairo_image_private) $(cairo_mime_private) \ - $(cairo_recording_private) $(cairo_observer_private) \ - $(cairo_tee_private) $(cairo_xml_private) \ - $(cairo_user_private) $(cairo_pthread_private) \ - $(cairo_pthread_headers) $(cairo_gobject_private) \ - $(cairo_trace_private) $(cairo_trace_headers) \ - $(cairo_interpreter_private) $(cairo_interpreter_headers) \ - $(cairo_symbol_lookup_private) $(cairo_symbol_lookup_headers) + $(cairo_glesv3_private) $(cairo_cogl_private) \ + $(cairo_directfb_private) $(cairo_vg_private) \ + $(cairo_egl_private) $(cairo_glx_private) $(cairo_wgl_private) \ + $(cairo_script_private) $(cairo_ft_private) \ + $(cairo_fc_private) $(cairo_ps_private) $(cairo_pdf_private) \ + $(cairo_svg_private) $(cairo_test_surfaces_private) \ + $(cairo_test_surfaces_headers) $(cairo_image_private) \ + $(cairo_mime_private) $(cairo_recording_private) \ + $(cairo_observer_private) $(cairo_tee_private) \ + $(cairo_xml_private) $(cairo_user_private) \ + $(cairo_pthread_private) $(cairo_pthread_headers) \ + $(cairo_gobject_private) $(cairo_trace_private) \ + $(cairo_trace_headers) $(cairo_interpreter_private) \ + $(cairo_interpreter_headers) $(cairo_symbol_lookup_private) \ + $(cairo_symbol_lookup_headers) all_cairo_cxx_sources = $(cairo_cxx_sources) $(cairo_xlib_cxx_sources) \ $(cairo_xlib_xrender_cxx_sources) $(cairo_xcb_cxx_sources) \ $(cairo_xlib_xcb_cxx_sources) $(cairo_xcb_shm_cxx_sources) \ @@ -1752,19 +1794,19 @@ $(cairo_os2_cxx_sources) $(cairo_beos_cxx_sources) \ $(cairo_drm_cxx_sources) $(cairo_gallium_cxx_sources) \ $(cairo_png_cxx_sources) $(cairo_gl_cxx_sources) \ - $(cairo_glesv2_cxx_sources) $(cairo_cogl_cxx_sources) \ - $(cairo_directfb_cxx_sources) $(cairo_vg_cxx_sources) \ - $(cairo_egl_cxx_sources) $(cairo_glx_cxx_sources) \ - $(cairo_wgl_cxx_sources) $(cairo_script_cxx_sources) \ - $(cairo_ft_cxx_sources) $(cairo_fc_cxx_sources) \ - $(cairo_ps_cxx_sources) $(cairo_pdf_cxx_sources) \ - $(cairo_svg_cxx_sources) $(cairo_test_surfaces_cxx_sources) \ - $(cairo_image_cxx_sources) $(cairo_mime_cxx_sources) \ - $(cairo_recording_cxx_sources) $(cairo_observer_cxx_sources) \ - $(cairo_tee_cxx_sources) $(cairo_xml_cxx_sources) \ - $(cairo_user_cxx_sources) $(cairo_pthread_cxx_sources) \ - $(cairo_gobject_cxx_sources) $(cairo_trace_cxx_sources) \ - $(cairo_interpreter_cxx_sources) \ + $(cairo_glesv2_cxx_sources) $(cairo_glesv3_cxx_sources) \ + $(cairo_cogl_cxx_sources) $(cairo_directfb_cxx_sources) \ + $(cairo_vg_cxx_sources) $(cairo_egl_cxx_sources) \ + $(cairo_glx_cxx_sources) $(cairo_wgl_cxx_sources) \ + $(cairo_script_cxx_sources) $(cairo_ft_cxx_sources) \ + $(cairo_fc_cxx_sources) $(cairo_ps_cxx_sources) \ + $(cairo_pdf_cxx_sources) $(cairo_svg_cxx_sources) \ + $(cairo_test_surfaces_cxx_sources) $(cairo_image_cxx_sources) \ + $(cairo_mime_cxx_sources) $(cairo_recording_cxx_sources) \ + $(cairo_observer_cxx_sources) $(cairo_tee_cxx_sources) \ + $(cairo_xml_cxx_sources) $(cairo_user_cxx_sources) \ + $(cairo_pthread_cxx_sources) $(cairo_gobject_cxx_sources) \ + $(cairo_trace_cxx_sources) $(cairo_interpreter_cxx_sources) \ $(cairo_symbol_lookup_cxx_sources) all_cairo_sources = $(cairo_sources) $(cairo_xlib_sources) \ $(cairo_xlib_xrender_sources) $(cairo_xcb_sources) \ @@ -1776,18 +1818,18 @@ $(cairo_beos_sources) $(cairo_drm_sources) \ $(cairo_gallium_sources) $(cairo_png_sources) \ $(cairo_gl_sources) $(cairo_glesv2_sources) \ - $(cairo_cogl_sources) $(cairo_directfb_sources) \ - $(cairo_vg_sources) $(cairo_egl_sources) $(cairo_glx_sources) \ - $(cairo_wgl_sources) $(cairo_script_sources) \ - $(cairo_ft_sources) $(cairo_fc_sources) $(cairo_ps_sources) \ - $(cairo_pdf_sources) $(cairo_svg_sources) \ - $(cairo_test_surfaces_sources) $(cairo_image_sources) \ - $(cairo_mime_sources) $(cairo_recording_sources) \ - $(cairo_observer_sources) $(cairo_tee_sources) \ - $(cairo_xml_sources) $(cairo_user_sources) \ - $(cairo_pthread_sources) $(cairo_gobject_sources) \ - $(cairo_trace_sources) $(cairo_interpreter_sources) \ - $(cairo_symbol_lookup_sources) + $(cairo_glesv3_sources) $(cairo_cogl_sources) \ + $(cairo_directfb_sources) $(cairo_vg_sources) \ + $(cairo_egl_sources) $(cairo_glx_sources) $(cairo_wgl_sources) \ + $(cairo_script_sources) $(cairo_ft_sources) \ + $(cairo_fc_sources) $(cairo_ps_sources) $(cairo_pdf_sources) \ + $(cairo_svg_sources) $(cairo_test_surfaces_sources) \ + $(cairo_image_sources) $(cairo_mime_sources) \ + $(cairo_recording_sources) $(cairo_observer_sources) \ + $(cairo_tee_sources) $(cairo_xml_sources) \ + $(cairo_user_sources) $(cairo_pthread_sources) \ + $(cairo_gobject_sources) $(cairo_trace_sources) \ + $(cairo_interpreter_sources) $(cairo_symbol_lookup_sources) enabled_cairo_headers = $(cairo_headers) $(am__append_1) \ $(am__append_6) $(am__append_11) $(am__append_16) \ $(am__append_21) $(am__append_26) $(am__append_31) \ @@ -1799,10 +1841,10 @@ $(am__append_111) $(am__append_116) $(am__append_121) \ $(am__append_126) $(am__append_131) $(am__append_136) \ $(am__append_141) $(am__append_146) $(am__append_151) \ - $(cairo_image_headers) $(cairo_mime_headers) \ + $(am__append_156) $(cairo_image_headers) $(cairo_mime_headers) \ $(cairo_recording_headers) $(cairo_observer_headers) \ - $(am__append_159) $(am__append_164) $(cairo_user_headers) \ - $(am__append_172) + $(am__append_164) $(am__append_169) $(cairo_user_headers) \ + $(am__append_177) enabled_cairo_private = $(cairo_private) $(am__append_2) \ $(am__append_7) $(am__append_12) $(am__append_17) \ $(am__append_22) $(am__append_27) $(am__append_32) \ @@ -1814,11 +1856,11 @@ $(am__append_112) $(am__append_117) $(am__append_122) \ $(am__append_127) $(am__append_132) $(am__append_137) \ $(am__append_142) $(am__append_147) $(am__append_152) \ - $(am__append_156) $(cairo_image_private) $(cairo_mime_private) \ - $(cairo_recording_private) $(cairo_observer_private) \ - $(am__append_160) $(am__append_165) $(cairo_user_private) \ - $(am__append_169) $(am__append_173) $(am__append_177) \ - $(am__append_180) $(am__append_183) + $(am__append_157) $(am__append_161) $(cairo_image_private) \ + $(cairo_mime_private) $(cairo_recording_private) \ + $(cairo_observer_private) $(am__append_165) $(am__append_170) \ + $(cairo_user_private) $(am__append_174) $(am__append_178) \ + $(am__append_182) $(am__append_185) $(am__append_188) enabled_cairo_cxx_sources = $(cairo_cxx_sources) $(am__append_3) \ $(am__append_8) $(am__append_13) $(am__append_18) \ $(am__append_23) $(am__append_28) $(am__append_33) \ @@ -1830,12 +1872,12 @@ $(am__append_113) $(am__append_118) $(am__append_123) \ $(am__append_128) $(am__append_133) $(am__append_138) \ $(am__append_143) $(am__append_148) $(am__append_153) \ - $(am__append_157) $(cairo_image_cxx_sources) \ + $(am__append_158) $(am__append_162) $(cairo_image_cxx_sources) \ $(cairo_mime_cxx_sources) $(cairo_recording_cxx_sources) \ - $(cairo_observer_cxx_sources) $(am__append_161) \ - $(am__append_166) $(cairo_user_cxx_sources) $(am__append_170) \ - $(am__append_174) $(am__append_178) $(am__append_181) \ - $(am__append_184) + $(cairo_observer_cxx_sources) $(am__append_166) \ + $(am__append_171) $(cairo_user_cxx_sources) $(am__append_175) \ + $(am__append_179) $(am__append_183) $(am__append_186) \ + $(am__append_189) enabled_cairo_sources = $(cairo_sources) $(am__append_4) \ $(am__append_9) $(am__append_14) $(am__append_19) \ $(am__append_24) $(am__append_29) $(am__append_34) \ @@ -1847,21 +1889,21 @@ $(am__append_114) $(am__append_119) $(am__append_124) \ $(am__append_129) $(am__append_134) $(am__append_139) \ $(am__append_144) $(am__append_149) $(am__append_154) \ - $(am__append_158) $(cairo_image_sources) $(cairo_mime_sources) \ - $(cairo_recording_sources) $(cairo_observer_sources) \ - $(am__append_162) $(am__append_167) $(cairo_user_sources) \ - $(am__append_171) $(am__append_175) $(am__append_179) \ - $(am__append_182) $(am__append_185) + $(am__append_159) $(am__append_163) $(cairo_image_sources) \ + $(cairo_mime_sources) $(cairo_recording_sources) \ + $(cairo_observer_sources) $(am__append_167) $(am__append_172) \ + $(cairo_user_sources) $(am__append_176) $(am__append_180) \ + $(am__append_184) $(am__append_187) $(am__append_190) all_cairo_pkgconf = cairo.pc cairo-xlib.pc cairo-xlib-xrender.pc \ cairo-xcb.pc cairo-xlib-xcb.pc cairo-xcb-shm.pc cairo-qt.pc \ cairo-quartz.pc cairo-quartz-font.pc cairo-quartz-image.pc \ cairo-win32.pc cairo-win32-font.pc cairo-skia.pc cairo-os2.pc \ cairo-beos.pc cairo-drm.pc cairo-gallium.pc cairo-png.pc \ - cairo-gl.pc cairo-glesv2.pc cairo-cogl.pc cairo-directfb.pc \ - cairo-vg.pc cairo-egl.pc cairo-glx.pc cairo-wgl.pc \ - cairo-script.pc cairo-ft.pc cairo-fc.pc cairo-ps.pc \ - cairo-pdf.pc cairo-svg.pc cairo-tee.pc cairo-xml.pc \ - cairo-gobject.pc + cairo-gl.pc cairo-glesv2.pc cairo-glesv3.pc cairo-cogl.pc \ + cairo-directfb.pc cairo-vg.pc cairo-egl.pc cairo-glx.pc \ + cairo-wgl.pc cairo-script.pc cairo-ft.pc cairo-fc.pc \ + cairo-ps.pc cairo-pdf.pc cairo-svg.pc cairo-tee.pc \ + cairo-xml.pc cairo-gobject.pc enabled_cairo_pkgconf = cairo.pc $(am__append_5) $(am__append_10) \ $(am__append_15) $(am__append_20) $(am__append_25) \ $(am__append_30) $(am__append_35) $(am__append_40) \ @@ -1872,8 +1914,8 @@ $(am__append_105) $(am__append_110) $(am__append_115) \ $(am__append_120) $(am__append_125) $(am__append_130) \ $(am__append_135) $(am__append_140) $(am__append_145) \ - $(am__append_150) $(am__append_155) $(am__append_163) \ - $(am__append_168) $(am__append_176) + $(am__append_150) $(am__append_155) $(am__append_160) \ + $(am__append_168) $(am__append_173) $(am__append_181) #MAINTAINERCLEANFILES += $(srcdir)/Makefile.win32.features AM_CPPFLAGS = -I$(srcdir) $(CAIRO_CFLAGS) AM_LDFLAGS = $(CAIRO_LDFLAGS) @@ -1952,7 +1994,6 @@ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign src/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --foreign src/Makefile -.PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ @@ -1961,7 +2002,7 @@ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; -$(top_srcdir)/build/Makefile.am.common $(srcdir)/Makefile.am.features $(top_srcdir)/src/Makefile.sources $(srcdir)/Makefile.am.analysis: +$(top_srcdir)/build/Makefile.am.common $(srcdir)/Makefile.am.features $(top_srcdir)/src/Makefile.sources $(srcdir)/Makefile.am.analysis $(am__empty): $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh @@ -2011,6 +2052,8 @@ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ cairo-glesv2.pc: $(top_builddir)/config.status $(srcdir)/cairo-features.pc.in cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ +cairo-glesv3.pc: $(top_builddir)/config.status $(srcdir)/cairo-features.pc.in + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ cairo-cogl.pc: $(top_builddir)/config.status $(srcdir)/cairo-features.pc.in cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ cairo-directfb.pc: $(top_builddir)/config.status $(srcdir)/cairo-features.pc.in @@ -2225,6 +2268,7 @@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cairo-path-stroke.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cairo-path.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cairo-pattern.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cairo-pdf-interchange.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cairo-pdf-operators.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cairo-pdf-shading.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cairo-pdf-surface.Plo@am__quote@ @@ -2265,6 +2309,8 @@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cairo-surface-wrapper.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cairo-surface.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cairo-svg-surface.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cairo-tag-attributes.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cairo-tag-stack.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cairo-tee-surface.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cairo-time.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cairo-tor-scan-converter.Plo@am__quote@ @@ -2723,7 +2769,7 @@ if test -n "$$am__remaking_logs"; then \ echo "fatal: making $(TEST_SUITE_LOG): possible infinite" \ "recursion detected" >&2; \ - else \ + elif test -n "$$redo_logs"; then \ am__remaking_logs=yes $(MAKE) $(AM_MAKEFLAGS) $$redo_logs; \ fi; \ if $(am__make_dryrun); then :; else \ @@ -3063,6 +3109,8 @@ uninstall-cairoincludeHEADERS uninstall-libLTLIBRARIES \ uninstall-nodist_cairoincludeHEADERS uninstall-pkgconfigDATA +.PRECIOUS: Makefile + $(top_builddir)/config.h: $(top_srcdir)/config.h.in cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) config.h diff -Nru cairo-1.14.6/src/Makefile.sources cairo-1.15.10/src/Makefile.sources --- cairo-1.14.6/src/Makefile.sources 2015-10-27 21:04:21.000000000 +0000 +++ cairo-1.15.10/src/Makefile.sources 2017-12-07 02:14:36.000000000 +0000 @@ -264,8 +264,16 @@ cairo_glx_sources = cairo_wgl_sources = -_cairo_pdf_operators_private = cairo-pdf-operators-private.h cairo-pdf-shading-private.h -_cairo_pdf_operators_sources = cairo-pdf-operators.c cairo-pdf-shading.c +_cairo_pdf_operators_private = \ + cairo-pdf-operators-private.h \ + cairo-pdf-shading-private.h \ + cairo-tag-attributes-private.h \ + $(NULL) +_cairo_pdf_operators_sources = \ + cairo-pdf-operators.c \ + cairo-pdf-shading.c \ + cairo-tag-attributes.c \ + $(NULL) cairo_private += $(_cairo_pdf_operators_private) cairo_sources += $(_cairo_pdf_operators_sources) @@ -279,8 +287,8 @@ cairo_sources += $(_cairo_deflate_stream_sources) cairo_pdf_headers = cairo-pdf.h -cairo_pdf_private = cairo-pdf-surface-private.h -cairo_pdf_sources = cairo-pdf-surface.c +cairo_pdf_private = cairo-pdf-surface-private.h cairo-tag-stack-private.h +cairo_pdf_sources = cairo-pdf-surface.c cairo-pdf-interchange.c cairo-tag-stack.c cairo_svg_headers = cairo-svg.h cairo_svg_private = cairo-svg-surface-private.h @@ -407,6 +415,10 @@ cairo_glesv2_private = $(cairo_gl_private) cairo_glesv2_sources = $(cairo_gl_sources) +cairo_glesv3_headers = $(cairo_gl_headers) +cairo_glesv3_private = $(cairo_gl_private) +cairo_glesv3_sources = $(cairo_gl_sources) + cairo_egl_sources += cairo-egl-context.c cairo_glx_sources += cairo-glx-context.c cairo_wgl_sources += cairo-wgl-context.c @@ -416,7 +428,6 @@ cairo_drm_headers = cairo-drm.h cairo_drm_private = drm/cairo-drm-private.h \ - drm/cairo-drm-ioctl-private.h \ drm/cairo-drm-intel-private.h \ drm/cairo-drm-intel-brw-defines.h \ drm/cairo-drm-intel-brw-structs.h \ diff -Nru cairo-1.14.6/src/Makefile.win32.features cairo-1.15.10/src/Makefile.win32.features --- cairo-1.14.6/src/Makefile.win32.features 2015-10-27 21:04:21.000000000 +0000 +++ cairo-1.15.10/src/Makefile.win32.features 2017-12-07 02:14:36.000000000 +0000 @@ -325,6 +325,22 @@ enabled_cairo_pkgconf += cairo-glesv2.pc endif +unsupported_cairo_headers += $(cairo_glesv3_headers) +all_cairo_headers += $(cairo_glesv3_headers) +all_cairo_private += $(cairo_glesv3_private) +all_cairo_cxx_sources += $(cairo_glesv3_cxx_sources) +all_cairo_sources += $(cairo_glesv3_sources) +ifeq ($(CAIRO_HAS_GLESV3_SURFACE),1) +enabled_cairo_headers += $(cairo_glesv3_headers) +enabled_cairo_private += $(cairo_glesv3_private) +enabled_cairo_cxx_sources += $(cairo_glesv3_cxx_sources) +enabled_cairo_sources += $(cairo_glesv3_sources) +endif +all_cairo_pkgconf += cairo-glesv3.pc +ifeq ($(CAIRO_HAS_GLESV3_SURFACE),1) +enabled_cairo_pkgconf += cairo-glesv3.pc +endif + unsupported_cairo_headers += $(cairo_cogl_headers) all_cairo_headers += $(cairo_cogl_headers) all_cairo_private += $(cairo_cogl_private) diff -Nru cairo-1.14.6/src/test-compositor-surface.c cairo-1.15.10/src/test-compositor-surface.c --- cairo-1.14.6/src/test-compositor-surface.c 2015-10-27 21:04:30.000000000 +0000 +++ cairo-1.15.10/src/test-compositor-surface.c 2017-12-07 02:14:36.000000000 +0000 @@ -87,7 +87,8 @@ _cairo_surface_init (&surface->base.base, &test_compositor_surface_backend, NULL, /* device */ - content); + content, + FALSE); /* is_vector */ _cairo_image_surface_init (&surface->base, pixman_image, pixman_format); surface->base.compositor = compositor; diff -Nru cairo-1.14.6/src/test-null-compositor-surface.c cairo-1.15.10/src/test-null-compositor-surface.c --- cairo-1.14.6/src/test-null-compositor-surface.c 2015-10-27 21:04:30.000000000 +0000 +++ cairo-1.15.10/src/test-null-compositor-surface.c 2017-12-07 02:14:36.000000000 +0000 @@ -90,7 +90,8 @@ _cairo_surface_init (&surface->base.base, &test_compositor_surface_backend, NULL, /* device */ - content); + content, + FALSE); /* is_vector */ _cairo_image_surface_init (&surface->base, pixman_image, pixman_format); surface->base.compositor = compositor; @@ -403,9 +404,10 @@ static const cairo_compositor_t * no_traps_compositor_get (void) { + static cairo_atomic_once_t once = CAIRO_ATOMIC_ONCE_INIT; static cairo_traps_compositor_t compositor; - if (compositor.base.delegate == NULL) { + if (_cairo_atomic_init_once_enter(&once)) { _cairo_traps_compositor_init (&compositor, no_fallback_compositor_get ()); @@ -425,6 +427,8 @@ compositor.composite_traps = composite_traps; compositor.check_composite_glyphs = check_composite_glyphs; compositor.composite_glyphs = composite_glyphs; + + _cairo_atomic_init_once_leave(&once); } return &compositor.base; @@ -433,9 +437,10 @@ static const cairo_compositor_t * no_spans_compositor_get (void) { + static cairo_atomic_once_t once = CAIRO_ATOMIC_ONCE_INIT; static cairo_spans_compositor_t compositor; - if (compositor.base.delegate == NULL) { + if (_cairo_atomic_init_once_enter(&once)) { _cairo_spans_compositor_init (&compositor, no_traps_compositor_get()); @@ -447,6 +452,8 @@ //compositor.check_span_renderer = check_span_renderer; compositor.renderer_init = span_renderer_init; compositor.renderer_fini = span_renderer_fini; + + _cairo_atomic_init_once_leave(&once); } return &compositor.base; diff -Nru cairo-1.14.6/src/test-paginated-surface.c cairo-1.15.10/src/test-paginated-surface.c --- cairo-1.14.6/src/test-paginated-surface.c 2015-10-27 21:04:30.000000000 +0000 +++ cairo-1.15.10/src/test-paginated-surface.c 2017-12-07 02:14:36.000000000 +0000 @@ -81,7 +81,8 @@ _cairo_surface_init (&surface->base, &test_paginated_surface_backend, NULL, /* device */ - target->content); + target->content, + TRUE); /* is_vector */ surface->target = cairo_surface_reference (target); @@ -231,13 +232,15 @@ } -static void +static cairo_int_status_t _test_paginated_surface_set_paginated_mode (void *abstract_surface, cairo_paginated_mode_t mode) { test_paginated_surface_t *surface = abstract_surface; surface->paginated_mode = mode; + + return CAIRO_STATUS_SUCCESS; } static const cairo_surface_backend_t test_paginated_surface_backend = { diff -Nru cairo-1.14.6/src/win32/cairo-win32-device.c cairo-1.15.10/src/win32/cairo-win32-device.c --- cairo-1.14.6/src/win32/cairo-win32-device.c 2015-10-27 21:04:21.000000000 +0000 +++ cairo-1.15.10/src/win32/cairo-win32-device.c 2017-12-07 02:14:36.000000000 +0000 @@ -131,6 +131,8 @@ { cairo_win32_device_t *device; + CAIRO_MUTEX_INITIALIZE (); + if (__cairo_win32_device) return cairo_device_reference (__cairo_win32_device); diff -Nru cairo-1.14.6/src/win32/cairo-win32-display-surface.c cairo-1.15.10/src/win32/cairo-win32-display-surface.c --- cairo-1.14.6/src/win32/cairo-win32-display-surface.c 2015-10-29 00:37:41.000000000 +0000 +++ cairo-1.15.10/src/win32/cairo-win32-display-surface.c 2017-12-07 22:13:32.000000000 +0000 @@ -334,7 +334,8 @@ _cairo_surface_init (&surface->win32.base, &cairo_win32_display_surface_backend, device, - _cairo_content_from_format (format)); + _cairo_content_from_format (format), + FALSE); /* is_vector */ cairo_device_destroy (device); @@ -917,31 +918,41 @@ */ /** - * cairo_win32_surface_create: + * cairo_win32_surface_create_with_format: * @hdc: the DC to create a surface for + * @format: format of pixels in the surface to create * * 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(). + * size of the cairo surface. * - * Return value: the newly created surface + * Supported formats are: + * %CAIRO_FORMAT_ARGB32 + * %CAIRO_FORMAT_RGB24 * - * Since: 1.0 + * Note: @format only tells cairo how to draw on the surface, not what + * the format of the surface is. Namely, cairo does not (and cannot) + * check that @hdc actually supports alpha-transparency. + * + * Return value: the newly created surface, NULL on failure + * + * Since: 1.14 **/ cairo_surface_t * -cairo_win32_surface_create (HDC hdc) +cairo_win32_surface_create_with_format (HDC hdc, cairo_format_t format) { cairo_win32_display_surface_t *surface; - cairo_format_t format; cairo_status_t status; cairo_device_t *device; - /* Assume that everything coming in as a HDC is RGB24 */ - format = CAIRO_FORMAT_RGB24; + switch (format) { + default: + return _cairo_surface_create_in_error (_cairo_error (CAIRO_STATUS_INVALID_FORMAT)); + case CAIRO_FORMAT_ARGB32: + case CAIRO_FORMAT_RGB24: + break; + } surface = malloc (sizeof (*surface)); if (surface == NULL) @@ -969,7 +980,8 @@ _cairo_surface_init (&surface->win32.base, &cairo_win32_display_surface_backend, device, - _cairo_content_from_format (format)); + _cairo_content_from_format (format), + FALSE); /* is_vector */ cairo_device_destroy (device); @@ -977,6 +989,28 @@ } /** + * cairo_win32_surface_create: + * @hdc: the DC to create a surface for + * + * 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_format() or + * cairo_win32_surface_create_with_dib(). + * + * Return value: the newly created surface, NULL on failure + * + * Since: 1.0 + **/ +cairo_surface_t * +cairo_win32_surface_create (HDC hdc) +{ + return cairo_win32_surface_create_with_format (hdc, CAIRO_FORMAT_RGB24); +} + +/** * cairo_win32_surface_create_with_dib: * @format: format of pixels in the surface to create * @width: width of the surface, in pixels @@ -1027,12 +1061,16 @@ HDC screen_dc, ddb_dc; HBITMAP saved_dc_bitmap; - if (format != CAIRO_FORMAT_RGB24) + switch (format) { + default: +/* XXX handle these eventually */ + case CAIRO_FORMAT_A8: + case CAIRO_FORMAT_A1: return _cairo_surface_create_in_error (_cairo_error (CAIRO_STATUS_INVALID_FORMAT)); -/* XXX handle these eventually - format != CAIRO_FORMAT_A8 || - format != CAIRO_FORMAT_A1) -*/ + case CAIRO_FORMAT_ARGB32: + case CAIRO_FORMAT_RGB24: + break; + } if (!hdc) { screen_dc = GetDC (NULL); diff -Nru cairo-1.14.6/src/win32/cairo-win32-font.c cairo-1.15.10/src/win32/cairo-win32-font.c --- cairo-1.14.6/src/win32/cairo-win32-font.c 2015-10-27 21:04:21.000000000 +0000 +++ cairo-1.15.10/src/win32/cairo-win32-font.c 2017-12-07 02:14:36.000000000 +0000 @@ -889,7 +889,7 @@ cairo_status_t status; cairo_font_extents_t extents; - TEXTMETRIC metrics; + TEXTMETRIC metrics = {0}; HDC hdc; hdc = _get_global_font_dc (); @@ -902,8 +902,14 @@ status = cairo_win32_scaled_font_select_font (&scaled_font->base, hdc); if (status) return status; - GetTextMetrics (hdc, &metrics); + + if (!GetTextMetrics (hdc, &metrics)) { + status = _cairo_win32_print_gdi_error ("_cairo_win32_scaled_font_set_metrics:GetTextMetrics"); + } + cairo_win32_scaled_font_done_font (&scaled_font->base); + if (status) + return status; extents.ascent = metrics.tmAscent / scaled_font->logical_scale; extents.descent = metrics.tmDescent / scaled_font->logical_scale; @@ -1444,8 +1450,9 @@ return status; } -static cairo_bool_t -_cairo_win32_scaled_font_is_synthetic (void *abstract_font) +static cairo_int_status_t +_cairo_win32_scaled_font_is_synthetic (void *abstract_font, + cairo_bool_t *is_synthetic) { cairo_win32_scaled_font_t *scaled_font = abstract_font; cairo_status_t status; @@ -1453,6 +1460,7 @@ cairo_bool_t bold; cairo_bool_t italic; + *is_synthetic = FALSE; status = _cairo_truetype_get_style (&scaled_font->base, &weight, &bold, @@ -1460,13 +1468,13 @@ /* If this doesn't work assume it is not synthetic to avoid * unnecessary subsetting fallbacks. */ if (status != CAIRO_STATUS_SUCCESS) - return FALSE; + return CAIRO_STATUS_SUCCESS; if (scaled_font->logfont.lfWeight != weight || scaled_font->logfont.lfItalic != italic) - return TRUE; + *is_synthetic = TRUE; - return FALSE; + return CAIRO_STATUS_SUCCESS; } static cairo_int_status_t diff -Nru cairo-1.14.6/src/win32/cairo-win32-gdi-compositor.c cairo-1.15.10/src/win32/cairo-win32-gdi-compositor.c --- cairo-1.14.6/src/win32/cairo-win32-gdi-compositor.c 2015-10-27 21:04:21.000000000 +0000 +++ cairo-1.15.10/src/win32/cairo-win32-gdi-compositor.c 2017-12-07 02:14:36.000000000 +0000 @@ -634,9 +634,10 @@ const cairo_compositor_t * _cairo_win32_gdi_compositor_get (void) { + static cairo_atomic_once_t once = CAIRO_ATOMIC_ONCE_INIT; static cairo_compositor_t compositor; - if (compositor.delegate == NULL) { + if (_cairo_atomic_init_once_enter(&once)) { compositor.delegate = &_cairo_fallback_compositor; compositor.paint = _cairo_win32_gdi_compositor_paint; @@ -644,6 +645,8 @@ compositor.fill = _cairo_win32_gdi_compositor_fill; compositor.stroke = _cairo_win32_gdi_compositor_stroke; compositor.glyphs = _cairo_win32_gdi_compositor_glyphs; + + _cairo_atomic_init_once_leave(&once); } return &compositor; diff -Nru cairo-1.14.6/src/win32/cairo-win32-printing-surface.c cairo-1.15.10/src/win32/cairo-win32-printing-surface.c --- cairo-1.14.6/src/win32/cairo-win32-printing-surface.c 2015-10-29 00:22:01.000000000 +0000 +++ cairo-1.15.10/src/win32/cairo-win32-printing-surface.c 2017-12-07 02:14:36.000000000 +0000 @@ -51,13 +51,17 @@ #include "cairo-paginated-private.h" #include "cairo-clip-private.h" +#include "cairo-composite-rectangles-private.h" #include "cairo-win32-private.h" #include "cairo-recording-surface-inline.h" #include "cairo-scaled-font-subsets-private.h" #include "cairo-image-info-private.h" +#include "cairo-image-surface-inline.h" #include "cairo-image-surface-private.h" #include "cairo-surface-backend-private.h" #include "cairo-surface-clipper-private.h" +#include "cairo-surface-snapshot-inline.h" +#include "cairo-surface-subsurface-private.h" #include @@ -170,20 +174,145 @@ } } +/** + * _cairo_win32_printing_surface_acquire_image_pattern: + * @surface: the win32 printing surface + * @pattern: A #cairo_pattern_t of type SURFACE or RASTER_SOURCE to use as the source + * @extents: extents of the operation that is using this source + * @image_pattern: returns pattern containing acquired image. The matrix (adjusted for + * the device offset of raster source) is copied from the pattern. + * @width: returns width of the pattern + * @height: returns height of pattern + * @image_extra: returns image extra for image type surface + * + * Acquire source surface or raster source pattern. + **/ +static cairo_status_t +_cairo_win32_printing_surface_acquire_image_pattern ( + cairo_win32_printing_surface_t *surface, + const cairo_pattern_t *pattern, + const cairo_rectangle_int_t *extents, + cairo_surface_pattern_t *image_pattern, + int *width, + int *height, + void **image_extra) +{ + cairo_status_t status; + cairo_image_surface_t *image; + cairo_matrix_t tm; + double x = 0; + double y = 0; + + switch (pattern->type) { + case CAIRO_PATTERN_TYPE_SURFACE: { + cairo_surface_t *surf = ((cairo_surface_pattern_t *) pattern)->surface; + + status = _cairo_surface_acquire_source_image (surf, &image, image_extra); + if (unlikely (status)) + return status; + + *width = image->width; + *height = image->height; + } break; + + case CAIRO_PATTERN_TYPE_RASTER_SOURCE: { + cairo_surface_t *surf; + cairo_box_t box; + cairo_rectangle_int_t rect; + cairo_raster_source_pattern_t *raster; + + /* get the operation extents in pattern space */ + _cairo_box_from_rectangle (&box, extents); + _cairo_matrix_transform_bounding_box_fixed (&pattern->matrix, &box, NULL); + _cairo_box_round_to_rectangle (&box, &rect); + surf = _cairo_raster_source_pattern_acquire (pattern, &surface->win32.base, &rect); + if (!surf) + return CAIRO_INT_STATUS_UNSUPPORTED; + + assert (_cairo_surface_is_image (surf)); + image = (cairo_image_surface_t *) surf; + cairo_surface_get_device_offset (surf, &x, &y); + + raster = (cairo_raster_source_pattern_t *) pattern; + *width = raster->extents.width; + *height = raster->extents.height; + } break; + + case CAIRO_PATTERN_TYPE_SOLID: + case CAIRO_PATTERN_TYPE_LINEAR: + case CAIRO_PATTERN_TYPE_RADIAL: + case CAIRO_PATTERN_TYPE_MESH: + default: + ASSERT_NOT_REACHED; + break; + } + + _cairo_pattern_init_for_surface (image_pattern, &image->base); + image_pattern->base.extend = pattern->extend; + cairo_matrix_init_translate (&tm, x, y); + status = cairo_matrix_invert (&tm); + /* translation matrices are invertibile */ + assert (status == CAIRO_STATUS_SUCCESS); + + image_pattern->base.matrix = pattern->matrix; + cairo_matrix_multiply (&image_pattern->base.matrix, &image_pattern->base.matrix, &tm); + + return CAIRO_STATUS_SUCCESS; +} + +static void +_cairo_win32_printing_surface_release_image_pattern (cairo_win32_printing_surface_t *surface, + const cairo_pattern_t *pattern, + cairo_surface_pattern_t *image_pattern, + void *image_extra) +{ + cairo_surface_t *surf = image_pattern->surface; + + _cairo_pattern_fini (&image_pattern->base); + switch (pattern->type) { + case CAIRO_PATTERN_TYPE_SURFACE: { + cairo_surface_pattern_t *surf_pat = (cairo_surface_pattern_t *) pattern; + cairo_image_surface_t *image = (cairo_image_surface_t *) surf; + _cairo_surface_release_source_image (surf_pat->surface, image, image_extra); + } break; + + case CAIRO_PATTERN_TYPE_RASTER_SOURCE: + _cairo_raster_source_pattern_release (pattern, surf); + break; + + case CAIRO_PATTERN_TYPE_SOLID: + case CAIRO_PATTERN_TYPE_LINEAR: + case CAIRO_PATTERN_TYPE_RADIAL: + case CAIRO_PATTERN_TYPE_MESH: + default: + ASSERT_NOT_REACHED; + break; + } +} + static cairo_int_status_t -analyze_surface_pattern_transparency (cairo_surface_pattern_t *pattern) +analyze_surface_pattern_transparency (cairo_win32_printing_surface_t *surface, + const cairo_pattern_t *pattern, + const cairo_rectangle_int_t *extents) { + cairo_surface_pattern_t image_pattern; cairo_image_surface_t *image; void *image_extra; cairo_int_status_t status; cairo_image_transparency_t transparency; + int pattern_width, pattern_height; - status = _cairo_surface_acquire_source_image (pattern->surface, - &image, - &image_extra); + status = _cairo_win32_printing_surface_acquire_image_pattern (surface, + pattern, + extents, + &image_pattern, + &pattern_width, + &pattern_height, + &image_extra); if (status) return status; + image = (cairo_image_surface_t *)(image_pattern.surface); transparency = _cairo_image_analyze_transparency (image); switch (transparency) { case CAIRO_IMAGE_UNKNOWN: @@ -198,7 +327,7 @@ break; } - _cairo_surface_release_source_image (pattern->surface, image, image_extra); + _cairo_win32_printing_surface_release_image_pattern (surface, pattern, &image_pattern, image_extra); return status; } @@ -209,8 +338,7 @@ if (_cairo_surface_is_recording (pattern->surface)) return TRUE; - if (cairo_surface_get_type (pattern->surface) != CAIRO_SURFACE_TYPE_WIN32 && - pattern->surface->backend->acquire_source_image == NULL) + if (pattern->surface->backend->acquire_source_image == NULL) { return FALSE; } @@ -221,22 +349,34 @@ static cairo_bool_t pattern_supported (cairo_win32_printing_surface_t *surface, const cairo_pattern_t *pattern) { - if (pattern->type == CAIRO_PATTERN_TYPE_SOLID) + switch (pattern->type) { + case CAIRO_PATTERN_TYPE_SOLID: return TRUE; - if (pattern->type == CAIRO_PATTERN_TYPE_SURFACE) - return surface_pattern_supported ((const cairo_surface_pattern_t *) pattern); - - if (pattern->type == CAIRO_PATTERN_TYPE_LINEAR) + case CAIRO_PATTERN_TYPE_LINEAR: return surface->win32.flags & CAIRO_WIN32_SURFACE_CAN_RECT_GRADIENT; - return FALSE; + case CAIRO_PATTERN_TYPE_RADIAL: + case CAIRO_PATTERN_TYPE_MESH: + return FALSE; + + case CAIRO_PATTERN_TYPE_SURFACE: + return surface_pattern_supported ((cairo_surface_pattern_t *) pattern); + + case CAIRO_PATTERN_TYPE_RASTER_SOURCE: + return TRUE; + + default: + ASSERT_NOT_REACHED; + return FALSE; + } } static cairo_int_status_t _cairo_win32_printing_surface_analyze_operation (cairo_win32_printing_surface_t *surface, - cairo_operator_t op, - const cairo_pattern_t *pattern) + cairo_operator_t op, + const cairo_pattern_t *pattern, + const cairo_rectangle_int_t *extents) { if (! pattern_supported (surface, pattern)) return CAIRO_INT_STATUS_UNSUPPORTED; @@ -249,7 +389,7 @@ if (pattern->type == CAIRO_PATTERN_TYPE_SURFACE) { cairo_surface_pattern_t *surface_pattern = (cairo_surface_pattern_t *) pattern; - if ( _cairo_surface_is_recording (surface_pattern->surface)) + if (surface_pattern->surface->type == CAIRO_SURFACE_TYPE_RECORDING) return CAIRO_INT_STATUS_ANALYZE_RECORDING_SURFACE_PATTERN; } @@ -267,11 +407,8 @@ * background to convert the pattern to opaque. */ - if (pattern->type == CAIRO_PATTERN_TYPE_SURFACE) { - cairo_surface_pattern_t *surface_pattern = (cairo_surface_pattern_t *) pattern; - - return analyze_surface_pattern_transparency (surface_pattern); - } + if (pattern->type == CAIRO_PATTERN_TYPE_SURFACE || pattern->type == CAIRO_PATTERN_TYPE_RASTER_SOURCE) + return analyze_surface_pattern_transparency (surface, pattern, extents); if (_cairo_pattern_is_opaque (pattern, NULL)) return CAIRO_STATUS_SUCCESS; @@ -281,10 +418,11 @@ static cairo_bool_t _cairo_win32_printing_surface_operation_supported (cairo_win32_printing_surface_t *surface, - cairo_operator_t op, - const cairo_pattern_t *pattern) + cairo_operator_t op, + const cairo_pattern_t *pattern, + const cairo_rectangle_int_t *extents) { - if (_cairo_win32_printing_surface_analyze_operation (surface, op, pattern) != CAIRO_INT_STATUS_UNSUPPORTED) + if (_cairo_win32_printing_surface_analyze_operation (surface, op, pattern, extents) != CAIRO_INT_STATUS_UNSUPPORTED) return TRUE; else return FALSE; @@ -402,7 +540,7 @@ cairo_matrix_t old_ctm; cairo_bool_t old_has_ctm; cairo_rectangle_int_t recording_extents; - cairo_status_t status; + cairo_int_status_t status; cairo_extend_t extend; cairo_matrix_t p2d; XFORM xform; @@ -410,13 +548,15 @@ RECT clip; cairo_recording_surface_t *recording_surface = (cairo_recording_surface_t *) pattern->surface; cairo_box_t bbox; + cairo_surface_t *free_me = NULL; + cairo_bool_t is_subsurface; extend = cairo_pattern_get_extend (&pattern->base); p2d = pattern->base.matrix; status = cairo_matrix_invert (&p2d); /* _cairo_pattern_set_matrix guarantees invertibility */ - assert (status == CAIRO_STATUS_SUCCESS); + assert (status == CAIRO_INT_STATUS_SUCCESS); old_ctm = surface->ctm; old_has_ctm = surface->has_ctm; @@ -425,15 +565,28 @@ SaveDC (surface->win32.dc); _cairo_matrix_to_win32_xform (&p2d, &xform); - status = _cairo_recording_surface_get_bbox (recording_surface, &bbox, NULL); - if (status) - return status; + if (_cairo_surface_is_snapshot (&recording_surface->base)) { + free_me = _cairo_surface_snapshot_get_target (&recording_surface->base); + recording_surface = (cairo_recording_surface_t *) free_me; + } - _cairo_box_round_to_rectangle (&bbox, &recording_extents); + if (recording_surface->base.backend->type == CAIRO_SURFACE_TYPE_SUBSURFACE) { + cairo_surface_subsurface_t *sub = (cairo_surface_subsurface_t *) recording_surface; + + recording_surface = (cairo_recording_surface_t *) (sub->target); + recording_extents = sub->extents; + is_subsurface = TRUE; + } else { + status = _cairo_recording_surface_get_bbox (recording_surface, &bbox, NULL); + if (status) + goto err; + + _cairo_box_round_to_rectangle (&bbox, &recording_extents); + } status = _cairo_win32_printing_surface_get_ctm_clip_box (surface, &clip); if (status) - return status; + goto err; if (extend == CAIRO_EXTEND_REPEAT || extend == CAIRO_EXTEND_REFLECT) { left = floor (clip.left / _cairo_fixed_to_double (bbox.p2.x - bbox.p1.x)); @@ -453,7 +606,7 @@ status = _cairo_win32_printing_surface_paint_solid_pattern (surface, &_cairo_pattern_black.base); if (status) - return status; + goto err; } for (y_tile = top; y_tile < bottom; y_tile++) { @@ -507,7 +660,8 @@ SelectClipPath (surface->win32.dc, RGN_AND); SaveDC (surface->win32.dc); /* Allow clip path to be reset during replay */ - status = _cairo_recording_surface_replay_region (&recording_surface->base, NULL, + status = _cairo_recording_surface_replay_region (&recording_surface->base, + is_subsurface ? &recording_extents : NULL, &surface->win32.base, CAIRO_RECORDING_REGION_NATIVE); assert (status != CAIRO_INT_STATUS_UNSUPPORTED); @@ -515,7 +669,7 @@ RestoreDC (surface->win32.dc, -2); if (status) - return status; + goto err; } } @@ -524,6 +678,8 @@ surface->has_ctm = old_has_ctm; RestoreDC (surface->win32.dc, -1); + err: + cairo_surface_destroy (free_me); return status; } @@ -605,11 +761,12 @@ } static cairo_status_t -_cairo_win32_printing_surface_paint_image_pattern (cairo_win32_printing_surface_t *surface, - cairo_surface_pattern_t *pattern) +_cairo_win32_printing_surface_paint_image_pattern (cairo_win32_printing_surface_t *surface, + const cairo_pattern_t *pattern, + const cairo_rectangle_int_t *extents) { - cairo_status_t status; - cairo_extend_t extend; + cairo_int_status_t status; + cairo_surface_pattern_t image_pattern; cairo_image_surface_t *image; void *image_extra; cairo_image_surface_t *opaque_image = NULL; @@ -618,6 +775,7 @@ int oldmode; XFORM xform; int x_tile, y_tile, left, right, top, bottom; + int pattern_width, pattern_height; RECT clip; const cairo_color_t *background_color; const unsigned char *mime_data; @@ -637,13 +795,17 @@ else background_color = CAIRO_COLOR_BLACK; - extend = cairo_pattern_get_extend (&pattern->base); - - status = _cairo_surface_acquire_source_image (pattern->surface, - &image, &image_extra); + status = _cairo_win32_printing_surface_acquire_image_pattern (surface, + pattern, + extents, + &image_pattern, + &pattern_width, + &pattern_height, + &image_extra); if (status) return status; + image = (cairo_image_surface_t *)(image_pattern.surface); if (image->base.status) { status = image->base.status; goto CLEANUP_IMAGE; @@ -656,22 +818,22 @@ mime_type = BI_JPEG; status = _cairo_win32_printing_surface_check_jpeg (surface, - pattern->surface, + image_pattern.surface, &mime_data, &mime_size, &mime_info); if (status == CAIRO_INT_STATUS_UNSUPPORTED) { mime_type = BI_PNG; status = _cairo_win32_printing_surface_check_png (surface, - pattern->surface, + image_pattern.surface, &mime_data, &mime_size, &mime_info); } - if (_cairo_status_is_error (status)) + if (_cairo_int_status_is_error (status)) return status; - use_mime = (status == CAIRO_STATUS_SUCCESS); + use_mime = (status == CAIRO_INT_STATUS_SUCCESS); if (!use_mime && image->format != CAIRO_FORMAT_RGB24) { cairo_surface_t *opaque_surface; @@ -721,10 +883,10 @@ bi.bmiHeader.biClrUsed = 0; bi.bmiHeader.biClrImportant = 0; - m = pattern->base.matrix; + m = image_pattern.base.matrix; status = cairo_matrix_invert (&m); /* _cairo_pattern_set_matrix guarantees invertibility */ - assert (status == CAIRO_STATUS_SUCCESS); + assert (status == CAIRO_INT_STATUS_SUCCESS); cairo_matrix_multiply (&m, &m, &surface->ctm); cairo_matrix_multiply (&m, &m, &surface->gdi_ctm); @@ -739,7 +901,7 @@ oldmode = SetStretchBltMode(surface->win32.dc, HALFTONE); GetClipBox (surface->win32.dc, &clip); - if (extend == CAIRO_EXTEND_REPEAT || extend == CAIRO_EXTEND_REFLECT) { + if (pattern->extend == CAIRO_EXTEND_REPEAT || pattern->extend == CAIRO_EXTEND_REFLECT) { left = floor ( clip.left / (double) opaque_image->width); right = ceil (clip.right / (double) opaque_image->width); top = floor (clip.top / (double) opaque_image->height); @@ -779,24 +941,11 @@ if (opaque_image != image) cairo_surface_destroy (&opaque_image->base); CLEANUP_IMAGE: - _cairo_surface_release_source_image (pattern->surface, image, image_extra); + _cairo_win32_printing_surface_release_image_pattern (surface, pattern, &image_pattern, image_extra); return status; } -static cairo_status_t -_cairo_win32_printing_surface_paint_surface_pattern (cairo_win32_printing_surface_t *surface, - cairo_surface_pattern_t *pattern) -{ - if (_cairo_surface_is_recording (pattern->surface)) { - return _cairo_win32_printing_surface_paint_recording_pattern (surface, - pattern); - } else { - return _cairo_win32_printing_surface_paint_image_pattern (surface, - pattern); - } -} - static void vertex_set_color (TRIVERTEX *vert, cairo_color_stop_t *color) { @@ -955,7 +1104,8 @@ static cairo_int_status_t _cairo_win32_printing_surface_paint_pattern (cairo_win32_printing_surface_t *surface, - const cairo_pattern_t *pattern) + const cairo_pattern_t *pattern, + const cairo_rectangle_int_t *extents) { cairo_status_t status; @@ -966,9 +1116,20 @@ return status; break; - case CAIRO_PATTERN_TYPE_SURFACE: - status = _cairo_win32_printing_surface_paint_surface_pattern (surface, - (cairo_surface_pattern_t *) pattern); + case CAIRO_PATTERN_TYPE_SURFACE: { + cairo_surface_pattern_t *surface_pattern = (cairo_surface_pattern_t *) pattern; + + if ( _cairo_surface_is_recording (surface_pattern->surface)) + status = _cairo_win32_printing_surface_paint_recording_pattern (surface, surface_pattern); + else + status = _cairo_win32_printing_surface_paint_image_pattern (surface, pattern, extents); + + if (status) + return status; + break; + } + case CAIRO_PATTERN_TYPE_RASTER_SOURCE: + status = _cairo_win32_printing_surface_paint_image_pattern (surface, pattern, extents); if (status) return status; break; @@ -1116,6 +1277,11 @@ /* Undo both SaveDC's that we did in start_page */ RestoreDC (surface->win32.dc, -2); + /* Invalidate extents since the size of the next page is not known at + * this point. + */ + surface->extents_valid = FALSE; + return CAIRO_STATUS_SUCCESS; } @@ -1161,6 +1327,18 @@ return status; } +static cairo_bool_t +_cairo_win32_printing_surface_get_extents (void *abstract_surface, + cairo_rectangle_int_t *rectangle) +{ + cairo_win32_printing_surface_t *surface = abstract_surface; + + if (surface->extents_valid) + *rectangle = surface->win32.extents; + + return surface->extents_valid; +} + static void _cairo_win32_printing_surface_get_font_options (void *abstract_surface, cairo_font_options_t *options) @@ -1181,24 +1359,37 @@ { cairo_win32_printing_surface_t *surface = abstract_surface; cairo_solid_pattern_t clear; + cairo_composite_rectangles_t extents; cairo_status_t status; - status = _cairo_surface_clipper_set_clip (&surface->clipper, clip); - if (status) + status = _cairo_composite_rectangles_init_for_paint (&extents, + &surface->win32.base, + op, source, clip); + if (unlikely (status)) return status; + status = _cairo_surface_clipper_set_clip (&surface->clipper, clip); + if (unlikely (status)) + goto cleanup_composite; + if (op == CAIRO_OPERATOR_CLEAR) { _cairo_win32_printing_surface_init_clear_color (surface, &clear); source = (cairo_pattern_t*) &clear; op = CAIRO_OPERATOR_SOURCE; } - if (surface->paginated_mode == CAIRO_PAGINATED_MODE_ANALYZE) - return _cairo_win32_printing_surface_analyze_operation (surface, op, source); + if (surface->paginated_mode == CAIRO_PAGINATED_MODE_ANALYZE) { + status = _cairo_win32_printing_surface_analyze_operation (surface, op, source, &extents.bounded); + goto cleanup_composite; + } + + assert (_cairo_win32_printing_surface_operation_supported (surface, op, source, &extents.bounded)); - assert (_cairo_win32_printing_surface_operation_supported (surface, op, source)); + status = _cairo_win32_printing_surface_paint_pattern (surface, source, &extents.bounded); - return _cairo_win32_printing_surface_paint_pattern (surface, source); + cleanup_composite: + _cairo_composite_rectangles_fini (&extents); + return status; } static int @@ -1275,11 +1466,38 @@ cairo_solid_pattern_t clear; cairo_matrix_t mat; double scale; + cairo_composite_rectangles_t extents; - status = _cairo_surface_clipper_set_clip (&surface->clipper, clip); - if (status) + status = _cairo_composite_rectangles_init_for_stroke (&extents, + &surface->win32.base, + op, source, + path, style, stroke_ctm, + clip); + if (unlikely (status)) return status; + /* use the more accurate extents */ + { + cairo_rectangle_int_t r; + cairo_box_t b; + + status = _cairo_path_fixed_stroke_extents (path, style, + stroke_ctm, stroke_ctm_inverse, + tolerance, + &r); + if (unlikely (status)) + goto cleanup_composite; + + _cairo_box_from_rectangle (&b, &r); + status = _cairo_composite_rectangles_intersect_mask_extents (&extents, &b); + if (unlikely (status)) + goto cleanup_composite; + } + + status = _cairo_surface_clipper_set_clip (&surface->clipper, clip); + if (unlikely (status)) + goto cleanup_composite; + if (op == CAIRO_OPERATOR_CLEAR) { _cairo_win32_printing_surface_init_clear_color (surface, &clear); source = (cairo_pattern_t*) &clear; @@ -1289,12 +1507,14 @@ if (surface->paginated_mode == CAIRO_PAGINATED_MODE_ANALYZE) { /* Win32 does not support a dash offset. */ if (style->num_dashes > 0 && style->dash_offset != 0.0) - return CAIRO_INT_STATUS_UNSUPPORTED; + status = CAIRO_INT_STATUS_UNSUPPORTED; + else + status = _cairo_win32_printing_surface_analyze_operation (surface, op, source, &extents.bounded); - return _cairo_win32_printing_surface_analyze_operation (surface, op, source); + goto cleanup_composite; } - assert (_cairo_win32_printing_surface_operation_supported (surface, op, source)); + assert (_cairo_win32_printing_surface_operation_supported (surface, op, source, &extents.bounded)); assert (!(style->num_dashes > 0 && style->dash_offset != 0.0)); cairo_matrix_multiply (&mat, stroke_ctm, &surface->ctm); @@ -1333,17 +1553,22 @@ &brush, style->num_dashes, dash_array); - if (pen == NULL) - return _cairo_win32_print_gdi_error ("_win32_surface_stroke:ExtCreatePen"); + if (pen == NULL) { + status = _cairo_win32_print_gdi_error ("_win32_surface_stroke:ExtCreatePen"); + goto cleanup_composite; + } + obj = SelectObject (surface->win32.dc, pen); - if (obj == NULL) - return _cairo_win32_print_gdi_error ("_win32_surface_stroke:SelectObject"); + if (obj == NULL) { + status = _cairo_win32_print_gdi_error ("_win32_surface_stroke:SelectObject"); + goto cleanup_composite; + } BeginPath (surface->win32.dc); status = _cairo_win32_printing_surface_emit_path (surface, path); EndPath (surface->win32.dc); - if (status) - return status; + if (unlikely (status)) + goto cleanup_composite; /* * Switch to user space to set line parameters @@ -1354,27 +1579,37 @@ xform.eDx = 0.0f; xform.eDy = 0.0f; - if (!ModifyWorldTransform (surface->win32.dc, &xform, MWT_LEFTMULTIPLY)) - return _cairo_win32_print_gdi_error ("_win32_surface_stroke:SetWorldTransform"); + if (!ModifyWorldTransform (surface->win32.dc, &xform, MWT_LEFTMULTIPLY)) { + status = _cairo_win32_print_gdi_error ("_win32_surface_stroke:SetWorldTransform"); + goto cleanup_composite; + } if (source->type == CAIRO_PATTERN_TYPE_SOLID) { StrokePath (surface->win32.dc); } else { - if (!WidenPath (surface->win32.dc)) - return _cairo_win32_print_gdi_error ("_win32_surface_stroke:WidenPath"); - if (!SelectClipPath (surface->win32.dc, RGN_AND)) - return _cairo_win32_print_gdi_error ("_win32_surface_stroke:SelectClipPath"); + if (!WidenPath (surface->win32.dc)) { + status = _cairo_win32_print_gdi_error ("_win32_surface_stroke:WidenPath"); + goto cleanup_composite; + } + if (!SelectClipPath (surface->win32.dc, RGN_AND)) { + status = _cairo_win32_print_gdi_error ("_win32_surface_stroke:SelectClipPath"); + goto cleanup_composite; + } /* Return to device space to paint the pattern */ _cairo_matrix_to_win32_xform (&surface->gdi_ctm, &xform); - if (!SetWorldTransform (surface->win32.dc, &xform)) - return _cairo_win32_print_gdi_error ("_win32_surface_stroke:ModifyWorldTransform"); - status = _cairo_win32_printing_surface_paint_pattern (surface, source); + if (!SetWorldTransform (surface->win32.dc, &xform)) { + status = _cairo_win32_print_gdi_error ("_win32_surface_stroke:ModifyWorldTransform"); + goto cleanup_composite; + } + status = _cairo_win32_printing_surface_paint_pattern (surface, source, &extents.bounded); } RestoreDC (surface->win32.dc, -1); DeleteObject (pen); free (dash_array); +cleanup_composite: + _cairo_composite_rectangles_fini (&extents); return status; } @@ -1391,21 +1626,47 @@ cairo_win32_printing_surface_t *surface = abstract_surface; cairo_int_status_t status; cairo_solid_pattern_t clear; + cairo_composite_rectangles_t extents; - status = _cairo_surface_clipper_set_clip (&surface->clipper, clip); - if (status) + status = _cairo_composite_rectangles_init_for_fill (&extents, + &surface->win32.base, + op, source, path, + clip); + if (unlikely (status)) return status; + /* use the more accurate extents */ + { + cairo_rectangle_int_t r; + cairo_box_t b; + + _cairo_path_fixed_fill_extents (path, + fill_rule, + tolerance, + &r); + + _cairo_box_from_rectangle (&b, &r); + status = _cairo_composite_rectangles_intersect_mask_extents (&extents, &b); + if (unlikely (status)) + goto cleanup_composite; + } + + status = _cairo_surface_clipper_set_clip (&surface->clipper, clip); + if (unlikely (status)) + goto cleanup_composite; + if (op == CAIRO_OPERATOR_CLEAR) { _cairo_win32_printing_surface_init_clear_color (surface, &clear); source = (cairo_pattern_t*) &clear; op = CAIRO_OPERATOR_SOURCE; } - if (surface->paginated_mode == CAIRO_PAGINATED_MODE_ANALYZE) - return _cairo_win32_printing_surface_analyze_operation (surface, op, source); + if (surface->paginated_mode == CAIRO_PAGINATED_MODE_ANALYZE) { + status = _cairo_win32_printing_surface_analyze_operation (surface, op, source, &extents.bounded); + goto cleanup_composite; + } - assert (_cairo_win32_printing_surface_operation_supported (surface, op, source)); + assert (_cairo_win32_printing_surface_operation_supported (surface, op, source, &extents.bounded)); surface->path_empty = TRUE; BeginPath (surface->win32.dc); @@ -1425,20 +1686,22 @@ if (source->type == CAIRO_PATTERN_TYPE_SOLID) { status = _cairo_win32_printing_surface_select_solid_brush (surface, source); - if (status) - return status; + if (unlikely (status)) + goto cleanup_composite; FillPath (surface->win32.dc); _cairo_win32_printing_surface_done_solid_brush (surface); } else if (surface->path_empty == FALSE) { SaveDC (surface->win32.dc); SelectClipPath (surface->win32.dc, RGN_AND); - status = _cairo_win32_printing_surface_paint_pattern (surface, source); + status = _cairo_win32_printing_surface_paint_pattern (surface, source, &extents.bounded); RestoreDC (surface->win32.dc, -1); } fflush(stderr); +cleanup_composite: + _cairo_composite_rectangles_fini (&extents); return status; } @@ -1543,11 +1806,23 @@ cairo_matrix_t old_ctm; cairo_bool_t old_has_ctm; cairo_solid_pattern_t clear; + cairo_composite_rectangles_t extents; + cairo_bool_t overlap; - status = _cairo_surface_clipper_set_clip (&surface->clipper, clip); - if (status) + status = _cairo_composite_rectangles_init_for_glyphs (&extents, + &surface->win32.base, + op, source, + scaled_font, + glyphs, num_glyphs, + clip, + &overlap); + if (unlikely (status)) return status; + status = _cairo_surface_clipper_set_clip (&surface->clipper, clip); + if (unlikely (status)) + goto cleanup_composite; + if (op == CAIRO_OPERATOR_CLEAR) { _cairo_win32_printing_surface_init_clear_color (surface, &clear); source = (cairo_pattern_t*) &clear; @@ -1566,10 +1841,13 @@ */ #if CAIRO_HAS_WIN32_FONT if (cairo_scaled_font_get_type (scaled_font) == CAIRO_FONT_TYPE_WIN32) { - if (_cairo_win32_scaled_font_is_bitmap (scaled_font)) - return CAIRO_INT_STATUS_UNSUPPORTED; - else - return _cairo_win32_printing_surface_analyze_operation (surface, op, source); + if (_cairo_win32_scaled_font_is_bitmap (scaled_font)) { + status = CAIRO_INT_STATUS_UNSUPPORTED; + goto cleanup_composite; + } else { + status = _cairo_win32_printing_surface_analyze_operation (surface, op, source, &extents.bounded); + goto cleanup_composite; + } } #endif @@ -1589,10 +1867,11 @@ break; } _cairo_scaled_font_thaw_cache (scaled_font); - if (status) - return status; + if (unlikely (status)) + goto cleanup_composite; - return _cairo_win32_printing_surface_analyze_operation (surface, op, source); + status = _cairo_win32_printing_surface_analyze_operation (surface, op, source, &extents.bounded); + goto cleanup_composite; } if (source->type == CAIRO_PATTERN_TYPE_SOLID) { @@ -1604,8 +1883,10 @@ opaque = cairo_pattern_create_rgb (GetRValue (color) / 255.0, GetGValue (color) / 255.0, GetBValue (color) / 255.0); - if (opaque->status) - return opaque->status; + if (unlikely (opaque->status)) { + status = opaque->status; + goto cleanup_composite; + } source = opaque; } @@ -1613,13 +1894,14 @@ if (cairo_scaled_font_get_type (scaled_font) == CAIRO_FONT_TYPE_WIN32 && source->type == CAIRO_PATTERN_TYPE_SOLID) { - return _cairo_win32_printing_surface_emit_win32_glyphs (surface, - op, - source, - glyphs, - num_glyphs, - scaled_font, - clip); + status = _cairo_win32_printing_surface_emit_win32_glyphs (surface, + op, + source, + glyphs, + num_glyphs, + scaled_font, + clip); + goto cleanup_composite; } #endif @@ -1648,15 +1930,15 @@ if (status == CAIRO_STATUS_SUCCESS && surface->path_empty == FALSE) { if (source->type == CAIRO_PATTERN_TYPE_SOLID) { status = _cairo_win32_printing_surface_select_solid_brush (surface, source); - if (status) - return status; + if (unlikely (status)) + goto cleanup_composite; SetPolyFillMode (surface->win32.dc, WINDING); FillPath (surface->win32.dc); _cairo_win32_printing_surface_done_solid_brush (surface); } else { SelectClipPath (surface->win32.dc, RGN_AND); - status = _cairo_win32_printing_surface_paint_pattern (surface, source); + status = _cairo_win32_printing_surface_paint_pattern (surface, source, &extents.bounded); } } RestoreDC (surface->win32.dc, -1); @@ -1664,6 +1946,8 @@ if (opaque) cairo_pattern_destroy (opaque); +cleanup_composite: + _cairo_composite_rectangles_fini (&extents); return status; } @@ -1706,6 +1990,27 @@ double x_res, y_res; cairo_matrix_t inverse_ctm; cairo_status_t status; + RECT rect; + + /* Since the page size may be changed after _show_page() and before the + * next drawing command, the extents are set in _start_page() and invalidated + * in _show_page(). The paginated surface will obtain the extents immediately + * after calling _show_page() and before any drawing commands. At this point + * the next page will not have been setup on the DC so we return invalid + * extents and the paginated surface will create an unbounded recording surface. + * Prior to replay of the record surface, the paginated surface will call + * _start_page and we setup the correct extents. + * + * Note that we always set the extents x,y to 0 so prevent replay from translating + * the coordinates of objects. Windows will clip anything outside of the page clip + * area. + */ + GetClipBox(surface->win32.dc, &rect); + surface->win32.extents.x = 0; + surface->win32.extents.y = 0; + surface->win32.extents.width = rect.right; + surface->win32.extents.height = rect.bottom; + surface->extents_valid = TRUE; SaveDC (surface->win32.dc); /* Save application context first, before doing MWT */ @@ -1785,13 +2090,15 @@ return CAIRO_STATUS_SUCCESS; } -static void +static cairo_int_status_t _cairo_win32_printing_surface_set_paginated_mode (void *abstract_surface, cairo_paginated_mode_t paginated_mode) { cairo_win32_printing_surface_t *surface = abstract_surface; surface->paginated_mode = paginated_mode; + + return CAIRO_STATUS_SUCCESS; } static cairo_bool_t @@ -1823,7 +2130,6 @@ { cairo_win32_printing_surface_t *surface; cairo_surface_t *paginated; - RECT rect; surface = malloc (sizeof (cairo_win32_printing_surface_t)); if (surface == NULL) @@ -1843,6 +2149,7 @@ surface->content = CAIRO_CONTENT_COLOR_ALPHA; surface->win32.dc = hdc; + surface->extents_valid = FALSE; surface->brush = NULL; surface->old_brush = NULL; @@ -1852,12 +2159,6 @@ return _cairo_surface_create_in_error (_cairo_error (CAIRO_STATUS_NO_MEMORY)); } - GetClipBox(hdc, &rect); - surface->win32.extents.x = rect.left; - surface->win32.extents.y = rect.top; - surface->win32.extents.width = rect.right - rect.left; - surface->win32.extents.height = rect.bottom - rect.top; - surface->win32.flags = _cairo_win32_flags_for_dc (surface->win32.dc); surface->win32.flags |= CAIRO_WIN32_SURFACE_FOR_PRINTING; @@ -1867,7 +2168,8 @@ _cairo_surface_init (&surface->win32.base, &cairo_win32_printing_surface_backend, NULL, /* device */ - CAIRO_CONTENT_COLOR_ALPHA); + CAIRO_CONTENT_COLOR_ALPHA, + TRUE); /* is_vector */ paginated = _cairo_paginated_surface_create (&surface->win32.base, CAIRO_CONTENT_COLOR_ALPHA, @@ -1898,7 +2200,7 @@ NULL, /* copy_page */ _cairo_win32_printing_surface_show_page, - _cairo_win32_surface_get_extents, + _cairo_win32_printing_surface_get_extents, _cairo_win32_printing_surface_get_font_options, NULL, /* flush */ diff -Nru cairo-1.14.6/src/win32/cairo-win32-private.h cairo-1.15.10/src/win32/cairo-win32-private.h --- cairo-1.14.6/src/win32/cairo-win32-private.h 2015-10-29 00:22:01.000000000 +0000 +++ cairo-1.15.10/src/win32/cairo-win32-private.h 2017-12-07 02:14:36.000000000 +0000 @@ -139,6 +139,7 @@ cairo_matrix_t ctm; cairo_bool_t has_gdi_ctm; cairo_matrix_t gdi_ctm; + cairo_bool_t extents_valid; HBRUSH brush, old_brush; cairo_scaled_font_subsets_t *font_subsets; } cairo_win32_printing_surface_t; diff -Nru cairo-1.14.6/src/win32/cairo-win32-surface.c cairo-1.15.10/src/win32/cairo-win32-surface.c --- cairo-1.14.6/src/win32/cairo-win32-surface.c 2015-10-27 21:04:21.000000000 +0000 +++ cairo-1.15.10/src/win32/cairo-win32-surface.c 2017-12-07 02:14:36.000000000 +0000 @@ -122,11 +122,7 @@ fflush (stderr); - /* We should switch off of last_status, but we'd either return - * CAIRO_STATUS_NO_MEMORY or CAIRO_STATUS_UNKNOWN_ERROR and there - * is no CAIRO_STATUS_UNKNOWN_ERROR. - */ - return _cairo_error (CAIRO_STATUS_NO_MEMORY); + return _cairo_error (CAIRO_STATUS_WIN32_GDI_ERROR); } cairo_bool_t diff -Nru cairo-1.14.6/test/any2ppm.c cairo-1.15.10/test/any2ppm.c --- cairo-1.14.6/test/any2ppm.c 2015-10-27 21:05:38.000000000 +0000 +++ cairo-1.15.10/test/any2ppm.c 2017-12-07 02:14:36.000000000 +0000 @@ -244,6 +244,7 @@ return NULL; } +#if CAIRO_HAS_INTERPRETER static cairo_surface_t * _create_image (void *closure, cairo_content_t content, @@ -268,7 +269,6 @@ return cairo_surface_reference (*out); } -#if CAIRO_HAS_INTERPRETER static const char * _cairo_script_render_page (const char *filename, cairo_surface_t **surface_out) diff -Nru cairo-1.14.6/test/cairo-test.c cairo-1.15.10/test/cairo-test.c --- cairo-1.14.6/test/cairo-test.c 2015-10-27 21:04:30.000000000 +0000 +++ cairo-1.15.10/test/cairo-test.c 2017-12-07 02:14:36.000000000 +0000 @@ -915,6 +915,10 @@ cairo_paint (cr); cairo_restore (cr); + cairo_select_font_face (cr, CAIRO_TEST_FONT_FAMILY " Sans", + CAIRO_FONT_SLANT_NORMAL, + CAIRO_FONT_WEIGHT_NORMAL); + /* Set all components of font_options to avoid backend differences * and reduce number of needed reference images. */ font_options = cairo_font_options_create (); @@ -1664,6 +1668,7 @@ { cairo_surface_t *image; cairo_status_t status; + char *unique_id; image = cairo_image_surface_create_from_png (filename); status = cairo_surface_status (image); @@ -1679,6 +1684,10 @@ free (srcdir_filename); } } + unique_id = strdup(filename); + cairo_surface_set_mime_data (image, CAIRO_MIME_TYPE_UNIQUE_ID, + (unsigned char *)unique_id, strlen(unique_id), + free, unique_id); return image; } diff -Nru cairo-1.14.6/test/cairo-test-constructors.c cairo-1.15.10/test/cairo-test-constructors.c --- cairo-1.14.6/test/cairo-test-constructors.c 2015-12-09 20:42:02.000000000 +0000 +++ cairo-1.15.10/test/cairo-test-constructors.c 2017-12-11 21:03:31.000000000 +0000 @@ -412,7 +412,14 @@ extern void _register_record_extend_pad_similar (void); extern void _register_record_extend_repeat_similar (void); extern void _register_record_extend_reflect_similar (void); +extern void _register_record_neg_extents_unbounded (void); +extern void _register_record_neg_extents_bounded (void); extern void _register_record_mesh (void); +extern void _register_record_replay_extend_none (void); +extern void _register_record_replay_extend_repeat (void); +extern void _register_record_replay_extend_reflect (void); +extern void _register_record_replay_extend_pad (void); +extern void _register_recording_ink_extents (void); extern void _register_recording_surface_over (void); extern void _register_recording_surface_source (void); extern void _register_recording_surface_extend_none (void); @@ -470,6 +477,7 @@ extern void _register_smask_paint (void); extern void _register_smask_stroke (void); extern void _register_smask_text (void); +extern void _register_smp_glyph (void); extern void _register_solid_pattern_cache_stress (void); extern void _register_source_clip (void); extern void _register_source_clip_scale (void); @@ -509,7 +517,9 @@ extern void _register_text_pattern (void); extern void _register_text_rotate (void); extern void _register_text_transform (void); +extern void _register_text_unhinted_metrics (void); extern void _register_text_zero_len (void); +extern void _register_thin_lines (void); extern void _register_tighten_bounds (void); extern void _register_tiger (void); extern void _register_a1_tiger (void); @@ -556,6 +566,7 @@ extern void _register_pdf_features (void); extern void _register_pdf_mime_data (void); extern void _register_pdf_surface_source (void); +extern void _register_pdf_tagged_text (void); extern void _register_ps_eps (void); extern void _register_ps_features (void); extern void _register_ps_surface_source (void); @@ -567,6 +578,7 @@ extern void _register_xlib_surface_source (void); extern void _register_get_xrender_format (void); extern void _register_multi_page (void); +extern void _register_mime_unique_id (void); extern void _register_fallback_resolution (void); void @@ -980,7 +992,14 @@ _register_record_extend_pad_similar (); _register_record_extend_repeat_similar (); _register_record_extend_reflect_similar (); + _register_record_neg_extents_unbounded (); + _register_record_neg_extents_bounded (); _register_record_mesh (); + _register_record_replay_extend_none (); + _register_record_replay_extend_repeat (); + _register_record_replay_extend_reflect (); + _register_record_replay_extend_pad (); + _register_recording_ink_extents (); _register_recording_surface_over (); _register_recording_surface_source (); _register_recording_surface_extend_none (); @@ -1038,6 +1057,7 @@ _register_smask_paint (); _register_smask_stroke (); _register_smask_text (); + _register_smp_glyph (); _register_solid_pattern_cache_stress (); _register_source_clip (); _register_source_clip_scale (); @@ -1077,7 +1097,9 @@ _register_text_pattern (); _register_text_rotate (); _register_text_transform (); + _register_text_unhinted_metrics (); _register_text_zero_len (); + _register_thin_lines (); _register_tighten_bounds (); _register_tiger (); _register_a1_tiger (); @@ -1124,6 +1146,7 @@ _register_pdf_features (); _register_pdf_mime_data (); _register_pdf_surface_source (); + _register_pdf_tagged_text (); _register_ps_eps (); _register_ps_features (); _register_ps_surface_source (); @@ -1135,5 +1158,6 @@ _register_xlib_surface_source (); _register_get_xrender_format (); _register_multi_page (); + _register_mime_unique_id (); _register_fallback_resolution (); } diff -Nru cairo-1.14.6/test/clip-zero.c cairo-1.15.10/test/clip-zero.c --- cairo-1.14.6/test/clip-zero.c 2015-10-27 21:04:30.000000000 +0000 +++ cairo-1.15.10/test/clip-zero.c 2017-12-07 02:14:36.000000000 +0000 @@ -46,7 +46,7 @@ cairo_stroke_preserve (cr); cairo_paint (cr); - cairo_select_font_face (cr, "sans", CAIRO_FONT_SLANT_NORMAL, CAIRO_FONT_WEIGHT_NORMAL); + cairo_select_font_face (cr, CAIRO_TEST_FONT_FAMILY " Sans", CAIRO_FONT_SLANT_NORMAL, CAIRO_FONT_WEIGHT_NORMAL); cairo_show_text (cr, "ABC"); cairo_mask (cr, cairo_get_source (cr)); diff -Nru cairo-1.14.6/test/Makefile.am cairo-1.15.10/test/Makefile.am --- cairo-1.14.6/test/Makefile.am 2015-10-27 21:05:38.000000000 +0000 +++ cairo-1.15.10/test/Makefile.am 2017-12-07 02:14:36.000000000 +0000 @@ -323,6 +323,7 @@ ps-surface-source.out.ps \ pdf-features.pdf \ pdf-mime-data.out* \ + pdf-tagged-text.out* \ ps-features.ps \ svg-clip.svg \ svg-surface.svg \ diff -Nru cairo-1.14.6/test/Makefile.in cairo-1.15.10/test/Makefile.in --- cairo-1.14.6/test/Makefile.in 2015-12-09 20:41:44.000000000 +0000 +++ cairo-1.15.10/test/Makefile.in 2017-12-11 21:03:11.000000000 +0000 @@ -1,7 +1,7 @@ -# Makefile.in generated by automake 1.14.1 from Makefile.am. +# Makefile.in generated by automake 1.15 from Makefile.am. # @configure_input@ -# Copyright (C) 1994-2013 Free Software Foundation, Inc. +# Copyright (C) 1994-2014 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -16,7 +16,17 @@ VPATH = @srcdir@ -am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' +am__is_gnu_make = { \ + if test -z '$(MAKELEVEL)'; then \ + false; \ + elif test -n '$(MAKE_HOST)'; then \ + true; \ + elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ + true; \ + else \ + false; \ + fi; \ +} am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ @@ -79,10 +89,6 @@ POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ -DIST_COMMON = $(top_srcdir)/build/Makefile.am.common \ - $(top_srcdir)/test/Makefile.sources $(srcdir)/Makefile.in \ - $(srcdir)/Makefile.am $(top_srcdir)/build/depcomp \ - $(top_srcdir)/build/test-driver COPYING README EXTRA_PROGRAMS = $(am__EXEEXT_1) imagediff$(EXEEXT) \ png-flatten$(EXEEXT) $(TESTS) check_PROGRAMS = $(am__EXEEXT_2) $(am__EXEEXT_3) $(am__EXEEXT_4) \ @@ -138,6 +144,7 @@ $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) +DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = @@ -259,14 +266,15 @@ random-intersections-curves-eo.c \ random-intersections-curves-nz.c raster-source.c record.c \ record1414x.c record2x.c record90.c recordflip.c \ - record-extend.c record-mesh.c recording-surface-pattern.c \ - recording-surface-extend.c rectangle-rounding-error.c \ - rectilinear-fill.c rectilinear-grid.c \ - rectilinear-miter-limit.c rectilinear-dash.c \ - rectilinear-dash-scale.c rectilinear-stroke.c \ - reflected-stroke.c rel-path.c rgb24-ignore-alpha.c \ - rotate-image-surface-paint.c rotate-stroke-box.c \ - rotated-clip.c rounded-rectangle-fill.c \ + record-extend.c record-neg-extents.c record-mesh.c \ + record-replay-extend.c recording-ink-extents.c \ + recording-surface-pattern.c recording-surface-extend.c \ + rectangle-rounding-error.c rectilinear-fill.c \ + rectilinear-grid.c rectilinear-miter-limit.c \ + rectilinear-dash.c rectilinear-dash-scale.c \ + rectilinear-stroke.c reflected-stroke.c rel-path.c \ + rgb24-ignore-alpha.c rotate-image-surface-paint.c \ + rotate-stroke-box.c rotated-clip.c rounded-rectangle-fill.c \ rounded-rectangle-stroke.c sample.c \ scale-down-source-surface-paint.c scale-offset-image.c \ scale-offset-similar.c scale-source-surface-paint.c \ @@ -278,10 +286,10 @@ 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 \ - subsurface-image-repeat.c subsurface-repeat.c \ + smp-glyph.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 subsurface-image-repeat.c subsurface-repeat.c \ subsurface-reflect.c subsurface-pad.c \ subsurface-modify-child.c subsurface-modify-parent.c \ subsurface-outside-target.c subsurface-scale.c \ @@ -291,30 +299,31 @@ surface-pattern-scale-down-extend.c surface-pattern-scale-up.c \ text-antialias.c text-antialias-subpixel.c text-cache-crash.c \ text-glyph-range.c text-pattern.c text-rotate.c \ - text-transform.c text-zero-len.c tighten-bounds.c tiger.c \ - toy-font-face.c transforms.c translate-show-surface.c \ - trap-clip.c twin.c twin-antialias-gray.c \ - twin-antialias-mixed.c twin-antialias-none.c \ - twin-antialias-subpixel.c unaligned-box.c \ - unantialiased-shapes.c unbounded-operator.c unclosed-strokes.c \ - user-data.c user-font.c user-font-mask.c user-font-proxy.c \ - user-font-rescale.c world-map.c white-in-noop.c \ - xcb-huge-image-shm.c xcb-huge-subimage.c xcb-stress-cache.c \ - xcb-snapshot-assert.c xcomposite-projection.c \ - xlib-expose-event.c zero-alpha.c zero-mask.c \ - pthread-same-source.c pthread-show-text.c pthread-similar.c \ - bitmap-font.c ft-font-create-for-ft-face.c \ + text-transform.c text-unhinted-metrics.c text-zero-len.c \ + thin-lines.c tighten-bounds.c tiger.c toy-font-face.c \ + transforms.c translate-show-surface.c trap-clip.c twin.c \ + twin-antialias-gray.c twin-antialias-mixed.c \ + twin-antialias-none.c twin-antialias-subpixel.c \ + unaligned-box.c unantialiased-shapes.c unbounded-operator.c \ + unclosed-strokes.c user-data.c user-font.c user-font-mask.c \ + user-font-proxy.c user-font-rescale.c world-map.c \ + white-in-noop.c xcb-huge-image-shm.c xcb-huge-subimage.c \ + xcb-stress-cache.c xcb-snapshot-assert.c \ + xcomposite-projection.c xlib-expose-event.c zero-alpha.c \ + zero-mask.c pthread-same-source.c pthread-show-text.c \ + pthread-similar.c bitmap-font.c ft-font-create-for-ft-face.c \ ft-show-glyphs-positioning.c ft-show-glyphs-table.c \ ft-text-vertical-layout-type1.c \ ft-text-vertical-layout-type3.c ft-text-antialias-none.c \ 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 \ + pdf-surface-source.c pdf-tagged-text.c ps-eps.c ps-features.c \ ps-surface-source.c svg-surface.c svg-clip.c \ svg-surface-source.c xcb-surface-source.c xlib-surface.c \ xlib-surface-source.c get-xrender-format.c multi-page.c \ - fallback-resolution.c cairo-test-constructors.c + mime-unique-id.c fallback-resolution.c \ + cairo-test-constructors.c am__objects_1 = cairo_test_suite-buffer-diff.$(OBJEXT) \ cairo_test_suite-cairo-test.$(OBJEXT) \ cairo_test_suite-cairo-test-runner.$(OBJEXT) @@ -342,7 +351,8 @@ @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_test_suite-pdf-surface-source.$(OBJEXT) \ + cairo_test_suite-pdf-tagged-text.$(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) \ @@ -360,7 +370,8 @@ 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) +am__objects_25 = cairo_test_suite-multi-page.$(OBJEXT) \ + cairo_test_suite-mime-unique-id.$(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) @@ -640,7 +651,10 @@ cairo_test_suite-record90.$(OBJEXT) \ cairo_test_suite-recordflip.$(OBJEXT) \ cairo_test_suite-record-extend.$(OBJEXT) \ + cairo_test_suite-record-neg-extents.$(OBJEXT) \ cairo_test_suite-record-mesh.$(OBJEXT) \ + cairo_test_suite-record-replay-extend.$(OBJEXT) \ + cairo_test_suite-recording-ink-extents.$(OBJEXT) \ cairo_test_suite-recording-surface-pattern.$(OBJEXT) \ cairo_test_suite-recording-surface-extend.$(OBJEXT) \ cairo_test_suite-rectangle-rounding-error.$(OBJEXT) \ @@ -688,6 +702,7 @@ cairo_test_suite-smask-paint.$(OBJEXT) \ cairo_test_suite-smask-stroke.$(OBJEXT) \ cairo_test_suite-smask-text.$(OBJEXT) \ + cairo_test_suite-smp-glyph.$(OBJEXT) \ cairo_test_suite-solid-pattern-cache-stress.$(OBJEXT) \ cairo_test_suite-source-clip.$(OBJEXT) \ cairo_test_suite-source-clip-scale.$(OBJEXT) \ @@ -719,7 +734,9 @@ cairo_test_suite-text-pattern.$(OBJEXT) \ cairo_test_suite-text-rotate.$(OBJEXT) \ cairo_test_suite-text-transform.$(OBJEXT) \ + cairo_test_suite-text-unhinted-metrics.$(OBJEXT) \ cairo_test_suite-text-zero-len.$(OBJEXT) \ + cairo_test_suite-thin-lines.$(OBJEXT) \ cairo_test_suite-tighten-bounds.$(OBJEXT) \ cairo_test_suite-tiger.$(OBJEXT) \ cairo_test_suite-toy-font-face.$(OBJEXT) \ @@ -1087,6 +1104,10 @@ TEST_LOG_COMPILE = $(TEST_LOG_COMPILER) $(AM_TEST_LOG_FLAGS) \ $(TEST_LOG_FLAGS) DIST_SUBDIRS = $(SUBDIRS) +am__DIST_COMMON = $(srcdir)/Makefile.in \ + $(top_srcdir)/build/Makefile.am.common \ + $(top_srcdir)/build/depcomp $(top_srcdir)/build/test-driver \ + $(top_srcdir)/test/Makefile.sources COPYING README DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) am__relativize = \ dir0=`pwd`; \ @@ -1196,6 +1217,7 @@ LTLIBOBJS = @LTLIBOBJS@ LTP = @LTP@ LTP_GENHTML = @LTP_GENHTML@ +LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MKDIR_P = @MKDIR_P@ @@ -1272,6 +1294,8 @@ gl_LIBS = @gl_LIBS@ glesv2_CFLAGS = @glesv2_CFLAGS@ glesv2_LIBS = @glesv2_LIBS@ +glesv3_CFLAGS = @glesv3_CFLAGS@ +glesv3_LIBS = @glesv3_LIBS@ glib_CFLAGS = @glib_CFLAGS@ glib_LIBS = @glib_LIBS@ gtk_CFLAGS = @gtk_CFLAGS@ @@ -1309,6 +1333,7 @@ qt_LIBS = @qt_LIBS@ real_pthread_CFLAGS = @real_pthread_CFLAGS@ real_pthread_LIBS = @real_pthread_LIBS@ +runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ shm_LIBS = @shm_LIBS@ @@ -1336,8 +1361,8 @@ create-for-stream.ps create-for-stream.svg \ svg-surface-source.out.svg pdf-surface-source.out.pdf \ ps-surface-source.out.ps pdf-features.pdf pdf-mime-data.out* \ - ps-features.ps svg-clip.svg svg-surface.svg multi-page.pdf \ - multi-page.ps $(NULL) + pdf-tagged-text.out* ps-features.ps svg-clip.svg \ + svg-surface.svg multi-page.pdf multi-page.ps $(NULL) DISTCLEANFILES = $(BUILT_SOURCES) EXTRA_DIST = $(BUILT_SOURCES) $(noinst_SCRIPTS) COPYING \ make-cairo-test-constructors.sh run-cairo-test-suite.sh \ @@ -1440,14 +1465,15 @@ random-intersections-curves-eo.c \ random-intersections-curves-nz.c raster-source.c record.c \ record1414x.c record2x.c record90.c recordflip.c \ - record-extend.c record-mesh.c recording-surface-pattern.c \ - recording-surface-extend.c rectangle-rounding-error.c \ - rectilinear-fill.c rectilinear-grid.c \ - rectilinear-miter-limit.c rectilinear-dash.c \ - rectilinear-dash-scale.c rectilinear-stroke.c \ - reflected-stroke.c rel-path.c rgb24-ignore-alpha.c \ - rotate-image-surface-paint.c rotate-stroke-box.c \ - rotated-clip.c rounded-rectangle-fill.c \ + record-extend.c record-neg-extents.c record-mesh.c \ + record-replay-extend.c recording-ink-extents.c \ + recording-surface-pattern.c recording-surface-extend.c \ + rectangle-rounding-error.c rectilinear-fill.c \ + rectilinear-grid.c rectilinear-miter-limit.c \ + rectilinear-dash.c rectilinear-dash-scale.c \ + rectilinear-stroke.c reflected-stroke.c rel-path.c \ + rgb24-ignore-alpha.c rotate-image-surface-paint.c \ + rotate-stroke-box.c rotated-clip.c rounded-rectangle-fill.c \ rounded-rectangle-stroke.c sample.c \ scale-down-source-surface-paint.c scale-offset-image.c \ scale-offset-similar.c scale-source-surface-paint.c \ @@ -1459,10 +1485,10 @@ 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 \ - subsurface-image-repeat.c subsurface-repeat.c \ + smp-glyph.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 subsurface-image-repeat.c subsurface-repeat.c \ subsurface-reflect.c subsurface-pad.c \ subsurface-modify-child.c subsurface-modify-parent.c \ subsurface-outside-target.c subsurface-scale.c \ @@ -1472,21 +1498,22 @@ surface-pattern-scale-down-extend.c surface-pattern-scale-up.c \ text-antialias.c text-antialias-subpixel.c text-cache-crash.c \ text-glyph-range.c text-pattern.c text-rotate.c \ - text-transform.c text-zero-len.c tighten-bounds.c tiger.c \ - toy-font-face.c transforms.c translate-show-surface.c \ - trap-clip.c twin.c twin-antialias-gray.c \ - twin-antialias-mixed.c twin-antialias-none.c \ - twin-antialias-subpixel.c unaligned-box.c \ - unantialiased-shapes.c unbounded-operator.c unclosed-strokes.c \ - user-data.c user-font.c user-font-mask.c user-font-proxy.c \ - user-font-rescale.c world-map.c white-in-noop.c \ - xcb-huge-image-shm.c xcb-huge-subimage.c xcb-stress-cache.c \ - xcb-snapshot-assert.c xcomposite-projection.c \ - xlib-expose-event.c zero-alpha.c zero-mask.c $(am__append_1) \ - $(am__append_2) $(am__append_3) $(am__append_4) \ - $(am__append_5) $(am__append_6) $(am__append_7) \ - $(am__append_8) $(am__append_9) $(am__append_10) \ - $(am__append_11) $(am__append_12) $(am__append_13) $(test) + text-transform.c text-unhinted-metrics.c text-zero-len.c \ + thin-lines.c tighten-bounds.c tiger.c toy-font-face.c \ + transforms.c translate-show-surface.c trap-clip.c twin.c \ + twin-antialias-gray.c twin-antialias-mixed.c \ + twin-antialias-none.c twin-antialias-subpixel.c \ + unaligned-box.c unantialiased-shapes.c unbounded-operator.c \ + unclosed-strokes.c user-data.c user-font.c user-font-mask.c \ + user-font-proxy.c user-font-rescale.c world-map.c \ + white-in-noop.c xcb-huge-image-shm.c xcb-huge-subimage.c \ + xcb-stress-cache.c xcb-snapshot-assert.c \ + xcomposite-projection.c xlib-expose-event.c zero-alpha.c \ + zero-mask.c $(am__append_1) $(am__append_2) $(am__append_3) \ + $(am__append_4) $(am__append_5) $(am__append_6) \ + $(am__append_7) $(am__append_8) $(am__append_9) \ + $(am__append_10) $(am__append_11) $(am__append_12) \ + $(am__append_13) $(test) pthread_test_sources = \ pthread-same-source.c \ pthread-show-text.c \ @@ -1515,7 +1542,8 @@ pdf_surface_test_sources = \ pdf-features.c \ pdf-mime-data.c \ - pdf-surface-source.c + pdf-surface-source.c \ + pdf-tagged-text.c ps_surface_test_sources = \ ps-eps.c \ @@ -1535,7 +1563,7 @@ xlib-surface-source.c xlib_xrender_surface_test_sources = get-xrender-format.c -multi_page_surface_test_sources = multi-page.c +multi_page_surface_test_sources = multi-page.c mime-unique-id.c fallback_resolution_test_sources = fallback-resolution.c cairo_test_suite_headers = \ buffer-diff.h \ @@ -1717,7 +1745,6 @@ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign test/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --foreign test/Makefile -.PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ @@ -1726,7 +1753,7 @@ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; -$(top_srcdir)/build/Makefile.am.common $(top_srcdir)/test/Makefile.sources: +$(top_srcdir)/build/Makefile.am.common $(top_srcdir)/test/Makefile.sources $(am__empty): $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh @@ -2031,6 +2058,7 @@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cairo_test_suite-mesh-pattern.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cairo_test_suite-mime-data.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cairo_test_suite-mime-surface-api.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cairo_test_suite-mime-unique-id.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cairo_test_suite-miter-precision.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cairo_test_suite-move-to-show-surface.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cairo_test_suite-multi-page.Po@am__quote@ @@ -2069,6 +2097,7 @@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cairo_test_suite-pdf-isolated-group.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cairo_test_suite-pdf-mime-data.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cairo_test_suite-pdf-surface-source.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cairo_test_suite-pdf-tagged-text.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cairo_test_suite-pixman-downscale.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cairo_test_suite-pixman-rotate.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cairo_test_suite-png.Po@am__quote@ @@ -2093,11 +2122,14 @@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cairo_test_suite-raster-source.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cairo_test_suite-record-extend.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cairo_test_suite-record-mesh.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cairo_test_suite-record-neg-extents.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cairo_test_suite-record-replay-extend.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cairo_test_suite-record.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cairo_test_suite-record1414x.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cairo_test_suite-record2x.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cairo_test_suite-record90.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cairo_test_suite-recordflip.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cairo_test_suite-recording-ink-extents.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cairo_test_suite-recording-surface-extend.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cairo_test_suite-recording-surface-pattern.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cairo_test_suite-rectangle-rounding-error.Po@am__quote@ @@ -2141,6 +2173,7 @@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cairo_test_suite-smask-stroke.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cairo_test_suite-smask-text.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cairo_test_suite-smask.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cairo_test_suite-smp-glyph.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cairo_test_suite-solid-pattern-cache-stress.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cairo_test_suite-source-clip-scale.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cairo_test_suite-source-clip.Po@am__quote@ @@ -2179,7 +2212,9 @@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cairo_test_suite-text-pattern.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cairo_test_suite-text-rotate.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cairo_test_suite-text-transform.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cairo_test_suite-text-unhinted-metrics.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cairo_test_suite-text-zero-len.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cairo_test_suite-thin-lines.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cairo_test_suite-tiger.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cairo_test_suite-tighten-bounds.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cairo_test_suite-toy-font-face.Po@am__quote@ @@ -6120,6 +6155,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-record-extend.obj `if test -f 'record-extend.c'; then $(CYGPATH_W) 'record-extend.c'; else $(CYGPATH_W) '$(srcdir)/record-extend.c'; fi` +cairo_test_suite-record-neg-extents.o: record-neg-extents.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cairo_test_suite_CFLAGS) $(CFLAGS) -MT cairo_test_suite-record-neg-extents.o -MD -MP -MF $(DEPDIR)/cairo_test_suite-record-neg-extents.Tpo -c -o cairo_test_suite-record-neg-extents.o `test -f 'record-neg-extents.c' || echo '$(srcdir)/'`record-neg-extents.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/cairo_test_suite-record-neg-extents.Tpo $(DEPDIR)/cairo_test_suite-record-neg-extents.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='record-neg-extents.c' object='cairo_test_suite-record-neg-extents.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-record-neg-extents.o `test -f 'record-neg-extents.c' || echo '$(srcdir)/'`record-neg-extents.c + +cairo_test_suite-record-neg-extents.obj: record-neg-extents.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cairo_test_suite_CFLAGS) $(CFLAGS) -MT cairo_test_suite-record-neg-extents.obj -MD -MP -MF $(DEPDIR)/cairo_test_suite-record-neg-extents.Tpo -c -o cairo_test_suite-record-neg-extents.obj `if test -f 'record-neg-extents.c'; then $(CYGPATH_W) 'record-neg-extents.c'; else $(CYGPATH_W) '$(srcdir)/record-neg-extents.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/cairo_test_suite-record-neg-extents.Tpo $(DEPDIR)/cairo_test_suite-record-neg-extents.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='record-neg-extents.c' object='cairo_test_suite-record-neg-extents.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-record-neg-extents.obj `if test -f 'record-neg-extents.c'; then $(CYGPATH_W) 'record-neg-extents.c'; else $(CYGPATH_W) '$(srcdir)/record-neg-extents.c'; fi` + cairo_test_suite-record-mesh.o: record-mesh.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cairo_test_suite_CFLAGS) $(CFLAGS) -MT cairo_test_suite-record-mesh.o -MD -MP -MF $(DEPDIR)/cairo_test_suite-record-mesh.Tpo -c -o cairo_test_suite-record-mesh.o `test -f 'record-mesh.c' || echo '$(srcdir)/'`record-mesh.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/cairo_test_suite-record-mesh.Tpo $(DEPDIR)/cairo_test_suite-record-mesh.Po @@ -6134,6 +6183,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-record-mesh.obj `if test -f 'record-mesh.c'; then $(CYGPATH_W) 'record-mesh.c'; else $(CYGPATH_W) '$(srcdir)/record-mesh.c'; fi` +cairo_test_suite-record-replay-extend.o: record-replay-extend.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cairo_test_suite_CFLAGS) $(CFLAGS) -MT cairo_test_suite-record-replay-extend.o -MD -MP -MF $(DEPDIR)/cairo_test_suite-record-replay-extend.Tpo -c -o cairo_test_suite-record-replay-extend.o `test -f 'record-replay-extend.c' || echo '$(srcdir)/'`record-replay-extend.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/cairo_test_suite-record-replay-extend.Tpo $(DEPDIR)/cairo_test_suite-record-replay-extend.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='record-replay-extend.c' object='cairo_test_suite-record-replay-extend.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-record-replay-extend.o `test -f 'record-replay-extend.c' || echo '$(srcdir)/'`record-replay-extend.c + +cairo_test_suite-record-replay-extend.obj: record-replay-extend.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cairo_test_suite_CFLAGS) $(CFLAGS) -MT cairo_test_suite-record-replay-extend.obj -MD -MP -MF $(DEPDIR)/cairo_test_suite-record-replay-extend.Tpo -c -o cairo_test_suite-record-replay-extend.obj `if test -f 'record-replay-extend.c'; then $(CYGPATH_W) 'record-replay-extend.c'; else $(CYGPATH_W) '$(srcdir)/record-replay-extend.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/cairo_test_suite-record-replay-extend.Tpo $(DEPDIR)/cairo_test_suite-record-replay-extend.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='record-replay-extend.c' object='cairo_test_suite-record-replay-extend.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-record-replay-extend.obj `if test -f 'record-replay-extend.c'; then $(CYGPATH_W) 'record-replay-extend.c'; else $(CYGPATH_W) '$(srcdir)/record-replay-extend.c'; fi` + +cairo_test_suite-recording-ink-extents.o: recording-ink-extents.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cairo_test_suite_CFLAGS) $(CFLAGS) -MT cairo_test_suite-recording-ink-extents.o -MD -MP -MF $(DEPDIR)/cairo_test_suite-recording-ink-extents.Tpo -c -o cairo_test_suite-recording-ink-extents.o `test -f 'recording-ink-extents.c' || echo '$(srcdir)/'`recording-ink-extents.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/cairo_test_suite-recording-ink-extents.Tpo $(DEPDIR)/cairo_test_suite-recording-ink-extents.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='recording-ink-extents.c' object='cairo_test_suite-recording-ink-extents.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-recording-ink-extents.o `test -f 'recording-ink-extents.c' || echo '$(srcdir)/'`recording-ink-extents.c + +cairo_test_suite-recording-ink-extents.obj: recording-ink-extents.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cairo_test_suite_CFLAGS) $(CFLAGS) -MT cairo_test_suite-recording-ink-extents.obj -MD -MP -MF $(DEPDIR)/cairo_test_suite-recording-ink-extents.Tpo -c -o cairo_test_suite-recording-ink-extents.obj `if test -f 'recording-ink-extents.c'; then $(CYGPATH_W) 'recording-ink-extents.c'; else $(CYGPATH_W) '$(srcdir)/recording-ink-extents.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/cairo_test_suite-recording-ink-extents.Tpo $(DEPDIR)/cairo_test_suite-recording-ink-extents.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='recording-ink-extents.c' object='cairo_test_suite-recording-ink-extents.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-recording-ink-extents.obj `if test -f 'recording-ink-extents.c'; then $(CYGPATH_W) 'recording-ink-extents.c'; else $(CYGPATH_W) '$(srcdir)/recording-ink-extents.c'; fi` + cairo_test_suite-recording-surface-pattern.o: recording-surface-pattern.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cairo_test_suite_CFLAGS) $(CFLAGS) -MT cairo_test_suite-recording-surface-pattern.o -MD -MP -MF $(DEPDIR)/cairo_test_suite-recording-surface-pattern.Tpo -c -o cairo_test_suite-recording-surface-pattern.o `test -f 'recording-surface-pattern.c' || echo '$(srcdir)/'`recording-surface-pattern.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/cairo_test_suite-recording-surface-pattern.Tpo $(DEPDIR)/cairo_test_suite-recording-surface-pattern.Po @@ -6792,6 +6869,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-smask-text.obj `if test -f 'smask-text.c'; then $(CYGPATH_W) 'smask-text.c'; else $(CYGPATH_W) '$(srcdir)/smask-text.c'; fi` +cairo_test_suite-smp-glyph.o: smp-glyph.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cairo_test_suite_CFLAGS) $(CFLAGS) -MT cairo_test_suite-smp-glyph.o -MD -MP -MF $(DEPDIR)/cairo_test_suite-smp-glyph.Tpo -c -o cairo_test_suite-smp-glyph.o `test -f 'smp-glyph.c' || echo '$(srcdir)/'`smp-glyph.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/cairo_test_suite-smp-glyph.Tpo $(DEPDIR)/cairo_test_suite-smp-glyph.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='smp-glyph.c' object='cairo_test_suite-smp-glyph.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-smp-glyph.o `test -f 'smp-glyph.c' || echo '$(srcdir)/'`smp-glyph.c + +cairo_test_suite-smp-glyph.obj: smp-glyph.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cairo_test_suite_CFLAGS) $(CFLAGS) -MT cairo_test_suite-smp-glyph.obj -MD -MP -MF $(DEPDIR)/cairo_test_suite-smp-glyph.Tpo -c -o cairo_test_suite-smp-glyph.obj `if test -f 'smp-glyph.c'; then $(CYGPATH_W) 'smp-glyph.c'; else $(CYGPATH_W) '$(srcdir)/smp-glyph.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/cairo_test_suite-smp-glyph.Tpo $(DEPDIR)/cairo_test_suite-smp-glyph.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='smp-glyph.c' object='cairo_test_suite-smp-glyph.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-smp-glyph.obj `if test -f 'smp-glyph.c'; then $(CYGPATH_W) 'smp-glyph.c'; else $(CYGPATH_W) '$(srcdir)/smp-glyph.c'; fi` + cairo_test_suite-solid-pattern-cache-stress.o: solid-pattern-cache-stress.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cairo_test_suite_CFLAGS) $(CFLAGS) -MT cairo_test_suite-solid-pattern-cache-stress.o -MD -MP -MF $(DEPDIR)/cairo_test_suite-solid-pattern-cache-stress.Tpo -c -o cairo_test_suite-solid-pattern-cache-stress.o `test -f 'solid-pattern-cache-stress.c' || echo '$(srcdir)/'`solid-pattern-cache-stress.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/cairo_test_suite-solid-pattern-cache-stress.Tpo $(DEPDIR)/cairo_test_suite-solid-pattern-cache-stress.Po @@ -7226,6 +7317,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-text-transform.obj `if test -f 'text-transform.c'; then $(CYGPATH_W) 'text-transform.c'; else $(CYGPATH_W) '$(srcdir)/text-transform.c'; fi` +cairo_test_suite-text-unhinted-metrics.o: text-unhinted-metrics.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cairo_test_suite_CFLAGS) $(CFLAGS) -MT cairo_test_suite-text-unhinted-metrics.o -MD -MP -MF $(DEPDIR)/cairo_test_suite-text-unhinted-metrics.Tpo -c -o cairo_test_suite-text-unhinted-metrics.o `test -f 'text-unhinted-metrics.c' || echo '$(srcdir)/'`text-unhinted-metrics.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/cairo_test_suite-text-unhinted-metrics.Tpo $(DEPDIR)/cairo_test_suite-text-unhinted-metrics.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='text-unhinted-metrics.c' object='cairo_test_suite-text-unhinted-metrics.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-text-unhinted-metrics.o `test -f 'text-unhinted-metrics.c' || echo '$(srcdir)/'`text-unhinted-metrics.c + +cairo_test_suite-text-unhinted-metrics.obj: text-unhinted-metrics.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cairo_test_suite_CFLAGS) $(CFLAGS) -MT cairo_test_suite-text-unhinted-metrics.obj -MD -MP -MF $(DEPDIR)/cairo_test_suite-text-unhinted-metrics.Tpo -c -o cairo_test_suite-text-unhinted-metrics.obj `if test -f 'text-unhinted-metrics.c'; then $(CYGPATH_W) 'text-unhinted-metrics.c'; else $(CYGPATH_W) '$(srcdir)/text-unhinted-metrics.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/cairo_test_suite-text-unhinted-metrics.Tpo $(DEPDIR)/cairo_test_suite-text-unhinted-metrics.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='text-unhinted-metrics.c' object='cairo_test_suite-text-unhinted-metrics.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-text-unhinted-metrics.obj `if test -f 'text-unhinted-metrics.c'; then $(CYGPATH_W) 'text-unhinted-metrics.c'; else $(CYGPATH_W) '$(srcdir)/text-unhinted-metrics.c'; fi` + cairo_test_suite-text-zero-len.o: text-zero-len.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cairo_test_suite_CFLAGS) $(CFLAGS) -MT cairo_test_suite-text-zero-len.o -MD -MP -MF $(DEPDIR)/cairo_test_suite-text-zero-len.Tpo -c -o cairo_test_suite-text-zero-len.o `test -f 'text-zero-len.c' || echo '$(srcdir)/'`text-zero-len.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/cairo_test_suite-text-zero-len.Tpo $(DEPDIR)/cairo_test_suite-text-zero-len.Po @@ -7240,6 +7345,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-text-zero-len.obj `if test -f 'text-zero-len.c'; then $(CYGPATH_W) 'text-zero-len.c'; else $(CYGPATH_W) '$(srcdir)/text-zero-len.c'; fi` +cairo_test_suite-thin-lines.o: thin-lines.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cairo_test_suite_CFLAGS) $(CFLAGS) -MT cairo_test_suite-thin-lines.o -MD -MP -MF $(DEPDIR)/cairo_test_suite-thin-lines.Tpo -c -o cairo_test_suite-thin-lines.o `test -f 'thin-lines.c' || echo '$(srcdir)/'`thin-lines.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/cairo_test_suite-thin-lines.Tpo $(DEPDIR)/cairo_test_suite-thin-lines.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='thin-lines.c' object='cairo_test_suite-thin-lines.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-thin-lines.o `test -f 'thin-lines.c' || echo '$(srcdir)/'`thin-lines.c + +cairo_test_suite-thin-lines.obj: thin-lines.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cairo_test_suite_CFLAGS) $(CFLAGS) -MT cairo_test_suite-thin-lines.obj -MD -MP -MF $(DEPDIR)/cairo_test_suite-thin-lines.Tpo -c -o cairo_test_suite-thin-lines.obj `if test -f 'thin-lines.c'; then $(CYGPATH_W) 'thin-lines.c'; else $(CYGPATH_W) '$(srcdir)/thin-lines.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/cairo_test_suite-thin-lines.Tpo $(DEPDIR)/cairo_test_suite-thin-lines.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='thin-lines.c' object='cairo_test_suite-thin-lines.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-thin-lines.obj `if test -f 'thin-lines.c'; then $(CYGPATH_W) 'thin-lines.c'; else $(CYGPATH_W) '$(srcdir)/thin-lines.c'; fi` + cairo_test_suite-tighten-bounds.o: tighten-bounds.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cairo_test_suite_CFLAGS) $(CFLAGS) -MT cairo_test_suite-tighten-bounds.o -MD -MP -MF $(DEPDIR)/cairo_test_suite-tighten-bounds.Tpo -c -o cairo_test_suite-tighten-bounds.o `test -f 'tighten-bounds.c' || echo '$(srcdir)/'`tighten-bounds.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/cairo_test_suite-tighten-bounds.Tpo $(DEPDIR)/cairo_test_suite-tighten-bounds.Po @@ -7926,6 +8045,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-pdf-surface-source.obj `if test -f 'pdf-surface-source.c'; then $(CYGPATH_W) 'pdf-surface-source.c'; else $(CYGPATH_W) '$(srcdir)/pdf-surface-source.c'; fi` +cairo_test_suite-pdf-tagged-text.o: pdf-tagged-text.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cairo_test_suite_CFLAGS) $(CFLAGS) -MT cairo_test_suite-pdf-tagged-text.o -MD -MP -MF $(DEPDIR)/cairo_test_suite-pdf-tagged-text.Tpo -c -o cairo_test_suite-pdf-tagged-text.o `test -f 'pdf-tagged-text.c' || echo '$(srcdir)/'`pdf-tagged-text.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/cairo_test_suite-pdf-tagged-text.Tpo $(DEPDIR)/cairo_test_suite-pdf-tagged-text.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='pdf-tagged-text.c' object='cairo_test_suite-pdf-tagged-text.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-pdf-tagged-text.o `test -f 'pdf-tagged-text.c' || echo '$(srcdir)/'`pdf-tagged-text.c + +cairo_test_suite-pdf-tagged-text.obj: pdf-tagged-text.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cairo_test_suite_CFLAGS) $(CFLAGS) -MT cairo_test_suite-pdf-tagged-text.obj -MD -MP -MF $(DEPDIR)/cairo_test_suite-pdf-tagged-text.Tpo -c -o cairo_test_suite-pdf-tagged-text.obj `if test -f 'pdf-tagged-text.c'; then $(CYGPATH_W) 'pdf-tagged-text.c'; else $(CYGPATH_W) '$(srcdir)/pdf-tagged-text.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/cairo_test_suite-pdf-tagged-text.Tpo $(DEPDIR)/cairo_test_suite-pdf-tagged-text.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='pdf-tagged-text.c' object='cairo_test_suite-pdf-tagged-text.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-pdf-tagged-text.obj `if test -f 'pdf-tagged-text.c'; then $(CYGPATH_W) 'pdf-tagged-text.c'; else $(CYGPATH_W) '$(srcdir)/pdf-tagged-text.c'; fi` + cairo_test_suite-ps-eps.o: ps-eps.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cairo_test_suite_CFLAGS) $(CFLAGS) -MT cairo_test_suite-ps-eps.o -MD -MP -MF $(DEPDIR)/cairo_test_suite-ps-eps.Tpo -c -o cairo_test_suite-ps-eps.o `test -f 'ps-eps.c' || echo '$(srcdir)/'`ps-eps.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/cairo_test_suite-ps-eps.Tpo $(DEPDIR)/cairo_test_suite-ps-eps.Po @@ -8080,6 +8213,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-multi-page.obj `if test -f 'multi-page.c'; then $(CYGPATH_W) 'multi-page.c'; else $(CYGPATH_W) '$(srcdir)/multi-page.c'; fi` +cairo_test_suite-mime-unique-id.o: mime-unique-id.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cairo_test_suite_CFLAGS) $(CFLAGS) -MT cairo_test_suite-mime-unique-id.o -MD -MP -MF $(DEPDIR)/cairo_test_suite-mime-unique-id.Tpo -c -o cairo_test_suite-mime-unique-id.o `test -f 'mime-unique-id.c' || echo '$(srcdir)/'`mime-unique-id.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/cairo_test_suite-mime-unique-id.Tpo $(DEPDIR)/cairo_test_suite-mime-unique-id.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='mime-unique-id.c' object='cairo_test_suite-mime-unique-id.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-mime-unique-id.o `test -f 'mime-unique-id.c' || echo '$(srcdir)/'`mime-unique-id.c + +cairo_test_suite-mime-unique-id.obj: mime-unique-id.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cairo_test_suite_CFLAGS) $(CFLAGS) -MT cairo_test_suite-mime-unique-id.obj -MD -MP -MF $(DEPDIR)/cairo_test_suite-mime-unique-id.Tpo -c -o cairo_test_suite-mime-unique-id.obj `if test -f 'mime-unique-id.c'; then $(CYGPATH_W) 'mime-unique-id.c'; else $(CYGPATH_W) '$(srcdir)/mime-unique-id.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/cairo_test_suite-mime-unique-id.Tpo $(DEPDIR)/cairo_test_suite-mime-unique-id.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='mime-unique-id.c' object='cairo_test_suite-mime-unique-id.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-mime-unique-id.obj `if test -f 'mime-unique-id.c'; then $(CYGPATH_W) 'mime-unique-id.c'; else $(CYGPATH_W) '$(srcdir)/mime-unique-id.c'; fi` + cairo_test_suite-fallback-resolution.o: fallback-resolution.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cairo_test_suite_CFLAGS) $(CFLAGS) -MT cairo_test_suite-fallback-resolution.o -MD -MP -MF $(DEPDIR)/cairo_test_suite-fallback-resolution.Tpo -c -o cairo_test_suite-fallback-resolution.o `test -f 'fallback-resolution.c' || echo '$(srcdir)/'`fallback-resolution.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/cairo_test_suite-fallback-resolution.Tpo $(DEPDIR)/cairo_test_suite-fallback-resolution.Po @@ -8313,7 +8460,7 @@ if test -n "$$am__remaking_logs"; then \ echo "fatal: making $(TEST_SUITE_LOG): possible infinite" \ "recursion detected" >&2; \ - else \ + elif test -n "$$redo_logs"; then \ am__remaking_logs=yes $(MAKE) $(AM_MAKEFLAGS) $$redo_logs; \ fi; \ if $(am__make_dryrun); then :; else \ @@ -8625,6 +8772,8 @@ mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ recheck tags tags-am uninstall uninstall-am +.PRECIOUS: Makefile + cairo-test-constructors.c: Makefile $(test_sources) make-cairo-test-constructors.sh (cd $(srcdir) && sh ./make-cairo-test-constructors.sh $(test_sources)) > $@ || (rm $@ ; exit 1) diff -Nru cairo-1.14.6/test/Makefile.sources cairo-1.15.10/test/Makefile.sources --- cairo-1.14.6/test/Makefile.sources 2015-10-27 21:04:30.000000000 +0000 +++ cairo-1.15.10/test/Makefile.sources 2017-12-07 02:14:36.000000000 +0000 @@ -272,7 +272,10 @@ record90.c \ recordflip.c \ record-extend.c \ + record-neg-extents.c \ record-mesh.c \ + record-replay-extend.c \ + recording-ink-extents.c \ recording-surface-pattern.c \ recording-surface-extend.c \ rectangle-rounding-error.c \ @@ -320,6 +323,7 @@ smask-paint.c \ smask-stroke.c \ smask-text.c \ + smp-glyph.c \ solid-pattern-cache-stress.c \ source-clip.c \ source-clip-scale.c \ @@ -351,7 +355,9 @@ text-pattern.c \ text-rotate.c \ text-transform.c \ + text-unhinted-metrics.c \ text-zero-len.c \ + thin-lines.c \ tighten-bounds.c \ tiger.c \ toy-font-face.c \ @@ -412,7 +418,8 @@ pdf_surface_test_sources = \ pdf-features.c \ pdf-mime-data.c \ - pdf-surface-source.c + pdf-surface-source.c \ + pdf-tagged-text.c ps_surface_test_sources = \ ps-eps.c \ @@ -433,7 +440,7 @@ xlib_xrender_surface_test_sources = get-xrender-format.c -multi_page_surface_test_sources = multi-page.c +multi_page_surface_test_sources = multi-page.c mime-unique-id.c fallback_resolution_test_sources = fallback-resolution.c diff -Nru cairo-1.14.6/test/mime-data.c cairo-1.15.10/test/mime-data.c --- cairo-1.14.6/test/mime-data.c 2015-10-27 21:05:38.000000000 +0000 +++ cairo-1.15.10/test/mime-data.c 2017-12-07 02:14:36.000000000 +0000 @@ -207,6 +207,56 @@ } static cairo_test_status_t +paint_ccitt_file (cairo_t *cr, int x, int y) +{ + const cairo_test_context_t *ctx = cairo_test_get_context (cr); + cairo_surface_t *image; + unsigned char *mime_data; + unsigned int mime_length; + cairo_status_t status; + const char *ccitt_image_filename = "ccitt.g3"; + const char *ccitt_image_params = "Columns=200 Rows=50 K=-1"; + + /* Deliberately use a non-matching MIME images, so that we can identify + * when the MIME representation is used in preference to the plain image + * surface. + */ + + status = read_file (ctx, ccitt_image_filename, &mime_data, &mime_length); + if (status) + return cairo_test_status_from_status (ctx, status); + + image = cairo_image_surface_create (CAIRO_FORMAT_RGB24, 200, 50); + + /* Set the CCITT image data */ + status = cairo_surface_set_mime_data (image, CAIRO_MIME_TYPE_CCITT_FAX, + mime_data, mime_length, + free, mime_data); + if (status) { + cairo_surface_destroy (image); + free (mime_data); + return cairo_test_status_from_status (ctx, status); + } + + /* Set the CCITT image paramaters */ + status = cairo_surface_set_mime_data (image, CAIRO_MIME_TYPE_CCITT_FAX_PARAMS, + (unsigned char *)ccitt_image_params, + strlen (ccitt_image_params), + NULL, NULL); + if (status) { + cairo_surface_destroy (image); + return cairo_test_status_from_status (ctx, status); + } + + cairo_set_source_surface (cr, image, x, y); + cairo_surface_destroy (image); + + cairo_paint (cr); + + return CAIRO_TEST_SUCCESS; +} + +static cairo_test_status_t draw (cairo_t *cr, int width, int height) { const char jpg_filename[] = "jpeg.jpg"; @@ -230,6 +280,10 @@ if (status) return status; + status = paint_ccitt_file (cr, 0, 250); + if (status) + return status; + return CAIRO_TEST_SUCCESS; } @@ -237,5 +291,5 @@ "Check that the mime-data embedding works", "jpeg, api", /* keywords */ NULL, /* requirements */ - 200, 250, + 200, 300, NULL, draw) diff -Nru cairo-1.14.6/test/mime-unique-id.c cairo-1.15.10/test/mime-unique-id.c --- cairo-1.14.6/test/mime-unique-id.c 1970-01-01 00:00:00.000000000 +0000 +++ cairo-1.15.10/test/mime-unique-id.c 2017-12-07 02:14:36.000000000 +0000 @@ -0,0 +1,511 @@ +/* + * Copyright © 2017 Adrian Johnson + * + * Permission is hereby granted, free of charge, to any person + * obtaining a copy of this software and associated documentation + * files (the "Software"), to deal in the Software without + * restriction, including without limitation the rights to use, copy, + * modify, merge, publish, distribute, sublicense, and/or sell copies + * of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS + * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN + * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + * + * Author: Adrian Johnson + */ + + +/* Check that source surfaces with same CAIRO_MIME_TYPE_UNIQUE_ID are + * embedded only once in PDF/PS. + * + * To exercise all the surface embedding code in PS/PDF, four types of + * source surfaces are painted on each page, each with its own UNIQUE_ID: + * - an image surface + * - a recording surface with a jpeg mime attached + * - a bounded recording surface + * - an unbounded recording surface. + * + * Four pages are generated. Each source is clipped starting with the + * smallest area on the first page increasing to the unclipped size on + * the last page. This is to ensure the output does not embed the + * source clipped to a smaller size than used on subsequent pages. + * + * The test verifies the use of UNIQUE_ID by comparing the file size + * with the expected size. + */ + +#include "cairo-test.h" + +#include +#include + +#include + +#if CAIRO_HAS_PS_SURFACE +#include +#endif + +#if CAIRO_HAS_PDF_SURFACE +#include +#endif + +#define NUM_PAGES 4 + +#define WIDTH 275 +#define HEIGHT 275 + +#define BASENAME "mime-unique-id" + + +/* Expected file size to check that surfaces are embedded only once. + * SIZE_TOLERANCE should be large enough to allow some variation in + * file size due to changes to the PS/PDF surfaces while being small + * enough to catch any attempt to embed the surface more than + * once. The compressed size of each surface embedded in PDF is: + * - image: 108,774 + * - jpeg: 11,400 + * - recording: 17,518 + * + * If the size check fails, manually check the output and if the + * surfaces are still embedded only once, update the expected sizes. + */ +#define PS2_EXPECTED_SIZE 417510 +#define PS3_EXPECTED_SIZE 381554 +#define PDF_EXPECTED_SIZE 347182 +#define SIZE_TOLERANCE 5000 + +static const char *png_filename = "romedalen.png"; +static const char *jpeg_filename = "romedalen.jpg"; + +static cairo_test_status_t +create_image_surface (cairo_test_context_t *ctx, cairo_surface_t **surface) +{ + cairo_status_t status; + const char *unique_id = "image"; + + *surface = cairo_test_create_surface_from_png (ctx, png_filename); + status = cairo_surface_set_mime_data (*surface, CAIRO_MIME_TYPE_UNIQUE_ID, + (unsigned char *)unique_id, + strlen (unique_id), + NULL, NULL); + if (status) { + cairo_surface_destroy (*surface); + return cairo_test_status_from_status (ctx, status); + } + + return CAIRO_TEST_SUCCESS; +} + +static cairo_test_status_t +create_recording_surface_with_mime_jpg (cairo_test_context_t *ctx, cairo_surface_t **surface) +{ + cairo_status_t status; + FILE *f; + unsigned char *data; + long len; + const char *unique_id = "jpeg"; + cairo_rectangle_t extents = { 0, 0, 1, 1 }; + + *surface = cairo_recording_surface_create (CAIRO_CONTENT_COLOR_ALPHA, &extents); + f = fopen (jpeg_filename, "rb"); + if (f == NULL) { + cairo_test_log (ctx, "Unable to open file %s\n", jpeg_filename); + return CAIRO_TEST_FAILURE; + } + + fseek (f, 0, SEEK_END); + len = ftell(f); + fseek (f, 0, SEEK_SET); + data = malloc (len); + if (fread(data, len, 1, f) != 1) { + cairo_test_log (ctx, "Unable to read file %s\n", jpeg_filename); + return CAIRO_TEST_FAILURE; + } + + fclose(f); + status = cairo_surface_set_mime_data (*surface, + CAIRO_MIME_TYPE_JPEG, + data, len, + free, data); + if (status) { + cairo_surface_destroy (*surface); + return cairo_test_status_from_status (ctx, status); + } + + status = cairo_surface_set_mime_data (*surface, CAIRO_MIME_TYPE_UNIQUE_ID, + (unsigned char *)unique_id, + strlen (unique_id), + NULL, NULL); + if (status) { + cairo_surface_destroy (*surface); + return cairo_test_status_from_status (ctx, status); + } + + return CAIRO_TEST_SUCCESS; +} + +static void +draw_tile (cairo_t *cr) +{ + cairo_move_to (cr, 10 + 5, 10); + cairo_arc (cr, 10, 10, 5, 0, 2*M_PI); + cairo_close_path (cr); + cairo_set_source_rgb (cr, 1, 0, 0); + cairo_fill (cr); + + cairo_move_to (cr, 30, 10-10*0.43); + cairo_line_to (cr, 25, 10+10*0.43); + cairo_line_to (cr, 35, 10+10*0.43); + cairo_close_path (cr); + cairo_set_source_rgb (cr, 0, 1, 0); + cairo_fill (cr); + + cairo_rectangle (cr, 5, 25, 10, 10); + cairo_set_source_rgb (cr, 0, 0, 0); + cairo_fill (cr); + + cairo_save (cr); + cairo_translate (cr, 30, 30); + cairo_rotate (cr, M_PI/4.0); + cairo_rectangle (cr, -5, -5, 10, 10); + cairo_set_source_rgb (cr, 1, 0, 1); + cairo_fill (cr); + cairo_restore (cr); +} + +#define RECORDING_SIZE 800 +#define TILE_SIZE 40 + +static cairo_test_status_t +create_recording_surface (cairo_test_context_t *ctx, cairo_surface_t **surface, cairo_bool_t bounded) +{ + cairo_status_t status; + int x, y; + cairo_t *cr; + cairo_matrix_t ctm; + int start, size; + const char *bounded_id = "recording bounded"; + const char *unbounded_id = "recording unbounded"; + cairo_rectangle_t extents = { 0, 0, RECORDING_SIZE, RECORDING_SIZE }; + + if (bounded) { + *surface = cairo_recording_surface_create (CAIRO_CONTENT_COLOR_ALPHA, &extents); + start = 0; + size = RECORDING_SIZE; + } else { + *surface = cairo_recording_surface_create (CAIRO_CONTENT_COLOR_ALPHA, NULL); + start = RECORDING_SIZE / 2; + size = RECORDING_SIZE * 2; + } + + /* Draw each tile instead of creating a cairo pattern to make size + * of the emitted recording as large as possible. + */ + cr = cairo_create (*surface); + cairo_set_source_rgb (cr, 1, 1, 0); + cairo_paint (cr); + cairo_get_matrix (cr, &ctm); + for (y = start; y < size; y += TILE_SIZE) { + for (x = start; x < size; x += TILE_SIZE) { + draw_tile (cr); + cairo_translate (cr, TILE_SIZE, 0); + } + cairo_matrix_translate (&ctm, 0, TILE_SIZE); + cairo_set_matrix (cr, &ctm); + } + cairo_destroy (cr); + + status = cairo_surface_set_mime_data (*surface, CAIRO_MIME_TYPE_UNIQUE_ID, + (unsigned char *)(bounded ? bounded_id : unbounded_id), + strlen (bounded ? bounded_id : unbounded_id), + NULL, NULL); + if (status) { + cairo_surface_destroy (*surface); + return cairo_test_status_from_status (ctx, status); + } + + return CAIRO_TEST_SUCCESS; +} + +/* Draw @source scaled to fit @rect and clipped to a rectangle + * @clip_margin units smaller on each side. @rect will be stroked + * with a solid line and the clip rect stroked with a dashed line. + */ +static void +draw_surface (cairo_t *cr, cairo_surface_t *source, cairo_rectangle_int_t *rect, int clip_margin) +{ + cairo_surface_type_t type; + int width, height; + cairo_rectangle_t extents; + const double dashes[2] = { 2, 2 }; + + type = cairo_surface_get_type (source); + if (type == CAIRO_SURFACE_TYPE_IMAGE) { + width = cairo_image_surface_get_width (source); + height = cairo_image_surface_get_height (source); + } else { + if (cairo_recording_surface_get_extents (source, &extents)) { + width = extents.width; + height = extents.height; + } else { + width = RECORDING_SIZE; + height = RECORDING_SIZE; + } + } + + cairo_save (cr); + cairo_rectangle (cr, rect->x, rect->y, rect->width, rect->height); + cairo_stroke (cr); + cairo_rectangle (cr, + rect->x + clip_margin, + rect->y + clip_margin, + rect->width - clip_margin*2, + rect->height - clip_margin*2); + cairo_set_dash (cr, dashes, 2, 0); + cairo_stroke_preserve (cr); + cairo_clip (cr); + + cairo_translate (cr, rect->x, rect->y); + cairo_scale (cr, (double)rect->width/width, (double)rect->height/height); + cairo_set_source_surface (cr, source, 0, 0); + cairo_paint (cr); + + cairo_restore (cr); +} + +static cairo_test_status_t +draw_pages (cairo_test_context_t *ctx, cairo_surface_t *surface) +{ + cairo_t *cr; + int i; + cairo_rectangle_int_t img_rect; + cairo_rectangle_int_t jpg_rect; + cairo_rectangle_int_t bounded_rect; + cairo_rectangle_int_t unbounded_rect; + int clip_margin; + cairo_surface_t *source; + cairo_test_status_t status; + + cr = cairo_create (surface); + + /* target area to fill with the image source */ + img_rect.x = 25; + img_rect.y = 25; + img_rect.width = 100; + img_rect.height = 100; + + /* target area to fill with the recording with jpeg mime source */ + jpg_rect.x = 150; + jpg_rect.y = 25; + jpg_rect.width = 100; + jpg_rect.height = 100; + + /* target area to fill with the bounded recording source */ + bounded_rect.x = 25; + bounded_rect.y = 150; + bounded_rect.width = 100; + bounded_rect.height = 100; + + /* target area to fill with the unbounded recording source */ + unbounded_rect.x = 150; + unbounded_rect.y = 150; + unbounded_rect.width = 100; + unbounded_rect.height = 100; + + /* Draw the image and recording surface on each page. The sources + * are clipped starting with a small clip area on the first page + * and increasing to the source size on last page to ensure the + * embedded source is not clipped to the area used on the first + * page. + * + * The sources are created each time they are used to ensure + * CAIRO_MIME_TYPE_UNIQUE_ID is tested. + */ + for (i = 0; i < NUM_PAGES; i++) { + clip_margin = (NUM_PAGES - i - 1) * 5; + + status = create_image_surface (ctx, &source); + if (status) + return status; + draw_surface (cr, source, &img_rect, clip_margin); + cairo_surface_destroy (source); + + status = create_recording_surface_with_mime_jpg (ctx, &source); + if (status) + return status; + draw_surface (cr, source, &jpg_rect, clip_margin); + cairo_surface_destroy (source); + + status = create_recording_surface (ctx, &source, TRUE); + if (status) + return status; + draw_surface (cr, source, &bounded_rect, clip_margin); + cairo_surface_destroy (source); + + status = create_recording_surface (ctx, &source, FALSE); + if (status) + return status; + draw_surface (cr, source, &unbounded_rect, clip_margin); + cairo_surface_destroy (source); + + cairo_show_page (cr); + } + + cairo_destroy (cr); + + return CAIRO_TEST_SUCCESS; +} + +static cairo_test_status_t +check_file_size (cairo_test_context_t *ctx, const char *filename, long expected_size) +{ + FILE *f; + long size; + + f = fopen (filename, "rb"); + if (f == NULL) { + cairo_test_log (ctx, "Unable to open file %s\n", filename); + return CAIRO_TEST_FAILURE; + } + + fseek (f, 0, SEEK_END); + size = ftell (f); + fclose(f); + + if (labs(size - expected_size) > SIZE_TOLERANCE) { + cairo_test_log (ctx, + "mime-unique-id: File %s has size %ld. Expected size %ld +/- %ld." + " Check if surfaces are embedded once.\n", + filename, size, expected_size, (long)SIZE_TOLERANCE); + return CAIRO_TEST_FAILURE; + } + + return CAIRO_TEST_SUCCESS; +} + +static cairo_test_status_t +preamble (cairo_test_context_t *ctx) +{ + cairo_surface_t *surface; + cairo_status_t status; + char *filename; + cairo_test_status_t result = CAIRO_TEST_UNTESTED; + cairo_test_status_t test_status; + const char *path = cairo_test_mkdir (CAIRO_TEST_OUTPUT_DIR) ? CAIRO_TEST_OUTPUT_DIR : "."; + +#if CAIRO_HAS_PS_SURFACE + if (cairo_test_is_target_enabled (ctx, "ps2")) + { + xasprintf (&filename, "%s/%s.ps2.out.ps", path, BASENAME); + surface = cairo_ps_surface_create (filename, WIDTH, HEIGHT); + status = cairo_surface_status (surface); + if (status) { + cairo_test_log (ctx, "Failed to create ps surface for file %s: %s\n", + filename, cairo_status_to_string (status)); + test_status = CAIRO_TEST_FAILURE; + goto ps2_finish; + } + + cairo_ps_surface_restrict_to_level (surface, CAIRO_PS_LEVEL_2); + + test_status = draw_pages (ctx, surface); + cairo_surface_destroy (surface); + + if (test_status == CAIRO_TEST_SUCCESS) + test_status = check_file_size (ctx, filename, PS2_EXPECTED_SIZE); + + ps2_finish: + cairo_test_log (ctx, "TEST: %s TARGET: %s RESULT: %s\n", + ctx->test->name, + "ps2", + test_status ? "FAIL" : "PASS"); + + if (result == CAIRO_TEST_UNTESTED || test_status == CAIRO_TEST_FAILURE) + result = test_status; + + free (filename); + } + + if (cairo_test_is_target_enabled (ctx, "ps3")) + { + xasprintf (&filename, "%s/%s.ps3.out.ps", path, BASENAME); + surface = cairo_ps_surface_create (filename, WIDTH, HEIGHT); + status = cairo_surface_status (surface); + if (status) { + cairo_test_log (ctx, "Failed to create ps surface for file %s: %s\n", + filename, cairo_status_to_string (status)); + test_status = CAIRO_TEST_FAILURE; + goto ps3_finish; + } + + test_status = draw_pages (ctx, surface); + cairo_surface_destroy (surface); + + if (test_status == CAIRO_TEST_SUCCESS) + test_status = check_file_size (ctx, filename, PS3_EXPECTED_SIZE); + + ps3_finish: + cairo_test_log (ctx, "TEST: %s TARGET: %s RESULT: %s\n", + ctx->test->name, + "ps3", + test_status ? "FAIL" : "PASS"); + + if (result == CAIRO_TEST_UNTESTED || test_status == CAIRO_TEST_FAILURE) + result = test_status; + + free (filename); + } +#endif + +#if CAIRO_HAS_PDF_SURFACE + if (cairo_test_is_target_enabled (ctx, "pdf")) + { + xasprintf (&filename, "%s/%s.pdf.out.pdf", path, BASENAME); + surface = cairo_pdf_surface_create (filename, WIDTH, HEIGHT); + status = cairo_surface_status (surface); + if (status) { + cairo_test_log (ctx, "Failed to create pdf surface for file %s: %s\n", + filename, cairo_status_to_string (status)); + test_status = CAIRO_TEST_FAILURE; + goto pdf_finish; + } + + test_status = draw_pages (ctx, surface); + cairo_surface_destroy (surface); + + if (test_status == CAIRO_TEST_SUCCESS) + test_status = check_file_size (ctx, filename, PDF_EXPECTED_SIZE); + + + pdf_finish: + cairo_test_log (ctx, "TEST: %s TARGET: %s RESULT: %s\n", + ctx->test->name, + "pdf", + test_status ? "FAIL" : "PASS"); + + if (result == CAIRO_TEST_UNTESTED || test_status == CAIRO_TEST_FAILURE) + result = test_status; + + free (filename); + } +#endif + + return result; +} + +CAIRO_TEST (mime_unique_id, + "Check that paginated surfaces embed only one copy of surfaces with the same CAIRO_MIME_TYPE_UNIQUE_ID.", + "paginated", /* keywords */ + "target=vector", /* requirements */ + 0, 0, + preamble, NULL) diff -Nru cairo-1.14.6/test/pdf2png.c cairo-1.15.10/test/pdf2png.c --- cairo-1.14.6/test/pdf2png.c 2015-10-27 21:05:38.000000000 +0000 +++ cairo-1.15.10/test/pdf2png.c 2017-12-07 02:14:36.000000000 +0000 @@ -49,7 +49,9 @@ if (argc != 4) FAIL ("usage: pdf2png input_file.pdf output_file.png page"); +#if !GLIB_CHECK_VERSION(2,36,0) g_type_init (); +#endif if (g_path_is_absolute(filename)) { absolute = g_strdup (filename); diff -Nru cairo-1.14.6/test/pdf-mime-data.c cairo-1.15.10/test/pdf-mime-data.c --- cairo-1.14.6/test/pdf-mime-data.c 2015-10-29 00:02:07.000000000 +0000 +++ cairo-1.15.10/test/pdf-mime-data.c 2017-12-07 02:14:36.000000000 +0000 @@ -140,9 +140,9 @@ cairo_surface_destroy (image); if (status) { - free (filename); cairo_test_log (ctx, "Failed to create pdf surface for file %s: %s\n", filename, cairo_status_to_string (status)); + free (filename); return CAIRO_TEST_FAILURE; } diff -Nru cairo-1.14.6/test/pdf-tagged-text.c cairo-1.15.10/test/pdf-tagged-text.c --- cairo-1.14.6/test/pdf-tagged-text.c 1970-01-01 00:00:00.000000000 +0000 +++ cairo-1.15.10/test/pdf-tagged-text.c 2017-12-07 02:14:36.000000000 +0000 @@ -0,0 +1,409 @@ +/* + * Copyright © 2016 Adrian Johnson + * + * Permission is hereby granted, free of charge, to any person + * obtaining a copy of this software and associated documentation + * files (the "Software"), to deal in the Software without + * restriction, including without limitation the rights to use, copy, + * modify, merge, publish, distribute, sublicense, and/or sell copies + * of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS + * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN + * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + * + * Author: Adrian Johnson + */ + +#include "cairo-test.h" + +#include +#include +#include + +#include +#include + +/* This test checks PDF with + * - tagged text + * - hyperlinks + * - document outline + * - metadata + * - thumbnails + * - page labels + */ + +#define BASENAME "pdf-tagged-text.out" + +#define PAGE_WIDTH 595 +#define PAGE_HEIGHT 842 + +#define HEADING1_SIZE 16 +#define HEADING2_SIZE 14 +#define HEADING3_SIZE 12 +#define TEXT_SIZE 12 +#define HEADING_HEIGHT 50 +#define MARGIN 50 + +struct section { + int level; + const char *heading; + int num_paragraphs; +}; + +static const struct section contents[] = { + { 0, "Chapter 1", 1 }, + { 1, "Section 1.1", 4 }, + { 2, "Section 1.1.1", 3 }, + { 1, "Section 1.2", 2 }, + { 2, "Section 1.2.1", 4 }, + { 2, "Section 1.2.2", 4 }, + { 1, "Section 1.3", 2 }, + { 0, "Chapter 2", 1 }, + { 1, "Section 2.1", 4 }, + { 2, "Section 2.1.1", 3 }, + { 1, "Section 2.2", 2 }, + { 2, "Section 2.2.1", 4 }, + { 2, "Section 2.2.2", 4 }, + { 1, "Section 2.3", 2 }, + { 0, "Chapter 3", 1 }, + { 1, "Section 3.1", 4 }, + { 2, "Section 3.1.1", 3 }, + { 1, "Section 3.2", 2 }, + { 2, "Section 3.2.1", 4 }, + { 2, "Section 3.2.2", 4 }, + { 1, "Section 3.3", 2 }, + { 0, NULL } +}; + +static const char *ipsum_lorem = "Lorem ipsum dolor sit amet, consectetur adipiscing" + " elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua." + " Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi" + " ut aliquip ex ea commodo consequat. Duis aute irure dolor in" + " reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla" + " pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa" + " qui officia deserunt mollit anim id est laborum."; + +static const char *roman_numerals[] = { + "i", "ii", "iii", "iv", "v" +}; + +#define MAX_PARAGRAPH_LINES 20 + +static int paragraph_num_lines; +static char *paragraph_text[MAX_PARAGRAPH_LINES]; +static double paragraph_height; +static double line_height; +static double y_pos; +static int outline_parents[10]; +static int page_num; + +static void +layout_paragraph (cairo_t *cr) +{ + char *text, *begin, *end, *prev_end; + cairo_text_extents_t text_extents; + cairo_font_extents_t font_extents; + + cairo_select_font_face (cr, "Serif", CAIRO_FONT_SLANT_NORMAL, CAIRO_FONT_WEIGHT_NORMAL); + cairo_set_font_size(cr, TEXT_SIZE); + cairo_font_extents (cr, &font_extents); + line_height = font_extents.height; + paragraph_height = 0; + paragraph_num_lines = 0; + text = strdup (ipsum_lorem); + begin = text; + end = text; + prev_end = end; + while (*begin) { + end = strchr(end, ' '); + if (!end) { + paragraph_text[paragraph_num_lines++] = strdup (begin); + break; + } + *end = 0; + cairo_text_extents (cr, begin, &text_extents); + *end = ' '; + if (text_extents.width + 2*MARGIN > PAGE_WIDTH) { + int len = prev_end - begin; + char *s = malloc (len); + memcpy (s, begin, len); + s[len-1] = 0; + paragraph_text[paragraph_num_lines++] = s; + begin = prev_end + 1; + } + prev_end = end; + end++; + } + paragraph_height = line_height * (paragraph_num_lines + 1); + free (text); +} + +static void +draw_paragraph (cairo_t *cr) +{ + int i; + + cairo_select_font_face (cr, "Serif", CAIRO_FONT_SLANT_NORMAL, CAIRO_FONT_WEIGHT_NORMAL); + cairo_set_font_size(cr, TEXT_SIZE); + cairo_tag_begin (cr, "P", NULL); + for (i = 0; i < paragraph_num_lines; i++) { + cairo_move_to (cr, MARGIN, y_pos); + cairo_show_text (cr, paragraph_text[i]); + y_pos += line_height; + } + cairo_tag_end (cr, "P"); + y_pos += line_height; +} + +static void +draw_page_num (cairo_surface_t *surface, cairo_t *cr, const char *prefix, int num) +{ + char buf[100]; + + buf[0] = 0; + if (prefix) + strcat (buf, prefix); + + if (num) + sprintf (buf + strlen(buf), "%d", num); + + cairo_save (cr); + cairo_select_font_face (cr, "Sans", CAIRO_FONT_SLANT_NORMAL, CAIRO_FONT_WEIGHT_NORMAL); + cairo_set_font_size(cr, 12); + cairo_move_to (cr, PAGE_WIDTH/2, PAGE_HEIGHT - MARGIN); + cairo_show_text (cr, buf); + cairo_restore (cr); + cairo_pdf_surface_set_page_label (surface, buf); +} + +static void +draw_contents (cairo_surface_t *surface, cairo_t *cr, const struct section *section) +{ + char buf[100]; + + sprintf(buf, "dest='%s'", section->heading); + cairo_select_font_face (cr, "Sans", CAIRO_FONT_SLANT_NORMAL, CAIRO_FONT_WEIGHT_NORMAL); + switch (section->level) { + case 0: + cairo_set_font_size(cr, HEADING1_SIZE); + break; + case 1: + cairo_set_font_size(cr, HEADING2_SIZE); + break; + case 2: + cairo_set_font_size(cr, HEADING3_SIZE); + break; + } + + if (y_pos + HEADING_HEIGHT + MARGIN > PAGE_HEIGHT) { + cairo_show_page (cr); + draw_page_num (surface, cr, roman_numerals[page_num++], 0); + y_pos = MARGIN; + } + cairo_move_to (cr, MARGIN, y_pos); + cairo_save (cr); + cairo_set_source_rgb (cr, 0, 0, 1); + cairo_tag_begin (cr, "TOCI", NULL); + cairo_tag_begin (cr, "Reference", NULL); + cairo_tag_begin (cr, CAIRO_TAG_LINK, buf); + cairo_show_text (cr, section->heading); + cairo_tag_end (cr, CAIRO_TAG_LINK); + cairo_tag_end (cr, "Reference"); + cairo_tag_end (cr, "TOCI"); + cairo_restore (cr); + y_pos += HEADING_HEIGHT; +} + +static void +draw_section (cairo_surface_t *surface, cairo_t *cr, const struct section *section) +{ + int flags, i; + char buf[100]; + char buf2[100]; + + cairo_tag_begin (cr, "Sect", NULL); + sprintf(buf, "name='%s'", section->heading); + sprintf(buf2, "dest='%s'", section->heading); + cairo_select_font_face (cr, "Sans", CAIRO_FONT_SLANT_NORMAL, CAIRO_FONT_WEIGHT_BOLD); + if (section->level == 0) { + cairo_show_page (cr); + draw_page_num (surface, cr, NULL, page_num++); + cairo_set_font_size(cr, HEADING1_SIZE); + cairo_move_to (cr, MARGIN, MARGIN); + cairo_tag_begin (cr, "H1", NULL); + cairo_tag_begin (cr, CAIRO_TAG_DEST, buf); + cairo_show_text (cr, section->heading); + cairo_tag_end (cr, CAIRO_TAG_DEST); + cairo_tag_end (cr, "H1"); + y_pos = MARGIN + HEADING_HEIGHT; + flags = CAIRO_PDF_OUTLINE_FLAG_BOLD | CAIRO_PDF_OUTLINE_FLAG_OPEN; + outline_parents[0] = cairo_pdf_surface_add_outline (surface, + CAIRO_PDF_OUTLINE_ROOT, + section->heading, + buf2, + flags); + } else { + if (section->level == 1) { + cairo_set_font_size(cr, HEADING2_SIZE); + flags = 0; + } else { + cairo_set_font_size(cr, HEADING3_SIZE); + flags = CAIRO_PDF_OUTLINE_FLAG_ITALIC; + } + + if (y_pos + HEADING_HEIGHT + paragraph_height + MARGIN > PAGE_HEIGHT) { + cairo_show_page (cr); + draw_page_num (surface, cr, NULL, page_num++); + y_pos = MARGIN; + } + cairo_move_to (cr, MARGIN, y_pos); + if (section->level == 1) + cairo_tag_begin (cr, "H2", NULL); + else + cairo_tag_begin (cr, "H3", NULL); + cairo_tag_begin (cr, CAIRO_TAG_DEST, buf); + cairo_show_text (cr, section->heading); + cairo_tag_end (cr, CAIRO_TAG_DEST); + if (section->level == 1) + cairo_tag_end (cr, "H2"); + else + cairo_tag_end (cr, "H3"); + y_pos += HEADING_HEIGHT; + outline_parents[section->level] = cairo_pdf_surface_add_outline (surface, + outline_parents[section->level - 1], + section->heading, + buf2, + flags); + } + + for (i = 0; i < section->num_paragraphs; i++) { + if (y_pos + paragraph_height + MARGIN > PAGE_HEIGHT) { + cairo_show_page (cr); + draw_page_num (surface, cr, NULL, page_num++); + y_pos = MARGIN; + } + draw_paragraph (cr); + } + cairo_tag_end (cr, "Sect"); +} + +static void +draw_cover (cairo_surface_t *surface, cairo_t *cr) +{ + cairo_select_font_face (cr, "Sans", CAIRO_FONT_SLANT_NORMAL, CAIRO_FONT_WEIGHT_BOLD); + cairo_set_font_size(cr, 16); + cairo_move_to (cr, PAGE_WIDTH/3, PAGE_HEIGHT/2); + cairo_tag_begin (cr, "Span", NULL); + cairo_show_text (cr, "PDF Features Test"); + cairo_tag_end (cr, "Span"); + + draw_page_num (surface, cr, "cover", 0); +} + +static void +create_document (cairo_surface_t *surface, cairo_t *cr) +{ + layout_paragraph (cr); + + cairo_pdf_surface_set_thumbnail_size (surface, PAGE_WIDTH/10, PAGE_HEIGHT/10); + + cairo_pdf_surface_set_metadata (surface, CAIRO_PDF_METADATA_TITLE, "PDF Features Test"); + cairo_pdf_surface_set_metadata (surface, CAIRO_PDF_METADATA_AUTHOR, "cairo test suite"); + cairo_pdf_surface_set_metadata (surface, CAIRO_PDF_METADATA_SUBJECT, "cairo test"); + cairo_pdf_surface_set_metadata (surface, CAIRO_PDF_METADATA_KEYWORDS, + "tags, links, outline, page labels, metadata, thumbnails"); + cairo_pdf_surface_set_metadata (surface, CAIRO_PDF_METADATA_CREATOR, "pdf-features"); + cairo_pdf_surface_set_metadata (surface, CAIRO_PDF_METADATA_CREATE_DATE, "2016-01-01T12:34:56+10:30"); + cairo_pdf_surface_set_metadata (surface, CAIRO_PDF_METADATA_MOD_DATE, "2016-06-21T05:43:21Z"); + + cairo_tag_begin (cr, "Document", NULL); + + draw_cover (surface, cr); + cairo_pdf_surface_add_outline (surface, + CAIRO_PDF_OUTLINE_ROOT, + "Cover", "page=1", + CAIRO_PDF_OUTLINE_FLAG_BOLD); + cairo_show_page (cr); + + page_num = 0; + draw_page_num (surface, cr, roman_numerals[page_num++], 0); + y_pos = MARGIN; + + cairo_pdf_surface_add_outline (surface, + CAIRO_PDF_OUTLINE_ROOT, + "Contents", "dest='TOC'", + CAIRO_PDF_OUTLINE_FLAG_BOLD); + + cairo_tag_begin (cr, CAIRO_TAG_DEST, "name='TOC' internal"); + cairo_tag_begin (cr, "TOC", NULL); + const struct section *sect = contents; + while (sect->heading) { + draw_contents (surface, cr, sect); + sect++; + } + cairo_tag_end (cr, "TOC"); + cairo_tag_end (cr, CAIRO_TAG_DEST); + + page_num = 1; + sect = contents; + while (sect->heading) { + draw_section (surface, cr, sect); + sect++; + } + + cairo_tag_end (cr, "Document"); +} + +static cairo_test_status_t +preamble (cairo_test_context_t *ctx) +{ + cairo_surface_t *surface; + cairo_t *cr; + cairo_status_t status, status2; + char *filename; + const char *path = cairo_test_mkdir (CAIRO_TEST_OUTPUT_DIR) ? CAIRO_TEST_OUTPUT_DIR : "."; + + if (! cairo_test_is_target_enabled (ctx, "pdf")) + return CAIRO_TEST_UNTESTED; + + xasprintf (&filename, "%s/%s.pdf", path, BASENAME); + surface = cairo_pdf_surface_create (filename, PAGE_WIDTH, PAGE_HEIGHT); + + cr = cairo_create (surface); + create_document (surface, cr); + + status = cairo_status (cr); + cairo_destroy (cr); + cairo_surface_finish (surface); + status2 = cairo_surface_status (surface); + if (status != CAIRO_STATUS_SUCCESS) + status = status2; + + cairo_surface_destroy (surface); + if (status) { + cairo_test_log (ctx, "Failed to create pdf surface for file %s: %s\n", + filename, cairo_status_to_string (status)); + return CAIRO_TEST_FAILURE; + } + + free (filename); + + return CAIRO_TEST_SUCCESS; +} + +CAIRO_TEST (pdf_tagged_text, + "Check tagged text, hyperlinks and PDF document features", + "pdf", /* keywords */ + NULL, /* requirements */ + 0, 0, + preamble, NULL) diff -Nru cairo-1.14.6/test/pdiff/Makefile.in cairo-1.15.10/test/pdiff/Makefile.in --- cairo-1.14.6/test/pdiff/Makefile.in 2015-12-09 20:41:44.000000000 +0000 +++ cairo-1.15.10/test/pdiff/Makefile.in 2017-12-11 21:03:11.000000000 +0000 @@ -1,7 +1,7 @@ -# Makefile.in generated by automake 1.14.1 from Makefile.am. +# Makefile.in generated by automake 1.15 from Makefile.am. # @configure_input@ -# Copyright (C) 1994-2013 Free Software Foundation, Inc. +# Copyright (C) 1994-2014 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -15,7 +15,17 @@ @SET_MAKE@ VPATH = @srcdir@ -am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' +am__is_gnu_make = { \ + if test -z '$(MAKELEVEL)'; then \ + false; \ + elif test -n '$(MAKE_HOST)'; then \ + true; \ + elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ + true; \ + else \ + false; \ + fi; \ +} am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ @@ -78,9 +88,6 @@ POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ -DIST_COMMON = $(top_srcdir)/build/Makefile.am.common \ - $(srcdir)/Makefile.in $(srcdir)/Makefile.am \ - $(top_srcdir)/build/depcomp $(top_srcdir)/build/test-driver EXTRA_PROGRAMS = perceptualdiff$(EXEEXT) TESTS = check_PROGRAMS = @@ -109,6 +116,7 @@ $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) +DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = @@ -388,6 +396,9 @@ *) \ b='$*';; \ esac +am__DIST_COMMON = $(srcdir)/Makefile.in \ + $(top_srcdir)/build/Makefile.am.common \ + $(top_srcdir)/build/depcomp $(top_srcdir)/build/test-driver DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ @@ -472,6 +483,7 @@ LTLIBOBJS = @LTLIBOBJS@ LTP = @LTP@ LTP_GENHTML = @LTP_GENHTML@ +LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MKDIR_P = @MKDIR_P@ @@ -548,6 +560,8 @@ gl_LIBS = @gl_LIBS@ glesv2_CFLAGS = @glesv2_CFLAGS@ glesv2_LIBS = @glesv2_LIBS@ +glesv3_CFLAGS = @glesv3_CFLAGS@ +glesv3_LIBS = @glesv3_LIBS@ glib_CFLAGS = @glib_CFLAGS@ glib_LIBS = @glib_LIBS@ gtk_CFLAGS = @gtk_CFLAGS@ @@ -585,6 +599,7 @@ qt_LIBS = @qt_LIBS@ real_pthread_CFLAGS = @real_pthread_CFLAGS@ real_pthread_LIBS = @real_pthread_LIBS@ +runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ shm_LIBS = @shm_LIBS@ @@ -643,7 +658,6 @@ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign test/pdiff/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --foreign test/pdiff/Makefile -.PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ @@ -652,7 +666,7 @@ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; -$(top_srcdir)/build/Makefile.am.common: +$(top_srcdir)/build/Makefile.am.common $(am__empty): $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh @@ -810,7 +824,7 @@ if test -n "$$am__remaking_logs"; then \ echo "fatal: making $(TEST_SUITE_LOG): possible infinite" \ "recursion detected" >&2; \ - else \ + elif test -n "$$redo_logs"; then \ am__remaking_logs=yes $(MAKE) $(AM_MAKEFLAGS) $$redo_logs; \ fi; \ if $(am__make_dryrun); then :; else \ @@ -1099,6 +1113,8 @@ pdf pdf-am ps ps-am recheck tags tags-am uninstall \ uninstall-am +.PRECIOUS: Makefile + # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. diff -Nru cairo-1.14.6/test/png.c cairo-1.15.10/test/png.c --- cairo-1.14.6/test/png.c 2015-10-27 21:05:38.000000000 +0000 +++ cairo-1.15.10/test/png.c 2017-12-07 02:14:36.000000000 +0000 @@ -136,15 +136,16 @@ } surface1 = cairo_image_surface_create_from_png (filename); status = cairo_surface_status (surface1); - free (filename); if (status) { cairo_test_log (ctx, "Error reading '%s': %s\n", filename, cairo_status_to_string (status)); + free (filename); cairo_surface_destroy (surface1); cairo_surface_destroy (surface0); return cairo_test_status_from_status (ctx, status); } + free (filename); if (! image_surface_equals (surface0, surface1)) { cairo_test_log (ctx, "Error surface mismatch.\n"); diff -Nru cairo-1.14.6/test/pthread-show-text.c cairo-1.15.10/test/pthread-show-text.c --- cairo-1.14.6/test/pthread-show-text.c 2015-10-27 21:04:30.000000000 +0000 +++ cairo-1.15.10/test/pthread-show-text.c 2017-12-07 02:14:36.000000000 +0000 @@ -63,7 +63,7 @@ cairo_paint (cr); cairo_set_source_rgb (cr, 0, 0, 0); - cairo_select_font_face (cr, "serif", + cairo_select_font_face (cr, CAIRO_TEST_FONT_FAMILY " Serif", CAIRO_FONT_SLANT_NORMAL, CAIRO_FONT_WEIGHT_NORMAL); cairo_set_font_size (cr, NUM_ITERATIONS); @@ -74,7 +74,7 @@ for (i = 0; i < NUM_ITERATIONS; i++) { char buf[2]; - cairo_select_font_face (cr, "serif", + cairo_select_font_face (cr, CAIRO_TEST_FONT_FAMILY " Serif", CAIRO_FONT_SLANT_NORMAL, CAIRO_FONT_WEIGHT_NORMAL); cairo_set_font_size (cr, i); diff -Nru cairo-1.14.6/test/README cairo-1.15.10/test/README --- cairo-1.14.6/test/README 2015-10-27 21:05:38.000000000 +0000 +++ cairo-1.15.10/test/README 2017-12-07 02:14:36.000000000 +0000 @@ -21,9 +21,10 @@ any release. See below for hints and rules governing the use of the suite. The test suite is built as a single binary, which allows you to choose -individual or categories of tests to run. For example, if you want to -run all text related tests you can use: - ./cairo-test-suite text +individual or categories of tests to run. For example, to run specific tests: + ./cairo-test-suite record-neg-extents-unbounded record-neg-extents-bounded +Or if you want to run all paint.* related tests you can use: + ./cairo-test-suite paint Or if you want to check the current status of known failures: ./cairo-test-suite XFAIL Or to run a subset of tests, use the -k option to run only the tests @@ -109,10 +110,10 @@ * Your system must have a copy of the DejaVu font, the sha1sum of the version used are listed in [...]. These are - "DejaVu Sans" (DejaVuSans.ttf) [1cd336329f45f241002ded61893d91e3acd04436]; - "DejaVu Sans Mono" (DejaVuSansMono.ttf) [0458c0f0fb57f3eb8ced62f26fe7c5ed4e6a9a68]; - "DejaVu Serif" (DejaVuSerif.ttf) [93502d0d0445d1fe1c9f51e51b3e0169266346ce]; - [the DejaVu fonts can be installed from the ttf-dejavu 2.33-2 Debian package] + "DejaVu Sans" (DejaVuSans.ttf) [e9831ee4fd2e1d0ac54508a548c6a449545eba3f]; + "DejaVu Sans Mono" (DejaVuSansMono.ttf) [25d854fbd0450a372615a26a8ef9a1024bd3efc6]; + "DejaVu Serif" (DejaVuSerif.ttf) [78a81850dc7883969042cf3d6dfd18eea7e43e2f]; + [the DejaVu fonts can be installed from the fonts-dejavu-core 2.34-1 Debian package] and also "Nimbus Sans L" (n019003l.pfb) [which can be found in the gsfonts Debian package]. @@ -130,7 +131,7 @@ the fixes you will need to avoid false negatives from the test suite. - * To test the ps backend, you will need ghostscript version 9.04. + * To test the ps backend, you will need ghostscript version 9.06. * Testing the xlib backend is problematic since many X server drivers have bugs that are exercised by the test suite. (Or, if @@ -278,42 +279,4 @@ Here are the reported poppler bugs and the tests they affect: -Poppler doesn't correctly handle gradients with transparency -https://bugs.freedesktop.org/show_bug.cgi?id=12144 --------------------------------------------------- -fill-alpha-pattern -gradient-alpha -gradient-constant-alpha -linear-gradient -linear-gradient-reflect -radial-gradient -trap-clip - -Poppler should paint images with CAIRO_EXTEND_PAD -https://bugs.freedesktop.org/show_bug.cgi?id=14578 --------------------------------------------------- -paint-source-alpha -paint-with-alpha -rotate-image-surface-paint -scale-source-surface-paint - -Incorrect clipping of group object (regression?) -https://bugs.freedesktop.org/show_bug.cgi?id=14580 --------------------------------------------------- -push-group - -spurious horizontal stripes in color gradients -https://bugs.freedesktop.org/show_bug.cgi?id=10942 --------------------------------------------------- -smask -smask-fill -smask-image-mask -smask-mask -smask-paint -smask-stroke -smask-text - -Ghostscript does not correctly render small miters -http://bugs.ghostscript.com/show_bug.cgi?id=690098 --------------------------------------------------- -miter-precision +[Newest was closed in 2009.] diff -Nru cairo-1.14.6/test/record.c cairo-1.15.10/test/record.c --- cairo-1.14.6/test/record.c 2015-10-27 21:05:38.000000000 +0000 +++ cairo-1.15.10/test/record.c 2017-12-07 02:14:36.000000000 +0000 @@ -46,6 +46,8 @@ 0xff00ff00, 0xff00ff00, 0xff0000ff, 0xff0000ff }; +static const char *unique_id = "data"; + static const char *png_filename = "romedalen.png"; static cairo_t * @@ -70,6 +72,9 @@ surface = cairo_image_surface_create_for_data ((unsigned char *) data, CAIRO_FORMAT_RGB24, 4, 4, 16); + cairo_surface_set_mime_data (surface, CAIRO_MIME_TYPE_UNIQUE_ID, + (unsigned char *)unique_id, strlen(unique_id), + NULL, NULL); cairo_test_paint_checkered (cr); @@ -106,6 +111,9 @@ surface = cairo_image_surface_create_for_data ((unsigned char *) data, CAIRO_FORMAT_RGB24, 4, 4, 16); + cairo_surface_set_mime_data (surface, CAIRO_MIME_TYPE_UNIQUE_ID, + (unsigned char *)unique_id, strlen(unique_id), + NULL, NULL); cairo_test_paint_checkered (cr); @@ -131,6 +139,9 @@ surface = cairo_image_surface_create_for_data ((unsigned char *) data, CAIRO_FORMAT_RGB24, 4, 4, 16); + cairo_surface_set_mime_data (surface, CAIRO_MIME_TYPE_UNIQUE_ID, + (unsigned char *)unique_id, strlen(unique_id), + NULL, NULL); cairo_test_paint_checkered (cr); diff -Nru cairo-1.14.6/test/recording-ink-extents.c cairo-1.15.10/test/recording-ink-extents.c --- cairo-1.14.6/test/recording-ink-extents.c 1970-01-01 00:00:00.000000000 +0000 +++ cairo-1.15.10/test/recording-ink-extents.c 2017-12-07 02:14:36.000000000 +0000 @@ -0,0 +1,172 @@ +/* + * Copyright © 2016 Adrian Johnson + * + * Permission is hereby granted, free of charge, to any person + * obtaining a copy of this software and associated documentation + * files (the "Software"), to deal in the Software without + * restriction, including without limitation the rights to use, copy, + * modify, merge, publish, distribute, sublicense, and/or sell copies + * of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS + * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN + * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + * + * Authors: + * Adrian Johnson + */ + +#include "cairo-test.h" + +/* Check cairo_recording_surface_ink_extents() returns correct extents. */ + + +static cairo_test_status_t +check_extents (cairo_test_context_t *cr, + cairo_surface_t *recording_surface, + const char * func_name, + double expected_x, double expected_y, double expected_w, double expected_h) +{ + double x, y, w, h; + cairo_recording_surface_ink_extents (recording_surface, &x, &y, &w, &h); + if (x != expected_x || + y != expected_y || + w != expected_w || + h != expected_h) + { + cairo_test_log (cr, + "%s: x: %f, y: %f, w: %f, h: %f\n" + " expected: x: %f, y: %f, w: %f, h: %f\n", + func_name, + x, y, w, h, + expected_x, expected_y, + expected_w, expected_h); + return CAIRO_TEST_ERROR; + } + return CAIRO_TEST_SUCCESS; +} + +static cairo_test_status_t +unbounded_fill (cairo_test_context_t *test_cr) +{ + cairo_test_status_t status; + cairo_surface_t *surface; + cairo_t *cr; + + surface = cairo_recording_surface_create (CAIRO_CONTENT_COLOR_ALPHA, NULL); + cr = cairo_create (surface); + + cairo_rectangle (cr, -300, -150, 900, 600); + cairo_fill (cr); + + cairo_destroy(cr); + + status = check_extents (test_cr, surface, __func__, + -300, -150, 900, 600); + cairo_surface_destroy (surface); + return status; +} + +static cairo_test_status_t +bounded_fill (cairo_test_context_t *test_cr) +{ + cairo_test_status_t status; + cairo_surface_t *surface; + cairo_t *cr; + cairo_rectangle_t extents = { -150, -100, 300, 200 }; + + surface = cairo_recording_surface_create (CAIRO_CONTENT_COLOR_ALPHA, &extents); + cr = cairo_create (surface); + + cairo_rectangle (cr, -300, -300, 650, 600); + cairo_fill (cr); + + cairo_destroy(cr); + + status = check_extents (test_cr, surface, __func__, + -150, -100, 300, 200); + cairo_surface_destroy (surface); + return status; +} + +static cairo_test_status_t +unbounded_paint (cairo_test_context_t *test_cr) +{ + cairo_test_status_t status; + cairo_surface_t *surface; + cairo_t *cr; + + surface = cairo_recording_surface_create (CAIRO_CONTENT_COLOR_ALPHA, NULL); + cr = cairo_create (surface); + + cairo_paint (cr); + + cairo_destroy(cr); + + status = check_extents (test_cr, surface, __func__, + -(1 << 23), -(1 << 23), -1, -1); + cairo_surface_destroy (surface); + return status; +} + +static cairo_test_status_t +bounded_paint (cairo_test_context_t *test_cr) +{ + cairo_test_status_t status; + cairo_surface_t *surface; + cairo_t *cr; + cairo_rectangle_t extents = { -150, -100, 300, 200 }; + + surface = cairo_recording_surface_create (CAIRO_CONTENT_COLOR_ALPHA, &extents); + cr = cairo_create (surface); + + cairo_paint (cr); + + cairo_destroy(cr); + + status = check_extents (test_cr, surface, __func__, + -150, -100, 300, 200); + cairo_surface_destroy (surface); + return status; +} + +static cairo_test_status_t +preamble (cairo_test_context_t *cr) +{ + cairo_test_status_t status; + + status = unbounded_fill (cr); + if (status != CAIRO_TEST_SUCCESS) + return status; + + status = bounded_fill (cr); + if (status != CAIRO_TEST_SUCCESS) + return status; + + status = unbounded_paint (cr); + if (status != CAIRO_TEST_SUCCESS) + return status; + + status = bounded_paint (cr); + if (status != CAIRO_TEST_SUCCESS) + return status; + + return CAIRO_TEST_SUCCESS; +} + + +CAIRO_TEST (recording_ink_extents, + "Test cairo_recording_surface_ink_extents()", + "api,recording,extents", /* keywords */ + NULL, /* requirements */ + 0, 0, + preamble, NULL) diff -Nru cairo-1.14.6/test/record-neg-extents.c cairo-1.15.10/test/record-neg-extents.c --- cairo-1.14.6/test/record-neg-extents.c 1970-01-01 00:00:00.000000000 +0000 +++ cairo-1.15.10/test/record-neg-extents.c 2017-12-07 02:14:36.000000000 +0000 @@ -0,0 +1,217 @@ +/* + * Copyright © 2016 Adrian Johnson + * + * Permission is hereby granted, free of charge, to any person + * obtaining a copy of this software and associated documentation + * files (the "Software"), to deal in the Software without + * restriction, including without limitation the rights to use, copy, + * modify, merge, publish, distribute, sublicense, and/or sell copies + * of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS + * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN + * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + * + * Authors: + * Adrian Johnson + */ + +#include "cairo-test.h" +#include +#include + +#define PAT_SIZE 64 +#define PAD (PAT_SIZE/8) +#define WIDTH (PAT_SIZE*4 + PAD*5) +#define HEIGHT (PAT_SIZE + PAD*2) + +/* Test case based on bug 89232 - painting a recording surface to a pdf/ps surface + * omits objects on the recording surface with negative coordinates even though + * the pattern matrix has transformed the objects to within the page extents. + * The bug is a result of pdf/ps assuming the surface extents are always + * (0,0) to (page_width, page_height). + * + * Each test has four cases of painting a recording pattern where: + * 1) recording surface origin is transformed to the center of the pattern + * 2) same as 1) but also scaled up 10x + * 3) same as 1) but also scaled down 10x + * 4) same as 1) but also rotated 45 deg + */ + + +static void +transform_extents(cairo_rectangle_t *extents, cairo_matrix_t *mat) +{ + double x1, y1, x2, y2, x, y; + +#define UPDATE_BBOX \ + x1 = x < x1 ? x : x1; \ + y1 = y < y1 ? y : y1; \ + x2 = x > x2 ? x : x2; \ + y2 = y > y2 ? y : y2; + + x = extents->x; + y = extents->y; + cairo_matrix_transform_point (mat, &x, &y); + x1 = x2 = x; + y1 = y2 = y; + + x = extents->x + extents->width; + y = extents->y; + cairo_matrix_transform_point (mat, &x, &y); + UPDATE_BBOX; + + x = extents->x; + y = extents->y + extents->height; + cairo_matrix_transform_point (mat, &x, &y); + UPDATE_BBOX; + + x = extents->x + extents->width; + y = extents->y + extents->height; + cairo_matrix_transform_point (mat, &x, &y); + UPDATE_BBOX; + + extents->x = x1; + extents->y = y1; + extents->width = x2 - extents->x; + extents->height = y2 - extents->y; + +#undef UPDATE_BBOX +} + +static cairo_pattern_t * +create_pattern (cairo_matrix_t *mat, cairo_bool_t bounded) +{ + cairo_surface_t *surf; + cairo_pattern_t *pat; + cairo_t *cr; + int border; + int square; + + if (bounded) { + cairo_rectangle_t extents = { 0, 0, PAT_SIZE, PAT_SIZE }; + transform_extents (&extents, mat); + surf = cairo_recording_surface_create (CAIRO_CONTENT_COLOR_ALPHA, &extents); + } else { + surf = cairo_recording_surface_create (CAIRO_CONTENT_COLOR_ALPHA, NULL); + } + + cr = cairo_create (surf); + cairo_transform (cr, mat); + + border = PAT_SIZE/8; + square = (PAT_SIZE - 2*border)/2; + + cairo_rectangle (cr, 0, 0, PAT_SIZE, PAT_SIZE); + cairo_clip (cr); + cairo_set_source_rgb (cr, 1, 0, 0); + cairo_paint (cr); + + cairo_translate (cr, border, border); + cairo_rectangle (cr, 0, 0, square, square); + cairo_set_source_rgb (cr, 0, 1, 0); + cairo_fill (cr); + + cairo_translate (cr, square, 0); + cairo_rectangle (cr, 0, 0, square, square); + cairo_set_source_rgb (cr, 0, 0, 1); + cairo_fill (cr); + + cairo_translate (cr, 0, square); + cairo_rectangle (cr, 0, 0, square, square); + cairo_set_source_rgb (cr, 0, 1, 1); + cairo_fill (cr); + + cairo_translate (cr, -square, 0); + cairo_rectangle (cr, 0, 0, square, square); + cairo_set_source_rgb (cr, 1, 1, 0); + cairo_fill (cr); + + cairo_destroy (cr); + + pat = cairo_pattern_create_for_surface (surf); + cairo_surface_destroy (surf); + cairo_pattern_set_matrix (pat, mat); + + return pat; +} + +static cairo_test_status_t +record_extents (cairo_t *cr, int width, int height, cairo_bool_t bounded) +{ + cairo_pattern_t *pat; + cairo_matrix_t mat; + + /* record surface extents (-PAT_SIZE/2, -PAT_SIZE/2) to (PAT_SIZE/2, PAT_SIZE/2) */ + cairo_translate (cr, PAD, PAD); + cairo_matrix_init_translate (&mat, -PAT_SIZE/2, -PAT_SIZE/2); + pat = create_pattern (&mat, bounded); + cairo_set_source (cr, pat); + cairo_pattern_destroy (pat); + cairo_paint (cr); + + /* record surface extents (-10*PAT_SIZE/2, -10*PAT_SIZE/2) to (10*PAT_SIZE/2, 10*PAT_SIZE/2) */ + cairo_translate (cr, PAT_SIZE + PAD, 0); + cairo_matrix_init_translate (&mat, -10.0*PAT_SIZE/2, -10.0*PAT_SIZE/2); + cairo_matrix_scale (&mat, 10, 10); + pat = create_pattern (&mat, bounded); + cairo_set_source (cr, pat); + cairo_pattern_destroy (pat); + cairo_paint (cr); + + /* record surface extents (-0.1*PAT_SIZE/2, -0.1*PAT_SIZE/2) to (0.1*PAT_SIZE/2, 0.1*PAT_SIZE/2) */ + cairo_translate (cr, PAT_SIZE + PAD, 0); + cairo_matrix_init_translate (&mat, -0.1*PAT_SIZE/2, -0.1*PAT_SIZE/2); + cairo_matrix_scale (&mat, 0.1, 0.1); + pat = create_pattern (&mat, bounded); + cairo_set_source (cr, pat); + cairo_pattern_destroy (pat); + cairo_paint (cr); + + /* record surface centered on (0,0) and rotated 45 deg */ + cairo_translate (cr, PAT_SIZE + PAD, 0); + cairo_matrix_init_translate (&mat, -PAT_SIZE/sqrt(2), -PAT_SIZE/sqrt(2)); + cairo_matrix_rotate (&mat, M_PI/4.0); + cairo_matrix_translate (&mat, PAT_SIZE/2, -PAT_SIZE/2); + pat = create_pattern (&mat, bounded); + cairo_set_source (cr, pat); + cairo_pattern_destroy (pat); + cairo_paint (cr); + + return CAIRO_TEST_SUCCESS; +} + +static cairo_test_status_t +record_neg_extents_bounded (cairo_t *cr, int width, int height) +{ + return record_extents(cr, width, height, TRUE); +} + +static cairo_test_status_t +record_neg_extents_unbounded (cairo_t *cr, int width, int height) +{ + return record_extents(cr, width, height, FALSE); +} + + +CAIRO_TEST (record_neg_extents_unbounded, + "Paint unbounded recording pattern with untransformed extents outside of target extents", + "record,transform,pattern", /* keywords */ + NULL, /* requirements */ + WIDTH, HEIGHT, + NULL, record_neg_extents_unbounded) +CAIRO_TEST (record_neg_extents_bounded, + "Paint bounded recording pattern with untransformed extents outside of target extents", + "record,transform,pattern", /* keywords */ + NULL, /* requirements */ + WIDTH, HEIGHT, + NULL, record_neg_extents_bounded) diff -Nru cairo-1.14.6/test/record-replay-extend.c cairo-1.15.10/test/record-replay-extend.c --- cairo-1.14.6/test/record-replay-extend.c 1970-01-01 00:00:00.000000000 +0000 +++ cairo-1.15.10/test/record-replay-extend.c 2017-12-07 02:14:36.000000000 +0000 @@ -0,0 +1,227 @@ +/* + * Copyright © 2016 Adrian Johnson + * + * Permission is hereby granted, free of charge, to any person + * obtaining a copy of this software and associated documentation + * files (the "Software"), to deal in the Software without + * restriction, including without limitation the rights to use, copy, + * modify, merge, publish, distribute, sublicense, and/or sell copies + * of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS + * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN + * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + * + * Authors: + * Adrian Johnson + */ + +#include "cairo-test.h" +#include +#include + +#define PAT_SIZE 32 +#define REPLAY_SIZE (PAT_SIZE*4) +#define PAD 10 +#define WIDTH (REPLAY_SIZE*4 + PAD*5) +#define HEIGHT (REPLAY_SIZE + PAD*2) + +/* Test replaying a recording surface pattern for each type of extend. */ + +static void +transform_extents(cairo_rectangle_t *extents, cairo_matrix_t *mat) +{ + double x1, y1, x2, y2, x, y; + +#define UPDATE_BBOX \ + x1 = x < x1 ? x : x1; \ + y1 = y < y1 ? y : y1; \ + x2 = x > x2 ? x : x2; \ + y2 = y > y2 ? y : y2; + + x = extents->x; + y = extents->y; + cairo_matrix_transform_point (mat, &x, &y); + x1 = x2 = x; + y1 = y2 = y; + + x = extents->x + extents->width; + y = extents->y; + cairo_matrix_transform_point (mat, &x, &y); + UPDATE_BBOX; + + x = extents->x; + y = extents->y + extents->height; + cairo_matrix_transform_point (mat, &x, &y); + UPDATE_BBOX; + + x = extents->x + extents->width; + y = extents->y + extents->height; + cairo_matrix_transform_point (mat, &x, &y); + UPDATE_BBOX; + + extents->x = x1; + extents->y = y1; + extents->width = x2 - extents->x; + extents->height = y2 - extents->y; + +#undef UPDATE_BBOX +} + +static cairo_pattern_t * +create_pattern (cairo_matrix_t *mat, cairo_extend_t extend) +{ + cairo_surface_t *surf; + cairo_pattern_t *pat; + cairo_t *cr; + cairo_rectangle_t extents = { 0, 0, PAT_SIZE, PAT_SIZE }; + + transform_extents (&extents, mat); + surf = cairo_recording_surface_create (CAIRO_CONTENT_COLOR_ALPHA, &extents); + + cr = cairo_create (surf); + cairo_transform (cr, mat); + + cairo_rectangle (cr, 0, 0, PAT_SIZE/2, PAT_SIZE/2); + cairo_set_source_rgb (cr, 1, 0, 0); + cairo_fill (cr); + + cairo_translate (cr, PAT_SIZE/2, 0); + cairo_rectangle (cr, 0, 0, PAT_SIZE/2, PAT_SIZE/2); + cairo_set_source_rgb (cr, 0, 1, 0); + cairo_fill (cr); + + cairo_translate (cr, 0, PAT_SIZE/2); + cairo_rectangle (cr, 0, 0, PAT_SIZE/2, PAT_SIZE/2); + cairo_set_source_rgb (cr, 0, 0, 1); + cairo_fill (cr); + + cairo_translate (cr, -PAT_SIZE/2, 0); + cairo_rectangle (cr, 0, 0, PAT_SIZE/2, PAT_SIZE/2); + cairo_set_source_rgb (cr, 1, 1, 0); + cairo_fill (cr); + + cairo_destroy (cr); + + pat = cairo_pattern_create_for_surface (surf); + cairo_surface_destroy (surf); + cairo_pattern_set_matrix (pat, mat); + cairo_pattern_set_extend (pat, extend); + cairo_pattern_set_filter (pat, CAIRO_FILTER_NEAREST); + + return pat; +} + +static cairo_test_status_t +record_replay_extend (cairo_t *cr, int width, int height, cairo_extend_t extend) +{ + cairo_pattern_t *pat; + cairo_matrix_t mat; + + /* record surface extents (-PAT_SIZE/2, -PAT_SIZE/2) to (PAT_SIZE/2, PAT_SIZE/2) */ + cairo_translate (cr, PAD, PAD); + cairo_matrix_init_translate (&mat, -PAT_SIZE/2, -PAT_SIZE/2); + pat = create_pattern (&mat, extend); + + /* test repeating patterns when the source is outside of the target clip */ + if (extend == CAIRO_EXTEND_REPEAT || extend == CAIRO_EXTEND_REFLECT) { + cairo_matrix_init_translate (&mat, 3*PAT_SIZE/2, 3*PAT_SIZE/2); + cairo_pattern_set_matrix (pat, &mat); + } + + cairo_set_source (cr, pat); + cairo_pattern_destroy (pat); + cairo_rectangle (cr, 0, 0, REPLAY_SIZE, REPLAY_SIZE); + cairo_fill (cr); + + /* record surface extents (-2*PAT_SIZE/2, -2*PAT_SIZE/2) to (2*PAT_SIZE/2, 2*PAT_SIZE/2) */ + cairo_translate (cr, REPLAY_SIZE + PAD, 0); + cairo_matrix_init_translate (&mat, -2.0*PAT_SIZE/2, -2.0*PAT_SIZE/2); + cairo_matrix_scale (&mat, 2, 2); + pat = create_pattern (&mat, extend); + cairo_set_source (cr, pat); + cairo_pattern_destroy (pat); + cairo_rectangle (cr, 0, 0, REPLAY_SIZE, REPLAY_SIZE); + cairo_fill (cr); + + /* record surface extents (-0.5*PAT_SIZE/2, -0.5*PAT_SIZE/2) to (0.5*PAT_SIZE/2, 0.5*PAT_SIZE/2) */ + cairo_translate (cr, REPLAY_SIZE + PAD, 0); + cairo_matrix_init_translate (&mat, -0.5*PAT_SIZE/2, -0.5*PAT_SIZE/2); + cairo_matrix_scale (&mat, 0.5, 0.5); + pat = create_pattern (&mat, extend); + cairo_set_source (cr, pat); + cairo_pattern_destroy (pat); + cairo_rectangle (cr, 0, 0, REPLAY_SIZE, REPLAY_SIZE); + cairo_fill (cr); + + /* record surface centered on (0,0) and rotated 45 deg */ + cairo_translate (cr, REPLAY_SIZE + PAD, 0); + cairo_matrix_init_translate (&mat, -PAT_SIZE/sqrt(2), -PAT_SIZE/sqrt(2)); + cairo_matrix_rotate (&mat, M_PI/4.0); + cairo_matrix_translate (&mat, PAT_SIZE/2, -PAT_SIZE/2); + pat = create_pattern (&mat, extend); + cairo_set_source (cr, pat); + cairo_pattern_destroy (pat); + cairo_rectangle (cr, 0, 0, REPLAY_SIZE, REPLAY_SIZE); + cairo_fill (cr); + + return CAIRO_TEST_SUCCESS; +} + +static cairo_test_status_t +record_replay_extend_none (cairo_t *cr, int width, int height) +{ + return record_replay_extend (cr, width, height, CAIRO_EXTEND_NONE); +} + +static cairo_test_status_t +record_replay_extend_repeat (cairo_t *cr, int width, int height) +{ + return record_replay_extend (cr, width, height, CAIRO_EXTEND_REPEAT); +} + +static cairo_test_status_t +record_replay_extend_reflect (cairo_t *cr, int width, int height) +{ + return record_replay_extend (cr, width, height, CAIRO_EXTEND_REFLECT); +} + +static cairo_test_status_t +record_replay_extend_pad (cairo_t *cr, int width, int height) +{ + return record_replay_extend (cr, width, height, CAIRO_EXTEND_PAD); +} + +CAIRO_TEST (record_replay_extend_none, + "Paint recording pattern with CAIRO_EXTEND_NONE", + "record,pattern,extend", /* keywords */ + NULL, /* requirements */ + WIDTH, HEIGHT, + NULL, record_replay_extend_none) +CAIRO_TEST (record_replay_extend_repeat, + "Paint recording pattern with CAIRO_EXTEND_REPEAT", + "record,pattern,extend", /* keywords */ + NULL, /* requirements */ + WIDTH, HEIGHT, + NULL, record_replay_extend_repeat) +CAIRO_TEST (record_replay_extend_reflect, + "Paint recording pattern with CAIRO_EXTEND_REFLECT", + "record,pattern,extend", /* keywords */ + NULL, /* requirements */ + WIDTH, HEIGHT, + NULL, record_replay_extend_reflect) +CAIRO_TEST (record_replay_extend_pad, + "Paint recording pattern with CAIRO_EXTEND_PAD", + "record,pattern,extend", /* keywords */ + NULL, /* requirements */ + WIDTH, HEIGHT, + NULL, record_replay_extend_pad) Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/a1-clip-fill-rule.quartz.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/a1-clip-fill-rule.quartz.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/a1-line-width.quartz.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/a1-line-width.quartz.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/a1-rectilinear-grid.quartz.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/a1-rectilinear-grid.quartz.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/a1-sample.quartz.xfail.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/a1-sample.quartz.xfail.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/a1-tiger.quartz.xfail.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/a1-tiger.quartz.xfail.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/arc-direction.pdf.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/arc-direction.pdf.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/arc-direction.quartz.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/arc-direction.quartz.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/arc-direction.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/arc-direction.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/arc-looping-dash.pdf.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/arc-looping-dash.pdf.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/arc-looping-dash.quartz.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/arc-looping-dash.quartz.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/arc-looping-dash.quartz.xfail.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/arc-looping-dash.quartz.xfail.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/big-empty-box.ps.rgb24.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/big-empty-box.ps.rgb24.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/big-empty-triangle.ps.rgb24.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/big-empty-triangle.ps.rgb24.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/big-little-box.ps.rgb24.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/big-little-box.ps.rgb24.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/big-little-triangle.quartz.rgb24.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/big-little-triangle.quartz.rgb24.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/bitmap-font.ps.rgb24.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/bitmap-font.ps.rgb24.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/bug-51910.pdf.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/bug-51910.pdf.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/bug-51910.ps.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/bug-51910.ps.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/bug-51910.quartz.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/bug-51910.quartz.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/bug-84115.pdf.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/bug-84115.pdf.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/bug-84115.ps.arg32.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/bug-84115.ps.arg32.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/bug-84115.ps.argb32.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/bug-84115.ps.argb32.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/bug-84115.ps.rgb24.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/bug-84115.ps.rgb24.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/bug-bo-ricotz.argb32.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/bug-bo-ricotz.argb32.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/bug-bo-ricotz.pdf.rgb24.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/bug-bo-ricotz.pdf.rgb24.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/bug-bo-ricotz.ps.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/bug-bo-ricotz.ps.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/bug-extents.pdf.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/bug-extents.pdf.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/bug-extents.quartz.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/bug-extents.quartz.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/bug-seams.quartz.xfail.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/bug-seams.quartz.xfail.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/bug-source-cu.pdf.argb32.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/bug-source-cu.pdf.argb32.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/bug-source-cu.pdf.rgb24.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/bug-source-cu.pdf.rgb24.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/bug-source-cu.ps.argb32.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/bug-source-cu.ps.argb32.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/bug-source-cu.ps.rgb24.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/bug-source-cu.ps.rgb24.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/bug-spline.ps.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/bug-spline.ps.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/bug-spline.quartz.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/bug-spline.quartz.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/caps-05.pdf.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/caps-05.pdf.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/caps-05.ps.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/caps-05.ps.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/caps-05.quartz.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/caps-05.quartz.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/caps-1.pdf.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/caps-1.pdf.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/caps-1.ps.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/caps-1.ps.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/caps-1.quartz.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/caps-1.quartz.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/caps-2.pdf.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/caps-2.pdf.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/caps-2.ps.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/caps-2.ps.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/caps-joins-05.pdf.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/caps-joins-05.pdf.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/caps-joins-05.ps.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/caps-joins-05.ps.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/caps-joins-05.quartz.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/caps-joins-05.quartz.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/caps-joins-1.pdf.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/caps-joins-1.pdf.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/caps-joins-1.ps.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/caps-joins-1.ps.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/caps-joins-1.quartz.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/caps-joins-1.quartz.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/caps-joins-2.pdf.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/caps-joins-2.pdf.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/caps-joins-2.ps.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/caps-joins-2.ps.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/caps-joins-alpha.quartz.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/caps-joins-alpha.quartz.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/caps-joins-curve.pdf.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/caps-joins-curve.pdf.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/caps-joins-curve.quartz.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/caps-joins-curve.quartz.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/caps-joins.pdf.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/caps-joins.pdf.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/caps.pdf.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/caps.pdf.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/caps-sub-paths.pdf.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/caps-sub-paths.pdf.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/caps-tails-curve.pdf.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/caps-tails-curve.pdf.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/caps-tails-curve.quartz.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/caps-tails-curve.quartz.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/checkerboard.pdf.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/checkerboard.pdf.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/clear.quartz.argb32.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/clear.quartz.argb32.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/clear.quartz.rgb24.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/clear.quartz.rgb24.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/clip-complex-bug61592.pdf.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/clip-complex-bug61592.pdf.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/clip-complex-bug61592.ps.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/clip-complex-bug61592.ps.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/clip-complex-bug61592.quartz.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/clip-complex-bug61592.quartz.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/clip-device-offset.ps.rgb24.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/clip-device-offset.ps.rgb24.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/clip-disjoint-hatching.quartz.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/clip-disjoint-hatching.quartz.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/clip-disjoint.ps.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/clip-disjoint.ps.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/clip-disjoint-quad.pdf.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/clip-disjoint-quad.pdf.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/clip-disjoint-quad.ps.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/clip-disjoint-quad.ps.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/clip-disjoint.quartz.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/clip-disjoint.quartz.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/clip-fill-no-op.ps.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/clip-fill-no-op.ps.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/clip-fill.ps.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/clip-fill.ps.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/clip-fill.ps.xfail.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/clip-fill.ps.xfail.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/clip-fill.quartz.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/clip-fill.quartz.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/clip-fill-rule.pdf.argb32.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/clip-fill-rule.pdf.argb32.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/clip-fill-rule.pdf.rgb24.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/clip-fill-rule.pdf.rgb24.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/clip-fill-rule-pixel-aligned.ps.argb32.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/clip-fill-rule-pixel-aligned.ps.argb32.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/clip-fill-rule-pixel-aligned.ps.rgb24.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/clip-fill-rule-pixel-aligned.ps.rgb24.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/clip-fill-rule.rgb24.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/clip-fill-rule.rgb24.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/clip-group-shapes-circles.quartz.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/clip-group-shapes-circles.quartz.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/clip-image.pdf.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/clip-image.pdf.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/clip-intersect.ps.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/clip-intersect.ps.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/clip-intersect.quartz.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/clip-intersect.quartz.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/clip-nesting.quartz.argb32.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/clip-nesting.quartz.argb32.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/clip-nesting.quartz.rgb24.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/clip-nesting.quartz.rgb24.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/clip-operator.pdf.argb32.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/clip-operator.pdf.argb32.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/clip-operator.pdf.rgb24.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/clip-operator.pdf.rgb24.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/clip-operator.quartz.argb32.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/clip-operator.quartz.argb32.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/clip-operator.quartz.rgb24.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/clip-operator.quartz.rgb24.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/clip-operator.rgb24.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/clip-operator.rgb24.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/clipped-group.pdf.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/clipped-group.pdf.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/clip-polygons.quartz.xfail.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/clip-polygons.quartz.xfail.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/clip-push-group.pdf.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/clip-push-group.pdf.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/clip-rectilinear.ps.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/clip-rectilinear.ps.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/clip-rotate-image-surface-paint.pdf.argb32.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/clip-rotate-image-surface-paint.pdf.argb32.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/clip-rotate-image-surface-paint.pdf.rgb24.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/clip-rotate-image-surface-paint.pdf.rgb24.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/clip-rotate-image-surface-paint.ps.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/clip-rotate-image-surface-paint.ps.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/clip-rotate-image-surface-paint.quartz.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/clip-rotate-image-surface-paint.quartz.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/clip-shape.quartz.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/clip-shape.quartz.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/clip-stroke-no-op.ps.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/clip-stroke-no-op.ps.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/clip-stroke.ps.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/clip-stroke.ps.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/clip-stroke.ps.xfail.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/clip-stroke.ps.xfail.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/clip-stroke-unbounded.argb32.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/clip-stroke-unbounded.argb32.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/clip-stroke-unbounded.quartz.argb32.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/clip-stroke-unbounded.quartz.argb32.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/clip-stroke-unbounded.rgb24.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/clip-stroke-unbounded.rgb24.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/clip-text.ps.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/clip-text.ps.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/clip-text.ps.xfail.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/clip-text.ps.xfail.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/clip-text.quartz.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/clip-text.quartz.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/close-path-current-point.pdf.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/close-path-current-point.pdf.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/close-path-current-point.quartz.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/close-path-current-point.quartz.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/close-path.pdf.argb32.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/close-path.pdf.argb32.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/close-path.pdf.rgb24.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/close-path.pdf.rgb24.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/copy-path.pdf.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/copy-path.pdf.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/culled-glyphs.ps.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/culled-glyphs.ps.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/culled-glyphs.quartz.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/culled-glyphs.quartz.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/dash-caps-joins.pdf.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/dash-caps-joins.pdf.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/dash-caps-joins.ps.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/dash-caps-joins.ps.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/dash-caps-joins.quartz.xfail.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/dash-caps-joins.quartz.xfail.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/dash-curve.pdf.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/dash-curve.pdf.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/dash-curve.ps2.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/dash-curve.ps2.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/dash-curve.ps3.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/dash-curve.ps3.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/dash-curve.ps.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/dash-curve.ps.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/dash-curve.quartz.xfail.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/dash-curve.quartz.xfail.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/dash-infinite-loop.pdf.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/dash-infinite-loop.pdf.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/dash-scale.pdf.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/dash-scale.pdf.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/dash-scale.quartz.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/dash-scale.quartz.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/dash-scale.quartz.xfail.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/dash-scale.quartz.xfail.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/dash-state.pdf.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/dash-state.pdf.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/dash-state.quartz.xfail.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/dash-state.quartz.xfail.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/dash-zero-length.pdf.argb32.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/dash-zero-length.pdf.argb32.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/dash-zero-length.pdf.rgb24.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/dash-zero-length.pdf.rgb24.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/dash-zero-length.quartz.argb32.xfail.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/dash-zero-length.quartz.argb32.xfail.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/dash-zero-length.quartz.rgb24.xfail.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/dash-zero-length.quartz.rgb24.xfail.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/degenerate-curve-to.pdf.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/degenerate-curve-to.pdf.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/degenerate-linear-gradient.pdf.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/degenerate-linear-gradient.pdf.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/degenerate-path.pdf.argb32.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/degenerate-path.pdf.argb32.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/degenerate-path.pdf.rgb24.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/degenerate-path.pdf.rgb24.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/degenerate-path.quartz.argb32.xfail.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/degenerate-path.quartz.argb32.xfail.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/degenerate-path.quartz.rgb24.xfail.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/degenerate-path.quartz.rgb24.xfail.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/degenerate-pen.pdf.argb32.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/degenerate-pen.pdf.argb32.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/degenerate-pen.pdf.rgb24.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/degenerate-pen.pdf.rgb24.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/degenerate-radial-gradient.pdf.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/degenerate-radial-gradient.pdf.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/degenerate-rel-curve-to.pdf.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/degenerate-rel-curve-to.pdf.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/degenerate-solid-dash.quartz.xfail.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/degenerate-solid-dash.quartz.xfail.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/device-offset-fractional.pdf.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/device-offset-fractional.pdf.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/device-offset-positive.ps.rgb24.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/device-offset-positive.ps.rgb24.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/device-offset.ps.rgb24.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/device-offset.ps.rgb24.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/drunkard-tails.quartz.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/drunkard-tails.quartz.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/extended-blend-alpha-mask.quartz.argb32.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/extended-blend-alpha-mask.quartz.argb32.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/extended-blend-alpha-mask.quartz.rgb24.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/extended-blend-alpha-mask.quartz.rgb24.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/extended-blend-alpha.quartz.argb32.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/extended-blend-alpha.quartz.argb32.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/extended-blend-alpha.quartz.rgb24.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/extended-blend-alpha.quartz.rgb24.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/extended-blend-mask.quartz.argb32.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/extended-blend-mask.quartz.argb32.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/extended-blend-mask.quartz.rgb24.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/extended-blend-mask.quartz.rgb24.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/extended-blend.quartz.argb32.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/extended-blend.quartz.argb32.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/extended-blend.quartz.rgb24.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/extended-blend.quartz.rgb24.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/extended-blend-solid-alpha.quartz.argb32.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/extended-blend-solid-alpha.quartz.argb32.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/extended-blend-solid-alpha.quartz.rgb24.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/extended-blend-solid-alpha.quartz.rgb24.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/extended-blend-solid.quartz.argb32.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/extended-blend-solid.quartz.argb32.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/extended-blend-solid.quartz.rgb24.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/extended-blend-solid.quartz.rgb24.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/extend-pad-border.pdf.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/extend-pad-border.pdf.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/fallback.pdf.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/fallback.pdf.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/fallback.ps.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/fallback.ps.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/fallback.quartz.argb32.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/fallback.quartz.argb32.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/fallback.quartz.rgb24.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/fallback.quartz.rgb24.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/fill-alpha-pattern.quartz.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/fill-alpha-pattern.quartz.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/fill-alpha.ps.argb32.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/fill-alpha.ps.argb32.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/fill-alpha.quartz.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/fill-alpha.quartz.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/fill-and-stroke-alpha-add.pdf.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/fill-and-stroke-alpha-add.pdf.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/fill-and-stroke-alpha-add.quartz.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/fill-and-stroke-alpha-add.quartz.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/fill-and-stroke-alpha.pdf.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/fill-and-stroke-alpha.pdf.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/fill-and-stroke.pdf.argb32.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/fill-and-stroke.pdf.argb32.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/fill-and-stroke.pdf.rgb24.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/fill-and-stroke.pdf.rgb24.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/fill-and-stroke.quartz.argb32.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/fill-and-stroke.quartz.argb32.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/fill-and-stroke.quartz.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/fill-and-stroke.quartz.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/fill-and-stroke.quartz.rgb24.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/fill-and-stroke.quartz.rgb24.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/fill-degenerate-sort-order.argb32.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/fill-degenerate-sort-order.argb32.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/fill-degenerate-sort-order.pdf.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/fill-degenerate-sort-order.pdf.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/fill-degenerate-sort-order.rgb24.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/fill-degenerate-sort-order.rgb24.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/fill-empty.ps.rgb24.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/fill-empty.ps.rgb24.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/fill-image.ps.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/fill-image.ps.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/fill-image.quartz.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/fill-image.quartz.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/fill-missed-stop.pdf.argb32.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/fill-missed-stop.pdf.argb32.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/fill-missed-stop.pdf.rgb24.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/fill-missed-stop.pdf.rgb24.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/fill-rule.pdf.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/fill-rule.pdf.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/fill-rule.rgb24.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/fill-rule.rgb24.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/filter-nearest-transformed.quartz.xfail.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/filter-nearest-transformed.quartz.xfail.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/finer-grained-fallbacks.pdf.argb32.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/finer-grained-fallbacks.pdf.argb32.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/finer-grained-fallbacks.pdf.rgb24.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/finer-grained-fallbacks.pdf.rgb24.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/finer-grained-fallbacks.ps2.argb32.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/finer-grained-fallbacks.ps2.argb32.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/finer-grained-fallbacks.ps2.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/finer-grained-fallbacks.ps2.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/finer-grained-fallbacks.ps2.rgb24.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/finer-grained-fallbacks.ps2.rgb24.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/finer-grained-fallbacks.ps3.argb32.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/finer-grained-fallbacks.ps3.argb32.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/finer-grained-fallbacks.ps3.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/finer-grained-fallbacks.ps3.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/finer-grained-fallbacks.ps3.rgb24.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/finer-grained-fallbacks.ps3.rgb24.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/finer-grained-fallbacks.ps.argb32.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/finer-grained-fallbacks.ps.argb32.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/finer-grained-fallbacks.ps.rgb24.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/finer-grained-fallbacks.ps.rgb24.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/finer-grained-fallbacks.quartz.argb32.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/finer-grained-fallbacks.quartz.argb32.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/finer-grained-fallbacks.quartz.rgb24.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/finer-grained-fallbacks.quartz.rgb24.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/font-matrix-translation.ps2.argb32.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/font-matrix-translation.ps2.argb32.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/font-matrix-translation.ps2.rgb24.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/font-matrix-translation.ps2.rgb24.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/font-matrix-translation.ps3.argb32.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/font-matrix-translation.ps3.argb32.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/font-matrix-translation.ps3.rgb24.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/font-matrix-translation.ps3.rgb24.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/font-matrix-translation.ps.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/font-matrix-translation.ps.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/font-matrix-translation.quartz.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/font-matrix-translation.quartz.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/ft-show-glyphs-positioning.pdf.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/ft-show-glyphs-positioning.pdf.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/ft-show-glyphs-positioning.ps2.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/ft-show-glyphs-positioning.ps2.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/ft-show-glyphs-positioning.ps3.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/ft-show-glyphs-positioning.ps3.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/ft-show-glyphs-positioning.ps.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/ft-show-glyphs-positioning.ps.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/ft-show-glyphs-table.ps2.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/ft-show-glyphs-table.ps2.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/ft-show-glyphs-table.ps3.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/ft-show-glyphs-table.ps3.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/ft-show-glyphs-table.ps.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/ft-show-glyphs-table.ps.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/ft-text-vertical-layout-type1.quartz.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/ft-text-vertical-layout-type1.quartz.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/ft-text-vertical-layout-type1.quartz.xfail.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/ft-text-vertical-layout-type1.quartz.xfail.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/ft-text-vertical-layout-type3.pdf.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/ft-text-vertical-layout-type3.pdf.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/ft-text-vertical-layout-type3.ps.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/ft-text-vertical-layout-type3.ps.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/ft-text-vertical-layout-type3.quartz.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/ft-text-vertical-layout-type3.quartz.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/ft-text-vertical-layout-type3.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/ft-text-vertical-layout-type3.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/glyph-cache-pressure.ps2.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/glyph-cache-pressure.ps2.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/glyph-cache-pressure.ps3.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/glyph-cache-pressure.ps3.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/glyph-cache-pressure.ps.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/glyph-cache-pressure.ps.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/gradient-alpha.pdf.argb32.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/gradient-alpha.pdf.argb32.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/gradient-alpha.pdf.rgb24.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/gradient-alpha.pdf.rgb24.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/gradient-constant-alpha.pdf.argb32.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/gradient-constant-alpha.pdf.argb32.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/gradient-constant-alpha.pdf.rgb24.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/gradient-constant-alpha.pdf.rgb24.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/gradient-constant-alpha.quartz.argb32.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/gradient-constant-alpha.quartz.argb32.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/gradient-constant-alpha.quartz.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/gradient-constant-alpha.quartz.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/gradient-zero-stops-mask.ps.rgb24.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/gradient-zero-stops-mask.ps.rgb24.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/gradient-zero-stops.ps.rgb24.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/gradient-zero-stops.ps.rgb24.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/group-unaligned.ps.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/group-unaligned.ps.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/group-unaligned.quartz.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/group-unaligned.quartz.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/halo.ps.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/halo.ps.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/halo.quartz.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/halo.quartz.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/halo-transform.ps.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/halo-transform.ps.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/halo-transform.quartz.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/halo-transform.quartz.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/hatchings.quartz.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/hatchings.quartz.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/huge-linear.pdf.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/huge-linear.pdf.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/huge-linear.quartz.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/huge-linear.quartz.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/huge-radial.pdf.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/huge-radial.pdf.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/huge-radial.quartz.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/huge-radial.quartz.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/huge-radial.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/huge-radial.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/image-surface-source.ps2.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/image-surface-source.ps2.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/image-surface-source.ps3.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/image-surface-source.ps3.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/image-surface-source.ps.argb32.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/image-surface-source.ps.argb32.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/image-surface-source.ps.rgb24.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/image-surface-source.ps.rgb24.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/infinite-join.pdf.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/infinite-join.pdf.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/inverse-text.ps.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/inverse-text.ps.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/inverse-text.quartz.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/inverse-text.quartz.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/inverted-clip.quartz.rgb24.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/inverted-clip.quartz.rgb24.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/joins-loop.ps.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/joins-loop.ps.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/joins-loop.quartz.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/joins-loop.quartz.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/joins.pdf.argb32.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/joins.pdf.argb32.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/joins.pdf.rgb24.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/joins.pdf.rgb24.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/joins.quartz.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/joins.quartz.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/joins-retrace.quartz.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/joins-retrace.quartz.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/joins-star.ps.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/joins-star.ps.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/large-font.ps.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/large-font.ps.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/leaky-dashed-stroke.pdf.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/leaky-dashed-stroke.pdf.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/leaky-dash.quartz.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/leaky-dash.quartz.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/leaky-dash.quartz.xfail.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/leaky-dash.quartz.xfail.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/leaky-polygon.pdf.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/leaky-polygon.pdf.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/linear-gradient-extend.pdf.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/linear-gradient-extend.pdf.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/linear-gradient-large.pdf.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/linear-gradient-large.pdf.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/linear-gradient-large.ps.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/linear-gradient-large.ps.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/linear-gradient-one-stop.ps.rgb24.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/linear-gradient-one-stop.ps.rgb24.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/linear-gradient.pdf.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/linear-gradient.pdf.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/linear-gradient.ps3.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/linear-gradient.ps3.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/linear-gradient.quartz.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/linear-gradient.quartz.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/linear-gradient.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/linear-gradient.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/linear-gradient-subset.pdf.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/linear-gradient-subset.pdf.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/linear-gradient-subset.quartz.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/linear-gradient-subset.quartz.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/linear-gradient-subset.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/linear-gradient-subset.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/linear-uniform.ps.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/linear-uniform.ps.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/line-width-large-overlap-dashed.quartz.xfail.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/line-width-large-overlap-dashed.quartz.xfail.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/line-width-large-overlap-offset.ps.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/line-width-large-overlap-offset.ps.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/line-width-large-overlap-rotated.ps.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/line-width-large-overlap-rotated.ps.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/line-width-large-overlap-rotated.quartz.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/line-width-large-overlap-rotated.quartz.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/line-width-overlap-dashed.quartz.xfail.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/line-width-overlap-dashed.quartz.xfail.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/line-width-overlap-offset.ps.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/line-width-overlap-offset.ps.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/line-width-overlap-rotated.ps.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/line-width-overlap-rotated.ps.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/line-width.pdf.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/line-width.pdf.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/line-width-scale.pdf.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/line-width-scale.pdf.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/line-width-tolerance.pdf.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/line-width-tolerance.pdf.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/line-width-tolerance.ps.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/line-width-tolerance.ps.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/long-dashed-lines.pdf.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/long-dashed-lines.pdf.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/long-dashed-lines.quartz.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/long-dashed-lines.quartz.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/mask-alpha.quartz.argb32.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/mask-alpha.quartz.argb32.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/mask-alpha.quartz.rgb24.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/mask-alpha.quartz.rgb24.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/mask.argb32.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/mask.argb32.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/mask-ctm.ps.rgb24.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/mask-ctm.ps.rgb24.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/mask.pdf.argb32.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/mask.pdf.argb32.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/mask.pdf.rgb24.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/mask.pdf.rgb24.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/mask.quartz.argb32.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/mask.quartz.argb32.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/mask.quartz.rgb24.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/mask.quartz.rgb24.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/mask.rgb24.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/mask.rgb24.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/mask-surface-ctm.ps.rgb24.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/mask-surface-ctm.ps.rgb24.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/mask-transformed-image.pdf.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/mask-transformed-image.pdf.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/mask-transformed-image.ps.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/mask-transformed-image.ps.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/mask-transformed-similar.pdf.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/mask-transformed-similar.pdf.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/mask-transformed-similar.ps.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/mask-transformed-similar.ps.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/mesh-pattern-conical.pdf.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/mesh-pattern-conical.pdf.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/mesh-pattern-conical.ps.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/mesh-pattern-conical.ps.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/mesh-pattern-control-points.pdf.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/mesh-pattern-control-points.pdf.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/mesh-pattern-control-points.ps.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/mesh-pattern-control-points.ps.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/mesh-pattern-fold.pdf.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/mesh-pattern-fold.pdf.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/mesh-pattern-fold.ps.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/mesh-pattern-fold.ps.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/mesh-pattern-overlap.pdf.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/mesh-pattern-overlap.pdf.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/mesh-pattern-overlap.ps.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/mesh-pattern-overlap.ps.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/mesh-pattern.pdf.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/mesh-pattern.pdf.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/mesh-pattern.ps.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/mesh-pattern.ps.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/mesh-pattern-transformed.pdf.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/mesh-pattern-transformed.pdf.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/mesh-pattern-transformed.ps.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/mesh-pattern-transformed.ps.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/mime-data.base.argb32.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/mime-data.base.argb32.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/mime-data.base.rgb24.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/mime-data.base.rgb24.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/mime-data.pdf.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/mime-data.pdf.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/mime-data.ps.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/mime-data.ps.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/mime-data.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/mime-data.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/mime-data.script.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/mime-data.script.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/mime-data.svg.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/mime-data.svg.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/new-sub-path.pdf.argb32.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/new-sub-path.pdf.argb32.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/new-sub-path.pdf.rgb24.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/new-sub-path.pdf.rgb24.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/new-sub-path.quartz.argb32.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/new-sub-path.quartz.argb32.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/new-sub-path.quartz.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/new-sub-path.quartz.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/new-sub-path.quartz.rgb24.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/new-sub-path.quartz.rgb24.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/nil-surface.ps.rgb24.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/nil-surface.ps.rgb24.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/operator-alpha-alpha.pdf.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/operator-alpha-alpha.pdf.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/operator-alpha-alpha.ps.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/operator-alpha-alpha.ps.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/operator-clear.pdf.argb32.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/operator-clear.pdf.argb32.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/operator-clear.quartz.argb32.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/operator-clear.quartz.argb32.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/operator-clear.quartz.rgb24.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/operator-clear.quartz.rgb24.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/operator-clear.rgb24.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/operator-clear.rgb24.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/operator-source.argb32.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/operator-source.argb32.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/operator-source.quartz.argb32.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/operator-source.quartz.argb32.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/operator-source.quartz.rgb24.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/operator-source.quartz.rgb24.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/operator-source.rgb24.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/operator-source.rgb24.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/over-above-source.ps3.argb32.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/over-above-source.ps3.argb32.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/over-above-source.quartz.argb32.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/over-above-source.quartz.argb32.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/over-above-source.quartz.rgb24.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/over-above-source.quartz.rgb24.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/over-around-source.ps3.argb32.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/over-around-source.ps3.argb32.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/over-around-source.quartz.argb32.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/over-around-source.quartz.argb32.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/over-around-source.quartz.rgb24.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/over-around-source.quartz.rgb24.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/over-below-source.quartz.rgb24.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/over-below-source.quartz.rgb24.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/over-between-source.ps3.argb32.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/over-between-source.ps3.argb32.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/over-between-source.quartz.argb32.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/over-between-source.quartz.argb32.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/over-between-source.quartz.rgb24.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/over-between-source.quartz.rgb24.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/overlapping-boxes.ps.argb32.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/overlapping-boxes.ps.argb32.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/overlapping-boxes.ps.rgb24.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/overlapping-boxes.ps.rgb24.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/overlapping-dash-caps.quartz.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/overlapping-dash-caps.quartz.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/overlapping-glyphs.pdf.argb32.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/overlapping-glyphs.pdf.argb32.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/overlapping-glyphs.pdf.rgb24.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/overlapping-glyphs.pdf.rgb24.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/overlapping-glyphs.ps.rgb24.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/overlapping-glyphs.ps.rgb24.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/overlapping-glyphs.quartz.argb32.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/overlapping-glyphs.quartz.argb32.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/overlapping-glyphs.quartz.rgb24.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/overlapping-glyphs.quartz.rgb24.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/paint-source-alpha.pdf.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/paint-source-alpha.pdf.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/paint-with-alpha-clip-mask.pdf.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/paint-with-alpha-clip-mask.pdf.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/paint-with-alpha-clip-mask.quartz.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/paint-with-alpha-clip-mask.quartz.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/paint-with-alpha-clip.pdf.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/paint-with-alpha-clip.pdf.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/paint-with-alpha.pdf.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/paint-with-alpha.pdf.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/paint-with-alpha-solid-clip.pdf.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/paint-with-alpha-solid-clip.pdf.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/partial-clip-text-bottom.ps.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/partial-clip-text-bottom.ps.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/partial-clip-text-bottom.quartz.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/partial-clip-text-bottom.quartz.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/partial-clip-text-left.ps.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/partial-clip-text-left.ps.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/partial-clip-text-left.quartz.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/partial-clip-text-left.quartz.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/partial-clip-text-right.ps.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/partial-clip-text-right.ps.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/partial-clip-text-right.quartz.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/partial-clip-text-right.quartz.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/partial-clip-text-top.ps.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/partial-clip-text-top.ps.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/partial-clip-text-top.quartz.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/partial-clip-text-top.quartz.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/pass-through.ps.rgb24.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/pass-through.ps.rgb24.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/path-stroke-twice.pdf.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/path-stroke-twice.pdf.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/pdf-surface-source.ps.argb32.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/pdf-surface-source.ps.argb32.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/pdf-surface-source.ps.rgb24.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/pdf-surface-source.ps.rgb24.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/pixman-downscale-best-24.pdf.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/pixman-downscale-best-24.pdf.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/pixman-downscale-best-24.ps.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/pixman-downscale-best-24.ps.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/pixman-downscale-best-24.quartz.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/pixman-downscale-best-24.quartz.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/pixman-downscale-best-24.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/pixman-downscale-best-24.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/pixman-downscale-best-95.quartz.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/pixman-downscale-best-95.quartz.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/pixman-downscale-best-96.ps.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/pixman-downscale-best-96.ps.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/pixman-downscale-bilinear-24.ps.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/pixman-downscale-bilinear-24.ps.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/pixman-downscale-bilinear-95.quartz.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/pixman-downscale-bilinear-95.quartz.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/pixman-downscale-bilinear-96.ps.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/pixman-downscale-bilinear-96.ps.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/pixman-downscale-fast-95.quartz.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/pixman-downscale-fast-95.quartz.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/pixman-downscale-good-24.ps.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/pixman-downscale-good-24.ps.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/pixman-downscale-good-95.quartz.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/pixman-downscale-good-95.quartz.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/pixman-downscale-good-96.ps.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/pixman-downscale-good-96.ps.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/pixman-downscale-nearest-95.quartz.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/pixman-downscale-nearest-95.quartz.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/pixman-rotate.ps.argb32.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/pixman-rotate.ps.argb32.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/pixman-rotate.ps.rgb24.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/pixman-rotate.ps.rgb24.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/pixman-rotate.quartz.rgb24.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/pixman-rotate.quartz.rgb24.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/ps-surface-source.ps.argb32.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/ps-surface-source.ps.argb32.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/ps-surface-source.ps.rgb24.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/ps-surface-source.ps.rgb24.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/pthread-same-source.quartz.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/pthread-same-source.quartz.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/pthread-same-source.quartz.xfail.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/pthread-same-source.quartz.xfail.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/pthread-show-text.pdf.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/pthread-show-text.pdf.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/pthread-show-text.ps.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/pthread-show-text.ps.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/pthread-show-text.quartz.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/pthread-show-text.quartz.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/push-group-color.quartz.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/push-group-color.quartz.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/push-group.quartz.argb32.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/push-group.quartz.argb32.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/push-group.quartz.rgb24.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/push-group.quartz.rgb24.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/radial-gradient-extend.pdf.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/radial-gradient-extend.pdf.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/radial-gradient-mask.quartz.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/radial-gradient-mask.quartz.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/radial-gradient-mask-source.quartz.argb32.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/radial-gradient-mask-source.quartz.argb32.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/radial-gradient-mask-source.quartz.rgb24.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/radial-gradient-mask-source.quartz.rgb24.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/radial-gradient-mask-source.rgb24.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/radial-gradient-mask-source.rgb24.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/radial-gradient-one-stop.quartz.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/radial-gradient-one-stop.quartz.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/radial-gradient.quartz.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/radial-gradient.quartz.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/radial-gradient-source.quartz.argb32.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/radial-gradient-source.quartz.argb32.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/radial-gradient-source.quartz.rgb24.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/radial-gradient-source.quartz.rgb24.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/random-clip.pdf.argb32.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/random-clip.pdf.argb32.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/random-clip.pdf.rgb24.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/random-clip.pdf.rgb24.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/random-clip.ps.argb32.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/random-clip.ps.argb32.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/random-clip.ps.rgb24.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/random-clip.ps.rgb24.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/random-clip.quartz.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/random-clip.quartz.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/random-clip.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/random-clip.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/random-intersections-curves-eo.pdf.argb32.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/random-intersections-curves-eo.pdf.argb32.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/random-intersections-curves-eo.pdf.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/random-intersections-curves-eo.pdf.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/random-intersections-curves-eo.pdf.rgb24.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/random-intersections-curves-eo.pdf.rgb24.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/random-intersections-curves-nz.pdf.argb32.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/random-intersections-curves-nz.pdf.argb32.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/random-intersections-curves-nz.pdf.rgb24.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/random-intersections-curves-nz.pdf.rgb24.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/random-intersections-eo.pdf.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/random-intersections-eo.pdf.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/random-intersections-eo.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/random-intersections-eo.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/random-intersections-nonzero.pdf.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/random-intersections-nonzero.pdf.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/random-intersections-nonzero.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/random-intersections-nonzero.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/raster-source.ps.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/raster-source.ps.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/record1414x-fill-alpha.pdf.argb32.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/record1414x-fill-alpha.pdf.argb32.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/record1414x-fill-alpha.pdf.rgb24.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/record1414x-fill-alpha.pdf.rgb24.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/record1414x-fill-alpha.ps.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/record1414x-fill-alpha.ps.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/record1414x-fill-alpha.quartz.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/record1414x-fill-alpha.quartz.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/record1414x-fill-alpha.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/record1414x-fill-alpha.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/record1414x-paint-alpha-clip-mask.pdf.argb32.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/record1414x-paint-alpha-clip-mask.pdf.argb32.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/record1414x-paint-alpha-clip-mask.pdf.rgb24.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/record1414x-paint-alpha-clip-mask.pdf.rgb24.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/record1414x-paint-alpha-clip-mask.ps.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/record1414x-paint-alpha-clip-mask.ps.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/record1414x-paint-alpha-clip-mask.quartz.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/record1414x-paint-alpha-clip-mask.quartz.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/record1414x-paint-alpha-clip-mask.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/record1414x-paint-alpha-clip-mask.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/record1414x-paint-alpha-clip.pdf.argb32.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/record1414x-paint-alpha-clip.pdf.argb32.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/record1414x-paint-alpha-clip.pdf.rgb24.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/record1414x-paint-alpha-clip.pdf.rgb24.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/record1414x-paint-alpha-clip.ps.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/record1414x-paint-alpha-clip.ps.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/record1414x-paint-alpha.pdf.argb32.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/record1414x-paint-alpha.pdf.argb32.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/record1414x-paint-alpha.pdf.rgb24.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/record1414x-paint-alpha.pdf.rgb24.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/record1414x-paint-alpha.ps.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/record1414x-paint-alpha.ps.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/record1414x-paint-alpha-solid-clip.pdf.argb32.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/record1414x-paint-alpha-solid-clip.pdf.argb32.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/record1414x-paint-alpha-solid-clip.pdf.rgb24.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/record1414x-paint-alpha-solid-clip.pdf.rgb24.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/record1414x-paint-alpha-solid-clip.ps.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/record1414x-paint-alpha-solid-clip.ps.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/record1414x-select-font-face.pdf.argb32.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/record1414x-select-font-face.pdf.argb32.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/record1414x-select-font-face.pdf.rgb24.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/record1414x-select-font-face.pdf.rgb24.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/record1414x-select-font-face.ps.argb32.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/record1414x-select-font-face.ps.argb32.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/record1414x-select-font-face.ps.rgb24.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/record1414x-select-font-face.ps.rgb24.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/record1414x-select-font-face.quartz.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/record1414x-select-font-face.quartz.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/record1414x-select-font-face.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/record1414x-select-font-face.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/record1414x-self-intersecting.pdf.argb32.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/record1414x-self-intersecting.pdf.argb32.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/record1414x-self-intersecting.pdf.rgb24.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/record1414x-self-intersecting.pdf.rgb24.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/record1414x-self-intersecting.ps.argb32.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/record1414x-self-intersecting.ps.argb32.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/record1414x-self-intersecting.ps.rgb24.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/record1414x-self-intersecting.ps.rgb24.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/record1414x-text-transform.pdf.argb32.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/record1414x-text-transform.pdf.argb32.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/record1414x-text-transform.pdf.rgb24.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/record1414x-text-transform.pdf.rgb24.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/record1414x-text-transform.ps.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/record1414x-text-transform.ps.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/record1414x-text-transform.quartz.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/record1414x-text-transform.quartz.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/record1414x-text-transform.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/record1414x-text-transform.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/record2x-fill-alpha.pdf.argb32.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/record2x-fill-alpha.pdf.argb32.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/record2x-fill-alpha.pdf.rgb24.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/record2x-fill-alpha.pdf.rgb24.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/record2x-fill-alpha.ps.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/record2x-fill-alpha.ps.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/record2x-fill-alpha.quartz.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/record2x-fill-alpha.quartz.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/record2x-fill-alpha.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/record2x-fill-alpha.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/record2x-paint-alpha-clip-mask.pdf.argb32.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/record2x-paint-alpha-clip-mask.pdf.argb32.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/record2x-paint-alpha-clip-mask.pdf.rgb24.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/record2x-paint-alpha-clip-mask.pdf.rgb24.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/record2x-paint-alpha-clip-mask.ps.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/record2x-paint-alpha-clip-mask.ps.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/record2x-paint-alpha-clip-mask.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/record2x-paint-alpha-clip-mask.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/record2x-paint-alpha-clip.pdf.argb32.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/record2x-paint-alpha-clip.pdf.argb32.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/record2x-paint-alpha-clip.pdf.rgb24.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/record2x-paint-alpha-clip.pdf.rgb24.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/record2x-paint-alpha.pdf.argb32.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/record2x-paint-alpha.pdf.argb32.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/record2x-paint-alpha.pdf.rgb24.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/record2x-paint-alpha.pdf.rgb24.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/record2x-paint-alpha-solid-clip.pdf.argb32.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/record2x-paint-alpha-solid-clip.pdf.argb32.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/record2x-paint-alpha-solid-clip.pdf.rgb24.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/record2x-paint-alpha-solid-clip.pdf.rgb24.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/record2x-select-font-face.pdf.rgb24.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/record2x-select-font-face.pdf.rgb24.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/record2x-select-font-face.ps.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/record2x-select-font-face.ps.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/record2x-select-font-face.quartz.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/record2x-select-font-face.quartz.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/record2x-select-font-face.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/record2x-select-font-face.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/record2x-text-transform.pdf.argb32.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/record2x-text-transform.pdf.argb32.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/record2x-text-transform.pdf.rgb24.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/record2x-text-transform.pdf.rgb24.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/record2x-text-transform.ps.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/record2x-text-transform.ps.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/record2x-text-transform.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/record2x-text-transform.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/record90-fill-alpha.pdf.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/record90-fill-alpha.pdf.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/record90-fill-alpha.pdf.rgb24.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/record90-fill-alpha.pdf.rgb24.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/record90-fill-alpha.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/record90-fill-alpha.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/record90-paint-alpha-clip-mask.pdf.argb32.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/record90-paint-alpha-clip-mask.pdf.argb32.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/record90-paint-alpha-clip-mask.pdf.rgb24.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/record90-paint-alpha-clip-mask.pdf.rgb24.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/record90-paint-alpha-clip.pdf.argb32.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/record90-paint-alpha-clip.pdf.argb32.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/record90-paint-alpha-clip.pdf.rgb24.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/record90-paint-alpha-clip.pdf.rgb24.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/record90-paint-alpha-clip.quartz.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/record90-paint-alpha-clip.quartz.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/record90-paint-alpha-clip.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/record90-paint-alpha-clip.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/record90-paint-alpha.ps.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/record90-paint-alpha.ps.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/record90-paint-alpha-solid-clip.pdf.argb32.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/record90-paint-alpha-solid-clip.pdf.argb32.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/record90-paint-alpha-solid-clip.pdf.rgb24.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/record90-paint-alpha-solid-clip.pdf.rgb24.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/record90-select-font-face.pdf.rgb24.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/record90-select-font-face.pdf.rgb24.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/record90-select-font-face.ps.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/record90-select-font-face.ps.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/record90-select-font-face.quartz.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/record90-select-font-face.quartz.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/record90-select-font-face.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/record90-select-font-face.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/record90-self-intersecting.pdf.rgb24.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/record90-self-intersecting.pdf.rgb24.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/record90-self-intersecting.ps.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/record90-self-intersecting.ps.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/record90-self-intersecting.quartz.xfail.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/record90-self-intersecting.quartz.xfail.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/record90-self-intersecting.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/record90-self-intersecting.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/record90-text-transform.pdf.rgb24.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/record90-text-transform.pdf.rgb24.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/record90-text-transform.ps.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/record90-text-transform.ps.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/record90-text-transform.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/record90-text-transform.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/record-extend-none.ps.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/record-extend-none.ps.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/record-extend-reflect.ps.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/record-extend-reflect.ps.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/record-extend-repeat.ps.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/record-extend-repeat.ps.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/record-fill-alpha.pdf.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/record-fill-alpha.pdf.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/record-fill-alpha.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/record-fill-alpha.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/recordflip-fill-alpha.quartz.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/recordflip-fill-alpha.quartz.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/recordflip-fill-alpha.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/recordflip-fill-alpha.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/recordflip-paint-alpha-clip-mask.pdf.rgb24.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/recordflip-paint-alpha-clip-mask.pdf.rgb24.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/recordflip-paint-alpha-clip-mask.quartz.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/recordflip-paint-alpha-clip-mask.quartz.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/recordflip-paint-alpha-clip-mask.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/recordflip-paint-alpha-clip-mask.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/recordflip-paint-alpha-clip.pdf.rgb24.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/recordflip-paint-alpha-clip.pdf.rgb24.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/recordflip-select-font-face.pdf.rgb24.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/recordflip-select-font-face.pdf.rgb24.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/recordflip-select-font-face.ps.argb32.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/recordflip-select-font-face.ps.argb32.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/recordflip-select-font-face.ps.rgb24.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/recordflip-select-font-face.ps.rgb24.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/recordflip-select-font-face.quartz.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/recordflip-select-font-face.quartz.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/recordflip-select-font-face.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/recordflip-select-font-face.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/recordflip-self-intersecting.pdf.rgb24.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/recordflip-self-intersecting.pdf.rgb24.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/recordflip-self-intersecting.ps.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/recordflip-self-intersecting.ps.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/recordflip-text-transform.pdf.rgb24.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/recordflip-text-transform.pdf.rgb24.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/recordflip-text-transform.ps.argb32.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/recordflip-text-transform.ps.argb32.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/recordflip-text-transform.ps.rgb24.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/recordflip-text-transform.ps.rgb24.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/recordflip-text-transform.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/recordflip-text-transform.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/recordflip-whole-fill-alpha.quartz.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/recordflip-whole-fill-alpha.quartz.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/recordflip-whole-fill-alpha.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/recordflip-whole-fill-alpha.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/recordflip-whole-paint-alpha-clip-mask.quartz.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/recordflip-whole-paint-alpha-clip-mask.quartz.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/recordflip-whole-paint-alpha-clip-mask.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/recordflip-whole-paint-alpha-clip-mask.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/recordflip-whole-select-font-face.quartz.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/recordflip-whole-select-font-face.quartz.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/recordflip-whole-select-font-face.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/recordflip-whole-select-font-face.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/recordflip-whole-text-transform.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/recordflip-whole-text-transform.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/recording-surface-extend-none.pdf.argb32.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/recording-surface-extend-none.pdf.argb32.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/recording-surface-extend-none.pdf.rgb24.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/recording-surface-extend-none.pdf.rgb24.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/recording-surface-extend-none.ps.argb32.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/recording-surface-extend-none.ps.argb32.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/recording-surface-extend-none.ps.rgb24.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/recording-surface-extend-none.ps.rgb24.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/recording-surface-extend-none.quartz.argb32.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/recording-surface-extend-none.quartz.argb32.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/recording-surface-extend-none.quartz.rgb24.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/recording-surface-extend-none.quartz.rgb24.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/recording-surface-extend-pad.argb32.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/recording-surface-extend-pad.argb32.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/recording-surface-extend-pad.argb32.xfail.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/recording-surface-extend-pad.argb32.xfail.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/recording-surface-extend-pad.rgb24.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/recording-surface-extend-pad.rgb24.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/recording-surface-extend-pad.rgb24.xfail.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/recording-surface-extend-pad.rgb24.xfail.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/recording-surface-extend-reflect.pdf.argb32.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/recording-surface-extend-reflect.pdf.argb32.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/recording-surface-extend-reflect.pdf.rgb24.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/recording-surface-extend-reflect.pdf.rgb24.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/recording-surface-extend-reflect.ps.argb32.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/recording-surface-extend-reflect.ps.argb32.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/recording-surface-extend-reflect.ps.rgb24.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/recording-surface-extend-reflect.ps.rgb24.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/recording-surface-extend-reflect.quartz.argb32.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/recording-surface-extend-reflect.quartz.argb32.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/recording-surface-extend-reflect.quartz.rgb24.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/recording-surface-extend-reflect.quartz.rgb24.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/recording-surface-extend-repeat.pdf.argb32.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/recording-surface-extend-repeat.pdf.argb32.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/recording-surface-extend-repeat.pdf.rgb24.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/recording-surface-extend-repeat.pdf.rgb24.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/recording-surface-extend-repeat.ps.argb32.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/recording-surface-extend-repeat.ps.argb32.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/recording-surface-extend-repeat.ps.rgb24.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/recording-surface-extend-repeat.ps.rgb24.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/recording-surface-extend-repeat.quartz.argb32.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/recording-surface-extend-repeat.quartz.argb32.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/recording-surface-extend-repeat.quartz.rgb24.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/recording-surface-extend-repeat.quartz.rgb24.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/recording-surface-over.pdf.argb32.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/recording-surface-over.pdf.argb32.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/recording-surface-over.pdf.rgb24.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/recording-surface-over.pdf.rgb24.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/recording-surface-over.ps.argb32.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/recording-surface-over.ps.argb32.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/recording-surface-over.ps.rgb24.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/recording-surface-over.ps.rgb24.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/recording-surface-over.quartz.argb32.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/recording-surface-over.quartz.argb32.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/recording-surface-over.quartz.rgb24.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/recording-surface-over.quartz.rgb24.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/recording-surface-source.pdf.argb32.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/recording-surface-source.pdf.argb32.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/recording-surface-source.pdf.rgb24.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/recording-surface-source.pdf.rgb24.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/recording-surface-source.ps.argb32.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/recording-surface-source.ps.argb32.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/recording-surface-source.ps.rgb24.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/recording-surface-source.ps.rgb24.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/recording-surface-source.quartz.argb32.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/recording-surface-source.quartz.argb32.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/recording-surface-source.quartz.rgb24.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/recording-surface-source.quartz.rgb24.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/record-mesh.pdf.argb32.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/record-mesh.pdf.argb32.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/record-mesh.pdf.rgb24.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/record-mesh.pdf.rgb24.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/record-mesh.ps.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/record-mesh.ps.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/record-mesh.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/record-mesh.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/record-neg-extents-bounded.pdf.argb32.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/record-neg-extents-bounded.pdf.argb32.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/record-neg-extents-bounded.pdf.rgb24.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/record-neg-extents-bounded.pdf.rgb24.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/record-neg-extents-bounded.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/record-neg-extents-bounded.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/record-neg-extents-unbounded.pdf.argb32.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/record-neg-extents-unbounded.pdf.argb32.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/record-neg-extents-unbounded.pdf.rgb24.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/record-neg-extents-unbounded.pdf.rgb24.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/record-neg-extents-unbounded.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/record-neg-extents-unbounded.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/record-paint-alpha-clip-mask.pdf.argb32.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/record-paint-alpha-clip-mask.pdf.argb32.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/record-paint-alpha-clip-mask.pdf.rgb24.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/record-paint-alpha-clip-mask.pdf.rgb24.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/record-paint-alpha-clip-mask.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/record-paint-alpha-clip-mask.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/record-paint-alpha-clip.pdf.argb32.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/record-paint-alpha-clip.pdf.argb32.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/record-paint-alpha-clip.pdf.rgb24.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/record-paint-alpha-clip.pdf.rgb24.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/record-paint-alpha-solid-clip.pdf.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/record-paint-alpha-solid-clip.pdf.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/record-replay-extend-none.pdf.argb32.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/record-replay-extend-none.pdf.argb32.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/record-replay-extend-none.pdf.rgb24.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/record-replay-extend-none.pdf.rgb24.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/record-replay-extend-none.ps.argb32.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/record-replay-extend-none.ps.argb32.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/record-replay-extend-none.ps.rgb24.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/record-replay-extend-none.ps.rgb24.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/record-replay-extend-none.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/record-replay-extend-none.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/record-replay-extend-pad.pdf.argb32.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/record-replay-extend-pad.pdf.argb32.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/record-replay-extend-pad.ps.rgb24.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/record-replay-extend-pad.ps.rgb24.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/record-replay-extend-pad.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/record-replay-extend-pad.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/record-replay-extend-reflect.pdf.argb32.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/record-replay-extend-reflect.pdf.argb32.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/record-replay-extend-reflect.pdf.rgb24.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/record-replay-extend-reflect.pdf.rgb24.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/record-replay-extend-reflect.ps.argb32.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/record-replay-extend-reflect.ps.argb32.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/record-replay-extend-reflect.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/record-replay-extend-reflect.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/record-replay-extend-repeat.pdf.argb32.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/record-replay-extend-repeat.pdf.argb32.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/record-replay-extend-repeat.pdf.rgb24.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/record-replay-extend-repeat.pdf.rgb24.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/record-replay-extend-repeat.ps.argb32.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/record-replay-extend-repeat.ps.argb32.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/record-replay-extend-repeat.ps.rgb24.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/record-replay-extend-repeat.ps.rgb24.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/record-replay-extend-repeat.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/record-replay-extend-repeat.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/record-select-font-face.pdf.argb32.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/record-select-font-face.pdf.argb32.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/record-select-font-face.pdf.rgb24.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/record-select-font-face.pdf.rgb24.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/record-select-font-face.ps.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/record-select-font-face.ps.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/record-select-font-face.quartz.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/record-select-font-face.quartz.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/record-select-font-face.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/record-select-font-face.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/record-self-intersecting.pdf.rgb24.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/record-self-intersecting.pdf.rgb24.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/record-self-intersecting.ps.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/record-self-intersecting.ps.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/record-text-transform.pdf.argb32.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/record-text-transform.pdf.argb32.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/record-text-transform.pdf.rgb24.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/record-text-transform.pdf.rgb24.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/record-text-transform.ps.argb32.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/record-text-transform.ps.argb32.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/record-text-transform.ps.rgb24.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/record-text-transform.ps.rgb24.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/record-text-transform.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/record-text-transform.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/rectilinear-dash.quartz.xfail.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/rectilinear-dash.quartz.xfail.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/rectilinear-dash-scale.quartz.xfail.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/rectilinear-dash-scale.quartz.xfail.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/rectilinear-dash-scale-unaligned.pdf.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/rectilinear-dash-scale-unaligned.pdf.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/rectilinear-dash-scale-unaligned.ps.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/rectilinear-dash-scale-unaligned.ps.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/rectilinear-dash-scale-unaligned.quartz.xfail.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/rectilinear-dash-scale-unaligned.quartz.xfail.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/reflected-stroke.pdf.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/reflected-stroke.pdf.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/reflected-stroke.quartz.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/reflected-stroke.quartz.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/rotate-clip-image-surface-paint.pdf.argb32.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/rotate-clip-image-surface-paint.pdf.argb32.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/rotate-clip-image-surface-paint.pdf.rgb24.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/rotate-clip-image-surface-paint.pdf.rgb24.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/rotate-clip-image-surface-paint.ps.argb32.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/rotate-clip-image-surface-paint.ps.argb32.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/rotate-clip-image-surface-paint.quartz.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/rotate-clip-image-surface-paint.quartz.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/rotated-clip.pdf.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/rotated-clip.pdf.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/rotated-clip.ps.argb32.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/rotated-clip.ps.argb32.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/rotated-clip.ps.argb32.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/rotated-clip.ps.argb32.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/rotated-clip.ps.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/rotated-clip.ps.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/rotated-clip.ps.rgb24.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/rotated-clip.ps.rgb24.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/rotated-clip.quartz.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/rotated-clip.quartz.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/rotate-image-surface-paint.quartz.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/rotate-image-surface-paint.quartz.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/rounded-rectangle-fill.quartz.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/rounded-rectangle-fill.quartz.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/rounded-rectangle-stroke.quartz.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/rounded-rectangle-stroke.quartz.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/scale-offset-image.pdf.argb32.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/scale-offset-image.pdf.argb32.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/scale-offset-image.pdf.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/scale-offset-image.pdf.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/scale-offset-image.pdf.rgb24.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/scale-offset-image.pdf.rgb24.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/scale-offset-image.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/scale-offset-image.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/scale-offset-similar.pdf.argb32.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/scale-offset-similar.pdf.argb32.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/scale-offset-similar.pdf.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/scale-offset-similar.pdf.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/scale-offset-similar.pdf.rgb24.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/scale-offset-similar.pdf.rgb24.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/scale-offset-similar.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/scale-offset-similar.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/self-intersecting.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/self-intersecting.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/shape-sierpinski.pdf.argb32.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/shape-sierpinski.pdf.argb32.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/shape-sierpinski.pdf.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/shape-sierpinski.pdf.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/shape-sierpinski.pdf.rgb24.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/shape-sierpinski.pdf.rgb24.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/shape-sierpinski.quartz.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/shape-sierpinski.quartz.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/show-glyphs-advance.quartz.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/show-glyphs-advance.quartz.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/simple-edge.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/simple-edge.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/smask-fill.pdf.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/smask-fill.pdf.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/smask-fill.quartz.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/smask-fill.quartz.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/smask-image-mask.pdf.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/smask-image-mask.pdf.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/smask-mask.pdf.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/smask-mask.pdf.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/smask-paint.pdf.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/smask-paint.pdf.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/smask.pdf.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/smask.pdf.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/smask.ps3.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/smask.ps3.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/smask.quartz.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/smask.quartz.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/smask-stroke.pdf.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/smask-stroke.pdf.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/smask-stroke.quartz.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/smask-stroke.quartz.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/smask-text.pdf.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/smask-text.pdf.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/smask-text.ps2.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/smask-text.ps2.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/smask-text.ps3.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/smask-text.ps3.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/smask-text.ps.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/smask-text.ps.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/smask-text.quartz.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/smask-text.quartz.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/smp-glyph.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/smp-glyph.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/smp-glyph.script.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/smp-glyph.script.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/spline-decomposition.pdf.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/spline-decomposition.pdf.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/spline-decomposition.ps.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/spline-decomposition.ps.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/spline-decomposition.quartz.xfail.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/spline-decomposition.quartz.xfail.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/stroke-clipped.ps.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/stroke-clipped.ps.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/stroke-clipped.quartz.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/stroke-clipped.quartz.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/stroke-ctm-caps.pdf.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/stroke-ctm-caps.pdf.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/stroke-ctm-caps.quartz.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/stroke-ctm-caps.quartz.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/stroke-image.pdf.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/stroke-image.pdf.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/stroke-image.ps.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/stroke-image.ps.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/stroke-image.quartz.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/stroke-image.quartz.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/stroke-pattern.pdf.argb32.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/stroke-pattern.pdf.argb32.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/stroke-pattern.pdf.rgb24.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/stroke-pattern.pdf.rgb24.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/stroke-pattern.quartz.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/stroke-pattern.quartz.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/subsurface-outside-target.quartz.argb32.xfail.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/subsurface-outside-target.quartz.argb32.xfail.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/subsurface-outside-target.quartz.rgb24.xfail.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/subsurface-outside-target.quartz.rgb24.xfail.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/subsurface-scale.quartz.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/subsurface-scale.quartz.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/surface-pattern-big-scale-down.ps.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/surface-pattern-big-scale-down.ps.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/surface-pattern-big-scale-down.quartz.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/surface-pattern-big-scale-down.quartz.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/surface-pattern-operator.quartz.argb32.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/surface-pattern-operator.quartz.argb32.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/surface-pattern-operator.quartz.rgb24.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/surface-pattern-operator.quartz.rgb24.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/surface-pattern.pdf.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/surface-pattern.pdf.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/surface-pattern.pdf.xfail.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/surface-pattern.pdf.xfail.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/surface-pattern.ps.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/surface-pattern.ps.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/surface-pattern.ps.xfail.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/surface-pattern.ps.xfail.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/surface-pattern-scale-down-extend-none.ps.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/surface-pattern-scale-down-extend-none.ps.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/surface-pattern-scale-down-extend-none.quartz.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/surface-pattern-scale-down-extend-none.quartz.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/surface-pattern-scale-down-extend-pad.quartz.xfail.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/surface-pattern-scale-down-extend-pad.quartz.xfail.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/surface-pattern-scale-down-extend-reflect.quartz.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/surface-pattern-scale-down-extend-reflect.quartz.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/surface-pattern-scale-down-extend-repeat.quartz.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/surface-pattern-scale-down-extend-repeat.quartz.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/surface-pattern-scale-down.pdf.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/surface-pattern-scale-down.pdf.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/surface-pattern-scale-down.ps2.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/surface-pattern-scale-down.ps2.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/surface-pattern-scale-down.ps3.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/surface-pattern-scale-down.ps3.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/surface-pattern-scale-down.ps.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/surface-pattern-scale-down.ps.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/surface-pattern-scale-down.quartz.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/surface-pattern-scale-down.quartz.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/surface-pattern-scale-down.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/surface-pattern-scale-down.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/surface-pattern-scale-up.pdf.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/surface-pattern-scale-up.pdf.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/surface-pattern-scale-up.ps2.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/surface-pattern-scale-up.ps2.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/surface-pattern-scale-up.ps3.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/surface-pattern-scale-up.ps3.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/surface-pattern-scale-up.ps.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/surface-pattern-scale-up.ps.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/surface-pattern-scale-up.quartz.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/surface-pattern-scale-up.quartz.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/surface-pattern-scale-up.quartz.xfail.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/surface-pattern-scale-up.quartz.xfail.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/svg-surface-source.ps.rgb24.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/svg-surface-source.ps.rgb24.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/text-antialias-gray.quartz.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/text-antialias-gray.quartz.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/text-antialias-subpixel-bgr.quartz.xfail.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/text-antialias-subpixel-bgr.quartz.xfail.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/text-antialias-subpixel.quartz.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/text-antialias-subpixel.quartz.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/text-antialias-subpixel-rgb.quartz.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/text-antialias-subpixel-rgb.quartz.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/text-antialias-subpixel-vbgr.quartz.xfail.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/text-antialias-subpixel-vbgr.quartz.xfail.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/text-antialias-subpixel-vrgb.quartz.xfail.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/text-antialias-subpixel-vrgb.quartz.xfail.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/text-glyph-range.pdf.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/text-glyph-range.pdf.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/text-glyph-range.ps.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/text-glyph-range.ps.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/text-glyph-range.quartz.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/text-glyph-range.quartz.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/text-pattern.pdf.argb32.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/text-pattern.pdf.argb32.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/text-pattern.pdf.rgb24.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/text-pattern.pdf.rgb24.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/text-pattern.ps3.argb32.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/text-pattern.ps3.argb32.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/text-pattern.ps3.rgb24.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/text-pattern.ps3.rgb24.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/text-pattern.quartz.argb32.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/text-pattern.quartz.argb32.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/text-pattern.quartz.rgb24.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/text-pattern.quartz.rgb24.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/text-rotate.pdf.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/text-rotate.pdf.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/text-rotate.ps.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/text-rotate.ps.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/text-rotate.quartz.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/text-rotate.quartz.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/text-rotate.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/text-rotate.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/text-transform.pdf.argb32.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/text-transform.pdf.argb32.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/text-transform.pdf.rgb24.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/text-transform.pdf.rgb24.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/text-transform.ps2.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/text-transform.ps2.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/text-transform.ps3.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/text-transform.ps3.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/text-transform.ps.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/text-transform.ps.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/text-unhinted-metrics.pdf.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/text-unhinted-metrics.pdf.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/text-unhinted-metrics.ps.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/text-unhinted-metrics.ps.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/text-unhinted-metrics.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/text-unhinted-metrics.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/thin-lines.pdf.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/thin-lines.pdf.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/thin-lines.ps.argb32.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/thin-lines.ps.argb32.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/thin-lines.ps.rgb24.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/thin-lines.ps.rgb24.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/thin-lines.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/thin-lines.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/tiger.pdf.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/tiger.pdf.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/tiger.ps.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/tiger.ps.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/tiger.quartz.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/tiger.quartz.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/tiger.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/tiger.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/tighten-bounds.pdf.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/tighten-bounds.pdf.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/tighten-bounds.ps.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/tighten-bounds.ps.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/tighten-bounds.quartz.argb32.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/tighten-bounds.quartz.argb32.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/tighten-bounds.quartz.rgb24.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/tighten-bounds.quartz.rgb24.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/transforms.pdf.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/transforms.pdf.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/trap-clip.argb32.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/trap-clip.argb32.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/trap-clip.pdf.argb32.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/trap-clip.pdf.argb32.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/trap-clip.pdf.rgb24.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/trap-clip.pdf.rgb24.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/trap-clip.quartz.argb32.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/trap-clip.quartz.argb32.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/trap-clip.quartz.rgb24.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/trap-clip.quartz.rgb24.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/trap-clip.rgb24.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/trap-clip.rgb24.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/twin-antialias-gray.quartz.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/twin-antialias-gray.quartz.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/twin-antialias-none.quartz.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/twin-antialias-none.quartz.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/twin-antialias-subpixel.quartz.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/twin-antialias-subpixel.quartz.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/twin.pdf.argb32.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/twin.pdf.argb32.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/twin.pdf.rgb24.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/twin.pdf.rgb24.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/twin.ps.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/twin.ps.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/twin.quartz.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/twin.quartz.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/unbounded-operator.pdf.argb32.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/unbounded-operator.pdf.argb32.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/unbounded-operator.pdf.rgb24.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/unbounded-operator.pdf.rgb24.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/unbounded-operator.rgb24.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/unbounded-operator.rgb24.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/unclosed-strokes.pdf.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/unclosed-strokes.pdf.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/unclosed-strokes.ps.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/unclosed-strokes.ps.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/user-font.pdf.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/user-font.pdf.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/user-font-proxy.pdf.argb32.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/user-font-proxy.pdf.argb32.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/user-font-proxy.pdf.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/user-font-proxy.pdf.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/user-font-proxy.ps.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/user-font-proxy.ps.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/user-font-proxy.quartz.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/user-font-proxy.quartz.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/user-font.ps.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/user-font.ps.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/user-font.quartz.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/user-font.quartz.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/user-font-rescale.pdf.rgb24.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/user-font-rescale.pdf.rgb24.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/user-font-rescale.ps.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/user-font-rescale.ps.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/world-map-fill.pdf.argb32.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/world-map-fill.pdf.argb32.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/world-map-fill.pdf.rgb24.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/world-map-fill.pdf.rgb24.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/world-map-fill.ps.argb32.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/world-map-fill.ps.argb32.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/world-map-fill.ps.rgb24.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/world-map-fill.ps.rgb24.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/world-map-fill.quartz.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/world-map-fill.quartz.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/world-map.pdf.argb32.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/world-map.pdf.argb32.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/world-map.pdf.rgb24.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/world-map.pdf.rgb24.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/world-map.ps.argb32.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/world-map.ps.argb32.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/world-map.ps.rgb24.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/world-map.ps.rgb24.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/world-map.quartz.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/world-map.quartz.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/world-map-stroke.pdf.argb32.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/world-map-stroke.pdf.argb32.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/world-map-stroke.pdf.rgb24.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/world-map-stroke.pdf.rgb24.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/world-map-stroke.ps.argb32.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/world-map-stroke.ps.argb32.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/world-map-stroke.ps.rgb24.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/world-map-stroke.ps.rgb24.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/world-map-stroke.quartz.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/world-map-stroke.quartz.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/xcomposite-projection.quartz.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/xcomposite-projection.quartz.ref.png differ Binary files /tmp/tmptxkJ9f/LNHJQbrlVD/cairo-1.14.6/test/reference/zero-mask.ref.png and /tmp/tmptxkJ9f/sXyzxyDNIG/cairo-1.15.10/test/reference/zero-mask.ref.png differ diff -Nru cairo-1.14.6/test/show-glyphs-many.c cairo-1.15.10/test/show-glyphs-many.c --- cairo-1.14.6/test/show-glyphs-many.c 2015-10-27 21:04:30.000000000 +0000 +++ cairo-1.15.10/test/show-glyphs-many.c 2017-12-07 02:14:36.000000000 +0000 @@ -126,7 +126,7 @@ cairo_set_source_rgb (cr, 1, 1, 1); cairo_paint (cr); - cairo_select_font_face (cr, "Sans", + cairo_select_font_face (cr, CAIRO_TEST_FONT_FAMILY " Sans", CAIRO_FONT_SLANT_NORMAL, CAIRO_FONT_WEIGHT_NORMAL); cairo_set_font_size (cr, TEXT_SIZE); diff -Nru cairo-1.14.6/test/smp-glyph.c cairo-1.15.10/test/smp-glyph.c --- cairo-1.14.6/test/smp-glyph.c 1970-01-01 00:00:00.000000000 +0000 +++ cairo-1.15.10/test/smp-glyph.c 2017-12-07 02:14:36.000000000 +0000 @@ -0,0 +1,56 @@ +/* + * Copyright © 2017 Andrea Canciani + * + * 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 + * Andrea Canciani not be used in advertising or publicity pertaining to + * distribution of the software without specific, written prior + * permission. Andrea Canciani makes no representations about the + * suitability of this software for any purpose. It is provided "as + * is" without express or implied warranty. + * + * ANDREA CANCIANI DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS + * SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND + * FITNESS, IN NO EVENT SHALL ANDREA CANCIANI BE LIABLE FOR ANY SPECIAL, + * INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER + * RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION + * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR + * IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + * + * Author: Andrea Canciani + */ + +#include "cairo-test.h" + +#define TEXT_SIZE 42 + +static cairo_test_status_t +draw (cairo_t *cr, int width, int height) +{ + cairo_set_source_rgb (cr, 1.0, 1.0, 1.0); /* white */ + cairo_paint (cr); + + cairo_set_source_rgb (cr, 0, 0, 0); /* black */ + + cairo_select_font_face (cr, CAIRO_TEST_FONT_FAMILY " Sans", + CAIRO_FONT_SLANT_NORMAL, + CAIRO_FONT_WEIGHT_NORMAL); + + cairo_set_font_size (cr, TEXT_SIZE); + cairo_translate (cr, 0, TEXT_SIZE); + + /* U+1F030, DOMINO TILE HORIZONTAL BACK */ + cairo_show_text (cr, "\xf0\x9f\x80\xb0"); + + return CAIRO_TEST_SUCCESS; +} + +CAIRO_TEST (smp_glyph, + "Test glyphs for symbols in the Supplementary Multilingual Plane", + "text, glyphs", /* keywords */ + NULL, /* requirements */ + 64, 64, + NULL, draw) diff -Nru cairo-1.14.6/test/svg2png.c cairo-1.15.10/test/svg2png.c --- cairo-1.14.6/test/svg2png.c 2015-10-27 21:04:30.000000000 +0000 +++ cairo-1.15.10/test/svg2png.c 2017-12-07 02:14:36.000000000 +0000 @@ -27,8 +27,6 @@ #include #include -#include -#include #include #define FAIL(msg) \ @@ -37,26 +35,55 @@ int main (int argc, char *argv[]) { GError *error = NULL; - GdkPixbuf *pixbuf; + RsvgHandle *handle; + RsvgDimensionData dimensions; const char *filename = argv[1]; const char *output_filename = argv[2]; + cairo_surface_t *surface; + cairo_t *cr; + cairo_status_t status; if (argc != 3) FAIL ("usage: svg2png input_file.svg output_file.png"); + #if GLIB_MAJOR_VERSION <= 2 && GLIB_MINOR_VERSION <= 34 g_type_init (); + #endif error = NULL; rsvg_set_default_dpi (72.0); - pixbuf = rsvg_pixbuf_from_file (filename, &error); - if (error != NULL) + + handle = rsvg_handle_new_from_file (filename, &error); + if (!handle) FAIL (error->message); - gdk_pixbuf_save (pixbuf, output_filename, "png", &error, NULL); - if (error != NULL) + rsvg_handle_get_dimensions (handle, &dimensions); + + surface = cairo_image_surface_create (CAIRO_FORMAT_RGB24, + dimensions.width, dimensions.height); + cr = cairo_create (surface); + cairo_surface_destroy (surface); + + cairo_set_source_rgb (cr, 1,1,1); + cairo_paint (cr); + cairo_push_group_with_content (cr, CAIRO_CONTENT_COLOR_ALPHA); + + if (!rsvg_handle_render_cairo (handle, cr)) + FAIL (error->message); + + cairo_pop_group_to_source (cr); + cairo_paint (cr); + + status = cairo_surface_write_to_png (cairo_get_target (cr), + output_filename); + cairo_destroy (cr); + if (status) + FAIL (cairo_status_to_string (status)); + + if (!rsvg_handle_close (handle, &error)) FAIL (error->message); - g_object_unref (pixbuf); + g_object_unref (handle); return 0; } diff -Nru cairo-1.14.6/test/text-cache-crash.c cairo-1.15.10/test/text-cache-crash.c --- cairo-1.14.6/test/text-cache-crash.c 2015-10-27 21:04:30.000000000 +0000 +++ cairo-1.15.10/test/text-cache-crash.c 2017-12-07 02:14:36.000000000 +0000 @@ -66,11 +66,11 @@ draw (cairo_t *cr, int width, int height) { /* Once there was a bug that choked when selecting the same font twice. */ - cairo_select_font_face (cr, "sans", + cairo_select_font_face (cr, CAIRO_TEST_FONT_FAMILY " Sans", CAIRO_FONT_SLANT_NORMAL, CAIRO_FONT_WEIGHT_BOLD); cairo_set_font_size (cr, 40.0); - cairo_select_font_face (cr, "sans", + cairo_select_font_face (cr, CAIRO_TEST_FONT_FAMILY " Sans", CAIRO_FONT_SLANT_NORMAL, CAIRO_FONT_WEIGHT_BOLD); cairo_set_font_size (cr, 40.0); cairo_move_to (cr, 10, 50); diff -Nru cairo-1.14.6/test/text-unhinted-metrics.c cairo-1.15.10/test/text-unhinted-metrics.c --- cairo-1.14.6/test/text-unhinted-metrics.c 1970-01-01 00:00:00.000000000 +0000 +++ cairo-1.15.10/test/text-unhinted-metrics.c 2017-12-07 02:14:36.000000000 +0000 @@ -0,0 +1,73 @@ +/* + * Copyright © 2016 Adrian Johnson + * + * 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 + * Red Hat, Inc. not be used in advertising or publicity pertaining to + * distribution of the software without specific, written prior + * permission. Red Hat, Inc. makes no representations about the + * suitability of this software for any purpose. It is provided "as + * is" without express or implied warranty. + * + * RED HAT, INC. DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS + * SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND + * FITNESS, IN NO EVENT SHALL RED HAT, INC. BE LIABLE FOR ANY SPECIAL, + * INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER + * RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION + * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR + * IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + * + * Author: Adrian Johnson + */ + +/* Test CAIRO_HINT_METRICS_OFF with a TrueType font. + * + * Based on the test case in https://lists.cairographics.org/archives/cairo/2016-April/027334.html + */ + +#include "cairo-test.h" + +#define WIDTH 100 +#define HEIGHT 100 + +static cairo_test_status_t +draw (cairo_t *cr, int width, int height) +{ + cairo_font_options_t *font_options; + double size, y; + + cairo_set_source_rgb (cr, 1, 1, 1); + cairo_paint (cr); + + cairo_select_font_face (cr, CAIRO_TEST_FONT_FAMILY "DejaVu Sans Mono", + CAIRO_FONT_SLANT_NORMAL, + CAIRO_FONT_WEIGHT_NORMAL); + + font_options = cairo_font_options_create(); + cairo_get_font_options (cr, font_options); + cairo_font_options_set_hint_metrics (font_options, CAIRO_HINT_METRICS_OFF); + cairo_font_options_set_hint_style (font_options, CAIRO_HINT_STYLE_NONE); + cairo_set_font_options (cr, font_options); + cairo_font_options_destroy (font_options); + + y = 0.0; + cairo_set_source_rgb (cr, 0, 0, 0); + for (size = 8.0; size <= 10.0; size += 0.25) { + cairo_set_font_size (cr, size); + y += 10.0; + cairo_move_to (cr, 5, y); + cairo_show_text (cr, "abcdefghijklm"); + } + + return CAIRO_TEST_SUCCESS; +} + +CAIRO_TEST (text_unhinted_metrics, + "Test CAIRO_HINT_METRICS_OFF", + "text, font", /* keywords */ + NULL, /* requirements */ + WIDTH, HEIGHT, + NULL, draw) diff -Nru cairo-1.14.6/test/thin-lines.c cairo-1.15.10/test/thin-lines.c --- cairo-1.14.6/test/thin-lines.c 1970-01-01 00:00:00.000000000 +0000 +++ cairo-1.15.10/test/thin-lines.c 2017-12-07 02:14:36.000000000 +0000 @@ -0,0 +1,95 @@ +/* + * Copyright © 2015 Adrian Johnson + * + * 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 + * Red Hat, Inc. not be used in advertising or publicity pertaining to + * distribution of the software without specific, written prior + * permission. Red Hat, Inc. makes no representations about the + * suitability of this software for any purpose. It is provided "as + * is" without express or implied warranty. + * + * RED HAT, INC. DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS + * SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND + * FITNESS, IN NO EVENT SHALL RED HAT, INC. BE LIABLE FOR ANY SPECIAL, + * INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER + * RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION + * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR + * IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + * + * Author: Adrian Johnson + */ + +#include "cairo-test.h" + +#define CELL_WIDTH 20 +#define CELL_HEIGHT 20 +#define PAD 2 +#define IMAGE_WIDTH (CELL_WIDTH*3 + PAD*4) +#define IMAGE_HEIGHT (CELL_HEIGHT*4 + PAD*5) + + +static void +draw_lines(cairo_t *cr) +{ + /* horizontal line */ + cairo_translate (cr, PAD, PAD); + cairo_move_to (cr, 0, CELL_HEIGHT/2); + cairo_line_to (cr, CELL_WIDTH, CELL_HEIGHT/2); + cairo_stroke (cr); + + /* vertical line */ + cairo_translate (cr, 0, CELL_HEIGHT + PAD); + cairo_move_to (cr, CELL_WIDTH/2, 0); + cairo_line_to (cr, CELL_WIDTH/2, CELL_HEIGHT); + cairo_stroke (cr); + + /* diagonal line */ + cairo_translate (cr, 0, CELL_HEIGHT + PAD); + cairo_move_to (cr, 0, CELL_HEIGHT); + cairo_line_to (cr, CELL_WIDTH, 0); + cairo_stroke (cr); + + /* curved line */ + cairo_translate (cr, 0, CELL_HEIGHT + PAD); + cairo_move_to (cr, CELL_WIDTH, 0); + cairo_curve_to (cr, 0, 0, + CELL_WIDTH, CELL_HEIGHT, + 0, CELL_HEIGHT); + cairo_stroke (cr); +} + +#define FIXED_POINT_MIN (1.0/256) + +static cairo_test_status_t +draw (cairo_t *cr, int width, int height) +{ + cairo_save (cr); + cairo_set_line_width (cr, FIXED_POINT_MIN*10.0); + draw_lines (cr); + cairo_restore (cr); + + cairo_translate (cr, CELL_WIDTH + PAD, 0); + cairo_save (cr); + cairo_set_line_width (cr, FIXED_POINT_MIN); + draw_lines (cr); + cairo_restore (cr); + + cairo_translate (cr, CELL_WIDTH + PAD, 0); + cairo_save (cr); + cairo_set_line_width (cr, FIXED_POINT_MIN/10.0); + draw_lines (cr); + cairo_restore (cr); + + return CAIRO_TEST_SUCCESS; +} + +CAIRO_TEST (thin_lines, + "Tests that very thin lines are output to vector surfaces", + "stroke", /* keywords */ + NULL, /* requirements */ + IMAGE_WIDTH, IMAGE_HEIGHT, + NULL, draw) diff -Nru cairo-1.14.6/test/user-font-proxy.c cairo-1.15.10/test/user-font-proxy.c --- cairo-1.14.6/test/user-font-proxy.c 2015-10-27 21:04:30.000000000 +0000 +++ cairo-1.15.10/test/user-font-proxy.c 2017-12-07 02:14:36.000000000 +0000 @@ -127,7 +127,7 @@ /* This also happens to be default font face on cairo_t, so does * not make much sense here. For demonstration only. */ - fallback_font_face = cairo_toy_font_face_create ("", + fallback_font_face = cairo_toy_font_face_create (CAIRO_TEST_FONT_FAMILY " Sans", CAIRO_FONT_SLANT_NORMAL, CAIRO_FONT_WEIGHT_NORMAL); diff -Nru cairo-1.14.6/util/cairo-fdr/Makefile.am cairo-1.15.10/util/cairo-fdr/Makefile.am --- cairo-1.14.6/util/cairo-fdr/Makefile.am 2015-10-27 21:04:22.000000000 +0000 +++ cairo-1.15.10/util/cairo-fdr/Makefile.am 2017-12-07 02:14:36.000000000 +0000 @@ -9,7 +9,7 @@ cairo_fdr_la_SOURCES = fdr.c cairo_fdr_la_CPPFLAGS = $(AM_CPPFLAGS) cairo_fdr_la_CFLAGS = $(CAIRO_CFLAGS) -cairo_fdr_la_LDFLAGS = -module -no-undefined +cairo_fdr_la_LDFLAGS = -module -no-undefined -avoid-version if CAIRO_HAS_DL cairo_fdr_la_LIBADD = -ldl endif diff -Nru cairo-1.14.6/util/cairo-fdr/Makefile.in cairo-1.15.10/util/cairo-fdr/Makefile.in --- cairo-1.14.6/util/cairo-fdr/Makefile.in 2015-12-09 20:41:44.000000000 +0000 +++ cairo-1.15.10/util/cairo-fdr/Makefile.in 2017-12-11 21:03:11.000000000 +0000 @@ -1,7 +1,7 @@ -# Makefile.in generated by automake 1.14.1 from Makefile.am. +# Makefile.in generated by automake 1.15 from Makefile.am. # @configure_input@ -# Copyright (C) 1994-2013 Free Software Foundation, Inc. +# Copyright (C) 1994-2014 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -15,7 +15,17 @@ @SET_MAKE@ VPATH = @srcdir@ -am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' +am__is_gnu_make = { \ + if test -z '$(MAKELEVEL)'; then \ + false; \ + elif test -n '$(MAKE_HOST)'; then \ + true; \ + elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ + true; \ + else \ + false; \ + fi; \ +} am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ @@ -79,8 +89,6 @@ build_triplet = @build@ host_triplet = @host@ subdir = util/cairo-fdr -DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \ - $(top_srcdir)/build/depcomp ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/build/aclocal.cairo.m4 \ $(top_srcdir)/build/aclocal.compare.m4 \ @@ -105,6 +113,7 @@ $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) +DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = @@ -208,6 +217,7 @@ done | $(am__uniquify_input)` ETAGS = etags CTAGS = ctags +am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/build/depcomp DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ @@ -292,6 +302,7 @@ LTLIBOBJS = @LTLIBOBJS@ LTP = @LTP@ LTP_GENHTML = @LTP_GENHTML@ +LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MKDIR_P = @MKDIR_P@ @@ -368,6 +379,8 @@ gl_LIBS = @gl_LIBS@ glesv2_CFLAGS = @glesv2_CFLAGS@ glesv2_LIBS = @glesv2_LIBS@ +glesv3_CFLAGS = @glesv3_CFLAGS@ +glesv3_LIBS = @glesv3_LIBS@ glib_CFLAGS = @glib_CFLAGS@ glib_LIBS = @glib_LIBS@ gtk_CFLAGS = @gtk_CFLAGS@ @@ -405,6 +418,7 @@ qt_LIBS = @qt_LIBS@ real_pthread_CFLAGS = @real_pthread_CFLAGS@ real_pthread_LIBS = @real_pthread_LIBS@ +runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ shm_LIBS = @shm_LIBS@ @@ -435,7 +449,7 @@ cairo_fdr_la_SOURCES = fdr.c cairo_fdr_la_CPPFLAGS = $(AM_CPPFLAGS) cairo_fdr_la_CFLAGS = $(CAIRO_CFLAGS) -cairo_fdr_la_LDFLAGS = -module -no-undefined +cairo_fdr_la_LDFLAGS = -module -no-undefined -avoid-version @CAIRO_HAS_DL_TRUE@cairo_fdr_la_LIBADD = -ldl all: all-am @@ -453,7 +467,6 @@ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign util/cairo-fdr/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --foreign util/cairo-fdr/Makefile -.PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ @@ -759,6 +772,8 @@ mostlyclean-libtool pdf pdf-am ps ps-am tags tags-am uninstall \ uninstall-am uninstall-cairolibLTLIBRARIES +.PRECIOUS: Makefile + # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. diff -Nru cairo-1.14.6/util/cairo-gobject/cairo-gobject-enums.c cairo-1.15.10/util/cairo-gobject/cairo-gobject-enums.c --- cairo-1.14.6/util/cairo-gobject/cairo-gobject-enums.c 2015-10-27 21:04:22.000000000 +0000 +++ cairo-1.15.10/util/cairo-gobject/cairo-gobject-enums.c 2017-12-07 02:14:36.000000000 +0000 @@ -50,7 +50,12 @@ { CAIRO_STATUS_DEVICE_TYPE_MISMATCH, "CAIRO_STATUS_DEVICE_TYPE_MISMATCH", "device-type-mismatch" }, { CAIRO_STATUS_DEVICE_ERROR, "CAIRO_STATUS_DEVICE_ERROR", "device-error" }, { CAIRO_STATUS_INVALID_MESH_CONSTRUCTION, "CAIRO_STATUS_INVALID_MESH_CONSTRUCTION", "invalid-mesh-construction" }, - { CAIRO_STATUS_LAST_STATUS, "CAIRO_STATUS_LAST_STATUS", "last-status" }, + { CAIRO_STATUS_DEVICE_FINISHED, "CAIRO_STATUS_DEVICE_FINISHED", "device-finished" }, + { CAIRO_STATUS_JBIG2_GLOBAL_MISSING, "CAIRO_STATUS_JBIG2_GLOBAL_MISSING", "jbig2-global_missing" }, + { CAIRO_STATUS_PNG_ERROR, "CAIRO_STATUS_PNG_ERROR", "png-error" }, + { CAIRO_STATUS_FREETYPE_ERROR, "CAIRO_STATUS_FREETYPE_ERROR", "freetype-error" }, + { CAIRO_STATUS_LAST_STATUS, "CAIRO_STATUS_LAST_STATUS", "last-status" }, + { CAIRO_STATUS_WIN32_GDI_ERROR, "CAIRO_STATUS_WIN32_GDI_ERROR", "win32-gdi-error" }, { 0, NULL, NULL } }; GType type = g_enum_register_static (g_intern_static_string ("cairo_status_t"), values); diff -Nru cairo-1.14.6/util/cairo-gobject/Makefile.in cairo-1.15.10/util/cairo-gobject/Makefile.in --- cairo-1.14.6/util/cairo-gobject/Makefile.in 2015-12-09 20:41:44.000000000 +0000 +++ cairo-1.15.10/util/cairo-gobject/Makefile.in 2017-12-11 21:03:11.000000000 +0000 @@ -1,7 +1,7 @@ -# Makefile.in generated by automake 1.14.1 from Makefile.am. +# Makefile.in generated by automake 1.15 from Makefile.am. # @configure_input@ -# Copyright (C) 1994-2013 Free Software Foundation, Inc. +# Copyright (C) 1994-2014 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -16,7 +16,17 @@ VPATH = @srcdir@ -am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' +am__is_gnu_make = { \ + if test -z '$(MAKELEVEL)'; then \ + false; \ + elif test -n '$(MAKE_HOST)'; then \ + true; \ + elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ + true; \ + else \ + false; \ + fi; \ +} am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ @@ -80,8 +90,6 @@ build_triplet = @build@ host_triplet = @host@ subdir = util/cairo-gobject -DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \ - $(top_srcdir)/build/depcomp $(cairoinclude_HEADERS) ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/build/aclocal.cairo.m4 \ $(top_srcdir)/build/aclocal.compare.m4 \ @@ -106,6 +114,8 @@ $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) +DIST_COMMON = $(srcdir)/Makefile.am $(cairoinclude_HEADERS) \ + $(am__DIST_COMMON) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = @@ -215,6 +225,7 @@ done | $(am__uniquify_input)` ETAGS = etags CTAGS = ctags +am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/build/depcomp DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ @@ -299,6 +310,7 @@ LTLIBOBJS = @LTLIBOBJS@ LTP = @LTP@ LTP_GENHTML = @LTP_GENHTML@ +LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MKDIR_P = @MKDIR_P@ @@ -375,6 +387,8 @@ gl_LIBS = @gl_LIBS@ glesv2_CFLAGS = @glesv2_CFLAGS@ glesv2_LIBS = @glesv2_LIBS@ +glesv3_CFLAGS = @glesv3_CFLAGS@ +glesv3_LIBS = @glesv3_LIBS@ glib_CFLAGS = @glib_CFLAGS@ glib_LIBS = @glib_LIBS@ gtk_CFLAGS = @gtk_CFLAGS@ @@ -412,6 +426,7 @@ qt_LIBS = @qt_LIBS@ real_pthread_CFLAGS = @real_pthread_CFLAGS@ real_pthread_LIBS = @real_pthread_LIBS@ +runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ shm_LIBS = @shm_LIBS@ @@ -460,7 +475,6 @@ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign util/cairo-gobject/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --foreign util/cairo-gobject/Makefile -.PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ @@ -796,6 +810,8 @@ tags tags-am uninstall uninstall-am \ uninstall-cairoincludeHEADERS uninstall-libLTLIBRARIES +.PRECIOUS: Makefile + # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. diff -Nru cairo-1.14.6/util/cairo-missing/Makefile.in cairo-1.15.10/util/cairo-missing/Makefile.in --- cairo-1.14.6/util/cairo-missing/Makefile.in 2015-12-09 20:41:44.000000000 +0000 +++ cairo-1.15.10/util/cairo-missing/Makefile.in 2017-12-11 21:03:11.000000000 +0000 @@ -1,7 +1,7 @@ -# Makefile.in generated by automake 1.14.1 from Makefile.am. +# Makefile.in generated by automake 1.15 from Makefile.am. # @configure_input@ -# Copyright (C) 1994-2013 Free Software Foundation, Inc. +# Copyright (C) 1994-2014 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -15,7 +15,17 @@ @SET_MAKE@ VPATH = @srcdir@ -am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' +am__is_gnu_make = { \ + if test -z '$(MAKELEVEL)'; then \ + false; \ + elif test -n '$(MAKE_HOST)'; then \ + true; \ + elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ + true; \ + else \ + false; \ + fi; \ +} am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ @@ -78,9 +88,6 @@ POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ -DIST_COMMON = $(top_srcdir)/util/cairo-missing/Makefile.sources \ - $(srcdir)/Makefile.in $(srcdir)/Makefile.am \ - $(top_srcdir)/build/depcomp subdir = util/cairo-missing ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/build/aclocal.cairo.m4 \ @@ -106,6 +113,7 @@ $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) +DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = @@ -180,6 +188,8 @@ done | $(am__uniquify_input)` ETAGS = etags CTAGS = ctags +am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/build/depcomp \ + $(top_srcdir)/util/cairo-missing/Makefile.sources DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ @@ -264,6 +274,7 @@ LTLIBOBJS = @LTLIBOBJS@ LTP = @LTP@ LTP_GENHTML = @LTP_GENHTML@ +LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MKDIR_P = @MKDIR_P@ @@ -340,6 +351,8 @@ gl_LIBS = @gl_LIBS@ glesv2_CFLAGS = @glesv2_CFLAGS@ glesv2_LIBS = @glesv2_LIBS@ +glesv3_CFLAGS = @glesv3_CFLAGS@ +glesv3_LIBS = @glesv3_LIBS@ glib_CFLAGS = @glib_CFLAGS@ glib_LIBS = @glib_LIBS@ gtk_CFLAGS = @gtk_CFLAGS@ @@ -377,6 +390,7 @@ qt_LIBS = @qt_LIBS@ real_pthread_CFLAGS = @real_pthread_CFLAGS@ real_pthread_LIBS = @real_pthread_LIBS@ +runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ shm_LIBS = @shm_LIBS@ @@ -429,7 +443,6 @@ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign util/cairo-missing/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --foreign util/cairo-missing/Makefile -.PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ @@ -438,7 +451,7 @@ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; -$(top_srcdir)/util/cairo-missing/Makefile.sources: +$(top_srcdir)/util/cairo-missing/Makefile.sources $(am__empty): $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh @@ -702,6 +715,8 @@ mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ tags tags-am uninstall uninstall-am +.PRECIOUS: Makefile + # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. diff -Nru cairo-1.14.6/util/cairo-script/cairo-script-interpreter.c cairo-1.15.10/util/cairo-script/cairo-script-interpreter.c --- cairo-1.14.6/util/cairo-script/cairo-script-interpreter.c 2015-10-27 21:04:22.000000000 +0000 +++ cairo-1.15.10/util/cairo-script/cairo-script-interpreter.c 2017-12-07 02:13:46.000000000 +0000 @@ -179,6 +179,17 @@ #endif } +csi_status_t +_csi_stack_push (csi_t *ctx, csi_stack_t *stack, + const csi_object_t *obj) +{ + if (_csi_unlikely (stack->len == stack->size)) + return _csi_stack_push_internal (ctx, stack, obj); + + stack->objects[stack->len++] = *obj; + return CSI_STATUS_SUCCESS; +} + static void _csi_perm_fini (csi_t *ctx) { diff -Nru cairo-1.14.6/util/cairo-script/cairo-script-operators.c cairo-1.15.10/util/cairo-script/cairo-script-operators.c --- cairo-1.14.6/util/cairo-script/cairo-script-operators.c 2015-10-27 21:04:22.000000000 +0000 +++ cairo-1.15.10/util/cairo-script/cairo-script-operators.c 2017-12-07 02:14:36.000000000 +0000 @@ -4810,8 +4810,8 @@ if (_csi_likely (array->stack.len < ARRAY_LENGTH (stack_dashes))) { dashes = stack_dashes; } else { - if (_csi_unlikely ((unsigned) array->stack.len >= INT_MAX / sizeof (double))) - return _csi_error (CSI_STATUS_NO_MEMORY); + if (_csi_unlikely ((unsigned) array->stack.len >= INT_MAX / sizeof (double))) + return _csi_error (CSI_STATUS_NO_MEMORY); dashes = _csi_alloc (ctx, sizeof (double) * array->stack.len); if (_csi_unlikely (dashes == NULL)) return _csi_error (CSI_STATUS_NO_MEMORY); diff -Nru cairo-1.14.6/util/cairo-script/cairo-script-private.h cairo-1.15.10/util/cairo-script/cairo-script-private.h --- cairo-1.14.6/util/cairo-script/cairo-script-private.h 2015-10-27 21:04:22.000000000 +0000 +++ cairo-1.15.10/util/cairo-script/cairo-script-private.h 2017-12-07 02:14:36.000000000 +0000 @@ -219,6 +219,16 @@ CSI_STATUS_INVALID_CLUSTERS = CAIRO_STATUS_INVALID_CLUSTERS, CSI_STATUS_INVALID_SLANT = CAIRO_STATUS_INVALID_SLANT, CSI_STATUS_INVALID_WEIGHT = CAIRO_STATUS_INVALID_WEIGHT, + CSI_STATUS_INVALID_SIZE = CAIRO_STATUS_INVALID_SIZE, + CSI_STATUS_USER_FONT_NOT_IMPLEMENTED = CAIRO_STATUS_USER_FONT_NOT_IMPLEMENTED, + CSI_STATUS_DEVICE_TYPE_MISMATCH = CAIRO_STATUS_DEVICE_TYPE_MISMATCH, + CSI_STATUS_DEVICE_ERROR = CAIRO_STATUS_DEVICE_ERROR, + CSI_STATUS_INVALID_MESH_CONSTRUCTION = CAIRO_STATUS_INVALID_MESH_CONSTRUCTION, + CSI_STATUS_DEVICE_FINISHED = CAIRO_STATUS_DEVICE_FINISHED, + CSI_STATUS_JBIG2_GLOBAL_MISSING = CAIRO_STATUS_JBIG2_GLOBAL_MISSING, + CSI_STATUS_PNG_ERROR = CAIRO_STATUS_PNG_ERROR, + CSI_STATUS_FREETYPE_ERROR = CAIRO_STATUS_FREETYPE_ERROR, + CSI_STATUS_WIN32_GDI_ERROR = CAIRO_STATUS_WIN32_GDI_ERROR, /* cairo-script-interpreter specific errors */ @@ -906,16 +916,9 @@ } } -static inline csi_status_t +csi_status_t _csi_stack_push (csi_t *ctx, csi_stack_t *stack, - const csi_object_t *obj) -{ - if (_csi_unlikely (stack->len == stack->size)) - return _csi_stack_push_internal (ctx, stack, obj); - - stack->objects[stack->len++] = *obj; - return CSI_STATUS_SUCCESS; -} + const csi_object_t *obj); static inline csi_boolean_t _csi_check_ostack (csi_t *ctx, csi_integer_t count) diff -Nru cairo-1.14.6/util/cairo-script/examples/Makefile.in cairo-1.15.10/util/cairo-script/examples/Makefile.in --- cairo-1.14.6/util/cairo-script/examples/Makefile.in 2015-12-09 20:41:45.000000000 +0000 +++ cairo-1.15.10/util/cairo-script/examples/Makefile.in 2017-12-11 21:03:11.000000000 +0000 @@ -1,7 +1,7 @@ -# Makefile.in generated by automake 1.14.1 from Makefile.am. +# Makefile.in generated by automake 1.15 from Makefile.am. # @configure_input@ -# Copyright (C) 1994-2013 Free Software Foundation, Inc. +# Copyright (C) 1994-2014 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -14,7 +14,17 @@ @SET_MAKE@ VPATH = @srcdir@ -am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' +am__is_gnu_make = { \ + if test -z '$(MAKELEVEL)'; then \ + false; \ + elif test -n '$(MAKE_HOST)'; then \ + true; \ + elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ + true; \ + else \ + false; \ + fi; \ +} am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ @@ -78,7 +88,6 @@ build_triplet = @build@ host_triplet = @host@ subdir = util/cairo-script/examples -DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/build/aclocal.cairo.m4 \ $(top_srcdir)/build/aclocal.compare.m4 \ @@ -103,6 +112,7 @@ $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) +DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = @@ -127,6 +137,7 @@ *) (install-info --version) >/dev/null 2>&1;; \ esac am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) +am__DIST_COMMON = $(srcdir)/Makefile.in DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ @@ -211,6 +222,7 @@ LTLIBOBJS = @LTLIBOBJS@ LTP = @LTP@ LTP_GENHTML = @LTP_GENHTML@ +LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MKDIR_P = @MKDIR_P@ @@ -287,6 +299,8 @@ gl_LIBS = @gl_LIBS@ glesv2_CFLAGS = @glesv2_CFLAGS@ glesv2_LIBS = @glesv2_LIBS@ +glesv3_CFLAGS = @glesv3_CFLAGS@ +glesv3_LIBS = @glesv3_LIBS@ glib_CFLAGS = @glib_CFLAGS@ glib_LIBS = @glib_LIBS@ gtk_CFLAGS = @gtk_CFLAGS@ @@ -324,6 +338,7 @@ qt_LIBS = @qt_LIBS@ real_pthread_CFLAGS = @real_pthread_CFLAGS@ real_pthread_LIBS = @real_pthread_LIBS@ +runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ shm_LIBS = @shm_LIBS@ @@ -370,7 +385,6 @@ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign util/cairo-script/examples/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --foreign util/cairo-script/examples/Makefile -.PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ @@ -545,6 +559,8 @@ mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ tags-am uninstall uninstall-am +.PRECIOUS: Makefile + # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. diff -Nru cairo-1.14.6/util/cairo-script/Makefile.in cairo-1.15.10/util/cairo-script/Makefile.in --- cairo-1.14.6/util/cairo-script/Makefile.in 2015-12-09 20:41:45.000000000 +0000 +++ cairo-1.15.10/util/cairo-script/Makefile.in 2017-12-11 21:03:11.000000000 +0000 @@ -1,7 +1,7 @@ -# Makefile.in generated by automake 1.14.1 from Makefile.am. +# Makefile.in generated by automake 1.15 from Makefile.am. # @configure_input@ -# Copyright (C) 1994-2013 Free Software Foundation, Inc. +# Copyright (C) 1994-2014 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -16,7 +16,17 @@ VPATH = @srcdir@ -am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' +am__is_gnu_make = { \ + if test -z '$(MAKELEVEL)'; then \ + false; \ + elif test -n '$(MAKE_HOST)'; then \ + true; \ + elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ + true; \ + else \ + false; \ + fi; \ +} am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ @@ -79,9 +89,6 @@ POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ -DIST_COMMON = $(top_srcdir)/util/cairo-script/Makefile.sources \ - $(srcdir)/Makefile.in $(srcdir)/Makefile.am \ - $(top_srcdir)/build/depcomp $(cairoinclude_HEADERS) COPYING EXTRA_PROGRAMS = csi-replay$(EXEEXT) csi-exec$(EXEEXT) \ csi-bind$(EXEEXT) $(am__EXEEXT_1) @CAIRO_HAS_SCRIPT_SURFACE_TRUE@am__append_1 = csi-trace @@ -110,6 +117,8 @@ $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) +DIST_COMMON = $(srcdir)/Makefile.am $(cairoinclude_HEADERS) \ + $(am__DIST_COMMON) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = @@ -271,6 +280,8 @@ ETAGS = etags CTAGS = ctags DIST_SUBDIRS = $(SUBDIRS) +am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/build/depcomp \ + $(top_srcdir)/util/cairo-script/Makefile.sources COPYING DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) am__relativize = \ dir0=`pwd`; \ @@ -380,6 +391,7 @@ LTLIBOBJS = @LTLIBOBJS@ LTP = @LTP@ LTP_GENHTML = @LTP_GENHTML@ +LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MKDIR_P = @MKDIR_P@ @@ -456,6 +468,8 @@ gl_LIBS = @gl_LIBS@ glesv2_CFLAGS = @glesv2_CFLAGS@ glesv2_LIBS = @glesv2_LIBS@ +glesv3_CFLAGS = @glesv3_CFLAGS@ +glesv3_LIBS = @glesv3_LIBS@ glib_CFLAGS = @glib_CFLAGS@ glib_LIBS = @glib_LIBS@ gtk_CFLAGS = @gtk_CFLAGS@ @@ -493,6 +507,7 @@ qt_LIBS = @qt_LIBS@ real_pthread_CFLAGS = @real_pthread_CFLAGS@ real_pthread_LIBS = @real_pthread_LIBS@ +runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ shm_LIBS = @shm_LIBS@ @@ -566,7 +581,6 @@ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign util/cairo-script/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --foreign util/cairo-script/Makefile -.PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ @@ -575,7 +589,7 @@ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; -$(top_srcdir)/util/cairo-script/Makefile.sources: +$(top_srcdir)/util/cairo-script/Makefile.sources $(am__empty): $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh @@ -1050,6 +1064,8 @@ pdf pdf-am ps ps-am tags tags-am uninstall uninstall-am \ uninstall-cairoincludeHEADERS uninstall-libLTLIBRARIES +.PRECIOUS: Makefile + # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. diff -Nru cairo-1.14.6/util/cairo-sphinx/Makefile.am cairo-1.15.10/util/cairo-sphinx/Makefile.am --- cairo-1.14.6/util/cairo-sphinx/Makefile.am 2015-10-27 21:04:22.000000000 +0000 +++ cairo-1.15.10/util/cairo-sphinx/Makefile.am 2017-12-07 02:14:36.000000000 +0000 @@ -11,7 +11,7 @@ cairo_sphinx_la_SOURCES = fdr.c cairo_sphinx_la_CPPFLAGS = $(AM_CPPFLAGS) cairo_sphinx_la_CFLAGS = $(CAIRO_CFLAGS) -cairo_sphinx_la_LDFLAGS = -module -no-undefined +cairo_sphinx_la_LDFLAGS = -module -no-undefined -avoid-version if CAIRO_HAS_DL cairo_sphinx_la_LIBADD = -ldl endif diff -Nru cairo-1.14.6/util/cairo-sphinx/Makefile.in cairo-1.15.10/util/cairo-sphinx/Makefile.in --- cairo-1.14.6/util/cairo-sphinx/Makefile.in 2015-12-09 20:41:45.000000000 +0000 +++ cairo-1.15.10/util/cairo-sphinx/Makefile.in 2017-12-11 21:03:11.000000000 +0000 @@ -1,7 +1,7 @@ -# Makefile.in generated by automake 1.14.1 from Makefile.am. +# Makefile.in generated by automake 1.15 from Makefile.am. # @configure_input@ -# Copyright (C) 1994-2013 Free Software Foundation, Inc. +# Copyright (C) 1994-2014 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -16,7 +16,17 @@ VPATH = @srcdir@ -am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' +am__is_gnu_make = { \ + if test -z '$(MAKELEVEL)'; then \ + false; \ + elif test -n '$(MAKE_HOST)'; then \ + true; \ + elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ + true; \ + else \ + false; \ + fi; \ +} am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ @@ -81,8 +91,6 @@ host_triplet = @host@ bin_PROGRAMS = cairo-sphinx$(EXEEXT) subdir = util/cairo-sphinx -DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \ - $(top_srcdir)/build/depcomp ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/build/aclocal.cairo.m4 \ $(top_srcdir)/build/aclocal.compare.m4 \ @@ -107,6 +115,7 @@ $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) +DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = @@ -218,6 +227,7 @@ done | $(am__uniquify_input)` ETAGS = etags CTAGS = ctags +am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/build/depcomp DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ @@ -302,6 +312,7 @@ LTLIBOBJS = @LTLIBOBJS@ LTP = @LTP@ LTP_GENHTML = @LTP_GENHTML@ +LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MKDIR_P = @MKDIR_P@ @@ -378,6 +389,8 @@ gl_LIBS = @gl_LIBS@ glesv2_CFLAGS = @glesv2_CFLAGS@ glesv2_LIBS = @glesv2_LIBS@ +glesv3_CFLAGS = @glesv3_CFLAGS@ +glesv3_LIBS = @glesv3_LIBS@ glib_CFLAGS = @glib_CFLAGS@ glib_LIBS = @glib_LIBS@ gtk_CFLAGS = @gtk_CFLAGS@ @@ -415,6 +428,7 @@ qt_LIBS = @qt_LIBS@ real_pthread_CFLAGS = @real_pthread_CFLAGS@ real_pthread_LIBS = @real_pthread_LIBS@ +runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ shm_LIBS = @shm_LIBS@ @@ -445,7 +459,7 @@ cairo_sphinx_la_SOURCES = fdr.c cairo_sphinx_la_CPPFLAGS = $(AM_CPPFLAGS) cairo_sphinx_la_CFLAGS = $(CAIRO_CFLAGS) -cairo_sphinx_la_LDFLAGS = -module -no-undefined +cairo_sphinx_la_LDFLAGS = -module -no-undefined -avoid-version @CAIRO_HAS_DL_TRUE@cairo_sphinx_la_LIBADD = -ldl cairo_sphinx_SOURCES = sphinx.c cairo_sphinx_CPPFLAGS = $(AM_CPPFLAGS) -DLIBDIR="\"$(cairolibdir)\"" @@ -480,7 +494,6 @@ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign util/cairo-sphinx/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --foreign util/cairo-sphinx/Makefile -.PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ @@ -856,6 +869,8 @@ uninstall-am uninstall-binPROGRAMS \ uninstall-cairolibLTLIBRARIES +.PRECIOUS: Makefile + # Install rules to rebuild the libraries and add explicit dependencies $(top_builddir)/boilerplate/libcairoboilerplate.la: $(top_builddir)/src/libcairo.la diff -Nru cairo-1.14.6/util/cairo-trace/Makefile.am cairo-1.15.10/util/cairo-trace/Makefile.am --- cairo-1.14.6/util/cairo-trace/Makefile.am 2015-10-27 21:04:22.000000000 +0000 +++ cairo-1.15.10/util/cairo-trace/Makefile.am 2017-12-07 02:14:36.000000000 +0000 @@ -11,7 +11,7 @@ libcairo_trace_la_CPPFLAGS = -DCAIRO_TRACE_OUTDIR="\"$(cairooutdir)\"" \ $(AM_CPPFLAGS) libcairo_trace_la_CFLAGS = $(CAIRO_CFLAGS) $(real_pthread_CFLAGS) -libcairo_trace_la_LDFLAGS = -no-undefined +libcairo_trace_la_LDFLAGS = -module -no-undefined -avoid-version libcairo_trace_la_LIBADD = $(real_pthread_LIBS) -lz if CAIRO_HAS_DL diff -Nru cairo-1.14.6/util/cairo-trace/Makefile.in cairo-1.15.10/util/cairo-trace/Makefile.in --- cairo-1.14.6/util/cairo-trace/Makefile.in 2015-12-09 20:41:45.000000000 +0000 +++ cairo-1.15.10/util/cairo-trace/Makefile.in 2017-12-11 21:03:11.000000000 +0000 @@ -1,7 +1,7 @@ -# Makefile.in generated by automake 1.14.1 from Makefile.am. +# Makefile.in generated by automake 1.15 from Makefile.am. # @configure_input@ -# Copyright (C) 1994-2013 Free Software Foundation, Inc. +# Copyright (C) 1994-2014 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -16,7 +16,17 @@ VPATH = @srcdir@ -am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' +am__is_gnu_make = { \ + if test -z '$(MAKELEVEL)'; then \ + false; \ + elif test -n '$(MAKE_HOST)'; then \ + true; \ + elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ + true; \ + else \ + false; \ + fi; \ +} am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ @@ -86,8 +96,6 @@ @CAIRO_HAS_SYMBOL_LOOKUP_TRUE@am__append_3 = $(BFD_LIBS) subdir = util/cairo-trace -DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \ - $(srcdir)/cairo-trace.in $(top_srcdir)/build/depcomp COPYING ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/build/aclocal.cairo.m4 \ $(top_srcdir)/build/aclocal.compare.m4 \ @@ -112,6 +120,7 @@ $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) +DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = cairo-trace @@ -225,6 +234,8 @@ done | $(am__uniquify_input)` ETAGS = etags CTAGS = ctags +am__DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/cairo-trace.in \ + $(top_srcdir)/build/depcomp COPYING DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ @@ -309,6 +320,7 @@ LTLIBOBJS = @LTLIBOBJS@ LTP = @LTP@ LTP_GENHTML = @LTP_GENHTML@ +LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MKDIR_P = @MKDIR_P@ @@ -385,6 +397,8 @@ gl_LIBS = @gl_LIBS@ glesv2_CFLAGS = @glesv2_CFLAGS@ glesv2_LIBS = @glesv2_LIBS@ +glesv3_CFLAGS = @glesv3_CFLAGS@ +glesv3_LIBS = @glesv3_LIBS@ glib_CFLAGS = @glib_CFLAGS@ glib_LIBS = @glib_LIBS@ gtk_CFLAGS = @gtk_CFLAGS@ @@ -422,6 +436,7 @@ qt_LIBS = @qt_LIBS@ real_pthread_CFLAGS = @real_pthread_CFLAGS@ real_pthread_LIBS = @real_pthread_LIBS@ +runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ shm_LIBS = @shm_LIBS@ @@ -454,7 +469,7 @@ $(AM_CPPFLAGS) libcairo_trace_la_CFLAGS = $(CAIRO_CFLAGS) $(real_pthread_CFLAGS) -libcairo_trace_la_LDFLAGS = -no-undefined +libcairo_trace_la_LDFLAGS = -module -no-undefined -avoid-version libcairo_trace_la_LIBADD = $(real_pthread_LIBS) -lz $(am__append_1) \ $(am__append_3) EXTRA_DIST = \ @@ -478,7 +493,6 @@ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign util/cairo-trace/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --foreign util/cairo-trace/Makefile -.PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ @@ -830,6 +844,8 @@ tags tags-am uninstall uninstall-am uninstall-binSCRIPTS \ uninstall-cairolibLTLIBRARIES +.PRECIOUS: Makefile + system-install: install -mkdir -p $(cairooutdir) diff -Nru cairo-1.14.6/util/cairo-trace/trace.c cairo-1.15.10/util/cairo-trace/trace.c --- cairo-1.14.6/util/cairo-trace/trace.c 2015-10-27 21:04:22.000000000 +0000 +++ cairo-1.15.10/util/cairo-trace/trace.c 2017-12-07 02:14:36.000000000 +0000 @@ -1582,6 +1582,10 @@ f(INVALID_MESH_CONSTRUCTION); f(DEVICE_FINISHED); f(JBIG2_GLOBAL_MISSING); + f(PNG_ERROR); + f(FREETYPE_ERROR); + f(WIN32_GDI_ERROR); + f(TAG_ERROR); case CAIRO_STATUS_LAST_STATUS: break; } diff -Nru cairo-1.14.6/util/font-view.c cairo-1.15.10/util/font-view.c --- cairo-1.14.6/util/font-view.c 2015-10-27 21:04:22.000000000 +0000 +++ cairo-1.15.10/util/font-view.c 2017-12-07 02:13:46.000000000 +0000 @@ -24,6 +24,8 @@ * Author: Chris Wilson */ +#include +#include #include #include diff -Nru cairo-1.14.6/util/Makefile.in cairo-1.15.10/util/Makefile.in --- cairo-1.14.6/util/Makefile.in 2015-12-09 20:41:44.000000000 +0000 +++ cairo-1.15.10/util/Makefile.in 2017-12-11 21:03:11.000000000 +0000 @@ -1,7 +1,7 @@ -# Makefile.in generated by automake 1.14.1 from Makefile.am. +# Makefile.in generated by automake 1.15 from Makefile.am. # @configure_input@ -# Copyright (C) 1994-2013 Free Software Foundation, Inc. +# Copyright (C) 1994-2014 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -14,7 +14,17 @@ @SET_MAKE@ VPATH = @srcdir@ -am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' +am__is_gnu_make = { \ + if test -z '$(MAKELEVEL)'; then \ + false; \ + elif test -n '$(MAKE_HOST)'; then \ + true; \ + elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ + true; \ + else \ + false; \ + fi; \ +} am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ @@ -77,10 +87,6 @@ POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ -DIST_COMMON = $(top_srcdir)/build/Makefile.am.common \ - $(srcdir)/Makefile.in $(srcdir)/Makefile.am \ - $(top_srcdir)/build/depcomp $(top_srcdir)/build/test-driver \ - COPYING README EXTRA_PROGRAMS = show-contour$(EXEEXT) show-traps$(EXEEXT) \ show-edges$(EXEEXT) show-polygon$(EXEEXT) show-events$(EXEEXT) \ $(am__EXEEXT_1) $(am__EXEEXT_2) @@ -120,6 +126,7 @@ $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) +DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = @@ -468,6 +475,10 @@ esac DIST_SUBDIRS = . cairo-missing cairo-gobject cairo-script cairo-trace \ cairo-fdr cairo-sphinx +am__DIST_COMMON = $(srcdir)/Makefile.in \ + $(top_srcdir)/build/Makefile.am.common \ + $(top_srcdir)/build/depcomp $(top_srcdir)/build/test-driver \ + COPYING README DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) am__relativize = \ dir0=`pwd`; \ @@ -577,6 +588,7 @@ LTLIBOBJS = @LTLIBOBJS@ LTP = @LTP@ LTP_GENHTML = @LTP_GENHTML@ +LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MKDIR_P = @MKDIR_P@ @@ -653,6 +665,8 @@ gl_LIBS = @gl_LIBS@ glesv2_CFLAGS = @glesv2_CFLAGS@ glesv2_LIBS = @glesv2_LIBS@ +glesv3_CFLAGS = @glesv3_CFLAGS@ +glesv3_LIBS = @glesv3_LIBS@ glib_CFLAGS = @glib_CFLAGS@ glib_LIBS = @glib_LIBS@ gtk_CFLAGS = @gtk_CFLAGS@ @@ -690,6 +704,7 @@ qt_LIBS = @qt_LIBS@ real_pthread_CFLAGS = @real_pthread_CFLAGS@ real_pthread_LIBS = @real_pthread_LIBS@ +runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ shm_LIBS = @shm_LIBS@ @@ -770,7 +785,6 @@ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign util/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --foreign util/Makefile -.PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ @@ -779,7 +793,7 @@ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; -$(top_srcdir)/build/Makefile.am.common: +$(top_srcdir)/build/Makefile.am.common $(am__empty): $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh @@ -1094,7 +1108,7 @@ if test -n "$$am__remaking_logs"; then \ echo "fatal: making $(TEST_SUITE_LOG): possible infinite" \ "recursion detected" >&2; \ - else \ + elif test -n "$$redo_logs"; then \ am__remaking_logs=yes $(MAKE) $(AM_MAKEFLAGS) $$redo_logs; \ fi; \ if $(am__make_dryrun); then :; else \ @@ -1410,6 +1424,8 @@ mostlyclean-libtool pdf pdf-am ps ps-am recheck tags tags-am \ uninstall uninstall-am +.PRECIOUS: Makefile + util: malloc-stats.so backtrace-symbols.so