I've shaken the bugs out of the Tcl/Tk "demo demo" and updated the=20
patch. The main problem was that the Tcl/Tk "open" was directing=20
gnuplot's output to stdout. That caused the buffer to fill up, and then =
the program froze. Another problem was that the fontfile.dem and=20
fontfile_latex.dem files would change the terminal to something other=20
than x11 and break in the middle before they could restore the terminal=20
via "pop". Hence gnuplot terminal was stuck in "post" such that it=20
appears as though the program was hung because the x11 window would no=20
longer be drawn to... easy fix.
Inside the "reread.bor" file I changed
replot
reread
to
replot
pause -1 "Hit return to continue"
if (bb!=3D0) reread;
That way, the 'border.dem' demo behaves like all others in that it plots =
16 different border styles in response to a keyboard hit and then stops.
I added "borders.dem", "charset.dem" and "vector.dem" to "all.dem".
=3D=3D=3D=3D=3D=3D=3D=3D
Here is a bug in current CVS I added to SourceForge: There is a demo 've=
ctor.dem' in the /demo subdirectory. I seems to run fine. However, it f=
ails after running the demo 'pm3dcolors.dem' and type 'reset' in between =
doesn't fix things. The following error occurs.
splot vtot(x,y) w l
^
"vector.dem", line 60: `using` with 4 parameters but surface wit=
hout `pm3d` or `palette`
And I believe I can pinpoint this error, for someone else to fix. Below =
is the section of code from plot3d.c causing the problem. Notice that th=
e portion of code issuing the error follows the if/else statement. One o=
f the variables in the conditional test is df_no_use_specs. But df_no_us=
e_specs is a variable associated with datafile.c and is only set when df_=
open() is called. Now look at the "splot" command above and notice that =
it is a function, not a data file. Hence, the demo "pm3dcolors.dem" sets=
the value of df_no_using_specs to 4. Then when the vector.dem demo is r=
un, df_no_use_specs is 4, it is unaffected by reset and it never gets set=
to something else because df_open() never gets called. A quick solution=
is to put " df_no_use_specs =3D 0;" right after the /* function to plo=
t */ else bracket... or if someone knows how to determine the number of c=
olumns of data from the function, that is even better.
if (isstring(c_token)) { /* data file to plot */
<snip>
specs =3D df_open(MAXDATACOLS, MODE_SPLOT);
<snip>
} else { /* function to plot */
<snip>
} /* end of IS THIS A FILE OR A FUNC block */
<snip>
#ifdef PM3D
if (df_no_use_specs=3D=3D4 &&
!(this_plot->lp_properties.use_palette ||
pm3d.where[0] || this_plot->pm3d_where[0] || this_plot->plot_style & =
PM3DSURFACE))
int_error(c_token, "`using` with 4 parameters but surface without `pm3d=
` or `palette`");
#endif
|