diff --git a/tests/ref/resvg/filters/fePointLight/primitiveUnits=objectBoundingBox.png b/tests/ref/resvg/filters/fePointLight/primitiveUnits=objectBoundingBox.png new file mode 100644 index 00000000..d3be09e8 Binary files /dev/null and b/tests/ref/resvg/filters/fePointLight/primitiveUnits=objectBoundingBox.png differ diff --git a/tests/ref/resvg/paint-servers/radialGradient/fr=-1.png b/tests/ref/resvg/paint-servers/radialGradient/fr=-1.png new file mode 100644 index 00000000..bd507eb8 Binary files /dev/null and b/tests/ref/resvg/paint-servers/radialGradient/fr=-1.png differ diff --git a/tests/ref/resvg/paint-servers/radialGradient/fr=0.2.png b/tests/ref/resvg/paint-servers/radialGradient/fr=0.2.png new file mode 100644 index 00000000..bd507eb8 Binary files /dev/null and b/tests/ref/resvg/paint-servers/radialGradient/fr=0.2.png differ diff --git a/tests/ref/resvg/paint-servers/radialGradient/fr=0.5.png b/tests/ref/resvg/paint-servers/radialGradient/fr=0.5.png new file mode 100644 index 00000000..bd507eb8 Binary files /dev/null and b/tests/ref/resvg/paint-servers/radialGradient/fr=0.5.png differ diff --git a/tests/ref/resvg/paint-servers/radialGradient/fr=0.7.png b/tests/ref/resvg/paint-servers/radialGradient/fr=0.7.png new file mode 100644 index 00000000..bd507eb8 Binary files /dev/null and b/tests/ref/resvg/paint-servers/radialGradient/fr=0.7.png differ diff --git a/tests/ref/resvg/paint-servers/radialGradient/invalid-gradientUnits.png b/tests/ref/resvg/paint-servers/radialGradient/invalid-gradientUnits.png new file mode 100644 index 00000000..ef7f2937 Binary files /dev/null and b/tests/ref/resvg/paint-servers/radialGradient/invalid-gradientUnits.png differ diff --git a/tests/scripts/gen-tests.py b/tests/scripts/gen-tests.py index 9ddfcb2d..02d4e7e1 100755 --- a/tests/scripts/gen-tests.py +++ b/tests/scripts/gen-tests.py @@ -16,14 +16,8 @@ IGNORE_TESTS = { # The following test cases still need to be investigated - "svg/resvg/filters/fePointLight/primitiveUnits=objectBoundingBox.svg": INVESTIGATE, - "svg/resvg/masking/mask/recursive-on-child.svg": INVESTIGATE, "svg/resvg/paint-servers/pattern/nested-objectBoundingBox.svg": INVESTIGATE, - "svg/resvg/paint-servers/radialGradient/fr=0.2.svg": INVESTIGATE, - "svg/resvg/paint-servers/radialGradient/fr=0.5.svg": INVESTIGATE, - "svg/resvg/paint-servers/radialGradient/fr=0.7.svg": INVESTIGATE, - "svg/resvg/paint-servers/radialGradient/fr=-1.svg": INVESTIGATE, - "svg/resvg/paint-servers/radialGradient/invalid-gradientUnits.svg": INVESTIGATE, + "svg/resvg/painting/stroke-dasharray/n-0.svg": INVESTIGATE, "svg/resvg/structure/image/image-with-float-size-scaling.svg": INVESTIGATE, "svg/resvg/structure/svg/funcIRI-parsing.svg": INVESTIGATE, @@ -35,7 +29,9 @@ "svg/resvg/text/text/compound-emojis.svg": INVESTIGATE, "svg/resvg/text/text/compound-emojis-and-coordinates-list.svg": INVESTIGATE, "svg/resvg/text/text/emojis.svg": INVESTIGATE, + # The following test cases need to be excluded due to technical reasons + # and are not considered as wrong. "svg/resvg/filters/feMorphology/huge-radius.svg": "will timeout CI", "svg/resvg/filters/filter/huge-region.svg": "will sigkill", "svg/resvg/structure/svg/negative-size.svg": "invalid size", @@ -45,8 +41,6 @@ "svg/resvg/filters/feImage/simple-case.svg": NO_RELATIVE_PATHS, "svg/resvg/painting/marker/with-an-image-child.svg": NO_RELATIVE_PATHS, "svg/resvg/painting/mix-blend-mode/color-dodge.svg": "pdfium bug", - "svg/resvg/painting/stroke-linecap/zero-length-path-with-round.svg": NO_SUPPORT, - "svg/resvg/painting/stroke-linecap/zero-length-path-with-square.svg": NO_SUPPORT, "svg/resvg/painting/stroke-linejoin/miter-clip.svg": NO_SUPPORT, "svg/resvg/structure/image/external-gif.svg": NO_RELATIVE_PATHS, "svg/resvg/structure/image/external-jpeg.svg": NO_RELATIVE_PATHS, @@ -67,16 +61,23 @@ "svg/resvg/structure/image/width-and-height-set-to-auto.svg": NO_RELATIVE_PATHS, "svg/resvg/structure/image/zero-height.svg": NO_RELATIVE_PATHS, "svg/resvg/structure/image/zero-width.svg": NO_RELATIVE_PATHS, - # The following test cases are not implemented in svg2pdf yet + + # The following test cases should work but are not implemented in svg2pdf yet. "svg/resvg/paint-servers/linearGradient/attributes-via-xlink-href-complex-order.svg": NO_REFLECT, "svg/resvg/paint-servers/linearGradient/attributes-via-xlink-href-from-radialGradient.svg": NO_REFLECT, "svg/resvg/paint-servers/linearGradient/spreadMethod=reflect.svg": NO_REFLECT, "svg/resvg/paint-servers/linearGradient/spreadMethod=repeat.svg": NO_REPEAT, - "svg/resvg/paint-servers/radialGradient/attributes-via-xlink-href-complex-order.svg": NO_REFLECT, + "svg/resvg/paint-servers/radialGradient/attributes-via-xlink-href-complex-order.svg":NO_REFLECT, "svg/resvg/paint-servers/radialGradient/attributes-via-xlink-href-from-linearGradient.svg": NO_REFLECT, "svg/resvg/paint-servers/radialGradient/spreadMethod=reflect.svg": NO_REFLECT, "svg/resvg/paint-servers/radialGradient/spreadMethod=repeat.svg": NO_REPEAT, - "svg/custom/masking/mask/mask-and-image-with-transparency.svg": "bug", + "svg/custom/masking/mask/mask-and-image-with-transparency.svg": "bug. we currently override the soft mask that" + "is in place in the content stream by creating an" + "SMask entry in the Image XObject for transparency", + "svg/resvg/masking/mask/recursive-on-child.svg": "bug. the soft mask that will be created as part of the gradient" + "will override the soft mask currently in place when rendering", + "svg/resvg/painting/stroke-linecap/zero-length-path-with-round.svg": "need to check how Chrome does it", + "svg/resvg/painting/stroke-linecap/zero-length-path-with-square.svg": "need to check how Firefox does it", } diff --git a/tests/src/test.rs b/tests/src/test.rs index e3997086..3ecebf08 100644 --- a/tests/src/test.rs +++ b/tests/src/test.rs @@ -257,8 +257,7 @@ use crate::run_test; #[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)} #[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)} #[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)} -// need to investigate -#[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)} +#[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)} #[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)} #[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)} #[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; #[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)} #[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)} #[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)} -// need to investigate -#[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)} +#[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)} #[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)} -// need to investigate -#[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)} +#[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)} #[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)} -// need to investigate -#[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)} +#[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)} #[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)} #[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)} -// need to investigate -#[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)} +#[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)} #[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)} #[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)} #[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)} #[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)} #[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)} -// need to investigate -#[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)} +#[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)} #[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)} #[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)} #[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; #[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)} #[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)} #[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)} -// not supported in PDF +// need to check how Firefox does it #[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)} #[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)} -// not supported in PDF +// need to check how Chrome does it #[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)} #[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)} #[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)} @@ -1681,7 +1675,7 @@ use crate::run_test; #[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)} #[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)} #[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)} -// need to investigate +// bug. the soft mask that will be created as part of the gradientwill override the soft mask currently in place when rendering #[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)} #[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)} #[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)} @@ -1776,5 +1770,5 @@ use crate::run_test; #[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)} #[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)} #[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)} -// bug +// bug. we currently override the soft mask thatis in place in the content stream by creating anSMask entry in the Image XObject for transparency #[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)}