Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 28 Dec 2017 10:54:29 +0000 (UTC)
From:      Alexey Dokuchaev <danfe@FreeBSD.org>
To:        ports-committers@freebsd.org, svn-ports-all@freebsd.org, svn-ports-head@freebsd.org
Subject:   svn commit: r457444 - in head/x11/hsetroot: . files
Message-ID:  <201712281054.vBSAsTk9058654@repo.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: danfe
Date: Thu Dec 28 10:54:29 2017
New Revision: 457444
URL: https://svnweb.freebsd.org/changeset/ports/457444

Log:
  Add custom patch that introduces "sane" image rendering mode: it allows to
  select the best aspect ratio and display image with minimal scaling yet not
  centered.  This mode is useful when one wants to use an image with author's
  copyright in the lower corner and wants to hide it.  Existing modes did not
  always provide the best possible result.  While here, take maintainership.

Added:
  head/x11/hsetroot/files/patch-hsetroot.c   (contents, props changed)
Modified:
  head/x11/hsetroot/Makefile

Modified: head/x11/hsetroot/Makefile
==============================================================================
--- head/x11/hsetroot/Makefile	Thu Dec 28 10:51:49 2017	(r457443)
+++ head/x11/hsetroot/Makefile	Thu Dec 28 10:54:29 2017	(r457444)
@@ -3,10 +3,10 @@
 
 PORTNAME=	hsetroot
 PORTVERSION=	1.0.2
-PORTREVISION=	12
+PORTREVISION=	13
 CATEGORIES=	x11
 
-MAINTAINER=	ports@FreeBSD.org
+MAINTAINER=	danfe@FreeBSD.org
 COMMENT=	Wallpaper manipulation utility for X11
 
 LICENSE=	GPLv2

Added: head/x11/hsetroot/files/patch-hsetroot.c
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/x11/hsetroot/files/patch-hsetroot.c	Thu Dec 28 10:54:29 2017	(r457444)
@@ -0,0 +1,56 @@
+--- hsetroot.c.orig	2016-02-14 00:09:11 UTC
++++ hsetroot.c
+@@ -8,7 +8,7 @@
+ #include "outputs.h"
+ 
+ 
+-typedef enum { Full, Fill, Center, Tile, Xtend, Cover } ImageMode;
++typedef enum { Full, Fill, Center, Tile, Xtend, Cover, Sane } ImageMode;
+ 
+ void
+ usage(char *commandline)
+@@ -33,6 +33,7 @@ usage(char *commandline)
+     "Image files:\n"
+     " -center <image>            Render an image centered on screen\n"
+     " -cover <image>             Render an image centered on screen scaled to fill the screen fully\n"
++    " -sane <image>              Render an image in sane mode (choose the best aspect, but do not center)\n"
+     " -tile <image>              Render an image tiled\n"
+     " -full <image>              Render an image maximum aspect\n"
+     " -extend <image>            Render an image max aspect and fill borders\n"
+@@ -229,6 +230,20 @@ load_image(ImageMode mode, const char *arg, int alpha,
+           }
+         }
+       }
++    } else if (mode == Sane) {
++      int newW, newH;
++      double aspect_w = ((double) o.w) / imgW;
++      double aspect_h = ((double) o.h) / imgH;
++      if (aspect_h < aspect_w) {
++        // image is taller
++        newW = o.w;
++        newH = (int) (imgH * aspect_w);
++      } else {
++        // image is wider
++        newW = (int) (imgW * aspect_h);
++        newH = o.h;
++      }
++      imlib_blend_image_onto_image(buffer, 0, 0, 0, imgW, imgH, 0, 0, newW, newH);
+     } else {  // Center || Tile
+       int left = (o.w - imgW) / 2;
+       int top = (o.h - imgH) / 2;
+@@ -457,6 +472,15 @@ main(int argc, char **argv)
+         }
+         if (load_image(Cover, argv[i], alpha, image, outputs, noutputs) == 0) {
+           fprintf (stderr, "Bad image (%s)\n", argv[i]);
++          continue;
++        }
++      } else if (strcmp (argv[i], "-sane") == 0) {
++        if ((++i) >= argc) {
++          fprintf(stderr, "Missing image\n");
++          continue;
++        }
++        if (load_image(Sane, argv[i], alpha, image, outputs, noutputs) == 0) {
++          fprintf(stderr, "Bad image (%s)\n", argv[i]);
+           continue;
+         }
+       } else if (strcmp(argv[i], "-tint") == 0) {



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201712281054.vBSAsTk9058654>