commit 0359a8825e0db9c91d0335b0394f3ef70771d48f Author: Federico Mena Quintero Date: Wed Oct 4 10:30:42 2017 -0500 Update NEWS NEWS | 2 ++ 1 file changed, 2 insertions(+) commit 511f76c7e421430eec869359aa925f462cea7379 Author: Federico Mena Quintero Date: Tue Apr 18 11:22:18 2017 -0500 Backport: bgo#634324 - Gaussian blur with negative-scaling transformation matrix is not rendered From commit f7ccfbff857b5ec8d7ace494e20f28d97f1c91f1 When we figure out the standard deviations for Gaussian blurs, we were simply multiplying the given values by the scaling factors in the current transformation. But if this is a negative-scaling matrix, we'd get negative values, and we would not do a blur at all. Take the absolute value of the scaled factors instead. https://bugzilla.gnome.org/show_bug.cgi?id=634324 rsvg-filter.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) commit 05fd03117bffbae36b28b5ea7934520b46751476 Author: Federico Mena Quintero Date: Wed Jan 11 15:33:31 2017 -0600 bgo#777155 - Ignore patterns that have close-to-zero dimensions A fuzzed file yielded a pattern that had (0, 0) for a pattern's width and height. We try to invert a scaling matrix based on those dimensions; this would fail for such a pattern. Now we ignore patterns that have unspecified dimensions, or that are very close to zero. https://bugzilla.gnome.org/show_bug.cgi?id=777155 rsvg-cairo-draw.c | 13 ++++-- .../render-crash/777155-zero-sized-pattern.svg | 50 ++++++++++++++++++++++ 2 files changed, 59 insertions(+), 4 deletions(-) commit 721fbee0821551696cf5bf9ab9b609c6f8a2ce5a Author: Federico Mena Quintero Date: Wed Jan 11 15:50:26 2017 -0600 Backport: tests/render-crash: New test for things that crash the rendering code From commit 3a3becd2045ed6b5e264bdfbd7c53c799e5abe7c Sometimes we don't have rendering bugs in the generated image, but SVG files that just crash the rendering code. Add a test for this. If you put a SVG under tests/fixtures/render-crash, that file is expected to render and *not* crash. The actual rendered image is ignored. tests/Makefile.am | 6 +++++ tests/render-crash.c | 68 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 74 insertions(+) commit cd174196792bd6c3b849b6beb9e3ff61b727a607 Author: Federico Mena Quintero Date: Wed Oct 4 10:23:47 2017 -0500 Distribute test resources as well tests/Makefile.am | 53 +++++++++++++++++++++++++++-------------------------- 1 file changed, 27 insertions(+), 26 deletions(-) commit 8bc6db1c7bc862db30b3dc2e4e0321aa3022c2d9 Author: Federico Mena Quintero Date: Wed Oct 4 09:36:11 2017 -0500 Update NEWS NEWS | 4 ++++ 1 file changed, 4 insertions(+) commit f30913447a9594d8811cfceee21b0d1ea2af84f4 Author: Federico Mena Quintero Date: Wed Oct 4 10:10:45 2017 -0500 Enable test again ...text-transform-ref.png => 587721-text-transform-ref.png} | Bin ...-587721-text-transform.svg => 587721-text-transform.svg} | 0 2 files changed, 0 insertions(+), 0 deletions(-) commit 14602403106d13431d874c6342c63d3487a005e1 Author: Federico Mena Quintero Date: Wed Dec 7 13:57:08 2016 -0600 Backport: rsvg_cairo_render_new(): Initialize ->bbox to the identity affine From commit d37e275bc6f6d3ff1d81680433903574f6a508d1 Otherwise, when filters cause rsvg_get_surface_of_node() to be called, that function will create a RsvgCairoRender with an all-zeros bbox and bbox.affine. This all-zeros affine causes cairo_matrix_invert() inside RsvbBbox::clip()/insert() to fail. In the C version it failed silently, since it ignored failures from cairo_matrix_invert(). The Rust version panic()s when a matrix can't be inverted. rsvg-cairo-render.c | 4 ++++ 1 file changed, 4 insertions(+) commit 5649d08533846ff540f4f654af128f26aea0c642 Author: Federico Mena Quintero Date: Wed Oct 4 09:39:11 2017 -0500 Backport: cross-compiling bits for gdk-pixbuf-loader From commit 30a91d1e1f2df9ad4d6b28ed635e69619b1ed8b3 configure.ac | 2 ++ gdk-pixbuf-loader/Makefile.am | 23 ++++++++++++++++++++++- 2 files changed, 24 insertions(+), 1 deletion(-) commit 892a29c2b5010bfd4a952d842fc690425a258690 Author: Federico Mena Quintero Date: Wed Oct 4 09:33:01 2017 -0500 Backport: build: Check for PangoFT2/FontConfig availability From commit 46c8688aa1795958fb1308c2bf5ea29295fe6c23 On Windows the GTK+ stack does not hard depend on PangoFT2 (thus Fontconfig--GTK+ uses PangoWin32 to do the Font discovery and configuration stuff by default, unless one uses an envvar to force PangoFT2 usage), unlike *NIX platforms, so we need to check for it by doing: -On Windows, enable the test code that uses PangoFT2/FontConfig if PangoFT2 and FontConfig is found during configure. On Visual Studio builds, this is set to be disabled in config.h.win32(.in), and can be manually enabled by uncommenting #define HAVE_PANGOFT2 1 in config.h.win32 prior to the build (or rebuild). This continues to have FontConfig and PangoFT2 to act as an optional dependency. -On non-Windows platforms, make PangoFT2 and FontConfig a hard dependency, which is what the current code assumes. We might probably need to make the custom TTF load via PangoWin32 and/or the native Windows API to run the tests when PangoFT2 and FontConfig are not found on Windows. Also bump the Pango dependency to 1.38 as the test code uses API that is introduced in 1.38.x. https://bugzilla.gnome.org/show_bug.cgi?id=779405 config.h.win32.in | 3 +++ configure.ac | 22 ++++++++++++++++++++-- rsvg-cairo-clip.c | 2 ++ rsvg-cairo-draw.c | 23 +++++++++++++++++------ rsvg-cairo-render.c | 13 +++++++++++++ rsvg-cairo-render.h | 6 ++++++ 6 files changed, 61 insertions(+), 8 deletions(-) commit 823e30ed5ebce64ffd7c5f6e307ef7a822ee896f Author: Federico Mena Quintero Date: Thu Mar 2 18:50:39 2017 -0600 Backport: bgo#777834: Don't try to render text whose PangoLayout has zero extents From commit 8bf4354fdc3703c0ea6ecec86ce2f3583933c03a Text elements sometimes have children with empty strings for their contents, so PangoLayout returns an ink_rect with (width, height) = (0, 0). In this case, we would set a bbox's size to (0, 0), then use that in an affine matrix, and try to invert it, and kaboom. https://bugzilla.gnome.org/show_bug.cgi?id=777834 rsvg-cairo-draw.c | 8 ++++++-- .../reftests/bugs/777834-empty-text-children-ref.png | Bin 0 -> 9386 bytes .../reftests/bugs/777834-empty-text-children.svg} | 0 3 files changed, 6 insertions(+), 2 deletions(-) commit 84f7a64179615a23936022cde148e109ecd56b50 Author: Federico Mena Quintero Date: Mon Dec 12 15:19:42 2016 -0600 bgo#603550 - Compute the luminance correctly when generating a mask Thanks to Mike Lewis for the patch. https://bugzilla.gnome.org/show_bug.cgi?id=603550 rsvg-cairo-draw.c | 25 +++- .../reftests/bugs/603550-mask-luminance-ref.png | Bin 0 -> 4502 bytes .../reftests/bugs/603550-mask-luminance.svg | 130 +++++++++++++++++++++ 3 files changed, 152 insertions(+), 3 deletions(-) commit 1555bbf3ff6de01b6ee8cb13d039892551537dbd Author: Federico Mena Quintero Date: Wed Nov 9 17:42:27 2016 -0600 Disable the "/dimensions/sub/rect with transform" test for now tests/dimensions.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit 1b14b5ab375db864d71cf866eb17e107efb0e74d Author: Federico Mena Quintero Date: Wed Nov 9 17:39:26 2016 -0600 tests/dimensions.c: Assert that we got the sub-object; print the dimensions tests/dimensions.c | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) commit 3de027bd6a7198a386442f23552b519a60a84f89 Author: Federico Mena Quintero Date: Wed Nov 9 17:29:03 2016 -0600 Backport: Enable dimensions tests From commit 16d652c4430209a1736052ec333ba1af203e97ec Why were they disabled? Because they fail...? tests/Makefile.am | 2 -- tests/dimensions.c | 10 ++++++---- tests/fixtures/dimensions/bug614018.svg | 11 ++++++++--- 3 files changed, 14 insertions(+), 9 deletions(-) commit baa9aa6c8282d57554d0dd3888a96a2a068cd783 Author: Federico Mena Quintero Date: Wed Oct 4 07:58:10 2017 -0500 Normalize test files tests/fixtures/reftests/bugs/340047-ref.png | Bin 4891 -> 4779 bytes tests/fixtures/reftests/bugs/548494-ref.png | Bin 751 -> 695 bytes tests/fixtures/reftests/bugs/563933-ref.png | Bin 2526 -> 2470 bytes tests/fixtures/reftests/bugs/738367-ref.png | Bin 8748 -> 8692 bytes tests/fixtures/reftests/bugs/760180-ref.png | Bin 8884 -> 0 bytes tests/fixtures/reftests/bugs/760180.svg | 159 --------------------- .../reftests/svg1.1/filters-composite-02-b-ref.png | Bin 16647 -> 16613 bytes .../reftests/svg1.1/paths-data-04-t-ref.png | Bin 18160 -> 18138 bytes .../reftests/svg1.1/paths-data-05-t-ref.png | Bin 16048 -> 16037 bytes .../reftests/svg1.1/paths-data-06-t-ref.png | Bin 7255 -> 7242 bytes .../reftests/svg1.1/paths-data-07-t-ref.png | Bin 6646 -> 6628 bytes .../reftests/svg1.1/paths-data-08-t-ref.png | Bin 19314 -> 19317 bytes .../reftests/svg1.1/pservers-grad-08-b-ref.png | Bin 38874 -> 38874 bytes 13 files changed, 159 deletions(-) commit 54c4e1a8e1356286eb6f4e23d0f902eb985b059b Author: Federico Mena Quintero Date: Mon Sep 4 16:53:41 2017 -0500 test-utils.c: Fix a leak tests/test-utils.c | 1 + 1 file changed, 1 insertion(+) commit 493b27497d1a4801e91ac760df8f5d5e853757e5 Author: Federico Mena Quintero Date: Wed Oct 4 07:40:41 2017 -0500 Ignore the "resources" directories in rsvg-test.c From commit 4ec908b71f9f19d0d37c98879188a72308c00433 tests/rsvg-test.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit c92772d25005f15f8e95418138959109baa0f5b3 Author: Federico Mena Quintero Date: Wed Jan 4 15:00:00 2017 -0600 Use a hard-coded font file to render test images, for predictable font rendering If we depend on whatever Fontconfig finds on the system (or the user's configuration, or any number of variables not under our control), "make distcheck" will certainly fail. Now we ship a specific font file (LiberationSans-Regular.ttf) that is used only for the reftests. We use that in addition to explicitly setting font rendering options for tests. Also, re-normalize all the reference images to this new font. Thanks to Vlad Vukicevic for the idea to use a hard-coded font file, and to Christian Hergert for the Fontconfig / Pango incantations. Makefile.am | 1 + rsvg-cairo-draw.c | 37 ++++++++++++++-- rsvg-cairo-render.c | 6 +++ rsvg-cairo-render.h | 3 ++ tests/Makefile.am | 47 +++++++++++---------- tests/fixtures/reftests/bugs/749415-ref.png | Bin 21402 -> 21862 bytes .../reftests/svg1.1/filters-color-02-b-ref.png | Bin 0 -> 6231 bytes .../reftests/svg1.1/filters-composite-02-b-ref.png | Bin 0 -> 16647 bytes .../reftests/svg1.1/painting-marker-01-f-ref.png | Bin 0 -> 8454 bytes .../reftests/svg1.1/painting-marker-02-f-ref.png | Bin 0 -> 9172 bytes .../reftests/svg1.1/painting-marker-03-f-ref.png | Bin 0 -> 29006 bytes .../reftests/svg1.1/painting-marker-04-f-ref.png | Bin 0 -> 27598 bytes .../reftests/svg1.1/painting-marker-06-f-ref.png | Bin 0 -> 8640 bytes .../reftests/svg1.1/painting-marker-07-f-ref.png | Bin 0 -> 5158 bytes .../svg1.1/painting-marker-properties-01-f-ref.png | Bin 0 -> 6175 bytes .../reftests/svg1.1/paths-data-01-t-ref.png | Bin 0 -> 25436 bytes .../reftests/svg1.1/paths-data-02-t-ref.png | Bin 0 -> 32917 bytes .../reftests/svg1.1/paths-data-03-f-ref.png | Bin 0 -> 30956 bytes .../reftests/svg1.1/paths-data-04-t-ref.png | Bin 0 -> 18160 bytes .../reftests/svg1.1/paths-data-05-t-ref.png | Bin 0 -> 16048 bytes .../reftests/svg1.1/paths-data-06-t-ref.png | Bin 0 -> 7255 bytes .../reftests/svg1.1/paths-data-07-t-ref.png | Bin 0 -> 6646 bytes .../reftests/svg1.1/paths-data-08-t-ref.png | Bin 0 -> 19314 bytes .../reftests/svg1.1/paths-data-09-t-ref.png | Bin 0 -> 17595 bytes .../reftests/svg1.1/paths-data-10-t-ref.png | Bin 0 -> 20995 bytes .../reftests/svg1.1/paths-data-12-t-ref.png | Bin 0 -> 9704 bytes .../reftests/svg1.1/paths-data-13-t-ref.png | Bin 0 -> 4526 bytes .../reftests/svg1.1/paths-data-14-t-ref.png | Bin 0 -> 12525 bytes .../reftests/svg1.1/paths-data-15-t-ref.png | Bin 0 -> 6001 bytes .../reftests/svg1.1/paths-data-16-t-ref.png | Bin 0 -> 7879 bytes .../reftests/svg1.1/paths-data-17-f-ref.png | Bin 0 -> 4464 bytes .../reftests/svg1.1/paths-data-18-f-ref.png | Bin 0 -> 4781 bytes .../reftests/svg1.1/paths-data-19-f-ref.png | Bin 0 -> 23515 bytes .../reftests/svg1.1/paths-data-20-f-ref.png | Bin 0 -> 9144 bytes .../reftests/svg1.1/pservers-grad-01-b-ref.png | Bin 0 -> 9758 bytes .../reftests/svg1.1/pservers-grad-02-b-ref.png | Bin 0 -> 22622 bytes .../reftests/svg1.1/pservers-grad-03-b-ref.png | Bin 0 -> 9805 bytes .../reftests/svg1.1/pservers-grad-04-b-ref.png | Bin 0 -> 24018 bytes .../reftests/svg1.1/pservers-grad-05-b-ref.png | Bin 0 -> 65037 bytes .../reftests/svg1.1/pservers-grad-06-b-ref.png | Bin 0 -> 21260 bytes .../reftests/svg1.1/pservers-grad-07-b-ref.png | Bin 0 -> 11051 bytes .../reftests/svg1.1/pservers-grad-08-b-ref.png | Bin 0 -> 38874 bytes .../reftests/svg1.1/pservers-grad-09-b-ref.png | Bin 0 -> 6207 bytes .../reftests/svg1.1/pservers-grad-10-b-ref.png | Bin 0 -> 9229 bytes .../reftests/svg1.1/pservers-grad-11-b-ref.png | Bin 0 -> 56357 bytes .../reftests/svg1.1/pservers-grad-12-b-ref.png | Bin 0 -> 23747 bytes .../reftests/svg1.1/pservers-grad-13-b-ref.png | Bin 0 -> 93434 bytes .../reftests/svg1.1/pservers-grad-14-b-ref.png | Bin 0 -> 24537 bytes .../reftests/svg1.1/pservers-grad-15-b-ref.png | Bin 0 -> 10180 bytes .../reftests/svg1.1/pservers-grad-16-b-ref.png | Bin 0 -> 4738 bytes .../reftests/svg1.1/pservers-grad-18-b-ref.png | Bin 0 -> 4733 bytes .../reftests/svg1.1/pservers-grad-21-b-ref.png | Bin 0 -> 11549 bytes .../reftests/svg1.1/pservers-grad-22-b-ref.png | Bin 0 -> 7605 bytes .../reftests/svg1.1/pservers-grad-23-f-ref.png | Bin 0 -> 6129 bytes .../reftests/svg1.1/pservers-grad-24-f-ref.png | Bin 0 -> 7313 bytes .../svg1.1/pservers-grad-stops-01-f-ref.png | Bin 0 -> 6356 bytes tests/resources/LiberationSans-Regular.ttf | Bin 0 -> 139764 bytes 57 files changed, 69 insertions(+), 25 deletions(-) commit 4504e3a5fcd5c8f13f536ecbf01ce0962d0a670d Author: Federico Mena Quintero Date: Wed Jan 4 14:08:26 2017 -0600 Use a separate function to set PangoContext font options for testing rsvg-cairo-draw.c | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) commit aaee907f2e7b1c102ce06716c178795c309c241c Author: Federico Mena Quintero Date: Fri Feb 17 10:29:47 2017 -0600 test-utils.c: Fix a string leak tests/test-utils.c | 2 ++ 1 file changed, 2 insertions(+) commit a84d3b425998b972c4edd0be587dc3b6899e756e Author: Federico Mena Quintero Date: Fri Feb 17 10:24:18 2017 -0600 rsvg-test.c: Fix a couple of leaked strings tests/rsvg-test.c | 3 +++ 1 file changed, 3 insertions(+) commit e659c14a5e1c5360cb7a81129b704935cf79cd1a Author: Federico Mena Quintero Date: Mon Dec 19 11:49:17 2016 -0600 Backport: Add a testing mode so reftests can use predictable text rendering From commit 25457b72770018045aa88d47688fbf1a45bff9af This adds an rsvg_handle_internal_set_testing() API, which should only be called by the test suite. Internally, it sets cairo_font_options_t that should yield reproducible text rendering. For example, I get different rendering results from text objects when I run "make check" as a user, than when I run it as root. rsvg-base.c | 16 ++++++++++++++++ rsvg-cairo-draw.c | 22 ++++++++++++++++++++++ rsvg-cairo-render.c | 1 + rsvg-gobject.c | 2 ++ rsvg-private.h | 3 +++ rsvg.h | 2 ++ tests/rsvg-test.c | 2 ++ 7 files changed, 48 insertions(+) commit 69911f6bf46f61b012052ba585512a83776a5375 Author: Federico Mena Quintero Date: Wed Dec 14 10:20:08 2016 -0600 rsvg-test: allow skipping directories that start with "ignore" as well as files It turns out that it's more convenient to move the whole set of problematic SVGs into an ignore/ subdirectory for now. tests/README.md | 229 +++++++++++++++++++++ .../reftests/svg1.1/ignore-pservers-grad-17-b.svg | 92 --------- tests/rsvg-test.c | 28 ++- 3 files changed, 249 insertions(+), 100 deletions(-) commit 8a008995777f81f82dd80228638674c3e5b8af8b Author: Federico Mena Quintero Date: Tue Nov 22 09:00:56 2016 -0600 rsvg-test: Ignore SVG fixtures that start with "ignore-" Right now pservers-grad-17-b.svg doesn't pass the tests, but I think it may be a Cairo bug. Add the ability to ignore test files if they have a "ignore-" filename prefix. Hopefully I'll remember to fix this later... .../reftests/svg1.1/ignore-pservers-grad-17-b.svg | 92 ++++++++++++++++++++++ tests/rsvg-test.c | 8 +- 2 files changed, 96 insertions(+), 4 deletions(-) commit ff2284034369a28727359e6b6c54cba2f00fff65 Author: Federico Mena Quintero Date: Wed Oct 4 07:17:23 2017 -0500 Ignore a test file that doesn't work in this branch... ...ansform-ref.png => ignore-587721-text-transform-ref.png} | Bin ...-text-transform.svg => ignore-587721-text-transform.svg} | 0 2 files changed, 0 insertions(+), 0 deletions(-) commit 32e294ad461d0af3ed7703fdf0e264b08ca1844a Author: Federico Mena Quintero Date: Wed Oct 4 07:10:49 2017 -0500 Update NEWS NEWS | 9 +++++++++ 1 file changed, 9 insertions(+) commit 9b86813172afa26016e199943f5514a1e5375a35 Author: Federico Mena Quintero Date: Tue Oct 3 20:00:17 2017 -0500 Add missing test tests/Makefile.am | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) commit 7dfc59efbb51832edef496654b0c7530d4cdd9da Author: Federico Mena Quintero Date: Tue Oct 3 19:50:28 2017 -0500 Factor out create_xml_stream_parser() rsvg-base.c | 40 ++++++++++++++++++++++++++++------------ 1 file changed, 28 insertions(+), 12 deletions(-) commit 2bde0d3c103f6e4e4867dad9357fa677b519909d Author: Federico Mena Quintero Date: Tue Oct 3 19:49:59 2017 -0500 Rename create_xml_push_parser() rsvg-base.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) commit 89598279c808c8abdcc940ff171612c86c31e26c Author: Federico Mena Quintero Date: Tue Oct 3 19:43:08 2017 -0500 bgo#787895 - Use xmlCreateIOParserCtxt() for I/O callbacks instead of a push parser We were using libxml2 incorrectly since 2010 (!). We have to use xmlCreatePushParserCtxt() with xmlParseChunk(), *OR* xmlCreateIOParserCtxt(io_callbacks) with xmlParseDocument(). https://bugzilla.gnome.org/show_bug.cgi?id=787895 rsvg-base.c | 42 +++++++++++++++++++----------------------- rsvg-xml.c | 45 +++++++++++++++++++++++++++------------------ rsvg-xml.h | 11 ++++++++--- 3 files changed, 54 insertions(+), 44 deletions(-) commit 593b6f103992989561a776d7f57d55cb161c9047 Author: Federico Mena Quintero Date: Tue Oct 3 19:12:53 2017 -0500 Un-inline a function (we'll change the callers), and tighten assertions rsvg-base.c | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) commit ef5e26c19f28b26cc71549688d7fc6b11234e541 Author: Federico Mena Quintero Date: Tue Oct 3 19:02:54 2017 -0500 Centralize a function to create an libxml2 parser rsvg-base.c | 19 ++++++++++++++----- 1 file changed, 14 insertions(+), 5 deletions(-) commit 8dc0136326e8d9514473ee382c969c915edc94b3 Author: Federico Mena Quintero Date: Tue Oct 3 18:54:38 2017 -0500 Remove unnecessary argument rsvg-base.c | 4 ++-- rsvg-xml.c | 3 +-- rsvg-xml.h | 1 - 3 files changed, 3 insertions(+), 5 deletions(-) commit 4ab0f57e08ce1ab6db89a97d2fb7198f8437c518 Author: Federico Mena Quintero Date: Tue Oct 3 18:43:29 2017 -0500 Set replaceEntities where we set the rest of the XML parser's options It's a bit iffy that we do it by directly poking inside the xmlParserCtxPtr... rsvg-base.c | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) commit e7e45d6128451e67b62c116e1cc200117ab0f49e Author: Federico Mena Quintero Date: Tue Oct 3 18:33:29 2017 -0500 Use xmlCtxtUseOptions() instead of setting ctxt->options directly (!) We now require libxml2 version 2.9.0 or later. That release is from 2012, so we should be okay. configure.ac | 2 +- rsvg-base.c | 21 ++++++++++----------- 2 files changed, 11 insertions(+), 12 deletions(-) commit 0e10fd4463f7aca70f8731bd91e7eb6373cfbb26 Author: Federico Mena Quintero Date: Tue Oct 3 17:52:58 2017 -0500 Comment about having to slurp the whole compressed file if using write()/close() rsvg-base.c | 6 ++++++ 1 file changed, 6 insertions(+) commit a8b10c704327c01f9e9ed50d7ee9672021ae9e70 Author: Federico Mena Quintero Date: Tue Oct 3 15:10:27 2017 -0500 Use a different reading state when reading compressed data This is to avoid having special cases everywhere if priv->compressed_input_stream is present. rsvg-base.c | 19 +++++++++---------- rsvg-private.h | 1 + 2 files changed, 10 insertions(+), 10 deletions(-) commit 22f73906fcdf2932862e64c1402ddaa4952cc8ff Author: Federico Mena Quintero Date: Tue Oct 3 15:06:08 2017 -0500 Create the compressed_input_stream in a separate function rsvg-base.c | 25 +++++++++++++++++++------ 1 file changed, 19 insertions(+), 6 deletions(-) commit 88f5f60563868098b2d6980a00386803496ba6d4 Author: Federico Mena Quintero Date: Tue Oct 3 15:01:52 2017 -0500 Rename data_input_stream to compressed_input_stream for clarity rsvg-base.c | 17 +++++++++-------- rsvg-gobject.c | 8 ++++---- rsvg-private.h | 2 +- 3 files changed, 14 insertions(+), 13 deletions(-) commit 9a314cdcd5a37423546c632cbbfd55f6c54d8f61 Author: Federico Mena Quintero Date: Tue Oct 3 15:01:18 2017 -0500 Rename the loading tests to have a "/loading/" prefix tests/loading.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) commit 68cd2f2e7f25d2daf551a4bbbc876cb25346ab42 Author: Federico Mena Quintero Date: Tue Oct 3 14:55:08 2017 -0500 Test reading compressed SVGs one and two bytes at a time To test reading the 2-byte GZ header one byte at a time, and also in a single shot. tests/loading.c | 30 +++++++++++++++++++++++------- 1 file changed, 23 insertions(+), 7 deletions(-) commit 0a4b56f7b681d7766cd8c5dd5fd6dadbd65d4f16 Author: Federico Mena Quintero Date: Tue Oct 3 14:54:48 2017 -0500 Run the loading tests first... they are kind of the basic smokee tests tests/Makefile.am | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) commit 20bab7fb4a181419617b5bbbf539b1e00f94a344 Author: Federico Mena Quintero Date: Tue Oct 3 14:45:37 2017 -0500 Allow loading one byte at a time with rsvg_handle_write() This hadn't worked for a long time for compressed files, since we weren't holding the state of reading the gzip header. Now we have a test for it. rsvg-base.c | 57 ++++++++++++++++++++++++++++++++++++++++++++------------- rsvg-private.h | 1 + tests/loading.c | 9 +++++++-- 3 files changed, 52 insertions(+), 15 deletions(-) commit 06f5e91d6b124a12d8ca7913fad46a9dc52ad3b3 Author: Federico Mena Quintero Date: Tue Oct 3 14:22:58 2017 -0500 rsvg-base.c: Use constants for the gzip header magic rsvg-base.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) commit c09ee4e2dd4c7d0302549ccf70a71344fe796e41 Author: Federico Mena Quintero Date: Tue Oct 3 14:16:06 2017 -0500 tests/loading.c: New tests for the loading machinery We start with a test to load an SVG one byte at a time, using rsvg_handle_write(). tests/Makefile.am | 24 ++++++++++++++------- tests/loading.c | 62 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 79 insertions(+), 7 deletions(-) commit 1e316d657b9b2b7d50ba7c0546826ad55847af32 Author: Federico Mena Quintero Date: Tue Oct 3 14:07:40 2017 -0500 Add new test files to tests/Makefile.am tests/Makefile.am | 1 + 1 file changed, 1 insertion(+) commit 7c07bae176062a4d16da18f3f48b83f2bcfd067c Author: Federico Mena Quintero Date: Tue Oct 3 13:47:48 2017 -0500 Add compressed version of the last test file tests/fixtures/loading/gnome-cool.svgz | Bin 0 -> 5183 bytes 1 file changed, 0 insertions(+), 0 deletions(-) commit 8bd36eb0cc3ff4a26816c543000727e10d59202b Author: Federico Mena Quintero Date: Tue Oct 3 13:45:04 2017 -0500 Update an out-of-date Sodipodi (!) file to plain SVG to use for testing tests/fixtures/loading/gnome-cool.svg | 66 +++++++++++++++++++++++++++++++ tests/samples/gnome-sodi2.svg | 73 ----------------------------------- 2 files changed, 66 insertions(+), 73 deletions(-) commit 63ddae44a21405b6cb2dae9e465574d3c48c47d9 Author: Federico Mena Quintero Date: Fri Sep 1 09:39:30 2017 -0500 RsvgCairoClipRender: Implement the ::render_pango_layout() method, so we can clip text With this, the test masking-path-04-b.svg passes. rsvg-cairo-clip.c | 28 +++++++- .../reftests/svg1.1/masking-path-04-b-ref.png | Bin 88260 -> 92911 bytes .../fixtures/reftests/svg1.1/masking-path-04-b.svg | 79 +++++++++++++++++++++ .../reftests/svg1.1/resources/bluesquidj.png | Bin 0 -> 37497 bytes 4 files changed, 106 insertions(+), 1 deletion(-) commit 66c0f991db5ffe3e20f8d30c629d1c71148c746f Author: Federico Mena Quintero Date: Fri Sep 1 08:45:31 2017 -0500 bgo#621088: rsvg_cairo_clip_render_new(): Don't leave uninitialized fields in the parent RsvgCairoRender A text object used as a clip path caused librsvg to crash. The reason is that when we create an RsvgCairoClipRender, we were leaving an all-zeros clip_render->super.bbox field. This caused two things: 1. An all-zeros RsvgBbox is invalid; it should be "virgin" or actually have a valid affine. 2. We were not preserving the bbox from the parent rendering context, so the clipped objects would not know their viewport size. Now we copy the original cairo_render->bbox to our derived clip_render->super.bbox, and start afresh with an empty bb_stack inside the clip_render. rsvg-cairo-clip.c | 27 ++++++++++++++++++++++----- 1 file changed, 22 insertions(+), 5 deletions(-) commit 391b6795d5af04af5c1235ce103a9f3b2abebf93 Author: Federico Mena Quintero Date: Fri Sep 1 08:09:35 2017 -0500 Remove unused prototype rsvg-cairo-render.h | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) commit ad3daec79eddbe00641e94346c78c7e06f1611fe Author: Federico Mena Quintero Date: Fri Sep 1 07:54:33 2017 -0500 Add a bunch of masking/clipping tests from the SVG test suite .../reftests/svg1.1/masking-intro-01-f-ref.png | Bin 0 -> 14528 bytes .../reftests/svg1.1/masking-intro-01-f.svg | 81 +++++++++++++ .../reftests/svg1.1/masking-mask-01-b-ref.png | Bin 0 -> 17887 bytes .../fixtures/reftests/svg1.1/masking-mask-01-b.svg | 131 ++++++++++++++++++++ .../reftests/svg1.1/masking-mask-02-f-ref.png | Bin 0 -> 4512 bytes .../fixtures/reftests/svg1.1/masking-mask-02-f.svg | 50 ++++++++ .../reftests/svg1.1/masking-opacity-01-b-ref.png | Bin 0 -> 30924 bytes .../reftests/svg1.1/masking-opacity-01-b.svg | 125 +++++++++++++++++++ .../reftests/svg1.1/masking-path-01-b-ref.png | Bin 0 -> 12226 bytes .../fixtures/reftests/svg1.1/masking-path-01-b.svg | 95 +++++++++++++++ .../reftests/svg1.1/masking-path-02-b-ref.png | Bin 0 -> 13294 bytes .../fixtures/reftests/svg1.1/masking-path-02-b.svg | 84 +++++++++++++ .../reftests/svg1.1/masking-path-03-b-ref.png | Bin 0 -> 23263 bytes .../fixtures/reftests/svg1.1/masking-path-03-b.svg | 134 +++++++++++++++++++++ .../reftests/svg1.1/masking-path-04-b-ref.png | Bin 0 -> 88260 bytes 15 files changed, 700 insertions(+) commit d8c442fe03e9bec67abd0fd59836ccf051230e16 Author: Federico Mena Quintero Date: Fri Sep 1 07:12:13 2017 -0500 rsvg-cairo-draw: Comment on how we should be computing bounding boxes for viewports/clipping rsvg-cairo-draw.c | 13 +++++++++++++ 1 file changed, 13 insertions(+) commit bf717d5c6a521e53cd455f9a19b6761164715d28 Author: Massimo Date: Wed Aug 30 09:55:48 2017 -0500 bgo#587721: Update the PangoLayout for the new matrix before rendering If the cairo_t's transformation changes between the time the PangoLayout is created and the time it is shown, one needs to pango_cairo_update_layout() first. rsvg-cairo-draw.c | 4 ++++ .../fixtures/reftests/bugs/587721-text-transform-ref.png | Bin 0 -> 3910 bytes tests/fixtures/reftests/bugs/587721-text-transform.svg | 13 +++++++++++++ 3 files changed, 17 insertions(+) commit f87ea57e124d5ae0d271117707b3617831b4d084 Author: Federico Mena Quintero Date: Tue Aug 29 15:15:01 2017 -0500 Oops, sort the list of supported SVG features so works We use the list of supported features with bsearch(), and the list was not sorted. Added struct-cond-03-t.svg from the SVG test suite to this effect. The reference PNG is different from the official test suite's original one, because we do NOT support the SVG DOM feature. Still, the test file lets us test for working based on supported feature names. rsvg-cond.c | 7 +- .../reftests/svg1.1/struct-cond-03-t-ref.png | Bin 0 -> 4433 bytes .../fixtures/reftests/svg1.1/struct-cond-03-t.svg | 83 +++++++++++++++++++++ 3 files changed, 87 insertions(+), 3 deletions(-) commit 3730200ec5625c7e3e5e28c60a607cebef835ee3 Author: Federico Mena Quintero Date: Tue Aug 29 08:48:08 2017 -0500 bgo#634514: Don't render unknown elements and their sub-elements We were representing unknown elements as a NodeGroup, so their children would be rendered. Now we represent them as NodeDefs. This is like a NodeGroup, but it doesn't do any rendering of itself or its children. The SVG spec says that we should stop rendering the file if we encounter an unknown element, but it seems that real-world renderers are more lenient - so we'll just not render unknown elements and their children. https://bugzilla.gnome.org/show_bug.cgi?id=634514 rsvg-base.c | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) commit 69ed84e783b2aef9095c8495cdceb1a03b81b4e3 Author: Federico Mena Quintero Date: Tue Aug 29 09:19:41 2017 -0500 bgo#785276: Don't crash on empty or single-byte files Sigh... We also modify tests/crash.c to test for this condition, and add a couple of new tests. rsvg-base.c | 11 ++++++++++- tests/crash.c | 12 ++++++++---- tests/fixtures/crash/785276-empty.svg | 0 tests/fixtures/crash/785276-short-file.svg | 1 + 4 files changed, 19 insertions(+), 5 deletions(-) commit b2cc9ce181be7dbe90cbea3a57db1e841b0fe826 Author: Federico Mena Quintero Date: Thu Aug 17 15:23:16 2017 -0500 bgo#786372 - In the style element, the type attribute should default to "text/css" Per https://www.w3.org/TR/SVG/styling.html#StyleElementTypeAttribute , if a