Mercurial > octave
comparison scripts/image/imagesc.m @ 17692:38cf56b77274
Overhaul image, imagesc to use newplot and support low-level invocation form.
* scripts/image/image.m: New variable do_new indicates high-level calling form.
For high-level invocation, call newplot before __img__. Correct linearity check
if vectors are reversed (high-to-low values). Only apply image properties to axes
if doing a high-level invocation.
* scripts/image/imagesc.m: New variable do_new indicates high-level calling form.
Delete subfunction __imagesc__ and incorporate minimal amount of code into imagesc.
Only apply climits for high-level invocation.
author | Rik <rik@octave.org> |
---|---|
date | Fri, 18 Oct 2013 16:27:44 -0700 |
parents | dd8db3f1c1da |
children | d63878346099 |
comparison
equal
deleted
inserted
replaced
17691:8a54a481ecb5 | 17692:38cf56b77274 |
---|---|
50 ## Created: July 1994 | 50 ## Created: July 1994 |
51 ## Adapted-By: jwe | 51 ## Adapted-By: jwe |
52 | 52 |
53 function h = imagesc (varargin) | 53 function h = imagesc (varargin) |
54 | 54 |
55 if (nargin < 1 || nargin > 4) | 55 [hax, varargin, nargin] = __plt_get_axis_arg__ ("imagesc", varargin{:}); |
56 | |
57 chararg = find (cellfun ("isclass", varargin, "char"), 1, "first"); | |
58 | |
59 do_new = true; | |
60 if (nargin == 0) | |
56 print_usage (); | 61 print_usage (); |
57 elseif (isscalar (varargin{1}) && ishandle (varargin{1})) | 62 elseif (chararg == 1) |
58 hax = varargin{1}; | 63 ## Low-Level syntax |
59 if (! isaxes (hax)) | 64 do_new = false; |
60 error ("imagesc: HAX argument must be an axes object"); | 65 img = x = y = climits = []; |
66 elseif (nargin == 1 || chararg == 2) | |
67 img = varargin{1}; | |
68 x = y = climits = []; | |
69 elseif (nargin == 2 || chararg == 3) | |
70 img = varargin{1}; | |
71 climits = varargin{2}; | |
72 x = y = []; | |
73 elseif (nargin == 3 || chararg == 4) | |
74 x = varargin{1}; | |
75 y = varargin{2}; | |
76 img = varargin{3}; | |
77 climits = []; | |
78 elseif (nargin == 4 || chararg == 5) | |
79 x = varargin{1}; | |
80 y = varargin{2}; | |
81 img = varargin{3}; | |
82 climits = varargin{4}; | |
83 endif | |
84 | |
85 oldfig = []; | |
86 if (! isempty (hax)) | |
87 oldfig = get (0, "currentfigure"); | |
88 endif | |
89 unwind_protect | |
90 if (do_new) | |
91 hax = newplot (hax); | |
92 elseif (isempty (hax)) | |
93 hax = gca (); | |
61 endif | 94 endif |
62 oldh = gca (); | 95 |
63 unwind_protect | 96 if (do_new) |
64 axes (h); | 97 htmp = image (x, y, img, "cdatamapping", "scaled", varargin{chararg:end}); |
65 htmp = __imagesc__ (hax, varargin{2:end}); | 98 else |
66 unwind_protect_cleanup | 99 htmp = image ("cdatamapping", "scaled", varargin{:}); |
67 axes (oldh); | 100 endif |
68 end_unwind_protect | 101 |
69 else | 102 if (do_new && ! ishold (hax)) |
70 htmp = __imagesc__ (gca (), varargin{:}); | 103 ## use given climits or guess them from the matrix |
71 endif | 104 if (numel (climits) == 2 && climits(1) <= climits(2)) |
105 set (hax, "clim", climits); | |
106 elseif (! isempty (climits)) | |
107 error ("imagesc: CLIMITS must be in form [lo, hi]"); | |
108 endif | |
109 endif | |
110 unwind_protect_cleanup | |
111 if (! isempty (oldfig)) | |
112 set (0, "currentfigure", oldfig); | |
113 endif | |
114 end_unwind_protect | |
72 | 115 |
73 if (nargout > 0) | 116 if (nargout > 0) |
74 h = htmp; | 117 h = htmp; |
75 endif | |
76 | |
77 endfunction | |
78 | |
79 function h = __imagesc__ (ax, x, y, img, climits) | |
80 | |
81 if (nargin == 2) | |
82 img = x; | |
83 x = y = climits = []; | |
84 elseif (nargin == 3) | |
85 img = x; | |
86 climits = y; | |
87 x = y = []; | |
88 elseif (nargin == 4 && ! isscalar (x) && ! isscalar (y) && ! isscalar (img)) | |
89 climits = []; | |
90 endif | |
91 | |
92 h = image (ax, x, y, img); | |
93 set (h, "cdatamapping", "scaled"); | |
94 | |
95 ## use given climits or guess them from the matrix | |
96 if (numel (climits) == 2 && climits(1) <= climits(2)) | |
97 set (ax, "clim", climits); | |
98 elseif (! isempty (climits)) | |
99 error ("imagesc: CLIMITS must be in form [lo, hi]"); | |
100 endif | 118 endif |
101 | 119 |
102 endfunction | 120 endfunction |
103 | 121 |
104 | 122 |