| function this = gifti(varargin) |
| |
| |
| |
| |
| |
| |
| |
|
|
| |
| |
|
|
| switch nargin |
| |
| case 0 |
| this = giftistruct; |
| this = class(this,'gifti'); |
| |
| case 1 |
| if isa(varargin{1},'gifti') |
| this = varargin{1}; |
| |
| elseif isstruct(varargin{1}) |
| f = {'faces', 'face', 'tri' 'vertices', 'vert', 'pnt', 'cdata', 'indices'}; |
| ff = {'faces', 'faces', 'faces', 'vertices', 'vertices', 'vertices', 'cdata', 'indices'}; |
| [c, ia] = intersect(f,fieldnames(varargin{1})); |
| if ~isempty(c) |
| this = gifti; |
| for i=1:length(c) |
| this = subsasgn(this,... |
| struct('type','.','subs',ff{ia(i)}),... |
| varargin{1}.(c{i})); |
| end |
| elseif isempty(setxor(fieldnames(varargin{1}),... |
| {'metadata','label','data'})) |
| this = class(varargin{1},'gifti'); |
| else |
| error('[GIFTI] Invalid structure.'); |
| end |
| |
| elseif ishandle(varargin{1}) |
| this = struct('vertices',get(varargin{1},'Vertices'), ... |
| 'faces', get(varargin{1},'Faces')); |
| if ~isempty(get(varargin{1},'FaceVertexCData')); |
| this.cdata = get(varargin{1},'FaceVertexCData'); |
| end |
| this = gifti(this); |
| |
| elseif isnumeric(varargin{1}) |
| this = gifti; |
| this = subsasgn(this,... |
| struct('type','.','subs','cdata'),... |
| varargin{1}); |
| |
| elseif ischar(varargin{1}) |
| if size(varargin{1},1)>1 |
| this = gifti(cellstr(varargin{1})); |
| return; |
| end |
| [p,n,e] = fileparts(varargin{1}); |
| if strcmpi(e,'.mat') |
| try |
| this = gifti(load(varargin{1})); |
| catch |
| error('[GIFTI] Loading of file %s failed.', varargin{1}); |
| end |
| elseif strcmpi(e,'.asc') || strcmpi(e,'.srf') |
| this = read_freesurfer_file(varargin{1}); |
| this = gifti(this); |
| else |
| this = read_gifti_file_standalone(varargin{1},giftistruct); |
| this = class(this,'gifti'); |
| end |
| |
| elseif iscellstr(varargin{1}) |
| fnames = varargin{1}; |
| this(numel(fnames)) = giftistruct; |
| this = class(this,'gifti'); |
| for i=1:numel(fnames) |
| this(i) = gifti(fnames{i}); |
| end |
| |
| else |
| error('[GIFTI] Invalid object construction.'); |
| end |
| |
| otherwise |
| error('[GIFTI] Invalid object construction.'); |
| end |
|
|
| |
| function s = giftistruct |
| s = struct(... |
| 'metadata', ... |
| struct(... |
| 'name', {}, ... |
| 'value', {} ... |
| ), ... |
| 'label', ... |
| struct(... |
| 'name', {}, ... |
| 'index', {} ... |
| ), ... |
| 'data', ... |
| struct(... |
| 'attributes', {}, ... |
| 'metadata', struct('name',{}, 'value',{}), ... |
| 'space', {}, ... |
| 'data', {} ... |
| ) ... |
| ); |
|
|