* authorization. *
****************************************************************************/
/*
- * $Id: picsmap.c,v 1.108 2017/11/19 02:56:12 tom Exp $
+ * $Id: picsmap.c,v 1.114 2017/12/16 23:49:40 tom Exp $
*
* Author: Thomas E. Dickey
*
#define Scaled256(n) (NCURSES_COLOR_T) (int)(((n) * 1000.0) / 256)
#define ScaledColor(n) (NCURSES_COLOR_T) (int)(((n) * 1000.0) / scale)
+#ifndef RGB_PATH
#define RGB_PATH "/etc/X11/rgb.txt"
+#endif
#include <picsmap.h>
static int gather_c_values(int);
static FILE *logfp = 0;
+static double aspect_ratio = 0.6;
static bool in_curses = FALSE;
static bool debugging = FALSE;
static bool quiet = FALSE;
for (j = 0; (size_t) j < size; ++j) {
if (blob[j] == '\0' ||
(UChar(blob[j]) < 32 &&
- !isspace(blob[j])) ||
- (UChar(blob[j]) >= 128 && UChar(blob[j]) < 160))
+ !isspace(UChar(blob[j]))) ||
+ (UChar(blob[j]) >= 128 && UChar(blob[j]) < 160)) {
binary = TRUE;
+ }
if (blob[j] == '\n') {
blob[j] = '\0';
if (k && !binary) {
,"Read/display one or more xbm/xpm files (possibly use \"convert\")"
,""
,"Options:"
+ ," -a ratio aspect-ratio correction for ImageMagick"
#if HAVE_USE_DEFAULT_COLORS
," -d invoke use_default_colors"
#endif
break;
}
num_colors++;
+ free(list[reading_last]);
list[reading_last] = strdup(arg1);
if ((by_name = lookup_rgb(arg3)) != 0) {
found = gather_c_values(by_name->value);
isspace(UChar(buffer[n])) &&
sscanf(skip_word(buffer + n), " %dx%d ", &pic_x, &pic_y) == 2) {
/* distort image to make it show normally on terminal */
- pic_x = (166 * pic_x) / 100;
+ pic_x = (int) ((double) pic_x / aspect_ratio);
} else {
pic_x = pic_y = 0;
}
int my_pair, my_color;
debugmsg("called show_picture");
+ logmsg("...using %dx%d screen", LINES, COLS);
#if USE_EXTENDED_COLORS
reset_color_pairs();
#elif HAVE_CURSCR
{
int n;
int opt_d = FALSE;
+ char ignore_ch;
const char *palette_path = 0;
- const char *rgb_path = "/etc/X11/rgb.txt";
+ const char *rgb_path = RGB_PATH;
- while ((n = getopt(argc, argv, "dLl:p:qr:s:x:")) != -1) {
+ while ((n = getopt(argc, argv, "a:dLl:p:qr:s:x:")) != -1) {
switch (n) {
+ case 'a':
+ if (sscanf(optarg, "%lf%c", &aspect_ratio, &ignore_ch) != 1
+ || aspect_ratio < 0.1
+ || aspect_ratio > 10.) {
+ fprintf(stderr, "Expected a number in [0.1 to 10.]: %s\n", optarg);
+ usage();
+ }
+ break;
#if HAVE_USE_DEFAULT_COLORS
case 'd':
opt_d = TRUE;