where to initialized property defaults?

Ben Abbott bpabbott at mac.com
Sat Jan 3 15:00:03 CST 2009


Shai,

Thanks for the prompt reply.

When you have a moment, please look at setting a default for a vector,  
such as root.screensize.

I don't see how to initialize the values unless they each have the  
same value. I'd like to do something like ...

>> set (0, "screensize", [1, 1, 1440, 900])

... but I don't see how.

Ben


On Jan 3, 2009, at 2:31 PM, Shai Ayal wrote:

> Ben,
>
> The place to set default properties is in src/graphics.h.in.
> properties are defined and assigned default values inside
> BEGIN_PROPERTIES/END_PROPERTIES blocks for each graphics object type
> (e.g. figure, axes, etc...).
> these are system-wide defaults and are not backend dependant. As you
> noticed, the root figure was neglected during our work and has very
> little properties.
> Anyway, you can find examples of how to specify properties and their
> values in the file, just look at axes and figure. You can also add
> more elaborate inital values in the init member for each object.
> The graphics.h.in file is parsed by the genprops.awk script during
> compile to produce the actual graphics.h and the graphics-props.cc
> files which contain the definitions for the properties plus all the
> appropriate get/set functions. The awk script also has some
> documentation inside.
>
> Shai
> p.s. sorry for not being able to contribute more than pointers ...
>
>
> On Sat, Jan 3, 2009 at 9:10 PM, Ben Abbott <bpabbott at mac.com> wrote:
>> Michael/Shai, I've copied you specifically because of your work on  
>> the
>> backend.
>>
>> I've been investing some effort improving the gnuplot backend's  
>> support of
>> root/figure/axes/text/etc properties.
>>
>> One rather significant difficulty is where/how many of the default  
>> property
>> values are to be set.
>>
>> In graphics.h.in it is simple enough to initialize each index of  
>> vector
>> associated with a property to a scalar value ... but what is to be  
>> done with
>> properties like figure.papersize, figure.paperposition,  
>> root.screensize,
>>
>> In my octaverc I set several property defaults. See below ...
>>
>> if compare_versions (version, "3.1.0", ">=")
>> set (0, "defaultaxesfontname", "Helvetica")
>> set (0, "defaultaxesfontsize", 14)
>> set (0, "defaultaxesinterpreter", "tex")
>> set (0, "defaultaxesxtick", [0:0.2:1])
>> set (0, "defaultaxesytick", [0:0.2:1])
>> set (0, "defaultaxesztick", [0:0.2:1])
>> set (0, "defaultaxesxtickmode", "auto")
>> set (0, "defaultaxesytickmode", "auto")
>> set (0, "defaultaxesztickmode", "auto")
>> set (0, "defaultaxesactivepositionproperty", "outerposition")
>> set (0, "defaultfigurepapertype", "usletter")
>> set (0, "defaultfigurepapersize", [8.5 11])
>> set (0, "defaultfigureposition", [440 314 560 420])
>> set (0, "defaultfigurepaperposition", [0.25, 2.5, 8, 6])
>> set (0, "screensize", [1, 1, 1440, 900])
>> set (0, "screenpixelsperinch", 1440/14)
>> edit editinplace true
>> edit home .
>> endif
>>
>> This should obviously be done at a lower level. Some of this is  
>> already
>> being handled in gnuplot_drawnow.m.
>>
>> I'm not sure where, or how, such defaults should be set in the  
>> sources, but
>> having gnuplot_drawnow.m handle it is obviously bad practice.
>>
>> Might someone be up to the task of taking this on, or offering  
>> guidance for
>> the c++ deficient like myself? I don't see where in the sources  
>> xlim, ylim
>> are set, so perhaps this is already in place for axes?
>>
>> Ben
>>



More information about the Octave-maintainers mailing list