Mercurial > hg > octave-lyh
view scripts/plot/hdl2struct.m @ 17126:eaab03308c0b
doc: Rewrite docstrings for most plot functions.
Emphasize clarity, use common "voice", and increase density of seealso links.
* doc/interpreter/plot.txi: Add @findex entries that were in xlim.m
* scripts/miscellaneous/getappdata.m scripts/miscellaneous/setappdata.m,
scripts/plot/allchild.m, scripts/plot/ancestor.m, scripts/plot/area.m,
scripts/plot/axes.m, scripts/plot/axis.m, scripts/plot/bar.m,
scripts/plot/barh.m, scripts/plot/box.m, scripts/plot/caxis.m,
scripts/plot/cla.m, scripts/plot/clabel.m, scripts/plot/clf.m,
scripts/plot/close.m, scripts/plot/closereq.m, scripts/plot/colorbar.m,
scripts/plot/comet.m, scripts/plot/comet3.m, scripts/plot/compass.m,
scripts/plot/contour.m, scripts/plot/contour3.m, scripts/plot/contourc.m,
scripts/plot/contourf.m, scripts/plot/copyobj.m, scripts/plot/cylinder.m,
scripts/plot/daspect.m, scripts/plot/diffuse.m, scripts/plot/ellipsoid.m,
scripts/plot/errorbar.m, scripts/plot/ezcontour.m, scripts/plot/ezcontourf.m,
scripts/plot/ezmesh.m, scripts/plot/ezmeshc.m, scripts/plot/ezplot.m,
scripts/plot/ezplot3.m, scripts/plot/ezpolar.m, scripts/plot/ezsurf.m,
scripts/plot/ezsurfc.m, scripts/plot/feather.m, scripts/plot/figure.m,
scripts/plot/fill.m, scripts/plot/findall.m, scripts/plot/findobj.m,
scripts/plot/fplot.m, scripts/plot/gca.m, scripts/plot/gcbf.m,
scripts/plot/gcbo.m, scripts/plot/gcf.m, scripts/plot/gco.m,
scripts/plot/ginput.m, scripts/plot/graphics_toolkit.m, scripts/plot/grid.m,
scripts/plot/gtext.m, scripts/plot/guidata.m, scripts/plot/guihandles.m,
scripts/plot/hdl2struct.m, scripts/plot/hggroup.m, scripts/plot/hidden.m,
scripts/plot/hist.m, scripts/plot/hold.m, scripts/plot/ishghandle.m,
scripts/plot/ishold.m, scripts/plot/isocolors.m, scripts/plot/isprop.m,
scripts/plot/legend.m, scripts/plot/line.m, scripts/plot/linkprop.m,
scripts/plot/loglog.m, scripts/plot/loglogerr.m, scripts/plot/mesh.m,
scripts/plot/meshc.m, scripts/plot/meshgrid.m, scripts/plot/meshz.m,
scripts/plot/newplot.m, scripts/plot/orient.m, scripts/plot/pareto.m,
scripts/plot/patch.m, scripts/plot/pcolor.m, scripts/plot/peaks.m,
scripts/plot/pie.m, scripts/plot/pie3.m, scripts/plot/plot.m,
scripts/plot/plot3.m, scripts/plot/plotmatrix.m, scripts/plot/plotyy.m,
scripts/plot/polar.m, scripts/plot/print.m, scripts/plot/quiver.m,
scripts/plot/quiver3.m, scripts/plot/rectangle.m, scripts/plot/refresh.m,
scripts/plot/refreshdata.m, scripts/plot/ribbon.m, scripts/plot/rose.m,
scripts/plot/saveas.m, scripts/plot/scatter.m, scripts/plot/scatter3.m,
scripts/plot/semilogx.m, scripts/plot/semilogxerr.m, scripts/plot/semilogy.m,
scripts/plot/semilogyerr.m, scripts/plot/shading.m, scripts/plot/shg.m,
scripts/plot/shrinkfaces.m, scripts/plot/slice.m, scripts/plot/specular.m,
scripts/plot/sphere.m, scripts/plot/stairs.m, scripts/plot/stem.m,
scripts/plot/stem3.m, scripts/plot/struct2hdl.m, scripts/plot/subplot.m,
scripts/plot/surf.m, scripts/plot/surface.m, scripts/plot/surfc.m,
scripts/plot/surfl.m, scripts/plot/tetramesh.m, scripts/plot/text.m,
scripts/plot/title.m, scripts/plot/trimesh.m, scripts/plot/triplot.m,
scripts/plot/trisurf.m, scripts/plot/view.m, scripts/plot/waitbar.m,
scripts/plot/waitforbuttonpress.m, scripts/plot/waterfall.m,
scripts/plot/whitebg.m, scripts/plot/xlabel.m, scripts/plot/xlim.m,
scripts/plot/ylabel.m, scripts/plot/ylim.m, scripts/plot/zlabel.m,
scripts/plot/zlim.m: Rewrite docstrings for most plot functions.
Emphasize clarity, use common "voice", and increase density of seealso links.
author | Rik <rik@octave.org> |
---|---|
date | Wed, 31 Jul 2013 13:53:30 -0700 |
parents | e39f00a32dc7 |
children | bc924baa2c4e |
line wrap: on
line source
## Copyright (C) 2012 pdiribarne ## ## This program is free software; you can redistribute it and/or modify ## it under the terms of the GNU General Public License as published by ## the Free Software Foundation; either version 3 of the License, or ## (at your option) any later version. ## ## This program is distributed in the hope that it will be useful, ## but WITHOUT ANY WARRANTY; without even the implied warranty of ## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ## GNU General Public License for more details. ## ## You should have received a copy of the GNU General Public License ## along with Octave; see the file COPYING. If not, see ## <http://www.gnu.org/licenses/>. ## -*- texinfo -*- ## @deftypefn {Function File} {@var{s} =} hdl2struct (@var{h}) ## Return a structure, @var{s}, whose fields describe the properties ## of the object, and its children, associated with the handle, @var{h}. ## ## The fields of the structure @var{s} are "type", "handle", "properties", ## "children", and "special". ## @seealso{struct2hdl, findobj} ## @end deftypefn ## Author: pdiribarne <pdiribarne@new-host.home> ## Created: 2012-03-04 function s = hdl2struct (h) if (nargin != 1 || !ishandle (h)) print_usage (); endif hiddenh = get (0, "showhiddenhandles"); if (strcmp (hiddenh, "on")) set (0, "showhiddenhandles", "off"); endif ## main object main = get (h); s.handle = h; s.type = main.type; s.properties = getprops (h); s.children = []; s.special = []; ## sweep all children but legends, colorbars, uimenu and hggroup children ## in reverse order kids = main.children; lg = findobj (h, "-depth", 1, "tag", "legend"); cb = findobj (h, "-depth", 1, "tag", "colorbar"); ui = findobj (h, "-depth", 1, "type", "uimenu"); nkids = length (kids); ii = 0; while (nkids) if (! any (kids (nkids) == lg) && ! any (kids (nkids) == cb) && ! any (kids (nkids) == ui) && ! strcmp (main.type, "hggroup")) ii++; s.children(ii) = hdl2struct (kids(nkids)); endif nkids--; endwhile ## add non "children" children objects (title, xlabel, ...) and ## hggroup children and tag theim in "special" special = []; if (strcmp (main.type, "hggroup")) special = main.children; endif special = [special getspecial(h)]; nsp = length (special); while (nsp) ii++; s.children(ii) = hdl2struct (special(nsp)); s.special(nsp) = ii; nsp--; endwhile ## look for legends and colorbars among "main"'s brothers and add them ## to the children list if (strcmp (main.type, "axes")) par = main.parent; lg = findobj (par, "-depth", 1, "tag", "legend"); if (! isempty (lg)) idx = arrayfun (@(x) get(x).userdata.handle(end) == h, lg); lg = lg(find (idx)); endif nlg = length (lg); if (nlg == 1) ii++; s.children(ii) = hdl2struct (lg); elseif (nlg > 1) error ("hdl2struct: more than one legend found"); endif cb = findobj (par, "-depth", 1, "tag", "colorbar"); if (! isempty (cb)) idx = arrayfun (@(x) get(x).axes == h, cb); cb = cb(find (idx)); endif ncb = length (cb); if (ncb == 1) ii++; s.children(ii) = hdl2struct (cb); elseif (nlg > 1) error ("hdl2struct: more than one colorbar found"); endif endif set (0, "showhiddenhandles", hiddenh); endfunction function hdlist = getspecial (h) obj = get (h); ## return handles to special children fields = fieldnames (obj); hdlist = []; regkids = get ( h, "children"); set (0, "showhiddenhandles", "on"); allkids = get ( h, "children"); set (0, "showhiddenhandles", "off"); speckids = arrayfun (@(x) ! any (x == regkids), allkids); hdlist = allkids (find (speckids)); hdlist = reshape (hdlist, 1, numel (hdlist)); endfunction function prpstr = getprops (h) obj = get (h); ## get usefull properties rejecting readonly, children, handles ... fields = fieldnames (obj); hdlist = []; forbid = {"beingdeleted", "busyaction", "buttondownfcn", ... "children", "clipping", "createfcn", ... "deletefcn", "handlevisibility", "hittest", ... "interruptible", "parent", "selected" ,... "selectionhighlight", "type", "__modified__", ... "uicontextmenu", "__graphics_toolkit__", "currentaxes", ... "currentcharacter", "currentobject","tightinset", ... "currentpoint", "extent"}; nflds = length (fields); ii = 0; while (nflds) prop = fields{nflds}; val = obj.(fields{nflds}); ii++; if (! any (strcmp (prop, forbid))) prpstr.(prop) = val; endif nflds--; endwhile ## hidden properties hidden = {"autopos_tag", "looseinset"}; for ii = 1:numel (hidden) if (isprop (h, hidden{ii})) prpstr.(hidden{ii}) = get (h, hidden{ii}); endif endfor endfunction ## FIXME: need validation tests