You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
117 lines
3.3 KiB
Python
117 lines
3.3 KiB
Python
import json
|
|
import sys
|
|
import random
|
|
from tree_maker import Tree
|
|
from fpdf import FPDF
|
|
# ref https://pyfpdf.readthedocs.io/en/latest/
|
|
|
|
# declare input data
|
|
inputfile = (
|
|
"/home/mara/webdev/sortingtree/cleaned_data/year_name_fam_subset.json"
|
|
)
|
|
in_data = open(inputfile, "r")
|
|
data = in_data.read()
|
|
in_data.close()
|
|
data_json = json.loads(data)
|
|
|
|
reddit_file = open(
|
|
"/home/mara/webdev/sortingtree/cleaned_data/fam_reddit_subset.json"
|
|
)
|
|
reddit_data = reddit_file.read()
|
|
reddit_file.close()
|
|
reddit_json = json.loads(reddit_data)
|
|
|
|
|
|
# declare pdf format and margins
|
|
margin = 15
|
|
|
|
zine = FPDF(orientation="L", unit="mm", format="A4")
|
|
|
|
# set font for all text
|
|
# zine.add_font(
|
|
# 'CasaleNBP', '', r"./fonts/CasaletwoNbp-Bp4V.ttf", uni=True)
|
|
# tree_font = 'CasaleNBP'
|
|
|
|
zine.add_font(
|
|
'Kp', '', r"./fonts/KpProgrammerAlternatesNbp-Zg1q.ttf", uni=True)
|
|
tree_font = 'Kp'
|
|
font_size = 15
|
|
zine.set_font(tree_font, '', font_size)
|
|
|
|
zine.set_margins(margin, margin, margin)
|
|
zine.add_page()
|
|
zine.set_xy(zine.w/2+margin, margin)
|
|
|
|
tree = Tree(zine)
|
|
root = tree.keys_sorting(data_json)
|
|
|
|
|
|
def make_bin_tree(output, zine, tree, root):
|
|
global data_json
|
|
global margin
|
|
|
|
tree.draw_year_name(data_json, root, zine.h, zine.w, margin)
|
|
zine.output(output)
|
|
print("PDF saved as {}".format(output))
|
|
|
|
|
|
def make_bin_tree_reddit(output, zine, tree, root, reddit_json):
|
|
global data_json
|
|
global margin
|
|
|
|
tree.draw_year_name_reddit(
|
|
data_json, reddit_json, root, zine.h, zine.w, margin)
|
|
zine.output(output)
|
|
print("PDF saved as {}".format(output))
|
|
|
|
|
|
def make_bin_tree_position_nodes(output, zine, tree, root):
|
|
global data_json
|
|
global margin
|
|
|
|
tree.preorder_position_nodes(data_json, root, zine.h, zine.w, margin)
|
|
print("PDF saved as {}".format(output))
|
|
|
|
|
|
def make_bin_tree_weird_position_nodes(output, zine, tree, root):
|
|
global data_json
|
|
global margin
|
|
|
|
tree.weird_position_nodes(data_json, root, zine.h, zine.w, margin)
|
|
print("PDF saved as {}".format(output))
|
|
|
|
|
|
if __name__ == '__main__':
|
|
# input text and output pdf
|
|
if len(sys.argv) > 1:
|
|
if len(sys.argv) == 4:
|
|
output = sys.argv[3]
|
|
inputfile = sys.argv[2]
|
|
version = sys.argv[1]
|
|
else:
|
|
version = sys.argv[1]
|
|
output = "./trees/test_%d.pdf" % int(version)
|
|
|
|
else:
|
|
version = random.randint(1, 100)
|
|
inputfile = "./trees/array.txt"
|
|
output = "./trees/test_%d.pdf" % int(version)
|
|
|
|
# make_bin_tree(output, zine, tree, root)
|
|
# make_bin_tree_reddit(output, zine, tree, root, reddit_json)
|
|
# make_bin_tree_position_nodes(output, zine, tree, root)
|
|
make_bin_tree_weird_position_nodes(output, zine, tree, root)
|
|
|
|
# TODO: add functions of the following tree methods
|
|
# tree.draw_year(json_data, root, x, y, zine.h, zine.w, margin, steps=30)
|
|
# tree.print_nodes(root)
|
|
# tree.draw_year_name_reddit(
|
|
# treejson_data, root, x, y, max_height, margin, width)
|
|
# tree.print_bin_tree(root, x, y, max_height, margin, width, steps=max_height/3)
|
|
# tree.print_tree_terminal(root)
|
|
# tree.design_tree(json_data, font_size, margin, steps=10)
|
|
# root = zine.tree_sorting([4, 8, 7, 9, 10, 1, 20, 5, 15, 11])
|
|
# root = zine.tree_sorting(["BIN", "ARY", "IS", "FOR", "SORTING", "TREES"])
|
|
# sentence = "BIN ARY IS FOR SORTING TREES"
|
|
# root = tree.tree_sorting(sentence.split())
|