dir_y = 1 if corner_y == 0 else -1
for offset in (-1, 0, 1):
draw.line((corner_x, corner_y + dir_y * metr.bleed + offset,
- corner_x + dir_x * metr.bleed * line_ratio, corner_y + dir_y * metr.bleed + offset),
+ corner_x + dir_x * metr.bleed * line_ratio, corner_y + dir_y * metr.bleed + offset),
fill='black' if offset == 0 else 'white', width=1)
draw.line((corner_x + dir_x * metr.bleed + offset, corner_y,
corner_x + dir_x * metr.bleed + offset, corner_y + dir_y * metr.bleed * line_ratio),
return img
+class WLNoBoxCover(WLCover):
+ def add_box(self, img):
+ return img
+
+
class LogoWLCover(WLCover):
gradient_height = 90
gradient_logo_height = 60
format = 'PNG'
-DefaultEbookCover = LogoWLCover
+class KMLUCover(LogoWLCover):
+ gradient_logo_height = 58
+ gradient_logo_spacing = 25
+ gradient_logos = [
+ 'res/kmlu-logo-white.png',
+ 'res/wl-logo-white.png',
+ 'res/fnp-logo-white.png',
+ ]
+
+
+class MPWCover(LogoWLCover):
+ gradient_logo_height = 58
+ gradient_logo_spacing = 25
+ gradient_logos = [
+ 'res/mpw-logo-white.png',
+ 'res/wl-logo-white.png',
+ 'res/fnp-logo-white.png',
+ ]
+
+
+COVER_CLASSES = {
+ 'default': LogoWLCover,
+ 'kmlu': KMLUCover,
+ 'mpw': MPWCover,
+}
+
+
+def make_cover(book_info, *args, **kwargs):
+ cover_class = COVER_CLASSES[book_info.cover_class]
+ return cover_class(book_info, *args, **kwargs)