File: test_radial_gradient.py

package info (click to toggle)
fpdf2 2.8.4-2
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 53,860 kB
  • sloc: python: 39,487; sh: 133; makefile: 12
file content (110 lines) | stat: -rw-r--r-- 2,646 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
from pathlib import Path
from fpdf import FPDF
from fpdf.pattern import RadialGradient
from test.conftest import assert_pdf_equal

HERE = Path(__file__).resolve().parent


def test_radial_gradient(tmp_path):
    pdf = FPDF()
    pdf.add_page()
    x = pdf.w / 2 - 25
    y = pdf.get_y()
    with pdf.use_pattern(
        RadialGradient(
            pdf,
            x + 25,
            y + 25,
            0,
            x + 25,
            y + 25,
            25,
            [(255, 255, 0), (255, 0, 0)],
        )
    ):
        pdf.circle(x=x + 25, y=y + 25, radius=25, style="FD")
    y += 60
    with pdf.use_pattern(
        RadialGradient(
            pdf,
            x + 5,
            y + 5,
            0,
            x + 25,
            y + 25,
            25,
            [(255, 255, 0), (255, 0, 0)],
        )
    ):
        pdf.circle(x=x + 25, y=y + 25, radius=25, style="FD")

    assert_pdf_equal(pdf, HERE / "radial_gradient.pdf", tmp_path)


def test_radial_gradient_multiple_colors(tmp_path):
    pdf = FPDF()
    pdf.add_page()
    x = pdf.l_margin
    y = pdf.get_y()
    with pdf.use_pattern(
        RadialGradient(
            pdf,
            (pdf.epw + pdf.l_margin) / 2,
            y + 50,
            20,
            (pdf.epw + pdf.l_margin) / 2,
            y + 50,
            (pdf.epw + pdf.l_margin) / 2,
            ["#868F96", "#596164", "#537895", "#09203F"],
        )
    ):
        pdf.rect(x=x, y=y, w=pdf.epw, h=100, style="FD")
    y += 105

    with pdf.use_pattern(
        RadialGradient(
            pdf,
            pdf.w / 2,
            y + 50,
            0,
            pdf.w / 2,
            y + 50,
            (y + 50) / 2,
            ["#FFECD2", "#FCB69F", "#DD2476"],
        )
    ):
        pdf.rect(x=x, y=y, w=pdf.epw, h=100, style="FD")

    assert_pdf_equal(pdf, HERE / "radial_gradient_multiple_colors.pdf", tmp_path)


def test_custom_bounds(tmp_path):
    pdf = FPDF()
    pdf.add_page()
    with pdf.use_pattern(
        RadialGradient(
            pdf,
            pdf.w / 2,
            pdf.h / 2,
            20,
            pdf.w / 2,
            pdf.h / 2,
            pdf.h / 2 - 20,
            [
                "#FFFFFF",
                "#9400D3",
                "#4B0082",
                "#0000FF",
                "#00FF00",
                "#FFFF00",
                "#FF7F00",
                "#FF0000",
                "#FFFFFF",
            ],
            bounds=[0.35, 0.40, 0.45, 0.50, 0.55, 0.60, 0.65],
        )
    ):
        pdf.rect(x=0, y=0, w=pdf.w, h=pdf.h / 2, style="FD")

    assert_pdf_equal(pdf, HERE / "radial_custom_bounds.pdf", tmp_path)