octave-maintainers
[Top][All Lists]
Advanced

[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

Attachment: changeset.patch
Description: Binary data




Attachment: test_print.m
Description: Binary data




reply via email to

[Prev in Thread] Current Thread [Next in Thread]