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: Ben Abbott
Subject: Re: where to initialized property defaults?
Date: Sat, 03 Jan 2009 16:00:03 -0500

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 <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]