Пример #1
0
    def draw(self, vsk: vsketch.Vsketch) -> None:
        if self.override_page_size:
            vsk.size(f"{self.page_width}x{self.page_height}")
        else:
            vsk.size(self.page_size, landscape=False)

        vsk.stroke(1)
        vsk.fill(1)

        for i, (y, x) in enumerate(
                itertools.product(range(self.row_count),
                                  range(self.column_count))):
            pw = self.smallest_width_mm + i * self.width_increment_mm

            vsk.penWidth(f"{pw}mm", 1)
            vsk.rect(
                x * self.horizontal_offset,
                y * self.vertical_offset,
                self.box_width,
                self.box_height,
            )
            vsk.text(
                f"{pw:.3}mm",
                x * self.horizontal_offset + self.box_width / 2,
                y * self.vertical_offset + self.box_height +
                vpype.convert_length("0.5cm"),
                mode="label",
                align="center",
                size=12,
            )
Пример #2
0
def test_rect_mode_success(
    vsk: vsketch.Vsketch,
    data: Tuple[float, float, float, float],
    mode: str,
    expected: Sequence[float],
) -> None:
    vsk.rect(*data, mode=mode)  # type: ignore
    assert line_count_equal(vsk, 1)
    assert line_exists(vsk, np.array(expected, dtype=complex), strict=False)
Пример #3
0
    def draw(self, vsk: vsketch.Vsketch) -> None:
        vsk.size("a4", landscape=False)
        vsk.scale("cm")

        for j in range(self.rows):
            with vsk.pushMatrix():
                for i in range(self.columns):
                    with vsk.pushMatrix():
                        vsk.rotate(self.fuzziness * 0.03 * vsk.random(-j, j))
                        vsk.translate(
                            self.fuzziness * 0.01 * vsk.randomGaussian() * j,
                            self.fuzziness * 0.01 * vsk.randomGaussian() * j,
                        )
                        vsk.rect(0, 0, 1, 1)
                    vsk.translate(1, 0)
            vsk.translate(0, 1)
Пример #4
0
    def draw(self, vsk: vsketch.Vsketch) -> None:
        vsk.size("a6", landscape=True, center=False)
        vsk.scale("cm")

        address = ADDRESSES[self.addr_id].split("\n")

        if not self.address_only:
            vsk.line(8, 0.5, 8, 10)
            vsk.rect(12.5, 0.5, 1.8, 2.2)

            self.draw_text(
                vsk,
                HEADER.split("\n"),
                (0.5, 0.8),
                self.header_line_spacing,
                self.header_font_size,
            )

            # deal with abbreviated first name
            name_line = address[0].split(" ")
            if len(name_line) > 2 and len(name_line[1]) > len(name_line[0]):
                name = name_line[1]
            else:
                name = name_line[0]

            self.draw_text(
                vsk,
                MESSAGE.replace("$FirstName$", name).split("\n"),
                (0.5, self.message_y_offset),
                self.message_line_spacing,
                self.message_font_size,
            )

        self.draw_text(
            vsk,
            address,
            (8.5, self.address_y_offset),
            self.address_line_spacing,
            self.address_font_size,
        )
Пример #5
0
def test_rect_arg_fail(vsk: vsketch.Vsketch) -> None:
    # vsk.rect() expects 3 float args + optional `h` float and `mode` arg
    with pytest.raises(TypeError):
        # noinspection PyArgumentList
        vsk.rect(0, 4, mode="corners")  # type: ignore

    with pytest.raises(TypeError):
        # noinspection PyTypeChecker
        vsk.rect("hey", 0, 2.5, 4)  # type: ignore

    # vsk.rect() expects `mode` parameter to be one of "corner", "corners", "center", "radius"
    with pytest.raises(ValueError):
        vsk.rect(0, 0, 2, 4, mode="jumbo")
Пример #6
0
def test_rect_round_corners_success(
        vsk: vsketch.Vsketch, data: Sequence[float],
        expected: Tuple[float, float, float, float]) -> None:
    vsk.rect(*data)  # type: ignore
    assert line_count_equal(vsk, 1)
    assert bounds_equal(vsk, *expected)
Пример #7
0
def test_rect_default_success(vsk: vsketch.Vsketch) -> None:
    vsk.rect(0, 0, 2, 4)
    assert line_count_equal(vsk, 1)
    assert line_exists(vsk,
                       np.array([0, 2, 2 + 4j, 4j, 0], dtype=complex),
                       strict=False)