summaryrefslogtreecommitdiff
Commit message (Collapse)AuthorAgeFilesLines
* pattern: Restore dropped inclusion of cairoint.h1.14.0Bryce Harrington2014-10-131-0/+2
| | | | | 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.
* 1.14.0 releaseBryce Harrington2014-10-131-2/+2
|
* NEWS: Flesh out docs for new APIsBryce Harrington2014-10-132-3/+12
|
* NEWS: Update with latest changes and finalize for releaseBryce Harrington2014-10-131-5/+19
|
* pdf: don't use '\' to split strings across multiple linesAdrian Johnson2014-10-121-1/+1
| | | | | The PDF interpreter in my printer does not handle this correctly. So instead we add the string delimiters '(' and ')' to each line.
* image: Corrected extents calculationsBill Spitzak2014-10-106-153/+176
| | | | | | | | | | | | 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 <b.harrington@samsung.com>
* xcb: Use image fallback for GOOD/BEST filtersBill Spitzak2014-10-101-18/+16
| | | | | | | | | | | 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 <b.harrington@samsung.com>
* xcb: Add switches for whether XRender supports GOOD/BEST filteringBill Spitzak2014-10-102-1/+15
| | | | | | | 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 <b.harrington@samsung.com>
* xlib: Use image fallback for GOOD/BEST filtersBill Spitzak2014-10-101-9/+14
| | | | | | | | | | | 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 <b.harrington@samsung.com>
* xlib: Add symbols to indicate if XRender supports GOOD/BEST filteringBill Spitzak2014-10-101-0/+2
| | | | | | | | 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 <b.harrington@samsung.com>
* image: Move filter decision to _cairo_pattern_analyze_filterBill Spitzak2014-10-102-14/+44
| | | | | | | | 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 <b.harrington@samsung.com>
* test: Update pixman downscaling 95 reference imagesBryce Harrington2014-10-0949-0/+0
| | | | | | | | | | | | | | 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 <bryce@osg.samsung.com>
* test: Add an update-refs.sh script to update reference imagesBryce Harrington2014-10-091-0/+84
| | | | | | | | | | | | | | | | | | 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 <bryce@osg.samsung.com>
* test: Fix error message to specify the executable that was missingBryce Harrington2014-10-091-1/+1
| | | | Signed-off-by: Bryce Harrington <bryce@osg.samsung.com>
* test: Fix conflation of different device scales in index.htmlChris Wilson2014-10-091-1/+1
| | | | | | Currently testtable.js does not recognise the difference between running the same test with multiple scale factors and merges the results into one.
* test: Teach check-preprocessor-syntax.sh about -inlines.hChris Wilson2014-10-091-2/+2
|
* Get make check back to a happy spotBryce Harrington2014-10-032-4/+4
| | | | | | | 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
* Declare as private the new cairo_lines_compare_at_y symbolBryce Harrington2014-10-031-3/+4
| | | | | | | | | | | 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 <b.harrington@samsung.com>
* quartz: Check for quartz surface type before conversionBryce Harrington2014-10-031-1/+1
| | | | | | | | | | | | | | | | | | | 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 <b.harrington@samsung.com>
* quartz-image: Fix buildAndrea Canciani2014-10-032-4/+4
| | | | | | | | | 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 <ranma42@gmail.com>
* quartz: Fix buildAndrea Canciani2014-10-031-14/+8
| | | | | | | | | 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 <ranma42@gmail.com>
* test: Add whole flipped replaysChris Wilson2014-10-0210-0/+188
| | | | | | | | | 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 <chris@chris-wilson.co.uk>
* image: Eliminate self-intersections for the pixman traps compositorChris Wilson2014-10-021-0/+32
| | | | | | | | 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 <chris@chris-wilson.co.uk>
* test: Refresh reference images for tor rendering changesChris Wilson2014-10-02294-0/+0
| | | | | | | | | | | | | | (And include a git add missed from commit ccd48b346436a80629e4f9a07f2ba7ffbfd802f1 Author: Chris Wilson <chris@chris-wilson.co.uk> 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 <chris@chris-wilson.co.uk>
* tor: Enable analytic processing for starting rowsChris Wilson2014-10-021-10/+17
| | | | | | | | | 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 <chris@chris-wilson.co.uk>
* tor: Perform analytic coverage over the pixel not sample pointsChris Wilson2014-10-021-18/+49
| | | | | | | | | | | | | | | | | | | | | | | | 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 <chris@chris-wilson.co.uk> 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 <chris@chris-wilson.co.uk>
* test/simple: Tighten sanity checks in reference image generatorChris Wilson2014-10-021-4/+4
| | | | Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
* test: Add a simple rasteriser to check fidelity of edge renderingChris Wilson2014-10-023-0/+348
| | | | | | | | 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 <chris@chris-wilson.co.uk>
* test: Fix coverage-abuttingChris Wilson2014-09-301-1/+1
| | | | | | | 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 <chris@chris-wilson.co.uk>
* test: Add another coverage example demonstrating the seams in torChris Wilson2014-09-302-0/+53
| | | | | References: https://bugs.freedesktop.org/show_bug.cgi?id=84396 Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
* test: Explicitly flip the reference image for recordflipChris Wilson2014-09-308-3/+55
| | | | Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
* test: Remove more duplicated reference imagesChris Wilson2014-09-30359-0/+0
| | | | Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
* tor: Review full-row walkerChris Wilson2014-09-30134-52/+34
| | | | | | | | 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 <chris@chris-wilson.co.uk>
* test: Include coverage in the normal test runChris Wilson2014-09-301-7/+7
| | | | | | | | 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 <chris@chris-wilson.co.uk>
* tor: Fix loss of precision from projection onto sample gridChris Wilson2014-09-30283-157/+174
| | | | | | | | | | 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 <chris@chris-wilson.co.uk>
* test: Remove redundant reference imagesChris Wilson2014-09-30174-0/+0
| | | | | | | | | 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 <chris@chris-wilson.co.uk>
* test: Add test for egl-surface-sourceRavi Nanjundappa2014-09-297-1/+137
| | | | | | | This test file attempts to use a EGL backend surface as a source surface for all other backends. Signed-off-by: Ravi Nanjundappa <nravi.n@samsung.com>
* src: check the surface backend for NULLRavi Nanjundappa2014-09-294-5/+60
| | | | | | | | | | 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 <nravi.n@samsung.com>
* stroke,traps: Emit join without loss of precisionChris Wilson2014-09-298-257/+530
| | | | | | | | | | | | | | 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 <chris@chris-wilson.co.uk>
* test/coverage: Exercise invariance under mirror symmetryChris Wilson2014-09-292-0/+55
| | | | | | | | | | | | | 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 <chris@chris-wilson.co.uk>
* build-sys: do not try to build util/sphinx on WindowsMarc-André Lureau2014-09-241-1/+1
| | | | | | | | | | | | | | 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 <b.harrington@samsung.com>
* sphinx: Add ickle's explanation of what sphinx doesBryce Harrington2014-09-241-0/+8
|
* test: Exercise stroking bugs with xlib/trapezoidsChris Wilson2014-09-244-0/+62
| | | | | Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=84115 Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
* arc: Insert the initial point on the arcChris Wilson2014-09-241-0/+4
| | | | | | | | | 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 <chris@chris-wilson.co.uk>
* NEWS: Revise downscaling feature descriptionBryce Harrington2014-09-231-21/+27
| | | | | Updated feature description using text from Bill. Also updated bugfix list to include recent fixes.
* build: Fix float endian configure test when using clang -O4Bryce Harrington2014-09-231-4/+5
| | | | | | | | | | | | | | | | | 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 <abendstund@gmail.com> Reviewed-by: Bryce Harrington <b.harrington@samsung.com> Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=63310
* Fix compilation with bionic libcAdrian Johnson2014-09-235-11/+24
| | | | | | | | | | | 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 <b.harrington@samsung.com> [edit: Condensed cairo_get_locale_decimal_point and conditionalized locale.h inclusion. -- bryce]
* Don't return NULL to clients when getting deviceBryce Harrington2014-09-222-4/+7
| | | | | | Return an error device instead Fixes: https://bugs.freedesktop.org/show_bug.cgi?id=58061
* Don't return NULL to clients when getting imageBryce Harrington2014-09-223-3/+3
| | | | | | Return an error surface instead. Fixes: https://bugs.freedesktop.org/show_bug.cgi?id=58061
* NEWS: Note that downscaling changes only affect image + fallbackBryce Harrington2014-09-221-1/+3
|