Commit graph

8070 commits

Author SHA1 Message Date
Fujii Hironori
26fe448be3 Fix cairo_matrix_transform_distance documentation
* Use dx and dy instead of dx1 and dy1 to match with the arguments
* Use dx_new and dy_new instead of dx2 and dy2 to match with other parts of the documentation
* Use xx, yx, xy, yy instead of a, b, c, d to match with other parts of the documentation
* Remove the last two sentences that doesn't make sense
2023-02-18 15:33:28 +09:00
Uli Schlachter
d7b9695ee4 Merge branch 'quartz-image-surface' into 'master'
[quartz] Cleanup and make better use of cairo_quartz_image_surface_t.

See merge request cairo/cairo!317
2023-02-17 16:56:55 +00:00
Adrian Johnson
b7d8da7d1f Merge branch 'issue-641-glyph-bounds' into 'master'
DWrite: clipped glyphs in win32 compositor

Closes #641

See merge request cairo/cairo!459
2023-02-16 10:14:07 +00:00
Adrian Johnson
44d83d206e Merge branch 'dwrite-glyph-phase' into 'master'
DWrite: glyph surfaces should take subpixel positions into account

Closes #597

See merge request cairo/cairo!456
2023-02-16 09:49:54 +00:00
John Ralls
6b1b14a236 [quartz] Pretty up the surface-type and zero-size tests. 2023-02-14 11:53:02 -08:00
John Ralls
198d1792cf [quartz] Cleanup and make better use of cairo_quartz_image_surface_t.
Use a CGBitmapContext mapping the underlying image surface's data instead
of maintaining a CGImage. Generalize the quartz surface snapshot mechanism
to work with both cairo_quartz_surface_t and cairo_quartz_image_surface_t
and to use the latter to get a CGContext around non-quartz surfaces.
Use this snapshot machanism to get a CGImageRef when needed from a
cairo_quartz_image_surface_t.
2023-02-14 11:52:57 -08:00
Fujii Hironori
cce89abbb9 DWrite: clipped glyphs in win32 compositor
The win32 compositor is using _cairo_dwrite_show_glyphs_on_surface for
DWrite. It was assuming that a glyph was painted inside 3x3 of the em
square. It should take the actual glyph bounding box by using
GetAlphaTextureBounds.

Fixes cairo/cairo#641
2023-02-14 05:29:47 +09:00
Adrian Johnson
6b5519626c Merge branch 'ft-use-outline-glyph-for-path' into 'master'
FT: Always use the outline glyph to get the path

See merge request cairo/cairo!455
2023-02-11 04:18:18 +00:00
Adrian Johnson
f2f2d20a36 Merge branch 'fix-valgrind-errors' into 'master'
Fix some problems found by valgrind

See merge request cairo/cairo!452
2023-02-11 04:18:03 +00:00
Fujii Hironori
adcd1e7325 DWrite: glyph surfaces should take subpixel positions into account
Shift the glyph position by phases taken
by _cairo_scaled_glyph_xphase and _cairo_scaled_glyph_yphase.

Fixes #597
2023-02-10 10:05:57 +09:00
Adrian Johnson
3fc3d8b8f0 FT: Always use the outline glyph to get the path
Trying to extract the path from a color recording does not work in all
cases such as paths in groups.
2023-02-09 20:46:04 +10:30
Fujii Hironori
1d8032c406 DWrite: Don't convert subpixel antialiasing to grayscale
Reuse the win32 font code to create a glyph mask for a dwrite font.
Renamed a function _compute_mask in cairo-win32-font.c to
_cairo_compute_glyph_mask.
2023-02-09 13:19:36 +09:00
Adrian Johnson
cae2376dd0 Merge branch 'doc-fixes' into 'master'
More random doc fixes

See merge request cairo/cairo!437
2023-02-08 09:53:29 +00:00
Adrian Johnson
a23af71c9d Merge branch 'remove-unused-tee-function' into 'master'
Remove unused _cairo_tee_surface_find_match

See merge request cairo/cairo!447
2023-02-08 09:48:29 +00:00
Adrian Johnson
fe7f1d8cb4 Merge branch 'warnings' into 'master'
Fix some compiler warnings

See merge request cairo/cairo!427
2023-02-08 09:47:42 +00:00
Adrian Johnson
e85c242f0a Implement a font options compare function and use it in gstate
Valgrind is not happy with the memcmp() to compare font options and it
won't work correctly with variations and custom_palette.
2023-02-08 20:09:15 +10:30
Adrian Johnson
4fbc2ea386 truetype: revert use of _cairo_strndup
3d102f25 changed the malloc/memcpy to _cairo_strndup but it won't work
in this case as the string may be UTF-16.
2023-02-08 20:05:52 +10:30
Fujii Hironori
db4c941c34 DWrite: More accurate glyph paths for small fonts
Applying a transformation matrix to a glyph path after converting
floats to fixed point numbers caused caluculation errors. Apply the
transform before the conversion.

Fixes cairo/cairo#611
2023-02-08 05:41:07 +09:00
Khaled Hosny
b588a43fcd Fix -Wunused-variable
../src/cairo-quartz-image-surface.c:149:24: warning: unused variable 'size' [-Wunused-variable]
    const unsigned int size = surface->imageSurface->height * surface->imageSurface->stride;
2023-02-06 11:39:08 +02:00
Khaled Hosny
288843ef5d Fix -Wsometimes-uninitialized warning
../src/cairo-pdf-surface.c:2505:9: warning: variable 'status' is used uninitialized whenever 'if' condition is true [-Wsometimes-uninitialized]
    if (surface->base.status != CAIRO_STATUS_SUCCESS)
        ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
../src/cairo-pdf-surface.c:2573:9: note: uninitialized use occurs here
    if (status == CAIRO_STATUS_SUCCESS)
        ^~~~~~
../src/cairo-pdf-surface.c:2505:5: note: remove the 'if' if its condition is always false
    if (surface->base.status != CAIRO_STATUS_SUCCESS)
    ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
../src/cairo-pdf-surface.c:2497:5: note: variable 'status' is declared here
    cairo_status_t status, status2;
    ^
2023-02-06 11:39:08 +02:00
Uli Schlachter
6f205ed28f Remove unused _cairo_tee_surface_find_match
A little history digging shows that we only ever had one caller of
_cairo_tee_surface_find_match. Commit 658cdc7c9a "Introduce
cairo_tee_surface_t" added this code to _cairo_surface_clone_similar():

    if (src->type == CAIRO_SURFACE_TYPE_TEE) {
       cairo_surface_t *match;

       match = _cairo_tee_surface_find_match (src,
                                              surface->backend,
                                              content);
       if (match != NULL)
           src = match;
    }

Then, two years later in 2011, commit af9fbd176b "Introduce a new compositor
architecture" removed _cairo_surface_clone_similar() and thus this code became
unused.

This commit drops this unused code.

Signed-off-by: Uli Schlachter <psychon@znc.in>
2023-02-05 16:15:25 +01:00
Khaled Hosny
c2ce4d421d Fix -Wparentheses-equality warnings
warning: equality comparison with extraneous parentheses [-Wparentheses-equality]
2023-02-04 10:58:13 +02:00
Emmanuele Bassi
5e42a5277e tee: Fix cairo wrapper functions
Follow-up to !391 to apply the same changes to the (disabled by default)
tee surface.

Fixes: #634
2023-02-03 15:40:12 +01:00
Khaled Hosny
bd608ab72c doc: fix cairo_dwrite_font_face_set_rendering_params docs
Gtk-doc wants the header and code parameter names to match.

src/win32/cairo-dwrite-font.cpp:1484: warning: Parameter description for cairo_dwrite_font_face_set_rendering_params::params is not used from source code comment block.
src/win32/cairo-dwrite-font.cpp:1484: warning: Parameter description for cairo_dwrite_font_face_set_rendering_params::param is missing in source code comment block.
2023-02-02 14:19:08 +02:00
Khaled Hosny
379cb6a672 doc: Document the deprecated status of more surface types 2023-02-02 14:13:56 +02:00
Khaled Hosny
bc0139fd1a doc: Fix external links 2023-02-02 14:13:56 +02:00
Khaled Hosny
06cda058f2 doc: Escape percent sign
Otherwise gtk-doc will eat one of them.
2023-02-02 14:13:56 +02:00
Khaled Hosny
3c6727ee5c doc: Fix internal links 2023-02-02 14:13:56 +02:00
Khaled Hosny
bc2f9b956b doc: Don’t mention non-existent cairo_stroke_to_path()
The code for it is commented out and unimplemented.
2023-02-02 14:13:56 +02:00
Khaled Hosny
086e013e06 doc: Include surface observer documentation
Mostly empty, though.
2023-02-02 14:13:56 +02:00
Khaled Hosny
f03c73b270 doc: Fix missing quartz image surface docs 2023-02-02 14:13:56 +02:00
Khaled Hosny
368ceb67b4 doc: Document CAIRO_SURFACE_TYPE_SKIA and mark it deprecated
Though the Skia code is gone, the surface type enum value is still kept
and need to be documented.
2023-02-02 14:13:56 +02:00
Khaled Hosny
500d87c90d doc: Document CAIRO_STATUS_SVG_FONT_ERROR 2023-02-02 14:13:56 +02:00
Khaled Hosny
40badda549 doc: Fix the gtk-doc syntax of internal symbols
To stop gtk-doc from listing them as undocumented.
2023-02-02 14:13:56 +02:00
Khaled Hosny
4c48d4bbb8 doc: Fix parameter name in comment 2023-02-02 14:13:56 +02:00
Khaled Hosny
eaf8859877 doc: Fix dwrite gtk-doc warnings
Don’t use gtk-doc comment syntax for regular comments.
2023-02-02 14:13:56 +02:00
Adrian Johnson
71eb6396c4 Merge branch 'bug-597' into 'master'
Win32 surface compositor should support DWrite font

Closes #597

See merge request cairo/cairo!441
2023-02-02 10:59:29 +00:00
Adrian Johnson
00453e9a7d Merge branch 'pdf-color-fonts' into 'master'
PDF Type 3 color fonts

See merge request cairo/cairo!434
2023-02-02 10:58:52 +00:00
Adrian Johnson
74feff604e Merge branch 'fix-svg-render-debug' into 'master'
Fix build with -DDEBUG_SVG_RENDER

See merge request cairo/cairo!439
2023-02-02 10:57:35 +00:00
Emmanuele Bassi
b1a18123ed Post-release version bump to 1.17.9 2023-02-02 10:47:00 +01:00
Emmanuele Bassi
c3b672634f Release Cairo 1.17.8 (snapshot) 2023-02-02 08:37:29 +01:00
Fujii Hironori
b1bc11f646 Win32 surface compositor should support DWrite font
_cairo_win32_gdi_compositor_glyphs was falling back to the default
implementation for DWrite font because check_glyphs() returned FALSE
for CAIRO_FONT_TYPE_DWRITE.

Fixes cairo/cairo#597
2023-02-02 09:40:46 +09:00
Fujii Hironori
44e11a96a6 DWrite: Fix incorrect glyph metrics for negative glyph height
GetGdiCompatibleMetrics may return a glyph metrics that yields a small
nagative glyph height. But, it was calculated in unsigned integer.
And, it resulted in a very large glyph metrics.

Calculate glyph width and height in signed integer and let them
non-negative.
2023-02-02 05:27:18 +09:00
Fujii Hironori
bbc6cdb4ef DWrite: Added new API to set measuring mode and rendering params
Added the following API:
* cairo_dwrite_font_face_get_measuring_mode
* cairo_dwrite_font_face_get_rendering_params
* cairo_dwrite_font_face_set_measuring_mode
* cairo_dwrite_font_face_set_rendering_params
2023-02-02 05:27:18 +09:00
Fujii Hironori
cb3410b69f DWrite: Removed old unused API
Removed the following functions:
* cairo_dwrite_get_cleartype_rendering_mode
* cairo_dwrite_set_cleartype_params
* cairo_dwrite_scaled_font_get_force_GDI_classic
* cairo_dwrite_scaled_font_set_force_GDI_classic
2023-02-02 05:27:18 +09:00
Adrian Johnson
775017ee0d Merge branch 'dwrite-cpp-header' into 'master'
Add cairo-dwrite.h header file

See merge request cairo/cairo!425
2023-02-01 08:21:12 +00:00
Adrian Johnson
d11b058c10 Fix build with -DDEBUG_SVG_RENDER 2023-02-01 06:26:09 +10:30
Adrian Johnson
4614892c59 s/the the/the/ 2023-01-31 20:50:01 +10:30
Adrian Johnson
1585587668 dwrite: create C++ dwrite header 2023-01-31 06:54:32 +10:30
Adrian Johnson
e8cac307e1 Fix dwrite crash when printing dwrite toy font
Fixes #632
2023-01-30 07:19:03 +10:30