Mercurial > octave
annotate scripts/plot/appearance/legend.m @ 27918:b442ec6dda5c
use centralized file for copyright info for individual contributors
* COPYRIGHT.md: New file.
* In most other files, use "Copyright (C) YYYY-YYYY The Octave Project
Developers" instead of tracking individual names in separate source
files. The motivation is to reduce the effort required to update the
notices each year.
Until now, the Octave source files contained copyright notices that
list individual contributors. I adopted these file-scope copyright
notices because that is what everyone was doing 30 years ago in the
days before distributed version control systems. But now, with many
contributors and modern version control systems, having these
file-scope copyright notices causes trouble when we update copyright
years or refactor code.
Over time, the file-scope copyright notices may become outdated as new
contributions are made or code is moved from one file to
another. Sometimes people contribute significant patches but do not
add a line claiming copyright. Other times, people add a copyright
notice for their contribution but then a later refactoring moves part
or all of their contribution to another file and the notice is not
moved with the code. As a practical matter, moving such notices is
difficult -- determining what parts are due to a particular
contributor requires a time-consuming search through the project
history. Even managing the yearly update of copyright years is
problematic. We have some contributors who are no longer
living. Should we update the copyright dates for their contributions
when we release new versions? Probably not, but we do still want to
claim copyright for the project as a whole.
To minimize the difficulty of maintaining the copyright notices, I
would like to change Octave's sources to use what is described here:
https://softwarefreedom.org/resources/2012/ManagingCopyrightInformation.html
in the section "Maintaining centralized copyright notices":
The centralized notice approach consolidates all copyright
notices in a single location, usually a top-level file.
This file should contain all of the copyright notices
provided project contributors, unless the contribution was
clearly insignificant. It may also credit -- without a copyright
notice -- anyone who helped with the project but did not
contribute code or other copyrighted material.
This approach captures less information about contributions
within individual files, recognizing that the DVCS is better
equipped to record those details. As we mentioned before, it
does have one disadvantage as compared to the file-scope
approach: if a single file is separated from the distribution,
the recipient won't see the contributors' copyright notices.
But this can be easily remedied by including a single
copyright notice in each file's header, pointing to the
top-level file:
Copyright YYYY-YYYY The Octave Project Developers
See the COPYRIGHT file at the top-level directory
of this distribution or at https://octave.org/COPYRIGHT.html.
followed by the usual GPL copyright statement.
For more background, see the discussion here:
https://lists.gnu.org/archive/html/octave-maintainers/2020-01/msg00009.html
Most files in the following directories have been skipped intentinally
in this changeset:
doc
libgui/qterminal
liboctave/external
m4
author | John W. Eaton <jwe@octave.org> |
---|---|
date | Mon, 06 Jan 2020 15:38:17 -0500 |
parents | 48c77d47ea81 |
children | 1891570abac8 |
rev | line source |
---|---|
27918
b442ec6dda5c
use centralized file for copyright info for individual contributors
John W. Eaton <jwe@octave.org>
parents:
27843
diff
changeset
|
1 ## Copyright (C) 2010-2019 The Octave Project Developers |
b442ec6dda5c
use centralized file for copyright info for individual contributors
John W. Eaton <jwe@octave.org>
parents:
27843
diff
changeset
|
2 ## |
b442ec6dda5c
use centralized file for copyright info for individual contributors
John W. Eaton <jwe@octave.org>
parents:
27843
diff
changeset
|
3 ## See the file COPYRIGHT.md in the top-level directory of this distribution |
b442ec6dda5c
use centralized file for copyright info for individual contributors
John W. Eaton <jwe@octave.org>
parents:
27843
diff
changeset
|
4 ## or <https://octave.org/COPYRIGHT.html/>. |
b442ec6dda5c
use centralized file for copyright info for individual contributors
John W. Eaton <jwe@octave.org>
parents:
27843
diff
changeset
|
5 ## |
6146 | 6 ## |
6440 | 7 ## This file is part of Octave. |
8 ## | |
24534
194eb4bd202b
maint: Update punctuation for GPL v3 license text.
Rik <rik@octave.org>
parents:
24498
diff
changeset
|
9 ## Octave is free software: you can redistribute it and/or modify it |
6440 | 10 ## under the terms of the GNU General Public License as published by |
24534
194eb4bd202b
maint: Update punctuation for GPL v3 license text.
Rik <rik@octave.org>
parents:
24498
diff
changeset
|
11 ## the Free Software Foundation, either version 3 of the License, or |
22755
3a2b891d0b33
maint: Standardize Copyright formatting.
Rik <rik@octave.org>
parents:
22631
diff
changeset
|
12 ## (at your option) any later version. |
6440 | 13 ## |
14 ## Octave is distributed in the hope that it will be useful, but | |
15 ## WITHOUT ANY WARRANTY; without even the implied warranty of | |
22755
3a2b891d0b33
maint: Standardize Copyright formatting.
Rik <rik@octave.org>
parents:
22631
diff
changeset
|
16 ## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
3a2b891d0b33
maint: Standardize Copyright formatting.
Rik <rik@octave.org>
parents:
22631
diff
changeset
|
17 ## GNU General Public License for more details. |
6146 | 18 ## |
19 ## You should have received a copy of the GNU General Public License | |
7016 | 20 ## along with Octave; see the file COPYING. If not, see |
24534
194eb4bd202b
maint: Update punctuation for GPL v3 license text.
Rik <rik@octave.org>
parents:
24498
diff
changeset
|
21 ## <https://www.gnu.org/licenses/>. |
6146 | 22 |
23 ## -*- texinfo -*- | |
24434
436deae9f9ab
legend.m: Overhaul function for greater Matlab compatibility.
Rik <rik@octave.org>
parents:
24432
diff
changeset
|
24 ## @deftypefn {} {} legend () |
27710
9fd8534d3607
legend.m: Code cleanup for cset c66467f74278.
Rik <rik@octave.org>
parents:
27708
diff
changeset
|
25 ## @deftypefnx {} {} legend @var{command} |
24434
436deae9f9ab
legend.m: Overhaul function for greater Matlab compatibility.
Rik <rik@octave.org>
parents:
24432
diff
changeset
|
26 ## @deftypefnx {} {} legend (@var{str1}, @var{str2}, @dots{}) |
436deae9f9ab
legend.m: Overhaul function for greater Matlab compatibility.
Rik <rik@octave.org>
parents:
24432
diff
changeset
|
27 ## @deftypefnx {} {} legend (@var{charmat}) |
436deae9f9ab
legend.m: Overhaul function for greater Matlab compatibility.
Rik <rik@octave.org>
parents:
24432
diff
changeset
|
28 ## @deftypefnx {} {} legend (@{@var{cellstr}@}) |
27708
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
29 ## @deftypefnx {} {} legend (@dots{}, @var{property}, @var{value}, @dots{}) |
20852
516bb87ea72e
2015 Code Sprint: remove class of function from docstring for all m-files.
Rik <rik@octave.org>
parents:
20781
diff
changeset
|
30 ## @deftypefnx {} {} legend (@var{hobjs}, @dots{}) |
27710
9fd8534d3607
legend.m: Code cleanup for cset c66467f74278.
Rik <rik@octave.org>
parents:
27708
diff
changeset
|
31 ## @deftypefnx {} {} legend ("@var{command}") |
27708
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
32 ## @deftypefnx {} {} legend (@var{hax}, @dots{}) |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
33 ## @deftypefnx {} {@var{hleg, hplt} =} legend (@dots{}) |
6146 | 34 ## |
17122
eaab03308c0b
doc: Rewrite docstrings for most plot functions.
Rik <rik@octave.org>
parents:
17119
diff
changeset
|
35 ## Display a legend for the current axes using the specified strings as labels. |
eaab03308c0b
doc: Rewrite docstrings for most plot functions.
Rik <rik@octave.org>
parents:
17119
diff
changeset
|
36 ## |
eaab03308c0b
doc: Rewrite docstrings for most plot functions.
Rik <rik@octave.org>
parents:
17119
diff
changeset
|
37 ## Legend entries may be specified as individual character string arguments, |
24434
436deae9f9ab
legend.m: Overhaul function for greater Matlab compatibility.
Rik <rik@octave.org>
parents:
24432
diff
changeset
|
38 ## a character array, or a cell array of character strings. When label names |
27708
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
39 ## might be confused with legend properties, or @var{command} arguments, |
27710
9fd8534d3607
legend.m: Code cleanup for cset c66467f74278.
Rik <rik@octave.org>
parents:
27708
diff
changeset
|
40 ## the labels should be protected by specifying them as a cell array of |
9fd8534d3607
legend.m: Code cleanup for cset c66467f74278.
Rik <rik@octave.org>
parents:
27708
diff
changeset
|
41 ## strings. |
24434
436deae9f9ab
legend.m: Overhaul function for greater Matlab compatibility.
Rik <rik@octave.org>
parents:
24432
diff
changeset
|
42 ## |
436deae9f9ab
legend.m: Overhaul function for greater Matlab compatibility.
Rik <rik@octave.org>
parents:
24432
diff
changeset
|
43 ## If the first argument @var{hax} is an axes handle, then add a legend to this |
436deae9f9ab
legend.m: Overhaul function for greater Matlab compatibility.
Rik <rik@octave.org>
parents:
24432
diff
changeset
|
44 ## axes, rather than the current axes returned by @code{gca}. |
17122
eaab03308c0b
doc: Rewrite docstrings for most plot functions.
Rik <rik@octave.org>
parents:
17119
diff
changeset
|
45 ## |
24434
436deae9f9ab
legend.m: Overhaul function for greater Matlab compatibility.
Rik <rik@octave.org>
parents:
24432
diff
changeset
|
46 ## Legend labels are associated with the axes' children; The first label is |
436deae9f9ab
legend.m: Overhaul function for greater Matlab compatibility.
Rik <rik@octave.org>
parents:
24432
diff
changeset
|
47 ## assigned to the first object that was plotted in the axes, the second label |
436deae9f9ab
legend.m: Overhaul function for greater Matlab compatibility.
Rik <rik@octave.org>
parents:
24432
diff
changeset
|
48 ## to the next object plotted, etc. To label specific data objects, without |
436deae9f9ab
legend.m: Overhaul function for greater Matlab compatibility.
Rik <rik@octave.org>
parents:
24432
diff
changeset
|
49 ## labeling all objects, provide their graphic handles in the input |
436deae9f9ab
legend.m: Overhaul function for greater Matlab compatibility.
Rik <rik@octave.org>
parents:
24432
diff
changeset
|
50 ## @var{hobjs}. |
6146 | 51 ## |
27801
1d04f049a859
doc: spellcheck documentation ahead of 6.1 release.
Rik <rik@octave.org>
parents:
27793
diff
changeset
|
52 ## The optional parameter @nospell{@var{loc}} specifies the location of the |
1d04f049a859
doc: spellcheck documentation ahead of 6.1 release.
Rik <rik@octave.org>
parents:
27793
diff
changeset
|
53 ## legend as follows: |
6146 | 54 ## |
6977 | 55 ## @multitable @columnfractions 0.06 0.14 0.80 |
27801
1d04f049a859
doc: spellcheck documentation ahead of 6.1 release.
Rik <rik@octave.org>
parents:
27793
diff
changeset
|
56 ## @headitem @tab @nospell{loc} @tab location of the legend |
17204
d87179b38bcf
doc: Touch up alignment of @multitables in plot, legend, newplot.
Rik <rik@octave.org>
parents:
17190
diff
changeset
|
57 ## @item @tab north @tab center top |
d87179b38bcf
doc: Touch up alignment of @multitables in plot, legend, newplot.
Rik <rik@octave.org>
parents:
17190
diff
changeset
|
58 ## @item @tab south @tab center bottom |
d87179b38bcf
doc: Touch up alignment of @multitables in plot, legend, newplot.
Rik <rik@octave.org>
parents:
17190
diff
changeset
|
59 ## @item @tab east @tab right center |
d87179b38bcf
doc: Touch up alignment of @multitables in plot, legend, newplot.
Rik <rik@octave.org>
parents:
17190
diff
changeset
|
60 ## @item @tab west @tab left center |
d87179b38bcf
doc: Touch up alignment of @multitables in plot, legend, newplot.
Rik <rik@octave.org>
parents:
17190
diff
changeset
|
61 ## @item @tab northeast @tab right top (default) |
d87179b38bcf
doc: Touch up alignment of @multitables in plot, legend, newplot.
Rik <rik@octave.org>
parents:
17190
diff
changeset
|
62 ## @item @tab northwest @tab left top |
d87179b38bcf
doc: Touch up alignment of @multitables in plot, legend, newplot.
Rik <rik@octave.org>
parents:
17190
diff
changeset
|
63 ## @item @tab southeast @tab right bottom |
d87179b38bcf
doc: Touch up alignment of @multitables in plot, legend, newplot.
Rik <rik@octave.org>
parents:
17190
diff
changeset
|
64 ## @item @tab southwest @tab left bottom |
24434
436deae9f9ab
legend.m: Overhaul function for greater Matlab compatibility.
Rik <rik@octave.org>
parents:
24432
diff
changeset
|
65 ## @sp 1 |
436deae9f9ab
legend.m: Overhaul function for greater Matlab compatibility.
Rik <rik@octave.org>
parents:
24432
diff
changeset
|
66 ## @item @tab outside @tab can be appended to any location string @* |
436deae9f9ab
legend.m: Overhaul function for greater Matlab compatibility.
Rik <rik@octave.org>
parents:
24432
diff
changeset
|
67 ## @item @tab @tab which will place the legend outside the axes |
6146 | 68 ## @end multitable |
69 ## | |
27710
9fd8534d3607
legend.m: Code cleanup for cset c66467f74278.
Rik <rik@octave.org>
parents:
27708
diff
changeset
|
70 ## The following customizations are available using @var{command}: |
6146 | 71 ## |
7148 | 72 ## @table @asis |
17281
bc924baa2c4e
doc: Add new @qcode macro for code samples which are quoted.
Rik <rik@octave.org>
parents:
17204
diff
changeset
|
73 ## @item @qcode{"show"} |
10666
7a43499f074a
legend.m: Improve documentation string
Rik <octave@nomad.inbox5.com>
parents:
10662
diff
changeset
|
74 ## Show legend on the plot |
10821
693e22af08ae
Grammarcheck documentation of m-files
Rik <octave@nomad.inbox5.com>
parents:
10666
diff
changeset
|
75 ## |
17281
bc924baa2c4e
doc: Add new @qcode macro for code samples which are quoted.
Rik <rik@octave.org>
parents:
17204
diff
changeset
|
76 ## @item @qcode{"hide"} |
10666
7a43499f074a
legend.m: Improve documentation string
Rik <octave@nomad.inbox5.com>
parents:
10662
diff
changeset
|
77 ## Hide legend on the plot |
10821
693e22af08ae
Grammarcheck documentation of m-files
Rik <octave@nomad.inbox5.com>
parents:
10666
diff
changeset
|
78 ## |
17281
bc924baa2c4e
doc: Add new @qcode macro for code samples which are quoted.
Rik <rik@octave.org>
parents:
17204
diff
changeset
|
79 ## @item @qcode{"toggle"} |
24434
436deae9f9ab
legend.m: Overhaul function for greater Matlab compatibility.
Rik <rik@octave.org>
parents:
24432
diff
changeset
|
80 ## Toggle between @qcode{"hide"} and @qcode{"show"} |
12394
c2e1973d870b
legend.m: "legend off" should delete the legend object.
Ben Abbott <bpabbott@mac.com>
parents:
12388
diff
changeset
|
81 ## |
17281
bc924baa2c4e
doc: Add new @qcode macro for code samples which are quoted.
Rik <rik@octave.org>
parents:
17204
diff
changeset
|
82 ## @item @qcode{"boxon"} |
17532
492d609d2d75
legend.m: Default text labels to "right" alignment for Matlab compatibility.
Rik <rik@octave.org>
parents:
17530
diff
changeset
|
83 ## Show a box around legend (default) |
10821
693e22af08ae
Grammarcheck documentation of m-files
Rik <octave@nomad.inbox5.com>
parents:
10666
diff
changeset
|
84 ## |
17281
bc924baa2c4e
doc: Add new @qcode macro for code samples which are quoted.
Rik <rik@octave.org>
parents:
17204
diff
changeset
|
85 ## @item @qcode{"boxoff"} |
10666
7a43499f074a
legend.m: Improve documentation string
Rik <octave@nomad.inbox5.com>
parents:
10662
diff
changeset
|
86 ## Hide the box around legend |
10821
693e22af08ae
Grammarcheck documentation of m-files
Rik <octave@nomad.inbox5.com>
parents:
10666
diff
changeset
|
87 ## |
17532
492d609d2d75
legend.m: Default text labels to "right" alignment for Matlab compatibility.
Rik <rik@octave.org>
parents:
17530
diff
changeset
|
88 ## @item @qcode{"right"} |
492d609d2d75
legend.m: Default text labels to "right" alignment for Matlab compatibility.
Rik <rik@octave.org>
parents:
17530
diff
changeset
|
89 ## Place label text to the right of the keys (default) |
492d609d2d75
legend.m: Default text labels to "right" alignment for Matlab compatibility.
Rik <rik@octave.org>
parents:
17530
diff
changeset
|
90 ## |
17281
bc924baa2c4e
doc: Add new @qcode macro for code samples which are quoted.
Rik <rik@octave.org>
parents:
17204
diff
changeset
|
91 ## @item @qcode{"left"} |
15442
015cc3d1f389
legend.m: Overhaul function and add support for automatic data labels.
Rik <rik@octave.org>
parents:
15441
diff
changeset
|
92 ## Place label text to the left of the keys |
10821
693e22af08ae
Grammarcheck documentation of m-files
Rik <octave@nomad.inbox5.com>
parents:
10666
diff
changeset
|
93 ## |
17281
bc924baa2c4e
doc: Add new @qcode macro for code samples which are quoted.
Rik <rik@octave.org>
parents:
17204
diff
changeset
|
94 ## @item @qcode{"off"} |
12394
c2e1973d870b
legend.m: "legend off" should delete the legend object.
Ben Abbott <bpabbott@mac.com>
parents:
12388
diff
changeset
|
95 ## Delete the legend object |
6146 | 96 ## @end table |
15442
015cc3d1f389
legend.m: Overhaul function and add support for automatic data labels.
Rik <rik@octave.org>
parents:
15441
diff
changeset
|
97 ## |
24434
436deae9f9ab
legend.m: Overhaul function for greater Matlab compatibility.
Rik <rik@octave.org>
parents:
24432
diff
changeset
|
98 ## The @code{legend} function creates a graphics object which has various |
436deae9f9ab
legend.m: Overhaul function for greater Matlab compatibility.
Rik <rik@octave.org>
parents:
24432
diff
changeset
|
99 ## properties that can be manipulated with @code{get}/@code{set}. |
436deae9f9ab
legend.m: Overhaul function for greater Matlab compatibility.
Rik <rik@octave.org>
parents:
24432
diff
changeset
|
100 ## Alternatively, properties can be set directly when calling @code{legend} by |
436deae9f9ab
legend.m: Overhaul function for greater Matlab compatibility.
Rik <rik@octave.org>
parents:
24432
diff
changeset
|
101 ## including @var{property}/@var{value} pairs. If using this calling form, the |
436deae9f9ab
legend.m: Overhaul function for greater Matlab compatibility.
Rik <rik@octave.org>
parents:
24432
diff
changeset
|
102 ## labels must be specified as a cell array of strings. |
436deae9f9ab
legend.m: Overhaul function for greater Matlab compatibility.
Rik <rik@octave.org>
parents:
24432
diff
changeset
|
103 ## |
27708
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
104 ## The optional output value @var{hleg} is a handle to the legend object. |
15442
015cc3d1f389
legend.m: Overhaul function and add support for automatic data labels.
Rik <rik@octave.org>
parents:
15441
diff
changeset
|
105 ## |
24434
436deae9f9ab
legend.m: Overhaul function for greater Matlab compatibility.
Rik <rik@octave.org>
parents:
24432
diff
changeset
|
106 ## Implementation Note: The legend label text is either provided in the call to |
436deae9f9ab
legend.m: Overhaul function for greater Matlab compatibility.
Rik <rik@octave.org>
parents:
24432
diff
changeset
|
107 ## @code{legend} or is taken from the @code{DisplayName} property of the |
436deae9f9ab
legend.m: Overhaul function for greater Matlab compatibility.
Rik <rik@octave.org>
parents:
24432
diff
changeset
|
108 ## graphics objects. Only data objects, such as line, patch, and surface, have |
436deae9f9ab
legend.m: Overhaul function for greater Matlab compatibility.
Rik <rik@octave.org>
parents:
24432
diff
changeset
|
109 ## this property whereas axes, figures, etc.@: do not so they are never present |
436deae9f9ab
legend.m: Overhaul function for greater Matlab compatibility.
Rik <rik@octave.org>
parents:
24432
diff
changeset
|
110 ## in a legend. If no labels or @code{DisplayName} properties are available, |
436deae9f9ab
legend.m: Overhaul function for greater Matlab compatibility.
Rik <rik@octave.org>
parents:
24432
diff
changeset
|
111 ## then the label text is simply @qcode{"data1"}, @qcode{"data2"}, @dots{}, |
27710
9fd8534d3607
legend.m: Code cleanup for cset c66467f74278.
Rik <rik@octave.org>
parents:
27708
diff
changeset
|
112 ## @nospell{@qcode{"dataN"}}. |
17122
eaab03308c0b
doc: Rewrite docstrings for most plot functions.
Rik <rik@octave.org>
parents:
17119
diff
changeset
|
113 ## |
24434
436deae9f9ab
legend.m: Overhaul function for greater Matlab compatibility.
Rik <rik@octave.org>
parents:
24432
diff
changeset
|
114 ## The legend @code{FontSize} property is initially set to 90% of the axes |
436deae9f9ab
legend.m: Overhaul function for greater Matlab compatibility.
Rik <rik@octave.org>
parents:
24432
diff
changeset
|
115 ## @code{FontSize} to which it is attached. Use @code{set} to override this |
436deae9f9ab
legend.m: Overhaul function for greater Matlab compatibility.
Rik <rik@octave.org>
parents:
24432
diff
changeset
|
116 ## if necessary. |
436deae9f9ab
legend.m: Overhaul function for greater Matlab compatibility.
Rik <rik@octave.org>
parents:
24432
diff
changeset
|
117 ## |
24498 | 118 ## A legend is implemented as an additional axes object with the @code{tag} |
119 ## property set to @qcode{"legend"}. Properties of the legend object may be | |
120 ## manipulated directly by using @code{set}. | |
6146 | 121 ## @end deftypefn |
122 | |
17503
d99785217634
legend.m: Text objects should inherit textcolor, interpreter properties from legend (bug #40064).
Rik <rik@octave.org>
parents:
17281
diff
changeset
|
123 function [hleg, hleg_obj, hplot, labels] = legend (varargin) |
6146 | 124 |
27708
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
125 ## Use the old legend code to handle gnuplot toolkit |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
126 if (strcmp (graphics_toolkit (), "gnuplot")) |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
127 [hleg, hleg_obj, hplot, labels] = __gnuplot_legend__ (varargin{:}); |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
128 return; |
6146 | 129 endif |
130 | |
27710
9fd8534d3607
legend.m: Code cleanup for cset c66467f74278.
Rik <rik@octave.org>
parents:
27708
diff
changeset
|
131 opts = parse_opts (varargin{:}); |
9fd8534d3607
legend.m: Code cleanup for cset c66467f74278.
Rik <rik@octave.org>
parents:
27708
diff
changeset
|
132 |
27708
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
133 hl = opts.legend_handle; |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
134 |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
135 ## Fix property/value pairs |
27738
7fff532afcb1
legend.m: Fix handling of empty strings and displayname (bug #57271)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27723
diff
changeset
|
136 pval = opts.propval(:)'; |
27710
9fd8534d3607
legend.m: Code cleanup for cset c66467f74278.
Rik <rik@octave.org>
parents:
27708
diff
changeset
|
137 |
27708
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
138 if (! isempty (opts.action)) |
15442
015cc3d1f389
legend.m: Overhaul function and add support for automatic data labels.
Rik <rik@octave.org>
parents:
15441
diff
changeset
|
139 |
27708
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
140 do_set_box = isempty (hl); |
10995
e81914f3921f
Update legend code to support fltk (fixes #29348 and partially fixes #30461)
David Bateman <dbateman@free.fr>
parents:
10990
diff
changeset
|
141 |
27710
9fd8534d3607
legend.m: Code cleanup for cset c66467f74278.
Rik <rik@octave.org>
parents:
27708
diff
changeset
|
142 switch (opts.action) |
27708
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
143 case "boxoff" |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
144 tmp_pval = {"box", "off"}; |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
145 do_set_box = false; |
24403
b9462090773a
legend.m: Setting DisplayName to "" should delete legend (bug #52641).
Rik <rik@octave.org>
parents:
24399
diff
changeset
|
146 |
27708
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
147 case "boxon" |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
148 tmp_pval = {"box", "on"}; |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
149 do_set_box = false; |
10995
e81914f3921f
Update legend code to support fltk (fixes #29348 and partially fixes #30461)
David Bateman <dbateman@free.fr>
parents:
10990
diff
changeset
|
150 |
27708
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
151 case "hide" |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
152 tmp_pval = {"visible", "off"}; |
10995
e81914f3921f
Update legend code to support fltk (fixes #29348 and partially fixes #30461)
David Bateman <dbateman@free.fr>
parents:
10990
diff
changeset
|
153 |
27708
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
154 case "show" |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
155 tmp_pval = {"visible", "on"}; |
24434
436deae9f9ab
legend.m: Overhaul function for greater Matlab compatibility.
Rik <rik@octave.org>
parents:
24432
diff
changeset
|
156 |
27708
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
157 case "toggle" |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
158 if (! isempty (hl)) |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
159 if (strcmp (get (hl, "visible"), "on")) |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
160 tmp_pval = {"visible", "off"}; |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
161 else |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
162 tmp_pval = {"visible", "on"}; |
10995
e81914f3921f
Update legend code to support fltk (fixes #29348 and partially fixes #30461)
David Bateman <dbateman@free.fr>
parents:
10990
diff
changeset
|
163 endif |
11198
9f080d23396f
Fix multi-parented legends with the gnuplot backend (fixes #30461 and #31522)
David Bateman <dbateman@free.fr>
parents:
11149
diff
changeset
|
164 endif |
24434
436deae9f9ab
legend.m: Overhaul function for greater Matlab compatibility.
Rik <rik@octave.org>
parents:
24432
diff
changeset
|
165 |
27708
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
166 case "left" |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
167 tmp_pval = {"textposition", "left"}; |
24434
436deae9f9ab
legend.m: Overhaul function for greater Matlab compatibility.
Rik <rik@octave.org>
parents:
24432
diff
changeset
|
168 |
27708
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
169 case "right" |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
170 tmp_pval = {"textposition", "right"}; |
16799
286904321282
Use unmodified axes "position" and "outerposition" properties for legend().
Ben Abbott <bpabbott@mac.com>
parents:
16796
diff
changeset
|
171 |
27708
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
172 case "off" |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
173 if (! isempty (hl)) |
27710
9fd8534d3607
legend.m: Code cleanup for cset c66467f74278.
Rik <rik@octave.org>
parents:
27708
diff
changeset
|
174 delete (hl); |
16799
286904321282
Use unmodified axes "position" and "outerposition" properties for legend().
Ben Abbott <bpabbott@mac.com>
parents:
16796
diff
changeset
|
175 endif |
27708
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
176 return; |
10995
e81914f3921f
Update legend code to support fltk (fixes #29348 and partially fixes #30461)
David Bateman <dbateman@free.fr>
parents:
10990
diff
changeset
|
177 |
27708
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
178 endswitch |
17503
d99785217634
legend.m: Text objects should inherit textcolor, interpreter properties from legend (bug #40064).
Rik <rik@octave.org>
parents:
17281
diff
changeset
|
179 |
27708
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
180 pval = [tmp_pval, pval]; |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
181 if (do_set_box) |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
182 pval = [pval, "box", "on"]; |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
183 endif |
10995
e81914f3921f
Update legend code to support fltk (fixes #29348 and partially fixes #30461)
David Bateman <dbateman@free.fr>
parents:
10990
diff
changeset
|
184 |
6147 | 185 endif |
186 | |
27708
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
187 if (isempty (hl)) |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
188 |
27747
7ae72862b542
legend.m: handle colormap also for non figure parent (bug #57303)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27740
diff
changeset
|
189 hl = axes ("parent", get (opts.axes_handles(1), "parent"), ... |
7ae72862b542
legend.m: handle colormap also for non figure parent (bug #57303)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27740
diff
changeset
|
190 "tag", "legend", "handlevisibility", "off", ... |
27716
790038c12003
legend.m: handle non default colormap (bug #54757)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27715
diff
changeset
|
191 "ydir", "reverse", "position", [.5 .5 .3 .3], ... |
790038c12003
legend.m: handle non default colormap (bug #54757)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27715
diff
changeset
|
192 "fontsize", 0.9 * get (opts.axes_handles(1), "fontsize"), ... |
27717
842d4221ac6c
legend.m: also inherit "clim" property from peer axes (bug #57258)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27716
diff
changeset
|
193 "clim", get (opts.axes_handles(1), "clim"), ... |
27716
790038c12003
legend.m: handle non default colormap (bug #54757)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27715
diff
changeset
|
194 "colormap", get (opts.axes_handles(1), "colormap"), ... |
790038c12003
legend.m: handle non default colormap (bug #54757)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27715
diff
changeset
|
195 "xtick", [], "ytick", [], "box", "on"); |
27708
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
196 |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
197 ## FIXME: Use the axes appdata to store its peer legend handle |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
198 ## rather that adding a public property and change all uses. |
27715
95cc1f535ba8
legend.m: handle plotyy with ones axes already legend aware (bug #57257)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27714
diff
changeset
|
199 for htmp = opts.axes_handles |
95cc1f535ba8
legend.m: handle plotyy with ones axes already legend aware (bug #57257)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27714
diff
changeset
|
200 try |
95cc1f535ba8
legend.m: handle plotyy with ones axes already legend aware (bug #57257)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27714
diff
changeset
|
201 addproperty ("__legend_handle__", htmp, "handle", hl); |
95cc1f535ba8
legend.m: handle plotyy with ones axes already legend aware (bug #57257)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27714
diff
changeset
|
202 catch |
95cc1f535ba8
legend.m: handle plotyy with ones axes already legend aware (bug #57257)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27714
diff
changeset
|
203 set (htmp, "__legend_handle__", hl); |
95cc1f535ba8
legend.m: handle plotyy with ones axes already legend aware (bug #57257)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27714
diff
changeset
|
204 end_try_catch |
95cc1f535ba8
legend.m: handle plotyy with ones axes already legend aware (bug #57257)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27714
diff
changeset
|
205 endfor |
27708
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
206 |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
207 ## Add and update legend specific properties |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
208 addproperties (hl); |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
209 try |
27738
7fff532afcb1
legend.m: Fix handling of empty strings and displayname (bug #57271)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27723
diff
changeset
|
210 set (hl, "string", opts.obj_labels, pval{:}); |
27708
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
211 catch ee |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
212 delete (hl); |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
213 set (opts.axes_handles, "__legend_handle__", []); |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
214 rethrow (ee); |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
215 end_try_catch |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
216 |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
217 ## Update legend layout |
27710
9fd8534d3607
legend.m: Code cleanup for cset c66467f74278.
Rik <rik@octave.org>
parents:
27708
diff
changeset
|
218 setappdata (hl, "__axes_handle__", opts.axes_handles, |
9fd8534d3607
legend.m: Code cleanup for cset c66467f74278.
Rik <rik@octave.org>
parents:
27708
diff
changeset
|
219 "__next_label_index__", opts.next_idx, |
9fd8534d3607
legend.m: Code cleanup for cset c66467f74278.
Rik <rik@octave.org>
parents:
27708
diff
changeset
|
220 "__peer_objects__", opts.obj_handles); |
27708
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
221 update_location_cb (hl, [], false); |
27718
39ac47fdcda2
legend.m: handle "edgecolor" passed at legend creation (bug #56968)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27717
diff
changeset
|
222 update_edgecolor_cb (hl); |
39ac47fdcda2
legend.m: handle "edgecolor" passed at legend creation (bug #56968)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27717
diff
changeset
|
223 update_numchild_cb (hl); |
27708
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
224 update_layout_cb (hl, [], true); |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
225 |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
226 ## Dummy invisible object that deletes the legend when "newplot" is called |
27710
9fd8534d3607
legend.m: Code cleanup for cset c66467f74278.
Rik <rik@octave.org>
parents:
27708
diff
changeset
|
227 ht = __go_text__ (opts.axes_handles(1), "tag", "__legend_watcher__", |
9fd8534d3607
legend.m: Code cleanup for cset c66467f74278.
Rik <rik@octave.org>
parents:
27708
diff
changeset
|
228 "visible", "off", "handlevisibility", "off", |
27708
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
229 "deletefcn", {@reset_cb, hl}); |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
230 |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
231 ## Listeners to foreign objects properties are stored for later |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
232 ## deletion in "delfunction" |
27747
7ae72862b542
legend.m: handle colormap also for non figure parent (bug #57303)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27740
diff
changeset
|
233 hax = opts.axes_handles(1); |
7ae72862b542
legend.m: handle colormap also for non figure parent (bug #57303)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27740
diff
changeset
|
234 hf = ancestor (hax, "figure"); |
7ae72862b542
legend.m: handle colormap also for non figure parent (bug #57303)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27740
diff
changeset
|
235 |
7ae72862b542
legend.m: handle colormap also for non figure parent (bug #57303)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27740
diff
changeset
|
236 add_safe_listener (hl, hf, "colormap", ... |
7ae72862b542
legend.m: handle colormap also for non figure parent (bug #57303)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27740
diff
changeset
|
237 @() set (hl, "colormap", get (hax, "colormap"))); |
7ae72862b542
legend.m: handle colormap also for non figure parent (bug #57303)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27740
diff
changeset
|
238 |
7ae72862b542
legend.m: handle colormap also for non figure parent (bug #57303)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27740
diff
changeset
|
239 add_safe_listener (hl, hax, "position", {@maybe_update_layout_cb, hl}); |
7ae72862b542
legend.m: handle colormap also for non figure parent (bug #57303)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27740
diff
changeset
|
240 add_safe_listener (hl, hax, "tightinset", ... |
27708
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
241 @(h) update_layout_cb (get (h, "__legend_handle__"))); |
27747
7ae72862b542
legend.m: handle colormap also for non figure parent (bug #57303)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27740
diff
changeset
|
242 add_safe_listener (hl, hax, "clim", ... |
7ae72862b542
legend.m: handle colormap also for non figure parent (bug #57303)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27740
diff
changeset
|
243 @(hax) set (hl, "clim", get (hax, "clim"))); |
7ae72862b542
legend.m: handle colormap also for non figure parent (bug #57303)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27740
diff
changeset
|
244 add_safe_listener (hl, hax, "colormap", ... |
27708
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
245 @(hax) set (hl, "colormap", get (hax, "colormap"))); |
27747
7ae72862b542
legend.m: handle colormap also for non figure parent (bug #57303)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27740
diff
changeset
|
246 add_safe_listener (hl, hax, "fontsize", ... |
27708
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
247 @(hax) set (hl, "fontsize", 0.9*get (hax, "fontsize"))); |
27747
7ae72862b542
legend.m: handle colormap also for non figure parent (bug #57303)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27740
diff
changeset
|
248 add_safe_listener (hl, hax, "children", {@legend_autoupdate_cb, hl}); |
27708
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
249 |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
250 ## Listeners to legend properties |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
251 props = {"fontsize", "fontweight", "fontname", "interpreter", ... |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
252 "textposition", "numcolumnsmode", "numcolumns", "orientation"}; |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
253 |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
254 for ii = 1:numel (props) |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
255 addlistener (hl, props{ii}, {@update_layout_cb, true}); |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
256 endfor |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
257 |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
258 addlistener (hl, "autoupdate", @update_numchild_cb); |
27710
9fd8534d3607
legend.m: Code cleanup for cset c66467f74278.
Rik <rik@octave.org>
parents:
27708
diff
changeset
|
259 |
27708
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
260 addlistener (hl, "beingdeleted", @delete_legend_cb); |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
261 |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
262 addlistener (hl, "box", @update_box_cb); |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
263 |
27718
39ac47fdcda2
legend.m: handle "edgecolor" passed at legend creation (bug #56968)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27717
diff
changeset
|
264 addlistener (hl, "edgecolor", @update_edgecolor_cb); |
27708
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
265 |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
266 addlistener (hl, "location", @update_location_cb); |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
267 |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
268 addlistener (hl, "position", @update_position_cb); |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
269 |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
270 addlistener (hl, "string", @update_string_cb); |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
271 |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
272 addlistener (hl, "textcolor", ... |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
273 @(h) set (findobj (h, "type", "text"), ... |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
274 "color", get (hl, "textcolor"))); |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
275 |
27740
3d5f00d4c847
legend.m: Restore original axes looseinset when the legend is hidden.
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27739
diff
changeset
|
276 addlistener (hl, "visible", @update_visible_cb); |
3d5f00d4c847
legend.m: Restore original axes looseinset when the legend is hidden.
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27739
diff
changeset
|
277 |
27708
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
278 else |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
279 |
27710
9fd8534d3607
legend.m: Code cleanup for cset c66467f74278.
Rik <rik@octave.org>
parents:
27708
diff
changeset
|
280 ## FIXME: This will trigger the execution of update_layout_cb for each |
9fd8534d3607
legend.m: Code cleanup for cset c66467f74278.
Rik <rik@octave.org>
parents:
27708
diff
changeset
|
281 ## watched property. Should we suspend its execution with yet another |
9fd8534d3607
legend.m: Code cleanup for cset c66467f74278.
Rik <rik@octave.org>
parents:
27708
diff
changeset
|
282 ## appdata bool property for performance? |
27708
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
283 |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
284 ## Update properties |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
285 setappdata (hl, "__peer_objects__", opts.obj_handles); |
27738
7fff532afcb1
legend.m: Fix handling of empty strings and displayname (bug #57271)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27723
diff
changeset
|
286 if (! isempty (opts.obj_labels)) |
7fff532afcb1
legend.m: Fix handling of empty strings and displayname (bug #57271)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27723
diff
changeset
|
287 set (hl ,"string", opts.obj_labels, pval{:}) |
7fff532afcb1
legend.m: Fix handling of empty strings and displayname (bug #57271)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27723
diff
changeset
|
288 elseif (! isempty (pval)) |
7fff532afcb1
legend.m: Fix handling of empty strings and displayname (bug #57271)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27723
diff
changeset
|
289 set (hl, pval{:}); |
7fff532afcb1
legend.m: Fix handling of empty strings and displayname (bug #57271)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27723
diff
changeset
|
290 endif |
27708
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
291 |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
292 endif |
24403
b9462090773a
legend.m: Setting DisplayName to "" should delete legend (bug #52641).
Rik <rik@octave.org>
parents:
24399
diff
changeset
|
293 |
10995
e81914f3921f
Update legend code to support fltk (fixes #29348 and partially fixes #30461)
David Bateman <dbateman@free.fr>
parents:
10990
diff
changeset
|
294 if (nargout > 0) |
27708
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
295 hleg = hl; |
27710
9fd8534d3607
legend.m: Code cleanup for cset c66467f74278.
Rik <rik@octave.org>
parents:
27708
diff
changeset
|
296 ## These ones are needed for backward compatibility |
27708
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
297 hleg_obj = get (hl, "children"); |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
298 hplot = getappdata (hl, "__peer_objects__"); |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
299 labels = get (hl, "string"); |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
300 endif |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
301 |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
302 set (hl, "handlevisibility", "on"); |
27710
9fd8534d3607
legend.m: Code cleanup for cset c66467f74278.
Rik <rik@octave.org>
parents:
27708
diff
changeset
|
303 |
27708
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
304 endfunction |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
305 |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
306 function update_box_cb (hl) |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
307 |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
308 if (strcmp (get (hl, "box"), "on")) |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
309 if (strcmp (get (hl, "color"), "none")) |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
310 set (hl, "color", "w"); |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
311 endif |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
312 else |
27710
9fd8534d3607
legend.m: Code cleanup for cset c66467f74278.
Rik <rik@octave.org>
parents:
27708
diff
changeset
|
313 set (hl, "color", "none"); |
10995
e81914f3921f
Update legend code to support fltk (fixes #29348 and partially fixes #30461)
David Bateman <dbateman@free.fr>
parents:
10990
diff
changeset
|
314 endif |
e81914f3921f
Update legend code to support fltk (fixes #29348 and partially fixes #30461)
David Bateman <dbateman@free.fr>
parents:
10990
diff
changeset
|
315 |
e81914f3921f
Update legend code to support fltk (fixes #29348 and partially fixes #30461)
David Bateman <dbateman@free.fr>
parents:
10990
diff
changeset
|
316 endfunction |
e81914f3921f
Update legend code to support fltk (fixes #29348 and partially fixes #30461)
David Bateman <dbateman@free.fr>
parents:
10990
diff
changeset
|
317 |
27708
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
318 function update_location_cb (hl, ~, do_layout = true) |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
319 |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
320 if (strcmp (get (hl, "location"), "best")) |
27710
9fd8534d3607
legend.m: Code cleanup for cset c66467f74278.
Rik <rik@octave.org>
parents:
27708
diff
changeset
|
321 warning ("Octave:legend:unimplemented-location", |
27708
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
322 ["legend: 'best' not yet implemented for location ", ... |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
323 "specifier, using 'northeast' instead\n"]); |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
324 endif |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
325 |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
326 if (do_layout) |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
327 update_layout_cb (hl); |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
328 endif |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
329 |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
330 endfunction |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
331 |
27718
39ac47fdcda2
legend.m: handle "edgecolor" passed at legend creation (bug #56968)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27717
diff
changeset
|
332 function update_edgecolor_cb (hl) |
39ac47fdcda2
legend.m: handle "edgecolor" passed at legend creation (bug #56968)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27717
diff
changeset
|
333 |
27719
88350aacd800
legend.m: Tweaks to cset 39ac47fdcda2.
Rik <rik@octave.org>
parents:
27718
diff
changeset
|
334 ecolor = get (hl, "edgecolor"); |
88350aacd800
legend.m: Tweaks to cset 39ac47fdcda2.
Rik <rik@octave.org>
parents:
27718
diff
changeset
|
335 set (hl, "xcolor", ecolor, "ycolor", ecolor); |
27718
39ac47fdcda2
legend.m: handle "edgecolor" passed at legend creation (bug #56968)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27717
diff
changeset
|
336 |
39ac47fdcda2
legend.m: handle "edgecolor" passed at legend creation (bug #56968)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27717
diff
changeset
|
337 endfunction |
39ac47fdcda2
legend.m: handle "edgecolor" passed at legend creation (bug #56968)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27717
diff
changeset
|
338 |
27708
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
339 function update_position_cb (hl) |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
340 |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
341 updating = getappdata (hl, "__updating_layout__"); |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
342 if (isempty (updating) || ! updating) |
27710
9fd8534d3607
legend.m: Code cleanup for cset c66467f74278.
Rik <rik@octave.org>
parents:
27708
diff
changeset
|
343 set (hl, "location", "none"); |
27708
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
344 endif |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
345 |
26832
ca40628fff39
legend.m: Update legend when target axes colormap changes (bug #54757).
Rik <rik@octave.org>
parents:
26815
diff
changeset
|
346 endfunction |
ca40628fff39
legend.m: Update legend when target axes colormap changes (bug #54757).
Rik <rik@octave.org>
parents:
26815
diff
changeset
|
347 |
27708
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
348 function update_string_cb (hl) |
16805
2281d957cde6
legend.m: Tweak code for Octave coding conventions.
Rik <rik@octave.org>
parents:
16800
diff
changeset
|
349 |
27710
9fd8534d3607
legend.m: Code cleanup for cset c66467f74278.
Rik <rik@octave.org>
parents:
27708
diff
changeset
|
350 ## Check that the number of legend item and the number of labels match |
9fd8534d3607
legend.m: Code cleanup for cset c66467f74278.
Rik <rik@octave.org>
parents:
27708
diff
changeset
|
351 ## before calling update_layout_cb. |
27708
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
352 persistent updating = false; |
27710
9fd8534d3607
legend.m: Code cleanup for cset c66467f74278.
Rik <rik@octave.org>
parents:
27708
diff
changeset
|
353 |
27708
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
354 if (! updating) |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
355 updating = true; |
12339
eda5eabd5d0b
Fix for inline legends (#32022, #32343)
David Bateman <dbateman@free.fr>
parents:
11587
diff
changeset
|
356 unwind_protect |
27708
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
357 str = get (hl, "string"); |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
358 nstr = numel (str); |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
359 |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
360 obj = getappdata (hl, "__peer_objects__"); |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
361 nobj = numel (obj); |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
362 |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
363 if (ischar (str) && nobj != 1) |
27710
9fd8534d3607
legend.m: Code cleanup for cset c66467f74278.
Rik <rik@octave.org>
parents:
27708
diff
changeset
|
364 setappdata (hl, "__peer_objects__", obj(1)); |
27708
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
365 elseif (iscellstr (str) && nobj != nstr) |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
366 if (nobj > nstr) |
27710
9fd8534d3607
legend.m: Code cleanup for cset c66467f74278.
Rik <rik@octave.org>
parents:
27708
diff
changeset
|
367 setappdata (hl, "__peer_objects__", obj(1:nstr)); |
27708
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
368 elseif (nobj == 1) |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
369 set (hl, "string", str{1}); |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
370 else |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
371 set (hl, "string", str(1:nobj)); |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
372 endif |
24434
436deae9f9ab
legend.m: Overhaul function for greater Matlab compatibility.
Rik <rik@octave.org>
parents:
24432
diff
changeset
|
373 endif |
27708
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
374 update_layout_cb (hl, [], true); |
12339
eda5eabd5d0b
Fix for inline legends (#32022, #32343)
David Bateman <dbateman@free.fr>
parents:
11587
diff
changeset
|
375 unwind_protect_cleanup |
27708
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
376 updating = false; |
12339
eda5eabd5d0b
Fix for inline legends (#32022, #32343)
David Bateman <dbateman@free.fr>
parents:
11587
diff
changeset
|
377 end_unwind_protect |
11198
9f080d23396f
Fix multi-parented legends with the gnuplot backend (fixes #30461 and #31522)
David Bateman <dbateman@free.fr>
parents:
11149
diff
changeset
|
378 endif |
16805
2281d957cde6
legend.m: Tweak code for Octave coding conventions.
Rik <rik@octave.org>
parents:
16800
diff
changeset
|
379 |
11198
9f080d23396f
Fix multi-parented legends with the gnuplot backend (fixes #30461 and #31522)
David Bateman <dbateman@free.fr>
parents:
11149
diff
changeset
|
380 endfunction |
9f080d23396f
Fix multi-parented legends with the gnuplot backend (fixes #30461 and #31522)
David Bateman <dbateman@free.fr>
parents:
11149
diff
changeset
|
381 |
27740
3d5f00d4c847
legend.m: Restore original axes looseinset when the legend is hidden.
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27739
diff
changeset
|
382 function update_visible_cb (hl) |
3d5f00d4c847
legend.m: Restore original axes looseinset when the legend is hidden.
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27739
diff
changeset
|
383 |
3d5f00d4c847
legend.m: Restore original axes looseinset when the legend is hidden.
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27739
diff
changeset
|
384 location = get (hl, "location"); |
3d5f00d4c847
legend.m: Restore original axes looseinset when the legend is hidden.
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27739
diff
changeset
|
385 if (strcmp (location(end:-1:end-3), "edis")) |
3d5f00d4c847
legend.m: Restore original axes looseinset when the legend is hidden.
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27739
diff
changeset
|
386 update_layout_cb (hl); |
3d5f00d4c847
legend.m: Restore original axes looseinset when the legend is hidden.
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27739
diff
changeset
|
387 endif |
3d5f00d4c847
legend.m: Restore original axes looseinset when the legend is hidden.
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27739
diff
changeset
|
388 |
3d5f00d4c847
legend.m: Restore original axes looseinset when the legend is hidden.
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27739
diff
changeset
|
389 endfunction |
3d5f00d4c847
legend.m: Restore original axes looseinset when the legend is hidden.
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27739
diff
changeset
|
390 |
27708
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
391 function reset_cb (ht, evt, hl, deletelegend = true) |
10995
e81914f3921f
Update legend code to support fltk (fixes #29348 and partially fixes #30461)
David Bateman <dbateman@free.fr>
parents:
10990
diff
changeset
|
392 |
27708
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
393 if (ishghandle (hl)) |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
394 listeners = getappdata (hl, "__listeners__"); |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
395 for ii = 1:numel (listeners) |
27840
27dd7da9e787
legend.m: stop warnings after "clear all; clf" (bug #57401)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27801
diff
changeset
|
396 if (ishghandle (listeners{ii}{1})) |
27dd7da9e787
legend.m: stop warnings after "clear all; clf" (bug #57401)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27801
diff
changeset
|
397 dellistener (listeners{ii}{:}); |
27dd7da9e787
legend.m: stop warnings after "clear all; clf" (bug #57401)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27801
diff
changeset
|
398 endif |
27708
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
399 endfor |
21758
ffad2baa90f7
maint: Use newlines to make code more readable.
Rik <rik@octave.org>
parents:
21751
diff
changeset
|
400 |
27708
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
401 if (deletelegend) |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
402 delete (hl); |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
403 endif |
24434
436deae9f9ab
legend.m: Overhaul function for greater Matlab compatibility.
Rik <rik@octave.org>
parents:
24432
diff
changeset
|
404 endif |
436deae9f9ab
legend.m: Overhaul function for greater Matlab compatibility.
Rik <rik@octave.org>
parents:
24432
diff
changeset
|
405 |
436deae9f9ab
legend.m: Overhaul function for greater Matlab compatibility.
Rik <rik@octave.org>
parents:
24432
diff
changeset
|
406 endfunction |
24498 | 407 |
27708
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
408 function delete_legend_cb (hl) |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
409 |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
410 reset_cb ([], [], hl, false); |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
411 |
27751
8ac3222bf951
legend.m: reset both plotyy axes data when legend is deleted (bug #57319)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27749
diff
changeset
|
412 hax = getappdata (hl, "__axes_handle__"); |
8ac3222bf951
legend.m: reset both plotyy axes data when legend is deleted (bug #57319)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27749
diff
changeset
|
413 for h = hax(:)' |
8ac3222bf951
legend.m: reset both plotyy axes data when legend is deleted (bug #57319)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27749
diff
changeset
|
414 units = get (h, "units"); |
8ac3222bf951
legend.m: reset both plotyy axes data when legend is deleted (bug #57319)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27749
diff
changeset
|
415 set (h, "units", getappdata (hl, "__original_units__"), ... |
8ac3222bf951
legend.m: reset both plotyy axes data when legend is deleted (bug #57319)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27749
diff
changeset
|
416 "looseinset", getappdata (hl, "__original_looseinset__"), ... |
8ac3222bf951
legend.m: reset both plotyy axes data when legend is deleted (bug #57319)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27749
diff
changeset
|
417 "units", units, "__legend_handle__", []); |
8ac3222bf951
legend.m: reset both plotyy axes data when legend is deleted (bug #57319)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27749
diff
changeset
|
418 endfor |
27708
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
419 |
10995
e81914f3921f
Update legend code to support fltk (fixes #29348 and partially fixes #30461)
David Bateman <dbateman@free.fr>
parents:
10990
diff
changeset
|
420 endfunction |
10989
6ea65c5de87a
Respect the units and paperunits figure properties and the units and fontunits axes properties
David Bateman <dbateman@free.fr>
parents:
10949
diff
changeset
|
421 |
27708
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
422 function add_safe_listener (hl, varargin) |
21758
ffad2baa90f7
maint: Use newlines to make code more readable.
Rik <rik@octave.org>
parents:
21751
diff
changeset
|
423 |
27708
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
424 addlistener (varargin{:}); |
24426
a51497205f4c
Change uses of gcbf after Matlab compatibility change in bug #52621.
Rik <rik@octave.org>
parents:
24423
diff
changeset
|
425 |
27708
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
426 lsn = getappdata (hl, "__listeners__"); |
27710
9fd8534d3607
legend.m: Code cleanup for cset c66467f74278.
Rik <rik@octave.org>
parents:
27708
diff
changeset
|
427 lsn = [lsn, {varargin}]; |
27708
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
428 setappdata (hl, "__listeners__", lsn); |
24498 | 429 |
11198
9f080d23396f
Fix multi-parented legends with the gnuplot backend (fixes #30461 and #31522)
David Bateman <dbateman@free.fr>
parents:
11149
diff
changeset
|
430 endfunction |
9f080d23396f
Fix multi-parented legends with the gnuplot backend (fixes #30461 and #31522)
David Bateman <dbateman@free.fr>
parents:
11149
diff
changeset
|
431 |
27708
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
432 function addproperties (hl) |
11198
9f080d23396f
Fix multi-parented legends with the gnuplot backend (fixes #30461 and #31522)
David Bateman <dbateman@free.fr>
parents:
11149
diff
changeset
|
433 |
27708
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
434 persistent default = {"north", "northoutside", ... |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
435 "south", "southoutside", ... |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
436 "east", "eastoutside", ... |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
437 "west", "westoutside", ... |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
438 "{northeast}", "northeastoutside", ... |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
439 "northwest", "northwestoutside", ... |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
440 "southeast", "southeastoutside", ... |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
441 "southwest", "southwestoutside", ... |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
442 "best", "bestoutside", ... |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
443 "none"}; |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
444 |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
445 addproperty ("location", hl, "radio", strjoin (default(:), "|")); |
24403
b9462090773a
legend.m: Setting DisplayName to "" should delete legend (bug #52641).
Rik <rik@octave.org>
parents:
24399
diff
changeset
|
446 |
27708
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
447 addproperty ("orientation", hl, "radio", "{vertical}|horizontal"); |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
448 |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
449 addproperty ("numcolumns", hl, "double", 1); |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
450 |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
451 addproperty ("numcolumnsmode", hl, "radio", "{auto}|manual"); |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
452 |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
453 addlistener (hl, "numcolumns", @(h) set (h, "numcolumnsmode", "manual")); |
17537
4f57d4de0383
legend.m: Implement correct listener for DisplayName on line objects.
Rik <rik@octave.org>
parents:
17536
diff
changeset
|
454 |
27708
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
455 addproperty ("autoupdate", hl, "radio", "{on}|off"); |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
456 |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
457 addproperty ("string", hl, "textstring", {}); |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
458 |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
459 addproperty ("interpreter", hl, "textinterpreter"); |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
460 |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
461 addproperty ("edgecolor", hl, "color", [.15 .15 .15]); |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
462 |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
463 addproperty ("textcolor", hl, "color", "k"); |
17537
4f57d4de0383
legend.m: Implement correct listener for DisplayName on line objects.
Rik <rik@octave.org>
parents:
17536
diff
changeset
|
464 |
27708
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
465 addproperty ("textposition", hl, "radio", "left|{right}"); |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
466 |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
467 addproperty ("itemhitfcn", hl, "axesbuttondownfcn"); |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
468 |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
469 endfunction |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
470 |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
471 function maybe_update_layout_cb (h, d, hl) |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
472 |
27721
6eb7491a8794
legend.m: fix max recursion error with fltk (bug #52752)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27719
diff
changeset
|
473 persistent updating = false; |
6eb7491a8794
legend.m: fix max recursion error with fltk (bug #52752)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27719
diff
changeset
|
474 |
6eb7491a8794
legend.m: fix max recursion error with fltk (bug #52752)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27719
diff
changeset
|
475 if (! updating) |
6eb7491a8794
legend.m: fix max recursion error with fltk (bug #52752)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27719
diff
changeset
|
476 |
6eb7491a8794
legend.m: fix max recursion error with fltk (bug #52752)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27719
diff
changeset
|
477 unwind_protect |
6eb7491a8794
legend.m: fix max recursion error with fltk (bug #52752)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27719
diff
changeset
|
478 updating = true; |
27792
d68ae60f1557
legend.m: don't track figure position (bug #57387)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27790
diff
changeset
|
479 units = get (h, "units"); |
d68ae60f1557
legend.m: don't track figure position (bug #57387)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27790
diff
changeset
|
480 set (h, "units", "points"); |
d68ae60f1557
legend.m: don't track figure position (bug #57387)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27790
diff
changeset
|
481 pos = get (h, "position"); |
d68ae60f1557
legend.m: don't track figure position (bug #57387)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27790
diff
changeset
|
482 set (h, "units", units); |
d68ae60f1557
legend.m: don't track figure position (bug #57387)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27790
diff
changeset
|
483 old_pos = getappdata (hl, "__peer_axes_position__"); |
27793
507d2e0fcb43
legend.m: Improve hggroup icons (bug #57388)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27792
diff
changeset
|
484 |
27792
d68ae60f1557
legend.m: don't track figure position (bug #57387)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27790
diff
changeset
|
485 if (! all (pos == old_pos)) |
d68ae60f1557
legend.m: don't track figure position (bug #57387)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27790
diff
changeset
|
486 update_layout_cb (hl); |
d68ae60f1557
legend.m: don't track figure position (bug #57387)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27790
diff
changeset
|
487 setappdata (hl, "__peer_axes_position__", pos); |
27721
6eb7491a8794
legend.m: fix max recursion error with fltk (bug #52752)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27719
diff
changeset
|
488 endif |
6eb7491a8794
legend.m: fix max recursion error with fltk (bug #52752)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27719
diff
changeset
|
489 unwind_protect_cleanup |
6eb7491a8794
legend.m: fix max recursion error with fltk (bug #52752)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27719
diff
changeset
|
490 updating = false; |
6eb7491a8794
legend.m: fix max recursion error with fltk (bug #52752)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27719
diff
changeset
|
491 end_unwind_protect |
6eb7491a8794
legend.m: fix max recursion error with fltk (bug #52752)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27719
diff
changeset
|
492 |
11198
9f080d23396f
Fix multi-parented legends with the gnuplot backend (fixes #30461 and #31522)
David Bateman <dbateman@free.fr>
parents:
11149
diff
changeset
|
493 endif |
21758
ffad2baa90f7
maint: Use newlines to make code more readable.
Rik <rik@octave.org>
parents:
21751
diff
changeset
|
494 |
11198
9f080d23396f
Fix multi-parented legends with the gnuplot backend (fixes #30461 and #31522)
David Bateman <dbateman@free.fr>
parents:
11149
diff
changeset
|
495 endfunction |
9f080d23396f
Fix multi-parented legends with the gnuplot backend (fixes #30461 and #31522)
David Bateman <dbateman@free.fr>
parents:
11149
diff
changeset
|
496 |
27708
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
497 function update_numchild_cb (hl) |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
498 |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
499 if (strcmp (get (hl, "autoupdate"), "on")) |
27710
9fd8534d3607
legend.m: Code cleanup for cset c66467f74278.
Rik <rik@octave.org>
parents:
27708
diff
changeset
|
500 |
27708
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
501 hax = getappdata (hl, "__axes_handle__"); |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
502 kids = get (hax, "children"); |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
503 if (iscell (kids)) |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
504 nkids = numel (cell2mat (get (hax, "children"))); |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
505 else |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
506 nkids = numel (get (hax, "children")); |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
507 endif |
27710
9fd8534d3607
legend.m: Code cleanup for cset c66467f74278.
Rik <rik@octave.org>
parents:
27708
diff
changeset
|
508 |
27708
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
509 setappdata (hl, "__total_num_children__", nkids); |
27710
9fd8534d3607
legend.m: Code cleanup for cset c66467f74278.
Rik <rik@octave.org>
parents:
27708
diff
changeset
|
510 |
27708
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
511 endif |
27710
9fd8534d3607
legend.m: Code cleanup for cset c66467f74278.
Rik <rik@octave.org>
parents:
27708
diff
changeset
|
512 |
27708
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
513 endfunction |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
514 |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
515 function legend_autoupdate_cb (hax, d, hl) |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
516 |
27710
9fd8534d3607
legend.m: Code cleanup for cset c66467f74278.
Rik <rik@octave.org>
parents:
27708
diff
changeset
|
517 ## Get all current children including eventual peer plotyy axes children |
27708
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
518 try |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
519 hax = get (hax, "__plotyy_axes__"); |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
520 kids = cell2mat (get (hax, "children")); |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
521 catch |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
522 kids = get (hax, "children"); |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
523 end_try_catch |
27710
9fd8534d3607
legend.m: Code cleanup for cset c66467f74278.
Rik <rik@octave.org>
parents:
27708
diff
changeset
|
524 |
27738
7fff532afcb1
legend.m: Fix handling of empty strings and displayname (bug #57271)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27723
diff
changeset
|
525 is_deletion = (getappdata (hl, "__total_num_children__") > numel (kids)); |
27708
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
526 setappdata (hl, "__total_num_children__", numel (kids)); |
27710
9fd8534d3607
legend.m: Code cleanup for cset c66467f74278.
Rik <rik@octave.org>
parents:
27708
diff
changeset
|
527 |
27708
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
528 ## Remove item for deleted object |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
529 current_obj = getappdata (hl, "__peer_objects__"); |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
530 [~, iold, inew] = setxor (current_obj, kids); |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
531 current_obj(iold) = []; |
27710
9fd8534d3607
legend.m: Code cleanup for cset c66467f74278.
Rik <rik@octave.org>
parents:
27708
diff
changeset
|
532 |
27708
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
533 if (isempty (current_obj)) |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
534 delete (hl); |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
535 return; |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
536 endif |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
537 |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
538 if (! is_deletion && strcmp (get (hl, "autoupdate"), "on")) |
27710
9fd8534d3607
legend.m: Code cleanup for cset c66467f74278.
Rik <rik@octave.org>
parents:
27708
diff
changeset
|
539 |
27738
7fff532afcb1
legend.m: Fix handling of empty strings and displayname (bug #57271)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27723
diff
changeset
|
540 ## We only expect 1 new child |
7fff532afcb1
legend.m: Fix handling of empty strings and displayname (bug #57271)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27723
diff
changeset
|
541 kids = kids(min (inew)); |
27708
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
542 |
27710
9fd8534d3607
legend.m: Code cleanup for cset c66467f74278.
Rik <rik@octave.org>
parents:
27708
diff
changeset
|
543 ## FIXME: if the latest child is an hggroup, we cannot label it since this |
9fd8534d3607
legend.m: Code cleanup for cset c66467f74278.
Rik <rik@octave.org>
parents:
27708
diff
changeset
|
544 ## function is called before the hggroup has been properly populated. |
27738
7fff532afcb1
legend.m: Fix handling of empty strings and displayname (bug #57271)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27723
diff
changeset
|
545 persistent valid_types = {"line", "patch", "surface"}; |
7fff532afcb1
legend.m: Fix handling of empty strings and displayname (bug #57271)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27723
diff
changeset
|
546 if (! any (strcmp (get (kids, "type"), valid_types))) |
27708
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
547 kids = []; |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
548 endif |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
549 |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
550 else |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
551 kids = []; |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
552 endif |
27710
9fd8534d3607
legend.m: Code cleanup for cset c66467f74278.
Rik <rik@octave.org>
parents:
27708
diff
changeset
|
553 |
27708
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
554 if (any (iold) || any (kids)) |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
555 setappdata (hl, "__peer_objects__", [current_obj; kids]); |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
556 set (hl, "string", displayname_or_default ([current_obj; kids], hl)); |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
557 endif |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
558 |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
559 endfunction |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
560 |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
561 function opts = parse_opts (varargin) |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
562 |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
563 action = ""; |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
564 legend_handle = []; |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
565 axes_handles = []; |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
566 obj_handles = []; |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
567 obj_labels = {}; |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
568 |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
569 nargs = numel (varargin); |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
570 |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
571 ## Find peer axes |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
572 if (nargs > 0 |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
573 && (! ishghandle (varargin{1}) |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
574 || (strcmp (get (varargin{1}, "type"), "axes") |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
575 && ! strcmp (get (varargin{1}, "tag"), "legend")))) |
27710
9fd8534d3607
legend.m: Code cleanup for cset c66467f74278.
Rik <rik@octave.org>
parents:
27708
diff
changeset
|
576 [axes_handles, varargin, nargs] = __plt_get_axis_arg__ ("legend", |
27708
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
577 varargin{:}); |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
578 if (isempty (axes_handles)) |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
579 axes_handles = gca (); |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
580 endif |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
581 else |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
582 axes_handles = gca (); |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
583 endif |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
584 |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
585 ## Special handling for plotyy which has two axes objects |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
586 if (isprop (axes_handles, "__plotyy_axes__")) |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
587 axes_handles = [axes_handles get(axes_handles, "__plotyy_axes__").']; |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
588 ## Remove duplicates while preserving order |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
589 [~, n] = unique (axes_handles, "first"); |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
590 axes_handles = axes_handles(sort (n)); |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
591 endif |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
592 |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
593 ## Find any existing legend object associated with axes |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
594 try |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
595 legend_handle = get (axes_handles, "__legend_handle__"); |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
596 if (iscell (legend_handle)) |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
597 legend_handle = unique (cell2mat (legend_handle)); |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
598 endif |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
599 catch |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
600 end_try_catch |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
601 |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
602 ## Legend actions |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
603 actions = {"show", "hide", "toggle", "boxon", ... |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
604 "boxoff", "right", "left", "off"}; |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
605 if (nargs > 0 && ischar (varargin{1}) |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
606 && any (strcmp (varargin{1}, actions))) |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
607 action = varargin{1}; |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
608 if (nargs > 1) |
27710
9fd8534d3607
legend.m: Code cleanup for cset c66467f74278.
Rik <rik@octave.org>
parents:
27708
diff
changeset
|
609 warning ("Octave:legend:ignoring-extra-argument", |
9fd8534d3607
legend.m: Code cleanup for cset c66467f74278.
Rik <rik@octave.org>
parents:
27708
diff
changeset
|
610 'legend: ignoring extra arguments after "%s"', action); |
27708
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
611 endif |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
612 nargs = 0; |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
613 endif |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
614 |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
615 ## Now remove property-value pairs for compatibility. |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
616 propval = {}; |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
617 warn_propval = ""; |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
618 persistent legend_props = {"location", "orientation", "numcolumns", ... |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
619 "numcolumnsmode", "textposition", ... |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
620 "position", "units", "autoupdate", ... |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
621 "string", "title", "interpreter", ... |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
622 "fontname", "fontsize", "fontweight", ... |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
623 "fontangle", "textcolor", "color", ... |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
624 "edgecolor", "box", "linewidth", ... |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
625 "visible", "uicontextmenu", "selected", ... |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
626 "selectionhighlight", "itemhitfcn", ... |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
627 "buttondownfcn", "createfcn", "deletefcn" ... |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
628 "interruptible", "busyaction", ... |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
629 "pickableparts", "hittest", ... |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
630 "beingdeleted", "parent", "children", ... |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
631 "handlevisibility", "tag", "type", ... |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
632 "userdata"}; |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
633 isprp = @(prop) (ischar (prop) && any (strcmpi (legend_props, prop))); |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
634 idx = find (cellfun (isprp, varargin)); |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
635 if (! isempty (idx)) |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
636 idx = idx(1); |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
637 propval = varargin(idx:end); |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
638 warn_propval = varargin{idx}; |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
639 varargin(idx:end) = []; |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
640 nargs = idx-1; |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
641 endif |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
642 |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
643 ## List plot objects that can be handled |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
644 warn_extra_obj = false; |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
645 persistent valid_types = {"line", "patch", "surface", "hggroup"}; |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
646 |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
647 if (nargs > 0 && all (ishghandle (varargin{1}))) |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
648 |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
649 ## List of plot objects to label given as first argument |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
650 obj_handles = varargin{1}; |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
651 types = get (obj_handles, "type"); |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
652 if (! iscell (types)) |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
653 types = {types}; |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
654 endif |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
655 |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
656 idx = cellfun (@(s) any (strcmp (s, valid_types)), types); |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
657 if (! all (idx)) |
27710
9fd8534d3607
legend.m: Code cleanup for cset c66467f74278.
Rik <rik@octave.org>
parents:
27708
diff
changeset
|
658 error ("Octave:legend:bad-object", |
9fd8534d3607
legend.m: Code cleanup for cset c66467f74278.
Rik <rik@octave.org>
parents:
27708
diff
changeset
|
659 "legend: objects of type \"%s\" can't be labeled", |
27708
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
660 types(! idx){1}); |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
661 endif |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
662 varargin(1) = []; |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
663 nargs--; |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
664 warn_extra_obj = true; |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
665 |
27739
f18f85ec4b96
legend.m: New labels on existing legend to redefine labeled objects.
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27738
diff
changeset
|
666 elseif (nargs > 0 || isempty (legend_handle)) |
27708
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
667 |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
668 ## Find list of plot objects from axes "children" |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
669 if (isscalar (axes_handles)) |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
670 obj_handles = flipud (get (axes_handles, "children")(:)); |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
671 else |
27713
e297d20e2d4f
legend.m: fix regression with plotyy item order (bug #50497)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27711
diff
changeset
|
672 tmp = get (axes_handles(:), "children"); |
e297d20e2d4f
legend.m: fix regression with plotyy item order (bug #50497)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27711
diff
changeset
|
673 obj_handles = [flipud(tmp{1}); flipud(tmp{2})]; |
27708
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
674 endif |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
675 |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
676 if (isempty (obj_handles)) |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
677 error ("Octave:legend:no-object", "legend: no valid object to label"); |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
678 endif |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
679 |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
680 idx = arrayfun (@(h) any (strcmp (get (h, "type"), valid_types)), ... |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
681 obj_handles); |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
682 obj_handles(! idx) = []; |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
683 |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
684 if (isempty (obj_handles)) |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
685 error ("Octave:legend:no-object", "legend: no valid object to label"); |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
686 endif |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
687 |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
688 else |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
689 obj_handles = getappdata (legend_handle, "__peer_objects__"); |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
690 endif |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
691 |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
692 nobj = numel (obj_handles); |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
693 |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
694 ## List labels |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
695 next_idx = 1; |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
696 if (nargs > 0) |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
697 |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
698 if (iscellstr (varargin{1})) |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
699 obj_labels = varargin{1}; |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
700 varargin(1) = []; |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
701 nargs--; |
27722
62a57f086bf9
legend.m: fix argument parsing when empty string present (bug #52641)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27721
diff
changeset
|
702 elseif (ischar (varargin{1}) && rows (varargin{1}) > 1) |
27708
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
703 obj_labels = cellstr (varargin{1}); |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
704 varargin(1) = []; |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
705 nargs--; |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
706 elseif (all (cellfun (@ischar, varargin))) |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
707 obj_labels = varargin; |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
708 varargin = {}; |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
709 nargs = 0; |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
710 endif |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
711 |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
712 if (nargs > 0) |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
713 print_usage ("legend"); |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
714 endif |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
715 |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
716 nlab = numel (obj_labels); |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
717 if (nlab != nobj) |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
718 if (nobj > nlab) |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
719 obj_handles = obj_handles(1:nlab); |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
720 |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
721 msg = "legend: ignoring extra objects."; |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
722 if (! isempty (warn_propval)) |
27710
9fd8534d3607
legend.m: Code cleanup for cset c66467f74278.
Rik <rik@octave.org>
parents:
27708
diff
changeset
|
723 msg = [msg ' "' warn_propval '" interpreted as a property ' , ... |
27708
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
724 "name. Use a cell array of strings to specify labels ", ... |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
725 "that match a legend property name."]; |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
726 endif |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
727 if (warn_extra_obj) |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
728 warning ("Octave:legend:object-label-mismatch", msg); |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
729 endif |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
730 else |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
731 obj_labels = obj_labels(1:nobj); |
27710
9fd8534d3607
legend.m: Code cleanup for cset c66467f74278.
Rik <rik@octave.org>
parents:
27708
diff
changeset
|
732 warning ("Octave:legend:object-label-mismatch", |
27708
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
733 "legend: ignoring extra labels."); |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
734 endif |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
735 endif |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
736 else |
27738
7fff532afcb1
legend.m: Fix handling of empty strings and displayname (bug #57271)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27723
diff
changeset
|
737 [tmp_labels, next_idx] = displayname_or_default (obj_handles, |
7fff532afcb1
legend.m: Fix handling of empty strings and displayname (bug #57271)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27723
diff
changeset
|
738 legend_handle); |
7fff532afcb1
legend.m: Fix handling of empty strings and displayname (bug #57271)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27723
diff
changeset
|
739 if (isempty (legend_handle) |
7fff532afcb1
legend.m: Fix handling of empty strings and displayname (bug #57271)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27723
diff
changeset
|
740 || ! isequal (tmp_labels, get (legend_handle, "string"))) |
7fff532afcb1
legend.m: Fix handling of empty strings and displayname (bug #57271)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27723
diff
changeset
|
741 obj_labels = tmp_labels; |
7fff532afcb1
legend.m: Fix handling of empty strings and displayname (bug #57271)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27723
diff
changeset
|
742 endif |
27740
3d5f00d4c847
legend.m: Restore original axes looseinset when the legend is hidden.
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27739
diff
changeset
|
743 |
27708
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
744 endif |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
745 |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
746 opts.action = action; |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
747 opts.axes_handles = axes_handles; |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
748 opts.obj_handles = obj_handles; |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
749 opts.obj_labels = obj_labels; |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
750 opts.legend_handle = legend_handle; |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
751 opts.propval = propval; |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
752 opts.next_idx = next_idx; |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
753 |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
754 endfunction |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
755 |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
756 function [labels, next_idx] = displayname_or_default (hplots, hl = []) |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
757 |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
758 next_idx = 1; |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
759 if (! isempty (hl)) |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
760 next_idx = getappdata (hl, "__next_label_index__"); |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
761 endif |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
762 |
27738
7fff532afcb1
legend.m: Fix handling of empty strings and displayname (bug #57271)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27723
diff
changeset
|
763 ## Use the displayname property |
27708
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
764 labels = get (hplots, "displayname"); |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
765 if (! iscell (labels)) |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
766 labels = {labels}; |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
767 endif |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
768 |
27738
7fff532afcb1
legend.m: Fix handling of empty strings and displayname (bug #57271)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27723
diff
changeset
|
769 ## Fallback to automatic names for empty labels |
7fff532afcb1
legend.m: Fix handling of empty strings and displayname (bug #57271)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27723
diff
changeset
|
770 empty_label_idx = cellfun (@isempty, labels); |
7fff532afcb1
legend.m: Fix handling of empty strings and displayname (bug #57271)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27723
diff
changeset
|
771 |
7fff532afcb1
legend.m: Fix handling of empty strings and displayname (bug #57271)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27723
diff
changeset
|
772 if (any (empty_label_idx) && ! isempty (hl)) |
7fff532afcb1
legend.m: Fix handling of empty strings and displayname (bug #57271)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27723
diff
changeset
|
773 ## Empty strings must not be blindly replaced by data%d. If there exist |
27790
0157c4d4792e
legend.m: Handle builtin hggroup-based objects (bug #57260)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27755
diff
changeset
|
774 ## an old text object that was affected an empty string, keep it as is. |
27738
7fff532afcb1
legend.m: Fix handling of empty strings and displayname (bug #57271)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27723
diff
changeset
|
775 kids = get (hl, "children"); |
7fff532afcb1
legend.m: Fix handling of empty strings and displayname (bug #57271)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27723
diff
changeset
|
776 htext = kids(strcmp (get (kids, "type"), "text")); |
7fff532afcb1
legend.m: Fix handling of empty strings and displayname (bug #57271)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27723
diff
changeset
|
777 old_objects = get (htext, "peer_object"); |
7fff532afcb1
legend.m: Fix handling of empty strings and displayname (bug #57271)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27723
diff
changeset
|
778 if (iscell (old_objects)) |
7fff532afcb1
legend.m: Fix handling of empty strings and displayname (bug #57271)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27723
diff
changeset
|
779 old_objects = cell2mat (old_objects); |
7fff532afcb1
legend.m: Fix handling of empty strings and displayname (bug #57271)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27723
diff
changeset
|
780 endif |
7fff532afcb1
legend.m: Fix handling of empty strings and displayname (bug #57271)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27723
diff
changeset
|
781 |
7fff532afcb1
legend.m: Fix handling of empty strings and displayname (bug #57271)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27723
diff
changeset
|
782 for h = hplots(empty_label_idx).' |
7fff532afcb1
legend.m: Fix handling of empty strings and displayname (bug #57271)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27723
diff
changeset
|
783 idx = (h == old_objects); |
7fff532afcb1
legend.m: Fix handling of empty strings and displayname (bug #57271)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27723
diff
changeset
|
784 if (any (idx)) |
7fff532afcb1
legend.m: Fix handling of empty strings and displayname (bug #57271)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27723
diff
changeset
|
785 labels(hplots == h) = get (htext(idx), "string"); |
7fff532afcb1
legend.m: Fix handling of empty strings and displayname (bug #57271)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27723
diff
changeset
|
786 empty_label_idx(hplots == h) = false; |
7fff532afcb1
legend.m: Fix handling of empty strings and displayname (bug #57271)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27723
diff
changeset
|
787 endif |
7fff532afcb1
legend.m: Fix handling of empty strings and displayname (bug #57271)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27723
diff
changeset
|
788 endfor |
7fff532afcb1
legend.m: Fix handling of empty strings and displayname (bug #57271)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27723
diff
changeset
|
789 |
27708
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
790 endif |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
791 |
27738
7fff532afcb1
legend.m: Fix handling of empty strings and displayname (bug #57271)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27723
diff
changeset
|
792 if (any (empty_label_idx)) |
7fff532afcb1
legend.m: Fix handling of empty strings and displayname (bug #57271)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27723
diff
changeset
|
793 default = arrayfun (@(ii) sprintf ("data%d", ii), ... |
7fff532afcb1
legend.m: Fix handling of empty strings and displayname (bug #57271)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27723
diff
changeset
|
794 [next_idx:(next_idx + sum (empty_label_idx) - 1)], ... |
7fff532afcb1
legend.m: Fix handling of empty strings and displayname (bug #57271)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27723
diff
changeset
|
795 "uniformoutput", false)(:); |
7fff532afcb1
legend.m: Fix handling of empty strings and displayname (bug #57271)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27723
diff
changeset
|
796 labels(empty_label_idx) = default; |
7fff532afcb1
legend.m: Fix handling of empty strings and displayname (bug #57271)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27723
diff
changeset
|
797 endif |
7fff532afcb1
legend.m: Fix handling of empty strings and displayname (bug #57271)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27723
diff
changeset
|
798 |
7fff532afcb1
legend.m: Fix handling of empty strings and displayname (bug #57271)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27723
diff
changeset
|
799 next_idx += sum (empty_label_idx); |
27708
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
800 |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
801 if (! isempty (hl)) |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
802 setappdata (hl, "__next_label_index__", next_idx); |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
803 endif |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
804 |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
805 endfunction |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
806 |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
807 function update_layout_cb (hl, ~, update_item = false) |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
808 updating = getappdata (hl, "__updating_layout__"); |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
809 if (! isempty (updating) && updating) |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
810 return; |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
811 endif |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
812 |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
813 setappdata(hl, "__updating_layout__", true); |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
814 |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
815 ## Scale limits so that item positions are expressed in points, from |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
816 ## top to bottom and from left to right or reverse depending on textposition |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
817 units = get (hl, "units"); |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
818 set (hl, "units", "points"); |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
819 |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
820 unwind_protect |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
821 |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
822 if (update_item) |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
823 pos = get (hl, "position")(3:4); |
27710
9fd8534d3607
legend.m: Code cleanup for cset c66467f74278.
Rik <rik@octave.org>
parents:
27708
diff
changeset
|
824 set (hl, "xlim", [0, pos(1)], "ylim", [0, pos(2)]); |
27708
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
825 |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
826 textright = strcmp (get (hl, "textposition"), "right"); |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
827 set (hl, "ydir", "reverse", ... |
27710
9fd8534d3607
legend.m: Code cleanup for cset c66467f74278.
Rik <rik@octave.org>
parents:
27708
diff
changeset
|
828 "xdir", ifelse (textright, "normal", "reverse")); |
27708
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
829 |
27790
0157c4d4792e
legend.m: Handle builtin hggroup-based objects (bug #57260)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27755
diff
changeset
|
830 ## Create or reuse text and icon graphics objects |
0157c4d4792e
legend.m: Handle builtin hggroup-based objects (bug #57260)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27755
diff
changeset
|
831 objlist = texticon_objects (hl, textright); |
27708
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
832 nitem = rows (objlist); |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
833 |
27790
0157c4d4792e
legend.m: Handle builtin hggroup-based objects (bug #57260)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27755
diff
changeset
|
834 ## Prepare the array of text/icon pairs and update their position |
0157c4d4792e
legend.m: Handle builtin hggroup-based objects (bug #57260)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27755
diff
changeset
|
835 sz = update_texticon_position (hl, objlist); |
27708
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
836 else |
27710
9fd8534d3607
legend.m: Code cleanup for cset c66467f74278.
Rik <rik@octave.org>
parents:
27708
diff
changeset
|
837 sz = [diff(get (hl, "xlim")), diff(get (hl, "ylim"))]; |
27708
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
838 endif |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
839 |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
840 ## Place the legend |
27710
9fd8534d3607
legend.m: Code cleanup for cset c66467f74278.
Rik <rik@octave.org>
parents:
27708
diff
changeset
|
841 update_legend_position (hl, sz); |
9fd8534d3607
legend.m: Code cleanup for cset c66467f74278.
Rik <rik@octave.org>
parents:
27708
diff
changeset
|
842 |
27708
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
843 unwind_protect_cleanup |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
844 set (hl, "units", units); |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
845 setappdata(hl, "__updating_layout__", false); |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
846 end_unwind_protect |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
847 |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
848 endfunction |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
849 |
27790
0157c4d4792e
legend.m: Handle builtin hggroup-based objects (bug #57260)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27755
diff
changeset
|
850 function objlist = texticon_objects (hl, textright) |
27708
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
851 |
27790
0157c4d4792e
legend.m: Handle builtin hggroup-based objects (bug #57260)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27755
diff
changeset
|
852 ## Delete or set invisible obsolete or unused text/icon objects. |
27708
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
853 old_kids = get (hl, "children")(:).'; |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
854 old_peer_objects = cell2mat (get (old_kids, "peer_object"))(:).'; |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
855 unused = ! ishghandle (old_peer_objects); |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
856 delete (old_kids(unused)); |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
857 old_kids(unused) = []; |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
858 old_peer_objects(unused) = []; |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
859 |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
860 new_peer_objects = getappdata (hl, "__peer_objects__")(:).'; |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
861 |
27710
9fd8534d3607
legend.m: Code cleanup for cset c66467f74278.
Rik <rik@octave.org>
parents:
27708
diff
changeset
|
862 unused = arrayfun (@(h) ! any (h == new_peer_objects), old_peer_objects); |
27708
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
863 set (old_kids(unused), "visible", "off"); |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
864 |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
865 ## Text properties |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
866 string = get (hl , "string"); |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
867 if (! iscell (string)) |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
868 string = {string}; |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
869 endif |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
870 |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
871 txtprops = {"textcolor", "fontsize", "fontweight", "fontname", ... |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
872 "interpreter"}; |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
873 txtvals = get (hl, txtprops); |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
874 txtprops{1} = "color"; |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
875 txtprops = [txtprops, "horizontalalignment"]; |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
876 txtvals = [txtvals, ifelse(textright, "left", "right")]; |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
877 |
27790
0157c4d4792e
legend.m: Handle builtin hggroup-based objects (bug #57260)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27755
diff
changeset
|
878 ## Create or reuse text/icon objects as needed |
27708
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
879 nitem = numel (new_peer_objects); |
27710
9fd8534d3607
legend.m: Code cleanup for cset c66467f74278.
Rik <rik@octave.org>
parents:
27708
diff
changeset
|
880 objlist = NaN (nitem, 2); |
27708
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
881 |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
882 for ii = 1:nitem |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
883 |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
884 str = string{ii}; |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
885 hplt = new_peer_objects(ii); |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
886 |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
887 idx = (old_peer_objects == hplt); |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
888 |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
889 if (any (idx)) |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
890 tmp = old_kids(idx); |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
891 idx = strcmp (get (tmp, "type"), "text"); |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
892 |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
893 htxt = tmp(idx); |
27790
0157c4d4792e
legend.m: Handle builtin hggroup-based objects (bug #57260)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27755
diff
changeset
|
894 hicon = tmp(! idx); |
27708
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
895 |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
896 set (htxt, "visible", "on", "string", str, ... |
27710
9fd8534d3607
legend.m: Code cleanup for cset c66467f74278.
Rik <rik@octave.org>
parents:
27708
diff
changeset
|
897 [txtprops(:)'; txtvals(:)']{:}); |
27790
0157c4d4792e
legend.m: Handle builtin hggroup-based objects (bug #57260)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27755
diff
changeset
|
898 set (hicon, "visible", "on"); |
27708
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
899 |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
900 else |
27790
0157c4d4792e
legend.m: Handle builtin hggroup-based objects (bug #57260)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27755
diff
changeset
|
901 [htxt, hicon] = create_item (hl, str, [txtprops(:)'; txtvals(:)'], hplt); |
27755
b70da79e4ed9
legend.m: Fix storage of listeners for displayname property
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27754
diff
changeset
|
902 add_safe_listener (hl, hplt, "displayname", {@update_displayname_cb, hl}); |
27708
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
903 endif |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
904 |
27790
0157c4d4792e
legend.m: Handle builtin hggroup-based objects (bug #57260)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27755
diff
changeset
|
905 set (hplt, "displayname", str); |
0157c4d4792e
legend.m: Handle builtin hggroup-based objects (bug #57260)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27755
diff
changeset
|
906 |
0157c4d4792e
legend.m: Handle builtin hggroup-based objects (bug #57260)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27755
diff
changeset
|
907 objlist(ii,:) = [htxt, hicon]; |
27708
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
908 endfor |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
909 |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
910 endfunction |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
911 |
27790
0157c4d4792e
legend.m: Handle builtin hggroup-based objects (bug #57260)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27755
diff
changeset
|
912 function [htxt, hicon] = create_item (hl, str, txtpval, hplt) |
0157c4d4792e
legend.m: Handle builtin hggroup-based objects (bug #57260)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27755
diff
changeset
|
913 |
0157c4d4792e
legend.m: Handle builtin hggroup-based objects (bug #57260)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27755
diff
changeset
|
914 typ = get (hplt, "type"); |
0157c4d4792e
legend.m: Handle builtin hggroup-based objects (bug #57260)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27755
diff
changeset
|
915 |
0157c4d4792e
legend.m: Handle builtin hggroup-based objects (bug #57260)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27755
diff
changeset
|
916 ## For unknown hggroups use the first child that can be labeled |
0157c4d4792e
legend.m: Handle builtin hggroup-based objects (bug #57260)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27755
diff
changeset
|
917 persistent known_creators = {"__contour__", "__errplot__", "__quiver__", ... |
0157c4d4792e
legend.m: Handle builtin hggroup-based objects (bug #57260)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27755
diff
changeset
|
918 "__scatter__", "__stem__"}; |
0157c4d4792e
legend.m: Handle builtin hggroup-based objects (bug #57260)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27755
diff
changeset
|
919 base_hplt = hplt; |
0157c4d4792e
legend.m: Handle builtin hggroup-based objects (bug #57260)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27755
diff
changeset
|
920 |
0157c4d4792e
legend.m: Handle builtin hggroup-based objects (bug #57260)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27755
diff
changeset
|
921 if (strcmp (typ, "hggroup")) |
0157c4d4792e
legend.m: Handle builtin hggroup-based objects (bug #57260)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27755
diff
changeset
|
922 creator = getappdata (hplt, "__creator__"); |
0157c4d4792e
legend.m: Handle builtin hggroup-based objects (bug #57260)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27755
diff
changeset
|
923 kids = get (hplt, "children"); |
0157c4d4792e
legend.m: Handle builtin hggroup-based objects (bug #57260)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27755
diff
changeset
|
924 if (any (strcmp (known_creators, creator))) |
0157c4d4792e
legend.m: Handle builtin hggroup-based objects (bug #57260)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27755
diff
changeset
|
925 typ = creator; |
0157c4d4792e
legend.m: Handle builtin hggroup-based objects (bug #57260)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27755
diff
changeset
|
926 switch (creator) |
0157c4d4792e
legend.m: Handle builtin hggroup-based objects (bug #57260)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27755
diff
changeset
|
927 case "__contour__" |
27793
507d2e0fcb43
legend.m: Improve hggroup icons (bug #57388)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27792
diff
changeset
|
928 hplt = [kids(end), kids(1)]; |
27790
0157c4d4792e
legend.m: Handle builtin hggroup-based objects (bug #57260)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27755
diff
changeset
|
929 case {"__errplot__", "__quiver__", "__stem__"} |
0157c4d4792e
legend.m: Handle builtin hggroup-based objects (bug #57260)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27755
diff
changeset
|
930 hplt = kids(2:-1:1); |
0157c4d4792e
legend.m: Handle builtin hggroup-based objects (bug #57260)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27755
diff
changeset
|
931 otherwise |
0157c4d4792e
legend.m: Handle builtin hggroup-based objects (bug #57260)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27755
diff
changeset
|
932 hplt = kids(1); |
0157c4d4792e
legend.m: Handle builtin hggroup-based objects (bug #57260)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27755
diff
changeset
|
933 endswitch |
0157c4d4792e
legend.m: Handle builtin hggroup-based objects (bug #57260)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27755
diff
changeset
|
934 else |
0157c4d4792e
legend.m: Handle builtin hggroup-based objects (bug #57260)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27755
diff
changeset
|
935 types = get (kids, "type"); |
0157c4d4792e
legend.m: Handle builtin hggroup-based objects (bug #57260)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27755
diff
changeset
|
936 if (! iscell (types)) |
0157c4d4792e
legend.m: Handle builtin hggroup-based objects (bug #57260)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27755
diff
changeset
|
937 types = {types}; |
0157c4d4792e
legend.m: Handle builtin hggroup-based objects (bug #57260)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27755
diff
changeset
|
938 endif |
0157c4d4792e
legend.m: Handle builtin hggroup-based objects (bug #57260)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27755
diff
changeset
|
939 |
0157c4d4792e
legend.m: Handle builtin hggroup-based objects (bug #57260)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27755
diff
changeset
|
940 idx = cellfun (@(s) any (strcmp (s, {"line", "patch", "surface"})), ... |
0157c4d4792e
legend.m: Handle builtin hggroup-based objects (bug #57260)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27755
diff
changeset
|
941 types); |
0157c4d4792e
legend.m: Handle builtin hggroup-based objects (bug #57260)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27755
diff
changeset
|
942 hplt = kids(idx)(1); |
0157c4d4792e
legend.m: Handle builtin hggroup-based objects (bug #57260)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27755
diff
changeset
|
943 typ = types(idx){1}; |
0157c4d4792e
legend.m: Handle builtin hggroup-based objects (bug #57260)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27755
diff
changeset
|
944 endif |
0157c4d4792e
legend.m: Handle builtin hggroup-based objects (bug #57260)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27755
diff
changeset
|
945 endif |
0157c4d4792e
legend.m: Handle builtin hggroup-based objects (bug #57260)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27755
diff
changeset
|
946 |
0157c4d4792e
legend.m: Handle builtin hggroup-based objects (bug #57260)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27755
diff
changeset
|
947 persistent lprops = {"color", "linestyle", "linewidth"}; |
0157c4d4792e
legend.m: Handle builtin hggroup-based objects (bug #57260)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27755
diff
changeset
|
948 persistent mprops = {"color", "marker", "markeredgecolor", ... |
0157c4d4792e
legend.m: Handle builtin hggroup-based objects (bug #57260)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27755
diff
changeset
|
949 "markerfacecolor", "markersize"}; |
0157c4d4792e
legend.m: Handle builtin hggroup-based objects (bug #57260)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27755
diff
changeset
|
950 persistent pprops = {"edgecolor", "facecolor", "cdata", ... |
0157c4d4792e
legend.m: Handle builtin hggroup-based objects (bug #57260)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27755
diff
changeset
|
951 "linestyle", "linewidth", ... |
0157c4d4792e
legend.m: Handle builtin hggroup-based objects (bug #57260)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27755
diff
changeset
|
952 "marker", "markeredgecolor", ... |
0157c4d4792e
legend.m: Handle builtin hggroup-based objects (bug #57260)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27755
diff
changeset
|
953 "markerfacecolor", "markersize"}; |
27793
507d2e0fcb43
legend.m: Improve hggroup icons (bug #57388)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27792
diff
changeset
|
954 |
27790
0157c4d4792e
legend.m: Handle builtin hggroup-based objects (bug #57260)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27755
diff
changeset
|
955 switch (typ) |
0157c4d4792e
legend.m: Handle builtin hggroup-based objects (bug #57260)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27755
diff
changeset
|
956 case {"line", "__errplot__", "__quiver__", "__stem__"} |
0157c4d4792e
legend.m: Handle builtin hggroup-based objects (bug #57260)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27755
diff
changeset
|
957 |
0157c4d4792e
legend.m: Handle builtin hggroup-based objects (bug #57260)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27755
diff
changeset
|
958 ## Main line |
0157c4d4792e
legend.m: Handle builtin hggroup-based objects (bug #57260)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27755
diff
changeset
|
959 vals = get (hplt(1), lprops); |
0157c4d4792e
legend.m: Handle builtin hggroup-based objects (bug #57260)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27755
diff
changeset
|
960 hicon = __go_line__ (hl, [lprops; vals]{:}); |
0157c4d4792e
legend.m: Handle builtin hggroup-based objects (bug #57260)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27755
diff
changeset
|
961 addproperty ("markerxdata", hicon, "double", 0); |
0157c4d4792e
legend.m: Handle builtin hggroup-based objects (bug #57260)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27755
diff
changeset
|
962 addproperty ("markerydata", hicon, "double", 0); |
0157c4d4792e
legend.m: Handle builtin hggroup-based objects (bug #57260)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27755
diff
changeset
|
963 |
0157c4d4792e
legend.m: Handle builtin hggroup-based objects (bug #57260)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27755
diff
changeset
|
964 ## Additional line for the marker |
0157c4d4792e
legend.m: Handle builtin hggroup-based objects (bug #57260)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27755
diff
changeset
|
965 vals = get (hplt(end), mprops); |
0157c4d4792e
legend.m: Handle builtin hggroup-based objects (bug #57260)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27755
diff
changeset
|
966 hmarker = __go_line__ (hl, "handlevisibility", "off", ... |
0157c4d4792e
legend.m: Handle builtin hggroup-based objects (bug #57260)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27755
diff
changeset
|
967 "xdata", 0, "ydata", 0, [mprops; vals]{:}); |
0157c4d4792e
legend.m: Handle builtin hggroup-based objects (bug #57260)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27755
diff
changeset
|
968 update_marker_cb (hmarker); |
0157c4d4792e
legend.m: Handle builtin hggroup-based objects (bug #57260)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27755
diff
changeset
|
969 |
27840
27dd7da9e787
legend.m: stop warnings after "clear all; clf" (bug #57401)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27801
diff
changeset
|
970 ## Listeners |
27dd7da9e787
legend.m: stop warnings after "clear all; clf" (bug #57401)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27801
diff
changeset
|
971 safe_property_link (hplt(1), hicon, lprops); |
27dd7da9e787
legend.m: stop warnings after "clear all; clf" (bug #57401)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27801
diff
changeset
|
972 safe_property_link (hplt(end), hmarker, mprops); |
27790
0157c4d4792e
legend.m: Handle builtin hggroup-based objects (bug #57260)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27755
diff
changeset
|
973 addlistener (hicon, "ydata", ... |
0157c4d4792e
legend.m: Handle builtin hggroup-based objects (bug #57260)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27755
diff
changeset
|
974 @(h) set (hmarker, "ydata", get (h, "markerydata"))); |
0157c4d4792e
legend.m: Handle builtin hggroup-based objects (bug #57260)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27755
diff
changeset
|
975 addlistener (hicon, "xdata", ... |
0157c4d4792e
legend.m: Handle builtin hggroup-based objects (bug #57260)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27755
diff
changeset
|
976 @(h) set (hmarker, "xdata", get (h, "markerxdata"))); |
0157c4d4792e
legend.m: Handle builtin hggroup-based objects (bug #57260)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27755
diff
changeset
|
977 addlistener (hmarker, "markersize", @update_marker_cb); |
0157c4d4792e
legend.m: Handle builtin hggroup-based objects (bug #57260)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27755
diff
changeset
|
978 add_safe_listener (hl, hplt(1), "beingdeleted", |
0157c4d4792e
legend.m: Handle builtin hggroup-based objects (bug #57260)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27755
diff
changeset
|
979 @() delete ([hicon hmarker])) |
27793
507d2e0fcb43
legend.m: Improve hggroup icons (bug #57388)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27792
diff
changeset
|
980 if (! strcmp (typ, "__errplot__")) |
507d2e0fcb43
legend.m: Improve hggroup icons (bug #57388)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27792
diff
changeset
|
981 setappdata (hicon, "__creator__", typ); |
507d2e0fcb43
legend.m: Improve hggroup icons (bug #57388)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27792
diff
changeset
|
982 else |
507d2e0fcb43
legend.m: Improve hggroup icons (bug #57388)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27792
diff
changeset
|
983 setappdata (hicon, "__creator__", typ, ... |
507d2e0fcb43
legend.m: Improve hggroup icons (bug #57388)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27792
diff
changeset
|
984 "__format__", get (base_hplt, "format")); |
507d2e0fcb43
legend.m: Improve hggroup icons (bug #57388)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27792
diff
changeset
|
985 endif |
27790
0157c4d4792e
legend.m: Handle builtin hggroup-based objects (bug #57260)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27755
diff
changeset
|
986 |
0157c4d4792e
legend.m: Handle builtin hggroup-based objects (bug #57260)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27755
diff
changeset
|
987 case {"patch", "surface", "__scatter__"} |
0157c4d4792e
legend.m: Handle builtin hggroup-based objects (bug #57260)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27755
diff
changeset
|
988 |
0157c4d4792e
legend.m: Handle builtin hggroup-based objects (bug #57260)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27755
diff
changeset
|
989 vals = get (hplt, pprops); |
0157c4d4792e
legend.m: Handle builtin hggroup-based objects (bug #57260)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27755
diff
changeset
|
990 |
0157c4d4792e
legend.m: Handle builtin hggroup-based objects (bug #57260)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27755
diff
changeset
|
991 hicon = __go_patch__ (hl, [pprops; vals]{:}); |
0157c4d4792e
legend.m: Handle builtin hggroup-based objects (bug #57260)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27755
diff
changeset
|
992 |
27840
27dd7da9e787
legend.m: stop warnings after "clear all; clf" (bug #57401)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27801
diff
changeset
|
993 ## Listeners |
27dd7da9e787
legend.m: stop warnings after "clear all; clf" (bug #57401)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27801
diff
changeset
|
994 safe_property_link (hplt(1), hicon, pprops); |
27dd7da9e787
legend.m: stop warnings after "clear all; clf" (bug #57401)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27801
diff
changeset
|
995 |
27793
507d2e0fcb43
legend.m: Improve hggroup icons (bug #57388)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27792
diff
changeset
|
996 setappdata (hicon, "__creator__", typ); |
27790
0157c4d4792e
legend.m: Handle builtin hggroup-based objects (bug #57260)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27755
diff
changeset
|
997 |
0157c4d4792e
legend.m: Handle builtin hggroup-based objects (bug #57260)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27755
diff
changeset
|
998 case "__contour__" |
0157c4d4792e
legend.m: Handle builtin hggroup-based objects (bug #57260)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27755
diff
changeset
|
999 |
0157c4d4792e
legend.m: Handle builtin hggroup-based objects (bug #57260)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27755
diff
changeset
|
1000 ## Main patch |
0157c4d4792e
legend.m: Handle builtin hggroup-based objects (bug #57260)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27755
diff
changeset
|
1001 |
0157c4d4792e
legend.m: Handle builtin hggroup-based objects (bug #57260)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27755
diff
changeset
|
1002 vals = get (hplt(1), pprops); |
0157c4d4792e
legend.m: Handle builtin hggroup-based objects (bug #57260)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27755
diff
changeset
|
1003 hicon = __go_patch__ (hl, [pprops; vals]{:}); |
0157c4d4792e
legend.m: Handle builtin hggroup-based objects (bug #57260)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27755
diff
changeset
|
1004 |
0157c4d4792e
legend.m: Handle builtin hggroup-based objects (bug #57260)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27755
diff
changeset
|
1005 addproperty ("innerxdata", hicon, "any", 0); |
0157c4d4792e
legend.m: Handle builtin hggroup-based objects (bug #57260)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27755
diff
changeset
|
1006 addproperty ("innerydata", hicon, "any", 0); |
0157c4d4792e
legend.m: Handle builtin hggroup-based objects (bug #57260)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27755
diff
changeset
|
1007 |
0157c4d4792e
legend.m: Handle builtin hggroup-based objects (bug #57260)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27755
diff
changeset
|
1008 ## Additional patch for the inner contour |
0157c4d4792e
legend.m: Handle builtin hggroup-based objects (bug #57260)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27755
diff
changeset
|
1009 vals = get (hplt(end), pprops); |
0157c4d4792e
legend.m: Handle builtin hggroup-based objects (bug #57260)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27755
diff
changeset
|
1010 htmp = __go_patch__ (hl, "handlevisibility", "off", ... |
0157c4d4792e
legend.m: Handle builtin hggroup-based objects (bug #57260)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27755
diff
changeset
|
1011 "xdata", 0, "ydata", 0, [pprops; vals]{:}); |
0157c4d4792e
legend.m: Handle builtin hggroup-based objects (bug #57260)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27755
diff
changeset
|
1012 |
27840
27dd7da9e787
legend.m: stop warnings after "clear all; clf" (bug #57401)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27801
diff
changeset
|
1013 ## Listeners |
27dd7da9e787
legend.m: stop warnings after "clear all; clf" (bug #57401)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27801
diff
changeset
|
1014 safe_property_link (hplt(1), hicon, pprops); |
27dd7da9e787
legend.m: stop warnings after "clear all; clf" (bug #57401)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27801
diff
changeset
|
1015 safe_property_link (hplt(end), htmp, pprops); |
27790
0157c4d4792e
legend.m: Handle builtin hggroup-based objects (bug #57260)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27755
diff
changeset
|
1016 addlistener (hicon, "ydata", ... |
0157c4d4792e
legend.m: Handle builtin hggroup-based objects (bug #57260)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27755
diff
changeset
|
1017 @(h) set (htmp, "ydata", get (h, "innerydata"))); |
0157c4d4792e
legend.m: Handle builtin hggroup-based objects (bug #57260)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27755
diff
changeset
|
1018 addlistener (hicon, "xdata", ... |
0157c4d4792e
legend.m: Handle builtin hggroup-based objects (bug #57260)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27755
diff
changeset
|
1019 @(h) set (htmp, "xdata", get (h, "innerxdata"))); |
0157c4d4792e
legend.m: Handle builtin hggroup-based objects (bug #57260)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27755
diff
changeset
|
1020 add_safe_listener (hl, hplt(1), "beingdeleted", |
0157c4d4792e
legend.m: Handle builtin hggroup-based objects (bug #57260)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27755
diff
changeset
|
1021 @() delete ([hicon htmp])) |
27840
27dd7da9e787
legend.m: stop warnings after "clear all; clf" (bug #57401)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27801
diff
changeset
|
1022 |
27793
507d2e0fcb43
legend.m: Improve hggroup icons (bug #57388)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27792
diff
changeset
|
1023 setappdata (hicon, "__creator__", typ); |
507d2e0fcb43
legend.m: Improve hggroup icons (bug #57388)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27792
diff
changeset
|
1024 |
27790
0157c4d4792e
legend.m: Handle builtin hggroup-based objects (bug #57260)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27755
diff
changeset
|
1025 endswitch |
0157c4d4792e
legend.m: Handle builtin hggroup-based objects (bug #57260)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27755
diff
changeset
|
1026 |
0157c4d4792e
legend.m: Handle builtin hggroup-based objects (bug #57260)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27755
diff
changeset
|
1027 htxt = __go_text__ (hl, "string", str, txtpval{:}); |
0157c4d4792e
legend.m: Handle builtin hggroup-based objects (bug #57260)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27755
diff
changeset
|
1028 |
0157c4d4792e
legend.m: Handle builtin hggroup-based objects (bug #57260)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27755
diff
changeset
|
1029 addproperty ("peer_object", htxt, "double", base_hplt); |
0157c4d4792e
legend.m: Handle builtin hggroup-based objects (bug #57260)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27755
diff
changeset
|
1030 addproperty ("peer_object", hicon, "double", base_hplt); |
0157c4d4792e
legend.m: Handle builtin hggroup-based objects (bug #57260)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27755
diff
changeset
|
1031 |
0157c4d4792e
legend.m: Handle builtin hggroup-based objects (bug #57260)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27755
diff
changeset
|
1032 endfunction |
0157c4d4792e
legend.m: Handle builtin hggroup-based objects (bug #57260)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27755
diff
changeset
|
1033 |
27840
27dd7da9e787
legend.m: stop warnings after "clear all; clf" (bug #57401)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27801
diff
changeset
|
1034 function safe_property_link (h1, h2, props) |
27dd7da9e787
legend.m: stop warnings after "clear all; clf" (bug #57401)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27801
diff
changeset
|
1035 for ii = 1:numel (props) |
27dd7da9e787
legend.m: stop warnings after "clear all; clf" (bug #57401)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27801
diff
changeset
|
1036 prop = props{ii}; |
27dd7da9e787
legend.m: stop warnings after "clear all; clf" (bug #57401)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27801
diff
changeset
|
1037 lsn = {h1, prop, @(h) set (h2, prop, get (h, prop))}; |
27dd7da9e787
legend.m: stop warnings after "clear all; clf" (bug #57401)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27801
diff
changeset
|
1038 addlistener (lsn{:}); |
27dd7da9e787
legend.m: stop warnings after "clear all; clf" (bug #57401)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27801
diff
changeset
|
1039 addlistener (h2, "beingdeleted", @() dellistener (lsn{:})); |
27dd7da9e787
legend.m: stop warnings after "clear all; clf" (bug #57401)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27801
diff
changeset
|
1040 endfor |
27dd7da9e787
legend.m: stop warnings after "clear all; clf" (bug #57401)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27801
diff
changeset
|
1041 endfunction |
27dd7da9e787
legend.m: stop warnings after "clear all; clf" (bug #57401)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27801
diff
changeset
|
1042 |
27738
7fff532afcb1
legend.m: Fix handling of empty strings and displayname (bug #57271)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27723
diff
changeset
|
1043 function update_displayname_cb (h, ~, hl) |
7fff532afcb1
legend.m: Fix handling of empty strings and displayname (bug #57271)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27723
diff
changeset
|
1044 |
7fff532afcb1
legend.m: Fix handling of empty strings and displayname (bug #57271)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27723
diff
changeset
|
1045 updating = getappdata (hl, "__updating_layout__"); |
7fff532afcb1
legend.m: Fix handling of empty strings and displayname (bug #57271)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27723
diff
changeset
|
1046 if (! isempty (updating) && updating) |
7fff532afcb1
legend.m: Fix handling of empty strings and displayname (bug #57271)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27723
diff
changeset
|
1047 return; |
7fff532afcb1
legend.m: Fix handling of empty strings and displayname (bug #57271)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27723
diff
changeset
|
1048 endif |
7fff532afcb1
legend.m: Fix handling of empty strings and displayname (bug #57271)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27723
diff
changeset
|
1049 |
7fff532afcb1
legend.m: Fix handling of empty strings and displayname (bug #57271)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27723
diff
changeset
|
1050 str = get (hl, "string"); |
7fff532afcb1
legend.m: Fix handling of empty strings and displayname (bug #57271)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27723
diff
changeset
|
1051 if (! iscell (str)) |
7fff532afcb1
legend.m: Fix handling of empty strings and displayname (bug #57271)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27723
diff
changeset
|
1052 str = {str}; |
7fff532afcb1
legend.m: Fix handling of empty strings and displayname (bug #57271)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27723
diff
changeset
|
1053 endif |
7fff532afcb1
legend.m: Fix handling of empty strings and displayname (bug #57271)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27723
diff
changeset
|
1054 |
7fff532afcb1
legend.m: Fix handling of empty strings and displayname (bug #57271)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27723
diff
changeset
|
1055 str{h == getappdata (hl, "__peer_objects__")} = get (h, "displayname"); |
7fff532afcb1
legend.m: Fix handling of empty strings and displayname (bug #57271)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27723
diff
changeset
|
1056 |
7fff532afcb1
legend.m: Fix handling of empty strings and displayname (bug #57271)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27723
diff
changeset
|
1057 set (hl ,"string", str); |
7fff532afcb1
legend.m: Fix handling of empty strings and displayname (bug #57271)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27723
diff
changeset
|
1058 |
7fff532afcb1
legend.m: Fix handling of empty strings and displayname (bug #57271)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27723
diff
changeset
|
1059 endfunction |
7fff532afcb1
legend.m: Fix handling of empty strings and displayname (bug #57271)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27723
diff
changeset
|
1060 |
27708
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
1061 function update_marker_cb (h) |
27710
9fd8534d3607
legend.m: Code cleanup for cset c66467f74278.
Rik <rik@octave.org>
parents:
27708
diff
changeset
|
1062 |
27790
0157c4d4792e
legend.m: Handle builtin hggroup-based objects (bug #57260)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27755
diff
changeset
|
1063 if (get (h, "markersize") > 3) |
0157c4d4792e
legend.m: Handle builtin hggroup-based objects (bug #57260)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27755
diff
changeset
|
1064 set (h, "markersize", 3); |
27708
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
1065 endif |
27710
9fd8534d3607
legend.m: Code cleanup for cset c66467f74278.
Rik <rik@octave.org>
parents:
27708
diff
changeset
|
1066 |
27708
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
1067 endfunction |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
1068 |
27790
0157c4d4792e
legend.m: Handle builtin hggroup-based objects (bug #57260)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27755
diff
changeset
|
1069 function sz = update_texticon_position (hl, objlist) |
27708
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
1070 |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
1071 ## margins in points |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
1072 persistent hmargin = 3; |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
1073 persistent vmargin = 3; |
27790
0157c4d4792e
legend.m: Handle builtin hggroup-based objects (bug #57260)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27755
diff
changeset
|
1074 persistent icon_width = 15; |
27749
b3ad1b9417c0
legend.m: Make icon height depend on the fontsize (bug #57269)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27747
diff
changeset
|
1075 |
b3ad1b9417c0
legend.m: Make icon height depend on the fontsize (bug #57269)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27747
diff
changeset
|
1076 units = get (hl, "fontunits"); |
b3ad1b9417c0
legend.m: Make icon height depend on the fontsize (bug #57269)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27747
diff
changeset
|
1077 set (hl, "fontunits", "points"); |
27790
0157c4d4792e
legend.m: Handle builtin hggroup-based objects (bug #57260)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27755
diff
changeset
|
1078 icon_height = 0.7 * get (hl, "fontsize"); |
27749
b3ad1b9417c0
legend.m: Make icon height depend on the fontsize (bug #57269)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27747
diff
changeset
|
1079 set (hl, "fontunits", units); |
27708
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
1080 |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
1081 ext = get (objlist(:,1), "extent"); |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
1082 markers = get (objlist(:,2), "marker"); |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
1083 markersz = get (objlist(:,2), "markersize"); |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
1084 types = get (objlist(:,2), "type"); |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
1085 |
27790
0157c4d4792e
legend.m: Handle builtin hggroup-based objects (bug #57260)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27755
diff
changeset
|
1086 ## Simple case of 1 text/icon pair |
27708
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
1087 nitem = rows (objlist); |
27790
0157c4d4792e
legend.m: Handle builtin hggroup-based objects (bug #57260)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27755
diff
changeset
|
1088 txticon = zeros (nitem, 4); |
27708
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
1089 if (nitem == 1) |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
1090 ext = abs (ext(:,3:4)); |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
1091 types = {types}; |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
1092 markers = {markers}; |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
1093 markersz = {markersz}; |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
1094 else |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
1095 ext = abs (cell2mat (ext)(:,3:4)); |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
1096 endif |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
1097 |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
1098 autolayout = strcmp (get (hl, "numcolumnsmode"), "auto"); |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
1099 xmax = ymax = 0; |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
1100 iter = 1; |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
1101 |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
1102 if (strcmp (get (hl, "orientation"), "vertical")) |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
1103 |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
1104 if (autolayout) |
27843
48c77d47ea81
legend.m: Simplify automatic column number computation (bug #57418)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27840
diff
changeset
|
1105 ncol = 1; |
27708
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
1106 else |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
1107 ncol = min (nitem, get (hl, "numcolumns")); |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
1108 endif |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
1109 |
27843
48c77d47ea81
legend.m: Simplify automatic column number computation (bug #57418)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27840
diff
changeset
|
1110 nrow = ceil (nitem / ncol); |
48c77d47ea81
legend.m: Simplify automatic column number computation (bug #57418)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27840
diff
changeset
|
1111 |
27790
0157c4d4792e
legend.m: Handle builtin hggroup-based objects (bug #57260)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27755
diff
changeset
|
1112 rowheights = arrayfun (@(idx) max([icon_height; ext(idx:nrow:end, 2)]), ... |
27723
a0143104b224
legend.m: fix icon height for patch and surface objects (bug #57269)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27722
diff
changeset
|
1113 1:nrow); |
27708
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
1114 x = hmargin; |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
1115 for ii = 1:ncol |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
1116 y = vmargin; |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
1117 for jj = 1:nrow |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
1118 if (iter > nitem) |
27710
9fd8534d3607
legend.m: Code cleanup for cset c66467f74278.
Rik <rik@octave.org>
parents:
27708
diff
changeset
|
1119 continue; |
27708
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
1120 endif |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
1121 |
27710
9fd8534d3607
legend.m: Code cleanup for cset c66467f74278.
Rik <rik@octave.org>
parents:
27708
diff
changeset
|
1122 hg = rowheights(jj); |
27708
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
1123 dx = 0; |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
1124 if (! strcmp (markers{iter}, "none")) |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
1125 dx = markersz{iter}/2; |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
1126 endif |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
1127 |
27790
0157c4d4792e
legend.m: Handle builtin hggroup-based objects (bug #57260)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27755
diff
changeset
|
1128 ybase = y + hg / 2; |
0157c4d4792e
legend.m: Handle builtin hggroup-based objects (bug #57260)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27755
diff
changeset
|
1129 y0 = y + hg/2 - icon_height/2 + dx; |
0157c4d4792e
legend.m: Handle builtin hggroup-based objects (bug #57260)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27755
diff
changeset
|
1130 y1 = y + hg/2 + icon_height/2 - dx; |
27708
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
1131 |
27790
0157c4d4792e
legend.m: Handle builtin hggroup-based objects (bug #57260)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27755
diff
changeset
|
1132 update_icon_position (objlist(iter,2), [x+dx, x+icon_width-dx], ... |
0157c4d4792e
legend.m: Handle builtin hggroup-based objects (bug #57260)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27755
diff
changeset
|
1133 [y0, y1]); |
27708
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
1134 |
27790
0157c4d4792e
legend.m: Handle builtin hggroup-based objects (bug #57260)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27755
diff
changeset
|
1135 set (objlist(iter,1), "position", [x+icon_width+hmargin, ybase, 0]); |
27708
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
1136 |
27790
0157c4d4792e
legend.m: Handle builtin hggroup-based objects (bug #57260)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27755
diff
changeset
|
1137 xmax = max ([xmax, x+icon_width+2*hmargin+ext(iter,1)]); |
27708
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
1138 y += (vmargin + hg); |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
1139 iter++; |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
1140 endfor |
27710
9fd8534d3607
legend.m: Code cleanup for cset c66467f74278.
Rik <rik@octave.org>
parents:
27708
diff
changeset
|
1141 ymax = max ([ymax, y]); |
27708
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
1142 x = xmax + 2*hmargin; |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
1143 endfor |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
1144 |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
1145 else |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
1146 |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
1147 if (autolayout) |
27843
48c77d47ea81
legend.m: Simplify automatic column number computation (bug #57418)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27840
diff
changeset
|
1148 ncol = nitem; |
27708
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
1149 else |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
1150 ncol = min (nitem, get (hl, "numcolumns")); |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
1151 endif |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
1152 |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
1153 nrow = ceil (nitem / ncol); |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
1154 |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
1155 colwidth = arrayfun (@(idx) max(ext(idx:ncol:end, 1)), |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
1156 1:ncol); |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
1157 y = vmargin; |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
1158 for ii = 1:nrow |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
1159 x = hmargin; |
27714
a984e6722601
legend.m: better vertical alignment for horizontal orientation (bug #57264)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27713
diff
changeset
|
1160 |
a984e6722601
legend.m: better vertical alignment for horizontal orientation (bug #57264)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27713
diff
changeset
|
1161 endidx = min (iter+ncol-1, nitem); |
27790
0157c4d4792e
legend.m: Handle builtin hggroup-based objects (bug #57260)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27755
diff
changeset
|
1162 hg = max ([icon_height; ext(iter:endidx,2)]); |
27714
a984e6722601
legend.m: better vertical alignment for horizontal orientation (bug #57264)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27713
diff
changeset
|
1163 |
27708
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
1164 for jj = 1:ncol |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
1165 if (iter > nitem) |
27710
9fd8534d3607
legend.m: Code cleanup for cset c66467f74278.
Rik <rik@octave.org>
parents:
27708
diff
changeset
|
1166 continue; |
27708
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
1167 endif |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
1168 |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
1169 wd = colwidth(jj); |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
1170 |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
1171 dx = 0; |
27714
a984e6722601
legend.m: better vertical alignment for horizontal orientation (bug #57264)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27713
diff
changeset
|
1172 if (! strcmp (markers{iter}, "none")) |
27708
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
1173 dx = markersz{iter}/2; |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
1174 endif |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
1175 |
27714
a984e6722601
legend.m: better vertical alignment for horizontal orientation (bug #57264)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27713
diff
changeset
|
1176 ybase = y + hg / 2; |
27790
0157c4d4792e
legend.m: Handle builtin hggroup-based objects (bug #57260)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27755
diff
changeset
|
1177 y0 = y + hg/2 - icon_height/2 + dx; |
0157c4d4792e
legend.m: Handle builtin hggroup-based objects (bug #57260)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27755
diff
changeset
|
1178 y1 = y + hg/2 + icon_height/2 - dx; |
27708
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
1179 |
27790
0157c4d4792e
legend.m: Handle builtin hggroup-based objects (bug #57260)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27755
diff
changeset
|
1180 update_icon_position (objlist(iter,2), [x+dx, x+icon_width-dx], ... |
0157c4d4792e
legend.m: Handle builtin hggroup-based objects (bug #57260)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27755
diff
changeset
|
1181 [y0, y1]); |
0157c4d4792e
legend.m: Handle builtin hggroup-based objects (bug #57260)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27755
diff
changeset
|
1182 |
0157c4d4792e
legend.m: Handle builtin hggroup-based objects (bug #57260)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27755
diff
changeset
|
1183 set (objlist(iter,1), "position", [x+icon_width+hmargin, ybase, 0]); |
27708
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
1184 |
27714
a984e6722601
legend.m: better vertical alignment for horizontal orientation (bug #57264)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27713
diff
changeset
|
1185 ymax = max ([ymax, ybase+hg/2+vmargin]); |
27790
0157c4d4792e
legend.m: Handle builtin hggroup-based objects (bug #57260)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27755
diff
changeset
|
1186 x += (3*hmargin + icon_width + wd); |
27708
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
1187 iter++; |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
1188 endfor |
27710
9fd8534d3607
legend.m: Code cleanup for cset c66467f74278.
Rik <rik@octave.org>
parents:
27708
diff
changeset
|
1189 xmax = max ([xmax, x-hmargin]); |
27708
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
1190 y = ymax + vmargin; |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
1191 endfor |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
1192 |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
1193 endif |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
1194 |
27710
9fd8534d3607
legend.m: Code cleanup for cset c66467f74278.
Rik <rik@octave.org>
parents:
27708
diff
changeset
|
1195 sz = [xmax, ymax]; |
27708
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
1196 |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
1197 endfunction |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
1198 |
27790
0157c4d4792e
legend.m: Handle builtin hggroup-based objects (bug #57260)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27755
diff
changeset
|
1199 function update_icon_position (hicon, xdata, ydata) |
0157c4d4792e
legend.m: Handle builtin hggroup-based objects (bug #57260)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27755
diff
changeset
|
1200 creator = getappdata (hicon, "__creator__"); |
0157c4d4792e
legend.m: Handle builtin hggroup-based objects (bug #57260)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27755
diff
changeset
|
1201 switch (creator) |
27793
507d2e0fcb43
legend.m: Improve hggroup icons (bug #57388)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27792
diff
changeset
|
1202 case "line" |
27790
0157c4d4792e
legend.m: Handle builtin hggroup-based objects (bug #57260)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27755
diff
changeset
|
1203 set (hicon, "markerxdata", mean (xdata), "markerydata", mean (ydata), ... |
0157c4d4792e
legend.m: Handle builtin hggroup-based objects (bug #57260)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27755
diff
changeset
|
1204 "xdata", xdata, "ydata", [mean(ydata), mean(ydata)]); |
0157c4d4792e
legend.m: Handle builtin hggroup-based objects (bug #57260)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27755
diff
changeset
|
1205 case {"patch", "surface"} |
0157c4d4792e
legend.m: Handle builtin hggroup-based objects (bug #57260)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27755
diff
changeset
|
1206 set (hicon, ... |
0157c4d4792e
legend.m: Handle builtin hggroup-based objects (bug #57260)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27755
diff
changeset
|
1207 "xdata", [xdata, fliplr(xdata)], ... |
0157c4d4792e
legend.m: Handle builtin hggroup-based objects (bug #57260)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27755
diff
changeset
|
1208 "ydata", [ydata; ydata](:).'); |
0157c4d4792e
legend.m: Handle builtin hggroup-based objects (bug #57260)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27755
diff
changeset
|
1209 case "__contour__" |
0157c4d4792e
legend.m: Handle builtin hggroup-based objects (bug #57260)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27755
diff
changeset
|
1210 ## Draw two patches |
0157c4d4792e
legend.m: Handle builtin hggroup-based objects (bug #57260)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27755
diff
changeset
|
1211 x0 = xdata(1); |
0157c4d4792e
legend.m: Handle builtin hggroup-based objects (bug #57260)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27755
diff
changeset
|
1212 x1 = xdata(2); |
0157c4d4792e
legend.m: Handle builtin hggroup-based objects (bug #57260)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27755
diff
changeset
|
1213 xm = mean (xdata); |
0157c4d4792e
legend.m: Handle builtin hggroup-based objects (bug #57260)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27755
diff
changeset
|
1214 y0 = ydata(1); |
0157c4d4792e
legend.m: Handle builtin hggroup-based objects (bug #57260)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27755
diff
changeset
|
1215 y1 = ydata(2); |
0157c4d4792e
legend.m: Handle builtin hggroup-based objects (bug #57260)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27755
diff
changeset
|
1216 ym = mean (ydata); |
0157c4d4792e
legend.m: Handle builtin hggroup-based objects (bug #57260)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27755
diff
changeset
|
1217 |
0157c4d4792e
legend.m: Handle builtin hggroup-based objects (bug #57260)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27755
diff
changeset
|
1218 xdata = [x0, x1, x1, x0]; |
0157c4d4792e
legend.m: Handle builtin hggroup-based objects (bug #57260)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27755
diff
changeset
|
1219 ydata = [y0, y0, y1, y1]; |
0157c4d4792e
legend.m: Handle builtin hggroup-based objects (bug #57260)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27755
diff
changeset
|
1220 set (hicon, ... |
0157c4d4792e
legend.m: Handle builtin hggroup-based objects (bug #57260)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27755
diff
changeset
|
1221 "innerxdata", (xdata-xm) * 0.6 + xm, ... |
27793
507d2e0fcb43
legend.m: Improve hggroup icons (bug #57388)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27792
diff
changeset
|
1222 "innerydata", (ydata-ym) * 0.4 + ym, ... |
27790
0157c4d4792e
legend.m: Handle builtin hggroup-based objects (bug #57260)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27755
diff
changeset
|
1223 "xdata", xdata, "ydata", ydata); |
0157c4d4792e
legend.m: Handle builtin hggroup-based objects (bug #57260)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27755
diff
changeset
|
1224 case "__errplot__" |
0157c4d4792e
legend.m: Handle builtin hggroup-based objects (bug #57260)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27755
diff
changeset
|
1225 x0 = xdata(1); |
0157c4d4792e
legend.m: Handle builtin hggroup-based objects (bug #57260)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27755
diff
changeset
|
1226 x1 = xdata(2); |
0157c4d4792e
legend.m: Handle builtin hggroup-based objects (bug #57260)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27755
diff
changeset
|
1227 xm = mean (xdata); |
0157c4d4792e
legend.m: Handle builtin hggroup-based objects (bug #57260)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27755
diff
changeset
|
1228 y0 = ydata(1); |
0157c4d4792e
legend.m: Handle builtin hggroup-based objects (bug #57260)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27755
diff
changeset
|
1229 y1 = ydata(2); |
0157c4d4792e
legend.m: Handle builtin hggroup-based objects (bug #57260)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27755
diff
changeset
|
1230 ym = mean (ydata); |
0157c4d4792e
legend.m: Handle builtin hggroup-based objects (bug #57260)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27755
diff
changeset
|
1231 |
27793
507d2e0fcb43
legend.m: Improve hggroup icons (bug #57388)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27792
diff
changeset
|
1232 fmt = getappdata (hicon, "__format__"); |
507d2e0fcb43
legend.m: Improve hggroup icons (bug #57388)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27792
diff
changeset
|
1233 if (strcmp (fmt, "yerr")) |
507d2e0fcb43
legend.m: Improve hggroup icons (bug #57388)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27792
diff
changeset
|
1234 xdata = [xm, xm, xm-2, xm+2, xm, xm, xm-2, xm+2]; |
507d2e0fcb43
legend.m: Improve hggroup icons (bug #57388)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27792
diff
changeset
|
1235 ydata = [ym, y0, y0, y0, y0, y1, y1, y1]; |
507d2e0fcb43
legend.m: Improve hggroup icons (bug #57388)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27792
diff
changeset
|
1236 elseif (strcmp (fmt, "xerr")) |
507d2e0fcb43
legend.m: Improve hggroup icons (bug #57388)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27792
diff
changeset
|
1237 xdata = [x0+2, x0+2, x0+2, x1-2, x1-2, x1-2, x1-2]; |
507d2e0fcb43
legend.m: Improve hggroup icons (bug #57388)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27792
diff
changeset
|
1238 ydata = [ym+2, ym-2, ym, ym, ym+2, ym-2, ym]; |
507d2e0fcb43
legend.m: Improve hggroup icons (bug #57388)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27792
diff
changeset
|
1239 else # "both" |
507d2e0fcb43
legend.m: Improve hggroup icons (bug #57388)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27792
diff
changeset
|
1240 xdata = [x0+2, x0+2, x0+2, x1-2, x1-2, x1-2, x1-2, ... |
507d2e0fcb43
legend.m: Improve hggroup icons (bug #57388)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27792
diff
changeset
|
1241 xm, xm, xm-2, xm+2, xm, xm, xm-2, xm+2]; |
507d2e0fcb43
legend.m: Improve hggroup icons (bug #57388)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27792
diff
changeset
|
1242 ydata = [ym+2, ym-2, ym, ym, ym+2, ym-2, ym, ... |
507d2e0fcb43
legend.m: Improve hggroup icons (bug #57388)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27792
diff
changeset
|
1243 ym, y0, y0, y0, y0, y1, y1, y1]; |
507d2e0fcb43
legend.m: Improve hggroup icons (bug #57388)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27792
diff
changeset
|
1244 endif |
27790
0157c4d4792e
legend.m: Handle builtin hggroup-based objects (bug #57260)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27755
diff
changeset
|
1245 set (hicon, "markerxdata", xm, "markerydata", ym, ... |
0157c4d4792e
legend.m: Handle builtin hggroup-based objects (bug #57260)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27755
diff
changeset
|
1246 "xdata", xdata, "ydata", ydata); |
27793
507d2e0fcb43
legend.m: Improve hggroup icons (bug #57388)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27792
diff
changeset
|
1247 |
27790
0157c4d4792e
legend.m: Handle builtin hggroup-based objects (bug #57260)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27755
diff
changeset
|
1248 case "__quiver__" |
0157c4d4792e
legend.m: Handle builtin hggroup-based objects (bug #57260)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27755
diff
changeset
|
1249 ## Draw an arrow |
0157c4d4792e
legend.m: Handle builtin hggroup-based objects (bug #57260)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27755
diff
changeset
|
1250 x0 = xdata(1); |
0157c4d4792e
legend.m: Handle builtin hggroup-based objects (bug #57260)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27755
diff
changeset
|
1251 x1 = xdata(2); |
0157c4d4792e
legend.m: Handle builtin hggroup-based objects (bug #57260)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27755
diff
changeset
|
1252 y0 = mean (ydata); |
0157c4d4792e
legend.m: Handle builtin hggroup-based objects (bug #57260)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27755
diff
changeset
|
1253 xdata = [x0, x1, x1-2, x1, x1-2]; |
0157c4d4792e
legend.m: Handle builtin hggroup-based objects (bug #57260)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27755
diff
changeset
|
1254 ydata = [y0, y0, y0+2, y0, y0-2]; |
0157c4d4792e
legend.m: Handle builtin hggroup-based objects (bug #57260)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27755
diff
changeset
|
1255 set (hicon, "markerxdata", x0, "markerydata", y0, ... |
0157c4d4792e
legend.m: Handle builtin hggroup-based objects (bug #57260)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27755
diff
changeset
|
1256 "xdata", xdata, "ydata", ydata); |
0157c4d4792e
legend.m: Handle builtin hggroup-based objects (bug #57260)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27755
diff
changeset
|
1257 case "__scatter__" |
0157c4d4792e
legend.m: Handle builtin hggroup-based objects (bug #57260)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27755
diff
changeset
|
1258 set (hicon, "xdata", mean(xdata), "ydata", mean(ydata)); |
27793
507d2e0fcb43
legend.m: Improve hggroup icons (bug #57388)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27792
diff
changeset
|
1259 case "__stem__" |
507d2e0fcb43
legend.m: Improve hggroup icons (bug #57388)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27792
diff
changeset
|
1260 xdata(2) -= (get (get (hicon, "peer_object"), "markersize") / 2); |
507d2e0fcb43
legend.m: Improve hggroup icons (bug #57388)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27792
diff
changeset
|
1261 set (hicon, "markerxdata", xdata(2), "markerydata", mean (ydata), ... |
507d2e0fcb43
legend.m: Improve hggroup icons (bug #57388)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27792
diff
changeset
|
1262 "xdata", xdata, "ydata", [mean(ydata), mean(ydata)]); |
27790
0157c4d4792e
legend.m: Handle builtin hggroup-based objects (bug #57260)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27755
diff
changeset
|
1263 endswitch |
0157c4d4792e
legend.m: Handle builtin hggroup-based objects (bug #57260)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27755
diff
changeset
|
1264 endfunction |
0157c4d4792e
legend.m: Handle builtin hggroup-based objects (bug #57260)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27755
diff
changeset
|
1265 |
27708
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
1266 function update_legend_position (hl, sz) |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
1267 |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
1268 persistent hmargin = 6; |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
1269 persistent vmargin = 6; |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
1270 |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
1271 location = get (hl, "location"); |
27710
9fd8534d3607
legend.m: Code cleanup for cset c66467f74278.
Rik <rik@octave.org>
parents:
27708
diff
changeset
|
1272 outside = strcmp (location(end-3:end), "side"); |
27708
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
1273 if (outside) |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
1274 location = location(1:end-7); |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
1275 endif |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
1276 |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
1277 if (strcmp (location, "best")) |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
1278 orientation = get (hl, "orientation"); |
27710
9fd8534d3607
legend.m: Code cleanup for cset c66467f74278.
Rik <rik@octave.org>
parents:
27708
diff
changeset
|
1279 if (outside) |
9fd8534d3607
legend.m: Code cleanup for cset c66467f74278.
Rik <rik@octave.org>
parents:
27708
diff
changeset
|
1280 if (strcmp (orientation, "vertical")) |
9fd8534d3607
legend.m: Code cleanup for cset c66467f74278.
Rik <rik@octave.org>
parents:
27708
diff
changeset
|
1281 location = "northeast"; |
9fd8534d3607
legend.m: Code cleanup for cset c66467f74278.
Rik <rik@octave.org>
parents:
27708
diff
changeset
|
1282 else |
9fd8534d3607
legend.m: Code cleanup for cset c66467f74278.
Rik <rik@octave.org>
parents:
27708
diff
changeset
|
1283 location = "south"; |
9fd8534d3607
legend.m: Code cleanup for cset c66467f74278.
Rik <rik@octave.org>
parents:
27708
diff
changeset
|
1284 endif |
27708
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
1285 else |
27710
9fd8534d3607
legend.m: Code cleanup for cset c66467f74278.
Rik <rik@octave.org>
parents:
27708
diff
changeset
|
1286 ## FIXME: implement "best" inside properly |
27708
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
1287 location = "northeast"; |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
1288 endif |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
1289 endif |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
1290 |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
1291 haxes = getappdata (hl, "__axes_handle__"); |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
1292 hax = haxes(end); |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
1293 units = get (hax, "units"); |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
1294 |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
1295 unwind_protect |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
1296 ## Restore the original looseinset first and set units to points. |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
1297 li = getappdata (hl, "__original_looseinset__"); |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
1298 if (isempty (li)) |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
1299 li = get (hax, "looseinset"); |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
1300 setappdata (hl, "__original_looseinset__", li); |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
1301 setappdata (hl, "__original_units__", units); |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
1302 endif |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
1303 |
27740
3d5f00d4c847
legend.m: Restore original axes looseinset when the legend is hidden.
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27739
diff
changeset
|
1304 if (strcmp (get (hl, "visible"), "on")) |
3d5f00d4c847
legend.m: Restore original axes looseinset when the legend is hidden.
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27739
diff
changeset
|
1305 set (hax, "units", getappdata (hl, "__original_units__"), |
3d5f00d4c847
legend.m: Restore original axes looseinset when the legend is hidden.
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27739
diff
changeset
|
1306 "looseinset", li, |
3d5f00d4c847
legend.m: Restore original axes looseinset when the legend is hidden.
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27739
diff
changeset
|
1307 "units", "points"); |
3d5f00d4c847
legend.m: Restore original axes looseinset when the legend is hidden.
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27739
diff
changeset
|
1308 else |
3d5f00d4c847
legend.m: Restore original axes looseinset when the legend is hidden.
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27739
diff
changeset
|
1309 ## Return early for invible legends |
3d5f00d4c847
legend.m: Restore original axes looseinset when the legend is hidden.
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27739
diff
changeset
|
1310 set (hax, "units", getappdata (hl, "__original_units__"), |
3d5f00d4c847
legend.m: Restore original axes looseinset when the legend is hidden.
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27739
diff
changeset
|
1311 "looseinset", li, |
3d5f00d4c847
legend.m: Restore original axes looseinset when the legend is hidden.
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27739
diff
changeset
|
1312 "units", units); |
3d5f00d4c847
legend.m: Restore original axes looseinset when the legend is hidden.
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27739
diff
changeset
|
1313 return; |
3d5f00d4c847
legend.m: Restore original axes looseinset when the legend is hidden.
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27739
diff
changeset
|
1314 endif |
27708
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
1315 |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
1316 [li, axpos] = get (hax, {"looseinset", "position"}){:}; |
27710
9fd8534d3607
legend.m: Code cleanup for cset c66467f74278.
Rik <rik@octave.org>
parents:
27708
diff
changeset
|
1317 lpos = [get(hl, "position")(1:2), sz]; |
27708
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
1318 |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
1319 if (! outside) |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
1320 |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
1321 switch (location) |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
1322 case "southwest" |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
1323 lpos(1) = axpos(1) + hmargin; |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
1324 lpos(2) = axpos(2) + vmargin; |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
1325 case "west" |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
1326 lpos(1) = axpos(1) + hmargin; |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
1327 lpos(2) = axpos(2) + axpos(4)/2 - lpos(4)/2; |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
1328 case "northwest" |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
1329 lpos(1) = axpos(1) + hmargin; |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
1330 lpos(2) = axpos(2) + axpos(4) - lpos(4) - vmargin; |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
1331 case "north" |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
1332 lpos(1) = axpos(1) + axpos(3)/2 - lpos(3)/2; |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
1333 lpos(2) = axpos(2) + axpos(4) - lpos(4) - vmargin; |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
1334 case "northeast" |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
1335 lpos(1) = axpos(1) + axpos(3) - lpos(3) - hmargin; |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
1336 lpos(2) = axpos(2) + axpos(4) - lpos(4) - vmargin; |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
1337 case "east" |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
1338 lpos(1) = axpos(1) + axpos(3) - lpos(3) - hmargin; |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
1339 lpos(2) = axpos(2) + axpos(4)/2 - lpos(4)/2; |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
1340 case "southeast" |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
1341 lpos(1) = axpos(1) + axpos(3) - lpos(3) - hmargin; |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
1342 lpos(2) = axpos(2) + vmargin; |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
1343 case "south" |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
1344 lpos(1) = axpos(1) + axpos(3)/2 - lpos(3)/2; |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
1345 lpos(2) = axpos(2) + vmargin; |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
1346 endswitch |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
1347 |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
1348 else |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
1349 |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
1350 ti = get (haxes, "tightinset"); |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
1351 if (iscell (ti)) |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
1352 ti = max (cell2mat (ti)); |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
1353 endif |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
1354 |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
1355 switch (location) |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
1356 case "southwest" |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
1357 dx = lpos(3) + hmargin + ti(1); |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
1358 if (axpos(1) < (dx + hmargin)) |
27711
63a03d2a20e6
legend.m: don't set too large looseinset for outside legends (bug #50094)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27710
diff
changeset
|
1359 li(1) = min (dx + hmargin, 0.95 * (axpos(1) + axpos(3))); |
27708
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
1360 set (hax, "looseinset", li); |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
1361 axpos = get (hax, "position"); |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
1362 endif |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
1363 lpos(1) = axpos(1) - dx; |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
1364 lpos(2) = axpos(2); |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
1365 case "west" |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
1366 dx = lpos(3) + hmargin + ti(1); |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
1367 if (axpos(1) < (dx + hmargin)) |
27711
63a03d2a20e6
legend.m: don't set too large looseinset for outside legends (bug #50094)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27710
diff
changeset
|
1368 li(1) = min (dx + hmargin, 0.95 * (axpos(1) + axpos(3))); |
27708
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
1369 set (hax, "looseinset", li); |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
1370 axpos = get (hax, "position"); |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
1371 endif |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
1372 lpos(1) = axpos(1) - dx; |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
1373 lpos(2) = axpos(2) + axpos(4)/2 - lpos(4)/2; |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
1374 case "northwest" |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
1375 dx = lpos(3) + hmargin + ti(1); |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
1376 if (axpos(1) < (dx + hmargin)) |
27711
63a03d2a20e6
legend.m: don't set too large looseinset for outside legends (bug #50094)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27710
diff
changeset
|
1377 li(1) = min (dx + hmargin, 0.95 * (axpos(1) + axpos(3))); |
27708
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
1378 set (hax, "looseinset", li); |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
1379 axpos = get (hax, "position"); |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
1380 endif |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
1381 lpos(1) = axpos(1) - dx; |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
1382 lpos(2) = axpos(2) + axpos(4) - lpos(4); |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
1383 case "north" |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
1384 dy = lpos(4) + vmargin + ti(4); |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
1385 if (li(4) < (dy + vmargin)) |
27711
63a03d2a20e6
legend.m: don't set too large looseinset for outside legends (bug #50094)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27710
diff
changeset
|
1386 li(4) = min (dy + vmargin, axpos(4)); |
27708
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
1387 set (hax, "looseinset", li); |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
1388 axpos = get (hax, "position"); |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
1389 endif |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
1390 lpos(1) = axpos(1) + axpos(3)/2 - lpos(3)/2; |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
1391 lpos(2) = axpos(2) + axpos(4) + vmargin + ti(4); |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
1392 case "northeast" |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
1393 dx = lpos(3) + hmargin + ti(3); |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
1394 if (li(3) < (dx + hmargin)) |
27711
63a03d2a20e6
legend.m: don't set too large looseinset for outside legends (bug #50094)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27710
diff
changeset
|
1395 li(3) = min (dx + hmargin, axpos(3)); |
27708
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
1396 set (hax, "looseinset", li); |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
1397 axpos = get (hax, "position"); |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
1398 endif |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
1399 lpos(1) = axpos(1) + axpos(3) + hmargin + ti(3); |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
1400 lpos(2) = axpos(2) + axpos(4) - lpos(4); |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
1401 case "east" |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
1402 dx = lpos(3) + hmargin + ti(3); |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
1403 if (li(3) < (dx + hmargin)) |
27711
63a03d2a20e6
legend.m: don't set too large looseinset for outside legends (bug #50094)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27710
diff
changeset
|
1404 li(3) = min (dx + hmargin, axpos(3)); |
27708
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
1405 set (hax, "looseinset", li); |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
1406 axpos = get (hax, "position"); |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
1407 endif |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
1408 lpos(1) = axpos(1) + axpos(3) + hmargin + ti(3); |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
1409 lpos(2) = axpos(2) + axpos(4)/2 - lpos(4)/2; |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
1410 case "southeast" |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
1411 dx = lpos(3) + hmargin + ti(3); |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
1412 if (li(3) < (dx + hmargin)) |
27711
63a03d2a20e6
legend.m: don't set too large looseinset for outside legends (bug #50094)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27710
diff
changeset
|
1413 li(3) = min (dx + hmargin, axpos(3)); |
27708
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
1414 set (hax, "looseinset", li); |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
1415 axpos = get (hax, "position"); |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
1416 endif |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
1417 lpos(1) = axpos(1) + axpos(3) + hmargin + ti(3); |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
1418 lpos(2) = axpos(2); |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
1419 case "south" |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
1420 dy = lpos(4) + vmargin + ti(2); |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
1421 if (li(2) < (dy + vmargin)) |
27711
63a03d2a20e6
legend.m: don't set too large looseinset for outside legends (bug #50094)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27710
diff
changeset
|
1422 li(2) = min (dy + vmargin, 0.95 * (axpos(2) + axpos(4))); |
27708
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
1423 set (hax, "looseinset", li); |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
1424 axpos = get (hax, "position"); |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
1425 endif |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
1426 lpos(1) = axpos(1) + axpos(3)/2 - lpos(3)/2; |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
1427 lpos(2) = axpos(2) - lpos(4) - vmargin - ti(2); |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
1428 endswitch |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
1429 endif |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
1430 |
27710
9fd8534d3607
legend.m: Code cleanup for cset c66467f74278.
Rik <rik@octave.org>
parents:
27708
diff
changeset
|
1431 set (hl, "xlim", [0, sz(1)], "ylim", [0, sz(2)], ... |
27708
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
1432 "position", lpos); |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
1433 |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
1434 setappdata (hl, "__peer_axes_position__", axpos); |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
1435 |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
1436 unwind_protect_cleanup |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
1437 set (hax, "units", units); |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
1438 end_unwind_protect |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
1439 |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
1440 endfunction |
16805
2281d957cde6
legend.m: Tweak code for Octave coding conventions.
Rik <rik@octave.org>
parents:
16800
diff
changeset
|
1441 |
27710
9fd8534d3607
legend.m: Code cleanup for cset c66467f74278.
Rik <rik@octave.org>
parents:
27708
diff
changeset
|
1442 |
11418
a140991387fb
legend.m: Add demo to legend for inline key.
Ben Abbott <bpabbott@mac.com>
parents:
11363
diff
changeset
|
1443 %!demo |
16805
2281d957cde6
legend.m: Tweak code for Octave coding conventions.
Rik <rik@octave.org>
parents:
16800
diff
changeset
|
1444 %! clf; |
15442
015cc3d1f389
legend.m: Overhaul function and add support for automatic data labels.
Rik <rik@octave.org>
parents:
15441
diff
changeset
|
1445 %! plot (rand (2)); |
24434
436deae9f9ab
legend.m: Overhaul function for greater Matlab compatibility.
Rik <rik@octave.org>
parents:
24432
diff
changeset
|
1446 %! title ("legend called with string inputs for labels"); |
436deae9f9ab
legend.m: Overhaul function for greater Matlab compatibility.
Rik <rik@octave.org>
parents:
24432
diff
changeset
|
1447 %! h = legend ("foo", "bar"); |
27708
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
1448 %! set (h, "fontsize", 20, "location", "northeastoutside"); |
11462
aed2c50c3082
legend.m: legend with more than two inline keys (bug 31991). Add/modifyy demos.
Ben Abbott <bpabbott@mac.com>
parents:
11434
diff
changeset
|
1449 |
aed2c50c3082
legend.m: legend with more than two inline keys (bug 31991). Add/modifyy demos.
Ben Abbott <bpabbott@mac.com>
parents:
11434
diff
changeset
|
1450 %!demo |
16805
2281d957cde6
legend.m: Tweak code for Octave coding conventions.
Rik <rik@octave.org>
parents:
16800
diff
changeset
|
1451 %! clf; |
24434
436deae9f9ab
legend.m: Overhaul function for greater Matlab compatibility.
Rik <rik@octave.org>
parents:
24432
diff
changeset
|
1452 %! plot (rand (2)); |
436deae9f9ab
legend.m: Overhaul function for greater Matlab compatibility.
Rik <rik@octave.org>
parents:
24432
diff
changeset
|
1453 %! title ("legend called with cell array of strings"); |
436deae9f9ab
legend.m: Overhaul function for greater Matlab compatibility.
Rik <rik@octave.org>
parents:
24432
diff
changeset
|
1454 %! h = legend ({"cellfoo", "cellbar"}); |
27708
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
1455 %! set (h, "fontsize", 20, "location", "northeast"); |
24434
436deae9f9ab
legend.m: Overhaul function for greater Matlab compatibility.
Rik <rik@octave.org>
parents:
24432
diff
changeset
|
1456 |
436deae9f9ab
legend.m: Overhaul function for greater Matlab compatibility.
Rik <rik@octave.org>
parents:
24432
diff
changeset
|
1457 %!demo |
436deae9f9ab
legend.m: Overhaul function for greater Matlab compatibility.
Rik <rik@octave.org>
parents:
24432
diff
changeset
|
1458 %! clf; |
15442
015cc3d1f389
legend.m: Overhaul function and add support for automatic data labels.
Rik <rik@octave.org>
parents:
15441
diff
changeset
|
1459 %! plot (rand (3)); |
24434
436deae9f9ab
legend.m: Overhaul function for greater Matlab compatibility.
Rik <rik@octave.org>
parents:
24432
diff
changeset
|
1460 %! title ("legend () without inputs creates default labels"); |
436deae9f9ab
legend.m: Overhaul function for greater Matlab compatibility.
Rik <rik@octave.org>
parents:
24432
diff
changeset
|
1461 %! h = legend (); |
14236
35903f035390
Escaping strings for legend entries are handled by __go_draw_axes__.
Ben Abbott <bpabbott@mac.com>
parents:
14214
diff
changeset
|
1462 |
35903f035390
Escaping strings for legend entries are handled by __go_draw_axes__.
Ben Abbott <bpabbott@mac.com>
parents:
14214
diff
changeset
|
1463 %!demo |
14237
11949c9795a0
Revamp %!demos in m-files to use Octave coding conventions on spacing, etc.
Rik <octave@nomad.inbox5.com>
parents:
14236
diff
changeset
|
1464 %! clf; |
11418
a140991387fb
legend.m: Add demo to legend for inline key.
Ben Abbott <bpabbott@mac.com>
parents:
11363
diff
changeset
|
1465 %! x = 0:1; |
27708
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
1466 %! hline = plot (x,x,";I am Blue;", x,2*x, x,3*x,";I am yellow;"); |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
1467 %! h = legend (); |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
1468 %! set (h, "location", "northeastoutside"); |
24434
436deae9f9ab
legend.m: Overhaul function for greater Matlab compatibility.
Rik <rik@octave.org>
parents:
24432
diff
changeset
|
1469 %! ## Placing legend inside returns axes to original size |
27708
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
1470 %! set (h, "location", "northeast"); |
22800
5de8670d10a6
Change text describing demo plots to reflect new ColorOrder (bug #49288).
Rik <rik@octave.org>
parents:
22624
diff
changeset
|
1471 %! title ("Blue and Yellow keys, with Orange missing"); |
8343
9f34f7636fe0
legend.m: Correct ording of legend labels.
Ben Abbott <bpabbott@mac.com>
parents:
8291
diff
changeset
|
1472 |
9f34f7636fe0
legend.m: Correct ording of legend labels.
Ben Abbott <bpabbott@mac.com>
parents:
8291
diff
changeset
|
1473 %!demo |
14237
11949c9795a0
Revamp %!demos in m-files to use Octave coding conventions on spacing, etc.
Rik <octave@nomad.inbox5.com>
parents:
14236
diff
changeset
|
1474 %! clf; |
11949c9795a0
Revamp %!demos in m-files to use Octave coding conventions on spacing, etc.
Rik <octave@nomad.inbox5.com>
parents:
14236
diff
changeset
|
1475 %! plot (1:10, 1:10, 1:10, fliplr (1:10)); |
22800
5de8670d10a6
Change text describing demo plots to reflect new ColorOrder (bug #49288).
Rik <rik@octave.org>
parents:
22624
diff
changeset
|
1476 %! title ("incline is blue and decline is orange"); |
5de8670d10a6
Change text describing demo plots to reflect new ColorOrder (bug #49288).
Rik <rik@octave.org>
parents:
22624
diff
changeset
|
1477 %! legend ({"I am blue", "I am orange"}, "location", "east"); |
16799
286904321282
Use unmodified axes "position" and "outerposition" properties for legend().
Ben Abbott <bpabbott@mac.com>
parents:
16796
diff
changeset
|
1478 %! legend hide |
286904321282
Use unmodified axes "position" and "outerposition" properties for legend().
Ben Abbott <bpabbott@mac.com>
parents:
16796
diff
changeset
|
1479 %! legend show |
11363
a0dfd7e8e3e2
Assign data used in demo plots for reproducibility between runs
Rik <octave@nomad.inbox5.com>
parents:
11246
diff
changeset
|
1480 |
a0dfd7e8e3e2
Assign data used in demo plots for reproducibility between runs
Rik <octave@nomad.inbox5.com>
parents:
11246
diff
changeset
|
1481 %!demo |
14237
11949c9795a0
Revamp %!demos in m-files to use Octave coding conventions on spacing, etc.
Rik <octave@nomad.inbox5.com>
parents:
14236
diff
changeset
|
1482 %! clf; |
11949c9795a0
Revamp %!demos in m-files to use Octave coding conventions on spacing, etc.
Rik <octave@nomad.inbox5.com>
parents:
14236
diff
changeset
|
1483 %! plot (1:10, 1:10, 1:10, fliplr (1:10)); |
22302
1c4cd12987f5
Use Octave syntax in graphics demos.
Rik <rik@octave.org>
parents:
22151
diff
changeset
|
1484 %! title ("Legend with keys in horizontal orientation"); |
22800
5de8670d10a6
Change text describing demo plots to reflect new ColorOrder (bug #49288).
Rik <rik@octave.org>
parents:
22624
diff
changeset
|
1485 %! legend ({"I am blue", "I am orange"}, ... |
22302
1c4cd12987f5
Use Octave syntax in graphics demos.
Rik <rik@octave.org>
parents:
22151
diff
changeset
|
1486 %! "location", "east", "orientation", "horizontal"); |
16805
2281d957cde6
legend.m: Tweak code for Octave coding conventions.
Rik <rik@octave.org>
parents:
16800
diff
changeset
|
1487 %! legend boxoff |
16799
286904321282
Use unmodified axes "position" and "outerposition" properties for legend().
Ben Abbott <bpabbott@mac.com>
parents:
16796
diff
changeset
|
1488 %! legend boxon |
11462
aed2c50c3082
legend.m: legend with more than two inline keys (bug 31991). Add/modifyy demos.
Ben Abbott <bpabbott@mac.com>
parents:
11434
diff
changeset
|
1489 |
aed2c50c3082
legend.m: legend with more than two inline keys (bug 31991). Add/modifyy demos.
Ben Abbott <bpabbott@mac.com>
parents:
11434
diff
changeset
|
1490 %!demo |
14237
11949c9795a0
Revamp %!demos in m-files to use Octave coding conventions on spacing, etc.
Rik <octave@nomad.inbox5.com>
parents:
14236
diff
changeset
|
1491 %! clf; |
11949c9795a0
Revamp %!demos in m-files to use Octave coding conventions on spacing, etc.
Rik <octave@nomad.inbox5.com>
parents:
14236
diff
changeset
|
1492 %! plot (1:10, 1:10, 1:10, fliplr (1:10)); |
22302
1c4cd12987f5
Use Octave syntax in graphics demos.
Rik <rik@octave.org>
parents:
22151
diff
changeset
|
1493 %! title ("Legend with box off"); |
22800
5de8670d10a6
Change text describing demo plots to reflect new ColorOrder (bug #49288).
Rik <rik@octave.org>
parents:
22624
diff
changeset
|
1494 %! legend ({"I am blue", "I am orange"}, "location", "east"); |
16805
2281d957cde6
legend.m: Tweak code for Octave coding conventions.
Rik <rik@octave.org>
parents:
16800
diff
changeset
|
1495 %! legend boxoff |
11434
1f54ee6760b5
legend.m: Only one legend per axes (bug 32022)
Ben Abbott <bpabbott@mac.com>
parents:
11418
diff
changeset
|
1496 |
1f54ee6760b5
legend.m: Only one legend per axes (bug 32022)
Ben Abbott <bpabbott@mac.com>
parents:
11418
diff
changeset
|
1497 %!demo |
14237
11949c9795a0
Revamp %!demos in m-files to use Octave coding conventions on spacing, etc.
Rik <octave@nomad.inbox5.com>
parents:
14236
diff
changeset
|
1498 %! clf; |
11949c9795a0
Revamp %!demos in m-files to use Octave coding conventions on spacing, etc.
Rik <octave@nomad.inbox5.com>
parents:
14236
diff
changeset
|
1499 %! plot (1:10, 1:10, 1:10, fliplr (1:10)); |
22302
1c4cd12987f5
Use Octave syntax in graphics demos.
Rik <rik@octave.org>
parents:
22151
diff
changeset
|
1500 %! title ("Legend with text to the left of key"); |
22800
5de8670d10a6
Change text describing demo plots to reflect new ColorOrder (bug #49288).
Rik <rik@octave.org>
parents:
22624
diff
changeset
|
1501 %! legend ({"I am blue", "I am orange"}, "location", "east"); |
17532
492d609d2d75
legend.m: Default text labels to "right" alignment for Matlab compatibility.
Rik <rik@octave.org>
parents:
17530
diff
changeset
|
1502 %! legend left |
8343
9f34f7636fe0
legend.m: Correct ording of legend labels.
Ben Abbott <bpabbott@mac.com>
parents:
8291
diff
changeset
|
1503 |
9f34f7636fe0
legend.m: Correct ording of legend labels.
Ben Abbott <bpabbott@mac.com>
parents:
8291
diff
changeset
|
1504 %!demo |
14237
11949c9795a0
Revamp %!demos in m-files to use Octave coding conventions on spacing, etc.
Rik <octave@nomad.inbox5.com>
parents:
14236
diff
changeset
|
1505 %! clf; |
15442
015cc3d1f389
legend.m: Overhaul function and add support for automatic data labels.
Rik <rik@octave.org>
parents:
15441
diff
changeset
|
1506 %! plot (1:10, 1:10, 1:10, fliplr (1:10)); |
22302
1c4cd12987f5
Use Octave syntax in graphics demos.
Rik <rik@octave.org>
parents:
22151
diff
changeset
|
1507 %! title ({"Use properties to place legend text to the left of key", ... |
1c4cd12987f5
Use Octave syntax in graphics demos.
Rik <rik@octave.org>
parents:
22151
diff
changeset
|
1508 %! "Legend text color is magenta"}); |
22800
5de8670d10a6
Change text describing demo plots to reflect new ColorOrder (bug #49288).
Rik <rik@octave.org>
parents:
22624
diff
changeset
|
1509 %! h = legend ({"I am blue", "I am orange"}, "location", "east"); |
22302
1c4cd12987f5
Use Octave syntax in graphics demos.
Rik <rik@octave.org>
parents:
22151
diff
changeset
|
1510 %! legend ("right"); |
1c4cd12987f5
Use Octave syntax in graphics demos.
Rik <rik@octave.org>
parents:
22151
diff
changeset
|
1511 %! set (h, "textposition", "left"); |
27710
9fd8534d3607
legend.m: Code cleanup for cset c66467f74278.
Rik <rik@octave.org>
parents:
27708
diff
changeset
|
1512 %! set (h, "textcolor", [1, 0, 1]); |
15442
015cc3d1f389
legend.m: Overhaul function and add support for automatic data labels.
Rik <rik@octave.org>
parents:
15441
diff
changeset
|
1513 |
015cc3d1f389
legend.m: Overhaul function and add support for automatic data labels.
Rik <rik@octave.org>
parents:
15441
diff
changeset
|
1514 %!demo |
015cc3d1f389
legend.m: Overhaul function and add support for automatic data labels.
Rik <rik@octave.org>
parents:
15441
diff
changeset
|
1515 %! clf; |
015cc3d1f389
legend.m: Overhaul function and add support for automatic data labels.
Rik <rik@octave.org>
parents:
15441
diff
changeset
|
1516 %! plot (1:10, 1:10, 1:10, fliplr (1:10)); |
22302
1c4cd12987f5
Use Octave syntax in graphics demos.
Rik <rik@octave.org>
parents:
22151
diff
changeset
|
1517 %! title ("Legend is hidden"); |
22800
5de8670d10a6
Change text describing demo plots to reflect new ColorOrder (bug #49288).
Rik <rik@octave.org>
parents:
22624
diff
changeset
|
1518 %! legend ({"I am blue", "I am orange"}, "location", "east"); |
16805
2281d957cde6
legend.m: Tweak code for Octave coding conventions.
Rik <rik@octave.org>
parents:
16800
diff
changeset
|
1519 %! legend hide |
15442
015cc3d1f389
legend.m: Overhaul function and add support for automatic data labels.
Rik <rik@octave.org>
parents:
15441
diff
changeset
|
1520 |
015cc3d1f389
legend.m: Overhaul function and add support for automatic data labels.
Rik <rik@octave.org>
parents:
15441
diff
changeset
|
1521 %!demo |
015cc3d1f389
legend.m: Overhaul function and add support for automatic data labels.
Rik <rik@octave.org>
parents:
15441
diff
changeset
|
1522 %! clf; |
015cc3d1f389
legend.m: Overhaul function and add support for automatic data labels.
Rik <rik@octave.org>
parents:
15441
diff
changeset
|
1523 %! x = 0:1; |
22800
5de8670d10a6
Change text describing demo plots to reflect new ColorOrder (bug #49288).
Rik <rik@octave.org>
parents:
22624
diff
changeset
|
1524 %! plot (x,x,";I am Blue;", x,2*x,";I am Orange;", x,3*x,";I am Yellow;"); |
22302
1c4cd12987f5
Use Octave syntax in graphics demos.
Rik <rik@octave.org>
parents:
22151
diff
changeset
|
1525 %! title ({"Labels are embedded in call to plot", ... |
1c4cd12987f5
Use Octave syntax in graphics demos.
Rik <rik@octave.org>
parents:
22151
diff
changeset
|
1526 %! "Legend is hidden and then shown"}); |
15442
015cc3d1f389
legend.m: Overhaul function and add support for automatic data labels.
Rik <rik@octave.org>
parents:
15441
diff
changeset
|
1527 %! legend boxon |
11434
1f54ee6760b5
legend.m: Only one legend per axes (bug 32022)
Ben Abbott <bpabbott@mac.com>
parents:
11418
diff
changeset
|
1528 %! legend hide |
1f54ee6760b5
legend.m: Only one legend per axes (bug 32022)
Ben Abbott <bpabbott@mac.com>
parents:
11418
diff
changeset
|
1529 %! legend show |
11363
a0dfd7e8e3e2
Assign data used in demo plots for reproducibility between runs
Rik <octave@nomad.inbox5.com>
parents:
11246
diff
changeset
|
1530 |
a0dfd7e8e3e2
Assign data used in demo plots for reproducibility between runs
Rik <octave@nomad.inbox5.com>
parents:
11246
diff
changeset
|
1531 %!demo |
15442
015cc3d1f389
legend.m: Overhaul function and add support for automatic data labels.
Rik <rik@octave.org>
parents:
15441
diff
changeset
|
1532 %! clf; |
015cc3d1f389
legend.m: Overhaul function and add support for automatic data labels.
Rik <rik@octave.org>
parents:
15441
diff
changeset
|
1533 %! x = 0:1; |
22151
283d8dfcad37
Make demos Matlab compatible for comparison with dump_demos script.
Rik <rik@octave.org>
parents:
22069
diff
changeset
|
1534 %! plot (x,x, x,2*x, x,3*x); |
22302
1c4cd12987f5
Use Octave syntax in graphics demos.
Rik <rik@octave.org>
parents:
22151
diff
changeset
|
1535 %! title ("Labels with interpreted Greek text"); |
22151
283d8dfcad37
Make demos Matlab compatible for comparison with dump_demos script.
Rik <rik@octave.org>
parents:
22069
diff
changeset
|
1536 %! h = legend ('\alpha', '\beta=2\alpha', '\gamma=3\alpha'); |
22302
1c4cd12987f5
Use Octave syntax in graphics demos.
Rik <rik@octave.org>
parents:
22151
diff
changeset
|
1537 %! set (h, "interpreter", "tex"); |
11434
1f54ee6760b5
legend.m: Only one legend per axes (bug 32022)
Ben Abbott <bpabbott@mac.com>
parents:
11418
diff
changeset
|
1538 |
1f54ee6760b5
legend.m: Only one legend per axes (bug 32022)
Ben Abbott <bpabbott@mac.com>
parents:
11418
diff
changeset
|
1539 %!demo |
15442
015cc3d1f389
legend.m: Overhaul function and add support for automatic data labels.
Rik <rik@octave.org>
parents:
15441
diff
changeset
|
1540 %! clf; |
015cc3d1f389
legend.m: Overhaul function and add support for automatic data labels.
Rik <rik@octave.org>
parents:
15441
diff
changeset
|
1541 %! plot (rand (2)); |
22302
1c4cd12987f5
Use Octave syntax in graphics demos.
Rik <rik@octave.org>
parents:
22151
diff
changeset
|
1542 %! title ("Labels with TeX interpreter turned off"); |
1c4cd12987f5
Use Octave syntax in graphics demos.
Rik <rik@octave.org>
parents:
22151
diff
changeset
|
1543 %! h = legend ("Hello_World", "foo^bar"); |
1c4cd12987f5
Use Octave syntax in graphics demos.
Rik <rik@octave.org>
parents:
22151
diff
changeset
|
1544 %! set (h, "interpreter", "none"); |
9451 | 1545 |
1546 %!demo | |
15442
015cc3d1f389
legend.m: Overhaul function and add support for automatic data labels.
Rik <rik@octave.org>
parents:
15441
diff
changeset
|
1547 %! clf; |
6146 | 1548 %! labels = {}; |
22302
1c4cd12987f5
Use Octave syntax in graphics demos.
Rik <rik@octave.org>
parents:
22151
diff
changeset
|
1549 %! colororder = get (gca, "colororder"); |
6146 | 1550 %! for i = 1:5 |
14363
f3d52523cde1
Use Octave coding conventions in all m-file %!test blocks
Rik <octave@nomad.inbox5.com>
parents:
14252
diff
changeset
|
1551 %! h = plot (1:100, i + rand (100,1)); hold on; |
22302
1c4cd12987f5
Use Octave syntax in graphics demos.
Rik <rik@octave.org>
parents:
22151
diff
changeset
|
1552 %! set (h, "color", colororder(i,:)); |
1c4cd12987f5
Use Octave syntax in graphics demos.
Rik <rik@octave.org>
parents:
22151
diff
changeset
|
1553 %! labels = {labels{:}, ["Signal ", num2str(i)]}; |
1c4cd12987f5
Use Octave syntax in graphics demos.
Rik <rik@octave.org>
parents:
22151
diff
changeset
|
1554 %! endfor |
11363
a0dfd7e8e3e2
Assign data used in demo plots for reproducibility between runs
Rik <octave@nomad.inbox5.com>
parents:
11246
diff
changeset
|
1555 %! hold off; |
22302
1c4cd12987f5
Use Octave syntax in graphics demos.
Rik <rik@octave.org>
parents:
22151
diff
changeset
|
1556 %! title ({"Signals with random offset and uniform noise"; |
1c4cd12987f5
Use Octave syntax in graphics demos.
Rik <rik@octave.org>
parents:
22151
diff
changeset
|
1557 %! "Legend shown below and outside of plot"}); |
1c4cd12987f5
Use Octave syntax in graphics demos.
Rik <rik@octave.org>
parents:
22151
diff
changeset
|
1558 %! xlabel ("Sample Nr [k]"); ylabel ("Amplitude [V]"); |
1c4cd12987f5
Use Octave syntax in graphics demos.
Rik <rik@octave.org>
parents:
22151
diff
changeset
|
1559 %! legend (labels, "location", "southoutside"); |
9451 | 1560 |
1561 %!demo | |
14237
11949c9795a0
Revamp %!demos in m-files to use Octave coding conventions on spacing, etc.
Rik <octave@nomad.inbox5.com>
parents:
14236
diff
changeset
|
1562 %! clf; |
9451 | 1563 %! x = linspace (0, 10); |
1564 %! plot (x, x); | |
14237
11949c9795a0
Revamp %!demos in m-files to use Octave coding conventions on spacing, etc.
Rik <octave@nomad.inbox5.com>
parents:
14236
diff
changeset
|
1565 %! hold on; |
22302
1c4cd12987f5
Use Octave syntax in graphics demos.
Rik <rik@octave.org>
parents:
22151
diff
changeset
|
1566 %! stem (x, x.^2, "g"); |
1c4cd12987f5
Use Octave syntax in graphics demos.
Rik <rik@octave.org>
parents:
22151
diff
changeset
|
1567 %! title ("First created object gets first label"); |
1c4cd12987f5
Use Octave syntax in graphics demos.
Rik <rik@octave.org>
parents:
22151
diff
changeset
|
1568 %! legend ("linear"); |
14237
11949c9795a0
Revamp %!demos in m-files to use Octave coding conventions on spacing, etc.
Rik <octave@nomad.inbox5.com>
parents:
14236
diff
changeset
|
1569 %! hold off; |
9451 | 1570 |
1571 %!demo | |
14237
11949c9795a0
Revamp %!demos in m-files to use Octave coding conventions on spacing, etc.
Rik <octave@nomad.inbox5.com>
parents:
14236
diff
changeset
|
1572 %! clf; |
9451 | 1573 %! x = linspace (0, 10); |
1574 %! plot (x, x, x, x.^2); | |
22302
1c4cd12987f5
Use Octave syntax in graphics demos.
Rik <rik@octave.org>
parents:
22151
diff
changeset
|
1575 %! title ("First created object gets first label"); |
1c4cd12987f5
Use Octave syntax in graphics demos.
Rik <rik@octave.org>
parents:
22151
diff
changeset
|
1576 %! legend ("linear"); |
9451 | 1577 |
1578 %!demo | |
14237
11949c9795a0
Revamp %!demos in m-files to use Octave coding conventions on spacing, etc.
Rik <octave@nomad.inbox5.com>
parents:
14236
diff
changeset
|
1579 %! clf; |
9451 | 1580 %! x = linspace (0, 10); |
1581 %! plot (x, x, x, x.^2); | |
22302
1c4cd12987f5
Use Octave syntax in graphics demos.
Rik <rik@octave.org>
parents:
22151
diff
changeset
|
1582 %! title ("Labels are applied in order of object creation"); |
1c4cd12987f5
Use Octave syntax in graphics demos.
Rik <rik@octave.org>
parents:
22151
diff
changeset
|
1583 %! legend ("linear", "quadratic"); |
9457
f9fb8c1a8e45
legend.m: Add an hggroup demo using bar(). Include clf() in each demo.
Ben Abbott <bpabbott@mac.com>
parents:
9451
diff
changeset
|
1584 |
f9fb8c1a8e45
legend.m: Add an hggroup demo using bar(). Include clf() in each demo.
Ben Abbott <bpabbott@mac.com>
parents:
9451
diff
changeset
|
1585 %!demo |
14237
11949c9795a0
Revamp %!demos in m-files to use Octave coding conventions on spacing, etc.
Rik <octave@nomad.inbox5.com>
parents:
14236
diff
changeset
|
1586 %! clf; |
22629
4bd7bab38f39
Add stem example to the hggroup type of legend (bug #49341).
Daniel J Sebald <daniel.sebald@ieee.org>
parents:
22489
diff
changeset
|
1587 %! subplot (2,1,1); |
11363
a0dfd7e8e3e2
Assign data used in demo plots for reproducibility between runs
Rik <octave@nomad.inbox5.com>
parents:
11246
diff
changeset
|
1588 %! rand_2x3_data1 = [0.341447, 0.171220, 0.284370; 0.039773, 0.731725, 0.779382]; |
a0dfd7e8e3e2
Assign data used in demo plots for reproducibility between runs
Rik <octave@nomad.inbox5.com>
parents:
11246
diff
changeset
|
1589 %! bar (rand_2x3_data1); |
27710
9fd8534d3607
legend.m: Code cleanup for cset c66467f74278.
Rik <rik@octave.org>
parents:
27708
diff
changeset
|
1590 %! ylim ([0, 1.0]); |
22302
1c4cd12987f5
Use Octave syntax in graphics demos.
Rik <rik@octave.org>
parents:
22151
diff
changeset
|
1591 %! title ("legend() works for bar graphs (hggroups)"); |
22629
4bd7bab38f39
Add stem example to the hggroup type of legend (bug #49341).
Daniel J Sebald <daniel.sebald@ieee.org>
parents:
22489
diff
changeset
|
1592 %! legend ({"1st Bar", "2nd Bar", "3rd Bar"}, "location", "northwest"); |
4bd7bab38f39
Add stem example to the hggroup type of legend (bug #49341).
Daniel J Sebald <daniel.sebald@ieee.org>
parents:
22489
diff
changeset
|
1593 %! subplot (2,1,2); |
23253
8a1ba13e9914
Correct hggroup plot legends for gnuplot toolkit, add legend demo 17 items (bug #49341)
Daniel J Sebald <daniel.sebald@ieee.org>
parents:
23219
diff
changeset
|
1594 %! x = linspace (0, 10, 20); |
27710
9fd8534d3607
legend.m: Code cleanup for cset c66467f74278.
Rik <rik@octave.org>
parents:
27708
diff
changeset
|
1595 %! stem (x, 0.5+x.*rand (size (x))/max (x), "markeredgecolor", [0, 0.7, 0]); |
23253
8a1ba13e9914
Correct hggroup plot legends for gnuplot toolkit, add legend demo 17 items (bug #49341)
Daniel J Sebald <daniel.sebald@ieee.org>
parents:
23219
diff
changeset
|
1596 %! hold on; |
8a1ba13e9914
Correct hggroup plot legends for gnuplot toolkit, add legend demo 17 items (bug #49341)
Daniel J Sebald <daniel.sebald@ieee.org>
parents:
23219
diff
changeset
|
1597 %! stem (x+10/(2*20), x.*(1.0+rand (size (x)))/max (x)); |
27710
9fd8534d3607
legend.m: Code cleanup for cset c66467f74278.
Rik <rik@octave.org>
parents:
27708
diff
changeset
|
1598 %! xlim ([0, 10+10/(2*20)]); |
22629
4bd7bab38f39
Add stem example to the hggroup type of legend (bug #49341).
Daniel J Sebald <daniel.sebald@ieee.org>
parents:
22489
diff
changeset
|
1599 %! title ("legend() works for stem plots (hggroups)"); |
23253
8a1ba13e9914
Correct hggroup plot legends for gnuplot toolkit, add legend demo 17 items (bug #49341)
Daniel J Sebald <daniel.sebald@ieee.org>
parents:
23219
diff
changeset
|
1600 %! legend ({"Multicolor", "Unicolor"}, "location", "northwest"); |
9457
f9fb8c1a8e45
legend.m: Add an hggroup demo using bar(). Include clf() in each demo.
Ben Abbott <bpabbott@mac.com>
parents:
9451
diff
changeset
|
1601 |
f9fb8c1a8e45
legend.m: Add an hggroup demo using bar(). Include clf() in each demo.
Ben Abbott <bpabbott@mac.com>
parents:
9451
diff
changeset
|
1602 %!demo |
14237
11949c9795a0
Revamp %!demos in m-files to use Octave coding conventions on spacing, etc.
Rik <octave@nomad.inbox5.com>
parents:
14236
diff
changeset
|
1603 %! clf; |
20408
71bd638e0ef6
legend.m: Fix listeners on legend line objects (bug #45563).
Rik <rik@octave.org>
parents:
20286
diff
changeset
|
1604 %! colormap (cool (64)); |
71bd638e0ef6
legend.m: Fix listeners on legend line objects (bug #45563).
Rik <rik@octave.org>
parents:
20286
diff
changeset
|
1605 %! surf (peaks ()); |
22302
1c4cd12987f5
Use Octave syntax in graphics demos.
Rik <rik@octave.org>
parents:
22151
diff
changeset
|
1606 %! legend ("peaks()"); |
1c4cd12987f5
Use Octave syntax in graphics demos.
Rik <rik@octave.org>
parents:
22151
diff
changeset
|
1607 %! title ("legend() works for surface objects too"); |
20408
71bd638e0ef6
legend.m: Fix listeners on legend line objects (bug #45563).
Rik <rik@octave.org>
parents:
20286
diff
changeset
|
1608 |
71bd638e0ef6
legend.m: Fix listeners on legend line objects (bug #45563).
Rik <rik@octave.org>
parents:
20286
diff
changeset
|
1609 %!demo |
22302
1c4cd12987f5
Use Octave syntax in graphics demos.
Rik <rik@octave.org>
parents:
22151
diff
changeset
|
1610 %! clf reset; # needed to undo colormap assignment in previous demo |
11363
a0dfd7e8e3e2
Assign data used in demo plots for reproducibility between runs
Rik <octave@nomad.inbox5.com>
parents:
11246
diff
changeset
|
1611 %! rand_2x3_data2 = [0.44804, 0.84368, 0.23012; 0.72311, 0.58335, 0.90531]; |
a0dfd7e8e3e2
Assign data used in demo plots for reproducibility between runs
Rik <octave@nomad.inbox5.com>
parents:
11246
diff
changeset
|
1612 %! bar (rand_2x3_data2); |
27710
9fd8534d3607
legend.m: Code cleanup for cset c66467f74278.
Rik <rik@octave.org>
parents:
27708
diff
changeset
|
1613 %! ylim ([0, 1.2]); |
22151
283d8dfcad37
Make demos Matlab compatible for comparison with dump_demos script.
Rik <rik@octave.org>
parents:
22069
diff
changeset
|
1614 %! title ('"left" option places colors to the left of text label'); |
22302
1c4cd12987f5
Use Octave syntax in graphics demos.
Rik <rik@octave.org>
parents:
22151
diff
changeset
|
1615 %! legend ("1st Bar", "2nd Bar", "3rd Bar"); |
18888
962db83e36c3
legend.m: Update demo 19 with more descriptive title.
Rik <rik@octave.org>
parents:
18753
diff
changeset
|
1616 %! legend left; |
10662
3afcd24ced61
legend.m: Key labels for specified objects.
Ben Abbott <bpabbott@mac.com>
parents:
10549
diff
changeset
|
1617 |
3afcd24ced61
legend.m: Key labels for specified objects.
Ben Abbott <bpabbott@mac.com>
parents:
10549
diff
changeset
|
1618 %!demo |
14237
11949c9795a0
Revamp %!demos in m-files to use Octave coding conventions on spacing, etc.
Rik <octave@nomad.inbox5.com>
parents:
14236
diff
changeset
|
1619 %! clf; |
10662
3afcd24ced61
legend.m: Key labels for specified objects.
Ben Abbott <bpabbott@mac.com>
parents:
10549
diff
changeset
|
1620 %! x = 0:0.1:7; |
14237
11949c9795a0
Revamp %!demos in m-files to use Octave coding conventions on spacing, etc.
Rik <octave@nomad.inbox5.com>
parents:
14236
diff
changeset
|
1621 %! h = plot (x,sin(x), x,cos(x), x,sin(x.^2/10), x,cos(x.^2/10)); |
22302
1c4cd12987f5
Use Octave syntax in graphics demos.
Rik <rik@octave.org>
parents:
22151
diff
changeset
|
1622 %! title ("Only the sin() objects have keylabels"); |
1c4cd12987f5
Use Octave syntax in graphics demos.
Rik <rik@octave.org>
parents:
22151
diff
changeset
|
1623 %! legend (h([1, 3]), {"sin (x)", "sin (x^2/10)"}, "location", "southwest"); |
11363
a0dfd7e8e3e2
Assign data used in demo plots for reproducibility between runs
Rik <octave@nomad.inbox5.com>
parents:
11246
diff
changeset
|
1624 |
12340
d63007ac067a
legend.m: Add demo for inline keys created by two plot commands.
Ben Abbott <bpabbott@mac.com>
parents:
12339
diff
changeset
|
1625 %!demo |
14237
11949c9795a0
Revamp %!demos in m-files to use Octave coding conventions on spacing, etc.
Rik <octave@nomad.inbox5.com>
parents:
14236
diff
changeset
|
1626 %! clf; |
12340
d63007ac067a
legend.m: Add demo for inline keys created by two plot commands.
Ben Abbott <bpabbott@mac.com>
parents:
12339
diff
changeset
|
1627 %! x = 0:0.1:10; |
22302
1c4cd12987f5
Use Octave syntax in graphics demos.
Rik <rik@octave.org>
parents:
22151
diff
changeset
|
1628 %! plot (x, sin (x), ";sin (x);"); |
22069
9121d6584f6a
Overhaul graphics implementation of hold() (bug #43559).
Rik <rik@octave.org>
parents:
22054
diff
changeset
|
1629 %! hold on; |
22302
1c4cd12987f5
Use Octave syntax in graphics demos.
Rik <rik@octave.org>
parents:
22151
diff
changeset
|
1630 %! plot (x, cos (x), ";cos (x);"); |
14237
11949c9795a0
Revamp %!demos in m-files to use Octave coding conventions on spacing, etc.
Rik <octave@nomad.inbox5.com>
parents:
14236
diff
changeset
|
1631 %! hold off; |
22302
1c4cd12987f5
Use Octave syntax in graphics demos.
Rik <rik@octave.org>
parents:
22151
diff
changeset
|
1632 %! title ("legend constructed from multiple plot calls"); |
12340
d63007ac067a
legend.m: Add demo for inline keys created by two plot commands.
Ben Abbott <bpabbott@mac.com>
parents:
12339
diff
changeset
|
1633 |
12387
5fb6ea1bff65
legend.m: Add demo for replacing existing legend.
Ben Abbott <bpabbott@mac.com>
parents:
12340
diff
changeset
|
1634 %!demo |
14237
11949c9795a0
Revamp %!demos in m-files to use Octave coding conventions on spacing, etc.
Rik <octave@nomad.inbox5.com>
parents:
14236
diff
changeset
|
1635 %! clf; |
12387
5fb6ea1bff65
legend.m: Add demo for replacing existing legend.
Ben Abbott <bpabbott@mac.com>
parents:
12340
diff
changeset
|
1636 %! x = 0:0.1:10; |
22302
1c4cd12987f5
Use Octave syntax in graphics demos.
Rik <rik@octave.org>
parents:
22151
diff
changeset
|
1637 %! plot (x, sin (x), ";sin (x);"); |
22069
9121d6584f6a
Overhaul graphics implementation of hold() (bug #43559).
Rik <rik@octave.org>
parents:
22054
diff
changeset
|
1638 %! hold on; |
22302
1c4cd12987f5
Use Octave syntax in graphics demos.
Rik <rik@octave.org>
parents:
22151
diff
changeset
|
1639 %! plot (x, cos (x), ";cos (x);"); |
14237
11949c9795a0
Revamp %!demos in m-files to use Octave coding conventions on spacing, etc.
Rik <octave@nomad.inbox5.com>
parents:
14236
diff
changeset
|
1640 %! hold off; |
22302
1c4cd12987f5
Use Octave syntax in graphics demos.
Rik <rik@octave.org>
parents:
22151
diff
changeset
|
1641 %! title ("Specified label text overrides previous labels"); |
1c4cd12987f5
Use Octave syntax in graphics demos.
Rik <rik@octave.org>
parents:
22151
diff
changeset
|
1642 %! legend ({"Sine", "Cosine"}, "location", "northeastoutside"); |
12387
5fb6ea1bff65
legend.m: Add demo for replacing existing legend.
Ben Abbott <bpabbott@mac.com>
parents:
12340
diff
changeset
|
1643 |
12394
c2e1973d870b
legend.m: "legend off" should delete the legend object.
Ben Abbott <bpabbott@mac.com>
parents:
12388
diff
changeset
|
1644 %!demo |
14237
11949c9795a0
Revamp %!demos in m-files to use Octave coding conventions on spacing, etc.
Rik <octave@nomad.inbox5.com>
parents:
14236
diff
changeset
|
1645 %! clf; |
12394
c2e1973d870b
legend.m: "legend off" should delete the legend object.
Ben Abbott <bpabbott@mac.com>
parents:
12388
diff
changeset
|
1646 %! x = 0:10; |
c2e1973d870b
legend.m: "legend off" should delete the legend object.
Ben Abbott <bpabbott@mac.com>
parents:
12388
diff
changeset
|
1647 %! plot (x, rand (11)); |
24434
436deae9f9ab
legend.m: Overhaul function for greater Matlab compatibility.
Rik <rik@octave.org>
parents:
24432
diff
changeset
|
1648 %! axis ([0, 10, 0, 1]); |
22302
1c4cd12987f5
Use Octave syntax in graphics demos.
Rik <rik@octave.org>
parents:
22151
diff
changeset
|
1649 %! xlabel ("Indices"); |
1c4cd12987f5
Use Octave syntax in graphics demos.
Rik <rik@octave.org>
parents:
22151
diff
changeset
|
1650 %! ylabel ("Random Values"); |
1c4cd12987f5
Use Octave syntax in graphics demos.
Rik <rik@octave.org>
parents:
22151
diff
changeset
|
1651 %! title ('Legend "off" deletes the legend'); |
22624
37b7b86f62f2
Fix legend.m typo in demo example 23 (bug #49341).
Daniel J Sebald <daniel.sebald@ieee.org>
parents:
22489
diff
changeset
|
1652 %! legend (cellstr (num2str ((0:10)')), "location", "northeastoutside"); |
37b7b86f62f2
Fix legend.m typo in demo example 23 (bug #49341).
Daniel J Sebald <daniel.sebald@ieee.org>
parents:
22489
diff
changeset
|
1653 %! pause (1); |
14237
11949c9795a0
Revamp %!demos in m-files to use Octave coding conventions on spacing, etc.
Rik <octave@nomad.inbox5.com>
parents:
14236
diff
changeset
|
1654 %! legend off; |
12387
5fb6ea1bff65
legend.m: Add demo for replacing existing legend.
Ben Abbott <bpabbott@mac.com>
parents:
12340
diff
changeset
|
1655 |
12395
4d30b4136a3e
legend.m: Align legends to plot box, add demo. Bug 32373.
Ben Abbott <bpabbott@mac.com>
parents:
12394
diff
changeset
|
1656 %!demo |
14237
11949c9795a0
Revamp %!demos in m-files to use Octave coding conventions on spacing, etc.
Rik <octave@nomad.inbox5.com>
parents:
14236
diff
changeset
|
1657 %! clf; |
11949c9795a0
Revamp %!demos in m-files to use Octave coding conventions on spacing, etc.
Rik <octave@nomad.inbox5.com>
parents:
14236
diff
changeset
|
1658 %! x = (1:5)'; |
14363
f3d52523cde1
Use Octave coding conventions in all m-file %!test blocks
Rik <octave@nomad.inbox5.com>
parents:
14252
diff
changeset
|
1659 %! subplot (2,2,1); |
14237
11949c9795a0
Revamp %!demos in m-files to use Octave coding conventions on spacing, etc.
Rik <octave@nomad.inbox5.com>
parents:
14236
diff
changeset
|
1660 %! plot (x, rand (numel (x))); |
22302
1c4cd12987f5
Use Octave syntax in graphics demos.
Rik <rik@octave.org>
parents:
22151
diff
changeset
|
1661 %! legend (cellstr (num2str (x)), "location", "northwestoutside"); |
14363
f3d52523cde1
Use Octave coding conventions in all m-file %!test blocks
Rik <octave@nomad.inbox5.com>
parents:
14252
diff
changeset
|
1662 %! subplot (2,2,2); |
14237
11949c9795a0
Revamp %!demos in m-files to use Octave coding conventions on spacing, etc.
Rik <octave@nomad.inbox5.com>
parents:
14236
diff
changeset
|
1663 %! plot (x, rand (numel (x))); |
22302
1c4cd12987f5
Use Octave syntax in graphics demos.
Rik <rik@octave.org>
parents:
22151
diff
changeset
|
1664 %! legend (cellstr (num2str (x)), "location", "northeastoutside"); |
14363
f3d52523cde1
Use Octave coding conventions in all m-file %!test blocks
Rik <octave@nomad.inbox5.com>
parents:
14252
diff
changeset
|
1665 %! subplot (2,2,3); |
14237
11949c9795a0
Revamp %!demos in m-files to use Octave coding conventions on spacing, etc.
Rik <octave@nomad.inbox5.com>
parents:
14236
diff
changeset
|
1666 %! plot (x, rand (numel (x))); |
22302
1c4cd12987f5
Use Octave syntax in graphics demos.
Rik <rik@octave.org>
parents:
22151
diff
changeset
|
1667 %! legend (cellstr (num2str (x)), "location", "southwestoutside"); |
14363
f3d52523cde1
Use Octave coding conventions in all m-file %!test blocks
Rik <octave@nomad.inbox5.com>
parents:
14252
diff
changeset
|
1668 %! subplot (2,2,4); |
14237
11949c9795a0
Revamp %!demos in m-files to use Octave coding conventions on spacing, etc.
Rik <octave@nomad.inbox5.com>
parents:
14236
diff
changeset
|
1669 %! plot (x, rand (numel (x))); |
22302
1c4cd12987f5
Use Octave syntax in graphics demos.
Rik <rik@octave.org>
parents:
22151
diff
changeset
|
1670 %! legend (cellstr (num2str (x)), "location", "southeastoutside"); |
1c4cd12987f5
Use Octave syntax in graphics demos.
Rik <rik@octave.org>
parents:
22151
diff
changeset
|
1671 %! ## Legend works on a per axes basis for each subplot |
12387
5fb6ea1bff65
legend.m: Add demo for replacing existing legend.
Ben Abbott <bpabbott@mac.com>
parents:
12340
diff
changeset
|
1672 |
12395
4d30b4136a3e
legend.m: Align legends to plot box, add demo. Bug 32373.
Ben Abbott <bpabbott@mac.com>
parents:
12394
diff
changeset
|
1673 %!demo |
14237
11949c9795a0
Revamp %!demos in m-files to use Octave coding conventions on spacing, etc.
Rik <octave@nomad.inbox5.com>
parents:
14236
diff
changeset
|
1674 %! clf; |
11949c9795a0
Revamp %!demos in m-files to use Octave coding conventions on spacing, etc.
Rik <octave@nomad.inbox5.com>
parents:
14236
diff
changeset
|
1675 %! plot (rand (2)); |
22302
1c4cd12987f5
Use Octave syntax in graphics demos.
Rik <rik@octave.org>
parents:
22151
diff
changeset
|
1676 %! title ("legend() will warn if extra labels are specified"); |
27708
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
1677 %! legend ("Hello", "World", "foo", "bar"); |
13979
f35b593688a5
Changing the legend's interpreter property should be inherited by the
Ben Abbott <bpabbott@mac.com>
parents:
13937
diff
changeset
|
1678 |
f35b593688a5
Changing the legend's interpreter property should be inherited by the
Ben Abbott <bpabbott@mac.com>
parents:
13937
diff
changeset
|
1679 %!demo |
16799
286904321282
Use unmodified axes "position" and "outerposition" properties for legend().
Ben Abbott <bpabbott@mac.com>
parents:
16796
diff
changeset
|
1680 %! clf; |
14207
57e3490094e1
Fix order of legend entries for plotyy. Bug # 35314.
Ben Abbott <bpabbott@mac.com>
parents:
14138
diff
changeset
|
1681 %! x = 0:10; |
57e3490094e1
Fix order of legend entries for plotyy. Bug # 35314.
Ben Abbott <bpabbott@mac.com>
parents:
14138
diff
changeset
|
1682 %! y1 = rand (size (x)); |
57e3490094e1
Fix order of legend entries for plotyy. Bug # 35314.
Ben Abbott <bpabbott@mac.com>
parents:
14138
diff
changeset
|
1683 %! y2 = rand (size (x)); |
57e3490094e1
Fix order of legend entries for plotyy. Bug # 35314.
Ben Abbott <bpabbott@mac.com>
parents:
14138
diff
changeset
|
1684 %! [ax, h1, h2] = plotyy (x, y1, x, y2); |
24434
436deae9f9ab
legend.m: Overhaul function for greater Matlab compatibility.
Rik <rik@octave.org>
parents:
24432
diff
changeset
|
1685 %! title ({"plotyy legend test #1", "Blue label to left axis, Orange label to right axis"}); |
436deae9f9ab
legend.m: Overhaul function for greater Matlab compatibility.
Rik <rik@octave.org>
parents:
24432
diff
changeset
|
1686 %! drawnow (); |
436deae9f9ab
legend.m: Overhaul function for greater Matlab compatibility.
Rik <rik@octave.org>
parents:
24432
diff
changeset
|
1687 %! legend ("Blue", "Orange", "location", "south"); |
12395
4d30b4136a3e
legend.m: Align legends to plot box, add demo. Bug 32373.
Ben Abbott <bpabbott@mac.com>
parents:
12394
diff
changeset
|
1688 |
13979
f35b593688a5
Changing the legend's interpreter property should be inherited by the
Ben Abbott <bpabbott@mac.com>
parents:
13937
diff
changeset
|
1689 %!demo |
16799
286904321282
Use unmodified axes "position" and "outerposition" properties for legend().
Ben Abbott <bpabbott@mac.com>
parents:
16796
diff
changeset
|
1690 %! clf; |
14207
57e3490094e1
Fix order of legend entries for plotyy. Bug # 35314.
Ben Abbott <bpabbott@mac.com>
parents:
14138
diff
changeset
|
1691 %! x = 0:10; |
57e3490094e1
Fix order of legend entries for plotyy. Bug # 35314.
Ben Abbott <bpabbott@mac.com>
parents:
14138
diff
changeset
|
1692 %! y1 = rand (size (x)); |
57e3490094e1
Fix order of legend entries for plotyy. Bug # 35314.
Ben Abbott <bpabbott@mac.com>
parents:
14138
diff
changeset
|
1693 %! y2 = rand (size (x)); |
57e3490094e1
Fix order of legend entries for plotyy. Bug # 35314.
Ben Abbott <bpabbott@mac.com>
parents:
14138
diff
changeset
|
1694 %! [ax, h1, h2] = plotyy (x, y1, x, y2); |
24434
436deae9f9ab
legend.m: Overhaul function for greater Matlab compatibility.
Rik <rik@octave.org>
parents:
24432
diff
changeset
|
1695 %! ylabel (ax(1), {"Blue", "Y", "Axis"}); |
436deae9f9ab
legend.m: Overhaul function for greater Matlab compatibility.
Rik <rik@octave.org>
parents:
24432
diff
changeset
|
1696 %! title ('plotyy legend test #2: "westoutside" adjusts to ylabel'); |
436deae9f9ab
legend.m: Overhaul function for greater Matlab compatibility.
Rik <rik@octave.org>
parents:
24432
diff
changeset
|
1697 %! drawnow (); |
436deae9f9ab
legend.m: Overhaul function for greater Matlab compatibility.
Rik <rik@octave.org>
parents:
24432
diff
changeset
|
1698 %! legend ([h1, h2], {"Blue", "Orange"}, "location", "westoutside"); |
13979
f35b593688a5
Changing the legend's interpreter property should be inherited by the
Ben Abbott <bpabbott@mac.com>
parents:
13937
diff
changeset
|
1699 |
f35b593688a5
Changing the legend's interpreter property should be inherited by the
Ben Abbott <bpabbott@mac.com>
parents:
13937
diff
changeset
|
1700 %!demo |
16799
286904321282
Use unmodified axes "position" and "outerposition" properties for legend().
Ben Abbott <bpabbott@mac.com>
parents:
16796
diff
changeset
|
1701 %! clf; |
14207
57e3490094e1
Fix order of legend entries for plotyy. Bug # 35314.
Ben Abbott <bpabbott@mac.com>
parents:
14138
diff
changeset
|
1702 %! x = 0:10; |
57e3490094e1
Fix order of legend entries for plotyy. Bug # 35314.
Ben Abbott <bpabbott@mac.com>
parents:
14138
diff
changeset
|
1703 %! y1 = rand (size (x)); |
57e3490094e1
Fix order of legend entries for plotyy. Bug # 35314.
Ben Abbott <bpabbott@mac.com>
parents:
14138
diff
changeset
|
1704 %! y2 = rand (size (x)); |
57e3490094e1
Fix order of legend entries for plotyy. Bug # 35314.
Ben Abbott <bpabbott@mac.com>
parents:
14138
diff
changeset
|
1705 %! [ax, h1, h2] = plotyy (x, y1, x, y2); |
24434
436deae9f9ab
legend.m: Overhaul function for greater Matlab compatibility.
Rik <rik@octave.org>
parents:
24432
diff
changeset
|
1706 %! ylabel (ax(2), {"Orange", "Y", "Axis"}); |
436deae9f9ab
legend.m: Overhaul function for greater Matlab compatibility.
Rik <rik@octave.org>
parents:
24432
diff
changeset
|
1707 %! title ('plotyy legend test #3: "eastoutside" adjusts to ylabel'); |
436deae9f9ab
legend.m: Overhaul function for greater Matlab compatibility.
Rik <rik@octave.org>
parents:
24432
diff
changeset
|
1708 %! drawnow (); |
436deae9f9ab
legend.m: Overhaul function for greater Matlab compatibility.
Rik <rik@octave.org>
parents:
24432
diff
changeset
|
1709 %! legend ([h1, h2], {"Blue", "Orange"}, "location", "eastoutside"); |
13979
f35b593688a5
Changing the legend's interpreter property should be inherited by the
Ben Abbott <bpabbott@mac.com>
parents:
13937
diff
changeset
|
1710 |
20408
71bd638e0ef6
legend.m: Fix listeners on legend line objects (bug #45563).
Rik <rik@octave.org>
parents:
20286
diff
changeset
|
1711 %!demo |
71bd638e0ef6
legend.m: Fix listeners on legend line objects (bug #45563).
Rik <rik@octave.org>
parents:
20286
diff
changeset
|
1712 %! clf; |
71bd638e0ef6
legend.m: Fix listeners on legend line objects (bug #45563).
Rik <rik@octave.org>
parents:
20286
diff
changeset
|
1713 %! plot (1:10, 1:10); |
22302
1c4cd12987f5
Use Octave syntax in graphics demos.
Rik <rik@octave.org>
parents:
22151
diff
changeset
|
1714 %! title ("a very long label can sometimes cause problems"); |
1c4cd12987f5
Use Octave syntax in graphics demos.
Rik <rik@octave.org>
parents:
22151
diff
changeset
|
1715 %! legend ("hello very big world", "location", "northeastoutside"); |
20408
71bd638e0ef6
legend.m: Fix listeners on legend line objects (bug #45563).
Rik <rik@octave.org>
parents:
20286
diff
changeset
|
1716 |
22302
1c4cd12987f5
Use Octave syntax in graphics demos.
Rik <rik@octave.org>
parents:
22151
diff
changeset
|
1717 %!demo # bug 36408 |
16799
286904321282
Use unmodified axes "position" and "outerposition" properties for legend().
Ben Abbott <bpabbott@mac.com>
parents:
16796
diff
changeset
|
1718 %! clf; |
16805
2281d957cde6
legend.m: Tweak code for Octave coding conventions.
Rik <rik@octave.org>
parents:
16800
diff
changeset
|
1719 %! subplot (3,1,1); |
16921
9a316ec12b5f
legend.m: Use Matlab coding conventions in %!demo blocks so comparison script can run.
Rik <rik@octave.org>
parents:
16910
diff
changeset
|
1720 %! plot (rand (1,4)); |
9a316ec12b5f
legend.m: Use Matlab coding conventions in %!demo blocks so comparison script can run.
Rik <rik@octave.org>
parents:
16910
diff
changeset
|
1721 %! xlabel xlabel; |
9a316ec12b5f
legend.m: Use Matlab coding conventions in %!demo blocks so comparison script can run.
Rik <rik@octave.org>
parents:
16910
diff
changeset
|
1722 %! ylabel ylabel; |
22302
1c4cd12987f5
Use Octave syntax in graphics demos.
Rik <rik@octave.org>
parents:
22151
diff
changeset
|
1723 %! title ("Subplots adjust to the legend placed outside"); |
1c4cd12987f5
Use Octave syntax in graphics demos.
Rik <rik@octave.org>
parents:
22151
diff
changeset
|
1724 %! legend ({"1"}, "location", "northeastoutside"); |
16805
2281d957cde6
legend.m: Tweak code for Octave coding conventions.
Rik <rik@octave.org>
parents:
16800
diff
changeset
|
1725 %! subplot (3,1,2); |
16921
9a316ec12b5f
legend.m: Use Matlab coding conventions in %!demo blocks so comparison script can run.
Rik <rik@octave.org>
parents:
16910
diff
changeset
|
1726 %! plot (rand (1,4)); |
9a316ec12b5f
legend.m: Use Matlab coding conventions in %!demo blocks so comparison script can run.
Rik <rik@octave.org>
parents:
16910
diff
changeset
|
1727 %! xlabel xlabel; |
9a316ec12b5f
legend.m: Use Matlab coding conventions in %!demo blocks so comparison script can run.
Rik <rik@octave.org>
parents:
16910
diff
changeset
|
1728 %! ylabel ylabel; |
22302
1c4cd12987f5
Use Octave syntax in graphics demos.
Rik <rik@octave.org>
parents:
22151
diff
changeset
|
1729 %! legend ({"1234567890"}, "location", "eastoutside"); |
16805
2281d957cde6
legend.m: Tweak code for Octave coding conventions.
Rik <rik@octave.org>
parents:
16800
diff
changeset
|
1730 %! subplot (3,1,3); |
16921
9a316ec12b5f
legend.m: Use Matlab coding conventions in %!demo blocks so comparison script can run.
Rik <rik@octave.org>
parents:
16910
diff
changeset
|
1731 %! plot (rand (1,4)); |
9a316ec12b5f
legend.m: Use Matlab coding conventions in %!demo blocks so comparison script can run.
Rik <rik@octave.org>
parents:
16910
diff
changeset
|
1732 %! xlabel xlabel; |
9a316ec12b5f
legend.m: Use Matlab coding conventions in %!demo blocks so comparison script can run.
Rik <rik@octave.org>
parents:
16910
diff
changeset
|
1733 %! ylabel ylabel; |
22302
1c4cd12987f5
Use Octave syntax in graphics demos.
Rik <rik@octave.org>
parents:
22151
diff
changeset
|
1734 %! legend ({"12345678901234567890"}, "location", "southeastoutside"); |
16799
286904321282
Use unmodified axes "position" and "outerposition" properties for legend().
Ben Abbott <bpabbott@mac.com>
parents:
16796
diff
changeset
|
1735 |
22302
1c4cd12987f5
Use Octave syntax in graphics demos.
Rik <rik@octave.org>
parents:
22151
diff
changeset
|
1736 %!demo # bug 36408 |
16799
286904321282
Use unmodified axes "position" and "outerposition" properties for legend().
Ben Abbott <bpabbott@mac.com>
parents:
16796
diff
changeset
|
1737 %! clf; |
16921
9a316ec12b5f
legend.m: Use Matlab coding conventions in %!demo blocks so comparison script can run.
Rik <rik@octave.org>
parents:
16910
diff
changeset
|
1738 %! subplot (3,1,1); |
9a316ec12b5f
legend.m: Use Matlab coding conventions in %!demo blocks so comparison script can run.
Rik <rik@octave.org>
parents:
16910
diff
changeset
|
1739 %! plot (rand (1,4)); |
22302
1c4cd12987f5
Use Octave syntax in graphics demos.
Rik <rik@octave.org>
parents:
22151
diff
changeset
|
1740 %! title ("Subplots adjust to the legend placed outside"); |
1c4cd12987f5
Use Octave syntax in graphics demos.
Rik <rik@octave.org>
parents:
22151
diff
changeset
|
1741 %! legend ({"1"}, "location", "northwestoutside"); |
16805
2281d957cde6
legend.m: Tweak code for Octave coding conventions.
Rik <rik@octave.org>
parents:
16800
diff
changeset
|
1742 %! subplot (3,1,2); |
16921
9a316ec12b5f
legend.m: Use Matlab coding conventions in %!demo blocks so comparison script can run.
Rik <rik@octave.org>
parents:
16910
diff
changeset
|
1743 %! plot (rand (1,4)); |
22302
1c4cd12987f5
Use Octave syntax in graphics demos.
Rik <rik@octave.org>
parents:
22151
diff
changeset
|
1744 %! legend ({"1234567890"}, "location", "westoutside"); |
16805
2281d957cde6
legend.m: Tweak code for Octave coding conventions.
Rik <rik@octave.org>
parents:
16800
diff
changeset
|
1745 %! subplot (3,1,3); |
16921
9a316ec12b5f
legend.m: Use Matlab coding conventions in %!demo blocks so comparison script can run.
Rik <rik@octave.org>
parents:
16910
diff
changeset
|
1746 %! plot (rand (1,4)); |
22302
1c4cd12987f5
Use Octave syntax in graphics demos.
Rik <rik@octave.org>
parents:
22151
diff
changeset
|
1747 %! legend ({"12345678901234567890"}, "location", "southwestoutside"); |
16799
286904321282
Use unmodified axes "position" and "outerposition" properties for legend().
Ben Abbott <bpabbott@mac.com>
parents:
16796
diff
changeset
|
1748 |
22302
1c4cd12987f5
Use Octave syntax in graphics demos.
Rik <rik@octave.org>
parents:
22151
diff
changeset
|
1749 %!demo # bug 36408 |
16908
1c4be5dcacd5
Add demos to legend.m using subplots.
Ben Abbott <bpabbott@mac.com>
parents:
16885
diff
changeset
|
1750 %! clf; |
1c4be5dcacd5
Add demos to legend.m using subplots.
Ben Abbott <bpabbott@mac.com>
parents:
16885
diff
changeset
|
1751 %! subplot (3,1,1); |
16921
9a316ec12b5f
legend.m: Use Matlab coding conventions in %!demo blocks so comparison script can run.
Rik <rik@octave.org>
parents:
16910
diff
changeset
|
1752 %! plot (rand (1,4)); |
22302
1c4cd12987f5
Use Octave syntax in graphics demos.
Rik <rik@octave.org>
parents:
22151
diff
changeset
|
1753 %! set (gca (), "yaxislocation", "right"); |
1c4cd12987f5
Use Octave syntax in graphics demos.
Rik <rik@octave.org>
parents:
22151
diff
changeset
|
1754 %! xlabel ("xlabel"); |
1c4cd12987f5
Use Octave syntax in graphics demos.
Rik <rik@octave.org>
parents:
22151
diff
changeset
|
1755 %! ylabel ("ylabel"); |
1c4cd12987f5
Use Octave syntax in graphics demos.
Rik <rik@octave.org>
parents:
22151
diff
changeset
|
1756 %! title ("Subplots adjust to the legend placed outside"); |
1c4cd12987f5
Use Octave syntax in graphics demos.
Rik <rik@octave.org>
parents:
22151
diff
changeset
|
1757 %! legend ({"1"}, "location", "northeastoutside"); |
16908
1c4be5dcacd5
Add demos to legend.m using subplots.
Ben Abbott <bpabbott@mac.com>
parents:
16885
diff
changeset
|
1758 %! subplot (3,1,2); |
16921
9a316ec12b5f
legend.m: Use Matlab coding conventions in %!demo blocks so comparison script can run.
Rik <rik@octave.org>
parents:
16910
diff
changeset
|
1759 %! plot (rand (1,4)); |
22302
1c4cd12987f5
Use Octave syntax in graphics demos.
Rik <rik@octave.org>
parents:
22151
diff
changeset
|
1760 %! set (gca (), "yaxislocation", "right"); |
1c4cd12987f5
Use Octave syntax in graphics demos.
Rik <rik@octave.org>
parents:
22151
diff
changeset
|
1761 %! xlabel ("xlabel"); |
1c4cd12987f5
Use Octave syntax in graphics demos.
Rik <rik@octave.org>
parents:
22151
diff
changeset
|
1762 %! ylabel ("ylabel"); |
1c4cd12987f5
Use Octave syntax in graphics demos.
Rik <rik@octave.org>
parents:
22151
diff
changeset
|
1763 %! legend ({"1234567890"}, "location", "eastoutside"); |
16908
1c4be5dcacd5
Add demos to legend.m using subplots.
Ben Abbott <bpabbott@mac.com>
parents:
16885
diff
changeset
|
1764 %! subplot (3,1,3); |
16921
9a316ec12b5f
legend.m: Use Matlab coding conventions in %!demo blocks so comparison script can run.
Rik <rik@octave.org>
parents:
16910
diff
changeset
|
1765 %! plot (rand (1,4)); |
22302
1c4cd12987f5
Use Octave syntax in graphics demos.
Rik <rik@octave.org>
parents:
22151
diff
changeset
|
1766 %! set (gca (), "yaxislocation", "right"); |
1c4cd12987f5
Use Octave syntax in graphics demos.
Rik <rik@octave.org>
parents:
22151
diff
changeset
|
1767 %! xlabel ("xlabel"); |
1c4cd12987f5
Use Octave syntax in graphics demos.
Rik <rik@octave.org>
parents:
22151
diff
changeset
|
1768 %! ylabel ("ylabel"); |
1c4cd12987f5
Use Octave syntax in graphics demos.
Rik <rik@octave.org>
parents:
22151
diff
changeset
|
1769 %! legend ({"12345678901234567890"}, "location", "southeastoutside"); |
16908
1c4be5dcacd5
Add demos to legend.m using subplots.
Ben Abbott <bpabbott@mac.com>
parents:
16885
diff
changeset
|
1770 |
22302
1c4cd12987f5
Use Octave syntax in graphics demos.
Rik <rik@octave.org>
parents:
22151
diff
changeset
|
1771 %!demo # bug 36408 |
16908
1c4be5dcacd5
Add demos to legend.m using subplots.
Ben Abbott <bpabbott@mac.com>
parents:
16885
diff
changeset
|
1772 %! clf; |
16921
9a316ec12b5f
legend.m: Use Matlab coding conventions in %!demo blocks so comparison script can run.
Rik <rik@octave.org>
parents:
16910
diff
changeset
|
1773 %! subplot (3,1,1); |
9a316ec12b5f
legend.m: Use Matlab coding conventions in %!demo blocks so comparison script can run.
Rik <rik@octave.org>
parents:
16910
diff
changeset
|
1774 %! plot (rand (1,4)); |
22302
1c4cd12987f5
Use Octave syntax in graphics demos.
Rik <rik@octave.org>
parents:
22151
diff
changeset
|
1775 %! set (gca (), "yaxislocation", "right"); |
1c4cd12987f5
Use Octave syntax in graphics demos.
Rik <rik@octave.org>
parents:
22151
diff
changeset
|
1776 %! xlabel ("xlabel"); |
1c4cd12987f5
Use Octave syntax in graphics demos.
Rik <rik@octave.org>
parents:
22151
diff
changeset
|
1777 %! ylabel ("ylabel"); |
1c4cd12987f5
Use Octave syntax in graphics demos.
Rik <rik@octave.org>
parents:
22151
diff
changeset
|
1778 %! title ("Subplots adjust to the legend placed outside"); |
1c4cd12987f5
Use Octave syntax in graphics demos.
Rik <rik@octave.org>
parents:
22151
diff
changeset
|
1779 %! legend ({"1"}, "location", "northwestoutside"); |
16908
1c4be5dcacd5
Add demos to legend.m using subplots.
Ben Abbott <bpabbott@mac.com>
parents:
16885
diff
changeset
|
1780 %! subplot (3,1,2); |
16921
9a316ec12b5f
legend.m: Use Matlab coding conventions in %!demo blocks so comparison script can run.
Rik <rik@octave.org>
parents:
16910
diff
changeset
|
1781 %! plot (rand (1,4)); |
22302
1c4cd12987f5
Use Octave syntax in graphics demos.
Rik <rik@octave.org>
parents:
22151
diff
changeset
|
1782 %! set (gca (), "yaxislocation", "right"); |
1c4cd12987f5
Use Octave syntax in graphics demos.
Rik <rik@octave.org>
parents:
22151
diff
changeset
|
1783 %! xlabel ("xlabel"); |
1c4cd12987f5
Use Octave syntax in graphics demos.
Rik <rik@octave.org>
parents:
22151
diff
changeset
|
1784 %! ylabel ("ylabel"); |
1c4cd12987f5
Use Octave syntax in graphics demos.
Rik <rik@octave.org>
parents:
22151
diff
changeset
|
1785 %! legend ({"1234567890"}, "location", "westoutside"); |
16908
1c4be5dcacd5
Add demos to legend.m using subplots.
Ben Abbott <bpabbott@mac.com>
parents:
16885
diff
changeset
|
1786 %! subplot (3,1,3); |
16921
9a316ec12b5f
legend.m: Use Matlab coding conventions in %!demo blocks so comparison script can run.
Rik <rik@octave.org>
parents:
16910
diff
changeset
|
1787 %! plot (rand (1,4)); |
22302
1c4cd12987f5
Use Octave syntax in graphics demos.
Rik <rik@octave.org>
parents:
22151
diff
changeset
|
1788 %! set (gca (), "yaxislocation", "right"); |
1c4cd12987f5
Use Octave syntax in graphics demos.
Rik <rik@octave.org>
parents:
22151
diff
changeset
|
1789 %! xlabel ("xlabel"); |
1c4cd12987f5
Use Octave syntax in graphics demos.
Rik <rik@octave.org>
parents:
22151
diff
changeset
|
1790 %! ylabel ("ylabel"); |
1c4cd12987f5
Use Octave syntax in graphics demos.
Rik <rik@octave.org>
parents:
22151
diff
changeset
|
1791 %! legend ({"12345678901234567890"}, "location", "southwestoutside"); |
16908
1c4be5dcacd5
Add demos to legend.m using subplots.
Ben Abbott <bpabbott@mac.com>
parents:
16885
diff
changeset
|
1792 |
22302
1c4cd12987f5
Use Octave syntax in graphics demos.
Rik <rik@octave.org>
parents:
22151
diff
changeset
|
1793 %!demo # bug 36408; |
16908
1c4be5dcacd5
Add demos to legend.m using subplots.
Ben Abbott <bpabbott@mac.com>
parents:
16885
diff
changeset
|
1794 %! clf; |
16921
9a316ec12b5f
legend.m: Use Matlab coding conventions in %!demo blocks so comparison script can run.
Rik <rik@octave.org>
parents:
16910
diff
changeset
|
1795 %! subplot (3,1,1); |
9a316ec12b5f
legend.m: Use Matlab coding conventions in %!demo blocks so comparison script can run.
Rik <rik@octave.org>
parents:
16910
diff
changeset
|
1796 %! plot (rand (1,4)); |
22302
1c4cd12987f5
Use Octave syntax in graphics demos.
Rik <rik@octave.org>
parents:
22151
diff
changeset
|
1797 %! set (gca (), "xaxislocation", "top"); |
1c4cd12987f5
Use Octave syntax in graphics demos.
Rik <rik@octave.org>
parents:
22151
diff
changeset
|
1798 %! xlabel ("xlabel"); |
1c4cd12987f5
Use Octave syntax in graphics demos.
Rik <rik@octave.org>
parents:
22151
diff
changeset
|
1799 %! ylabel ("ylabel"); |
1c4cd12987f5
Use Octave syntax in graphics demos.
Rik <rik@octave.org>
parents:
22151
diff
changeset
|
1800 %! title ("Subplots adjust to the legend placed outside"); |
1c4cd12987f5
Use Octave syntax in graphics demos.
Rik <rik@octave.org>
parents:
22151
diff
changeset
|
1801 %! legend ({"1"}, "location", "northwestoutside"); |
16908
1c4be5dcacd5
Add demos to legend.m using subplots.
Ben Abbott <bpabbott@mac.com>
parents:
16885
diff
changeset
|
1802 %! subplot (3,1,2); |
16921
9a316ec12b5f
legend.m: Use Matlab coding conventions in %!demo blocks so comparison script can run.
Rik <rik@octave.org>
parents:
16910
diff
changeset
|
1803 %! plot (rand (1,4)); |
22302
1c4cd12987f5
Use Octave syntax in graphics demos.
Rik <rik@octave.org>
parents:
22151
diff
changeset
|
1804 %! set (gca (), "xaxislocation", "top"); |
1c4cd12987f5
Use Octave syntax in graphics demos.
Rik <rik@octave.org>
parents:
22151
diff
changeset
|
1805 %! xlabel ("xlabel"); |
1c4cd12987f5
Use Octave syntax in graphics demos.
Rik <rik@octave.org>
parents:
22151
diff
changeset
|
1806 %! ylabel ("ylabel"); |
1c4cd12987f5
Use Octave syntax in graphics demos.
Rik <rik@octave.org>
parents:
22151
diff
changeset
|
1807 %! legend ({"1234567890"}, "location", "westoutside"); |
16908
1c4be5dcacd5
Add demos to legend.m using subplots.
Ben Abbott <bpabbott@mac.com>
parents:
16885
diff
changeset
|
1808 %! subplot (3,1,3); |
16921
9a316ec12b5f
legend.m: Use Matlab coding conventions in %!demo blocks so comparison script can run.
Rik <rik@octave.org>
parents:
16910
diff
changeset
|
1809 %! plot (rand (1,4)); |
22302
1c4cd12987f5
Use Octave syntax in graphics demos.
Rik <rik@octave.org>
parents:
22151
diff
changeset
|
1810 %! set (gca (), "xaxislocation", "top"); |
1c4cd12987f5
Use Octave syntax in graphics demos.
Rik <rik@octave.org>
parents:
22151
diff
changeset
|
1811 %! xlabel ("xlabel"); |
1c4cd12987f5
Use Octave syntax in graphics demos.
Rik <rik@octave.org>
parents:
22151
diff
changeset
|
1812 %! ylabel ("ylabel"); |
1c4cd12987f5
Use Octave syntax in graphics demos.
Rik <rik@octave.org>
parents:
22151
diff
changeset
|
1813 %! legend ({"12345678901234567890"}, "location", "southwestoutside"); |
16921
9a316ec12b5f
legend.m: Use Matlab coding conventions in %!demo blocks so comparison script can run.
Rik <rik@octave.org>
parents:
16910
diff
changeset
|
1814 |
27710
9fd8534d3607
legend.m: Code cleanup for cset c66467f74278.
Rik <rik@octave.org>
parents:
27708
diff
changeset
|
1815 %!demo # bug 39697 |
17190
df4c4b7708a4
Add titles and clean-up plotting %!demos.
Rik <rik@octave.org>
parents:
17179
diff
changeset
|
1816 %! clf; |
17179
828e8852efa9
legend.m: Add %!demo block showing bug #39697.
Rik <rik@octave.org>
parents:
17174
diff
changeset
|
1817 %! plot (1:10); |
22302
1c4cd12987f5
Use Octave syntax in graphics demos.
Rik <rik@octave.org>
parents:
22151
diff
changeset
|
1818 %! legend ("Legend Text"); |
27710
9fd8534d3607
legend.m: Code cleanup for cset c66467f74278.
Rik <rik@octave.org>
parents:
27708
diff
changeset
|
1819 %! title ({"Multi-line", "titles", "are *not* a", "problem"}); |
17179
828e8852efa9
legend.m: Add %!demo block showing bug #39697.
Rik <rik@octave.org>
parents:
17174
diff
changeset
|
1820 |
27708
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
1821 ## Test input validation |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
1822 %!test |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
1823 %! hf = figure ("visible", "off"); |
16973
d429a05dc11c
legend.m: Move %!test block below %!demo blocks per standard usage.
Rik <rik@octave.org>
parents:
16933
diff
changeset
|
1824 %! unwind_protect |
27708
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
1825 %! try |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
1826 %! legend (); |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
1827 %! catch |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
1828 %! [~, id] = lasterr (); |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
1829 %! assert (id, "Octave:legend:no-object"); |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
1830 %! end_try_catch |
16973
d429a05dc11c
legend.m: Move %!test block below %!demo blocks per standard usage.
Rik <rik@octave.org>
parents:
16933
diff
changeset
|
1831 %! unwind_protect_cleanup |
27708
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
1832 %! close (hf); |
18647
ce36233e4849
legend.m: Correctly handle axis handle as first argument (bug #42035).
Rik <rik@octave.org>
parents:
18644
diff
changeset
|
1833 %! end_unwind_protect |
24434
436deae9f9ab
legend.m: Overhaul function for greater Matlab compatibility.
Rik <rik@octave.org>
parents:
24432
diff
changeset
|
1834 |
436deae9f9ab
legend.m: Overhaul function for greater Matlab compatibility.
Rik <rik@octave.org>
parents:
24432
diff
changeset
|
1835 %!test |
27708
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
1836 %! hf = figure ("visible", "off"); |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
1837 %! unwind_protect |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
1838 %! axes (); |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
1839 %! try |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
1840 %! legend (); |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
1841 %! catch |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
1842 %! [~, id] = lasterr (); |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
1843 %! assert (id, "Octave:legend:no-object"); |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
1844 %! end_try_catch |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
1845 %! unwind_protect_cleanup |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
1846 %! close (hf); |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
1847 %! end_unwind_protect |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
1848 |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
1849 %!test |
24434
436deae9f9ab
legend.m: Overhaul function for greater Matlab compatibility.
Rik <rik@octave.org>
parents:
24432
diff
changeset
|
1850 %! hf = figure ("visible", "off"); |
436deae9f9ab
legend.m: Overhaul function for greater Matlab compatibility.
Rik <rik@octave.org>
parents:
24432
diff
changeset
|
1851 %! unwind_protect |
27708
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
1852 %! axes (); |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
1853 %! light (); |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
1854 %! try |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
1855 %! legend (); |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
1856 %! catch |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
1857 %! [~, id] = lasterr (); |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
1858 %! assert (id, "Octave:legend:no-object"); |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
1859 %! end_try_catch |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
1860 %! unwind_protect_cleanup |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
1861 %! close (hf); |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
1862 %! end_unwind_protect |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
1863 |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
1864 %!test |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
1865 %! hf = figure ("visible", "off"); |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
1866 %! unwind_protect |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
1867 %! axes (); |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
1868 %! hli = light (); |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
1869 %! try |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
1870 %! legend (hli); |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
1871 %! catch |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
1872 %! [~, id] = lasterr (); |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
1873 %! assert (id, "Octave:legend:bad-object"); |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
1874 %! end_try_catch |
24434
436deae9f9ab
legend.m: Overhaul function for greater Matlab compatibility.
Rik <rik@octave.org>
parents:
24432
diff
changeset
|
1875 %! unwind_protect_cleanup |
436deae9f9ab
legend.m: Overhaul function for greater Matlab compatibility.
Rik <rik@octave.org>
parents:
24432
diff
changeset
|
1876 %! close (hf); |
436deae9f9ab
legend.m: Overhaul function for greater Matlab compatibility.
Rik <rik@octave.org>
parents:
24432
diff
changeset
|
1877 %! end_unwind_protect |
436deae9f9ab
legend.m: Overhaul function for greater Matlab compatibility.
Rik <rik@octave.org>
parents:
24432
diff
changeset
|
1878 |
436deae9f9ab
legend.m: Overhaul function for greater Matlab compatibility.
Rik <rik@octave.org>
parents:
24432
diff
changeset
|
1879 %!test |
436deae9f9ab
legend.m: Overhaul function for greater Matlab compatibility.
Rik <rik@octave.org>
parents:
24432
diff
changeset
|
1880 %! hf = figure ("visible", "off"); |
436deae9f9ab
legend.m: Overhaul function for greater Matlab compatibility.
Rik <rik@octave.org>
parents:
24432
diff
changeset
|
1881 %! unwind_protect |
27708
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
1882 %! axes (); |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
1883 %! hplot = plot (rand (3)); |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
1884 %! try |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
1885 %! legend (hplot, struct); |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
1886 %! catch |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
1887 %! [~, id] = lasterr (); |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
1888 %! assert (id, "Octave:invalid-fun-call"); |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
1889 %! end_try_catch |
24434
436deae9f9ab
legend.m: Overhaul function for greater Matlab compatibility.
Rik <rik@octave.org>
parents:
24432
diff
changeset
|
1890 %! unwind_protect_cleanup |
436deae9f9ab
legend.m: Overhaul function for greater Matlab compatibility.
Rik <rik@octave.org>
parents:
24432
diff
changeset
|
1891 %! close (hf); |
436deae9f9ab
legend.m: Overhaul function for greater Matlab compatibility.
Rik <rik@octave.org>
parents:
24432
diff
changeset
|
1892 %! end_unwind_protect |
436deae9f9ab
legend.m: Overhaul function for greater Matlab compatibility.
Rik <rik@octave.org>
parents:
24432
diff
changeset
|
1893 |
436deae9f9ab
legend.m: Overhaul function for greater Matlab compatibility.
Rik <rik@octave.org>
parents:
24432
diff
changeset
|
1894 %!test |
436deae9f9ab
legend.m: Overhaul function for greater Matlab compatibility.
Rik <rik@octave.org>
parents:
24432
diff
changeset
|
1895 %! hf = figure ("visible", "off"); |
436deae9f9ab
legend.m: Overhaul function for greater Matlab compatibility.
Rik <rik@octave.org>
parents:
24432
diff
changeset
|
1896 %! unwind_protect |
27708
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
1897 %! axes (); |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
1898 %! hplot = plot (rand (3)); |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
1899 %! try |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
1900 %! legend ("a", "b", "c", hplot); |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
1901 %! catch |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
1902 %! [~, id] = lasterr (); |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
1903 %! assert (id, "Octave:invalid-fun-call"); |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
1904 %! end_try_catch |
24434
436deae9f9ab
legend.m: Overhaul function for greater Matlab compatibility.
Rik <rik@octave.org>
parents:
24432
diff
changeset
|
1905 %! unwind_protect_cleanup |
436deae9f9ab
legend.m: Overhaul function for greater Matlab compatibility.
Rik <rik@octave.org>
parents:
24432
diff
changeset
|
1906 %! close (hf); |
436deae9f9ab
legend.m: Overhaul function for greater Matlab compatibility.
Rik <rik@octave.org>
parents:
24432
diff
changeset
|
1907 %! end_unwind_protect |
27708
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
1908 |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
1909 ## Test bugs in previous implementation |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
1910 %!test <39697> |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
1911 %! hf = figure ("visible", "off"); |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
1912 %! unwind_protect |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
1913 %! axes ("units", "normalized"); |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
1914 %! plot (1:10); |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
1915 %! hl = legend ("Legend Text", "units", "normalized"); |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
1916 %! title ({'Multi-line', 'titles', 'are a', 'problem'}); |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
1917 %! pos = get (gca, 'position'); |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
1918 %! axtop = sum (pos(2:2:4)); |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
1919 %! pos = get (hl, 'position'); |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
1920 %! legtop = sum (pos(2:2:4)); |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
1921 %! assert (legtop < axtop); |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
1922 %! unwind_protect_cleanup |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
1923 %! close (hf); |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
1924 %! end_unwind_protect |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
1925 |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
1926 %!test <40333> |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
1927 %! hf = figure ("visible", "off"); |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
1928 %! unwind_protect |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
1929 %! axes ("units", "normalized"); |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
1930 %! plot (1:10); |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
1931 %! hl = legend ("Legend Text", "units", "normalized"); |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
1932 %! pos = get (gca, 'position'); |
27710
9fd8534d3607
legend.m: Code cleanup for cset c66467f74278.
Rik <rik@octave.org>
parents:
27708
diff
changeset
|
1933 %! set (hf, 'position', [0, 0, 200, 200]); |
27708
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
1934 %! set (hl, 'fontsize', 20); |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
1935 %! assert (get (gca, 'position'), pos, 2*eps); |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
1936 %! unwind_protect_cleanup |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
1937 %! close (hf); |
c66467f74278
Rewrite legend (task #14243)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27465
diff
changeset
|
1938 %! end_unwind_protect |