Hi Jim:

On 2015-02-17 13:11-0500 Jim Dishaw wrote:

> Hopefully this patch series will work correctly.  I started a new
topic branch as recommended.

Thanks for this new patch series which applies on top of master tip without
issues, and after default cmake configuration (except for adding
-DPLD_plmeta=ON)

make test_plbuf
make ps
make plmeta

builds those targets without issues.

Furthermore

examples/c/test_plbuf

runs without issues and produces

test_plbuf_0.plm
test_plbuf_2.out
test_plbuf_0.out
test_plbuf_1.out

where the last three are differing PostScript plots that are similar to
example 1.  If you ignore the date stamp, test_plbuf_[01].out only differ
by a colour command, but test_plbuf_2.out is very different from the
other two which is probably relevant to my further coordinate remarks below.

Finally, here are the corresponding valgrind results:

software@raven> valgrind examples/c/test_plbuf 
==2053== Memcheck, a memory error detector
==2053== Copyright (C) 2002-2011, and GNU GPL'd, by Julian Seward et al.
==2053== Using Valgrind-3.7.0 and LibVEX; rerun with -h for copyright info
==2053== Command: examples/c/test_plbuf
==2053== 
==2053== 
==2053== HEAP SUMMARY:
==2053==     in use at exit: 1,228 bytes in 64 blocks
==2053==   total heap usage: 6,780 allocs, 6,716 frees, 1,046,238 bytes 
allocated
==2053== 
==2053== LEAK SUMMARY:
==2053==    definitely lost: 1,228 bytes in 64 blocks
==2053==    indirectly lost: 0 bytes in 0 blocks
==2053==      possibly lost: 0 bytes in 0 blocks
==2053==    still reachable: 0 bytes in 0 blocks
==2053==         suppressed: 0 bytes in 0 blocks
==2053== Rerun with --leak-check=full to see details of leaked memory
==2053== 
==2053== For counts of detected and suppressed errors, rerun with: -v
==2053== ERROR SUMMARY: 0 errors from 0 contexts (suppressed: 4 from 4)

I very much like that 0 errors result in the summary although there
are obviously still some unfreed memory issues reported here that
should be addressed.

So my conclusion from these tests is this patch series does not
introduce any major issues so I have pushed it along with a subsequent
commit of my own to fix the source code style issues in this patch
series.

IMPORTANT.  Which means your patch series and my subsequent patch
to style it are now in the master branch at SourceForge and any further
changes you do to plmeta/plbuf should start from a fresh new topic
branch based on master tip.

Although I am obviously willing to run scripts/style_source.sh myself,
I also encourage you to look at the recent thread here concerning how
to do that for yourself to get the result of your series of commits to
match PLplot code standards.

> The plot metafile read will generate an output identical to
plrender.  Visually, the plot is similar to the output generated by
plplot directly; however, due to the difference in coordinates the
file contents are not identical.

For me, this is a big issue for the current code in master tip.  I did
read the comments in your 6th patch which said this change in
coordinates was necessary, but is that really the case?

I am concerned you are trying to replicate the old bad behaviour of
the plmeta device rather than rewriting plmeta/plrender completely
(without that old bad behaviour) using plbuf capabilities.

Here is my mental model of what goes on with PLplot coordinates.
(Please update/correct this if your recent digging into
PLplot code shows you something different is going on.)

The user specifies a series of plot commands using a variety of
coordinate systems that are available to the user (world coordinates,
normalized subpage coordinates, etc.) Then when using any device, that
series of plot commands containing a variety of coordinates are
transformed into (currently 16-bit) internal physical coordinates
which the device driver code linearly transforms into real physical
coordinates of the device.

So to my mind, if the new plmeta device did no linear transformation
from internal physical coordinates to real physical coordinates (i.e,
simply stored in the plmeta file the internal physical coordinates
associated with each command), and plrender replayed those commands
using their associated internal coordinates for <some device> then the
"indirect" results from

<some_standard_example> -dev plmeta -o test.plm
plrender test.plm -dev <some device>

should be absolutely identical (by construction of the new plmeta/plrender
capability) with the "direct" result

<some_standard_example> -dev <some device>

A major issue with the old plmeta/plrender capability is it did not
follow the above model and did not store/replay using internal physical
coordinates and therefore lost the ability to produce identical
"indirect" and "direct" results.  In fact, in the old days I had
the following result:

<some_standard_example> -dev plmeta -o test.plm
plrender test.plm -dev plmeta -o test1.plm

BUT, test1.plm was different from test.plm which was my first clue as
a PLplot newbie 15 years ago that there was something not quite right
with how -dev plmeta stored coordinates and plrender replayed using
those.

Therefore, I strongly hope you can find a way to store all new plmeta
coordinate results in internal physical coordinates to make this
important replication issue go away and also to make it extremely easy
to test plbuf capabilities with plmeta/plrender by comparing indirect
and direct results for each of our standard examples.

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
__________________________

------------------------------------------------------------------------------
Download BIRT iHub F-Type - The Free Enterprise-Grade BIRT Server
from Actuate! Instantly Supercharge Your Business Reports and Dashboards
with Interactivity, Sharing, Native Excel Exports, App Integration & more
Get technology previously reserved for billion-dollar corporations, FREE
http://pubads.g.doubleclick.net/gampad/clk?id=190641631&iu=/4140/ostg.clktrk
_______________________________________________
Plplot-devel mailing list
Plplot-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/plplot-devel

Reply via email to