]> Creatis software - CreaPhase.git/blob - octave_packages/geometry-1.5.0/io/@svg/getpath.m
Add a useful package (from Source forge) for octave
[CreaPhase.git] / octave_packages / geometry-1.5.0 / io / @svg / getpath.m
1 ## Copyright (C) 2011 CarnĂ« Draug <carandraug+dev@gmail.com>
2 ## Copyright (c) 2011 Juan Pablo Carbajal <carbajal@ifi.uzh.ch>
3 ##
4 ## This program is free software; you can redistribute it and/or modify
5 ## it under the terms of the GNU General Public License as published by
6 ## the Free Software Foundation; either version 3 of the License, or
7 ## (at your option) any later version.
8 ##
9 ## This program is distributed in the hope that it will be useful,
10 ## but WITHOUT ANY WARRANTY; without even the implied warranty of
11 ## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 ## GNU General Public License for more details.
13 ##
14 ## You should have received a copy of the GNU General Public License
15 ## along with this program; if not, see <http://www.gnu.org/licenses/>.
16
17 ## -*- texinfo -*-
18 ## @deftypefn {Function File} {@var{paths} = } getpath (@var{ids})
19 ## Returns paths in @var{ids}.
20 ##
21 ## @end deftypefn
22
23 function paths = getpath(obj, varargin)
24
25   if !isempty(varargin)
26   
27     ids = varargin;
28     if iscell (ids) && numel(ids) == 1 && iscell(ids{1}) % dealing with ids given as cell
29       ids = ids{1};
30
31       if !all ( cellfun (@ischar, ids) )
32        print_usage
33       end
34
35     elseif !all ( cellfun (@ischar, ids) )
36      print_usage
37     end
38     
39   else
40     paths = obj.Path;
41     return
42   end
43
44   tf = ismember (ids, fieldnames (obj.Path));
45
46   cellfun (@(s) printf("'%s' is not a valid path id.\n", s) , {ids{!tf}});
47
48   paths = [];
49   if any (tf)
50     stuff = {ids{tf}};
51     
52     for i = 1: numel(stuff)
53       paths{i} = obj.Path.(ids{i}).data;
54     endfor
55     
56     
57     % Variation
58 %    paths = cellfun(@(s) obj.Path.(s).data, stuff,'UniformOutput',false);
59     
60     % Another variation
61 %    paths = cellfun(@(s) getfield(obj,'Path').(s).data, stuff,'UniformOutput',false);
62     
63     % Yet another
64 %    paths = cellfun(@(s) getfield(obj.Path,s).data, stuff,'UniformOutput',false);    
65
66     % Yet yet another
67 %    dummy = @(s) obj.Path.(s).data;
68 %    paths = cellfun(dummy, stuff,'UniformOutput',false);    
69     
70     if numel(paths) == 1
71       paths = paths{1};
72     end
73   end
74
75 endfunction
76