On 2015-03-05 14:44-0500 Jim Dishaw wrote:

>
> On Mar 5, 2015, at 5:45 AM, Phil Rosenberg <p.d.rosenb...@gmail.com> wrote:
>
>> I sort of agree. Sounds like a maintenance nightmare, plus, again, I thought 
>> that was the buffer's role - sit after major processing (e.g. After contour 
>> generation) but before device dependence, collecting commands which can be 
>> transferred to any device for repotting?
>
> The buffer essentially sits right before the call to the driver.  The 
> information stored in the buffer are in the device specific coordinate 
> system.  The original purpose of the buffer was to redraw the window on a 
> resize event.  The plot buffer can be brought up the hierarchy, but the 
> tradeoff is reduced performance on window redraws.  Plus, as Maurice points 
> out, the current code architecture is not designed for a mid-level interface.
>
> Consider the case of a dashed grid. The dash is specified as lengths in mm, 
> thus there will be a different of number of dashes for different physical 
> sizes.  For example, in x01c I count ~2 horizontal dashes between vertical 
> ticks on the psc device, ~3 on the xwin device, ~2 on qtwidget, and ~2 on 
> cairo.  When resizing the GUI windows, the number of dashes remains 
> unchanged, which violates the specified dash lengths.
>
> While working on the code, my thinking has iterated over different solutions 
> as gained a better understanding of what is happening in the guts.  There are 
> two basic directions that we can go with plbuf/plmeta.
>
> 1) Keep the current structure and live with the differences in rendering
>
> Pro:  Less change to the code, better performance on redraws
> Con: Resized windows or rerendered plots might not be correct in appearance.
>
> 2) Move plbuf up in the architecture and make plmeta a very smart driver.
>
> Pro: Plots would be rendered correctly (e.g. dash length) on redraws or when 
> output on different devices from a metafile.
> Con: Redraw performance will be a bit less (probably not noticeable on most 
> machines), more change to the code

> What I mean by a "very smart" driver is that it would be able to do
all graphic operations natively (e.g. dashed lines, pattern fills).

"graphic operations" sounds like actually displaying something when I
am sure you didn't mean at all so I am lost as to what you really meant
here.  So could you expand/clarify?

> I think the second option is the right way to go and it is closest
to what was originally discussed when this effort started.

Hi Jim:

I don't feel competent to comment on what the final decision is going
to from the coding architecture point of view so I will let you, Phil,
and Maurice hash it out between you.  However I do have some (mostly
obvious) points to make otherwise.

1. You are in the best position to make this decision, and I
don't want to over-advocate my "solution" too much (which I assume
would be part of alternative (1)) since it is obviously just a hack
which might work, but which further complicates our code.

2. Alternative (2) is obvious post-release material.

3. If your final decision is to forget about alternative (1) even in
the short term, then that is fine with me although that means
plmeta/plrender will not be ready enough before the release to provide
a good test platform for plbuf.

That in turn means we have to be careful to thoroughly test all plbuf
changes from now until release by (a) resizing xwin results, (b)
looking at results for all examples, and (c) especially checking
wxwidgets results.  We have already been hit at least once on this
matter with a plbuf change (since fixed) that clobbered character
sizes in certain rare situations (e.g., character sizes in example
2.02).  That means for every further plbuf change in this release
cycle we unfortunately are going to have to look at every page of
every example to make sure no other problems arise from the plbuf
change.  I think the lack of zoom for -dev tk and the plframe GUI
might be an example of a similar issue, and I plan to follow up by
checking with git bisect to see when this regression in behaviour
occurred.

> @Alan:  I will update the documentation as requested.

Thanks.

Alan
__________________________
Alan W. Irwin

Astronomical research affiliation with Department of Physics and Astronomy,
University of Victoria (astrowww.phys.uvic.ca).

Programming affiliations with the FreeEOS equation-of-state
implementation for stellar interiors (freeeos.sf.net); the Time
Ephemerides project (timeephem.sf.net); PLplot scientific plotting
software package (plplot.sf.net); the libLASi project
(unifont.org/lasi); the Loads of Linux Links project (loll.sf.net);
and the Linux Brochure Project (lbproject.sf.net).
__________________________

Linux-powered Science
__________________________

------------------------------------------------------------------------------
Dive into the World of Parallel Programming The Go Parallel Website, sponsored
by Intel and developed in partnership with Slashdot Media, is your hub for all
things parallel software development, from weekly thought leadership blogs to
news, videos, case studies, tutorials and more. Take a look and join the 
conversation now. http://goparallel.sourceforge.net/
_______________________________________________
Plplot-devel mailing list
Plplot-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/plplot-devel

Reply via email to