doomcc/doomcc/thumb.py

47 lines
1.8 KiB
Python

import doomcc.config
import doomcc.doom_base
import wand.color
import wand.image
class Thumb(doomcc.doom_base.WadMap):
def get_parser(self, prog_name):
parser = super().get_parser(prog_name)
parser.add_argument("--index", nargs="?", const="none", default="")
parser.add_argument("--noov", action="store_true")
return parser
def take_action(self, parsed_args):
base = self.base_thumb_path()
text = self.text_thumb_path()
overlay = self.thumb_overlay_path()
with (
wand.image.Image(filename=base) as bi,
wand.color.Color("transparent") as tc,
):
with wand.image.Image(filename=text) as ti:
ti.border(tc, 5, 5)
bi.composite(ti, gravity="south_west")
if not parsed_args.noov:
with wand.image.Image(filename=overlay) as mdi:
mdi.border(tc, 5, 5)
bi.composite(mdi, gravity="north_west")
if parsed_args.index != "":
with wand.image.Image(
filename=self.fabricate.joinpath("doomed_index.png")
) as di:
di.border(tc, 1, 1)
bi.composite(di, gravity="north_east")
if parsed_args.index != "none":
ird = self._config.get("index_rating", {})
if parsed_args.index in ird:
with wand.image.Image(
filename=self.fabricate.joinpath(self.fabricate.joinpath(ird[parsed_args.index]))) as ri:
ri.border(tc, 1, 1)
bi.composite(ri, top=di.height+5, left=int(bi.width-ri.width-(di.width-ri.width)/2))
bi.save(filename=self.thumb_path())