From 5611d91c2ea8e5360f196024734931715d019713 Mon Sep 17 00:00:00 2001 From: =?utf8?q?David=20=E2=80=98Bombe=E2=80=99=20Roden?= Date: Fri, 23 Sep 2011 07:29:01 +0200 Subject: [PATCH] Show images differently. --- .../sone/template/ImageLinkFilter.java | 26 +++++++-- src/main/resources/static/css/sone.css | 19 ++++++- src/main/resources/templates/imageBrowser.html | 64 +++++++++++++--------- 3 files changed, 74 insertions(+), 35 deletions(-) diff --git a/src/main/java/net/pterodactylus/sone/template/ImageLinkFilter.java b/src/main/java/net/pterodactylus/sone/template/ImageLinkFilter.java index 12f44ef..35cc140 100644 --- a/src/main/java/net/pterodactylus/sone/template/ImageLinkFilter.java +++ b/src/main/java/net/pterodactylus/sone/template/ImageLinkFilter.java @@ -39,7 +39,7 @@ import net.pterodactylus.util.template.TemplateParser; public class ImageLinkFilter implements Filter { /** The template to render for the <img%gt; tag. */ - private static final Template linkTemplate = TemplateParser.parse(new StringReader(" class=\"<%class|css>\"<%/if> src=\"<%src|html>\" alt=\"<%alt|html>\" title=\"<%title|html>\" width=\"<%width|html>\" height=\"<%height|html>\" />")); + private static final Template linkTemplate = TemplateParser.parse(new StringReader(" class=\"<%class|css>\"<%/if> src=\"<%src|html>\" alt=\"<%alt|html>\" title=\"<%title|html>\" width=\"<%width|html>\" height=\"<%height|html>\" style=\"position: relative;<%ifnull ! top>top: <% top|html>;<%/if><%ifnull ! left>left: <% left|html>;<%/if>\"/>")); /** The template context factory. */ private final TemplateContextFactory templateContextFactory; @@ -63,6 +63,7 @@ public class ImageLinkFilter implements Filter { String imageClass = parameters.get("class"); int maxWidth = Numbers.safeParseInteger(parameters.get("max-width"), Integer.MAX_VALUE); int maxHeight = Numbers.safeParseInteger(parameters.get("max-height"), Integer.MAX_VALUE); + String mode = String.valueOf(parameters.get("mode")); String title = parameters.get("title"); if ((title != null) && title.startsWith("=")) { title = String.valueOf(templateContext.get(title.substring(1))); @@ -77,12 +78,25 @@ public class ImageLinkFilter implements Filter { } int imageWidth = image.getWidth(); int imageHeight = image.getHeight(); - double scale = 1; - if ((imageWidth > maxWidth) || (imageHeight > maxHeight)) { - scale = Math.min(maxWidth / (double) imageWidth, maxHeight / (double) imageHeight); + if ("enlarge".equals(mode)) { + double scale = Math.max(maxWidth / (double) imageWidth, maxHeight / (double) imageHeight); + linkTemplateContext.set("width", (int) (imageWidth * scale + 0.5)); + linkTemplateContext.set("height", (int) (imageHeight * scale + 0.5)); + if (scale >= 1) { + linkTemplateContext.set("left", String.format("%dpx", (int) ((imageWidth * scale) - maxWidth) / 2)); + linkTemplateContext.set("top", String.format("%dpx", (int) ((imageHeight * scale) - maxHeight) / 2)); + } else { + linkTemplateContext.set("left", String.format("%dpx", (int) (maxWidth - (imageWidth * scale)) / 2)); + linkTemplateContext.set("top", String.format("%dpx", (int) (maxHeight - (imageHeight * scale)) / 2)); + } + } else { + double scale = 1; + if ((imageWidth > maxWidth) || (imageHeight > maxHeight)) { + scale = Math.min(maxWidth / (double) imageWidth, maxHeight / (double) imageHeight); + } + linkTemplateContext.set("width", (int) (imageWidth * scale + 0.5)); + linkTemplateContext.set("height", (int) (imageHeight * scale + 0.5)); } - linkTemplateContext.set("width", (int) (imageWidth * scale + 0.5)); - linkTemplateContext.set("height", (int) (imageHeight * scale + 0.5)); linkTemplateContext.set("alt", Default.forNull(title, image.getDescription())); linkTemplateContext.set("title", Default.forNull(title, image.getTitle())); diff --git a/src/main/resources/static/css/sone.css b/src/main/resources/static/css/sone.css index 1e400fb..1cb2e95 100644 --- a/src/main/resources/static/css/sone.css +++ b/src/main/resources/static/css/sone.css @@ -656,17 +656,24 @@ textarea { display: table-row; } +#sone .image-container { + width: 200px; + height: 200px; + overflow: hidden; + padding: -1px; + border: solid 1px #000; +} + #sone .image { width: 200px; height: 150px; display: table-cell; - vertical-align: middle; + vertical-align: top; text-align: center; padding: 0.5ex; } #sone .image img, #sone .single-image img { - padding: 1ex; border: solid 1px #000; background-color: #fff; } @@ -679,6 +686,14 @@ textarea { width: 95%; } +#sone .image .image-title { + font-weight: bold; +} + +#sone .image .image-description { + text-align: left; +} + #sone .backlinks .separator { display: inline; } diff --git a/src/main/resources/templates/imageBrowser.html b/src/main/resources/templates/imageBrowser.html index 9c0ef90..162441a 100644 --- a/src/main/resources/templates/imageBrowser.html +++ b/src/main/resources/templates/imageBrowser.html @@ -123,15 +123,16 @@ <%first>

<%= Page.ImageBrowser.Header.Albums|l10n|html>

<%/first> <%if loop.count|mod divisor=3>
<%/if> <%= false|store key=endRow> <%if loop.count|mod divisor=3 offset=1><%= true|store key=endRow><%/if> @@ -150,23 +151,31 @@ <%foreach album.images image> <%first>

<%= Page.ImageBrowser.Header.Images|l10n|html>

<%/first> <%if loop.count|mod divisor=3>
<%/if> -
- <% image|image-link max-width=200 max-height=150> +
+ + <%if album.sone.local> -
-
- +
+
<% image.title|html>
+
<% image.description|html>
-
- -
-
- + <%/if> @@ -323,15 +332,16 @@ <%foreach sone.albums album> <%if loop.count|mod divisor=3>