Mercurial > octave
annotate scripts/image/imformats.m @ 30564:796f54d4ddbf stable
update Octave Project Developers copyright for the new year
In files that have the "Octave Project Developers" copyright notice,
update for 2021.
In all .txi and .texi files except gpl.txi and gpl.texi in the
doc/liboctave and doc/interpreter directories, change the copyright
to "Octave Project Developers", the same as used for other source
files. Update copyright notices for 2022 (not done since 2019). For
gpl.txi and gpl.texi, change the copyright notice to be "Free Software
Foundation, Inc." and leave the date at 2007 only because this file
only contains the text of the GPL, not anything created by the Octave
Project Developers.
Add Paul Thomas to contributors.in.
author | John W. Eaton <jwe@octave.org> |
---|---|
date | Tue, 28 Dec 2021 18:22:40 -0500 |
parents | 363fb10055df |
children | a33a9c87220b |
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:
30379
diff
changeset
|
3 ## Copyright (C) 2013-2022 The Octave Project Developers |
27918
b442ec6dda5c
use centralized file for copyright info for individual contributors
John W. Eaton <jwe@octave.org>
parents:
27216
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/>. |
16901 | 7 ## |
8 ## This file is part of Octave. | |
9 ## | |
24534
194eb4bd202b
maint: Update punctuation for GPL v3 license text.
Rik <rik@octave.org>
parents:
24458
diff
changeset
|
10 ## Octave is free software: you can redistribute it and/or modify it |
16901 | 11 ## 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:
24458
diff
changeset
|
12 ## the Free Software Foundation, either version 3 of the License, or |
22755
3a2b891d0b33
maint: Standardize Copyright formatting.
Rik <rik@octave.org>
parents:
22323
diff
changeset
|
13 ## (at your option) any later version. |
16901 | 14 ## |
15 ## Octave is distributed in the hope that it will be useful, but | |
16 ## WITHOUT ANY WARRANTY; without even the implied warranty of | |
22755
3a2b891d0b33
maint: Standardize Copyright formatting.
Rik <rik@octave.org>
parents:
22323
diff
changeset
|
17 ## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
3a2b891d0b33
maint: Standardize Copyright formatting.
Rik <rik@octave.org>
parents:
22323
diff
changeset
|
18 ## GNU General Public License for more details. |
16901 | 19 ## |
20 ## You should have received a copy of the GNU General Public License | |
21 ## 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:
24458
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 ######################################################################## |
16901 | 25 |
26 ## -*- texinfo -*- | |
20852
516bb87ea72e
2015 Code Sprint: remove class of function from docstring for all m-files.
Rik <rik@octave.org>
parents:
20176
diff
changeset
|
27 ## @deftypefn {} {} imformats () |
516bb87ea72e
2015 Code Sprint: remove class of function from docstring for all m-files.
Rik <rik@octave.org>
parents:
20176
diff
changeset
|
28 ## @deftypefnx {} {@var{formats} =} imformats (@var{ext}) |
516bb87ea72e
2015 Code Sprint: remove class of function from docstring for all m-files.
Rik <rik@octave.org>
parents:
20176
diff
changeset
|
29 ## @deftypefnx {} {@var{formats} =} imformats (@var{format}) |
516bb87ea72e
2015 Code Sprint: remove class of function from docstring for all m-files.
Rik <rik@octave.org>
parents:
20176
diff
changeset
|
30 ## @deftypefnx {} {@var{formats} =} imformats ("add", @var{format}) |
516bb87ea72e
2015 Code Sprint: remove class of function from docstring for all m-files.
Rik <rik@octave.org>
parents:
20176
diff
changeset
|
31 ## @deftypefnx {} {@var{formats} =} imformats ("remove", @var{ext}) |
516bb87ea72e
2015 Code Sprint: remove class of function from docstring for all m-files.
Rik <rik@octave.org>
parents:
20176
diff
changeset
|
32 ## @deftypefnx {} {@var{formats} =} imformats ("update", @var{ext}, @var{format}) |
516bb87ea72e
2015 Code Sprint: remove class of function from docstring for all m-files.
Rik <rik@octave.org>
parents:
20176
diff
changeset
|
33 ## @deftypefnx {} {@var{formats} =} imformats ("factory") |
16901 | 34 ## Manage supported image formats. |
35 ## | |
36 ## @var{formats} is a structure with information about each supported file | |
37 ## format, or from a specific format @var{ext}, the value displayed on the | |
25472
9771111f04f4
doc: Use @var rather than @code to mark inputs to functions in docstrings.
Rik <rik@octave.org>
parents:
25054
diff
changeset
|
38 ## field @var{ext}. It contains the following fields: |
16901 | 39 ## |
40 ## @table @asis | |
41 ## @item ext | |
42 ## The name of the file format. This may match the file extension but Octave | |
43 ## will automatically detect the file format. | |
17170
d6499c14021c
doc: Periodic grammarcheck of documentation.
Rik <rik@octave.org>
parents:
17086
diff
changeset
|
44 ## |
16901 | 45 ## @item description |
46 ## A long description of the file format. | |
17170
d6499c14021c
doc: Periodic grammarcheck of documentation.
Rik <rik@octave.org>
parents:
17086
diff
changeset
|
47 ## |
16922
bfd119642f6a
doc: Fix some spellings in image.texi.
Rik <rik@octave.org>
parents:
16916
diff
changeset
|
48 ## @item @nospell{isa} |
16901 | 49 ## A function handle to confirm if a file is of the specified format. |
17170
d6499c14021c
doc: Periodic grammarcheck of documentation.
Rik <rik@octave.org>
parents:
17086
diff
changeset
|
50 ## |
16901 | 51 ## @item write |
52 ## A function handle to write if a file is of the specified format. | |
17170
d6499c14021c
doc: Periodic grammarcheck of documentation.
Rik <rik@octave.org>
parents:
17086
diff
changeset
|
53 ## |
16901 | 54 ## @item read |
55 ## A function handle to open files the specified format. | |
17170
d6499c14021c
doc: Periodic grammarcheck of documentation.
Rik <rik@octave.org>
parents:
17086
diff
changeset
|
56 ## |
16901 | 57 ## @item info |
58 ## A function handle to obtain image information of the specified format. | |
17170
d6499c14021c
doc: Periodic grammarcheck of documentation.
Rik <rik@octave.org>
parents:
17086
diff
changeset
|
59 ## |
16901 | 60 ## @item alpha |
61 ## Logical value if format supports alpha channel (transparency or matte). | |
17170
d6499c14021c
doc: Periodic grammarcheck of documentation.
Rik <rik@octave.org>
parents:
17086
diff
changeset
|
62 ## |
16901 | 63 ## @item multipage |
64 ## Logical value if format supports multipage (multiple images per file). | |
65 ## @end table | |
66 ## | |
20158
7503499a252b
doc: Update docstrings to have one sentence summary as first line.
Rik <rik@octave.org>
parents:
19697
diff
changeset
|
67 ## It is possible to change the way Octave manages file formats with the |
7503499a252b
doc: Update docstrings to have one sentence summary as first line.
Rik <rik@octave.org>
parents:
19697
diff
changeset
|
68 ## options @qcode{"add"}, @qcode{"remove"}, and @qcode{"update"}, and supplying |
7503499a252b
doc: Update docstrings to have one sentence summary as first line.
Rik <rik@octave.org>
parents:
19697
diff
changeset
|
69 ## a structure @var{format} with the required fields. The option |
17281
bc924baa2c4e
doc: Add new @qcode macro for code samples which are quoted.
Rik <rik@octave.org>
parents:
17170
diff
changeset
|
70 ## @qcode{"factory"} resets the configuration to the default. |
16901 | 71 ## |
72 ## This can be used by Octave packages to extend the image reading capabilities | |
73 ## Octave, through use of the PKG_ADD and PKG_DEL commands. | |
74 ## | |
75 ## @seealso{imfinfo, imread, imwrite} | |
76 ## @end deftypefn | |
77 | |
78 function varargout = imformats (arg1, arg2, arg3) | |
21758
ffad2baa90f7
maint: Use newlines to make code more readable.
Rik <rik@octave.org>
parents:
21751
diff
changeset
|
79 |
28945
6e460773bdda
maint: Use newlines after "function" and before "endfunction" for clarity.
Rik <rik@octave.org>
parents:
28912
diff
changeset
|
80 mlock (); # prevent formats being removed by "clear all" |
16901 | 81 persistent formats = default_formats (); |
82 | |
83 if (nargin == 0 && nargout == 0) | |
20170
c0f64bc26eee
imformats.m: rewrite pretty print of format table.
Carnë Draug <carandraug@octave.org>
parents:
20169
diff
changeset
|
84 pretty_print_formats (formats); |
16901 | 85 elseif (nargin >= 1) |
86 if (isstruct (arg1)) | |
87 arrayfun (@is_valid_format, arg1); | |
88 ## FIXME: what is the return value in this situation? | |
89 formats = arg1; | |
90 | |
91 elseif (ischar (arg1)) | |
92 switch (tolower (arg1)) | |
93 case "add", | |
94 if (! isstruct (arg2)) | |
28905
89a425f2c202
maint: Use Octave convention that error() messages don't end with a period.
Rik <rik@octave.org>
parents:
28789
diff
changeset
|
95 error ("imformats: FORMAT to %s must be a structure", arg1); |
16901 | 96 endif |
97 arrayfun (@is_valid_format, arg2); | |
16949
1eb5e5f0ee13
imformats.m: add tests and fix bug when adding new formats.
Carnë Draug <carandraug@octave.org>
parents:
16922
diff
changeset
|
98 formats(end + 1: end + numel (arg2)) = arg2; |
16907
04f4f067eb33
imformats: fix typos and silence some statements.
Carnë Draug <carandraug@octave.org>
parents:
16906
diff
changeset
|
99 varargout{1} = formats; |
16901 | 100 |
101 case {"remove", "update"}, | |
102 if (! ischar (arg2)) | |
28905
89a425f2c202
maint: Use Octave convention that error() messages don't end with a period.
Rik <rik@octave.org>
parents:
28789
diff
changeset
|
103 error ("imformats: EXT to %s must be a string", arg1); |
16901 | 104 endif |
28945
6e460773bdda
maint: Use newlines after "function" and before "endfunction" for clarity.
Rik <rik@octave.org>
parents:
28912
diff
changeset
|
105 ## FIXME: Suppose a format with multiple extensions; if one of |
16901 | 106 ## them is requested to be removed, should we remove the |
107 ## whole format, or just that extension from the format? | |
16907
04f4f067eb33
imformats: fix typos and silence some statements.
Carnë Draug <carandraug@octave.org>
parents:
16906
diff
changeset
|
108 match = find_ext_idx (formats, arg2); |
16901 | 109 if (! any (match)) |
28905
89a425f2c202
maint: Use Octave convention that error() messages don't end with a period.
Rik <rik@octave.org>
parents:
28789
diff
changeset
|
110 error ("imformats: no EXT '%s' found", arg2); |
16901 | 111 endif |
112 if (strcmpi (arg1, "remove")) | |
113 formats(match) = []; | |
114 else | |
115 ## then it's update | |
116 if (! isstruct (arg3)) | |
28905
89a425f2c202
maint: Use Octave convention that error() messages don't end with a period.
Rik <rik@octave.org>
parents:
28789
diff
changeset
|
117 error ("imformats: FORMAT to update must be a structure"); |
16901 | 118 endif |
119 is_valid_format (arg3); | |
120 formats(match) = arg3; | |
121 endif | |
16907
04f4f067eb33
imformats: fix typos and silence some statements.
Carnë Draug <carandraug@octave.org>
parents:
16906
diff
changeset
|
122 varargout{1} = formats; |
16901 | 123 |
124 case "factory", | |
125 formats = default_formats (); | |
126 otherwise | |
127 ## then we look for a format with that extension. | |
16907
04f4f067eb33
imformats: fix typos and silence some statements.
Carnë Draug <carandraug@octave.org>
parents:
16906
diff
changeset
|
128 match = find_ext_idx (formats, arg1); |
28945
6e460773bdda
maint: Use newlines after "function" and before "endfunction" for clarity.
Rik <rik@octave.org>
parents:
28912
diff
changeset
|
129 ## For Matlab compatibility, if we don't find any format we must |
21751
b571fc85953f
maint: Use two spaces after period to indicate sentence break.
Rik <rik@octave.org>
parents:
21634
diff
changeset
|
130 ## return an empty struct with NO fields. We can't use match as mask |
16901 | 131 if (any (match)) |
16907
04f4f067eb33
imformats: fix typos and silence some statements.
Carnë Draug <carandraug@octave.org>
parents:
16906
diff
changeset
|
132 varargout{1} = formats(match); |
16901 | 133 else |
16907
04f4f067eb33
imformats: fix typos and silence some statements.
Carnë Draug <carandraug@octave.org>
parents:
16906
diff
changeset
|
134 varargout{1} = struct (); |
16901 | 135 endif |
136 endswitch | |
137 else | |
28905
89a425f2c202
maint: Use Octave convention that error() messages don't end with a period.
Rik <rik@octave.org>
parents:
28789
diff
changeset
|
138 error ("imformats: first argument must be either a structure or string"); |
16901 | 139 endif |
140 else | |
141 varargout{1} = formats; | |
142 endif | |
21758
ffad2baa90f7
maint: Use newlines to make code more readable.
Rik <rik@octave.org>
parents:
21751
diff
changeset
|
143 |
16901 | 144 endfunction |
145 | |
24458
516437d2194d
don't allow function parameters (in or out) to be persistent
John W. Eaton <jwe@octave.org>
parents:
23220
diff
changeset
|
146 function rformats = default_formats () |
16901 | 147 |
148 ## The available formats are dependent on what the user has installed at | |
21751
b571fc85953f
maint: Use two spaces after period to indicate sentence break.
Rik <rik@octave.org>
parents:
21634
diff
changeset
|
149 ## a given time, and how GraphicsMagick was built. Checking for |
16901 | 150 ## GraphicsMagick features when building Octave is not enough since it |
151 ## delegates some of them to external programs which can be removed or | |
152 ## installed at any time. | |
153 ## The recommended method would be to use CoderInfoList() to get a list of | |
154 ## all available coders and try to write and read back a small test image. | |
155 ## But this will not work since some coders are readable or writable only. | |
156 ## It will still fail if we test only the ones marked as readable and | |
157 ## writable because some RW coders are not of image formats (NULL, 8BIM, | |
158 ## or EXIF for example). | |
27216
823b4bcf79fc
unless necessary for formatting or code, use ' instead of `
John W. Eaton <jwe@octave.org>
parents:
26376
diff
changeset
|
159 ## So we'd need a blacklist (unacceptable because a 'bad' coder may be |
21751
b571fc85953f
maint: Use two spaces after period to indicate sentence break.
Rik <rik@octave.org>
parents:
21634
diff
changeset
|
160 ## added later) or a whitelist. A whitelist means that even with a |
16901 | 161 ## super-fancy recent build of GraphicsMagick, some formats won't be listed |
162 ## by imformats but in truth, we will still be able to read and write them | |
163 ## since imread() and imwrite() will give it a try anyway. | |
164 ## | |
165 ## For more info and comments from the GraphicsMagick main developer, see | |
166 ## http://sourceforge.net/mailarchive/forum.php?thread_name=alpine.GSO.2.01.1304301916050.2267%40freddy.simplesystems.org&forum_name=graphicsmagick-help | |
167 | |
168 persistent formats = struct ( "coder", {}, | |
169 "ext", {}, | |
170 "isa", {}, | |
171 "info", {}, | |
172 "read", {}, | |
173 "write", {}, | |
174 "alpha", {}, | |
175 "description", {}, | |
176 "multipage", {}); | |
177 | |
178 ## Image IO abilities won't change during the same Octave session, | |
179 ## there's no need to go and calculate it all over again if we are | |
180 ## requested to reset back to factory. | |
181 if (! isempty (formats)) | |
24458
516437d2194d
don't allow function parameters (in or out) to be persistent
John W. Eaton <jwe@octave.org>
parents:
23220
diff
changeset
|
182 rformats = formats; |
17312
088d014a7fe2
Use semicolon after "return" statement in core m-files.
Rik <rik@octave.org>
parents:
17281
diff
changeset
|
183 return; |
16901 | 184 endif |
185 | |
186 ## Building the formats info | |
187 ## | |
21751
b571fc85953f
maint: Use two spaces after period to indicate sentence break.
Rik <rik@octave.org>
parents:
21634
diff
changeset
|
188 ## As mentioned above we start with a whitelist of coders. Since the |
16901 | 189 ## GraphicsMagick build may be missing some coders, we will remove those |
21751
b571fc85953f
maint: Use two spaces after period to indicate sentence break.
Rik <rik@octave.org>
parents:
21634
diff
changeset
|
190 ## from the list. Some info can be obtained directly from GraphicsMagick |
b571fc85953f
maint: Use two spaces after period to indicate sentence break.
Rik <rik@octave.org>
parents:
21634
diff
changeset
|
191 ## through the CoderInfo object. However, some will need to be hardcoded. |
16901 | 192 ## |
193 ## The association between file extensions and coders needs to be done | |
194 ## with a manually coded list (file extensions do not define the image | |
195 ## format and GraphicsMagick will not be fooled by changing the extension). | |
196 ## | |
197 ## We can get the read, write, description and multipage fields from | |
21751
b571fc85953f
maint: Use two spaces after period to indicate sentence break.
Rik <rik@octave.org>
parents:
21634
diff
changeset
|
198 ## CoderInfo in C++. We should do the same for alpha (GraphicsMagick |
b571fc85953f
maint: Use two spaces after period to indicate sentence break.
Rik <rik@octave.org>
parents:
21634
diff
changeset
|
199 ## calls it matte) but it's not available from CoderInfo. The only way to |
16901 | 200 ## check it is to create a sample image with each coder, then try to read |
201 ## it back with GraphicsMagick and use the matte method on the Image class. | |
202 ## But making such test for each Octave session... meh! While technically | |
203 ## it may be possible that the same coder has different support for alpha | |
204 ## channel in different versions and builds, this doesn't seem to happen. | |
21751
b571fc85953f
maint: Use two spaces after period to indicate sentence break.
Rik <rik@octave.org>
parents:
21634
diff
changeset
|
205 ## So we also hardcode those. In the future, maybe the CoderInfo class will |
16901 | 206 ## have a matte method like it does for multipage. |
207 ## | |
21751
b571fc85953f
maint: Use two spaces after period to indicate sentence break.
Rik <rik@octave.org>
parents:
21634
diff
changeset
|
208 ## Other notes: some formats have more than one coder that do the same. For |
b571fc85953f
maint: Use two spaces after period to indicate sentence break.
Rik <rik@octave.org>
parents:
21634
diff
changeset
|
209 ## example, for jpeg images there is both the JPG and JPEG coders. However, |
16901 | 210 ## it seems that when reading images, GraphicsMagick only uses one of them |
211 ## and that's the one we list (it's the one reported by imfinfo and that we | |
21751
b571fc85953f
maint: Use two spaces after period to indicate sentence break.
Rik <rik@octave.org>
parents:
21634
diff
changeset
|
212 ## can use for isa). However, in some cases GraphicsMagick seems to rely |
b571fc85953f
maint: Use two spaces after period to indicate sentence break.
Rik <rik@octave.org>
parents:
21634
diff
changeset
|
213 ## uniquely on the file extension (JBIG and JBG at least. Create an image |
16901 | 214 ## with each of those coders, swap their extension and it will report the |
21751
b571fc85953f
maint: Use two spaces after period to indicate sentence break.
Rik <rik@octave.org>
parents:
21634
diff
changeset
|
215 ## other coder). We don't have such cases on the whitelist but if we did, we |
16901 | 216 ## would need two entries for such cases. |
217 | |
218 ## each row: 1st => Coder, 2nd=> file extensions, 3rd=> alpha | |
219 coders = {"BMP", {"bmp"}, true; | |
220 "CUR", {"cur"}, false; | |
221 "GIF", {"gif"}, true; | |
222 "ICO", {"ico"}, true; | |
223 "JBG", {"jbg"}, false; | |
224 "JBIG", {"jbig"}, false; | |
225 "JP2", {"jp2", "jpx"}, true; | |
226 "JPEG", {"jpg", "jpeg"}, false; # there is also a JPG coder | |
227 "PBM", {"pbm"}, false; | |
228 "PCX", {"pcx"}, true; | |
229 "PGM", {"pgm"}, false; | |
230 "PNG", {"png"}, true; | |
231 ## PNM is a family of formats supporting portable bitmaps (PBM), | |
21751
b571fc85953f
maint: Use two spaces after period to indicate sentence break.
Rik <rik@octave.org>
parents:
21634
diff
changeset
|
232 ## graymaps (PGM), and pixmaps (PPM). There is no file format |
b571fc85953f
maint: Use two spaces after period to indicate sentence break.
Rik <rik@octave.org>
parents:
21634
diff
changeset
|
233 ## associated with pnm itself. If PNM is used as the output format |
16901 | 234 ## specifier, then GraphicsMagick automatically selects the most |
235 ## appropriate format to represent the image. | |
236 "PNM", {"pnm"}, true; | |
237 "PPM", {"ppm"}, false; | |
238 "SUN", {"ras"}, true; # SUN Rasterfile | |
239 "TGA", {"tga", "tpic"}, true; | |
240 "TIFF", {"tif", "tiff"}, true; | |
241 "XBM", {"xbm"}, false; | |
242 "XPM", {"xpm"}, true; | |
243 "XWD", {"xwd"}, false; | |
244 }; | |
245 | |
28912
0de38a6ef693
maint: Use Octave convention of space after function name in scripts dir.
Rik <rik@octave.org>
parents:
28905
diff
changeset
|
246 for fidx = 1:rows (coders) |
16901 | 247 formats(fidx).coder = coders{fidx, 1}; |
248 formats(fidx).ext = coders{fidx, 2}; | |
249 formats(fidx).alpha = coders{fidx, 3}; | |
250 ## default isa is to check if the format returned by imfinfo is the coder | |
251 formats(fidx).isa = @(x) isa_magick (coders{fidx,1}, x); | |
252 endfor | |
253 | |
254 ## the default info, read, and write functions | |
17086
3db796f89695
Rename private core_imfnc functions to follow the __fnc__ convention style.
Carnë Draug <carandraug@octave.org>
parents:
16949
diff
changeset
|
255 [formats.info ] = deal (@__imfinfo__); |
3db796f89695
Rename private core_imfnc functions to follow the __fnc__ convention style.
Carnë Draug <carandraug@octave.org>
parents:
16949
diff
changeset
|
256 [formats.read ] = deal (@__imread__); |
3db796f89695
Rename private core_imfnc functions to follow the __fnc__ convention style.
Carnë Draug <carandraug@octave.org>
parents:
16949
diff
changeset
|
257 [formats.write] = deal (@__imwrite__); |
16901 | 258 |
259 ## fills rest of format information by checking with GraphicsMagick | |
260 formats = __magick_formats__ (formats); | |
21758
ffad2baa90f7
maint: Use newlines to make code more readable.
Rik <rik@octave.org>
parents:
21751
diff
changeset
|
261 |
24458
516437d2194d
don't allow function parameters (in or out) to be persistent
John W. Eaton <jwe@octave.org>
parents:
23220
diff
changeset
|
262 rformats = formats; |
516437d2194d
don't allow function parameters (in or out) to be persistent
John W. Eaton <jwe@octave.org>
parents:
23220
diff
changeset
|
263 |
16901 | 264 endfunction |
265 | |
266 function is_valid_format (format) | |
28945
6e460773bdda
maint: Use newlines after "function" and before "endfunction" for clarity.
Rik <rik@octave.org>
parents:
28912
diff
changeset
|
267 |
21751
b571fc85953f
maint: Use two spaces after period to indicate sentence break.
Rik <rik@octave.org>
parents:
21634
diff
changeset
|
268 ## the minimal list of fields required in the structure. We don't |
16901 | 269 ## require multipage because it doesn't exist in matlab |
270 min_fields = {"ext", "read", "isa", "write", "info", "alpha", "description"}; | |
17386
6dbc866379e2
Replace cellfun() occurrences with faster code where possible.
Rik <rik@octave.org>
parents:
17351
diff
changeset
|
271 fields_mask = isfield (format, min_fields); |
16901 | 272 if (! all (fields_mask)) |
28905
89a425f2c202
maint: Use Octave convention that error() messages don't end with a period.
Rik <rik@octave.org>
parents:
28789
diff
changeset
|
273 error ("imformats: structure has missing field '%s'", min_fields(! fields_mask){1}); |
16901 | 274 endif |
21758
ffad2baa90f7
maint: Use newlines to make code more readable.
Rik <rik@octave.org>
parents:
21751
diff
changeset
|
275 |
16901 | 276 endfunction |
277 | |
278 function match = find_ext_idx (formats, ext) | |
28945
6e460773bdda
maint: Use newlines after "function" and before "endfunction" for clarity.
Rik <rik@octave.org>
parents:
28912
diff
changeset
|
279 |
21758
ffad2baa90f7
maint: Use newlines to make code more readable.
Rik <rik@octave.org>
parents:
21751
diff
changeset
|
280 ## FIXME: what should we do if there's more than one hit? |
ffad2baa90f7
maint: Use newlines to make code more readable.
Rik <rik@octave.org>
parents:
21751
diff
changeset
|
281 ## Should this function prevent the addition of |
ffad2baa90f7
maint: Use newlines to make code more readable.
Rik <rik@octave.org>
parents:
21751
diff
changeset
|
282 ## duplicated extensions? |
18292
4718af222d9d
image/imformats.m: be case insensitive about file extension.
Carnë Draug <carandraug@octave.org>
parents:
17580
diff
changeset
|
283 match = cellfun (@(x) any (strcmpi (x, ext)), {formats.ext}); |
28945
6e460773bdda
maint: Use newlines after "function" and before "endfunction" for clarity.
Rik <rik@octave.org>
parents:
28912
diff
changeset
|
284 |
16901 | 285 endfunction |
286 | |
287 function bool = isa_magick (coder, filename) | |
21758
ffad2baa90f7
maint: Use newlines to make code more readable.
Rik <rik@octave.org>
parents:
21751
diff
changeset
|
288 |
16901 | 289 bool = false; |
290 try | |
17351
80bf005cdf8e
New function __magick_ping__ to speed reading of images.
Carnë Draug <carandraug@octave.org>
parents:
17338
diff
changeset
|
291 info = __magick_ping__ (filename, 1); |
16901 | 292 bool = strcmp (coder, info.Format); |
293 end_try_catch | |
21758
ffad2baa90f7
maint: Use newlines to make code more readable.
Rik <rik@octave.org>
parents:
21751
diff
changeset
|
294 |
16901 | 295 endfunction |
16949
1eb5e5f0ee13
imformats.m: add tests and fix bug when adding new formats.
Carnë Draug <carandraug@octave.org>
parents:
16922
diff
changeset
|
296 |
20170
c0f64bc26eee
imformats.m: rewrite pretty print of format table.
Carnë Draug <carandraug@octave.org>
parents:
20169
diff
changeset
|
297 function pretty_print_formats (formats) |
30379
363fb10055df
maint: Style check m-files ahead of 7.1 release.
Rik <rik@octave.org>
parents:
29359
diff
changeset
|
298 |
20169
cf96961effdb
imformats.m: implement pretty print when nargout is zero (bug #44119)
Hartmut Gimpel <hg_code@gmx.de>
parents:
19697
diff
changeset
|
299 ## define header names (none should be shorter than 3 characters) |
20170
c0f64bc26eee
imformats.m: rewrite pretty print of format table.
Carnë Draug <carandraug@octave.org>
parents:
20169
diff
changeset
|
300 headers = {"Extension", "isa", "Info", "Read", "Write", "Alpha", "Description"}; |
c0f64bc26eee
imformats.m: rewrite pretty print of format table.
Carnë Draug <carandraug@octave.org>
parents:
20169
diff
changeset
|
301 cols_length = cellfun (@numel, headers); |
c0f64bc26eee
imformats.m: rewrite pretty print of format table.
Carnë Draug <carandraug@octave.org>
parents:
20169
diff
changeset
|
302 |
c0f64bc26eee
imformats.m: rewrite pretty print of format table.
Carnë Draug <carandraug@octave.org>
parents:
20169
diff
changeset
|
303 ## Adjust the maximal length of the extensions column |
c0f64bc26eee
imformats.m: rewrite pretty print of format table.
Carnë Draug <carandraug@octave.org>
parents:
20169
diff
changeset
|
304 extensions = cellfun (@strjoin, {formats.ext}, {", "}, |
c0f64bc26eee
imformats.m: rewrite pretty print of format table.
Carnë Draug <carandraug@octave.org>
parents:
20169
diff
changeset
|
305 "UniformOutput", false); |
c0f64bc26eee
imformats.m: rewrite pretty print of format table.
Carnë Draug <carandraug@octave.org>
parents:
20169
diff
changeset
|
306 cols_length(1) = max (max (cellfun (@numel, extensions)), cols_length(1)); |
c0f64bc26eee
imformats.m: rewrite pretty print of format table.
Carnë Draug <carandraug@octave.org>
parents:
20169
diff
changeset
|
307 headers{1} = postpad (headers{1}, cols_length(1), " "); |
c0f64bc26eee
imformats.m: rewrite pretty print of format table.
Carnë Draug <carandraug@octave.org>
parents:
20169
diff
changeset
|
308 |
c0f64bc26eee
imformats.m: rewrite pretty print of format table.
Carnë Draug <carandraug@octave.org>
parents:
20169
diff
changeset
|
309 ## Print the headers |
c0f64bc26eee
imformats.m: rewrite pretty print of format table.
Carnë Draug <carandraug@octave.org>
parents:
20169
diff
changeset
|
310 disp (strjoin (headers, " | ")); |
c0f64bc26eee
imformats.m: rewrite pretty print of format table.
Carnë Draug <carandraug@octave.org>
parents:
20169
diff
changeset
|
311 under_headers = cellfun (@(x) repmat ("-", 1, numel (x)), headers, |
c0f64bc26eee
imformats.m: rewrite pretty print of format table.
Carnë Draug <carandraug@octave.org>
parents:
20169
diff
changeset
|
312 "UniformOutput", false); |
c0f64bc26eee
imformats.m: rewrite pretty print of format table.
Carnë Draug <carandraug@octave.org>
parents:
20169
diff
changeset
|
313 disp (strjoin (under_headers, "-+-")); |
c0f64bc26eee
imformats.m: rewrite pretty print of format table.
Carnë Draug <carandraug@octave.org>
parents:
20169
diff
changeset
|
314 |
c0f64bc26eee
imformats.m: rewrite pretty print of format table.
Carnë Draug <carandraug@octave.org>
parents:
20169
diff
changeset
|
315 template = strjoin (arrayfun (@(x) sprintf ("%%-%is", x), cols_length, |
c0f64bc26eee
imformats.m: rewrite pretty print of format table.
Carnë Draug <carandraug@octave.org>
parents:
20169
diff
changeset
|
316 "UniformOutput", false), " | "); |
c0f64bc26eee
imformats.m: rewrite pretty print of format table.
Carnë Draug <carandraug@octave.org>
parents:
20169
diff
changeset
|
317 |
c0f64bc26eee
imformats.m: rewrite pretty print of format table.
Carnë Draug <carandraug@octave.org>
parents:
20169
diff
changeset
|
318 ## Print the function handle for this things won't be a pretty table. So |
c0f64bc26eee
imformats.m: rewrite pretty print of format table.
Carnë Draug <carandraug@octave.org>
parents:
20169
diff
changeset
|
319 ## instead we replace them with "yes" or "no", based on the support it has. |
c0f64bc26eee
imformats.m: rewrite pretty print of format table.
Carnë Draug <carandraug@octave.org>
parents:
20169
diff
changeset
|
320 yes_no_cols = cat (2, {formats.isa}(:), {formats.info}(:), {formats.read}(:), |
c0f64bc26eee
imformats.m: rewrite pretty print of format table.
Carnë Draug <carandraug@octave.org>
parents:
20169
diff
changeset
|
321 {formats.write}(:), {formats.alpha}(:)); |
c0f64bc26eee
imformats.m: rewrite pretty print of format table.
Carnë Draug <carandraug@octave.org>
parents:
20169
diff
changeset
|
322 empty = cellfun (@isempty, yes_no_cols); |
c0f64bc26eee
imformats.m: rewrite pretty print of format table.
Carnë Draug <carandraug@octave.org>
parents:
20169
diff
changeset
|
323 yes_no_cols(empty) = "no"; |
c0f64bc26eee
imformats.m: rewrite pretty print of format table.
Carnë Draug <carandraug@octave.org>
parents:
20169
diff
changeset
|
324 yes_no_cols(! empty) = "yes"; |
c0f64bc26eee
imformats.m: rewrite pretty print of format table.
Carnë Draug <carandraug@octave.org>
parents:
20169
diff
changeset
|
325 |
c0f64bc26eee
imformats.m: rewrite pretty print of format table.
Carnë Draug <carandraug@octave.org>
parents:
20169
diff
changeset
|
326 descriptions = {formats.description}; |
c0f64bc26eee
imformats.m: rewrite pretty print of format table.
Carnë Draug <carandraug@octave.org>
parents:
20169
diff
changeset
|
327 table = cat (2, extensions(:), yes_no_cols, descriptions(:)); |
21634
96518f623c91
Backed out changeset dcf8922b724b
Mike Miller <mtmiller@octave.org>
parents:
21633
diff
changeset
|
328 printf ([template "\n"], table'{:}); |
20170
c0f64bc26eee
imformats.m: rewrite pretty print of format table.
Carnë Draug <carandraug@octave.org>
parents:
20169
diff
changeset
|
329 |
20169
cf96961effdb
imformats.m: implement pretty print when nargout is zero (bug #44119)
Hartmut Gimpel <hg_code@gmx.de>
parents:
19697
diff
changeset
|
330 endfunction |
cf96961effdb
imformats.m: implement pretty print when nargout is zero (bug #44119)
Hartmut Gimpel <hg_code@gmx.de>
parents:
19697
diff
changeset
|
331 |
21758
ffad2baa90f7
maint: Use newlines to make code more readable.
Rik <rik@octave.org>
parents:
21751
diff
changeset
|
332 |
21489
ea81c2fdd568
imformats: return empty instead of error if there's no support for image IO.
Carnë Draug <carandraug@octave.org>
parents:
20852
diff
changeset
|
333 ## This must work, even without support for image IO |
ea81c2fdd568
imformats: return empty instead of error if there's no support for image IO.
Carnë Draug <carandraug@octave.org>
parents:
20852
diff
changeset
|
334 %!test |
ea81c2fdd568
imformats: return empty instead of error if there's no support for image IO.
Carnë Draug <carandraug@octave.org>
parents:
20852
diff
changeset
|
335 %! formats = imformats (); |
21580
ecce63c99c3f
maint: Add semicolons to terminate code in %! blocks.
Rik <rik@octave.org>
parents:
21489
diff
changeset
|
336 %! assert (isstruct (formats)); |
21489
ea81c2fdd568
imformats: return empty instead of error if there's no support for image IO.
Carnë Draug <carandraug@octave.org>
parents:
20852
diff
changeset
|
337 %! |
ea81c2fdd568
imformats: return empty instead of error if there's no support for image IO.
Carnë Draug <carandraug@octave.org>
parents:
20852
diff
changeset
|
338 %! min_fields = {"ext", "read", "isa", "write", "info", "alpha", "description"}; |
21580
ecce63c99c3f
maint: Add semicolons to terminate code in %! blocks.
Rik <rik@octave.org>
parents:
21489
diff
changeset
|
339 %! assert (all (ismember (min_fields, fieldnames (formats)))); |
21489
ea81c2fdd568
imformats: return empty instead of error if there's no support for image IO.
Carnë Draug <carandraug@octave.org>
parents:
20852
diff
changeset
|
340 %! |
ea81c2fdd568
imformats: return empty instead of error if there's no support for image IO.
Carnë Draug <carandraug@octave.org>
parents:
20852
diff
changeset
|
341 %! if (__have_feature__ ("MAGICK")) |
21580
ecce63c99c3f
maint: Add semicolons to terminate code in %! blocks.
Rik <rik@octave.org>
parents:
21489
diff
changeset
|
342 %! assert (numel (formats) > 0); |
21489
ea81c2fdd568
imformats: return empty instead of error if there's no support for image IO.
Carnë Draug <carandraug@octave.org>
parents:
20852
diff
changeset
|
343 %! else |
21580
ecce63c99c3f
maint: Add semicolons to terminate code in %! blocks.
Rik <rik@octave.org>
parents:
21489
diff
changeset
|
344 %! assert (numel (formats), 0); |
21489
ea81c2fdd568
imformats: return empty instead of error if there's no support for image IO.
Carnë Draug <carandraug@octave.org>
parents:
20852
diff
changeset
|
345 %! endif |
ea81c2fdd568
imformats: return empty instead of error if there's no support for image IO.
Carnë Draug <carandraug@octave.org>
parents:
20852
diff
changeset
|
346 |
18298
15db54c4a572
Fix input parsing for imageIO functions and make imread accept URL (bug #41234)
Carnë Draug <carandraug@octave.org>
parents:
18297
diff
changeset
|
347 ## When imread or imfinfo are called, the file must exist or the |
15db54c4a572
Fix input parsing for imageIO functions and make imread accept URL (bug #41234)
Carnë Draug <carandraug@octave.org>
parents:
18297
diff
changeset
|
348 ## function defined by imformats will never be called. Because |
15db54c4a572
Fix input parsing for imageIO functions and make imread accept URL (bug #41234)
Carnë Draug <carandraug@octave.org>
parents:
18297
diff
changeset
|
349 ## of this, we must create a file for the tests to work. |
15db54c4a572
Fix input parsing for imageIO functions and make imread accept URL (bug #41234)
Carnë Draug <carandraug@octave.org>
parents:
18297
diff
changeset
|
350 |
15db54c4a572
Fix input parsing for imageIO functions and make imread accept URL (bug #41234)
Carnë Draug <carandraug@octave.org>
parents:
18297
diff
changeset
|
351 ## changing the function that does the reading |
16949
1eb5e5f0ee13
imformats.m: add tests and fix bug when adding new formats.
Carnë Draug <carandraug@octave.org>
parents:
16922
diff
changeset
|
352 %!testif HAVE_MAGICK |
19278
6ca096827123
Use tempname() rather than tmpnam() in core Octave.
Rik <rik@octave.org>
parents:
18298
diff
changeset
|
353 %! fname = [tempname() ".jpg"]; |
18298
15db54c4a572
Fix input parsing for imageIO functions and make imread accept URL (bug #41234)
Carnë Draug <carandraug@octave.org>
parents:
18297
diff
changeset
|
354 %! def_fmt = imformats (); |
15db54c4a572
Fix input parsing for imageIO functions and make imread accept URL (bug #41234)
Carnë Draug <carandraug@octave.org>
parents:
18297
diff
changeset
|
355 %! fid = fopen (fname, "w"); |
15db54c4a572
Fix input parsing for imageIO functions and make imread accept URL (bug #41234)
Carnë Draug <carandraug@octave.org>
parents:
18297
diff
changeset
|
356 %! unwind_protect |
15db54c4a572
Fix input parsing for imageIO functions and make imread accept URL (bug #41234)
Carnë Draug <carandraug@octave.org>
parents:
18297
diff
changeset
|
357 %! fmt = imformats ("jpg"); |
15db54c4a572
Fix input parsing for imageIO functions and make imread accept URL (bug #41234)
Carnë Draug <carandraug@octave.org>
parents:
18297
diff
changeset
|
358 %! fmt.read = @numel; |
15db54c4a572
Fix input parsing for imageIO functions and make imread accept URL (bug #41234)
Carnë Draug <carandraug@octave.org>
parents:
18297
diff
changeset
|
359 %! imformats ("update", "jpg", fmt); |
15db54c4a572
Fix input parsing for imageIO functions and make imread accept URL (bug #41234)
Carnë Draug <carandraug@octave.org>
parents:
18297
diff
changeset
|
360 %! assert (imread (fname), numel (fname)); |
15db54c4a572
Fix input parsing for imageIO functions and make imread accept URL (bug #41234)
Carnë Draug <carandraug@octave.org>
parents:
18297
diff
changeset
|
361 %! unwind_protect_cleanup |
15db54c4a572
Fix input parsing for imageIO functions and make imread accept URL (bug #41234)
Carnë Draug <carandraug@octave.org>
parents:
18297
diff
changeset
|
362 %! fclose (fid); |
15db54c4a572
Fix input parsing for imageIO functions and make imread accept URL (bug #41234)
Carnë Draug <carandraug@octave.org>
parents:
18297
diff
changeset
|
363 %! unlink (fname); |
15db54c4a572
Fix input parsing for imageIO functions and make imread accept URL (bug #41234)
Carnë Draug <carandraug@octave.org>
parents:
18297
diff
changeset
|
364 %! imformats (def_fmt); |
15db54c4a572
Fix input parsing for imageIO functions and make imread accept URL (bug #41234)
Carnë Draug <carandraug@octave.org>
parents:
18297
diff
changeset
|
365 %! end_unwind_protect |
16949
1eb5e5f0ee13
imformats.m: add tests and fix bug when adding new formats.
Carnë Draug <carandraug@octave.org>
parents:
16922
diff
changeset
|
366 |
1eb5e5f0ee13
imformats.m: add tests and fix bug when adding new formats.
Carnë Draug <carandraug@octave.org>
parents:
16922
diff
changeset
|
367 ## adding a new format |
1eb5e5f0ee13
imformats.m: add tests and fix bug when adding new formats.
Carnë Draug <carandraug@octave.org>
parents:
16922
diff
changeset
|
368 %!testif HAVE_MAGICK |
19278
6ca096827123
Use tempname() rather than tmpnam() in core Octave.
Rik <rik@octave.org>
parents:
18298
diff
changeset
|
369 %! fname = [tempname() ".new_fmt"]; |
18298
15db54c4a572
Fix input parsing for imageIO functions and make imread accept URL (bug #41234)
Carnë Draug <carandraug@octave.org>
parents:
18297
diff
changeset
|
370 %! def_fmt = imformats (); |
15db54c4a572
Fix input parsing for imageIO functions and make imread accept URL (bug #41234)
Carnë Draug <carandraug@octave.org>
parents:
18297
diff
changeset
|
371 %! fid = fopen (fname, "w"); |
15db54c4a572
Fix input parsing for imageIO functions and make imread accept URL (bug #41234)
Carnë Draug <carandraug@octave.org>
parents:
18297
diff
changeset
|
372 %! unwind_protect |
15db54c4a572
Fix input parsing for imageIO functions and make imread accept URL (bug #41234)
Carnë Draug <carandraug@octave.org>
parents:
18297
diff
changeset
|
373 %! fmt = imformats ("jpg"); # take jpg as template |
15db54c4a572
Fix input parsing for imageIO functions and make imread accept URL (bug #41234)
Carnë Draug <carandraug@octave.org>
parents:
18297
diff
changeset
|
374 %! fmt.ext = "new_fmt"; |
28563
5a07c798eb08
avoid function call input or output argument number mismatch
John W. Eaton <jwe@octave.org>
parents:
27978
diff
changeset
|
375 %! fmt.read = @(~) true (); |
18298
15db54c4a572
Fix input parsing for imageIO functions and make imread accept URL (bug #41234)
Carnë Draug <carandraug@octave.org>
parents:
18297
diff
changeset
|
376 %! imformats ("add", fmt); |
15db54c4a572
Fix input parsing for imageIO functions and make imread accept URL (bug #41234)
Carnë Draug <carandraug@octave.org>
parents:
18297
diff
changeset
|
377 %! assert (imread (fname), true); |
15db54c4a572
Fix input parsing for imageIO functions and make imread accept URL (bug #41234)
Carnë Draug <carandraug@octave.org>
parents:
18297
diff
changeset
|
378 %! unwind_protect_cleanup |
15db54c4a572
Fix input parsing for imageIO functions and make imread accept URL (bug #41234)
Carnë Draug <carandraug@octave.org>
parents:
18297
diff
changeset
|
379 %! fclose (fid); |
15db54c4a572
Fix input parsing for imageIO functions and make imread accept URL (bug #41234)
Carnë Draug <carandraug@octave.org>
parents:
18297
diff
changeset
|
380 %! unlink (fname); |
15db54c4a572
Fix input parsing for imageIO functions and make imread accept URL (bug #41234)
Carnë Draug <carandraug@octave.org>
parents:
18297
diff
changeset
|
381 %! imformats (def_fmt); |
15db54c4a572
Fix input parsing for imageIO functions and make imread accept URL (bug #41234)
Carnë Draug <carandraug@octave.org>
parents:
18297
diff
changeset
|
382 %! end_unwind_protect |
16949
1eb5e5f0ee13
imformats.m: add tests and fix bug when adding new formats.
Carnë Draug <carandraug@octave.org>
parents:
16922
diff
changeset
|
383 |
18298
15db54c4a572
Fix input parsing for imageIO functions and make imread accept URL (bug #41234)
Carnë Draug <carandraug@octave.org>
parents:
18297
diff
changeset
|
384 ## adding multiple formats at the same time |
16949
1eb5e5f0ee13
imformats.m: add tests and fix bug when adding new formats.
Carnë Draug <carandraug@octave.org>
parents:
16922
diff
changeset
|
385 %!testif HAVE_MAGICK |
19278
6ca096827123
Use tempname() rather than tmpnam() in core Octave.
Rik <rik@octave.org>
parents:
18298
diff
changeset
|
386 %! fname1 = [tempname() ".new_fmt1"]; |
18298
15db54c4a572
Fix input parsing for imageIO functions and make imread accept URL (bug #41234)
Carnë Draug <carandraug@octave.org>
parents:
18297
diff
changeset
|
387 %! fid1 = fopen (fname1, "w"); |
19278
6ca096827123
Use tempname() rather than tmpnam() in core Octave.
Rik <rik@octave.org>
parents:
18298
diff
changeset
|
388 %! fname2 = [tempname() ".new_fmt2"]; |
18298
15db54c4a572
Fix input parsing for imageIO functions and make imread accept URL (bug #41234)
Carnë Draug <carandraug@octave.org>
parents:
18297
diff
changeset
|
389 %! fid2 = fopen (fname2, "w"); |
15db54c4a572
Fix input parsing for imageIO functions and make imread accept URL (bug #41234)
Carnë Draug <carandraug@octave.org>
parents:
18297
diff
changeset
|
390 %! def_fmt = imformats (); |
15db54c4a572
Fix input parsing for imageIO functions and make imread accept URL (bug #41234)
Carnë Draug <carandraug@octave.org>
parents:
18297
diff
changeset
|
391 %! unwind_protect |
15db54c4a572
Fix input parsing for imageIO functions and make imread accept URL (bug #41234)
Carnë Draug <carandraug@octave.org>
parents:
18297
diff
changeset
|
392 %! fmt = imformats ("jpg"); # take jpg as template |
15db54c4a572
Fix input parsing for imageIO functions and make imread accept URL (bug #41234)
Carnë Draug <carandraug@octave.org>
parents:
18297
diff
changeset
|
393 %! fmt.ext = "new_fmt1"; |
28912
0de38a6ef693
maint: Use Octave convention of space after function name in scripts dir.
Rik <rik@octave.org>
parents:
28905
diff
changeset
|
394 %! fmt.read = @(~) true (); |
18298
15db54c4a572
Fix input parsing for imageIO functions and make imread accept URL (bug #41234)
Carnë Draug <carandraug@octave.org>
parents:
18297
diff
changeset
|
395 %! fmt(2) = fmt(1); |
15db54c4a572
Fix input parsing for imageIO functions and make imread accept URL (bug #41234)
Carnë Draug <carandraug@octave.org>
parents:
18297
diff
changeset
|
396 %! fmt(2).ext = "new_fmt2"; |
15db54c4a572
Fix input parsing for imageIO functions and make imread accept URL (bug #41234)
Carnë Draug <carandraug@octave.org>
parents:
18297
diff
changeset
|
397 %! imformats ("add", fmt); |
15db54c4a572
Fix input parsing for imageIO functions and make imread accept URL (bug #41234)
Carnë Draug <carandraug@octave.org>
parents:
18297
diff
changeset
|
398 %! assert (imread (fname1), true); |
15db54c4a572
Fix input parsing for imageIO functions and make imread accept URL (bug #41234)
Carnë Draug <carandraug@octave.org>
parents:
18297
diff
changeset
|
399 %! assert (imread (fname2), true); |
15db54c4a572
Fix input parsing for imageIO functions and make imread accept URL (bug #41234)
Carnë Draug <carandraug@octave.org>
parents:
18297
diff
changeset
|
400 %! unwind_protect_cleanup |
15db54c4a572
Fix input parsing for imageIO functions and make imread accept URL (bug #41234)
Carnë Draug <carandraug@octave.org>
parents:
18297
diff
changeset
|
401 %! fclose (fid1); |
15db54c4a572
Fix input parsing for imageIO functions and make imread accept URL (bug #41234)
Carnë Draug <carandraug@octave.org>
parents:
18297
diff
changeset
|
402 %! fclose (fid2); |
15db54c4a572
Fix input parsing for imageIO functions and make imread accept URL (bug #41234)
Carnë Draug <carandraug@octave.org>
parents:
18297
diff
changeset
|
403 %! unlink (fname1); |
15db54c4a572
Fix input parsing for imageIO functions and make imread accept URL (bug #41234)
Carnë Draug <carandraug@octave.org>
parents:
18297
diff
changeset
|
404 %! unlink (fname2); |
15db54c4a572
Fix input parsing for imageIO functions and make imread accept URL (bug #41234)
Carnë Draug <carandraug@octave.org>
parents:
18297
diff
changeset
|
405 %! imformats (def_fmt); |
15db54c4a572
Fix input parsing for imageIO functions and make imread accept URL (bug #41234)
Carnë Draug <carandraug@octave.org>
parents:
18297
diff
changeset
|
406 %! end_unwind_protect |
16949
1eb5e5f0ee13
imformats.m: add tests and fix bug when adding new formats.
Carnë Draug <carandraug@octave.org>
parents:
16922
diff
changeset
|
407 |
18298
15db54c4a572
Fix input parsing for imageIO functions and make imread accept URL (bug #41234)
Carnë Draug <carandraug@octave.org>
parents:
18297
diff
changeset
|
408 ## changing format and resetting back to default |
16949
1eb5e5f0ee13
imformats.m: add tests and fix bug when adding new formats.
Carnë Draug <carandraug@octave.org>
parents:
16922
diff
changeset
|
409 %!testif HAVE_MAGICK |
1eb5e5f0ee13
imformats.m: add tests and fix bug when adding new formats.
Carnë Draug <carandraug@octave.org>
parents:
16922
diff
changeset
|
410 %! ori_fmt = mod_fmt = imformats ("jpg"); |
1eb5e5f0ee13
imformats.m: add tests and fix bug when adding new formats.
Carnë Draug <carandraug@octave.org>
parents:
16922
diff
changeset
|
411 %! mod_fmt.description = "Another description"; |
1eb5e5f0ee13
imformats.m: add tests and fix bug when adding new formats.
Carnë Draug <carandraug@octave.org>
parents:
16922
diff
changeset
|
412 %! imformats ("update", "jpg", mod_fmt); |
1eb5e5f0ee13
imformats.m: add tests and fix bug when adding new formats.
Carnë Draug <carandraug@octave.org>
parents:
16922
diff
changeset
|
413 %! new_fmt = imformats ("jpg"); |
1eb5e5f0ee13
imformats.m: add tests and fix bug when adding new formats.
Carnë Draug <carandraug@octave.org>
parents:
16922
diff
changeset
|
414 %! assert (new_fmt.description, mod_fmt.description); |
1eb5e5f0ee13
imformats.m: add tests and fix bug when adding new formats.
Carnë Draug <carandraug@octave.org>
parents:
16922
diff
changeset
|
415 %! imformats ("factory"); |
1eb5e5f0ee13
imformats.m: add tests and fix bug when adding new formats.
Carnë Draug <carandraug@octave.org>
parents:
16922
diff
changeset
|
416 %! new_fmt = imformats ("jpg"); |
1eb5e5f0ee13
imformats.m: add tests and fix bug when adding new formats.
Carnë Draug <carandraug@octave.org>
parents:
16922
diff
changeset
|
417 %! assert (new_fmt.description, ori_fmt.description); |
1eb5e5f0ee13
imformats.m: add tests and fix bug when adding new formats.
Carnë Draug <carandraug@octave.org>
parents:
16922
diff
changeset
|
418 |
18297
1589b2fc74ae
imformats.m: add test for updating a format with invalid struct.
Carnë Draug <carandraug@octave.org>
parents:
18292
diff
changeset
|
419 ## updating to an invalid format should cause an error |
1589b2fc74ae
imformats.m: add test for updating a format with invalid struct.
Carnë Draug <carandraug@octave.org>
parents:
18292
diff
changeset
|
420 %!testif HAVE_MAGICK |
1589b2fc74ae
imformats.m: add test for updating a format with invalid struct.
Carnë Draug <carandraug@octave.org>
parents:
18292
diff
changeset
|
421 %! fmt = imformats ("jpg"); |
1589b2fc74ae
imformats.m: add test for updating a format with invalid struct.
Carnë Draug <carandraug@octave.org>
parents:
18292
diff
changeset
|
422 %! fmt = rmfield (fmt, "read"); |
1589b2fc74ae
imformats.m: add test for updating a format with invalid struct.
Carnë Draug <carandraug@octave.org>
parents:
18292
diff
changeset
|
423 %! error_thrown = false; |
1589b2fc74ae
imformats.m: add test for updating a format with invalid struct.
Carnë Draug <carandraug@octave.org>
parents:
18292
diff
changeset
|
424 %! try |
1589b2fc74ae
imformats.m: add test for updating a format with invalid struct.
Carnë Draug <carandraug@octave.org>
parents:
18292
diff
changeset
|
425 %! imformats ("update", "jpg", fmt); |
1589b2fc74ae
imformats.m: add test for updating a format with invalid struct.
Carnë Draug <carandraug@octave.org>
parents:
18292
diff
changeset
|
426 %! catch |
1589b2fc74ae
imformats.m: add test for updating a format with invalid struct.
Carnë Draug <carandraug@octave.org>
parents:
18292
diff
changeset
|
427 %! error_thrown = true; |
1589b2fc74ae
imformats.m: add test for updating a format with invalid struct.
Carnë Draug <carandraug@octave.org>
parents:
18292
diff
changeset
|
428 %! end_try_catch |
1589b2fc74ae
imformats.m: add test for updating a format with invalid struct.
Carnë Draug <carandraug@octave.org>
parents:
18292
diff
changeset
|
429 %! assert (error_thrown, true); |