summaryrefslogtreecommitdiff
AgeCommit message (Collapse)AuthorFilesLines
2010-10-23WIPwip/stroke-to-pathAndrea Canciani6-1097/+1015
2010-10-23Avoid division by 0 when offsetting a degenerate splineAndrea Canciani1-3/+18
2010-10-23Avoid FPE (division by 0 in inflection_points)Andrea Canciani1-0/+6
2010-10-23Avoid FPE (division by 0 in knot_offset)Andrea Canciani1-11/+18
2010-10-23Fix _cairo_path_fixed_init_flat_copyAndrea Canciani1-1/+6
reflected-stroke crashed because the function used a wrong closure
2010-10-23Stroke-to-path and fill when strokingAndrea Canciani1-5/+13
2010-10-23Stroke to path implementationJeff Muizelaar11-0/+2598
2010-10-21Other backends: Set round_glyph_positions to OFFUli Schlachter4-0/+4
This sets CAIRO_ROUND_GLYPH_POS_OFF in all surface backends that didn't use CAIRO_ROUND_GLYPH_POS_ON. Signed-off-by: Uli Schlachter <psychon@znc.in>
2010-10-21raster backends: Set round_glpyh_positions to ONUli Schlachter5-0/+5
This fixes "text-rotate" in the test suite for the image backend and "overlapping-glyphs" for the xcb backend. Signed-off-by: Uli Schlachter <psychon@znc.in>
2010-10-21Actually implement round_glpyh_positionsUli Schlachter1-2/+9
The previous commit only added this option and made sure it gets set, but it didn't actually have any effect. This commit now implements this option. Signed-off-by: Uli Schlachter <psychon@znc.in>
2010-10-21font options: Add private round_glpyh_positions fieldUli Schlachter4-3/+63
Signed-off-by: Uli Schlachter <psychon@znc.in>
2010-10-21XCB: Use consistent rounding modes for a1 rasterisation.Uli Schlachter1-30/+50
This ports commits 36b4b0631 and 7ab9ce1b9 from the image backend to xcb. Look there for an explanation of why this is correct, I only copied this over and the test suite said it was good. :-) This fixes unantialiased-shapes, a1-rasterisation-rectangles and a1-rasterisation-triangles. Signed-off-by: Uli Schlachter <psychon@znc.in>
2010-10-21XCB: Fix for all unbounded operatorsUli Schlachter1-1/+1
_cairo_xcb_surface_fixup_unbounded_boxes() calculated a list of boxes that it has to clear to make an unbounded operator work correctly. Then it cleared the boxes that were drawn instead of clearing the list of boxes that it has to clear. The reason that this wasn't noticed before is that there is an optimization in case we have only one box instead of a whole list of boxes. This hid the bug. This fixes the "unbounded-operator" test case. Signed-off-by: Uli Schlachter <psychon@znc.in>
2010-10-21XCB: Move the assert from 5a0f8f7320c916cUli Schlachter1-1/+1
Calling _cairo_xcb_surface_ensure_picture() on a XCB surface whose fallback member is non-null is always an error. It's possible that the surface first gets a picture assigned and later it's fallback member is set. In this situation, it's still wrong to use the surface's picture for any drawing- Signed-off-by: Uli Schlachter <psychon@znc.in>
2010-10-20perf: Only print description once per backendChris Wilson2-0/+6
Currently we print the backend description before every time, which is overly verbose. As the information doesn't^Wshouldn't change, simply print it before running the first test of each target. Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2010-10-15xcb: Pass clip to composite_glyphs_via_maskChris Wilson1-2/+1
Spotted by Uli Schlachter. Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2010-10-15xcb,image: Fix a missing clip finiChris Wilson2-2/+6
Spotted by Uli Schlachter when I copied the image glyphs clipping to xcb. Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2010-10-15PS: Remove radial gradient fallbackAdrian Johnson1-17/+2
when one circle not inside the other. Pixman now follows the PDF specification.
2010-10-15PDF: Remove radial gradient fallbackAdrian Johnson1-16/+1
when one circle not inside the other. Pixman now follows the PDF specification.
2010-10-15PS: Remove redundant codeAdrian Johnson1-3/+0
The test for zero stops is now in gstate.
2010-10-15PDF: Fix regression in EXTEND_NONE gradientsAdrian Johnson1-1/+14
The test for opaque gradients in _cairo_pdf_surface_add_pdf_pattern() must be identical to the test in _cairo_pdf_surface_emit_pattern_stops() other wise the PDF file will reference a smask that does not exist. The _cairo_pattern_is_opaque() test is too strict for PDF as PDF can draw EXTEND_NONE gradients with opaque color stops without requiring a smask.
2010-10-14XCB: Remove an incorrect clipping optimizationsUli Schlachter1-3/+0
It seems like the idea here was to optimize for the special case of a rectangular clip, where the region operation could be replace by direction operation on the draw extents. However, we cannot modify the geometry for all operations, and in particular the glyphs. So remove this from the common compositing path. This fixes partial-clip-text in the test suite. Signed-off-by: Uli Schlachter <psychon@znc.in> Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2010-10-14Add myself to AUTHORSUli Schlachter1-0/+1
I was looking around for changes that I could do. This what I came up with. Seems boring, but nothing better came up this time. Signed-off-by: Uli Schlachter <psychon@znc.in> [ickle: Apologies for not doing it on your behalf.] Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2010-10-14xcb: Fix reduction of clipping for bounded glyphs.Chris Wilson1-34/+4
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2010-10-13xcb: Correctly handle ARGB visualsUli Schlachter1-0/+3
We want surface->depth to end up as "32", so we have to invent an alpha mask. This mask is not used anyway (only its popcount), but still this should get a less ugly fix. This was found because "assert (reply->depth == surface->depth);" in _get_image() failed. Original-patch-by: Ross Alexander <Ross.Alexander@EU.NEC.COM> Signed-off-by: Uli Schlachter <psychon@znc.in> Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2010-10-13_cairo_xcb_surface_picture: Check for fallbackUli Schlachter1-2/+2
If a cairo surface's fallback member is set, the current content of that surface is in-memory and the X server has an outdated version of stuff. Our optimizations for doing in-server copies are wrong in this case and we should do stuff in cairo instead of the X server. Signed-off-by: Uli Schlachter <psychon@znc.in> Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2010-10-13_cairo_xcb_surface_ensure_picture: Check fallbackUli Schlachter1-0/+1
When an XCB surface's fallback member is not NULL, we did some rendering that the X server couldn't do for us and thus did that internally in cairo instead. This means the X drawable's content is out of date and should not be used for drawing anything. This adds an assert which checks for that situation. Signed-off-by: Uli Schlachter <psychon@znc.in> Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2010-10-13quartz: Remove unused imageSurface fieldAndrea Canciani1-5/+0
imageSurface was used to store a reference to the fallback image generated by during fallbacks for gradients. The fallback code has been removed as it is not needed anymore, thus this field can be removed as well.
2010-10-13quartz: Cleanup gradient setup functionsAndrea Canciani1-12/+6
Gradient setup does not depend anymore on the surface on which the gradient will be composited.
2010-10-13quartz: Move drawing state out of surfaceAndrea Canciani2-83/+95
Some pattern types (gradients, surface patterns) require some temporary information to be stored as "graphic state", because it doesn't belong to CGContext. Previously all of this data was stored inside the surface during the drawing operations, now it's in a stack-allocated structure (of type cairo_quartz_drawing_state_t). Based on a patch by Robert O'Callahan <robert@ocallahan.org>. See https://bugzilla.mozilla.org/show_bug.cgi?id=522859
2010-10-13quartz: Unify DO_SHADING, DO_IMAGE and DO_TILED_IMAGEAndrea Canciani1-38/+16
DO_SHADING, DO_IMAGE and DO_TILED_IMAGE sources all require the source to be painted over the whole surface (inside the clip region), thus can share the same code path in drawing functions.
2010-10-13quartz: Unify DO_SOLID and DO_PATTERNAndrea Canciani2-16/+10
Both DO_SOLID and DO_PATTERN setup the underlying CGContext to directly use the chosen color/pattern when filling and stroking, thus require no additional drawing operations and can share the same drawing code.
2010-10-13quartz: Set operator when setting up sourceAndrea Canciani2-50/+21
Share some code between the drawing functions by saving the state and setting the operator when setting up the source and by restoring the state during teardown. Based on a patch by Robert O'Callahan <robert@ocallahan.org>. See https://bugzilla.mozilla.org/show_bug.cgi?id=522859
2010-10-13quartz: Remove DO_NOTHING and DO_UNSUPPORTED actionsAndrea Canciani2-74/+82
DO_NOTHING and DO_UNSUPPORTED are not actual actions and are better handled by returning an appropriate cairo_int_status_t (and falling back, if needed).
2010-10-12quartz: Improve gradient qualityAndrea Canciani1-10/+1
Instead of extending the range of the interpolation parameter to make sure that pixels exactly on the edge get drawn, we are now asking quartz to extend the gradient.
2010-10-12quartz: Fix EXTEND_PAD gradientsAndrea Canciani1-13/+7
Make PAD extended gardients more robust, by computing the color explicitly like for REPEAT and REFLECT extend modes. This removes a hack introducing a small but non-0 negative value that ensured that the gradient started with the correct color (but not that it ended with the correct one, too). Fixes linear-gradient-large.
2010-10-12quartz: Improve gradient consistencyAndrea Canciani2-69/+46
By keeping "virtual extents", quartz surfaces now keep track of the extents where they want the gradients to be consistent. This works across various API for surface creation and editing: - cairo_surface_create_for_rectangle - cairo_surface_create_similar + cairo_surface_set_device_offset - cairo_push_group/cairo_pop_group This method does not use clip extents, so it also makes gradient rasterization independent of clip/path extents.
2010-10-12Add _cairo_rectangle_unionAndrea Canciani2-0/+30
Implement _cairo_rectangle_union(), a function to compute a rectangle containing two input rectangles.
2010-10-12LD_PRELOAD is supported on DragonFly.Joerg Sonnenberger1-1/+1
2010-10-12quartz: Remove unused codeAndrea Canciani1-53/+0
The gradient fallback path is not used anymore.
2010-10-12quartz: Make radial gradients follow PDF specificationAndrea Canciani1-14/+0
Pixman master (soon to become pixman 0.20) implements radial gradients based on the PDF specification (section 8.7.4.5.4). Quartz natively implements them, so falling back is not needed anymore.
2010-10-12quartz: Remove linear gradient fallbackAndrea Canciani1-10/+0
Degenerate linear gradients are reduced to solid gradients in gstate, so backends do not need to handle them.
2010-10-12test: Update ref images for radial testsAndrea Canciani13-0/+0
Pixman master now rasterizes radial gradients following the PDF specification (see section 8.7.4.5.4 of PDF 32000-1:2008).
2010-10-08Rewrite pdf-operators word wrappingAdrian Johnson1-118/+113
to fix some bugs
2010-10-08Refresh ft-show-glyphs-positioning pdf ref imageAdrian Johnson1-0/+0
The new image is more accurate as a result of the fix in 165a14b5
2010-10-08Don't put Type3 glyphs in latin subsetsAdrian Johnson1-2/+7
it is not yet implemented
2010-10-07Fix typoBehdad Esfahbod1-1/+1
2010-10-07test: Remove old html infrastructureAndrea Canciani4-337/+9
The new dynamic html page supersedes the old make-generated static html page.
2010-10-07test: Add a new test result html pageAndrea Canciani2-0/+468
This page uses JavaScript to parse test log files and create the test table according to the results. It also allows dynamic selection and hiding of rows/columns based on a chosen parameter and table structure change, by dragging a field from rows to columns and vice versa. Left click selects the cells with the chosen parameter-value association. If these cells are exactly the only show cells, it hides them and shows all the other ones, instead. Right click inverts the visibility of the cells with the chosen parameter-value association. When some rows are hidden, the PASS/NEW/FAIL/XFAIL/CRASH counters show both the currently shown test case count and the total count, if they are different: "23[62]" means that there are 62 test case in that category, but only 23 are currently visible. Dragging a field from the row (or column) header to the column (or row) header rebuilds the table to have that field along the columns (or rows), updating PASS/NEW/FAIL/... counters and showing the whole table again. Test names are hyperlinks to the test log. Images are hyperlinks to themselves.
2010-10-07test: Make tests run in natural orderAndrea Canciani1-0/+13
When tests are registered, they are prepended to a list. Reverting the list, we get a list whose order is the same as that of registration.