Mercurial > octave
annotate scripts/image/movie.m @ 31286:10a813492497
maint: Use "nonzero" in docstrings and error messages.
* movie.m, mustBeNonzero.m, lsqnonneg.m, pqpnonneg.m:
Use "nonzero" in docstrings and error messages.
author | Rik <rik@octave.org> |
---|---|
date | Mon, 10 Oct 2022 18:17:16 -0700 |
parents | 796f54d4ddbf |
children | 597f3ee61a48 |
rev | line source |
---|---|
27923
bd51beb6205e
update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents:
27919
diff
changeset
|
1 ######################################################################## |
bd51beb6205e
update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents:
27919
diff
changeset
|
2 ## |
30564
796f54d4ddbf
update Octave Project Developers copyright for the new year
John W. Eaton <jwe@octave.org>
parents:
29359
diff
changeset
|
3 ## Copyright (C) 2017-2022 The Octave Project Developers |
27918
b442ec6dda5c
use centralized file for copyright info for individual contributors
John W. Eaton <jwe@octave.org>
parents:
26374
diff
changeset
|
4 ## |
27923
bd51beb6205e
update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents:
27919
diff
changeset
|
5 ## See the file COPYRIGHT.md in the top-level directory of this |
bd51beb6205e
update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents:
27919
diff
changeset
|
6 ## distribution or <https://octave.org/copyright/>. |
26242
2730917a7979
movie.m: Improve input validation and FPS accuracy (patch #9363).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
26212
diff
changeset
|
7 ## |
26212
2be1833a93a5
movie.m: New function (patch #9363)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
8 ## This file is part of Octave. |
2be1833a93a5
movie.m: New function (patch #9363)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
9 ## |
2be1833a93a5
movie.m: New function (patch #9363)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
10 ## Octave is free software: you can redistribute it and/or modify it |
2be1833a93a5
movie.m: New function (patch #9363)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
11 ## under the terms of the GNU General Public License as published by |
2be1833a93a5
movie.m: New function (patch #9363)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
12 ## the Free Software Foundation, either version 3 of the License, or |
2be1833a93a5
movie.m: New function (patch #9363)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
13 ## (at your option) any later version. |
2be1833a93a5
movie.m: New function (patch #9363)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
14 ## |
2be1833a93a5
movie.m: New function (patch #9363)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
15 ## Octave is distributed in the hope that it will be useful, but |
2be1833a93a5
movie.m: New function (patch #9363)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
16 ## WITHOUT ANY WARRANTY; without even the implied warranty of |
2be1833a93a5
movie.m: New function (patch #9363)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
17 ## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
2be1833a93a5
movie.m: New function (patch #9363)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
18 ## GNU General Public License for more details. |
2be1833a93a5
movie.m: New function (patch #9363)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
19 ## |
2be1833a93a5
movie.m: New function (patch #9363)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
20 ## You should have received a copy of the GNU General Public License |
2be1833a93a5
movie.m: New function (patch #9363)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
21 ## along with Octave; see the file COPYING. If not, see |
2be1833a93a5
movie.m: New function (patch #9363)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
22 ## <https://www.gnu.org/licenses/>. |
27923
bd51beb6205e
update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents:
27919
diff
changeset
|
23 ## |
bd51beb6205e
update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents:
27919
diff
changeset
|
24 ######################################################################## |
26212
2be1833a93a5
movie.m: New function (patch #9363)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
25 |
2be1833a93a5
movie.m: New function (patch #9363)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
26 ## -*- texinfo -*- |
2be1833a93a5
movie.m: New function (patch #9363)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
27 ## @deftypefn {} {} movie (@var{mov}) |
2be1833a93a5
movie.m: New function (patch #9363)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
28 ## @deftypefnx {} {} movie (@var{mov}, @var{n}) |
2be1833a93a5
movie.m: New function (patch #9363)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
29 ## @deftypefnx {} {} movie (@var{mov}, @var{n}, @var{fps}) |
2be1833a93a5
movie.m: New function (patch #9363)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
30 ## @deftypefnx {} {} movie (@var{h}, @dots{}) |
2be1833a93a5
movie.m: New function (patch #9363)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
31 ## Play a movie defined by an array of frame structures. |
2be1833a93a5
movie.m: New function (patch #9363)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
32 ## |
2be1833a93a5
movie.m: New function (patch #9363)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
33 ## The movie @var{mov} must be a struct array of frames with fields |
2be1833a93a5
movie.m: New function (patch #9363)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
34 ## @qcode{"cdata"} and @qcode{"colormap"}, as returned by the @code{getframe} |
2be1833a93a5
movie.m: New function (patch #9363)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
35 ## function. By default all images are displayed once, at 12 fps, in the |
2be1833a93a5
movie.m: New function (patch #9363)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
36 ## current axes. |
2be1833a93a5
movie.m: New function (patch #9363)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
37 ## |
2be1833a93a5
movie.m: New function (patch #9363)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
38 ## The optional argument @var{n} is a scalar or vector of integers that |
2be1833a93a5
movie.m: New function (patch #9363)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
39 ## controls the number of times the movie is displayed and which particular |
2be1833a93a5
movie.m: New function (patch #9363)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
40 ## frames are shown: |
2be1833a93a5
movie.m: New function (patch #9363)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
41 ## |
2be1833a93a5
movie.m: New function (patch #9363)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
42 ## @table @asis |
2be1833a93a5
movie.m: New function (patch #9363)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
43 ## @item First element: |
2be1833a93a5
movie.m: New function (patch #9363)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
44 ## |
2be1833a93a5
movie.m: New function (patch #9363)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
45 ## @table @asis |
2be1833a93a5
movie.m: New function (patch #9363)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
46 ## @item @var{n}(1) > 0 |
2be1833a93a5
movie.m: New function (patch #9363)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
47 ## Play the movie @var{n}(1) times. |
2be1833a93a5
movie.m: New function (patch #9363)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
48 ## |
2be1833a93a5
movie.m: New function (patch #9363)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
49 ## @item @var{n}(1) < 0 |
2be1833a93a5
movie.m: New function (patch #9363)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
50 ## Play the movie @code{abs (@var{n}(1)} times alternatively in forward and |
2be1833a93a5
movie.m: New function (patch #9363)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
51 ## backward order. |
2be1833a93a5
movie.m: New function (patch #9363)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
52 ## @end table |
2be1833a93a5
movie.m: New function (patch #9363)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
53 ## |
2be1833a93a5
movie.m: New function (patch #9363)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
54 ## @item Other elements (if any): |
2be1833a93a5
movie.m: New function (patch #9363)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
55 ## Indices of the frames in @var{mov} that will be displayed. |
2be1833a93a5
movie.m: New function (patch #9363)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
56 ## @end table |
2be1833a93a5
movie.m: New function (patch #9363)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
57 ## |
2be1833a93a5
movie.m: New function (patch #9363)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
58 ## If the first argument is a handle to a figure or axes @var{h}, the movie is |
2be1833a93a5
movie.m: New function (patch #9363)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
59 ## played in that figure or axes instead of the current axes. |
2be1833a93a5
movie.m: New function (patch #9363)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
60 ## |
2be1833a93a5
movie.m: New function (patch #9363)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
61 ## @seealso{getframe, im2frame, frame2im} |
2be1833a93a5
movie.m: New function (patch #9363)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
62 ## @end deftypefn |
2be1833a93a5
movie.m: New function (patch #9363)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
63 |
2be1833a93a5
movie.m: New function (patch #9363)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
64 function movie (varargin) |
2be1833a93a5
movie.m: New function (patch #9363)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
65 |
26242
2730917a7979
movie.m: Improve input validation and FPS accuracy (patch #9363).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
26212
diff
changeset
|
66 if (nargin == 0 || nargin > 4) |
26212
2be1833a93a5
movie.m: New function (patch #9363)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
67 print_usage (); |
2be1833a93a5
movie.m: New function (patch #9363)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
68 endif |
2be1833a93a5
movie.m: New function (patch #9363)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
69 |
2be1833a93a5
movie.m: New function (patch #9363)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
70 ## Extract possible handle argument |
2be1833a93a5
movie.m: New function (patch #9363)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
71 hax = []; |
26242
2730917a7979
movie.m: Improve input validation and FPS accuracy (patch #9363).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
26212
diff
changeset
|
72 if (ishghandle (varargin{1})) |
2730917a7979
movie.m: Improve input validation and FPS accuracy (patch #9363).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
26212
diff
changeset
|
73 typ = get (varargin{1}, "type"); |
2730917a7979
movie.m: Improve input validation and FPS accuracy (patch #9363).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
26212
diff
changeset
|
74 if (strcmp (typ, "axes")) |
2730917a7979
movie.m: Improve input validation and FPS accuracy (patch #9363).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
26212
diff
changeset
|
75 hax = varargin{1}; |
2730917a7979
movie.m: Improve input validation and FPS accuracy (patch #9363).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
26212
diff
changeset
|
76 elseif (strcmp (typ, "figure")) |
26374
b3a2ee31dd58
movie.m: Don't change "visible" property of figure handle input.
Rik <rik@octave.org>
parents:
26242
diff
changeset
|
77 hax = get (varargin{1}, "currentaxes"); |
b3a2ee31dd58
movie.m: Don't change "visible" property of figure handle input.
Rik <rik@octave.org>
parents:
26242
diff
changeset
|
78 if (isempty (hax)) |
b3a2ee31dd58
movie.m: Don't change "visible" property of figure handle input.
Rik <rik@octave.org>
parents:
26242
diff
changeset
|
79 hax = axes ("parent", varargin{1}); |
b3a2ee31dd58
movie.m: Don't change "visible" property of figure handle input.
Rik <rik@octave.org>
parents:
26242
diff
changeset
|
80 endif |
26242
2730917a7979
movie.m: Improve input validation and FPS accuracy (patch #9363).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
26212
diff
changeset
|
81 else |
2730917a7979
movie.m: Improve input validation and FPS accuracy (patch #9363).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
26212
diff
changeset
|
82 error ("movie: H must be a handle to an axes or figure"); |
26212
2be1833a93a5
movie.m: New function (patch #9363)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
83 endif |
2be1833a93a5
movie.m: New function (patch #9363)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
84 varargin(1) = []; |
26242
2730917a7979
movie.m: Improve input validation and FPS accuracy (patch #9363).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
26212
diff
changeset
|
85 nargin = nargin - 1; |
2730917a7979
movie.m: Improve input validation and FPS accuracy (patch #9363).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
26212
diff
changeset
|
86 if (nargin == 0) |
2730917a7979
movie.m: Improve input validation and FPS accuracy (patch #9363).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
26212
diff
changeset
|
87 print_usage (); |
2730917a7979
movie.m: Improve input validation and FPS accuracy (patch #9363).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
26212
diff
changeset
|
88 endif |
26212
2be1833a93a5
movie.m: New function (patch #9363)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
89 endif |
2be1833a93a5
movie.m: New function (patch #9363)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
90 |
2be1833a93a5
movie.m: New function (patch #9363)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
91 ## Extract other arguments |
2be1833a93a5
movie.m: New function (patch #9363)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
92 n = 1; |
2be1833a93a5
movie.m: New function (patch #9363)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
93 fps = 12; |
2be1833a93a5
movie.m: New function (patch #9363)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
94 idx = []; |
26242
2730917a7979
movie.m: Improve input validation and FPS accuracy (patch #9363).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
26212
diff
changeset
|
95 |
2730917a7979
movie.m: Improve input validation and FPS accuracy (patch #9363).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
26212
diff
changeset
|
96 mov = varargin{1}; |
2730917a7979
movie.m: Improve input validation and FPS accuracy (patch #9363).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
26212
diff
changeset
|
97 if (! isfield (mov, "cdata") || ! isfield (mov, "colormap")) |
2730917a7979
movie.m: Improve input validation and FPS accuracy (patch #9363).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
26212
diff
changeset
|
98 error ("movie: MOV must be a frame struct array"); |
2730917a7979
movie.m: Improve input validation and FPS accuracy (patch #9363).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
26212
diff
changeset
|
99 elseif (numel (mov) < 2) |
2730917a7979
movie.m: Improve input validation and FPS accuracy (patch #9363).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
26212
diff
changeset
|
100 error ("movie: MOV must contain at least two frames"); |
2730917a7979
movie.m: Improve input validation and FPS accuracy (patch #9363).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
26212
diff
changeset
|
101 endif |
2730917a7979
movie.m: Improve input validation and FPS accuracy (patch #9363).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
26212
diff
changeset
|
102 |
2730917a7979
movie.m: Improve input validation and FPS accuracy (patch #9363).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
26212
diff
changeset
|
103 if (nargin > 1) |
2730917a7979
movie.m: Improve input validation and FPS accuracy (patch #9363).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
26212
diff
changeset
|
104 n = varargin{2}; |
2730917a7979
movie.m: Improve input validation and FPS accuracy (patch #9363).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
26212
diff
changeset
|
105 if (! isindex (abs (n(1)))) |
31286
10a813492497
maint: Use "nonzero" in docstrings and error messages.
Rik <rik@octave.org>
parents:
30564
diff
changeset
|
106 error ("movie: N must be a nonzero integer"); |
26212
2be1833a93a5
movie.m: New function (patch #9363)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
107 endif |
2be1833a93a5
movie.m: New function (patch #9363)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
108 |
26242
2730917a7979
movie.m: Improve input validation and FPS accuracy (patch #9363).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
26212
diff
changeset
|
109 if (! isscalar (n)) |
2730917a7979
movie.m: Improve input validation and FPS accuracy (patch #9363).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
26212
diff
changeset
|
110 idx = n(2:end)(:)'; |
2730917a7979
movie.m: Improve input validation and FPS accuracy (patch #9363).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
26212
diff
changeset
|
111 n = n(1); |
2730917a7979
movie.m: Improve input validation and FPS accuracy (patch #9363).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
26212
diff
changeset
|
112 if (! isindex (idx, numel (mov))) |
2730917a7979
movie.m: Improve input validation and FPS accuracy (patch #9363).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
26212
diff
changeset
|
113 error (["movie: All elements N(2:end) must be valid indices ", ... |
2730917a7979
movie.m: Improve input validation and FPS accuracy (patch #9363).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
26212
diff
changeset
|
114 "into the MOV struct array"]); |
2730917a7979
movie.m: Improve input validation and FPS accuracy (patch #9363).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
26212
diff
changeset
|
115 endif |
2730917a7979
movie.m: Improve input validation and FPS accuracy (patch #9363).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
26212
diff
changeset
|
116 endif |
26212
2be1833a93a5
movie.m: New function (patch #9363)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
117 |
26242
2730917a7979
movie.m: Improve input validation and FPS accuracy (patch #9363).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
26212
diff
changeset
|
118 if (nargin > 2) |
2730917a7979
movie.m: Improve input validation and FPS accuracy (patch #9363).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
26212
diff
changeset
|
119 fps = varargin{3}; |
2730917a7979
movie.m: Improve input validation and FPS accuracy (patch #9363).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
26212
diff
changeset
|
120 if (! (isnumeric (fps) && isscalar (fps) && fps > 0)) |
2730917a7979
movie.m: Improve input validation and FPS accuracy (patch #9363).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
26212
diff
changeset
|
121 error ("movie: FPS must be a numeric scalar > 0"); |
26212
2be1833a93a5
movie.m: New function (patch #9363)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
122 endif |
2be1833a93a5
movie.m: New function (patch #9363)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
123 endif |
2be1833a93a5
movie.m: New function (patch #9363)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
124 endif |
2be1833a93a5
movie.m: New function (patch #9363)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
125 |
2be1833a93a5
movie.m: New function (patch #9363)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
126 if (isempty (hax)) |
2be1833a93a5
movie.m: New function (patch #9363)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
127 hax = gca (); |
2be1833a93a5
movie.m: New function (patch #9363)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
128 endif |
2be1833a93a5
movie.m: New function (patch #9363)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
129 |
2be1833a93a5
movie.m: New function (patch #9363)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
130 ## Build the list of frames to be displayed |
2be1833a93a5
movie.m: New function (patch #9363)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
131 if (isempty (idx)) |
2be1833a93a5
movie.m: New function (patch #9363)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
132 idx = (1:numel (mov)); |
2be1833a93a5
movie.m: New function (patch #9363)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
133 endif |
2be1833a93a5
movie.m: New function (patch #9363)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
134 |
2be1833a93a5
movie.m: New function (patch #9363)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
135 if (n > 0) |
2be1833a93a5
movie.m: New function (patch #9363)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
136 idx = repmat (idx, 1, n); |
2be1833a93a5
movie.m: New function (patch #9363)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
137 else |
2be1833a93a5
movie.m: New function (patch #9363)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
138 n = -n; |
2be1833a93a5
movie.m: New function (patch #9363)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
139 tmp = repmat ([idx fliplr(idx)], 1, fix (n/2)); |
2be1833a93a5
movie.m: New function (patch #9363)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
140 if (fix (n/2) != n/2) |
2be1833a93a5
movie.m: New function (patch #9363)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
141 idx = [tmp, idx]; |
2be1833a93a5
movie.m: New function (patch #9363)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
142 else |
2be1833a93a5
movie.m: New function (patch #9363)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
143 idx = tmp; |
2be1833a93a5
movie.m: New function (patch #9363)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
144 endif |
2be1833a93a5
movie.m: New function (patch #9363)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
145 endif |
2be1833a93a5
movie.m: New function (patch #9363)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
146 |
26242
2730917a7979
movie.m: Improve input validation and FPS accuracy (patch #9363).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
26212
diff
changeset
|
147 ## Initialize graphics objects |
2730917a7979
movie.m: Improve input validation and FPS accuracy (patch #9363).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
26212
diff
changeset
|
148 if (isempty (mov(1).cdata)) |
2730917a7979
movie.m: Improve input validation and FPS accuracy (patch #9363).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
26212
diff
changeset
|
149 error ("movie: empty image data at frame 1"); |
2730917a7979
movie.m: Improve input validation and FPS accuracy (patch #9363).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
26212
diff
changeset
|
150 endif |
2730917a7979
movie.m: Improve input validation and FPS accuracy (patch #9363).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
26212
diff
changeset
|
151 |
2730917a7979
movie.m: Improve input validation and FPS accuracy (patch #9363).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
26212
diff
changeset
|
152 him = findobj (hax, "-depth", 1, "tag", "__movie_frame__"); |
2730917a7979
movie.m: Improve input validation and FPS accuracy (patch #9363).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
26212
diff
changeset
|
153 if (isempty (him)) |
2730917a7979
movie.m: Improve input validation and FPS accuracy (patch #9363).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
26212
diff
changeset
|
154 him = image ("parent", hax, "cdata", mov(1).cdata, |
2730917a7979
movie.m: Improve input validation and FPS accuracy (patch #9363).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
26212
diff
changeset
|
155 "tag", "__movie_frame__"); |
2730917a7979
movie.m: Improve input validation and FPS accuracy (patch #9363).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
26212
diff
changeset
|
156 else |
2730917a7979
movie.m: Improve input validation and FPS accuracy (patch #9363).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
26212
diff
changeset
|
157 set (him, "cdata", mov(1).cdata); |
2730917a7979
movie.m: Improve input validation and FPS accuracy (patch #9363).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
26212
diff
changeset
|
158 endif |
2730917a7979
movie.m: Improve input validation and FPS accuracy (patch #9363).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
26212
diff
changeset
|
159 |
26212
2be1833a93a5
movie.m: New function (patch #9363)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
160 set (hax, "ydir", "reverse", "visible", "off"); |
26242
2730917a7979
movie.m: Improve input validation and FPS accuracy (patch #9363).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
26212
diff
changeset
|
161 |
2730917a7979
movie.m: Improve input validation and FPS accuracy (patch #9363).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
26212
diff
changeset
|
162 ## Initialize the timer |
2730917a7979
movie.m: Improve input validation and FPS accuracy (patch #9363).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
26212
diff
changeset
|
163 t = tau = 1/fps; |
2730917a7979
movie.m: Improve input validation and FPS accuracy (patch #9363).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
26212
diff
changeset
|
164 timerid = tic (); |
2730917a7979
movie.m: Improve input validation and FPS accuracy (patch #9363).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
26212
diff
changeset
|
165 |
26212
2be1833a93a5
movie.m: New function (patch #9363)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
166 for ii = idx |
26242
2730917a7979
movie.m: Improve input validation and FPS accuracy (patch #9363).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
26212
diff
changeset
|
167 cdata = mov(ii).cdata; |
2730917a7979
movie.m: Improve input validation and FPS accuracy (patch #9363).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
26212
diff
changeset
|
168 if (isempty (cdata)) |
2730917a7979
movie.m: Improve input validation and FPS accuracy (patch #9363).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
26212
diff
changeset
|
169 error ("movie: empty image data at frame %d", ii); |
2730917a7979
movie.m: Improve input validation and FPS accuracy (patch #9363).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
26212
diff
changeset
|
170 endif |
2730917a7979
movie.m: Improve input validation and FPS accuracy (patch #9363).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
26212
diff
changeset
|
171 set (him, "cdata", cdata); |
2730917a7979
movie.m: Improve input validation and FPS accuracy (patch #9363).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
26212
diff
changeset
|
172 |
26212
2be1833a93a5
movie.m: New function (patch #9363)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
173 if (! isempty (mov(ii).colormap)) |
2be1833a93a5
movie.m: New function (patch #9363)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
174 set (hax, "colormap", mov(ii).colormap) |
2be1833a93a5
movie.m: New function (patch #9363)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
175 endif |
26242
2730917a7979
movie.m: Improve input validation and FPS accuracy (patch #9363).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
26212
diff
changeset
|
176 |
2730917a7979
movie.m: Improve input validation and FPS accuracy (patch #9363).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
26212
diff
changeset
|
177 pause (t - toc (timerid)); |
2730917a7979
movie.m: Improve input validation and FPS accuracy (patch #9363).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
26212
diff
changeset
|
178 t += tau; |
26212
2be1833a93a5
movie.m: New function (patch #9363)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
179 endfor |
26242
2730917a7979
movie.m: Improve input validation and FPS accuracy (patch #9363).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
26212
diff
changeset
|
180 |
26212
2be1833a93a5
movie.m: New function (patch #9363)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
181 endfunction |
2be1833a93a5
movie.m: New function (patch #9363)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
182 |
2be1833a93a5
movie.m: New function (patch #9363)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
183 |
2be1833a93a5
movie.m: New function (patch #9363)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
184 %!demo |
2be1833a93a5
movie.m: New function (patch #9363)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
185 %! nframes = 20; |
2be1833a93a5
movie.m: New function (patch #9363)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
186 %! colors = jet (nframes); |
2be1833a93a5
movie.m: New function (patch #9363)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
187 %! baseim = ones (20, 20, 3, "uint8"); |
2be1833a93a5
movie.m: New function (patch #9363)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
188 %! mov(nframes) = struct ("cdata", [], "colormap", []); |
2be1833a93a5
movie.m: New function (patch #9363)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
189 %! for ii = 1:nframes |
2be1833a93a5
movie.m: New function (patch #9363)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
190 %! im = baseim * 255; |
2be1833a93a5
movie.m: New function (patch #9363)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
191 %! im(:,ii,1) = colors(ii,1) * 255; |
2be1833a93a5
movie.m: New function (patch #9363)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
192 %! im(:,ii,2) = colors(ii,2) * 255; |
2be1833a93a5
movie.m: New function (patch #9363)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
193 %! im(:,ii,3) = colors(ii,3) * 255; |
2be1833a93a5
movie.m: New function (patch #9363)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
194 %! mov(ii).cdata = im; |
2be1833a93a5
movie.m: New function (patch #9363)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
195 %! endfor |
2be1833a93a5
movie.m: New function (patch #9363)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
196 %! clf (); |
26242
2730917a7979
movie.m: Improve input validation and FPS accuracy (patch #9363).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
26212
diff
changeset
|
197 %! title ("Play movie forward 2 times"); |
26212
2be1833a93a5
movie.m: New function (patch #9363)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
198 %! movie (mov, 2); |
2be1833a93a5
movie.m: New function (patch #9363)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
199 |
2be1833a93a5
movie.m: New function (patch #9363)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
200 %!demo |
2be1833a93a5
movie.m: New function (patch #9363)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
201 %! nframes = 20; |
2be1833a93a5
movie.m: New function (patch #9363)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
202 %! colors = jet (nframes); |
2be1833a93a5
movie.m: New function (patch #9363)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
203 %! baseim = ones (20, 20, 3, "uint8"); |
2be1833a93a5
movie.m: New function (patch #9363)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
204 %! mov(nframes) = struct ("cdata", [], "colormap", []); |
2be1833a93a5
movie.m: New function (patch #9363)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
205 %! for ii = 1:nframes |
2be1833a93a5
movie.m: New function (patch #9363)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
206 %! im = baseim * 255; |
2be1833a93a5
movie.m: New function (patch #9363)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
207 %! im(:,ii,1) = colors(ii,1) * 255; |
2be1833a93a5
movie.m: New function (patch #9363)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
208 %! im(:,ii,2) = colors(ii,2) * 255; |
2be1833a93a5
movie.m: New function (patch #9363)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
209 %! im(:,ii,3) = colors(ii,3) * 255; |
2be1833a93a5
movie.m: New function (patch #9363)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
210 %! mov(ii).cdata = im; |
2be1833a93a5
movie.m: New function (patch #9363)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
211 %! endfor |
2be1833a93a5
movie.m: New function (patch #9363)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
212 %! clf (); |
26242
2730917a7979
movie.m: Improve input validation and FPS accuracy (patch #9363).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
26212
diff
changeset
|
213 %! title ("Play movie forward and backward 5 times at 25 fps"); |
26212
2be1833a93a5
movie.m: New function (patch #9363)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
214 %! movie (mov, -5, 25); |
2be1833a93a5
movie.m: New function (patch #9363)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
215 |
2be1833a93a5
movie.m: New function (patch #9363)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
216 %!demo |
2be1833a93a5
movie.m: New function (patch #9363)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
217 %! nframes = 20; |
2be1833a93a5
movie.m: New function (patch #9363)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
218 %! colors = jet (nframes); |
2be1833a93a5
movie.m: New function (patch #9363)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
219 %! baseim = ones (20, 20, 3, "uint8"); |
2be1833a93a5
movie.m: New function (patch #9363)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
220 %! mov(nframes) = struct ("cdata", [], "colormap", []); |
2be1833a93a5
movie.m: New function (patch #9363)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
221 %! for ii = 1:nframes |
2be1833a93a5
movie.m: New function (patch #9363)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
222 %! im = baseim * 255; |
2be1833a93a5
movie.m: New function (patch #9363)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
223 %! im(:,ii,1) = colors(ii,1) * 255; |
2be1833a93a5
movie.m: New function (patch #9363)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
224 %! im(:,ii,2) = colors(ii,2) * 255; |
2be1833a93a5
movie.m: New function (patch #9363)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
225 %! im(:,ii,3) = colors(ii,3) * 255; |
2be1833a93a5
movie.m: New function (patch #9363)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
226 %! mov(ii).cdata = im; |
2be1833a93a5
movie.m: New function (patch #9363)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
227 %! endfor |
2be1833a93a5
movie.m: New function (patch #9363)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
228 %! clf (); |
26242
2730917a7979
movie.m: Improve input validation and FPS accuracy (patch #9363).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
26212
diff
changeset
|
229 %! title ("Play downsampled movie 5 times"); |
26212
2be1833a93a5
movie.m: New function (patch #9363)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
230 %! movie (mov, [5 1:3:nframes]); |
2be1833a93a5
movie.m: New function (patch #9363)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
231 |
2be1833a93a5
movie.m: New function (patch #9363)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
232 %!demo |
2be1833a93a5
movie.m: New function (patch #9363)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
233 %! clf (); |
2be1833a93a5
movie.m: New function (patch #9363)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
234 %! z = sombrero (); |
2be1833a93a5
movie.m: New function (patch #9363)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
235 %! hs = surf (z); |
2be1833a93a5
movie.m: New function (patch #9363)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
236 %! axis manual |
2be1833a93a5
movie.m: New function (patch #9363)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
237 %! nframes = 50; |
2be1833a93a5
movie.m: New function (patch #9363)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
238 %! mov(nframes) = struct ("cdata", [], "colormap", []); |
2be1833a93a5
movie.m: New function (patch #9363)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
239 %! for ii = 1:nframes |
2be1833a93a5
movie.m: New function (patch #9363)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
240 %! set (hs, "zdata", z * sin (2*pi*ii/nframes)); |
2be1833a93a5
movie.m: New function (patch #9363)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
241 %! mov(ii) = getframe (); |
2be1833a93a5
movie.m: New function (patch #9363)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
242 %! endfor |
2be1833a93a5
movie.m: New function (patch #9363)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
243 %! clf (); |
26242
2730917a7979
movie.m: Improve input validation and FPS accuracy (patch #9363).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
26212
diff
changeset
|
244 %! movie (mov, 3, 25); |
26212
2be1833a93a5
movie.m: New function (patch #9363)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
245 |
2be1833a93a5
movie.m: New function (patch #9363)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
246 ## Test input validation |
28896
90fea9cc9caa
test: Add expected error message <Invalid call> to BIST tests for nargin.
Rik <rik@octave.org>
parents:
27923
diff
changeset
|
247 %!error <Invalid call> movie () |
90fea9cc9caa
test: Add expected error message <Invalid call> to BIST tests for nargin.
Rik <rik@octave.org>
parents:
27923
diff
changeset
|
248 %!error <Invalid call> movie (1,2,3,4,5) |
26212
2be1833a93a5
movie.m: New function (patch #9363)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
249 %!error <MOV must be a frame struct array> movie ({2}) |
26242
2730917a7979
movie.m: Improve input validation and FPS accuracy (patch #9363).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
26212
diff
changeset
|
250 %!error <MOV must contain at least two frames> |
2730917a7979
movie.m: Improve input validation and FPS accuracy (patch #9363).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
26212
diff
changeset
|
251 %! movie (struct ("cdata", [], "colormap", [])); |
31286
10a813492497
maint: Use "nonzero" in docstrings and error messages.
Rik <rik@octave.org>
parents:
30564
diff
changeset
|
252 %!error <N must be a nonzero integer> |
26242
2730917a7979
movie.m: Improve input validation and FPS accuracy (patch #9363).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
26212
diff
changeset
|
253 %! movie (struct ("cdata", {[], []}, "colormap", []), 2.3); |
31286
10a813492497
maint: Use "nonzero" in docstrings and error messages.
Rik <rik@octave.org>
parents:
30564
diff
changeset
|
254 %!error <N must be a nonzero integer> |
26242
2730917a7979
movie.m: Improve input validation and FPS accuracy (patch #9363).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
26212
diff
changeset
|
255 %! movie (struct ("cdata", {[], []}, "colormap", []), [2.3 -6]); |
2730917a7979
movie.m: Improve input validation and FPS accuracy (patch #9363).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
26212
diff
changeset
|
256 %!error <All elements N\(2:end\) must be valid indices into the MOV struct> |
26374
b3a2ee31dd58
movie.m: Don't change "visible" property of figure handle input.
Rik <rik@octave.org>
parents:
26242
diff
changeset
|
257 %! movie (struct ("cdata", {[], []}, "colormap", []), [1 -1]); |
26242
2730917a7979
movie.m: Improve input validation and FPS accuracy (patch #9363).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
26212
diff
changeset
|
258 %!error <All elements N\(2:end\) must be valid indices into the MOV struct> |
26374
b3a2ee31dd58
movie.m: Don't change "visible" property of figure handle input.
Rik <rik@octave.org>
parents:
26242
diff
changeset
|
259 %! movie (struct ("cdata", {[], []}, "colormap", []), [1 5]); |
26242
2730917a7979
movie.m: Improve input validation and FPS accuracy (patch #9363).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
26212
diff
changeset
|
260 %!error <FPS must be a numeric scalar . 0> |
26374
b3a2ee31dd58
movie.m: Don't change "visible" property of figure handle input.
Rik <rik@octave.org>
parents:
26242
diff
changeset
|
261 %! movie (struct ("cdata", {[], []}, "colormap", []), 1, "a"); |
26242
2730917a7979
movie.m: Improve input validation and FPS accuracy (patch #9363).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
26212
diff
changeset
|
262 %!error <FPS must be a numeric scalar . 0> |
26374
b3a2ee31dd58
movie.m: Don't change "visible" property of figure handle input.
Rik <rik@octave.org>
parents:
26242
diff
changeset
|
263 %! movie (struct ("cdata", {[], []}, "colormap", []), 1, [1 1]); |
26242
2730917a7979
movie.m: Improve input validation and FPS accuracy (patch #9363).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
26212
diff
changeset
|
264 %!error <FPS must be a numeric scalar . 0> |
26374
b3a2ee31dd58
movie.m: Don't change "visible" property of figure handle input.
Rik <rik@octave.org>
parents:
26242
diff
changeset
|
265 %! movie (struct ("cdata", {[], []}, "colormap", []), 1, -1/12); |
26242
2730917a7979
movie.m: Improve input validation and FPS accuracy (patch #9363).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
26212
diff
changeset
|
266 %!error <empty image data at frame 1> |
2730917a7979
movie.m: Improve input validation and FPS accuracy (patch #9363).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
26212
diff
changeset
|
267 %! hf = figure ("visible", "off"); |
2730917a7979
movie.m: Improve input validation and FPS accuracy (patch #9363).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
26212
diff
changeset
|
268 %! unwind_protect |
2730917a7979
movie.m: Improve input validation and FPS accuracy (patch #9363).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
26212
diff
changeset
|
269 %! movie (hf, struct ("cdata", {[], []}, "colormap", [])); |
2730917a7979
movie.m: Improve input validation and FPS accuracy (patch #9363).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
26212
diff
changeset
|
270 %! unwind_protect_cleanup |
2730917a7979
movie.m: Improve input validation and FPS accuracy (patch #9363).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
26212
diff
changeset
|
271 %! close (hf); |
2730917a7979
movie.m: Improve input validation and FPS accuracy (patch #9363).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
26212
diff
changeset
|
272 %! end_unwind_protect |
2730917a7979
movie.m: Improve input validation and FPS accuracy (patch #9363).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
26212
diff
changeset
|
273 %!error <empty image data at frame 2> |
2730917a7979
movie.m: Improve input validation and FPS accuracy (patch #9363).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
26212
diff
changeset
|
274 %! hf = figure ("visible", "off"); |
2730917a7979
movie.m: Improve input validation and FPS accuracy (patch #9363).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
26212
diff
changeset
|
275 %! unwind_protect |
26374
b3a2ee31dd58
movie.m: Don't change "visible" property of figure handle input.
Rik <rik@octave.org>
parents:
26242
diff
changeset
|
276 %! movie (struct ("cdata", {ones(2), []}, "colormap", [])); |
26242
2730917a7979
movie.m: Improve input validation and FPS accuracy (patch #9363).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
26212
diff
changeset
|
277 %! unwind_protect_cleanup |
2730917a7979
movie.m: Improve input validation and FPS accuracy (patch #9363).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
26212
diff
changeset
|
278 %! close (hf); |
2730917a7979
movie.m: Improve input validation and FPS accuracy (patch #9363).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
26212
diff
changeset
|
279 %! end_unwind_protect |