Commit graph

45 commits

Author SHA1 Message Date
Adrian Johnson
ca3662d6fc Make cairo-output-stream.c accept variable width printf fields 2007-04-20 22:43:37 +09:30
Carl Worth
b0a256aaf3 Change _cairo_dtostr to have a void return type
As previously implemented, there's no essential information in the
return value from _cairo_dotostr, (the caller can simply use strlen
to recompute the same value, which is what the only caller is already
doing).

There would be real information in a return value which would return
the result from the call to snprintf for the case where the buffer is
not large enough for the number being printed.
2007-04-10 13:07:09 -07:00
Carl Worth
5303980f82 _cairo_output_stream_vprintf: Add assertion to detect internal inconsitency
This will catch any inconsistency between the length of a single
format specifier and the fixed size of the single_fmt buffer.
2007-04-10 13:03:37 -07:00
Carl Worth
97a69bc82e Fix mis-indented _cairo_dtostr 2007-04-10 12:13:27 -07:00
Behdad Esfahbod
8fbf50d31d [src] Make sure all source files #include "cairoint.h" as their first include
This is necessary to avoid many portability problems as cairoint.h includes
config.h.  Without a test, we will regress again, hence add it.

The inclusion idiom for cairo now is:

	#include "cairoint.h"

	#include "cairo-something.h"
	#include "cairo-anotherthing-private.h"

	#include <some-library.h>
	#include <other-library/other-file.h>

Moreover, some standard headers files are included from cairoint.h and need
not be included again.
2007-04-03 20:28:11 -04:00
Behdad Esfahbod
88dc0c5f19 Make sure all nil objects start with _cairo_
Previously, the convention was that static ones started with cairo_, but
renamed to start with _cairo_ when they were needed from other files and
became cairo_private instead of static...

This is error prune indeed, and two symbols were already violating.  Now
all nil objects start with _cairo_.
2007-04-03 19:26:18 -04:00
Jeff Smith
5f83a1b542 [cairo-output-stream] Remove use of strtol 2007-03-21 10:41:03 -04:00
Adrian Johnson
88cae7766d output-stream: coding style fix 2007-02-13 23:29:05 +10:30
Adrian Johnson
d6f15b2600 Output-stream: Omit the minus sign from negative zero 2007-02-11 22:20:58 +10:30
Carl Worth
89e7d5d420 Make _cairo_output_stream_destroy return the stream's status as a last gasp. 2006-09-07 16:01:07 -07:00
Carl Worth
959b85e98c Merge branch 'warnings-cleanup' into cairo
Conflicts:

	src/cairo-font-subset.c
2006-08-07 15:06:47 -07:00
Carl Worth
caa9abc9ee Fix file handle leak in failure path (bug 7616) 2006-08-07 10:28:40 -07:00
Carl Worth
eb9caf0833 Add -Wsign-compare compiler flag and fix all warnings 2006-07-28 22:50:06 -07:00
Carl Worth
3465ae1c58 output-stream: Support %X in addition to %x 2006-06-20 10:43:53 -07:00
Kristian Høgsberg
bb11980f14 Add 'x' case to printf switch so we actually implement %02x. 2006-06-20 02:16:48 -04:00
Kristian Høgsberg
cd5e08a9fe Implement 0-padding and field width for _cairo_output_stream_printf().
Use it instead of %c%c in PS and PDF surfaces.
2006-06-19 22:44:39 -04:00
Kristian Høgsberg
dedc51ba51 Only call close function for output streams if it's non-NULL. 2006-06-14 19:25:37 -04:00
Kristian Høgsberg
8581447e7b Add an in-memory output-stream implementation. 2006-06-12 03:15:33 -04:00
Kristian Høgsberg
45cbe055d9 Convert the stdio output stream to use the new output stream interface. 2006-06-12 03:08:51 -04:00
Kristian Høgsberg
3575c942f8 Make cairo_output_stream_t an embeddable type.
Most internal cairo types are transparent within cairo and have init and fini
functions to intialize and finialize them in place.  This way they can be
easily be embedded in other structs or derived from.  Initially, the
cairo_output_stream_t type was proposed as a publically visible type and
thus kept opaque.  However, now it's only used internally and derived from
in a number of places so let's make it an embeddable type for consistency
and ease of use.

The patch keeps _cairo_output_stream_create() and _cairo_output_stream_close()
around for (internal) backwards compatibility by deriving a
cairo_output_stream_with_closure_t stream type.

The patch also moves all cairo_output_stream_t functions out of cairoint.h
and into new file cairo-output-stream-private.h, thus chipping away at the
monolithic cairoint.h.
2006-06-12 03:07:19 -04:00
Carl Worth
ef10a0403a Remove initial, final, and duplicate blank lines.
This patch was produced by running git-stripspace on all *.[ch] files
within cairo. Note that this script would have also created all the changes
from the previous commits to remove trailing whitespace.
2006-06-06 15:50:33 -07:00
Carl Worth
4670366ede Remove trailing whitespace from lines that look like comments.
This patch was produced with the following (GNU) sed script:

	sed -i -r -e '/^[ \t]*\/?\*/ s/[ \t]+$//'

run on all *.[ch] files within cairo, (though I manually excluded
src/cairo-atsui-font.c which has a code line that appears as a comment
to this script).
2006-06-06 15:35:48 -07:00
Carl Worth
80b8deb1e4 Remove extraneous whitespace from "blank" lines.
This patch was produced with the following (GNU) sed script:

	sed -i -r -e 's/^[ \t]+$//'

run on all *.[ch] files within cairo.
2006-06-06 15:25:49 -07:00
Kristian Høgsberg
84c6f87963 Clarify licensing of float formatting code. 2006-05-28 13:38:50 -04:00
Carl Worth
8a209e6ad9 Fix cairo_output_stream_destroy to do nothing on nil stream objects. 2006-05-10 14:50:31 -07:00
Carl Worth
d9137e56b6 Use ferror to get error checking for stdio-based output streams. 2006-04-12 13:44:14 -07:00
Carl Worth
5444aa55b3 Clean up output_stream error handling in _cairo_ps_surface_create.
We teach the output stream to catch a NULL file error here, which
allows for less checking in ps_surface_create. We also fix the ps
surface code to look for the status of a nil stream rather than
checking for NULL.
2006-04-12 13:39:24 -07:00
Carl Worth
a7abf8e451 Merge 'Save PS output in temp file' from ps-type3 branch 2006-04-12 12:54:28 -07:00
Kristian Høgsberg
523f9e46d8 Make cairo_t and cairo_output_stream_t destructors handle NULL.
All other cairo destructors and reference functions accept and ignore NULL,
so fix up cairo_destroy(), cairo_reference(), and cairo_output_stream_destroy()
to do so too.
2006-04-11 20:49:55 -04:00
Keith Packard
ade195cdba Save PS output in temp file so we can prepend global data (like fonts) 2006-04-08 21:29:14 -07:00
Carl Worth
732e06258c Rename write_data to write_func in cairo_output_stream_t. 2006-04-07 15:47:02 -07:00
Carl Worth
dd67cf6616 Implement proper cairo-style error-handling for cairo_output_stream_t.
The cairo_output_stream_t object already had an internal status value,
but it was annoyingly returning status values from various functions.
It also was missing proper shutdown-on-error as well as nil-create
semantics.

This fixes those shortcomings and adjusts all callers for the new
semantics, (leading to simpler and more correct calling
code---particularly in the case of cairo-base85-stream.c).
2006-04-04 10:45:38 -07:00
Carl Worth
5a06133eb2 Implement cairo-base85-stream as a filtering output stream not just a write function.
Now _cairo_output_stream_create accepts a new close callback, (which
the base85 stream uses to write its trailer). This eliminates the
former kludge used to fclose the stdio output streams, and required a
bit of touchup to the pdf, ps, and svg-surface usage of streams.
2006-04-03 23:44:51 -07:00
Carl Worth
57fe9b17b0 Move base85 code out of cairo-output-stream.c into new cairo-base85-stream.c 2006-04-03 15:26:17 -07:00
Alexander Larsson
a7f58f8862 Add LZW image compression and ASCII85 encoding for PostScript image output.
* src/Makefile.am:
Add cairo-lzw.c to sources
Remove erronous space at start of line

* src/cairo-lzw.c:
New file implementing _cairo_compress_lzw which does Lempel-Ziv & Welch
compression as used by postscript. Based on code from libtiff.

* src/cairo-output-stream.c:
Add _cairo_output_stream_write_base85_string which implements
an encoder for the ASCII85Decode postscript filter.

* src/cairoint.h:
Add _cairo_compress_lzw and _cairo_output_stream_write_base85_string.

* src/cairo-ps-surface.c:
Write Images LZW + Base85 encoded.
Change ps level to 2 (we only needed level 3 for FlateDecode).
Change DocumentData to Clean7Bit as we don't include binary data
anymore.
2006-03-15 10:47:10 -08:00
Carl Worth
c780f4a562 cairo-output-stream: Don't dereference a NULL pointer due to OOM.
This close bug #6176:

	Null pointer dereference on OOM in _cairo_output_stream_create_for_file()
	https://bugs.freedesktop.org/show_bug.cgi?id=6176
2006-03-13 12:05:13 -08:00
Emmanuel Pacaud
b2f973e7f4 add optionnal disabled by default SVG backend.
include SVG backend files.
include SVG_SURFACE_FEATURE.
rename dtostr to _cairo_dtostr for use in cairo-svg-surface.c.
_cairo_dtostr declaration.
new.
new.
build svg-surface and svg-clip.
new.
new.
2005-12-08 13:09:26 +00:00
Carl Worth
0586daaa29 Patch from John Ehresman <jpe@wingide.com> to aid win32 compilation:
Define snprintf as _snprintf when under the influence of _MSC_VER.
Define int32_t and friends as __int32 and friends when under the influence of _MSC_VER.
Make include of unistd.h conditional on HAVE_UNISTD_H.
2005-08-05 07:48:18 +00:00
Kristian Høgsberg
7a923e6ddd Rewrite postscript backend to generate more interesting output than the current big-image implementation, using meta surfaces for font subsetting and image fallbacks.
Remove obsolete comment.
Make a couple of stylistic changes and add _cairo_output_stream_write_hex_string.
Add _cairo_surface_intersect_clip_path so we can replay path clipping.
2005-07-01 12:45:35 +00:00
Carl Worth
f0923288c5 Two fixes from Kristion Høgsberg:
Fix to close the file if we opened it.
Grab the status from out of the stream _before_ we destroy the stream.
2005-05-17 12:40:55 +00:00
Carl Worth
84bc5a32d6 Remove destroy_closure from cairo_output_stream_t interface.
Remove destroy_closure argument from cairo_pdf_surface_create_for_stream. Rename width,height to width_in_points, height_in_points for better clarity.
Brush a bunch of dust off of the PS backend and bring it up to date with the latest API conventions from the PDF backend. These include: accepting a filename rather than a FILE in the primary constructor, providing a stream-based interface for more flexibility, and accepting a surface size in device-space units (points) rather than inches.
Make it a little more clear that the width and height being passed around are in units of points.
Update to the latest cairo-ps.h changes as described above. Notice how much more sane things become now that the surface size is described in device-space units.
2005-05-17 05:58:01 +00:00
Kristian Høgsberg
ea410111d3 Take a filename instead of a FILE pointer. 2005-05-16 11:41:42 +00:00
Kristian Høgsberg
15ecc87763 Make this a varg function and use the new _cairo_output_stream_vprintf() function to format extra dict contents.
Reimplement the printf logic so we can special case formatting of doubles to be locale independent and trim trailing zeros.
2005-05-13 14:04:22 +00:00
Carl Worth
92060c12ee Make handling of unsigned char* vs. char* consistent. Change all parameters that are actual string data from unsigned char* to char* (cairo_text_extents, cairo_show_text, cairo_text_path). Change all data buffers from char* to unsigned char* (cairo_write_func_t).
Track changes from unsigned char* to char*. Convert to unsigned only at the internal interface to unicode processing.
Track change from char* to unsigned char*.
2005-04-06 13:01:13 +00:00
Kristian Høgsberg
b481b85841 ChangeLog 2005-03-17 07:30:05 +00:00