[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: print -landscape/portrait
From: |
Ben Abbott |
Subject: |
Re: print -landscape/portrait |
Date: |
Sun, 14 Jun 2009 15:33:40 -0400 |
On Jun 13, 2009, at 10:02 PM, Ben Abbott wrote:
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><test_print.m>
My first attempt had some problems when the papersize and
paperorientation were in conflict (which is one problem I sought to
overcome). I've attached a second attempt, with a modified text script.
I've tried printing hardcopies directly and had not problem on Mac
OSX. If there are no objections, I'll push this changeset tomorrow.
Ben
changeset.patch
Description: Binary data
test_print.m
Description: Binary data