Age | Commit message (Collapse) | Author | Files | Lines |
|
Use the return value to return the result from _cairo_hash_table_lookup()
(as opposed to filling an output parameter on the stack) as this (a)
results in cleaner code (no strict-alias breaking pointer casts), (b)
produces a smaller binary and (c) is measurably faster.
|
|
As we obey the rule in Cairo that we only insert if we know that there is
no existing entry in the hash table, we can therefore perform a much quicker
search knowing that the key is unique.
|
|
Another embarrassing, but thankfully, trivial bug.
|
|
A limitation of the current API was that the destroy notifier was called
on the mime-data block. This prevents the user from passing in a pointer
to a managed block, for example a mime-data block belonging to a
ref-counted object. We can overcome this by allowing the user to specify
the closure to be used with the destroy notifier.
|
|
Help Carl with a speedy snapshot by writing a few notes about what has been
added so far to 1.9.
|
|
Silly typo that escaped the test suite.
|
|
Reading through the previous commit spotted that the arguments to
edge_compare_for_y_against_x were transposed, but the test-suite had
failed to catch detect it. This is due that in order to actually
solve the equation we need to have a diagonal edge passing near an
off-centre point of interest, which was not among the test cases. So add
some off-centre tests to fully exercise the code.
|
|
Benjamin Otte reports that in one particular benchmark cairo_in_fill() is
a hotspot in the profile. Currently we tessellate the entire path and then
search for a containing trapezoid. This is very expensive compared to the
simple method of counting the number of edge crossing between the point of
interest and x=-∞. For example, this speeds tessellate-256 up by almost 3
orders of magnitude.
|
|
Check cairo_in_fill() with some WINDING tests as well as the current
EVEN_ODD.
|
|
Use the configure check for libz and do not attempt to build the trace
unless we have zlib.
|
|
It's appears to be dropped from the current poppler trunk, so just use our
own venerable cairo_surface_write_ton_png().
|
|
Write out the original PNG mime-data if attached to the surface during
cairo_surface_write_to_png(). Similar to how the compressed alternate
representations are handled by the other backends.
Note: by automatically attaching and using the mime-data in preference to
the image data, we break the read_from_png(); draw(); write_to_png()
cycle.
|
|
When emitting image data, first check to see if we have a pre-compressed
alternate representation.
|
|
Add a "image/png" mime-type test.
|
|
Embed the attached PNG representation of a surface in preference to
re-encoding the surface.
|
|
Attach the original png data as an alternate representation for image
surfaces created by cairo_surface_create_from_png().
|
|
If the user attempts to clear the attached mime data representation, just
clear the user data slot and do not allocate an empty structure.
|
|
|
|
Support jpeg embedding for svg output.
|
|
Remove some redundant whitespace from the glyph arrays to improve
readability and shrink the output file size.
|
|
|
|
I moved the pixel centre to xc,yc but forgot to remove it during
compensation - as caught by the test suite.
Refresh a couple of reference images that depend upon exact pixel-centre
rounding conditions.
|
|
We wish to reduce the visible error when converting to a pixman matrix, so
perform the compensation in device space instead of pattern space.
|
|
pixman limits the src] co-ordinates (and thus [xy]_offset] to 16bits,
so we need to be careful how much of the translation vector to push into
[xy]_offset. Since the range is the same for both, split the integer
component between the matrix and the offset.
test/scale-offset* now at least shows the source image, even if it is
misplaced.
|
|
set_font_face was not consuming it's operand but blithely placing an
undefined font_face onto the operand stack, whereas set_source was
performing invalid exchanges on the stack.
|
|
If we attempt to use a surface as a source before we write to it, record
the surface contents.
|
|
Be consistent and use "//" for the filter mode to indicate a constant.
|
|
Allow tests to skip targets based on whether they are a meta surface or
not.
|
|
Add a test case for the scaling bug reported by Michel Iwaniec:
http://lists.cairographics.org/archives/cairo/2008-November/015660.html
|
|
Do not add a dependency to any2ppm if it has been deconfigured.
|
|
Minimise the error of the pixman matrix about the centre of the displayed
area rather than the origin.
|
|
In the case where the font face was no longer on the operand stack, the
font face would not have been passed to cairo_scaled_font_create().
|
|
If called directly (e.g. via /etc/ld.so.preload) put the output trace into
a central directory, and not the pwd.
|
|
Forgot to add the new file to the distribution with the previous commit.
|
|
<adrianj> ickle_: If we are going to use a different image for jpeg in
mime-data maybe we could create a jpg that contains the text "jpeg". That
way when support for the other image formats is added the mime-data test
could have one image for each type with each image and it is easy to see
that each image is the correct one.
|
|
Detect when we successfully encode the JPEG data from the mime-type by
using a completely image.
|
|
Need to look for reference/input images from srcdir as well.
|
|
imagediff broke once again.
|
|
Fixup a typo I introduced that caused us to request the jpeg data for the
destination surface and not the source.
|
|
If the ARGB32 is opaque, discard the alpha channel - so we should generate
byte identical output to the reference images.
|
|
|
|
To test that images in PDF files correctly embedded the mime data.
|
|
Update the show_glyphs() prototype to include the extents argument.
|
|
Simplify the trace/replay by replacing the identity array with the
identity operator.
|
|
Use $(..) for make variable substitution as opposed to incorrectly using
@..@ for substitution by configure.
|
|
|
|
Instead of doing a full-copy of the mime data (which can be 10K-100K,
or even larger) just copy a reference to the original mime to the
snapshot surface (as suggested by Behdad).
|
|
Install the auxiliary library into the cairo subdirectory within the
lib path, so that it doesn't clutter $(libdir) and sets a precedent for
future auxiliary libraries.
|
|
Remove the debianism from the comments for HAVE_BFD and comply with
Behdad's guidelines on using $(...) within Makefile.am.
|
|
extend-pad was not a clear demonstration of the EXTEND_PAD mode, so revamp
it to show the filter extending a 4 pixel surface to cover the entire
output. However, this hides a discrepancy with the vector surfaces that we
cannot prevent the external renders from applying an interpolation to the
border pixels, so we copy the original test to extend-pad-border to check
the desired behaviour on boundary pixels.
|