1
1
mirror of https://github.com/Kozea/WeasyPrint.git synced 2024-09-11 20:47:56 +03:00
Commit Graph

215 Commits

Author SHA1 Message Date
Guillaume Ayoub
8ef8c39a03 Initial support of PNG emojis
Related to #1406.
2021-08-29 19:34:28 +02:00
Guillaume Ayoub
64d04c47b6 Merge branch '53.x' 2021-08-27 22:01:02 +02:00
Guillaume Ayoub
228520d8e6 Handle cx and cy in SVG rotations
Fix #1430.
2021-08-27 21:59:34 +02:00
Guillaume Ayoub
61ff7f0e1c Handle full "display" property
In CSS Display Module Level 3, the "display" property gets a long
representation allowing:

- a clear separation between inner and outer display type,
- new supported types (contents, run-in, flow-root…),
- inline list items.

This commit allows the (retrocompatible) new long syntax for "display". It also
supports the "flow-root" value. It doesn’t support values related to ruby, and
it doesn’t support the new "contents" and "run-in" display types.

This work gives the possibility to simplify the code in the block_*_layout
functions, and to improve the overall layout.

Related to #36.
2021-08-23 21:54:28 +02:00
Guillaume Ayoub
3aca9f1f84 Change the resume_at and skip_stack structure
Many operations, including page breaks, require a pointer to a specific
position of the box tree. For example, we used to have this structure to point
to the beginning of the first child of the second child:

(1, (2, None))

We now use:

{1: {2: None}}

This change is the first step to handle parallel flows (see #36). It doesn’t
change anything to the layout for now, but it allows us to store multiple
pointers in the same structure.

The next step is to handle multiple pointers in skip_stack during boxes layout.
It means that most of the *_layout() function need an extra for-loop to manage
multiple skip stacks.

We’ll then need to split new types of boxes: table cells, floats, absolutes…
2021-08-22 12:10:48 +02:00
Guillaume Ayoub
2e96bdee35 Simplify API to get intrinsic size of images
The previous API wasn’t stateless, as it sometimes required to call
get_intrinsic_size before accessing intrinsic_ratio. The new API offers a
single method to get width, height and ratio.
2021-08-03 18:39:14 +02:00
Guillaume Ayoub
783378d14a Fix reference for percentages 2021-07-31 08:29:23 +02:00
Guillaume Ayoub
3e11acafb2 Include origin translation into matrix for patterns 2021-07-31 01:06:50 +02:00
Guillaume Ayoub
fd973a195a Fix origin translation for SVG gradients 2021-07-31 00:57:47 +02:00
Guillaume Ayoub
f240bae0b8 Handle SVG image tags for images with no intrinsic size 2021-07-31 00:30:00 +02:00
Lucie Anglade
8c23e982e8 Preserve ration when drawing image in svg 2021-07-30 17:15:15 +02:00
Lucie Anglade
cd42c6cabf Clip embedded svg 2021-07-30 16:42:00 +02:00
Lucie Anglade
11a175efc7 Handle x and y in use tags 2021-07-30 16:32:25 +02:00
Lucie Anglade
7f6e99bc58 Handle errors in points 2021-07-30 16:08:19 +02:00
Lucie Anglade
d80e99dd6c Fix use tags referencing svg and symbols, new episode 2021-07-30 15:49:10 +02:00
Lucie Anglade
6de791a3a1 Fix use tags referencing svg and symbols 2021-07-30 15:42:51 +02:00
Lucie Anglade
603736407c Do not crash when bounding box is unknown 2021-07-30 15:23:04 +02:00
Lucie Anglade
c104c8e099 Handle unit in dash array 2021-07-30 15:15:50 +02:00
Lucie Anglade
9bcece11fe Fix blend mode 2021-07-30 15:12:06 +02:00
Guillaume Ayoub
5a53e11608 Clean and fix some cases of SVG gradients 2021-07-25 18:30:32 +02:00
Guillaume Ayoub
6417023f3d Fix translation when viewBox’s origin is not 0,0
Related to #1400.
2021-07-23 23:59:14 +02:00
Guillaume Ayoub
a5b9db5160
Merge pull request #1401 from pbregener/issue-1399
More robust handling of SVG use tags
2021-07-23 22:38:26 +02:00
Guillaume Ayoub
a0ad94b143 Don’t stroke when stroke-width is 0
Related to #1403.
2021-07-23 22:36:05 +02:00
Guillaume Ayoub
8d7bcead0a Fix how x and y attributes are handled
Fix #1403.
2021-07-23 22:17:37 +02:00
pbregener
96daadf742
More robust handling of SVG use tags
Fixes #1399
2021-07-20 18:10:04 +02:00
Guillaume Ayoub
5fba476370 Test and fix text-anchor 2021-07-18 10:09:03 +02:00
Guillaume Ayoub
23b99475c2 Use "in" when possible 2021-07-18 10:08:50 +02:00
Guillaume Ayoub
c7b97fa3bf Handle simple cases of clip-path
Fix #1374.
2021-07-18 09:36:14 +02:00
Guillaume Ayoub
add1dad80b Use named parameters for stream transformation 2021-07-17 14:25:58 +02:00
Guillaume Ayoub
a4cc61c7b8 Use matrix.values instead of indices 2021-07-17 13:46:46 +02:00
Guillaume Ayoub
e6be0fc47f Fix text children 2021-07-16 15:17:15 +02:00
Guillaume Ayoub
cef8cf109d Fix and simplify image size management 2021-07-12 15:07:31 +02:00
Guillaume Ayoub
231736d73e Use the original SVG tree when drawing patterns
In Pattern, we want self.tree to be the pattern tree when we call draw(), but
we want self.tree to be the original SVG tree for everything else, like finding
defs.

This commit replaces self.tree with the original SVG tree after we call draw().

Fix #1394.
2021-07-12 11:42:07 +02:00
Guillaume Ayoub
08f3a59d4f Strip quotes from font names in SVG
Fix #1393.
2021-07-12 10:54:11 +02:00
Guillaume Ayoub
c0c9879bc5 Handle stroke-opacity and fill-opacity
This commit also cleans a lot of things about the way opacity is handled,
with many small bug fixes.

Fix #1371.
2021-06-02 20:35:06 +02:00
Guillaume Ayoub
41d4a262d3 Don’t copy the already-cascaded style when copying nodes
Fix #1370.
2021-06-01 22:30:54 +02:00
Guillaume Ayoub
edf47f5311 Copy nodes when drawing them as use tags
Fix #1370.
2021-06-01 22:11:11 +02:00
Guillaume Ayoub
6dde6cb5e9 Fix SVG transform order
Fix #1369.
2021-05-31 22:37:18 +02:00
Guillaume Ayoub
451258a3ec Don’t include stroke width in g bounding boxes 2021-05-30 19:09:04 +02:00
Guillaume Ayoub
0f8deb86a7 Include stroke width in bounding box
Fix #1367.
2021-05-30 09:50:40 +02:00
Guillaume Ayoub
f17acdcd02 Rename SVG.paint 2021-05-30 09:50:30 +02:00
Guillaume Ayoub
bb8eea9066 Fix style attributes in SVG
Fix #1366.
2021-05-27 16:36:34 +02:00
Guillaume Ayoub
41ab0f86e7 Cascade inherited attributes for use tags
Fix #1365.
2021-05-27 12:04:41 +02:00
Guillaume Ayoub
a3028945fc Handle visibility and display attributes
Fix #1362.
2021-05-25 15:01:07 +02:00
Guillaume Ayoub
2d19becf19 Improve SVG support 2021-04-30 18:13:08 +02:00
Guillaume Ayoub
3818df4b96 Use a "more elegant way" to handle stroke-dasharray="none"
Related to #1346.
2021-04-29 17:54:04 +02:00
Guillaume Ayoub
264246959b
Merge pull request #1346 from pbregener/svg-stroke-dasharray-none
SVG: Allow stroke-dasharray:none
2021-04-29 17:45:26 +02:00
Guillaume Ayoub
9f38063379 Use page coordinates when no bounding box is found for opacity 2021-04-29 16:52:00 +02:00
pbregener
06ef510ddf
SVG: Allow stroke-dasharray:none
Fixes a crash when a SVG contains
`style="stroke-dasharray:none"`
2021-04-29 11:42:46 +02:00
Guillaume Ayoub
26cc19ce16 Fix double x/y transform for use tags
Fix #1345.
2021-04-28 21:57:15 +02:00
Guillaume Ayoub
6069fcd61a Remove unused code 2021-04-26 18:03:59 +02:00
Guillaume Ayoub
51c673b343 Use almost the same code for gradients and patterns 2021-04-26 17:59:20 +02:00
Guillaume Ayoub
3ec32732aa Fix gradients and tests 2021-04-26 17:36:18 +02:00
Guillaume Ayoub
3de9ff408d Fix lint 2021-04-26 11:31:07 +02:00
Guillaume Ayoub
79bb88932c Fix text rotation 2021-04-20 17:21:40 +02:00
Guillaume Ayoub
66f9720f9b Allow strokes for text 2021-04-20 17:15:17 +02:00
Guillaume Ayoub
a4a5342bfb Fix tspan 2021-04-20 17:05:05 +02:00
Guillaume Ayoub
b44bf650bd Forget shapes that are not drawn 2021-04-20 16:53:21 +02:00
Guillaume Ayoub
82047b08e1 Fix text position 2021-04-20 16:44:31 +02:00
Guillaume Ayoub
dc861c785a Add more tests for SVG images 2021-04-19 17:52:25 +02:00
Guillaume Ayoub
0c0367b2f2 Use "stream" instead of "context" when possible
We already have stacking contexts and layout contexts, there’s no need to use
"context" for "streams-with-context" too.
2021-04-18 18:50:11 +02:00
Guillaume Ayoub
4c56bb0851 Fix text position 2021-04-18 18:10:40 +02:00
Guillaume Ayoub
e00e027c9c Fix SVG arcs 2021-04-18 18:01:56 +02:00
Guillaume Ayoub
3fc7273756 Test SVG bounding boxes 2021-04-18 17:20:07 +02:00
Guillaume Ayoub
541ed24472 Test SVG images 2021-04-18 16:01:26 +02:00
Guillaume Ayoub
0935813e75 Don’t handle text on a path 2021-04-17 18:30:18 +02:00
Guillaume Ayoub
6391139040 Add tests for text 2021-04-17 18:15:26 +02:00
Guillaume Ayoub
d503bab165 Handle alpha in fill and stroke colors 2021-04-17 12:30:40 +02:00
Guillaume Ayoub
54fa4f95f5 Fix bug in matrix transformation 2021-04-17 12:29:48 +02:00
Guillaume Ayoub
604ed6e99e Try to handle gradientTransform 2021-04-16 15:33:04 +02:00
Guillaume Ayoub
84f945d396 Fix userSpaceOnUse for gradients 2021-04-16 11:21:46 +02:00
Guillaume Ayoub
ed1869f14e Avoid negative radius for radial gradients 2021-04-15 17:52:18 +02:00
Guillaume Ayoub
31cb0d76f3 Fix pattern drawing 2021-04-14 21:31:08 +02:00
Guillaume Ayoub
66d2b4da3c First SVG text test 2021-04-14 16:56:30 +02:00
Guillaume Ayoub
744ad9dff4 Call begin_text and end_text when drawing text in SVG 2021-04-14 16:56:30 +02:00
Guillaume Ayoub
36c076091a Document and clean svg.utils 2021-04-12 17:19:46 +02:00
Guillaume Ayoub
087eae6ee0 Fix @import rules 2021-04-12 17:15:10 +02:00
Guillaume Ayoub
d29d22795a Document and clean svg.text 2021-04-12 16:56:37 +02:00
Guillaume Ayoub
4fdde2188d Comment and fix svg.shapes 2021-04-12 16:38:36 +02:00
Guillaume Ayoub
0756a0f424 Document and fix svg.path 2021-04-12 16:35:52 +02:00
Guillaume Ayoub
a425d1aa88 Document svg.image 2021-04-12 16:29:26 +02:00
Guillaume Ayoub
da2625f5a6 Document and comment svg.defs 2021-04-12 16:27:55 +02:00
Guillaume Ayoub
3aa34e2e0b Document and comment svg.css 2021-04-12 15:49:06 +02:00
Guillaume Ayoub
ef9668ebf9 Use tinycss2.colors3 when possible 2021-04-12 15:21:43 +02:00
Guillaume Ayoub
75a422a70d Clean and comment bounding box 2021-04-12 15:12:02 +02:00
Guillaume Ayoub
847ccc0a94 Comment draw_node 2021-04-12 14:32:57 +02:00
Guillaume Ayoub
bd2bc5cc7d Fix text position 2021-04-12 14:30:30 +02:00
Guillaume Ayoub
a9144e582e Clean and document svg.__init__ 2021-04-12 14:25:55 +02:00
Guillaume Ayoub
c775ca6f46 Add bounding boxes for texts 2021-04-12 13:32:40 +02:00
Guillaume Ayoub
dd901bd8f6 Remove unused file 2021-04-11 16:15:36 +02:00
Guillaume Ayoub
0d8fb23145 Clean SVG support 2021-04-11 16:13:59 +02:00
Guillaume Ayoub
3a41d4e8a1 Initial support of text 2021-04-10 22:15:43 +02:00
Guillaume Ayoub
f52156ab0a Fix x/y offsets with objectBoundingBox gradients 2021-04-05 15:45:20 +02:00
Guillaume Ayoub
8cbd0b0639 Handle masks, multiple fixes for gradients 2021-04-05 12:11:36 +02:00
Guillaume Ayoub
889e310bc1 Handle filters 2021-04-04 12:40:04 +02:00
Guillaume Ayoub
22b1a5ea1f Fix ratio preservation 2021-04-02 18:34:40 +02:00
Guillaume Ayoub
d572de33b9 Handle opacity attribute 2021-03-31 15:28:17 +02:00
Guillaume Ayoub
5fb675e362 Fix svg tag size 2021-03-31 15:20:57 +02:00
Guillaume Ayoub
8fb5f86087 Draw patterns 2021-03-24 14:10:50 +01:00
Guillaume Ayoub
ed5a5f9a93 Render images 2021-03-23 16:22:41 +01:00
Guillaume Ayoub
2474f99ca9 Handle CSS for SVG 2021-03-23 15:06:33 +01:00
Guillaume Ayoub
abd69a6503 Fix preserved ratio when no viewbox is specified 2021-03-23 14:54:21 +01:00
Guillaume Ayoub
882681a99c Preserve ratio for svg tags 2021-03-23 13:58:31 +01:00
Guillaume Ayoub
00e2557ee9 Handle radial gradients 2021-03-20 09:41:37 +01:00
Guillaume Ayoub
b7392374e2 Handle linear gradients 2021-03-19 15:58:22 +01:00
Guillaume Ayoub
5a66e68639 Use svg methods instead of size helper function 2021-03-17 21:30:35 +01:00
Guillaume Ayoub
97ace0dd8c Initial broken support of use 2021-03-15 14:21:36 +01:00
Guillaume Ayoub
324f935e33 Handle markers 2021-03-14 09:29:33 +01:00
Guillaume Ayoub
561734e8ae Make SVG tests pass again 2021-03-12 16:59:02 +01:00
Guillaume Ayoub
1fedbebd1b Fix lint 2021-03-12 16:08:39 +01:00
Guillaume Ayoub
5d3460ac13 Parse definitions 2021-03-12 15:47:49 +01:00
Guillaume Ayoub
6e60615e41 Handle paths 2021-03-12 15:20:43 +01:00
Guillaume Ayoub
de9359ad46 Fix intrinsic sizes calculation 2021-03-12 15:20:20 +01:00
Guillaume Ayoub
43ec426f6b Add all SVG shapes, inheritance and transformations 2021-03-07 20:34:24 +01:00
Guillaume Ayoub
9d300c1528 First SVG shapes 2021-03-07 18:00:38 +01:00