Commit graph

4134 commits

Author SHA1 Message Date
Owen Taylor
aa6b2c386b Support artificial bold fonts with FC_EMBOLDEN; patch from Jackey Yang and sunmoon1997.
Check for FT_GlyphSlot_Embolden()
Call FT_GlyphSlot_Embolden for fonts where FC_EMBOLDEN is set but that aren't bold. Add another private flag for this.
2005-08-22 15:19:03 +00:00
Billy Biggs
fdb5e2aa47 Optimize away calls to cairo_paint_with_alpha() if the alpha value given is <= 0.
Add a new macro CAIRO_ALPHA_IS_ZERO.
2005-08-21 21:04:52 +00:00
Billy Biggs
33599bc6b6 Fix for bug #4172:
Use _cairo_fixed_to_double and _cairo_double_to_fixed when converting between double and 16.16 fixed point. These functions round nicely, and solve some inconsistencies in rendering between my PPC and x86 machines. Thanks to Owen Taylor for suggesting the fix.
The above change does affect linear gradients slightly, but it seems worth it. Update the reference images to follow.
2005-08-21 14:10:39 +00:00
Owen Taylor
e3e7046cd7 Remove stray doc sentence that wasn't meant to be committed. 2005-08-21 12:13:17 +00:00
Billy Biggs
17845df95b Fix for bug #4165:
Use pointer comparison for coincident points to ensure a well-defined ordering, and avoid setting discard on both points. This fixes problems with my Mac's implementation of qsort. Final patch by Bertram Felgenhauer.
Update reference images after the change.
2005-08-21 11:41:44 +00:00
Owen Taylor
1ce62becd1 Fix the handling of backend->clone_similar == NULL. (#4161, Christian Biesinger) 2005-08-21 08:53:56 +00:00
Owen Taylor
8e9e40d752 Improve the documentation of internal functions. (Based on a patch from Christian Biesinger, #4162) 2005-08-21 08:24:41 +00:00
Owen Taylor
65f90287bb Recognize gentoo's (and maybe other distro's) modified server vendor string, where extra text is added to the upstream value. (#4068, reported by Doug Goldstein, others. Patch from Mart Raudsepp) 2005-08-21 08:11:24 +00:00
Owen Taylor
af614d2de6 Don't try to transform val->image when it is NULL. (#4163, Mathias Hasselmann) 2005-08-21 08:06:06 +00:00
Owen Taylor
4a7a09b4ab Include Xfree86-4.5 in the blacklist. (Reported by Andrew Benton) 2005-08-20 05:23:52 +00:00
Billy Biggs
b9da101879 Fix for bug #4096:
Improve the performance of png reading by adding special cases for fully transparent and fully opaque alpha, and using the standard optimization for 8-bit division by 255.
Add an INLINE macro for gcc.
2005-08-19 23:05:13 +00:00
Carl Worth
3ec312f728 Fix for bug #4137:
Fix to round properly.
2005-08-19 14:37:42 +00:00
Owen Taylor
1f68f77a10 Ignore really small fonts, since size zero fonts give xpdf fits. (#2938) 2005-08-19 14:05:14 +00:00
Carl Worth
9d0211b263 Fix to actually test scaled_font->status instead of just having a comment that claims to test it. Thanks to Behdad Esfahbod <behdad@cs.toronto.edu>. 2005-08-19 13:00:23 +00:00
Owen Taylor
8eb912577b We need the call to fixup_unbounded when we optimize the RENDER operator to XCopyArea as well. 2005-08-19 12:55:00 +00:00
Carl Worth
7468ed35a1 Fixes for a general problem of which bug #4094 was a specific instance:
Don't change the status value if it already holds an error. This avoids destroying "first error" information and also avoids attempting to write read-only data, (eg. from nil objects).
Don't set an error on the same object if it is in an error state to begin with, just return immediately. This is intended to reduce (eventual) error prints to the first cause of an error for any given object, instead of a continual spew.
2005-08-19 12:08:42 +00:00
Carl Worth
2b72a4eee8 Fix for bug #2729:
Adjust negative offsets up to their equivalent positive value. Add error checking for dash values, (must each be non-negative and must not be all zero).
Add documentation.
Add new CAIRO_STATUS_INVALID_DASH.
Add dash-offfset-negative test from Owen.
churn
2005-08-19 12:02:14 +00:00
Kristian Høgsberg
a2e798b5a1 Add this missing fuction.
Document this funtion.
2005-08-19 10:36:43 +00:00
Carl Worth
b626dff5b9 Fix for bug #3915:
Add new NULL_POINTER nil pattern.
Check for surface == NULL and return a nil pattern.
Verify that the above fix works.
2005-08-19 07:39:47 +00:00
Carl Worth
435fb3c65f Fix for bug #4088:
New function to return the current nil pattern depending on the status.
Add missing early bailout on surface->status with error propagation to the pattern.
Related cleanups for cairo_pattern_t:
Don't check other->status since this is a static function.
Add missing early bailout on other->status.
Cleanup identifier names.
Track rename of nil patterns.
Don't call _cairo_error for pre-existing errors.
Take care to initialize some fields to that _cairo_pattern_release_surface will work even after an error.
Track rename of cairo_solid_pattern_nil to cairo_pattern_nil.
New test to ensure that a file-not-found error will propagate from a surface, through a pattern, and onto a cairo_t.
2005-08-18 23:10:37 +00:00
Carl Worth
45cea5efc8 Fix documentation comment to use &amp; in place of &. 2005-08-18 22:31:04 +00:00
Owen Taylor
c1b5a19624 Fix offset passed in for source patterns. (#2333, Tim Rowley)
Fix font to Vera Sans rather than "Sans"
2005-08-18 17:19:54 +00:00
Owen Taylor
31341327bf Implement new equations for CLEAR and SOURCE CLEAR: (mask IN clip) ? 0 : dest SOURCE: (mask IN clip) ? src : dest That behave more like what people expect.
CLEAR and SOURCE are now bounded.
Assert that SOURCE and CLEAR aren't passed to these functions.
Assert that SOURCE and CLEAR aren't passed to these functions when there is a mask.
Do fixups for SOURCE and CLEAR as well as unbounded operators, since in the absence of a mask, we need SOURCE to work correctly (don't care about CLEAR)
_cairo_ft_font_show_glyphs) Consistently use CLEAR/TRANSPARENT (source doesn't matter) rather than SOURCE/TRANSPARENT when clearing rectangles.
src/cairo-xlib-surface.c src/cairo-surface.c: Use IN rather than SOURCE as an example of an unbounded operator in docs.
Remove CLEAR/SOURCE columns since they are no longer unbounded.
test/operator-clear.c test/operator-source Makefile.am: Add targetted tests of CLEAR/SOURCE.
2005-08-18 15:50:36 +00:00
Carl Worth
ff9654e677 Fix to not leak surface->cgImage on out-of-memory (thanks to Josh Aas <joshmoz@gmail.com>). 2005-08-18 14:34:10 +00:00
Carl Worth
a82cf0eb7b Fix to not right-shift a negative number when called with an argument of 0. 2005-08-18 09:46:20 +00:00
Carl Worth
639680e5fe Fixes for bug #4110:
Don't call _cairo_ft_unscaled_font_init_key in the from_face case, just clear filename and id instead. Initialize unscaled->base first so that initialization order matches the structure declaration order.
Fix to accept a NULL string and hash it identically to a zero-length string.
Add a test that calls cairo_ft_font_create_for_ft_face to demonstrate bug #4110.
2005-08-17 09:51:09 +00:00
Owen Taylor
18f3357c99 src/cairoint.h: Split out a couple of useful utility functions.
src/cairo-clip.c src/cairo-gstate.c: Use them.
Move code to fill a pixman_region16_t to here.
Document.
Use _cairo_surface_fill_region().
Add a return status, use regions to simplify.
src/cairoint.h
Handle the return value from _cairo_surface_composite_fixup_unbounded().
src/cairo-surface.c src/cairoint.h (_cairo_surface_composite_shape_fixup_unbounded): Add a variant of _cairo_surface_composite_fixup_unbounded() to avoid creating a dummy cairo_surface_attributes_t.
Use _cairo_surface_composite_shape_fixup_unbounded().
Call _cairo_surface_composite_shape_fixup_unbounded(), since the source might still be restricted, even though the mask is unbounded.
Restore the rectangle optizations when drawing with unbounded operators by adding a clear for the extra area after drawing the rectangles.
2005-08-16 18:22:16 +00:00
Carl Worth
a2a89e858a Rename cairo_printf_format to CAIRO_PRINTF_FORMAT. Fix syntax error in the case of an empty definition. (Thanks to Vladimir Vukicevic). 2005-08-16 16:41:10 +00:00
Kristian Høgsberg
b7737163bc Zero out 'entry', not 'unscaled' when evicting face from cache. 2005-08-14 19:25:05 +00:00
Kristian Høgsberg
52c5d89ae5 Fix a mismatch between printf arguments and format string (thanks to Adrian Johnson).
Add macro to mark printf like functions.
2005-08-13 17:38:23 +00:00
Carl Worth
3f24b949a0 Fix unterminated comment that eliminated cairo_pattern_add_color_stop_rgba. 2005-08-13 04:22:46 +00:00
Carl Worth
fd8a70f4b6 Add missing notes on soname and user-space locking for cairo_set_source() to the 0.9.0 release notes.
Document cairo_pattern_add_color_stop_rgb, cairo_pattern_add_color_stop_rgba, cairo_pattern_set_matrix, and cairo_pattern_get_matrix.
Add note on user-space locking to the documentation for cairo_set_source().
2005-08-13 04:17:36 +00:00
Carl Worth
620de68bea Turn the mutex code back on. It looks like the deadlocks have disappeared as of the cairo_scaled_font_map patch from two days ago.
Setup an automake conditional for the HAVE_PTHREAD case.
Link all tests with -lpthread if available, so that we can get some testing of cairo with mutexes turned on.
2005-08-13 03:26:18 +00:00
Carl Worth
615a32107d Minor, cosmetic changes:
Reowrd comment to be more clear.
Prefer return of address of base field rather than cast.
Whitespace fix.
2005-08-13 02:21:07 +00:00
Carl Worth
a8b6ad3e88 Shuffle functions around to put them in a sane order within the file. There should be no functional change here. 2005-08-13 02:02:39 +00:00
Carl Worth
47d5bbeafc Add hash_entry field to cairo_scaled_font_t so that it can be hashed.
Convert the font_face/matrix/ctm/options => cairo_scaled_font_t mapping from a two-layer cairo-cache.c implementation to a single cairo-hash.c implementation backed by a simple array for the secondary cache.
Reviewed by: keithp
2005-08-13 01:38:55 +00:00
Behdad Esfahbod
be9698e6ad Move checks for invalid number of points before the calls that use the points. 2005-08-13 01:17:06 +00:00
Behdad Esfahbod
c5ac41755d Fix conversion to short, to get a uniform range even for 0xffff. In other words, a color component of of (1.0 - epsilon) would convert to 0xffff, not 0xfffe. 2005-08-13 01:04:55 +00:00
Carl Worth
56d299d277 Fix inverted sense of assert statement which led to lots of unpleasant crashes. 2005-08-11 16:52:43 +00:00
Carl Worth
ba9cb14cdf Add hash_entry field to cairo_font_face_t so that it can (optionally) be hashed.
Complete the remainder of the simple -> toy renaming. Convert the family/slant/weight -> cairo_toy_font_face_t mapping to use cairo-hash.c rather than cairo-cache.c.
2005-08-11 14:59:27 +00:00
Carl Worth
d1dbd031cc Move implementation of filename/id => cairo_ft_unscaled_font_t from cairo-cache.c to cairo-hash.c, with new cairo_ft_unscaled_font_map.
Add cairo_unscaled_font->hash_entry so that unscaled fonts can live in hash tables.
2005-08-11 14:49:07 +00:00
Carl Worth
34c9e242c8 Re-order cairo_scaled_font->font_face parameter to maintain the font_face,font_matrix,ctm,options order that prevails throughout the implementation. Add font_face parameter to _cairo_scaled_font_init.
Remove const qualifier from toy_face parameter to creat_toy, as these functions may reference the font face. Track addition of font_face parameter to _cairo_scaled_font_init.
Implement font_face parameter to _cairo_scaled_font_init, moving the reference of the font_face from _cairo_inner_font_cache_create_entry.
Add a font_face parameter in addition to the unscaled_font parameter.
Track new font_face parameter to _cairo_ft_scaled_font_create.
Whitespace touchup.
Reviewed by: otaylor
2005-08-11 06:35:20 +00:00
Carl Worth
ae63b95211 Augment existing CAIRO_VERSION_MAJOR/MINOR/MICRO and CAIRO_VERSION_STRING with CAIRO_VERSION_ENCODE and CAIRO_VERSION. Add functions for run-time access:
cairo_version cairo_version_string
2005-08-10 15:58:25 +00:00
Carl Worth
bdd8cbddee From Travis Spencer <tspencer@cs.pdx.edu>:
Fix typo causing a syntax error.
2005-08-10 14:30:15 +00:00
Carl Worth
0fc4192104 From Keith Packard <keithp@keithp.com>,
Build pixman internally as a private part of cairo, with suitable name changes to avoid any visible pixman symbols in the cairo library:
Descend into pixman.
Drop libpixman from Requires.
Don't check for libpixman. Check version of pkg-config and use Requires.private instead of Requires in cairo.pc if possible. Generate pixman Makefiles.
Rip out release-publish target and installation of libpixman.pc.
Add pixman-remap.h. Drop libpixman.la target.
Fix to include config.h rather than ../config.h
This is the cpp magic to rename all pixman functions from the various fb, Fb, INT_pixman, pixman, Render, _Render, or no prefix to _cairo_pixman_ prefixes.
Include pixman-remap.h to get all the cairo-internalized names.
Add -Ipixman/src to get at pixman-remap.h.
2005-08-10 12:36:51 +00:00
Vladimir Vukicevic
bbf0d98a54 Additional fix for 0-width/0-height glyphs. 2005-08-10 11:40:11 +00:00
Carl Worth
82fbb9c381 Patch from Behdad Esfahbod <behdad@cs.toronto.edu>:
Update to use AC_INIT and AM_INIT_AUTOMAKE in recommended ways. Add support for substituting CAIRO_VERSION_MAJOR/MINOR/MICRO into generated headers.
Add CAIRO_VERSION_MAJOR/MINOR/MICRO and CAIRO_VERSION_STRING which are generated by configure.
2005-08-10 11:08:38 +00:00
Carl Worth
52ec34a157 Add cairo_private to the few pieces of data that were missing it. 2005-08-10 06:52:40 +00:00
Vladimir Vukicevic
8042a0d219 Don't crash on 0-width or 0-height glyphs; also correctly initialize entry->key.base.memory with the image cache image.
Free allocated entry in case of error to avoid leaking memory.
2005-08-09 13:42:54 +00:00
Carl Worth
cedf233052 Add cairo_private to several function prototypes that were missing it. 2005-08-09 13:01:14 +00:00