annotate scripts/plot/util/copyobj.m @ 18570:5ec4b7006b82

copyobj.m: Fix bug when restoring axes to a figure that had no axes to begin with (bug #41849). * copyobj.m: Get axes using get (cf, "currentaxes") rather than gca to avoid creating axes when they do not exist. When restoring axes at the end of function, only do so if ca is not empty.
author Rik <rik@octave.org>
date Thu, 13 Mar 2014 13:58:35 -0700
parents 9c8321ea6f58
children ee125c82e01e
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
17744
d63878346099 maint: Update copyright notices for release.
John W. Eaton <jwe@octave.org>
parents: 17572
diff changeset
1 ## Copyright (C) 2012-2013 pdiribarne
14867
97ce18b62d0f New Functions; copyobj.m, hdl2struct.m, struct2hdl.m
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
2 ##
17795
0a8c35ae5ce1 maint: Fix various problems with GPL copyright statements.
Rik <rik@octave.org>
parents: 17744
diff changeset
3 ## This file is part of Octave.
0a8c35ae5ce1 maint: Fix various problems with GPL copyright statements.
Rik <rik@octave.org>
parents: 17744
diff changeset
4 ##
14867
97ce18b62d0f New Functions; copyobj.m, hdl2struct.m, struct2hdl.m
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
5 ## This program is free software; you can redistribute it and/or modify
97ce18b62d0f New Functions; copyobj.m, hdl2struct.m, struct2hdl.m
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
6 ## it under the terms of the GNU General Public License as published by
97ce18b62d0f New Functions; copyobj.m, hdl2struct.m, struct2hdl.m
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
7 ## the Free Software Foundation; either version 3 of the License, or
97ce18b62d0f New Functions; copyobj.m, hdl2struct.m, struct2hdl.m
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
8 ## (at your option) any later version.
97ce18b62d0f New Functions; copyobj.m, hdl2struct.m, struct2hdl.m
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
9 ##
17795
0a8c35ae5ce1 maint: Fix various problems with GPL copyright statements.
Rik <rik@octave.org>
parents: 17744
diff changeset
10 ## Octave is distributed in the hope that it will be useful,
14867
97ce18b62d0f New Functions; copyobj.m, hdl2struct.m, struct2hdl.m
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
11 ## but WITHOUT ANY WARRANTY; without even the implied warranty of
97ce18b62d0f New Functions; copyobj.m, hdl2struct.m, struct2hdl.m
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
12 ## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
97ce18b62d0f New Functions; copyobj.m, hdl2struct.m, struct2hdl.m
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
13 ## GNU General Public License for more details.
97ce18b62d0f New Functions; copyobj.m, hdl2struct.m, struct2hdl.m
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
14 ##
97ce18b62d0f New Functions; copyobj.m, hdl2struct.m, struct2hdl.m
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
15 ## You should have received a copy of the GNU General Public License
97ce18b62d0f New Functions; copyobj.m, hdl2struct.m, struct2hdl.m
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
16 ## along with Octave; see the file COPYING. If not, see
97ce18b62d0f New Functions; copyobj.m, hdl2struct.m, struct2hdl.m
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
17 ## <http://www.gnu.org/licenses/>.
97ce18b62d0f New Functions; copyobj.m, hdl2struct.m, struct2hdl.m
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
18
97ce18b62d0f New Functions; copyobj.m, hdl2struct.m, struct2hdl.m
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
19 ## -*- texinfo -*-
15007
8f0e3c5bfa5f doc: Periodic grammarcheck of documentation
Rik <rik@octave.org>
parents: 14867
diff changeset
20 ## @deftypefn {Function File} {@var{hnew} =} copyobj (@var{horig})
8f0e3c5bfa5f doc: Periodic grammarcheck of documentation
Rik <rik@octave.org>
parents: 14867
diff changeset
21 ## @deftypefnx {Function File} {@var{hnew} =} copyobj (@var{horig}, @var{hparent})
17122
eaab03308c0b doc: Rewrite docstrings for most plot functions.
Rik <rik@octave.org>
parents: 17006
diff changeset
22 ## Construct a copy of the graphic object associated with handle @var{horig}
15007
8f0e3c5bfa5f doc: Periodic grammarcheck of documentation
Rik <rik@octave.org>
parents: 14867
diff changeset
23 ## and return a handle @var{hnew} to the new object.
17122
eaab03308c0b doc: Rewrite docstrings for most plot functions.
Rik <rik@octave.org>
parents: 17006
diff changeset
24 ##
15007
8f0e3c5bfa5f doc: Periodic grammarcheck of documentation
Rik <rik@octave.org>
parents: 14867
diff changeset
25 ## If a parent handle @var{hparent} (root, figure, axes, or hggroup) is
17122
eaab03308c0b doc: Rewrite docstrings for most plot functions.
Rik <rik@octave.org>
parents: 17006
diff changeset
26 ## specified, the copied object will be created as a child of @var{hparent}.
eaab03308c0b doc: Rewrite docstrings for most plot functions.
Rik <rik@octave.org>
parents: 17006
diff changeset
27 ## @seealso{struct2hdl, hdl2struct, findobj}
14867
97ce18b62d0f New Functions; copyobj.m, hdl2struct.m, struct2hdl.m
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
28 ## @end deftypefn
97ce18b62d0f New Functions; copyobj.m, hdl2struct.m, struct2hdl.m
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
29
97ce18b62d0f New Functions; copyobj.m, hdl2struct.m, struct2hdl.m
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
30 ## Author: pdiribarne <pdiribarne@new-host.home>
97ce18b62d0f New Functions; copyobj.m, hdl2struct.m, struct2hdl.m
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
31 ## Created: 2012-04-01
97ce18b62d0f New Functions; copyobj.m, hdl2struct.m, struct2hdl.m
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
32
15011
f34bea431e4f maint: Use Octave coding standards for copyobj.m, hdl2struct.m, struct2hdl.m.
Rik <rik@octave.org>
parents: 15007
diff changeset
33 function hnew = copyobj (horig, hparent = 0)
14867
97ce18b62d0f New Functions; copyobj.m, hdl2struct.m, struct2hdl.m
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
34
97ce18b62d0f New Functions; copyobj.m, hdl2struct.m, struct2hdl.m
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
35 partypes = {"root", "figure", "axes", "hggroup"};
97ce18b62d0f New Functions; copyobj.m, hdl2struct.m, struct2hdl.m
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
36 othertypes = {"line", "patch", "surface", "image", "text"};
97ce18b62d0f New Functions; copyobj.m, hdl2struct.m, struct2hdl.m
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
37 alltypes = [partypes othertypes];
97ce18b62d0f New Functions; copyobj.m, hdl2struct.m, struct2hdl.m
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
38
15011
f34bea431e4f maint: Use Octave coding standards for copyobj.m, hdl2struct.m, struct2hdl.m.
Rik <rik@octave.org>
parents: 15007
diff changeset
39 if (! ishandle (horig) || nargin > 2)
14867
97ce18b62d0f New Functions; copyobj.m, hdl2struct.m, struct2hdl.m
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
40 print_usage ();
15011
f34bea431e4f maint: Use Octave coding standards for copyobj.m, hdl2struct.m, struct2hdl.m.
Rik <rik@octave.org>
parents: 15007
diff changeset
41 elseif (! ishandle (hparent))
f34bea431e4f maint: Use Octave coding standards for copyobj.m, hdl2struct.m, struct2hdl.m.
Rik <rik@octave.org>
parents: 15007
diff changeset
42 hparent = figure (fix (hparent));
f34bea431e4f maint: Use Octave coding standards for copyobj.m, hdl2struct.m, struct2hdl.m.
Rik <rik@octave.org>
parents: 15007
diff changeset
43 elseif (! any (strcmpi (get (hparent).type, partypes)))
14867
97ce18b62d0f New Functions; copyobj.m, hdl2struct.m, struct2hdl.m
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
44 print_usage ();
97ce18b62d0f New Functions; copyobj.m, hdl2struct.m, struct2hdl.m
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
45 endif
97ce18b62d0f New Functions; copyobj.m, hdl2struct.m, struct2hdl.m
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
46
15710
cd3d7f126190 copyobj.m: ensure gca() and gcf() are reset to original values
pantxo <pantxo.diribarne@gmail.com>
parents: 15328
diff changeset
47 ## current figure and axes
cd3d7f126190 copyobj.m: ensure gca() and gcf() are reset to original values
pantxo <pantxo.diribarne@gmail.com>
parents: 15328
diff changeset
48 cf = gcf ();
18570
5ec4b7006b82 copyobj.m: Fix bug when restoring axes to a figure that had no axes to begin with (bug #41849).
Rik <rik@octave.org>
parents: 18528
diff changeset
49 ca = get (cf, "currentaxes");
15710
cd3d7f126190 copyobj.m: ensure gca() and gcf() are reset to original values
pantxo <pantxo.diribarne@gmail.com>
parents: 15328
diff changeset
50
14867
97ce18b62d0f New Functions; copyobj.m, hdl2struct.m, struct2hdl.m
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
51 ## compatibility of input handles
15011
f34bea431e4f maint: Use Octave coding standards for copyobj.m, hdl2struct.m, struct2hdl.m.
Rik <rik@octave.org>
parents: 15007
diff changeset
52 kididx = find (strcmp (alltypes, get (horig).type));
f34bea431e4f maint: Use Octave coding standards for copyobj.m, hdl2struct.m, struct2hdl.m.
Rik <rik@octave.org>
parents: 15007
diff changeset
53 paridx = find (strcmp (alltypes, get (hparent).type));
14867
97ce18b62d0f New Functions; copyobj.m, hdl2struct.m, struct2hdl.m
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
54
97ce18b62d0f New Functions; copyobj.m, hdl2struct.m, struct2hdl.m
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
55 if (kididx <= paridx)
97ce18b62d0f New Functions; copyobj.m, hdl2struct.m, struct2hdl.m
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
56 error ("copyobj: %s object can't be children to %s.",
15011
f34bea431e4f maint: Use Octave coding standards for copyobj.m, hdl2struct.m, struct2hdl.m.
Rik <rik@octave.org>
parents: 15007
diff changeset
57 alltypes{kididx}, alltypes{paridx});
f34bea431e4f maint: Use Octave coding standards for copyobj.m, hdl2struct.m, struct2hdl.m.
Rik <rik@octave.org>
parents: 15007
diff changeset
58 elseif (nargin == 1)
f34bea431e4f maint: Use Octave coding standards for copyobj.m, hdl2struct.m, struct2hdl.m.
Rik <rik@octave.org>
parents: 15007
diff changeset
59 str = hdl2struct (horig);
f34bea431e4f maint: Use Octave coding standards for copyobj.m, hdl2struct.m, struct2hdl.m.
Rik <rik@octave.org>
parents: 15007
diff changeset
60 hnew = struct2hdl (str);
14867
97ce18b62d0f New Functions; copyobj.m, hdl2struct.m, struct2hdl.m
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
61 else
15011
f34bea431e4f maint: Use Octave coding standards for copyobj.m, hdl2struct.m, struct2hdl.m.
Rik <rik@octave.org>
parents: 15007
diff changeset
62 str = hdl2struct (horig);
f34bea431e4f maint: Use Octave coding standards for copyobj.m, hdl2struct.m, struct2hdl.m.
Rik <rik@octave.org>
parents: 15007
diff changeset
63 hnew = struct2hdl (str, hparent);
14867
97ce18b62d0f New Functions; copyobj.m, hdl2struct.m, struct2hdl.m
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
64 endif
15011
f34bea431e4f maint: Use Octave coding standards for copyobj.m, hdl2struct.m, struct2hdl.m.
Rik <rik@octave.org>
parents: 15007
diff changeset
65
15710
cd3d7f126190 copyobj.m: ensure gca() and gcf() are reset to original values
pantxo <pantxo.diribarne@gmail.com>
parents: 15328
diff changeset
66 ## reset current figure (and eventually axes) to original
cd3d7f126190 copyobj.m: ensure gca() and gcf() are reset to original values
pantxo <pantxo.diribarne@gmail.com>
parents: 15328
diff changeset
67 set (0, "currentfigure", cf);
18570
5ec4b7006b82 copyobj.m: Fix bug when restoring axes to a figure that had no axes to begin with (bug #41849).
Rik <rik@octave.org>
parents: 18528
diff changeset
68 if (get (hnew, "parent") == cf && ! isempty (ca))
15710
cd3d7f126190 copyobj.m: ensure gca() and gcf() are reset to original values
pantxo <pantxo.diribarne@gmail.com>
parents: 15328
diff changeset
69 set (cf, "currentaxes", ca)
cd3d7f126190 copyobj.m: ensure gca() and gcf() are reset to original values
pantxo <pantxo.diribarne@gmail.com>
parents: 15328
diff changeset
70 endif
cd3d7f126190 copyobj.m: ensure gca() and gcf() are reset to original values
pantxo <pantxo.diribarne@gmail.com>
parents: 15328
diff changeset
71
14867
97ce18b62d0f New Functions; copyobj.m, hdl2struct.m, struct2hdl.m
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
72 endfunction
97ce18b62d0f New Functions; copyobj.m, hdl2struct.m, struct2hdl.m
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
73
15011
f34bea431e4f maint: Use Octave coding standards for copyobj.m, hdl2struct.m, struct2hdl.m.
Rik <rik@octave.org>
parents: 15007
diff changeset
74
18528
9c8321ea6f58 copyobj.m: Arrange original and copied plot side-by-side in demos.
Rik <rik@octave.org>
parents: 18317
diff changeset
75 ## Absurd number of drawnow() function calls in demos is due to problem
9c8321ea6f58 copyobj.m: Arrange original and copied plot side-by-side in demos.
Rik <rik@octave.org>
parents: 18317
diff changeset
76 ## with FLTK backend which is not respecting the set ('position') call.
9c8321ea6f58 copyobj.m: Arrange original and copied plot side-by-side in demos.
Rik <rik@octave.org>
parents: 18317
diff changeset
77
15011
f34bea431e4f maint: Use Octave coding standards for copyobj.m, hdl2struct.m, struct2hdl.m.
Rik <rik@octave.org>
parents: 15007
diff changeset
78 %!demo
18528
9c8321ea6f58 copyobj.m: Arrange original and copied plot side-by-side in demos.
Rik <rik@octave.org>
parents: 18317
diff changeset
79 %! hobj = figure ('name', 'Original', 'numbertitle', 'off');
15011
f34bea431e4f maint: Use Octave coding standards for copyobj.m, hdl2struct.m, struct2hdl.m.
Rik <rik@octave.org>
parents: 15007
diff changeset
80 %! hold on;
f34bea431e4f maint: Use Octave coding standards for copyobj.m, hdl2struct.m, struct2hdl.m.
Rik <rik@octave.org>
parents: 15007
diff changeset
81 %! x = 1:10;
f34bea431e4f maint: Use Octave coding standards for copyobj.m, hdl2struct.m, struct2hdl.m.
Rik <rik@octave.org>
parents: 15007
diff changeset
82 %! y = x.^2;
f34bea431e4f maint: Use Octave coding standards for copyobj.m, hdl2struct.m, struct2hdl.m.
Rik <rik@octave.org>
parents: 15007
diff changeset
83 %! dy = 2 * (.2 * x);
f34bea431e4f maint: Use Octave coding standards for copyobj.m, hdl2struct.m, struct2hdl.m.
Rik <rik@octave.org>
parents: 15007
diff changeset
84 %! y2 = (x - 3).^2;
f34bea431e4f maint: Use Octave coding standards for copyobj.m, hdl2struct.m, struct2hdl.m.
Rik <rik@octave.org>
parents: 15007
diff changeset
85 %! hg = errorbar (x, y, dy,'#~');
f34bea431e4f maint: Use Octave coding standards for copyobj.m, hdl2struct.m, struct2hdl.m.
Rik <rik@octave.org>
parents: 15007
diff changeset
86 %! set (hg, 'marker', '^', 'markerfacecolor', rand (1,3));
f34bea431e4f maint: Use Octave coding standards for copyobj.m, hdl2struct.m, struct2hdl.m.
Rik <rik@octave.org>
parents: 15007
diff changeset
87 %! plot (x, y2, 'ok-');
f34bea431e4f maint: Use Octave coding standards for copyobj.m, hdl2struct.m, struct2hdl.m.
Rik <rik@octave.org>
parents: 15007
diff changeset
88 %! legend ('errorbar', 'line');
18528
9c8321ea6f58 copyobj.m: Arrange original and copied plot side-by-side in demos.
Rik <rik@octave.org>
parents: 18317
diff changeset
89 %! drawnow ();
9c8321ea6f58 copyobj.m: Arrange original and copied plot side-by-side in demos.
Rik <rik@octave.org>
parents: 18317
diff changeset
90 %! pos = get (hobj, 'position');
9c8321ea6f58 copyobj.m: Arrange original and copied plot side-by-side in demos.
Rik <rik@octave.org>
parents: 18317
diff changeset
91 %! scrn = get (0, 'screensize');
9c8321ea6f58 copyobj.m: Arrange original and copied plot side-by-side in demos.
Rik <rik@octave.org>
parents: 18317
diff changeset
92 %! set (hobj, 'position', [scrn(3)/2-pos(3)-10, scrn(4)/2-pos(4)/2, pos(3:4)]);
9c8321ea6f58 copyobj.m: Arrange original and copied plot side-by-side in demos.
Rik <rik@octave.org>
parents: 18317
diff changeset
93 %! drawnow ();
9c8321ea6f58 copyobj.m: Arrange original and copied plot side-by-side in demos.
Rik <rik@octave.org>
parents: 18317
diff changeset
94 %! hnew = copyobj (hobj);
9c8321ea6f58 copyobj.m: Arrange original and copied plot side-by-side in demos.
Rik <rik@octave.org>
parents: 18317
diff changeset
95 %! drawnow ();
9c8321ea6f58 copyobj.m: Arrange original and copied plot side-by-side in demos.
Rik <rik@octave.org>
parents: 18317
diff changeset
96 %! set (hnew, 'name', 'Copyobj');
9c8321ea6f58 copyobj.m: Arrange original and copied plot side-by-side in demos.
Rik <rik@octave.org>
parents: 18317
diff changeset
97 %! drawnow ();
9c8321ea6f58 copyobj.m: Arrange original and copied plot side-by-side in demos.
Rik <rik@octave.org>
parents: 18317
diff changeset
98 %! set (hnew, 'position', [scrn(3)/2, scrn(4)/2-pos(4)/2, pos(3:4)]);
9c8321ea6f58 copyobj.m: Arrange original and copied plot side-by-side in demos.
Rik <rik@octave.org>
parents: 18317
diff changeset
99 %! drawnow ();
15011
f34bea431e4f maint: Use Octave coding standards for copyobj.m, hdl2struct.m, struct2hdl.m.
Rik <rik@octave.org>
parents: 15007
diff changeset
100
18317
0187ed948627 Fix segfault with copyobj() and patch objects.
Rik <rik@octave.org>
parents: 17795
diff changeset
101 %!demo
18528
9c8321ea6f58 copyobj.m: Arrange original and copied plot side-by-side in demos.
Rik <rik@octave.org>
parents: 18317
diff changeset
102 %! hobj = figure ('name', 'Original', 'numbertitle', 'off');
18317
0187ed948627 Fix segfault with copyobj() and patch objects.
Rik <rik@octave.org>
parents: 17795
diff changeset
103 %! subplot (2,2,1);
0187ed948627 Fix segfault with copyobj() and patch objects.
Rik <rik@octave.org>
parents: 17795
diff changeset
104 %! hold on;
0187ed948627 Fix segfault with copyobj() and patch objects.
Rik <rik@octave.org>
parents: 17795
diff changeset
105 %! contourf (rand (10, 10));
0187ed948627 Fix segfault with copyobj() and patch objects.
Rik <rik@octave.org>
parents: 17795
diff changeset
106 %! colorbar ();
0187ed948627 Fix segfault with copyobj() and patch objects.
Rik <rik@octave.org>
parents: 17795
diff changeset
107 %! subplot (2,2,2);
0187ed948627 Fix segfault with copyobj() and patch objects.
Rik <rik@octave.org>
parents: 17795
diff changeset
108 %! quiver (rand (10, 10), rand (10, 10));
0187ed948627 Fix segfault with copyobj() and patch objects.
Rik <rik@octave.org>
parents: 17795
diff changeset
109 %! subplot (2,2,3);
0187ed948627 Fix segfault with copyobj() and patch objects.
Rik <rik@octave.org>
parents: 17795
diff changeset
110 %! colormap (jet (64));
0187ed948627 Fix segfault with copyobj() and patch objects.
Rik <rik@octave.org>
parents: 17795
diff changeset
111 %! hold on;
0187ed948627 Fix segfault with copyobj() and patch objects.
Rik <rik@octave.org>
parents: 17795
diff changeset
112 %! sombrero ();
0187ed948627 Fix segfault with copyobj() and patch objects.
Rik <rik@octave.org>
parents: 17795
diff changeset
113 %! colorbar ('peer', gca, 'NorthOutside');
0187ed948627 Fix segfault with copyobj() and patch objects.
Rik <rik@octave.org>
parents: 17795
diff changeset
114 %! subplot (2,2,4);
0187ed948627 Fix segfault with copyobj() and patch objects.
Rik <rik@octave.org>
parents: 17795
diff changeset
115 %! imagesc (rand (30, 30));
0187ed948627 Fix segfault with copyobj() and patch objects.
Rik <rik@octave.org>
parents: 17795
diff changeset
116 %! text (15, 15, 'Rotated text', ...
0187ed948627 Fix segfault with copyobj() and patch objects.
Rik <rik@octave.org>
parents: 17795
diff changeset
117 %! 'HorizontAlalignment', 'Center', 'Rotation', 30);
18528
9c8321ea6f58 copyobj.m: Arrange original and copied plot side-by-side in demos.
Rik <rik@octave.org>
parents: 18317
diff changeset
118 %! drawnow ();
9c8321ea6f58 copyobj.m: Arrange original and copied plot side-by-side in demos.
Rik <rik@octave.org>
parents: 18317
diff changeset
119 %! pos = get (hobj, 'position');
9c8321ea6f58 copyobj.m: Arrange original and copied plot side-by-side in demos.
Rik <rik@octave.org>
parents: 18317
diff changeset
120 %! scrn = get (0, 'screensize');
9c8321ea6f58 copyobj.m: Arrange original and copied plot side-by-side in demos.
Rik <rik@octave.org>
parents: 18317
diff changeset
121 %! set (hobj, 'position', [scrn(3)/2-pos(3)-10, scrn(4)/2-pos(4)/2, pos(3:4)]);
9c8321ea6f58 copyobj.m: Arrange original and copied plot side-by-side in demos.
Rik <rik@octave.org>
parents: 18317
diff changeset
122 %! drawnow ();
9c8321ea6f58 copyobj.m: Arrange original and copied plot side-by-side in demos.
Rik <rik@octave.org>
parents: 18317
diff changeset
123 %! hnew = copyobj (hobj);
9c8321ea6f58 copyobj.m: Arrange original and copied plot side-by-side in demos.
Rik <rik@octave.org>
parents: 18317
diff changeset
124 %! drawnow ();
9c8321ea6f58 copyobj.m: Arrange original and copied plot side-by-side in demos.
Rik <rik@octave.org>
parents: 18317
diff changeset
125 %! set (hnew, 'name', 'Copyobj');
9c8321ea6f58 copyobj.m: Arrange original and copied plot side-by-side in demos.
Rik <rik@octave.org>
parents: 18317
diff changeset
126 %! drawnow ();
9c8321ea6f58 copyobj.m: Arrange original and copied plot side-by-side in demos.
Rik <rik@octave.org>
parents: 18317
diff changeset
127 %! set (hnew, 'position', [scrn(3)/2, scrn(4)/2-pos(4)/2, pos(3:4)]);
9c8321ea6f58 copyobj.m: Arrange original and copied plot side-by-side in demos.
Rik <rik@octave.org>
parents: 18317
diff changeset
128 %! drawnow ();
15011
f34bea431e4f maint: Use Octave coding standards for copyobj.m, hdl2struct.m, struct2hdl.m.
Rik <rik@octave.org>
parents: 15007
diff changeset
129
15328
efbc896c1ecc Disable tests calling imread if not using GraphicsMagick
Mike Miller <mtmiller@ieee.org>
parents: 15011
diff changeset
130 %!testif HAVE_MAGICK
17150
e7723410ec32 Recode some %!tests which pop up figures with new figure() behavior.
Rik <rik@octave.org>
parents: 17122
diff changeset
131 %! toolkit = graphics_toolkit ();
e7723410ec32 Recode some %!tests which pop up figures with new figure() behavior.
Rik <rik@octave.org>
parents: 17122
diff changeset
132 %! graphics_toolkit ("gnuplot");
14867
97ce18b62d0f New Functions; copyobj.m, hdl2struct.m, struct2hdl.m
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
133 %! unwind_protect
17150
e7723410ec32 Recode some %!tests which pop up figures with new figure() behavior.
Rik <rik@octave.org>
parents: 17122
diff changeset
134 %! h1 = figure ("visible", "off");
e7723410ec32 Recode some %!tests which pop up figures with new figure() behavior.
Rik <rik@octave.org>
parents: 17122
diff changeset
135 %! x = 0:0.1:2*pi;
e7723410ec32 Recode some %!tests which pop up figures with new figure() behavior.
Rik <rik@octave.org>
parents: 17122
diff changeset
136 %! y1 = sin (x);
e7723410ec32 Recode some %!tests which pop up figures with new figure() behavior.
Rik <rik@octave.org>
parents: 17122
diff changeset
137 %! y2 = exp (x - 1);
e7723410ec32 Recode some %!tests which pop up figures with new figure() behavior.
Rik <rik@octave.org>
parents: 17122
diff changeset
138 %! ax = plotyy (x,y1, x-1,y2, @plot, @semilogy);
e7723410ec32 Recode some %!tests which pop up figures with new figure() behavior.
Rik <rik@octave.org>
parents: 17122
diff changeset
139 %! xlabel ("X");
e7723410ec32 Recode some %!tests which pop up figures with new figure() behavior.
Rik <rik@octave.org>
parents: 17122
diff changeset
140 %! ylabel (ax(1), "Axis 1");
e7723410ec32 Recode some %!tests which pop up figures with new figure() behavior.
Rik <rik@octave.org>
parents: 17122
diff changeset
141 %! ylabel (ax(2), "Axis 2");
e7723410ec32 Recode some %!tests which pop up figures with new figure() behavior.
Rik <rik@octave.org>
parents: 17122
diff changeset
142 %! axes (ax(1));
e7723410ec32 Recode some %!tests which pop up figures with new figure() behavior.
Rik <rik@octave.org>
parents: 17122
diff changeset
143 %! text (0.5, 0.5, "Left Axis", ...
e7723410ec32 Recode some %!tests which pop up figures with new figure() behavior.
Rik <rik@octave.org>
parents: 17122
diff changeset
144 %! "color", [0 0 1], "horizontalalignment", "center");
e7723410ec32 Recode some %!tests which pop up figures with new figure() behavior.
Rik <rik@octave.org>
parents: 17122
diff changeset
145 %! axes (ax(2));
e7723410ec32 Recode some %!tests which pop up figures with new figure() behavior.
Rik <rik@octave.org>
parents: 17122
diff changeset
146 %! text (4.5, 80, "Right Axis", ...
e7723410ec32 Recode some %!tests which pop up figures with new figure() behavior.
Rik <rik@octave.org>
parents: 17122
diff changeset
147 %! "color", [0 0.5 0], "horizontalalignment", "center");
e7723410ec32 Recode some %!tests which pop up figures with new figure() behavior.
Rik <rik@octave.org>
parents: 17122
diff changeset
148 %! s1 = hdl2struct (h1);
e7723410ec32 Recode some %!tests which pop up figures with new figure() behavior.
Rik <rik@octave.org>
parents: 17122
diff changeset
149 %! h2 = struct2hdl (s1);
e7723410ec32 Recode some %!tests which pop up figures with new figure() behavior.
Rik <rik@octave.org>
parents: 17122
diff changeset
150 %! s2 = hdl2struct (h2);
e7723410ec32 Recode some %!tests which pop up figures with new figure() behavior.
Rik <rik@octave.org>
parents: 17122
diff changeset
151 %! png1 = strcat (tmpnam (), ".png");
e7723410ec32 Recode some %!tests which pop up figures with new figure() behavior.
Rik <rik@octave.org>
parents: 17122
diff changeset
152 %! png2 = strcat (tmpnam (), ".png");
e7723410ec32 Recode some %!tests which pop up figures with new figure() behavior.
Rik <rik@octave.org>
parents: 17122
diff changeset
153 %! unwind_protect
e7723410ec32 Recode some %!tests which pop up figures with new figure() behavior.
Rik <rik@octave.org>
parents: 17122
diff changeset
154 %! print (h1, png1);
e7723410ec32 Recode some %!tests which pop up figures with new figure() behavior.
Rik <rik@octave.org>
parents: 17122
diff changeset
155 %! [img1, map1, alpha1] = imread (png1);
e7723410ec32 Recode some %!tests which pop up figures with new figure() behavior.
Rik <rik@octave.org>
parents: 17122
diff changeset
156 %! print (h2, png2);
e7723410ec32 Recode some %!tests which pop up figures with new figure() behavior.
Rik <rik@octave.org>
parents: 17122
diff changeset
157 %! [img2, map2, alpha2] = imread (png2);
e7723410ec32 Recode some %!tests which pop up figures with new figure() behavior.
Rik <rik@octave.org>
parents: 17122
diff changeset
158 %! unwind_protect_cleanup
e7723410ec32 Recode some %!tests which pop up figures with new figure() behavior.
Rik <rik@octave.org>
parents: 17122
diff changeset
159 %! unlink (png1);
e7723410ec32 Recode some %!tests which pop up figures with new figure() behavior.
Rik <rik@octave.org>
parents: 17122
diff changeset
160 %! unlink (png2);
e7723410ec32 Recode some %!tests which pop up figures with new figure() behavior.
Rik <rik@octave.org>
parents: 17122
diff changeset
161 %! end_unwind_protect
e7723410ec32 Recode some %!tests which pop up figures with new figure() behavior.
Rik <rik@octave.org>
parents: 17122
diff changeset
162 %! assert (img1, img2);
e7723410ec32 Recode some %!tests which pop up figures with new figure() behavior.
Rik <rik@octave.org>
parents: 17122
diff changeset
163 %! assert (map1, map2);
e7723410ec32 Recode some %!tests which pop up figures with new figure() behavior.
Rik <rik@octave.org>
parents: 17122
diff changeset
164 %! assert (alpha1, alpha2);
14867
97ce18b62d0f New Functions; copyobj.m, hdl2struct.m, struct2hdl.m
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
165 %! unwind_protect_cleanup
17150
e7723410ec32 Recode some %!tests which pop up figures with new figure() behavior.
Rik <rik@octave.org>
parents: 17122
diff changeset
166 %! close (h1);
e7723410ec32 Recode some %!tests which pop up figures with new figure() behavior.
Rik <rik@octave.org>
parents: 17122
diff changeset
167 %! close (h2);
e7723410ec32 Recode some %!tests which pop up figures with new figure() behavior.
Rik <rik@octave.org>
parents: 17122
diff changeset
168 %! graphics_toolkit (toolkit);
14867
97ce18b62d0f New Functions; copyobj.m, hdl2struct.m, struct2hdl.m
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff changeset
169 %! end_unwind_protect
17150
e7723410ec32 Recode some %!tests which pop up figures with new figure() behavior.
Rik <rik@octave.org>
parents: 17122
diff changeset
170