octave-maintainers
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: where to initialized property defaults?


From: Shai Ayal
Subject: Re: where to initialized property defaults?
Date: Sat, 3 Jan 2009 21:31:26 +0200

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 <address@hidden> 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
>


reply via email to

[Prev in Thread] Current Thread [Next in Thread]