'paperpositionmode' change to rid gnuplot_set_term: size is zero
Ben Abbott
bpabbott at mac.com
Mon Jan 12 13:28:23 CST 2009
On Monday, January 12, 2009, at 12:58PM, "John W. Eaton" <jwe at octave.org> wrote:
>On 5-Jan-2009, Michael Goffioul wrote:
>
>| On Mon, Jan 5, 2009 at 12:20 PM, Ben Abbott <bpabbott at mac.com> wrote:
>| > Michael/others,
>| >
>| > I've essentially mimicked prior examples in order to set the defaults for
>| > ...
>| >
>| > axes.xticks
>| > axes.yticks
>| > axes.zticks
>| > figure.papersize
>| > figure.paperposition
>| > root.screensize
>| >
>| > I've also attempted to add the "character" unit to
>| > graphics:convert_positon(...)
>| >
>| > There is a typo for the radio value "pixels" for the property text.fontunits
>| > which is fixed as well.
>| >
>| > I'd appreciate some advice/critque regarding the attached changeset.
>| >
>| > Beyond these changes, I'd also like to see the axes.xticklabel / yticklabel
>| > / zticklabel updated when the xtick / ytick / ztick is set. I have not
>| > looked into how the listeners are handled on the c++ side yet, so I can't
>| > ask any intelligent questions. However, it appears to me that it would be
>| > proper to set the initial axes.xticklabel / yticklabel / zticklabel default
>| > values. However, I have been unable to figure that out.
>| >
>| > Is it possible to set the ticklabels using a function (in graphics.cc) as is
>| > done for numeric values (for example the one below)
>| >
>| > static Matrix
>| > default_axes_tick (void)
>| > {
>| > Matrix m (1, 6, 0.0);
>| > m(0) = 0.0;
>| > m(1) = 0.2;
>| > m(2) = 0.4;
>| > m(3) = 0.6;
>| > m(4) = 0.8;
>| > m(5) = 1.0;
>| > return m;
>| > }
>| >
>| > Where graphics.h.in would then have
>| >
>| > row_vector_property xtick m , default_axes_tick ()
>| > row_vector_property ytick m , default_axes_tick ()
>| > row_vector_property ztick m , default_axes_tick ()
>| >
>| > My naive guess would be to replace "Matrix" with "octave_value" (which I'd
>| > bet is wrong, because I can't find any such examples in the code). Beyond
>| > that I have no clue how to specify a cell array of strings.
>|
>| You can use Cell class for that. But in this specific case, I wouldn't
>| try to add a default_axes_ticklabel() function, but instead provide
>| a function that can create the cell array of strings from the numerical
>| values and use it in the init() method and in the tick updater methods.
>| Schematically (untested), this would look like:
>|
>| Cell compute_ticklabels(const Matrix& ticks)
>| {
>| ...
>| }
>|
>| void init(void)
>| {
>| ...
>| xticklabel = compute_ticklabels(xtick.get().matrix_value());
>| ...
>| }
>|
>| void update_xtick(void)
>| {
>| if (xticklabelmode.is("auto")
>| xticklabel = compute_ticklabels(xtick.get().matrix_value());
>| }
>|
>| void update_xticklabelmode(void)
>| {
>| if (xticklabelmode.is("auto")
>| xticklabel = compute_ticklabels(xtick.get().matrix_value());
>| }
>|
>| I hope you get the logic.
>
>Ben, do you plan to revise your patch according to Michael's
>suggestion?
>
>I applied the fix for the typo.
>
>Thanks,
>
>jwe
I had *hoped* to revise my patch ... and I've been looking at it. Unfortunately, my c++ knowledge/skill is not up to this task. I've yet to move beyond mimicking/modifying the work of others.
If you or someone else has the time for this, please feel free to take care of it. I'll be sure to study the solution.
Ben
More information about the Octave-maintainers
mailing list