function spm_eeg_inv_checkdatareg(varargin)
% Display of the coregistred meshes and sensor locations in MRI space for
% quality check by eye.
% Fiducials which were used for rigid registration are also displayed
%
% FORMAT spm_eeg_inv_checkdatareg(D, val, ind)
%__________________________________________________________________________
% Copyright (C) 2005-2014 Wellcome Trust Centre for Neuroimaging

% Jeremie Mattout
% $Id: spm_eeg_inv_checkdatareg.m 6182 2014-09-18 12:03:18Z guillaume $


% Inputs
%--------------------------------------------------------------------------
[D,val] = spm_eeg_inv_check(varargin{:});

datareg = D.inv{val}.datareg;

if nargin < 3
    str = sprintf('%s|', datareg(:).modality);
    str = str(1:(end-1));    
    ind = spm_input('What to display?','+1', 'b',  str, 1:numel(D.inv{val}.datareg), 1);
else
    ind = varargin{3};
end

modality = datareg(ind).modality;
meegfid  = datareg(ind).fid_eeg;
mrifid   = datareg(ind).fid_mri;
mesh     = spm_eeg_inv_transform_mesh(datareg(ind).fromMNI*D.inv{val}.mesh.Affine, D.inv{val}.mesh);
sensors  = datareg(ind).sensors;

% SPM Graphics figure
%--------------------------------------------------------------------------
Fgraph   = spm_figure('GetWin','Graphics'); figure(Fgraph); clf
subplot(2,1,1)

%-Display anatomy
%==========================================================================
Mcortex = mesh.tess_ctx;
Miskull = mesh.tess_iskull;
Mscalp  = mesh.tess_scalp;

% Cortical Mesh
%--------------------------------------------------------------------------
face    = Mcortex.face;
vert    = Mcortex.vert;
h_ctx   = patch('vertices',vert,'faces',face,'EdgeColor','b','FaceColor','b');
hold on

% Inner-skull Mesh
%--------------------------------------------------------------------------
face    = Miskull.face;
vert    = Miskull.vert;
h_skl   = patch('vertices',vert,'faces',face,'EdgeColor','r','FaceColor','none');

% Scalp Mesh
%--------------------------------------------------------------------------
face    = Mscalp.face;
vert    = Mscalp.vert;
h_slp   = patch('vertices',vert,'faces',face,'EdgeColor',[1 .7 .55],'FaceColor','none');

%-Display setup
%==========================================================================
try   
    Lhsp    = meegfid.pnt;
    Lfidmri = mrifid.fid.pnt;
    Lfid    = meegfid.fid.pnt(1:size(Lfidmri, 1), :);
catch
    spm('alert!','Please coregister these data',mfilename);
    return
end

% Headshape locations
%--------------------------------------------------------------------------
if ~isempty(Lhsp)
    h_hsp   = plot3(Lhsp(:,1),Lhsp(:,2),Lhsp(:,3),'dm');
    set(h_hsp,'MarkerFaceColor','r','MarkerSize',4,'MarkerEdgeColor','r');
end

% Sensors (coreg.)
%--------------------------------------------------------------------------
h_sens  = ft_plot_sens(sensors, 'chantype', lower(D.chantype(D.indchantype(modality))));
if isempty(h_sens)
    h_sens  = ft_plot_sens(sensors, 'coil', 'yes');
end
set(h_sens, 'Marker', 'o', 'MarkerFaceColor','g','MarkerSize', 12,'MarkerEdgeColor','k');
axis normal;
% 

% EEG fiducials or MEG coils (coreg.)
%--------------------------------------------------------------------------
h_fid   = plot3(Lfid(:,1),Lfid(:,2),Lfid(:,3),'oc');
set(h_fid,'MarkerFaceColor','c','MarkerSize',12,'MarkerEdgeColor','k');

% MRI fiducials
%--------------------------------------------------------------------------
h_fidmr = plot3(Lfidmri(:,1),Lfidmri(:,2),Lfidmri(:,3),'dm');
set(h_fidmr,'MarkerFaceColor','m','MarkerSize',12,'MarkerEdgeColor','k');

% Camera view
%--------------------------------------------------------------------------
axis image off
view(-135,45)
% cameratoolbar('setmode','orbit')
hold off
zoom(5/3)

%-Display channels
%==========================================================================
subplot(2,1,2)

try
    [xy, label] = spm_eeg_project3D(sensors, modality);
    FontSize = 8;
catch
    xy = [0.25; 0.5];
    label = {'2D layout not available'};
    FontSize = 20;
end

% Channel names
%--------------------------------------------------------------------------
text(xy(1, :), xy(2, :), label,...
     'FontSize',FontSize,...
     'Color','r',...
     'FontWeight','bold')
  
axis equal off
cameratoolbar('setmode','orbit')
