aboutsummaryrefslogtreecommitdiffstats
path: root/z23.c
diff options
context:
space:
mode:
authorJeffrey H. Kingston <jeff@it.usyd.edu.au>2010-09-14 20:39:13 +0000
committerJeffrey H. Kingston <jeff@it.usyd.edu.au>2010-09-14 20:39:13 +0000
commitb2f1a4e879d3013974e41674dbf684d816f1aa95 (patch)
tree08292d39f5b0592c01946a2a754a93329ef599d3 /z23.c
parent7d292f1247e3287fb07a9a12377217ce8942cf09 (diff)
downloadlout-b2f1a4e879d3013974e41674dbf684d816f1aa95.tar.gz
Lout 3.30.
git-svn-id: http://svn.savannah.nongnu.org/svn/lout/trunk@29 9365b830-b601-4143-9ba8-b4a8e2c3339c
Diffstat (limited to 'z23.c')
-rw-r--r--z23.c50
1 files changed, 48 insertions, 2 deletions
diff --git a/z23.c b/z23.c
index cccedeb..37c9022 100644
--- a/z23.c
+++ b/z23.c
@@ -1,7 +1,7 @@
/*@z23.c:Galley Printer:ScaleFactor()@****************************************/
/* */
-/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.29) */
-/* COPYRIGHT (C) 1991, 2003 Jeffrey H. Kingston */
+/* THE LOUT DOCUMENT FORMATTING SYSTEM (VERSION 3.30) */
+/* COPYRIGHT (C) 1991, 2004 Jeffrey H. Kingston */
/* */
/* Jeffrey H. Kingston (jeff@it.usyd.edu.au) */
/* School of Information Technologies */
@@ -388,6 +388,52 @@ OBJECT FixAndPrintObject(OBJECT x, FULL_LENGTH xmk, FULL_LENGTH xb,
break;
+ case HMIRROR:
+
+ if( BackEnd->mirror_avail )
+ {
+ CountChild(y, Down(x), count);
+ if( dim == COLM )
+ {
+ save_mark(x) = xmk;
+ y = FixAndPrintObject(y, 0, back(y, COLM), fwd(y, COLM), dim,
+ NO_SUPPRESS, pg, count, &aback, &afwd);
+ }
+ else
+ { BackEnd->SaveGraphicState(y);
+ BackEnd->CoordTranslate(save_mark(x), pg - xmk);
+ BackEnd->CoordHMirror();
+ y = FixAndPrintObject(y, 0, back(y, ROWM), fwd(y, ROWM), dim,
+ NO_SUPPRESS, 0, count, &aback, &afwd);
+ BackEnd->RestoreGraphicState();
+ }
+ }
+ *actual_back = xb; *actual_fwd = xf;
+ break;
+
+
+ case VMIRROR:
+
+ debug0(DRS, DD, "FixAndPrintObject at VMIRROR");
+ if( BackEnd->mirror_avail )
+ {
+ CountChild(y, Down(x), count);
+ if( dim == COLM )
+ y = FixAndPrintObject(y, xmk, xb, xf, dim, NO_SUPPRESS, pg, count,
+ &aback, &afwd);
+ else
+ { BackEnd->SaveGraphicState(y);
+ BackEnd->CoordTranslate(0, pg - xmk);
+ BackEnd->CoordVMirror();
+ y = FixAndPrintObject(y, 0, back(y, ROWM), fwd(y, ROWM), dim,
+ NO_SUPPRESS, 0, count, &aback, &afwd);
+ BackEnd->RestoreGraphicState();
+ }
+ }
+ *actual_back = xb; *actual_fwd = xf;
+ break;
+
+
case VSCALE:
debug0(DRS, DD, "FixAndPrintObject at VSCALE");