Code covered by the BSD License  

Highlights from
Tools for NIfTI and ANALYZE image

image thumbnail

Tools for NIfTI and ANALYZE image

by

Jimmy Shen (view profile)

 

23 Oct 2005 (Updated )

Load, save, make, reslice, view (and edit) both NIfTI and ANALYZE data on any platform

rri_xhair(varargin)
%   rri_xhair: create a pair of full_cross_hair at point [x y] in
%              axes h_ax, and return xhair struct
%
%   Usage: xhair = rri_xhair([x y], xhair, h_ax);
%
%   If omit xhair, rri_xhair will create a pair of xhair; otherwise,
%   rri_xhair will update the xhair. If omit h_ax, current axes will
%   be used.
%

%   24-nov-2003 jimmy (jimmy@rotman-baycrest.on.ca)
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

function xhair = rri_xhair(varargin)

   if nargin == 0
      error('Please enter a point position as first argument');
      return;
   end

   if nargin > 0
      p = varargin{1};

      if ~isnumeric(p) | length(p) ~= 2
         error('Invalid point position');
         return;
      else
         xhair = [];
      end
   end

   if nargin > 1
      xhair = varargin{2};

      if ~isempty(xhair)
         if ~isstruct(xhair)
            error('Invalid xhair struct');
            return;
         elseif ~isfield(xhair,'lx') | ~isfield(xhair,'ly')
            error('Invalid xhair struct');
            return;
         elseif ~ishandle(xhair.lx) | ~ishandle(xhair.ly)
            error('Invalid xhair struct');
            return;
         end

         lx = xhair.lx;
         ly = xhair.ly;
      else
         lx = [];
         ly = [];
      end
   end

   if nargin > 2
      h_ax = varargin{3};

      if ~ishandle(h_ax)
         error('Invalid axes handle');
         return;
      elseif ~strcmp(lower(get(h_ax,'type')), 'axes')
         error('Invalid axes handle');
         return;
      end
   else
      h_ax = gca;
   end

   x_range = get(h_ax,'xlim');
   y_range = get(h_ax,'ylim');

   if ~isempty(xhair)
      set(lx, 'ydata', [p(2) p(2)]);
      set(ly, 'xdata', [p(1) p(1)]);
      set(h_ax, 'selected', 'on');
      set(h_ax, 'selected', 'off');
   else
      figure(get(h_ax,'parent'));
      axes(h_ax);

      xhair.lx = line('xdata', x_range, 'ydata', [p(2) p(2)], ...
	'zdata', [11 11], 'color', [1 0 0], 'hittest', 'off');
      xhair.ly = line('xdata', [p(1) p(1)], 'ydata', y_range, ...
	'zdata', [11 11], 'color', [1 0 0], 'hittest', 'off');
   end

   set(h_ax,'xlim',x_range);
   set(h_ax,'ylim',y_range);

   return;

Contact us