billiob pushed a commit to branch master.
commit 4f6aed04889acf39ef726037fa63b2b8ed36cebf
Author: Boris Faure <[email protected]>
Date: Mon May 20 16:06:12 2013 +0200
tycat: Add -g option to limit the size of the images
Patch by jpeg
---
src/bin/tycat.c | 60 ++++++++++++++++++++++++++++++++++++++++++++++-----------
1 file changed, 49 insertions(+), 11 deletions(-)
diff --git a/src/bin/tycat.c b/src/bin/tycat.c
index 565144d..a1b7900 100644
--- a/src/bin/tycat.c
+++ b/src/bin/tycat.c
@@ -22,7 +22,7 @@ Ecore_Evas *ee = NULL;
Evas *evas = NULL;
Evas_Object *o = NULL;
struct termios told, tnew;
-int tw = 0, th = 0, cw = 0, ch = 0;
+int tw = 0, th = 0, cw = 0, ch = 0, maxw = 0, maxh = 0;
#include "extns.h"
@@ -45,16 +45,22 @@ echo_on(void)
static void
scaleterm(int w, int h, int *iw, int *ih)
{
- if (w > (tw * cw))
+ int width = maxw ? maxw : tw;
+ if (w > (width * cw))
{
- *iw = tw;
- *ih = ((h * (tw * cw) / w) + (ch - 1)) / ch;
+ *iw = width;
+ *ih = ((h * (width * cw) / w) + (ch - 1)) / ch;
}
else
{
*iw = (w + (cw - 1)) / cw;
*ih = (h + (ch - 1)) / ch;
}
+ if (maxh && *ih > maxh)
+ {
+ *ih = maxh;
+ *iw = ((w * (maxh * ch) / h) + (cw - 1)) / cw;
+ }
}
static const char *
@@ -108,22 +114,30 @@ prnt(const char *path, int w, int h, int mode)
free(line);
}
+static void
+print_usage(const char *argv0)
+{
+ printf("Usage: %s [-s|-f|-c] [-g <width>x<height>] FILE1 [FILE2 ...]\n"
+ "\n"
+ " -s Stretch file to fill nearest character cell size\n"
+ " -f Fill file to totally cover character cells with no gaps\n"
+ " -c Center file in nearest character cells but only scale down
(default)\n"
+ " -g <width>x<height> Set maximum geometry for the image (cell
count)\n",
+ argv0);
+}
+
int
main(int argc, char **argv)
{
char buf[64];
int w = 0, h = 0;
int iw = 0, ih = 0;
+ int ret = 0;
if (!getenv("TERMINOLOGY")) return 0;
if (argc <= 1)
{
- printf("Usage: %s [-s|-f|-c] FILE1 [FILE2 ...]\n"
- "\n"
- " -s Stretch file to fill nearest character cell size\n"
- " -f Fill file to totally cover character cells with no
gaps\n"
- " -c Center file in nearest character cells but only scale
down (default)\n",
- argv[0]);
+ print_usage(argv[0]);
return 0;
}
eina_init();
@@ -175,7 +189,30 @@ main(int argc, char **argv)
i++;
if (i >= argc) return 0;
}
-
+
+ if (!strcmp(argv[i], "-g"))
+ {
+ unsigned int width = 0, height = 0;
+ int cnt;
+
+ if (i + 2 >= argc)
+ {
+ print_usage(argv[0]);
+ ret = 1;
+ goto shutdown;
+ }
+ i++;
+ cnt = sscanf(argv[i], "%ux%u", &width, &height);
+ if (cnt != 2)
+ {
+ print_usage(argv[0]);
+ ret = 1;
+ goto shutdown;
+ }
+ if (!width || tw > width) maxw = width;
+ maxh = height;
+ }
+
path = argv[i];
rp = ecore_file_realpath(path);
if (rp)
@@ -270,6 +307,7 @@ done:
// ecore_main_loop_begin();
ecore_evas_free(ee);
}
+shutdown:
emotion_shutdown();
edje_shutdown();
ecore_evas_shutdown();
--
------------------------------------------------------------------------------
AlienVault Unified Security Management (USM) platform delivers complete
security visibility with the essential security capabilities. Easily and
efficiently configure, manage, and operate all of your security controls
from a single console and one unified framework. Download a free trial.
http://p.sf.net/sfu/alienvault_d2d