Commit graph

6333 commits

Author SHA1 Message Date
Adrian Johnson
248dd97075 win32-printing: Implement JPEG support 2008-11-06 00:21:35 +10:30
Chris Wilson
29621bd399 [matrix] Remove stray offset from previous commit.
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.
2008-11-05 12:16:47 +00:00
Chris Wilson
e811173311 [matrix] Compensate pixman_matrix in device space.
We wish to reduce the visible error when converting to a pixman matrix, so
perform the compensation in device space instead of pattern space.
2008-11-05 11:16:08 +00:00
Chris Wilson
c95eebc923 [pattern] Split the translation between the matrix and [xy]_offset
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.
2008-11-05 10:00:13 +00:00
Chris Wilson
d1b8186fd7 [trace] Correct emission of set_font_face and set_source
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.
2008-11-05 08:36:09 +00:00
Chris Wilson
4a4b10271a [trace] Capture foreign drawables.
If we attempt to use a surface as a source before we write to it, record
the surface contents.
2008-11-05 08:36:02 +00:00
Chris Wilson
432fe1ec27 [trace] Mark filter mode as immediate.
Be consistent and use "//" for the filter mode to indicate a constant.
2008-11-05 08:36:01 +00:00
Chris Wilson
68309481aa [test] Mark targets with is_meta?
Allow tests to skip targets based on whether they are a meta surface or
not.
2008-11-05 08:36:01 +00:00
Chris Wilson
8855f9583e [test] Add scale-offset-(similar|image)
Add a test case for the scaling bug reported by Michel Iwaniec:
http://lists.cairographics.org/archives/cairo/2008-November/015660.html
2008-11-05 08:01:27 +00:00
Chris Wilson
aad9809003 [test] Only depend on any2ppm if we build it.
Do not add a dependency to any2ppm if it has been deconfigured.
2008-11-05 08:01:27 +00:00
Chris Wilson
59bdeba9ab [matrix] Minimise pixman conversion error.
Minimise the error of the pixman matrix about the centre of the displayed
area rather than the origin.
2008-11-05 08:01:27 +00:00
Chris Wilson
068d465bb3 [trace] Fix emission of cairo_scaled_font_create()
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().
2008-11-04 14:57:21 +00:00
Chris Wilson
a3d56c60e8 [trace] Use a common directory by default.
If called directly (e.g. via /etc/ld.so.preload) put the output trace into
a central directory, and not the pwd.
2008-11-04 14:22:08 +00:00
Chris Wilson
3f7a21c5c9 [test] Add jpeg.jpg to EXTRA_DIST
Forgot to add the new file to the distribution with the previous commit.
2008-11-04 13:46:10 +00:00
Chris Wilson
9900a2adf3 [test] Update mime-data jpeg reference data.
<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.
2008-11-04 13:41:02 +00:00
Chris Wilson
c13a09ddb4 [test] Use a different jpeg image for mime-data
Detect when we successfully encode the JPEG data from the mime-type by
using a completely image.
2008-11-04 13:03:24 +00:00
Chris Wilson
8407470409 [test] Adapt pdf-mime-data for non-srcdir build.
Need to look for reference/input images from srcdir as well.
2008-11-04 13:03:24 +00:00
Chris Wilson
8007618837 [test] Fix compilation of imagediff.
imagediff broke once again.
2008-11-04 13:03:24 +00:00
Chris Wilson
282d774427 [mime-type] Request the mime-data for the source surface, not ourselves!
Fixup a typo I introduced that caused us to request the jpeg data for the
destination surface and not the source.
2008-11-04 13:03:24 +00:00
Chris Wilson
aa616abc9a [png] Use RGB for opaque images.
If the ARGB32 is opaque, discard the alpha channel - so we should generate
byte identical output to the reference images.
2008-11-04 13:03:23 +00:00
Adrian Johnson
30976635d7 PS: Implement JPEG embedding 2008-11-04 22:54:25 +10:30
Adrian Johnson
73bc278c7a Add pdf mime data test
To test that images in PDF files correctly embedded the mime data.
2008-11-04 22:39:36 +10:30
Chris Wilson
3f18d38fbd [win32] Compile fix for extend-pad extents.
Update the show_glyphs() prototype to include the extents argument.
2008-11-04 10:43:07 +00:00
Chris Wilson
5ba95b7e12 [trace] Convert [1 0 0 1 0 0] to identity
Simplify the trace/replay by replacing the identity array with the
identity operator.
2008-11-04 10:43:02 +00:00
Chris Wilson
3664b32195 [trace] Remove more @..@ from Makefile.am
Use $(..) for make variable substitution as opposed to incorrectly using
@..@ for substitution by configure.
2008-11-04 10:42:49 +00:00
Behdad Esfahbod
310026ab42 [aclocal.dolt.m4] Fix build with bash versions <= 3.0 (bug #18363) 2008-11-04 01:51:06 -05:00
Chris Wilson
9021755012 [mime-data] Copy a reference to the mime-data on snapshotting.
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).
2008-11-03 23:45:12 +00:00
Chris Wilson
4f032ca35a [trace] Install cairo-trace.so into $(libdir)/cairo
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.
2008-11-03 23:23:09 +00:00
Chris Wilson
c80a1c68c1 [configure] Make trace consistent.
Remove the debianism from the comments for HAVE_BFD and comply with
Behdad's guidelines on using  $(...) within Makefile.am.
2008-11-03 23:16:09 +00:00
Chris Wilson
43e2370b02 [test] Update extend-pad.
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.
2008-11-03 14:24:59 +00:00
Chris Wilson
b3462c5616 [test] Convert a few residual '-out.*'
Catch a few -out.* hiding in boilerplate.
2008-11-03 14:24:39 +00:00
Chris Wilson
34586860ef [trace] Big-endian compile fixes.
A few typos.
2008-11-03 12:11:14 +00:00
Chris Wilson
ca83df55a6 [trace] Wrap test surfaces.
Wrap the test surfaces to avoid crashes whilst tracing the test suite.
2008-11-03 11:46:31 +00:00
Chris Wilson
2c08f3f83b [trace] Autodetect -lbfd during configure
Stop being lazy and detect libbfd during configure.
2008-11-03 11:30:38 +00:00
Chris Wilson
8fc3d0ffeb [mime-data] Allow embedding of arbitrary mime-types.
Use the surface user-data array allow to store an arbitrary set of
alternate image representations keyed by an interned string (which
ensures that it has a unique key in the user-visible namespace).

Update the API to mirror that of cairo_surface_set_user_data() [i.e.
return a status indicator] and switch internal users of the mime-data to
the public functions.
2008-11-03 11:24:12 +00:00
Chris Wilson
afef83a1fa Compile tidy.
Fix a few minor compiler warnings.
2008-11-03 11:24:11 +00:00
Chris Wilson
f77723fc88 [pdf] Missing status check.
Check that stream was successfully opened before attempting to write to
it.
2008-11-03 11:24:11 +00:00
Chris Wilson
04e3bb932e [trace] Emit set_mime_data().
Wrap the new cairo_surface_set_mime_data() function.
2008-11-03 11:24:07 +00:00
Chris Wilson
350fa7b98e [trace] Fix boundary terminations
Don't increment the terminator!
2008-11-03 09:36:53 +00:00
Chris Wilson
f3cbc5cf45 [trace] Use utf8 len in show_text_glyphs().
Honour the parameter specifying the length of the utf8 string when
emitting show_text_glyphs.
2008-11-03 09:36:39 +00:00
Adrian Johnson
1685bbee1b test/README: fix typo 2008-11-02 20:12:30 +10:30
Adrian Johnson
540ac11113 type1-subset: return unsupported on FT errors
and let type1-fallback handle it. This fixes the bug reported by
Peter Weilbacher in
http://lists.cairographics.org/archives/cairo/2008-October/015569.html
2008-11-02 20:12:30 +10:30
Adrian Johnson
3707178fa4 PDF: Implement JPEG image embedding 2008-11-02 20:12:29 +10:30
Adrian Johnson
3c684347f4 Add cairo_surface_set_mime_data()
Currently only handles jpeg data.
2008-11-02 20:12:29 +10:30
Adrian Johnson
a39a4f52ac PS: meta-surface patterns with EXTEND_PAD are unsupported
We have to use fallback images for this.
2008-11-02 20:12:29 +10:30
Adrian Johnson
19ee13ca2b PS: Implement EXTEND_PAD for image patterns
Images with EXTEND_PAD are painted into a new image the size of the
operation extents. The new image is then embedded in the PS file with
the pattern matrix adjusted to ensure the image origin is in the
correct location.
2008-11-02 20:12:29 +10:30
Adrian Johnson
e639b53671 PDF: meta-surface patterns with EXTEND_PAD are unsupported
We have to use fallback images for this.
2008-11-02 20:12:29 +10:30
Adrian Johnson
6c92edd9a3 PDF: Implement EXTEND_PAD for image patterns
Images with EXTEND_PAD are painted into a new image the size of the
operation extents. The new image is then embedded in the PDF file with
the pattern matrix adjusted to ensure the image origin is in the
correct location.
2008-11-02 20:12:29 +10:30
Adrian Johnson
d146cb4056 PDF: Store the operation extents in each pattern
The extents will be used by EXTEND_PAD patterns as well as any other
pattern that can benefit from knowing the extents of the operation it
will be used with.
2008-11-02 20:12:29 +10:30
Adrian Johnson
fb7cfdd94d Make meta-surface store and replay extents of each operation
To be able to provide the extents of each operation to the backend
during the render phase the meta-surface needs to store the extents
computed by the analysis surface during the analysis phase.

The extents argument is either a pointer to the extents of the operation
stored in the meta-surface or NULL. During analysis the analysis surface
writes the extents to the meta-surface. During the render phase the extents
is made available to paginated surface backends.
2008-11-02 20:12:29 +10:30