diff scripts/plot/__plt_get_axis_arg__.m @ 7215:dd88d61d443f

[project @ 2007-11-29 16:44:45 by jwe]
author jwe
date Thu, 29 Nov 2007 16:46:40 +0000
parents a1dbe9d80eee
children 5389a52df87b
line wrap: on
line diff
--- a/scripts/plot/__plt_get_axis_arg__.m	Thu Nov 29 03:40:04 2007 +0000
+++ b/scripts/plot/__plt_get_axis_arg__.m	Thu Nov 29 16:46:40 2007 +0000
@@ -20,13 +20,21 @@
 
 ## Author: jwe
 
-function [h, varargin] = __plt_get_axis_arg__ (caller, varargin)
+function [h, varargin, narg] = __plt_get_axis_arg__ (caller, varargin)
+
+  if (islogical (caller))
+    nogca = caller;
+    caller = varargin{1};
+    varargin(1) = [];
+  else
+    nogca = false;
+  endif
 
   if (nargin > 1 && length (varargin) > 0 && ishandle (varargin{1}))
     tmp = varargin{1};
     obj = get (tmp);
-    if (strcmp (obj.type, "axes"))
-      h = tmp;
+    if (strcmp (obj.type, "axes") || strcmp (obj.type, "hggroup"))
+      h = ancestor (tmp, "axes");
       varargin(1) = [];
       if (isempty (varargin))
 	varargin = {};
@@ -35,10 +43,19 @@
       error ("%s: expecting first argument to be axes handle", caller);
     endif
   else
-    h = gca ();
+    f = get (0, "currentfigure");
+    if (! isempty (f))
+      h = get (f, 'currentaxes');
+    elseif (nogca)
+      h = NaN;
+    else
+      h = gca ();
+    endif
     if (nargin < 2)
       varargin = {};
     endif
   endif
 
+  narg = length (varargin);
+
 endfunction