File: generate_grid.py

package info (click to toggle)
3270font 3.0.1-1
  • links: PTS, VCS
  • area: main
  • in suites: bookworm, forky, sid, trixie
  • size: 4,424 kB
  • sloc: python: 184; makefile: 140; sh: 81; xml: 21
file content (88 lines) | stat: -rwxr-xr-x 2,751 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
#!/usr/bin/env python3

import argparse
import sys

parser = argparse.ArgumentParser(description="Generate a grid for 3270font.")

# Character is within a rectangle (0, -400) to (1080, 1600)

GUIDE_XMIN = -200
GUIDE_XMAX = 1280

GUIDE_YMIN = -600
GUIDE_YMAX = 1800

parser.add_argument("origin_x", type=float, default=122, help="Origin X")
parser.add_argument("origin_y", type=float, default=98, help="Origin Y")
parser.add_argument("bottom", type=float, default=-400, help="Bottom Y")
parser.add_argument("top", type=float, default=1600, help="Top Y")
parser.add_argument("left", type=float, default=0, help="Leftmost X")
parser.add_argument("right", type=float, default=540, help="Rightmost X")
parser.add_argument("delta_x", type=float, default=68, help="Division width")
parser.add_argument("delta_y", type=float, default=250, help="Division height")

args = parser.parse_args()

if __name__ == "__main__":

    print("#", " ".join(sys.argv))

    print("Grid")

    # Each guide line is described by a point (x y m 0) and a line
    # (x y l 1024). It can optionally be named.

    # Draw the origin lines.
    print(
        '{:.0f} {:.0f} m 0 {:.0f} {:.0f} l 1024 Named: "Origin X"'.format(
            args.origin_x, GUIDE_YMIN, args.origin_x, GUIDE_YMAX
        )
    )
    print(
        '{:.0f} {:.0f} m 0 {:.0f} {:.0f} l 1024 Named: "Origin Y"'.format(
            GUIDE_XMIN, args.origin_y, GUIDE_XMAX, args.origin_y
        )
    )

    # Draw horizontals above the origin.
    y = args.origin_y + args.delta_y
    while y < args.top + args.delta_y:
        print(
            '{:.0f} {:.0f} m 0 {:.0f} {:.0f} l 1024 Named: "{:.0f}"'.format(
                GUIDE_XMIN, round(y, 0), GUIDE_XMAX, round(y, 0), y
            )
        )
        y += args.delta_y

    # Draw horizontals below the origin.
    y = args.origin_y - args.delta_y
    while y > args.bottom:
        print(
            '{:.0f} {:.0f} m 0 {:.0f} {:.0f} l 1024 Named: "{:.0f}"'.format(
                GUIDE_XMIN, round(y, 0), GUIDE_XMAX, round(y, 0), y
            )
        )
        y -= args.delta_y

    # Draw verticals to the right of the origin.
    x = args.origin_x + args.delta_x
    while x < args.right + args.delta_x:
        print(
            '{:.0f} {:.0f} m 0 {:.0f} {:.0f} l 1024 Named: "{:.0f}"'.format(
                round(x, 0), GUIDE_YMIN, round(x, 0), GUIDE_YMAX, x
            )
        )
        x += args.delta_x

    # And to the left.
    x = args.origin_x - args.delta_x
    while x > args.left:
        print(
            '{:.0f} {:.0f} m 0 {:.0f} {:.0f} l 1024 Named: "{:.0f}"'.format(
                round(x, 0), GUIDE_XMIN, round(x, 0), GUIDE_XMAX, x
            )
        )
        x -= args.delta_x

    print("EndSplineSet")