[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
print -landscape/portrait
From: |
Ben Abbott |
Subject: |
print -landscape/portrait |
Date: |
Sat, 13 Jun 2009 22:02:22 -0400 |
After the bug-report by José, regarding unexpected behavior of "print -
landscape ...", I was encouraged to re-examine the implementation of
how the print command handles the figure paper properties.
A simple summary of how the compatible interaction of the figure paper
properties is itemized below.
(1) When the paperorientation is changed, a listener is needed to flip
the papersize but should not modify the paperposition. This, indicates
that the paperorientation can be ignored when printing.
(2) When the papertype is changed, a listener is needed to set the
papersize while accounting for the paperorientation. This indicates
that the papertype can also be ignored when printing.
(3) When the papersize is changed, a listener is needed to set the
papertype, but should not modify the paperorientation.
(4) When the paperunits is changed, a listener is needed to convert
the values for the papersize and paperposition.
(5) When paperpositionmode is 'auto' the paperposition property is set
to produce a figure, centered on the page, and the same size as that
the screen.
Presently, Octave has no paper property listeners in place. However,
we can implement printing functionality in such a manner that it will
function properly the absence of the listeners (under the assumption
that paperunits==inches and units==pixels), and work correctly when
those listeners are eventually implemented.
(a) When printing output, Octave will ignore the paperorientation &
papertype, and rely upon the papersize and paperposition.
(b) Octave will use an unwind_protect block to temporally change the
paperunits to inches (the default) to allow the listener (which is not
yet implemented) to change the papersize and paperposition values.
This block may also be used to temporally change the paperposition
when paperpositionmode == 'auto'.
(c) with the -landscape option and paperoriention==portrait, rotate
both the papersize and the paperposition.
(d) with the -portrait option and paperoriention==landscape, rotate
both the papersize and the paperposition.
The attached changeset has been tested with (i) gnuplot 4.2.2 using
devices ps and pdf, and with (ii) gnuplot 4.3.0 using devices ps and
pdf.
Ive also attached a m-file script to test the print function
(test_print.m)
Jaroslav, this changeset should apply cleanly the both the developers
sources as well as the 3.2 sources. Presently the -landscape option
does not produce the expected result (imo). Thus, I recommend this
change be pulled to 3.2. However, before doing so I'd like it to be
tested on Linux (and hopefully Windows).
I hope to push this tomorrow after I've done a bit more testing
(specifically I need to verity printing a hard-copy works correclty).
Ben
changeset.patch
Description: Binary data
test_print.m
Description: Binary data
- print -landscape/portrait,
Ben Abbott <=