Initial commit: RE tooling and docs for The I of the Dragon localization/HD
This commit is contained in:
@@ -0,0 +1,57 @@
|
||||
import argparse, csv, collections
|
||||
|
||||
|
||||
def decide(flags, fourcc):
|
||||
fs = set(flags.split(";")) if flags else set()
|
||||
if "font_atlas" in fs or "non_texture" in fs:
|
||||
return "skip", "font atlas uses fixed pixel rects in Fonts.dat / not a texture"
|
||||
if "text_baked" in fs:
|
||||
return "review", "text baked in image (must be redrawn, AI will garble text)"
|
||||
if "ui_atlas" in fs:
|
||||
return "review", "UI atlas, may have fixed pixel coordinates"
|
||||
if "tiling_likely" in fs:
|
||||
return "upscale_tiling", "tileable: use seamless/tiling-aware upscale"
|
||||
return "upscale", ""
|
||||
|
||||
|
||||
def main():
|
||||
ap = argparse.ArgumentParser(description="Build an upscale plan csv from the preprocessing report.")
|
||||
ap.add_argument("--report", required=True)
|
||||
ap.add_argument("--out", required=True)
|
||||
ap.add_argument("--scale", type=int, default=2)
|
||||
args = ap.parse_args()
|
||||
|
||||
rows = list(csv.DictReader(open(args.report, newline="", encoding="utf-8")))
|
||||
out = []
|
||||
counts = collections.Counter()
|
||||
for r in rows:
|
||||
action, reason = decide(r.get("flags", ""), r.get("dds_fourcc", ""))
|
||||
counts[action] += 1
|
||||
try:
|
||||
w = int(r["orig_w"]); h = int(r["orig_h"])
|
||||
tw, th = w * args.scale, h * args.scale
|
||||
except Exception:
|
||||
tw = th = ""
|
||||
out.append({
|
||||
"name": r["name"],
|
||||
"png": r["png"],
|
||||
"orig_w": r["orig_w"], "orig_h": r["orig_h"],
|
||||
"target_w": tw, "target_h": th,
|
||||
"has_alpha": r.get("has_alpha", ""),
|
||||
"dds_fourcc": r.get("dds_fourcc", ""),
|
||||
"dds_mips": r.get("dds_mips", ""),
|
||||
"group": r.get("group", ""),
|
||||
"action": action,
|
||||
"reason": reason,
|
||||
})
|
||||
with open(args.out, "w", newline="", encoding="utf-8") as f:
|
||||
wtr = csv.DictWriter(f, fieldnames=list(out[0].keys()))
|
||||
wtr.writeheader()
|
||||
wtr.writerows(out)
|
||||
print("plan written:", args.out)
|
||||
for k, v in counts.most_common():
|
||||
print(" %-16s %d" % (k, v))
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
||||
Reference in New Issue
Block a user