Репозиторий Sisyphus
Последнее обновление: 1 октября 2023 | Пакетов: 18631 | Посещений: 37044964
en ru br
Репозитории ALT
S:2.07-alt1
5.1: p17-alt2
4.1: p17-alt1
4.0: p17-ipl10mdk
3.0: p17-ipl10mdk
www.altlinux.org/Changes

Группа :: Издательство
Пакет: psutils

 Главная   Изменения   Спек   Патчи   Sources   Загрузить   Gear   Bugs and FR  Repocop 

Патч: psutils-flip.patch
Скачать


Patch for pstops from psutils to allow page flipping (i.═e. mirroring).
Useful for creating of print matrices on transparent films.
http://www.penguin.cz/~utx
ftp://ftp.penguin.cz/pub/users/utx/psutils/psutils-flip.diff
--- psutils/pstops.c.orig	1997-03-11 23:53:04.000000000 +0100
+++ psutils/pstops.c	2002-07-26 19:14:49.000000000 +0200
@@ -35,7 +35,7 @@
 {
    fprintf(stderr, "%s: page specification error:\n", program);
    fprintf(stderr, "  <pagespecs> = [modulo:]<spec>\n");
-   fprintf(stderr, "  <spec>      = [-]pageno[@scale][L|R|U][(xoff,yoff)][,spec|+spec]\n");
+   fprintf(stderr, "  <spec>      = [-]pageno[@scale][L|R|U|H|V][(xoff,yoff)][,spec|+spec]\n");
    fprintf(stderr, "                modulo>=1, 0<=pageno<modulo\n");
    fflush(stderr);
    exit(1);
@@ -81,6 +81,14 @@
 	    tail->rotate += 180;
 	    tail->flags |= ROTATE;
 	    break;
+	 case 'h': case 'H':
+	    tail->hflip += 1;
+	    tail->flags |= HFLIP;
+	    break;
+	 case 'v': case 'V':
+	    tail->vflip += 1;
+	    tail->flags |= VFLIP;
+	    break;
 	 case '(':
 	    tail->xoff += parsedimen(&str, argerror);
 	    if (*str++ != ',') argerror();
--- psutils/psspec.h.orig	1997-03-11 23:53:04.000000000 +0100
+++ psutils/psspec.h	2002-07-26 17:41:41.000000000 +0200
@@ -8,12 +8,14 @@
 /* pagespec flags */
 #define ADD_NEXT (0x01)
 #define ROTATE   (0x02)
-#define SCALE    (0x04)
-#define OFFSET   (0x08)
-#define GSAVE    (ROTATE|SCALE|OFFSET)
+#define HFLIP    (0x04)
+#define VFLIP    (0x08)
+#define SCALE    (0x10)
+#define OFFSET   (0x20)
+#define GSAVE    (ROTATE|HFLIP|VFLIP|SCALE|OFFSET)
 
 typedef struct pagespec {
-   int reversed, pageno, flags, rotate;
+   int reversed, pageno, flags, rotate, hflip, vflip;
    double xoff, yoff, scale;
    struct pagespec *next;
 } PageSpec ;
--- psutils/psspec.c.orig	1997-03-11 23:53:04.000000000 +0100
+++ psutils/psspec.c	2002-07-26 19:21:10.000000000 +0200
@@ -22,6 +22,8 @@
    if (temp == NULL)
       message(FATAL, "out of memory\n");
    temp->reversed = temp->pageno = temp->flags = temp->rotate = 0;
+   temp->hflip = 0;
+   temp->vflip = 0;
    temp->scale = 1;
    temp->xoff = temp->yoff = 0;
    temp->next = NULL;
@@ -208,6 +210,14 @@
 	       sprintf(buffer, "%d rotate\n", ps->rotate);
 	       writestring(buffer);
 	    }
+	    if ((ps->flags & HFLIP) && (ps->hflip%2)) {
+	       sprintf(buffer, "[ -1 0 0 1 %f 0 ] concat\n", width*ps->scale);
+	       writestring(buffer);
+	    }
+	    if ((ps->flags & VFLIP) && (ps->vflip%2)) {
+	       sprintf(buffer, "[ 1 0 0 -1 0 %f ] concat\n", height*ps->scale);
+	       writestring(buffer);
+	    }
 	    if (ps->flags & SCALE) {
 	       sprintf(buffer, "%f dup scale\n", ps->scale);
 	       writestring(buffer);
--- psutils/pstops.man.orig	1997-03-11 23:53:04.000000000 +0100
+++ psutils/pstops.man	2002-07-26 19:25:37.000000000 +0200
@@ -43,7 +43,7 @@
 .I = spec[+specs][,specs]
 .TP
 .I spec
-.I = [-]pageno[L][R][U][@scale][(xoff,yoff)]
+.I = [-]pageno[L][R][U][H][V][@scale][(xoff,yoff)]
 .RE
 .sp
 .I modulo
@@ -74,8 +74,9 @@
 or
 .B "h"
 to specify as a multiple of the width or height.
-The optional parameters \fIL\fR, \fIR\fR, and \fIU\fR rotate the page left,
-right, or upside-down.
+The optional parameters \fIL\fR, \fIR\fR, \fIU\fR, \fIH\fR and \fIV\fR
+rotate the page left, right, or upside-down, and flip (mirror) page
+horizontally or vertically.
 The optional
 .I scale
 parameter scales the page by the fraction specified.
--- psutils/README.orig	1997-03-11 23:53:05.000000000 +0100
+++ psutils/README	2002-07-26 19:36:58.000000000 +0200
@@ -181,6 +181,7 @@
 	Mike Coleman
 	Dale Scheetz		dwarf@polaris.net
 	Yves Arrouye		arrouye@marin.fdn.fr
+	Stanislav Brabec	utx@penguin.cz
 
 (Apologies to anyone who I have left out, it was not intentional.)
 
 
дизайн и разработка: Vladimir Lettiev aka crux © 2004-2005, Andrew Avramenko aka liks © 2007-2008
текущий майнтейнер: Michael Shigorin