Skip to content

Commit b583dfe

Browse files
committed
Add more test cases that already work
1 parent 69b304b commit b583dfe

9 files changed

Lines changed: 29 additions & 32 deletions

File tree

src/render/path.rs

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ use pdf_writer::types::ColorSpaceOperand;
22
use pdf_writer::types::ColorSpaceOperand::Pattern;
33
use pdf_writer::{Chunk, Content, Finish};
44
use usvg::tiny_skia_path::PathSegment;
5-
use usvg::{Fill, FillRule, Node, Opacity, Paint, PaintOrder};
5+
use usvg::{Fill, FillRule, LineCap, Node, Opacity, Paint, PaintOrder};
66
use usvg::{Path, Visibility};
77
use usvg::{Stroke, Transform};
88

@@ -95,11 +95,15 @@ fn stroke(
9595
ctx: &mut Context,
9696
accumulated_transform: Transform,
9797
) {
98-
if path.data.bounds().width() == 0.0 && path.data.bounds().height() == 0.0 {
99-
return;
100-
}
101-
10298
if let Some(stroke) = path.stroke.as_ref() {
99+
if path.data.bounds().width() == 0.0
100+
&& path.data.bounds().height() == 0.0
101+
// Zero length butt should not be rendered
102+
&& stroke.linecap == LineCap::Butt
103+
{
104+
return;
105+
}
106+
103107
let paint = &stroke.paint;
104108
let path_bbox = bbox_to_non_zero_rect(node.bounding_box());
105109

1.29 KB
Loading
2.63 KB
Loading
2.63 KB
Loading
2.63 KB
Loading
2.63 KB
Loading
2.63 KB
Loading

tests/scripts/gen-tests.py

Lines changed: 10 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -16,14 +16,8 @@
1616

1717
IGNORE_TESTS = {
1818
# The following test cases still need to be investigated
19-
"svg/resvg/filters/fePointLight/primitiveUnits=objectBoundingBox.svg": INVESTIGATE,
20-
"svg/resvg/masking/mask/recursive-on-child.svg": INVESTIGATE,
2119
"svg/resvg/paint-servers/pattern/nested-objectBoundingBox.svg": INVESTIGATE,
22-
"svg/resvg/paint-servers/radialGradient/fr=0.2.svg": INVESTIGATE,
23-
"svg/resvg/paint-servers/radialGradient/fr=0.5.svg": INVESTIGATE,
24-
"svg/resvg/paint-servers/radialGradient/fr=0.7.svg": INVESTIGATE,
25-
"svg/resvg/paint-servers/radialGradient/fr=-1.svg": INVESTIGATE,
26-
"svg/resvg/paint-servers/radialGradient/invalid-gradientUnits.svg": INVESTIGATE,
20+
2721
"svg/resvg/painting/stroke-dasharray/n-0.svg": INVESTIGATE,
2822
"svg/resvg/structure/image/image-with-float-size-scaling.svg": INVESTIGATE,
2923
"svg/resvg/structure/svg/funcIRI-parsing.svg": INVESTIGATE,
@@ -37,6 +31,7 @@
3731
"svg/resvg/text/text/emojis.svg": INVESTIGATE,
3832

3933
# The following test cases need to be excluded due to technical reasons
34+
# and are not considered as wrong.
4035
"svg/resvg/filters/feMorphology/huge-radius.svg": "will timeout CI",
4136
"svg/resvg/filters/filter/huge-region.svg": "will sigkill",
4237
"svg/resvg/structure/svg/negative-size.svg": "invalid size",
@@ -46,8 +41,6 @@
4641
"svg/resvg/filters/feImage/simple-case.svg": NO_RELATIVE_PATHS,
4742
"svg/resvg/painting/marker/with-an-image-child.svg": NO_RELATIVE_PATHS,
4843
"svg/resvg/painting/mix-blend-mode/color-dodge.svg": "pdfium bug",
49-
"svg/resvg/painting/stroke-linecap/zero-length-path-with-round.svg": NO_SUPPORT,
50-
"svg/resvg/painting/stroke-linecap/zero-length-path-with-square.svg": NO_SUPPORT,
5144
"svg/resvg/painting/stroke-linejoin/miter-clip.svg": NO_SUPPORT,
5245
"svg/resvg/structure/image/external-gif.svg": NO_RELATIVE_PATHS,
5346
"svg/resvg/structure/image/external-jpeg.svg": NO_RELATIVE_PATHS,
@@ -69,7 +62,7 @@
6962
"svg/resvg/structure/image/zero-height.svg": NO_RELATIVE_PATHS,
7063
"svg/resvg/structure/image/zero-width.svg": NO_RELATIVE_PATHS,
7164

72-
# The following test cases are not implemented in svg2pdf yet
65+
# The following test cases should work but are not implemented in svg2pdf yet.
7366
"svg/resvg/paint-servers/linearGradient/attributes-via-xlink-href-complex-order.svg": NO_REFLECT,
7467
"svg/resvg/paint-servers/linearGradient/attributes-via-xlink-href-from-radialGradient.svg": NO_REFLECT,
7568
"svg/resvg/paint-servers/linearGradient/spreadMethod=reflect.svg": NO_REFLECT,
@@ -78,7 +71,13 @@
7871
"svg/resvg/paint-servers/radialGradient/attributes-via-xlink-href-from-linearGradient.svg": NO_REFLECT,
7972
"svg/resvg/paint-servers/radialGradient/spreadMethod=reflect.svg": NO_REFLECT,
8073
"svg/resvg/paint-servers/radialGradient/spreadMethod=repeat.svg": NO_REPEAT,
81-
"svg/custom/masking/mask/mask-and-image-with-transparency.svg": "bug",
74+
"svg/custom/masking/mask/mask-and-image-with-transparency.svg": "bug. we currently override the soft mask that"
75+
"is in place in the content stream by creating an"
76+
"SMask entry in the Image XObject for transparency",
77+
"svg/resvg/masking/mask/recursive-on-child.svg": "bug. the soft mask that will be created as part of the gradient"
78+
"will override the soft mask currently in place when rendering",
79+
"svg/resvg/painting/stroke-linecap/zero-length-path-with-round.svg": "need to check how Chrome does it",
80+
"svg/resvg/painting/stroke-linecap/zero-length-path-with-square.svg": "need to check how Firefox does it",
8281
}
8382

8483

tests/src/test.rs

Lines changed: 10 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -257,8 +257,7 @@ use crate::run_test;
257257
#[test] fn resvg_filters_feDistantLight_only_elevation() {assert_eq!(run_test("svg/resvg/filters/feDistantLight/only-elevation.svg", "ref/resvg/filters/feDistantLight/only-elevation.png", "diff/resvg/filters/feDistantLight/only-elevation.png", false), 0)}
258258
#[test] fn resvg_filters_feDistantLight_default_attributes() {assert_eq!(run_test("svg/resvg/filters/feDistantLight/default-attributes.svg", "ref/resvg/filters/feDistantLight/default-attributes.png", "diff/resvg/filters/feDistantLight/default-attributes.png", false), 0)}
259259
#[test] fn resvg_filters_fePointLight_complex_transform() {assert_eq!(run_test("svg/resvg/filters/fePointLight/complex-transform.svg", "ref/resvg/filters/fePointLight/complex-transform.png", "diff/resvg/filters/fePointLight/complex-transform.png", false), 0)}
260-
// need to investigate
261-
#[ignore] #[test] fn resvg_filters_fePointLight_primitiveUnits_objectBoundingBox() {assert_eq!(run_test("svg/resvg/filters/fePointLight/primitiveUnits=objectBoundingBox.svg", "ref/resvg/filters/fePointLight/primitiveUnits=objectBoundingBox.png", "diff/resvg/filters/fePointLight/primitiveUnits=objectBoundingBox.png", false), 0)}
260+
#[test] fn resvg_filters_fePointLight_primitiveUnits_objectBoundingBox() {assert_eq!(run_test("svg/resvg/filters/fePointLight/primitiveUnits=objectBoundingBox.svg", "ref/resvg/filters/fePointLight/primitiveUnits=objectBoundingBox.png", "diff/resvg/filters/fePointLight/primitiveUnits=objectBoundingBox.png", false), 0)}
262261
#[test] fn resvg_filters_fePointLight_custom_attributes() {assert_eq!(run_test("svg/resvg/filters/fePointLight/custom-attributes.svg", "ref/resvg/filters/fePointLight/custom-attributes.png", "diff/resvg/filters/fePointLight/custom-attributes.png", false), 0)}
263262
#[test] fn resvg_filters_fePointLight_default_attributes() {assert_eq!(run_test("svg/resvg/filters/fePointLight/default-attributes.svg", "ref/resvg/filters/fePointLight/default-attributes.png", "diff/resvg/filters/fePointLight/default-attributes.png", false), 0)}
264263
#[test] fn resvg_filters_filter_in_to_invalid_1() {assert_eq!(run_test("svg/resvg/filters/filter/in-to-invalid-1.svg", "ref/resvg/filters/filter/in-to-invalid-1.png", "diff/resvg/filters/filter/in-to-invalid-1.png", false), 0)}
@@ -412,25 +411,20 @@ use crate::run_test;
412411
#[test] fn resvg_paint_servers_radialGradient_attributes_via_xlink_href() {assert_eq!(run_test("svg/resvg/paint-servers/radialGradient/attributes-via-xlink-href.svg", "ref/resvg/paint-servers/radialGradient/attributes-via-xlink-href.png", "diff/resvg/paint-servers/radialGradient/attributes-via-xlink-href.png", false), 0)}
413412
#[test] fn resvg_paint_servers_radialGradient_gradientTransform_and_transform() {assert_eq!(run_test("svg/resvg/paint-servers/radialGradient/gradientTransform-and-transform.svg", "ref/resvg/paint-servers/radialGradient/gradientTransform-and-transform.png", "diff/resvg/paint-servers/radialGradient/gradientTransform-and-transform.png", false), 0)}
414413
#[test] fn resvg_paint_servers_radialGradient_stops_via_xlink_href() {assert_eq!(run_test("svg/resvg/paint-servers/radialGradient/stops-via-xlink-href.svg", "ref/resvg/paint-servers/radialGradient/stops-via-xlink-href.png", "diff/resvg/paint-servers/radialGradient/stops-via-xlink-href.png", false), 0)}
415-
// need to investigate
416-
#[ignore] #[test] fn resvg_paint_servers_radialGradient_fr__1() {assert_eq!(run_test("svg/resvg/paint-servers/radialGradient/fr=-1.svg", "ref/resvg/paint-servers/radialGradient/fr=-1.png", "diff/resvg/paint-servers/radialGradient/fr=-1.png", false), 0)}
414+
#[test] fn resvg_paint_servers_radialGradient_fr__1() {assert_eq!(run_test("svg/resvg/paint-servers/radialGradient/fr=-1.svg", "ref/resvg/paint-servers/radialGradient/fr=-1.png", "diff/resvg/paint-servers/radialGradient/fr=-1.png", false), 0)}
417415
#[test] fn resvg_paint_servers_radialGradient_no_stops() {assert_eq!(run_test("svg/resvg/paint-servers/radialGradient/no-stops.svg", "ref/resvg/paint-servers/radialGradient/no-stops.png", "diff/resvg/paint-servers/radialGradient/no-stops.png", false), 0)}
418-
// need to investigate
419-
#[ignore] #[test] fn resvg_paint_servers_radialGradient_fr_0_2() {assert_eq!(run_test("svg/resvg/paint-servers/radialGradient/fr=0.2.svg", "ref/resvg/paint-servers/radialGradient/fr=0.2.png", "diff/resvg/paint-servers/radialGradient/fr=0.2.png", false), 0)}
416+
#[test] fn resvg_paint_servers_radialGradient_fr_0_2() {assert_eq!(run_test("svg/resvg/paint-servers/radialGradient/fr=0.2.svg", "ref/resvg/paint-servers/radialGradient/fr=0.2.png", "diff/resvg/paint-servers/radialGradient/fr=0.2.png", false), 0)}
420417
#[test] fn resvg_paint_servers_radialGradient_spreadMethod_pad() {assert_eq!(run_test("svg/resvg/paint-servers/radialGradient/spreadMethod=pad.svg", "ref/resvg/paint-servers/radialGradient/spreadMethod=pad.png", "diff/resvg/paint-servers/radialGradient/spreadMethod=pad.png", false), 0)}
421-
// need to investigate
422-
#[ignore] #[test] fn resvg_paint_servers_radialGradient_invalid_gradientUnits() {assert_eq!(run_test("svg/resvg/paint-servers/radialGradient/invalid-gradientUnits.svg", "ref/resvg/paint-servers/radialGradient/invalid-gradientUnits.png", "diff/resvg/paint-servers/radialGradient/invalid-gradientUnits.png", false), 0)}
418+
#[test] fn resvg_paint_servers_radialGradient_invalid_gradientUnits() {assert_eq!(run_test("svg/resvg/paint-servers/radialGradient/invalid-gradientUnits.svg", "ref/resvg/paint-servers/radialGradient/invalid-gradientUnits.png", "diff/resvg/paint-servers/radialGradient/invalid-gradientUnits.png", false), 0)}
423419
#[test] fn resvg_paint_servers_radialGradient_gradientUnits_objectBoundingBox_with_percent() {assert_eq!(run_test("svg/resvg/paint-servers/radialGradient/gradientUnits=objectBoundingBox-with-percent.svg", "ref/resvg/paint-servers/radialGradient/gradientUnits=objectBoundingBox-with-percent.png", "diff/resvg/paint-servers/radialGradient/gradientUnits=objectBoundingBox-with-percent.png", false), 0)}
424420
#[test] fn resvg_paint_servers_radialGradient_invalid_spreadMethod() {assert_eq!(run_test("svg/resvg/paint-servers/radialGradient/invalid-spreadMethod.svg", "ref/resvg/paint-servers/radialGradient/invalid-spreadMethod.png", "diff/resvg/paint-servers/radialGradient/invalid-spreadMethod.png", false), 0)}
425-
// need to investigate
426-
#[ignore] #[test] fn resvg_paint_servers_radialGradient_fr_0_5() {assert_eq!(run_test("svg/resvg/paint-servers/radialGradient/fr=0.5.svg", "ref/resvg/paint-servers/radialGradient/fr=0.5.png", "diff/resvg/paint-servers/radialGradient/fr=0.5.png", false), 0)}
421+
#[test] fn resvg_paint_servers_radialGradient_fr_0_5() {assert_eq!(run_test("svg/resvg/paint-servers/radialGradient/fr=0.5.svg", "ref/resvg/paint-servers/radialGradient/fr=0.5.png", "diff/resvg/paint-servers/radialGradient/fr=0.5.png", false), 0)}
427422
#[test] fn resvg_paint_servers_radialGradient_fx_resolving_1() {assert_eq!(run_test("svg/resvg/paint-servers/radialGradient/fx-resolving-1.svg", "ref/resvg/paint-servers/radialGradient/fx-resolving-1.png", "diff/resvg/paint-servers/radialGradient/fx-resolving-1.png", false), 0)}
428423
#[test] fn resvg_paint_servers_radialGradient_stops_via_xlink_href_from_linearGradient() {assert_eq!(run_test("svg/resvg/paint-servers/radialGradient/stops-via-xlink-href-from-linearGradient.svg", "ref/resvg/paint-servers/radialGradient/stops-via-xlink-href-from-linearGradient.png", "diff/resvg/paint-servers/radialGradient/stops-via-xlink-href-from-linearGradient.png", false), 0)}
429424
#[test] fn resvg_paint_servers_radialGradient_many_stops() {assert_eq!(run_test("svg/resvg/paint-servers/radialGradient/many-stops.svg", "ref/resvg/paint-servers/radialGradient/many-stops.png", "diff/resvg/paint-servers/radialGradient/many-stops.png", false), 0)}
430425
#[test] fn resvg_paint_servers_radialGradient_fx_resolving_2() {assert_eq!(run_test("svg/resvg/paint-servers/radialGradient/fx-resolving-2.svg", "ref/resvg/paint-servers/radialGradient/fx-resolving-2.png", "diff/resvg/paint-servers/radialGradient/fx-resolving-2.png", false), 0)}
431426
#[test] fn resvg_paint_servers_radialGradient_fx_resolving_3() {assert_eq!(run_test("svg/resvg/paint-servers/radialGradient/fx-resolving-3.svg", "ref/resvg/paint-servers/radialGradient/fx-resolving-3.png", "diff/resvg/paint-servers/radialGradient/fx-resolving-3.png", false), 0)}
432-
// need to investigate
433-
#[ignore] #[test] fn resvg_paint_servers_radialGradient_fr_0_7() {assert_eq!(run_test("svg/resvg/paint-servers/radialGradient/fr=0.7.svg", "ref/resvg/paint-servers/radialGradient/fr=0.7.png", "diff/resvg/paint-servers/radialGradient/fr=0.7.png", false), 0)}
427+
#[test] fn resvg_paint_servers_radialGradient_fr_0_7() {assert_eq!(run_test("svg/resvg/paint-servers/radialGradient/fr=0.7.svg", "ref/resvg/paint-servers/radialGradient/fr=0.7.png", "diff/resvg/paint-servers/radialGradient/fr=0.7.png", false), 0)}
434428
#[test] fn resvg_paint_servers_radialGradient_gradientTransform() {assert_eq!(run_test("svg/resvg/paint-servers/radialGradient/gradientTransform.svg", "ref/resvg/paint-servers/radialGradient/gradientTransform.png", "diff/resvg/paint-servers/radialGradient/gradientTransform.png", false), 0)}
435429
#[test] fn resvg_paint_servers_radialGradient_gradientUnits_userSpaceOnUse() {assert_eq!(run_test("svg/resvg/paint-servers/radialGradient/gradientUnits=userSpaceOnUse.svg", "ref/resvg/paint-servers/radialGradient/gradientUnits=userSpaceOnUse.png", "diff/resvg/paint-servers/radialGradient/gradientUnits=userSpaceOnUse.png", false), 0)}
436430
#[test] fn resvg_paint_servers_radialGradient_zero_r_with_stop_opacity_2() {assert_eq!(run_test("svg/resvg/paint-servers/radialGradient/zero-r-with-stop-opacity-2.svg", "ref/resvg/paint-servers/radialGradient/zero-r-with-stop-opacity-2.png", "diff/resvg/paint-servers/radialGradient/zero-r-with-stop-opacity-2.png", false), 0)}
@@ -826,10 +820,10 @@ use crate::run_test;
826820
#[test] fn resvg_painting_stroke_linecap_butt() {assert_eq!(run_test("svg/resvg/painting/stroke-linecap/butt.svg", "ref/resvg/painting/stroke-linecap/butt.png", "diff/resvg/painting/stroke-linecap/butt.png", false), 0)}
827821
#[test] fn resvg_painting_stroke_linecap_open_path_with_square() {assert_eq!(run_test("svg/resvg/painting/stroke-linecap/open-path-with-square.svg", "ref/resvg/painting/stroke-linecap/open-path-with-square.png", "diff/resvg/painting/stroke-linecap/open-path-with-square.png", false), 0)}
828822
#[test] fn resvg_painting_stroke_linecap_round() {assert_eq!(run_test("svg/resvg/painting/stroke-linecap/round.svg", "ref/resvg/painting/stroke-linecap/round.png", "diff/resvg/painting/stroke-linecap/round.png", false), 0)}
829-
// not supported in PDF
823+
// need to check how Firefox does it
830824
#[ignore] #[test] fn resvg_painting_stroke_linecap_zero_length_path_with_square() {assert_eq!(run_test("svg/resvg/painting/stroke-linecap/zero-length-path-with-square.svg", "ref/resvg/painting/stroke-linecap/zero-length-path-with-square.png", "diff/resvg/painting/stroke-linecap/zero-length-path-with-square.png", false), 0)}
831825
#[test] fn resvg_painting_stroke_linecap_square() {assert_eq!(run_test("svg/resvg/painting/stroke-linecap/square.svg", "ref/resvg/painting/stroke-linecap/square.png", "diff/resvg/painting/stroke-linecap/square.png", false), 0)}
832-
// not supported in PDF
826+
// need to check how Chrome does it
833827
#[ignore] #[test] fn resvg_painting_stroke_linecap_zero_length_path_with_round() {assert_eq!(run_test("svg/resvg/painting/stroke-linecap/zero-length-path-with-round.svg", "ref/resvg/painting/stroke-linecap/zero-length-path-with-round.png", "diff/resvg/painting/stroke-linecap/zero-length-path-with-round.png", false), 0)}
834828
#[test] fn resvg_painting_stroke_linecap_open_path_with_butt() {assert_eq!(run_test("svg/resvg/painting/stroke-linecap/open-path-with-butt.svg", "ref/resvg/painting/stroke-linecap/open-path-with-butt.png", "diff/resvg/painting/stroke-linecap/open-path-with-butt.png", false), 0)}
835829
#[test] fn resvg_painting_stroke_linecap_zero_length_path_with_butt() {assert_eq!(run_test("svg/resvg/painting/stroke-linecap/zero-length-path-with-butt.svg", "ref/resvg/painting/stroke-linecap/zero-length-path-with-butt.png", "diff/resvg/painting/stroke-linecap/zero-length-path-with-butt.png", false), 0)}
@@ -1679,7 +1673,7 @@ use crate::run_test;
16791673
#[test] fn resvg_masking_clipPath_clip_path_on_self_2() {assert_eq!(run_test("svg/resvg/masking/clipPath/clip-path-on-self-2.svg", "ref/resvg/masking/clipPath/clip-path-on-self-2.png", "diff/resvg/masking/clipPath/clip-path-on-self-2.png", false), 0)}
16801674
#[test] fn resvg_masking_mask_with_image() {assert_eq!(run_test("svg/resvg/masking/mask/with-image.svg", "ref/resvg/masking/mask/with-image.png", "diff/resvg/masking/mask/with-image.png", false), 0)}
16811675
#[test] fn resvg_masking_mask_maskUnits_userSpaceOnUse_without_rect() {assert_eq!(run_test("svg/resvg/masking/mask/maskUnits=userSpaceOnUse-without-rect.svg", "ref/resvg/masking/mask/maskUnits=userSpaceOnUse-without-rect.png", "diff/resvg/masking/mask/maskUnits=userSpaceOnUse-without-rect.png", false), 0)}
1682-
// need to investigate
1676+
// bug. the soft mask that will be created as part of the gradientwill override the soft mask currently in place when rendering
16831677
#[ignore] #[test] fn resvg_masking_mask_recursive_on_child() {assert_eq!(run_test("svg/resvg/masking/mask/recursive-on-child.svg", "ref/resvg/masking/mask/recursive-on-child.png", "diff/resvg/masking/mask/recursive-on-child.png", false), 0)}
16841678
#[test] fn resvg_masking_mask_maskUnits_userSpaceOnUse_with_rect() {assert_eq!(run_test("svg/resvg/masking/mask/maskUnits=userSpaceOnUse-with-rect.svg", "ref/resvg/masking/mask/maskUnits=userSpaceOnUse-with-rect.png", "diff/resvg/masking/mask/maskUnits=userSpaceOnUse-with-rect.png", false), 0)}
16851679
#[test] fn resvg_masking_mask_mask_on_child() {assert_eq!(run_test("svg/resvg/masking/mask/mask-on-child.svg", "ref/resvg/masking/mask/mask-on-child.png", "diff/resvg/masking/mask/mask-on-child.png", false), 0)}
@@ -1774,5 +1768,5 @@ use crate::run_test;
17741768
#[test] fn custom_structure_viewbox_negative_viewbox() {assert_eq!(run_test("svg/custom/structure/viewbox/negative_viewbox.svg", "ref/custom/structure/viewbox/negative_viewbox.png", "diff/custom/structure/viewbox/negative_viewbox.png", false), 0)}
17751769
#[test] fn custom_masking_clipPath_clip_path_with_nested_clip_path_and_transform() {assert_eq!(run_test("svg/custom/masking/clipPath/clip-path-with-nested-clip-path-and-transform.svg", "ref/custom/masking/clipPath/clip-path-with-nested-clip-path-and-transform.png", "diff/custom/masking/clipPath/clip-path-with-nested-clip-path-and-transform.png", false), 0)}
17761770
#[test] fn custom_masking_clipPath_complex_clip_path_with_nested_clip_path_on_child() {assert_eq!(run_test("svg/custom/masking/clipPath/complex-clip-path-with-nested-clip-path-on-child.svg", "ref/custom/masking/clipPath/complex-clip-path-with-nested-clip-path-on-child.png", "diff/custom/masking/clipPath/complex-clip-path-with-nested-clip-path-on-child.png", false), 0)}
1777-
// bug
1771+
// bug. we currently override the soft mask thatis in place in the content stream by creating anSMask entry in the Image XObject for transparency
17781772
#[ignore] #[test] fn custom_masking_mask_mask_and_image_with_transparency() {assert_eq!(run_test("svg/custom/masking/mask/mask-and-image-with-transparency.svg", "ref/custom/masking/mask/mask-and-image-with-transparency.png", "diff/custom/masking/mask/mask-and-image-with-transparency.png", false), 0)}

0 commit comments

Comments
 (0)