diff --git a/@Viewer/Viewer.m b/@Viewer/Viewer.m index 485b4888de5a0ce9b3351288b9f90b8950925215..7f2b41d651e58d91a2a96e2f055f8896796fd970 100644 --- a/@Viewer/Viewer.m +++ b/@Viewer/Viewer.m @@ -21,7 +21,6 @@ classdef Viewer < handle end properties(Hidden) - validDims = {'xy','uv','ux','vy','yx','vu','xu','yv'}; validRanges = {'class','slice','data'}; climClass climData @@ -35,7 +34,7 @@ classdef Viewer < handle p = inputParser; p.StructExpand = true; p.KeepUnmatched = true; p.addRequired('data'); - p.addParameter('dims' , obj.dims ,@(dims) any(strcmpi(dims,obj.validDims))); + p.addParameter('dims' , obj.dims ,@ischar); p.addParameter('name' , obj.name ,@ischar); p.addParameter('range', obj.range ,@(range) any(strcmpi(range,obj.validRanges))); p.addParameter('cv' , obj.cv ,@isnumeric); @@ -109,24 +108,13 @@ classdef Viewer < handle end function updatePerm(obj) - switch lower(obj.dims) - case 'xu' - obj.perm = [1,4,3,2,5]; - case 'ux' - obj.perm = [4,1,3,2,5]; - case 'yv' - obj.perm = [2,5,3,1,4]; - case 'vy' - obj.perm = [5,2,3,1,4]; - case 'xy' - obj.perm = [1,2,3,4,5]; - case 'yx' - obj.perm = [2,1,3,4,5]; - case 'uv' - obj.perm = [4,5,3,1,2]; - case 'vu' - obj.perm = [5,4,3,1,2]; - end + dims_ = [obj.dims,setdiff('uxvy',obj.dims,'stable')]; + [~,perm_] = sort(dims_,'ascend'); + perm_ = perm_([3,4,1,2]); + perm_(perm_) = 1:4; + perm_(perm_>2) = perm_(perm_>2)+1; + perm_ = [perm_(1:2),3,perm_(3:4)]; + obj.perm = perm_; end function updateName(obj) @@ -185,12 +173,9 @@ classdef Viewer < handle end function updateTitle(obj) - coordVec = false(1,5); - coordVec(obj.perm(4:5)) = true; - coordStr = {'x','y','c','u','v'}; - coordStr(coordVec) = arrayfun(@num2str,obj.cv,'UniformOutput',false); - coordStr(~coordVec) = deal({':'}); + coordStr = {':',':',':',':',':'}; + coordStr(obj.perm(4:5)) = arrayfun(@num2str,obj.cv,'UniformOutput',false); coordStr = ['(' strjoin(coordStr,','),')']; obj.title = [obj.name,' ',coordStr];