Covers with logos.
authorRadek Czajka <radekczajka@nowoczesnapolska.org.pl>
Wed, 18 Dec 2013 15:20:52 +0000 (16:20 +0100)
committerRadek Czajka <radekczajka@nowoczesnapolska.org.pl>
Wed, 18 Dec 2013 15:20:52 +0000 (16:20 +0100)
librarian/cover.py
librarian/res/ebookpoint-logo-white.png [new file with mode: 0644]
librarian/res/fnp-logo-white.png [new file with mode: 0644]
librarian/res/wl-logo-white.png [new file with mode: 0644]

index 8b770ca..9b10ed1 100644 (file)
@@ -365,6 +365,53 @@ class WLCover(Cover):
         return img
 
 
+class LogoWLCover(WLCover):
+    gradient_height = 90
+    gradient_logo_height = 60
+    gradient_logo_margin_right = 30
+    gradient_logo_spacing = 40
+    gradient_color = '#000'
+    gradient_opacity = .6
+    gradient_logos = [
+        'res/wl-logo-white.png',
+        'res/fnp-logo-white.png',
+    ]
+
+    def image(self):
+        img = super(LogoWLCover, self).image()
+        metr = Metric(self, self.scale)
+        gradient = Image.new('RGBA', (metr.width - metr.bar_width, metr.gradient_height), self.gradient_color)
+        gradient_mask = Image.new('L', (metr.width - metr.bar_width, metr.gradient_height))
+        draw = ImageDraw.Draw(gradient_mask)
+        for line in range(0, metr.gradient_height):
+            draw.line((0, line, metr.width - metr.bar_width, line), fill=int(255 * self.gradient_opacity * line / metr.gradient_height))
+        img.paste(gradient, 
+            (metr.bar_width, metr.height - metr.gradient_height), mask=gradient_mask)
+
+        cursor = metr.width - metr.gradient_logo_margin_right
+        logo_top = metr.height - metr.gradient_height / 2  - metr.gradient_logo_height / 2
+        for logo_path in self.gradient_logos[::-1]:
+            logo = Image.open(get_resource(logo_path))
+            logo = logo.resize(
+                (logo.size[0] * metr.gradient_logo_height / logo.size[1], metr.gradient_logo_height),
+                Image.ANTIALIAS)
+            cursor -= logo.size[0]
+            img.paste(logo, (cursor, logo_top), mask=logo)
+            cursor -= metr.gradient_logo_spacing
+
+        return img
+
+
+class EbookpointCover(LogoWLCover):
+    gradient_logo_height = 58
+    gradient_logo_spacing = 25
+    gradient_logos = [
+        'res/ebookpoint-logo-white.png',
+        'res/wl-logo-white.png',
+        'res/fnp-logo-white.png',
+    ]
+
+
 class VirtualoCover(Cover):
     width = 600
     height = 730
diff --git a/librarian/res/ebookpoint-logo-white.png b/librarian/res/ebookpoint-logo-white.png
new file mode 100644 (file)
index 0000000..d4caee3
Binary files /dev/null and b/librarian/res/ebookpoint-logo-white.png differ
diff --git a/librarian/res/fnp-logo-white.png b/librarian/res/fnp-logo-white.png
new file mode 100644 (file)
index 0000000..c771f05
Binary files /dev/null and b/librarian/res/fnp-logo-white.png differ
diff --git a/librarian/res/wl-logo-white.png b/librarian/res/wl-logo-white.png
new file mode 100644 (file)
index 0000000..3a9e62a
Binary files /dev/null and b/librarian/res/wl-logo-white.png differ