mirror of
https://github.com/c-sooyoung/fold_slice.git
synced 2026-09-17 23:59:11 +09:00
1353 lines
46 KiB
Matlab
1353 lines
46 KiB
Matlab
function varargout = create_mask_GUI_export(varargin)
|
|
% CREATE_MASK_GUI_EXPORT MATLAB code for create_mask_GUI_export.fig
|
|
% CREATE_MASK_GUI_EXPORT, by itself, creates a new CREATE_MASK_GUI_EXPORT or raises the existing
|
|
% singleton*.
|
|
%
|
|
% H = CREATE_MASK_GUI_EXPORT returns the handle to a new CREATE_MASK_GUI_EXPORT or the handle to
|
|
% the existing singleton*.
|
|
%
|
|
% CREATE_MASK_GUI_EXPORT('CALLBACK',hObject,eventData,handles,...) calls the local
|
|
% function named CALLBACK in CREATE_MASK_GUI_EXPORT.M with the given input arguments.
|
|
%
|
|
% CREATE_MASK_GUI_EXPORT('Property','Value',...) creates a new CREATE_MASK_GUI_EXPORT or raises the
|
|
% existing singleton*. Starting from the left, property value pairs are
|
|
% applied to the GUI before create_mask_GUI_export_OpeningFcn gets called. An
|
|
% unrecognized property name or invalid value makes property application
|
|
% stop. All inputs are passed to create_mask_GUI_export_OpeningFcn via varargin.
|
|
%
|
|
% *See GUI Options on GUIDE's Tools menu. Choose "GUI allows only one
|
|
% instance to run (singleton)".
|
|
%
|
|
% See also: GUIDE, GUIDATA, GUIHANDLES
|
|
|
|
% Edit the above text to modify the response to help create_mask_GUI_export
|
|
|
|
% Last Modified by GUIDE v2.5 29-Oct-2018 10:23:50
|
|
|
|
% Begin initialization code - DO NOT EDIT
|
|
gui_Singleton = 1;
|
|
gui_State = struct('gui_Name', mfilename, ...
|
|
'gui_Singleton', gui_Singleton, ...
|
|
'gui_OpeningFcn', @create_mask_GUI_export_OpeningFcn, ...
|
|
'gui_OutputFcn', @create_mask_GUI_export_OutputFcn, ...
|
|
'gui_LayoutFcn', @create_mask_GUI_export_LayoutFcn, ...
|
|
'gui_Callback', []);
|
|
if nargin && ischar(varargin{1})
|
|
gui_State.gui_Callback = str2func(varargin{1});
|
|
end
|
|
|
|
if nargout
|
|
[~, s] = gui_mainfcn(gui_State, varargin{:});
|
|
|
|
varargout{1} = s;
|
|
else
|
|
gui_mainfcn(gui_State, varargin{:});
|
|
end
|
|
% End initialization code - DO NOT EDIT
|
|
|
|
% --- Executes just before create_mask_GUI_export is made visible.
|
|
function create_mask_GUI_export_OpeningFcn(hObject, eventdata, handles, varargin)
|
|
% This function has no output args, see OutputFcn.
|
|
% hObject handle to figure
|
|
% eventdata reserved - to be defined in a future version of MATLAB
|
|
% handles structure with handles and user data (see GUIDATA)
|
|
% varargin command line arguments to create_mask_GUI_export (see VARARGIN)
|
|
|
|
s.done = false;
|
|
s.apply = false;
|
|
|
|
if(nargin > 3)
|
|
for index = 1:2:(nargin-3)
|
|
if nargin-3==index, break, end
|
|
s.(varargin{index}) = varargin{index+1};
|
|
end
|
|
end
|
|
|
|
|
|
|
|
|
|
% Choose default command line output for create_mask_GUI_export
|
|
handles.output = hObject;
|
|
handles.figure1.UserData = utils.update_param(handles.figure1.UserData, s);
|
|
|
|
% Update handles structure
|
|
guidata(hObject, handles);
|
|
|
|
|
|
% This sets up the initial plot - only do when we are invisible
|
|
% so window can get raised using create_mask_GUI_export.
|
|
if handles.figure1.UserData.mask3D
|
|
mask_questdlg = questdlg('Detected a 3D dataset. Do you want to create a 3D mask?', '3D mask', 'Yes', 'No', 'Yes');
|
|
switch mask_questdlg
|
|
case 'Yes'
|
|
handles.figure1.UserData.mask3D = true;
|
|
case 'No'
|
|
handles.figure1.UserData.mask3D = false;
|
|
end
|
|
end
|
|
|
|
if handles.figure1.UserData.mask3D
|
|
handles.figure1.UserData.mask_asize = [size(handles.figure1.UserData.mask,1) size(handles.figure1.UserData.mask,2) 1 handles.figure1.UserData.mask_dims];
|
|
handles.figure1.UserData.mask_temp = reshape(repmat(handles.figure1.UserData.mask, [1, 1, handles.figure1.UserData.mask_dims]), handles.figure1.UserData.mask_asize);
|
|
else
|
|
handles.figure1.UserData.mask_asize = size(handles.figure1.UserData.mask);
|
|
handles.figure1.UserData.mask_temp = handles.figure1.UserData.mask;
|
|
end
|
|
|
|
if strcmp(get(hObject,'Visible'),'off')
|
|
if ~handles.figure1.UserData.mask3D
|
|
imagesc(handles.figure1.UserData.mask); axis equal tight xy
|
|
else
|
|
plotting.imagesc3D(squeeze(prod(handles.figure1.UserData.mask_temp,3))); axis equal tight xy
|
|
set(handles.figure1.UserData.apply_to_stack_toggle, 'Visible', 'on')
|
|
handles.figure1.UserData.stack = true;
|
|
handles.figure1.UserData.listener_orig = handles.axes1.slider_handle.listener('Value','PostSet',@(src, evnt)fig_slice_update(handles));
|
|
end
|
|
end
|
|
|
|
% listener for imagesc3D - update slice
|
|
function fig_slice_update(s)
|
|
val = s.axes1.slider_handle.Value;
|
|
set(s.figure1.UserData.ax.slider_handle, 'Value', val);
|
|
set(s.figure1.UserData.ax.edit_handle, 'String', num2str(val));
|
|
s.figure1.UserData.ax.update_fig(s.figure1.UserData.ax);
|
|
|
|
|
|
% --- Outputs from this function are returned to the command line.
|
|
function varargout = create_mask_GUI_export_OutputFcn(hObject, eventdata, handles)
|
|
% varargout cell array for returning output args (see VARARGOUT);
|
|
% hObject handle to figure
|
|
% eventdata reserved - to be defined in a future version of MATLAB
|
|
% handles structure with handles and user data (see GUIDATA)
|
|
|
|
% Get default command line output from handles structure
|
|
varargout{1} = handles.output;
|
|
varargout{2} = handles;
|
|
|
|
|
|
% --- Executes on button press in pushbutton1.
|
|
% add more pixels
|
|
function pushbutton1_Callback(hObject, eventdata, handles)
|
|
% hObject handle to pushbutton1 (see GCBO)
|
|
% eventdata reserved - to be defined in a future version of MATLAB
|
|
% handles structure with handles and user data (see GUIDATA)
|
|
|
|
|
|
handles.figure1.UserData.mask_temp(:,:,end+1,:) = ones(handles.figure1.UserData.mask_asize);
|
|
|
|
|
|
ax = handles.figure1.UserData.ax;
|
|
if isprop(ax, 'user_title')
|
|
current_title = ax.user_title;
|
|
else
|
|
current_title = '';
|
|
end
|
|
|
|
% update title
|
|
title(ax,'Select the bad pixels. Press ESC to abort.','Interpreter', 'none');
|
|
|
|
|
|
% create rectangle
|
|
h = imrect(ax);
|
|
|
|
if ~isempty(h)
|
|
asize = handles.figure1.UserData.asize;
|
|
% get positions and create the mask
|
|
sel_pos = round(h.getPosition);
|
|
pos = sel_pos;
|
|
|
|
pos(1) = min(max(1, sel_pos(1)), asize(2));
|
|
pos(2) = min(max(1, sel_pos(2)), asize(1));
|
|
pos(3) = min(max(0, sel_pos(3)), asize(2)-pos(1));
|
|
pos(4) = min(max(0, sel_pos(4)), asize(1)-pos(2));
|
|
|
|
update_mask3D(handles, pos)
|
|
update_image(handles)
|
|
update_mask_GUI(handles)
|
|
|
|
% delete rectangle and update mask
|
|
h.delete;
|
|
end
|
|
% revert changes to the title
|
|
if ax.isprop('update_title') && ax.update_title && ~isempty(ax.vars.title_list)
|
|
%%% imagesc3D
|
|
% get slice
|
|
slice = round(get(ax.slider_handle,'Value'));
|
|
slice = max(1, min(length(vars.order), slice));
|
|
% write title
|
|
if isempty(vars.title_list)
|
|
ax.update_title = false;
|
|
if ~isempty(ax.user_title)
|
|
title_text = sprintf(ax.user_title, slice);
|
|
title(ax, title_text, 'Interpreter', 'none');
|
|
end
|
|
ax.update_title = true;
|
|
else
|
|
if ~isempty(vars.title_list)
|
|
title(ax, vars.title_list{slice}, 'Interpreter', 'none')
|
|
end
|
|
end
|
|
else
|
|
%%% normal imagesc
|
|
title(ax, current_title);
|
|
end
|
|
|
|
% ---------------------------------------------------------------------
|
|
function update_mask_GUI(handles)
|
|
if handles.figure1.UserData.mask3D
|
|
slice = handles.figure1.UserData.ax.slider_handle.Value;
|
|
handles.axes1.Children.CData = squeeze(prod(handles.figure1.UserData.mask_temp(:,:,:,slice),3));
|
|
handles.axes1.img = squeeze(prod(handles.figure1.UserData.mask_temp,3));
|
|
else
|
|
handles.axes1.Children.CData = squeeze(prod(handles.figure1.UserData.mask_temp,3));
|
|
end
|
|
handles.figure1.UserData.mask = handles.axes1.Children.CData;
|
|
|
|
function update_mask3D(handles, pos)
|
|
if handles.figure1.UserData.mask3D && ~handles.figure1.UserData.stack
|
|
% I guess one can change the if condition to projection/noprojection
|
|
slice = handles.figure1.UserData.ax.slider_handle.Value;
|
|
handles.figure1.UserData.mask_temp(pos(2):pos(2)+pos(4),pos(1):pos(1)+pos(3), end, slice) = 0;
|
|
else
|
|
handles.figure1.UserData.mask_temp(pos(2):pos(2)+pos(4),pos(1):pos(1)+pos(3),end,:) = 0;
|
|
end
|
|
|
|
function update_image(handles)
|
|
|
|
ax = handles.figure1.UserData.ax;
|
|
if ndims(handles.figure1.UserData.mask_temp)==3
|
|
ax.Children(end).CData = handles.figure1.UserData.CData .* prod(handles.figure1.UserData.mask_temp,3);
|
|
elseif ndims(handles.figure1.UserData.mask_temp)==4
|
|
slice = handles.figure1.UserData.ax.slider_handle.Value;
|
|
ax.Children(end).CData = handles.figure1.UserData.CData .* prod(handles.figure1.UserData.mask_temp(:,:,:,slice),3);
|
|
else
|
|
ax.Children(end).CData = handles.figure1.UserData.CData .*handles.figure1.UserData.mask_temp;
|
|
end
|
|
|
|
if isfield(handles.figure1.UserData, 'img_orig')
|
|
if ndims(handles.figure1.UserData.mask_temp)>=3
|
|
ax.img = handles.figure1.UserData.img_orig .* squeeze(prod(handles.figure1.UserData.mask_temp,3));
|
|
else
|
|
ax.img = handles.figure1.UserData.img_orig .* handles.figure1.UserData.mask_temp;
|
|
end
|
|
end
|
|
|
|
|
|
% --------------------------------------------------------------------
|
|
function FileMenu_Callback(hObject, eventdata, handles)
|
|
% hObject handle to FileMenu (see GCBO)
|
|
% eventdata reserved - to be defined in a future version of MATLAB
|
|
% handles structure with handles and user data (see GUIDATA)
|
|
|
|
|
|
% --------------------------------------------------------------------
|
|
function OpenMenuItem_Callback(hObject, eventdata, handles)
|
|
% hObject handle to OpenMenuItem (see GCBO)
|
|
% eventdata reserved - to be defined in a future version of MATLAB
|
|
% handles structure with handles and user data (see GUIDATA)
|
|
file = uigetfile('*.fig');
|
|
if ~isequal(file, 0)
|
|
open(file);
|
|
end
|
|
|
|
% --------------------------------------------------------------------
|
|
function PrintMenuItem_Callback(hObject, eventdata, handles)
|
|
% hObject handle to PrintMenuItem (see GCBO)
|
|
% eventdata reserved - to be defined in a future version of MATLAB
|
|
% handles structure with handles and user data (see GUIDATA)
|
|
printdlg(handles.figure1)
|
|
|
|
% --------------------------------------------------------------------
|
|
function CloseMenuItem_Callback(hObject, eventdata, handles)
|
|
% hObject handle to CloseMenuItem (see GCBO)
|
|
% eventdata reserved - to be defined in a future version of MATLAB
|
|
% handles structure with handles and user data (see GUIDATA)
|
|
selection = questdlg(['Close ' get(handles.figure1,'Name') '?'],...
|
|
['Close ' get(handles.figure1,'Name') '...'],...
|
|
'Yes','No','Yes');
|
|
if strcmp(selection,'No')
|
|
return;
|
|
end
|
|
handles.figure1.UserData.done = true;
|
|
pause(0.2)
|
|
|
|
|
|
% --- Executes on selection change in popupmenu1.
|
|
function popupmenu1_Callback(hObject, eventdata, handles)
|
|
% hObject handle to popupmenu1 (see GCBO)
|
|
% eventdata reserved - to be defined in a future version of MATLAB
|
|
% handles structure with handles and user data (see GUIDATA)
|
|
|
|
% Hints: contents = get(hObject,'String') returns popupmenu1 contents as cell array
|
|
% contents{get(hObject,'Value')} returns selected item from popupmenu1
|
|
keyboard
|
|
|
|
% --- Executes during object creation, after setting all properties.
|
|
function popupmenu1_CreateFcn(hObject, eventdata, handles)
|
|
% hObject handle to popupmenu1 (see GCBO)
|
|
% eventdata reserved - to be defined in a future version of MATLAB
|
|
% handles empty - handles not created until after all CreateFcns called
|
|
|
|
% Hint: popupmenu controls usually have a white background on Windows.
|
|
% See ISPC and COMPUTER.
|
|
if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
|
|
set(hObject,'BackgroundColor','white');
|
|
end
|
|
|
|
set(hObject, 'String', {'plot(rand(5))', 'plot(sin(1:0.01:25))', 'bar(1:.5:10)', 'plot(membrane)', 'surf(peaks)'});
|
|
|
|
|
|
% --- Executes on button press in pushbutton2.
|
|
% undo
|
|
function pushbutton2_Callback(hObject, eventdata, handles)
|
|
% hObject handle to pushbutton2 (see GCBO)
|
|
% eventdata reserved - to be defined in a future version of MATLAB
|
|
% handles structure with handles and user data (see GUIDATA)
|
|
if size(handles.figure1.UserData.mask_temp,3)>1
|
|
handles.figure1.UserData.mask_temp(:,:,end,:) = [];
|
|
update_mask_GUI(handles)
|
|
update_image(handles)
|
|
end
|
|
|
|
|
|
% --- Executes on button press in pushbutton3.
|
|
% load mask
|
|
function pushbutton3_Callback(hObject, eventdata, handles)
|
|
% hObject handle to pushbutton3 (see GCBO)
|
|
% eventdata reserved - to be defined in a future version of MATLAB
|
|
% handles structure with handles and user data (see GUIDATA)
|
|
[fname, fpath] = uigetfile('*.mat');
|
|
fname_full = fullfile(fpath, fname);
|
|
|
|
if ~isempty(fname_full)
|
|
try
|
|
f = load(fname_full);
|
|
if isfield(f, 'mask')
|
|
% load binary mask
|
|
if ndims(f.mask)~=ndims(squeeze(handles.figure1.UserData.mask_temp(:,:,1,:))) || any(size(f.mask) ~= size(squeeze(handles.figure1.UserData.mask_temp(:,:,1,:))))
|
|
fprintf('ERROR. Mask dimensions don''t match.\n')
|
|
end
|
|
try
|
|
if handles.figure1.UserData.mask3D && size(f.mask,3)==1 && handles.figure1.UserData.stack
|
|
% apply mask to 3D stack
|
|
f.mask = repmat(f.mask, [1 1 size( handles.figure1.UserData.mask_temp,4)]);
|
|
handles.figure1.UserData.mask_temp(:,:,end+1,:) = f.mask;
|
|
elseif handles.figure1.UserData.mask3D && size(f.mask,3)==1 && ~handles.figure1.UserData.stack
|
|
% get current slider value and apply mask to single
|
|
% slice
|
|
slice = handles.figure1.UserData.ax.slider_handle.Value;
|
|
handles.figure1.UserData.mask_temp(:,:,end+1,:) = handles.figure1.UserData.mask_temp(:,:,end,:);
|
|
handles.figure1.UserData.mask_temp(:,:,end,slice) = f.mask;
|
|
else
|
|
% 2D case
|
|
handles.figure1.UserData.mask_temp(:,:,end+1,:) = f.mask;
|
|
end
|
|
|
|
catch
|
|
fprintf('Failed to append mask.\n')
|
|
end
|
|
elseif isfield(f, 'valid_mask')
|
|
% load indices for mask
|
|
if numel(f.valid_mask.framesize)~=ndims(squeeze(handles.figure1.UserData.mask_temp(:,:,1,:))) || any(f.valid_mask.framesize ~= size(squeeze(handles.figure1.UserData.mask_temp(:,:,1,:))))
|
|
fprintf('ERROR. Mask dimensions don''t match.\n')
|
|
end
|
|
try
|
|
if handles.figure1.UserData.mask3D && numel(f.valid_mask.framesize)==2 && handles.figure1.UserData.stack
|
|
% apply mask to 3D stack
|
|
mask = repmat(beamline.ind2mask(f.valid_mask), [1 1 size( handles.figure1.UserData.mask_temp,4)]);
|
|
handles.figure1.UserData.mask_temp(:,:,end+1,:) = mask;
|
|
elseif handles.figure1.UserData.mask3D && numel(f.valid_mask.framesize)==2 && ~handles.figure1.UserData.stack
|
|
% get current slider value and apply mask to single
|
|
% slice
|
|
slice = handles.figure1.UserData.ax.slider_handle.Value;
|
|
handles.figure1.UserData.mask_temp(:,:,end+1,:) = handles.figure1.UserData.mask_temp(:,:,end,:);
|
|
handles.figure1.UserData.mask_temp(:,:,end,slice) = beamline.ind2mask(f.valid_mask);
|
|
else
|
|
% 2D case
|
|
handles.figure1.UserData.mask_temp(:,:,end+1,:) = beamline.ind2mask(f.valid_mask);
|
|
end
|
|
catch
|
|
fprintf('Failed to append mask.\n')
|
|
end
|
|
|
|
end
|
|
|
|
catch
|
|
fprintf('Failed to load file.\n')
|
|
end
|
|
|
|
end
|
|
update_mask_GUI(handles)
|
|
update_image(handles)
|
|
|
|
|
|
% handles.figure1.UserData = s;
|
|
|
|
|
|
|
|
|
|
% --- Executes on button press in pushbutton4.
|
|
% save mask
|
|
function pushbutton4_Callback(hObject, eventdata, handles)
|
|
% hObject handle to pushbutton4 (see GCBO)
|
|
% eventdata reserved - to be defined in a future version of MATLAB
|
|
% handles structure with handles and user data (see GUIDATA)
|
|
[fname, fpath, ftype] = uiputfile({'*.mat',...
|
|
'Binary mask (*.mat)';
|
|
'*.mat', 'Indicies (*.mat)'}, 'Save mask', 'new_mask.mat');
|
|
fname_full = fullfile(fpath, fname);
|
|
if ~isempty(fname_full)
|
|
try
|
|
switch ftype
|
|
case 1
|
|
% binary mask
|
|
mask = squeeze(prod(handles.figure1.UserData.mask_temp,3));
|
|
save(fname_full, 'mask');
|
|
case 2
|
|
% indices
|
|
mask = squeeze(prod(handles.figure1.UserData.mask_temp,3));
|
|
valid_mask = beamline.mask2ind(mask);
|
|
save(fname_full, 'valid_mask');
|
|
end
|
|
fprintf('Saved mask to %s.\n', fname_full)
|
|
catch ME
|
|
fprintf('Failed to save file.\n')
|
|
end
|
|
end
|
|
|
|
|
|
% --- Executes on button press in pushbutton4.
|
|
% reset
|
|
function revert_Callback(hObject, eventdata, handles)
|
|
% hObject handle to pushbutton4 (see GCBO)
|
|
% eventdata reserved - to be defined in a future version of MATLAB
|
|
% handles structure with handles and user data (see GUIDATA)
|
|
handles.figure1.UserData.mask_temp = ones(handles.figure1.UserData.mask_asize);
|
|
update_mask_GUI(handles);
|
|
update_image(handles);
|
|
|
|
|
|
% --- Executes on button press in quit.
|
|
% quit
|
|
function quit_Callback(hObject, eventdata, handles)
|
|
% hObject handle to pushbutton4 (see GCBO)
|
|
% eventdata reserved - to be defined in a future version of MATLAB
|
|
% handles structure with handles and user data (see GUIDATA)
|
|
CloseMenuItem_Callback(hObject, eventdata, handles)
|
|
|
|
|
|
% --- Executes on button press in quit.
|
|
% toggle button stack
|
|
function toggle_button_stack_Callback(hObject, eventdata, handles)
|
|
% hObject handle to pushbutton4 (see GCBO)
|
|
% eventdata reserved - to be defined in a future version of MATLAB
|
|
% handles structure with handles and user data (see GUIDATA)
|
|
val = get(hObject, 'Value');
|
|
if val
|
|
set(hObject, 'BackgroundColor', [0.956 0.3137 0.2588])
|
|
handles.figure1.UserData.stack = true;
|
|
else
|
|
set(hObject, 'BackgroundColor', [1 1 1])
|
|
handles.figure1.UserData.stack = false;
|
|
end
|
|
|
|
|
|
% --- Creates and returns a handle to the GUI figure.
|
|
function h1 = create_mask_GUI_export_LayoutFcn(policy)
|
|
% policy - create a new figure or use a singleton. 'new' or 'reuse'.
|
|
|
|
persistent hsingleton;
|
|
if strcmpi(policy, 'reuse') & ishandle(hsingleton)
|
|
h1 = hsingleton;
|
|
return;
|
|
end
|
|
% load create_mask_GUI_export.mat
|
|
|
|
|
|
appdata = [];
|
|
% appdata.GUIDEOptions = mat{1};
|
|
appdata.GUIDEOptions.syscolorfig = true;
|
|
|
|
appdata.lastValidTag = 'figure1';
|
|
appdata.GUIDELayoutEditor = [];
|
|
appdata.initTags = struct(...
|
|
'handle', [], ...
|
|
'tag', 'figure1');
|
|
|
|
h1 = figure(...
|
|
'PaperUnits',get(0,'defaultfigurePaperUnits'),...
|
|
'Units','pixels',...
|
|
'Position',[986 614 803 503],...
|
|
'Visible',get(0,'defaultfigureVisible'),...
|
|
'Color',get(0,'defaultfigureColor'),...
|
|
'CloseRequestFcn',get(0,'defaultfigureCloseRequestFcn'),...
|
|
'CurrentAxesMode','manual',...
|
|
'CurrentObjectMode','manual',...
|
|
'CurrentPointMode','manual',...
|
|
'SelectionTypeMode','manual',...
|
|
'ResizeFcn',blanks(0),...
|
|
'IntegerHandle','off',...
|
|
'NextPlot',get(0,'defaultfigureNextPlot'),...
|
|
'Alphamap',get(0,'defaultfigureAlphamap'),...
|
|
'WindowButtonDownFcn',blanks(0),...
|
|
'WindowButtonUpFcn',blanks(0),...
|
|
'WindowButtonMotionFcn',blanks(0),...
|
|
'WindowScrollWheelFcn',blanks(0),...
|
|
'WindowKeyPressFcn',blanks(0),...
|
|
'WindowKeyReleaseFcn',blanks(0),...
|
|
'MenuBar','none',...
|
|
'ToolBar','figure',...
|
|
'Pointer',get(0,'defaultfigurePointer'),...
|
|
'PointerShapeHotSpot',get(0,'defaultfigurePointerShapeHotSpot'),...
|
|
'Name','Mask selection',...
|
|
'NumberTitle','off',...
|
|
'ButtonDownFcn',blanks(0),...
|
|
'CreateFcn', {@local_CreateFcn, blanks(0), appdata} ,...
|
|
'DeleteFcn',blanks(0),...
|
|
'Tag','figure1',...
|
|
'UserData',[],...
|
|
'WindowStyle',get(0,'defaultfigureWindowStyle'),...
|
|
'DockControls',get(0,'defaultfigureDockControls'),...
|
|
'Resize','off',...
|
|
'PaperPosition',get(0,'defaultfigurePaperPosition'),...
|
|
'PaperSize',get(0,'defaultfigurePaperSize'),...
|
|
'PaperType',get(0,'defaultfigurePaperType'),...
|
|
'InvertHardcopy',get(0,'defaultfigureInvertHardcopy'),...
|
|
'PaperOrientation',get(0,'defaultfigurePaperOrientation'),...
|
|
'ScreenPixelsPerInchMode','manual',...
|
|
'KeyPressFcn',blanks(0),...
|
|
'KeyReleaseFcn',blanks(0),...
|
|
'HandleVisibility','callback');
|
|
|
|
appdata = [];
|
|
appdata.lastValidTag = 'axes1';
|
|
|
|
h2 = axes(...
|
|
'Parent',h1,...
|
|
'FontUnits','normalized',...
|
|
'Units',get(0,'defaultaxesUnits'),...
|
|
'CameraPosition',[0.5 0.5 9.16025403784439],...
|
|
'CameraPositionMode','manual',...
|
|
'CameraTarget',[0.5 0.5 0.5],...
|
|
'CameraUpVector',get(0,'defaultaxesCameraUpVector'),...
|
|
'CameraViewAngle',get(0,'defaultaxesCameraViewAngle'),...
|
|
'Projection',get(0,'defaultaxesProjection'),...
|
|
'LabelFontSizeMultiplier',get(0,'defaultaxesLabelFontSizeMultiplier'),...
|
|
'AmbientLightColor',get(0,'defaultaxesAmbientLightColor'),...
|
|
'WarpToFill','off',...
|
|
'WarpToFillMode',get(0,'defaultaxesWarpToFillMode'),...
|
|
'DataAspectRatio',get(0,'defaultaxesDataAspectRatio'),...
|
|
'PlotBoxAspectRatio',get(0,'defaultaxesPlotBoxAspectRatio'),...
|
|
'FontName',get(0,'defaultaxesFontName'),...
|
|
'FontAngle',get(0,'defaultaxesFontAngle'),...
|
|
'FontWeight',get(0,'defaultaxesFontWeight'),...
|
|
'FontSmoothing',get(0,'defaultaxesFontSmoothing'),...
|
|
'TickLabelInterpreter',get(0,'defaultaxesTickLabelInterpreter'),...
|
|
'XLim',get(0,'defaultaxesXLim'),...
|
|
'YLim',get(0,'defaultaxesYLim'),...
|
|
'ZLim',get(0,'defaultaxesZLim'),...
|
|
'CLim',get(0,'defaultaxesCLim'),...
|
|
'ALim',get(0,'defaultaxesALim'),...
|
|
'Layer',get(0,'defaultaxesLayer'),...
|
|
'TickLength',get(0,'defaultaxesTickLength'),...
|
|
'GridLineStyle',get(0,'defaultaxesGridLineStyle'),...
|
|
'MinorGridLineStyle',get(0,'defaultaxesMinorGridLineStyle'),...
|
|
'XAxisLocation',get(0,'defaultaxesXAxisLocation'),...
|
|
'XTick',[0 0.2 0.4 0.6 0.8 1],...
|
|
'XTickLabelRotation',get(0,'defaultaxesXTickLabelRotation'),...
|
|
'XScale',get(0,'defaultaxesXScale'),...
|
|
'XTickLabel',{ '0 '; '0.2'; '0.4'; '0.6'; '0.8'; '1 ' },...
|
|
'XMinorTick',get(0,'defaultaxesXMinorTick'),...
|
|
'YAxisLocation',get(0,'defaultaxesYAxisLocation'),...
|
|
'YTick',[0 0.2 0.4 0.6 0.8 1],...
|
|
'YTickLabelRotation',get(0,'defaultaxesYTickLabelRotation'),...
|
|
'YScale',get(0,'defaultaxesYScale'),...
|
|
'YTickLabel',{ '0 '; '0.2'; '0.4'; '0.6'; '0.8'; '1 ' },...
|
|
'YMinorTick',get(0,'defaultaxesYMinorTick'),...
|
|
'ZTick',[0 0.5 1],...
|
|
'ZTickLabelRotation',get(0,'defaultaxesZTickLabelRotation'),...
|
|
'ZScale',get(0,'defaultaxesZScale'),...
|
|
'ZTickLabel',blanks(0),...
|
|
'ZMinorTick',get(0,'defaultaxesZMinorTick'),...
|
|
'BoxStyle',get(0,'defaultaxesBoxStyle'),...
|
|
'LineWidth',get(0,'defaultaxesLineWidth'),...
|
|
'Color',get(0,'defaultaxesColor'),...
|
|
'ClippingStyle',get(0,'defaultaxesClippingStyle'),...
|
|
'CameraMode',get(0,'defaultaxesCameraMode'),...
|
|
'DataSpaceMode',get(0,'defaultaxesDataSpaceMode'),...
|
|
'ColorSpaceMode',get(0,'defaultaxesColorSpaceMode'),...
|
|
'DecorationContainerMode',get(0,'defaultaxesDecorationContainerMode'),...
|
|
'ChildContainerMode',get(0,'defaultaxesChildContainerMode'),...
|
|
'XRulerMode',get(0,'defaultaxesXRulerMode'),...
|
|
'XBaselineMode',get(0,'defaultaxesXBaselineMode'),...
|
|
'YRulerMode',get(0,'defaultaxesYRulerMode'),...
|
|
'YBaselineMode',get(0,'defaultaxesYBaselineMode'),...
|
|
'ZRulerMode',get(0,'defaultaxesZRulerMode'),...
|
|
'ZBaselineMode',get(0,'defaultaxesZBaselineMode'),...
|
|
'AmbientLightSourceMode',get(0,'defaultaxesAmbientLightSourceMode'),...
|
|
'XGrid',get(0,'defaultaxesXGrid'),...
|
|
'XMinorGrid',get(0,'defaultaxesXMinorGrid'),...
|
|
'YGrid',get(0,'defaultaxesYGrid'),...
|
|
'YMinorGrid',get(0,'defaultaxesYMinorGrid'),...
|
|
'ZGrid',get(0,'defaultaxesZGrid'),...
|
|
'ZMinorGrid',get(0,'defaultaxesZMinorGrid'),...
|
|
'ButtonDownFcn',blanks(0),...
|
|
'CreateFcn', {@local_CreateFcn, blanks(0), appdata} ,...
|
|
'DeleteFcn',blanks(0),...
|
|
'Tag','axes1',...
|
|
'UserData',[],...
|
|
'HitTest',get(0,'defaultaxesHitTest'),...
|
|
'PickableParts',get(0,'defaultaxesPickableParts'),...
|
|
'Position',[0.11083 0.125248 0.587795 0.7952286],...
|
|
'ActivePositionProperty','position',...
|
|
'LooseInset',[0.13 0.11 0.095 0.075],...
|
|
'ColorOrderIndex',get(0,'defaultaxesColorOrderIndex'),...
|
|
'LineStyleOrder',get(0,'defaultaxesLineStyleOrder'),...
|
|
'LineStyleOrderIndex',get(0,'defaultaxesLineStyleOrderIndex'),...
|
|
'FontSize',0.090702947845805,...
|
|
'TitleFontWeight',get(0,'defaultaxesTitleFontWeight'),...
|
|
'TitleFontSizeMultiplier',get(0,'defaultaxesTitleFontSizeMultiplier'),...
|
|
'SortMethod','childorder',...
|
|
'TickDir',get(0,'defaultaxesTickDir'),...
|
|
'MinorGridColor',get(0,'defaultaxesMinorGridColor'),...
|
|
'Clipping',get(0,'defaultaxesClipping'),...
|
|
'NextPlot',get(0,'defaultaxesNextPlot'),...
|
|
'Box',get(0,'defaultaxesBox'),...
|
|
'ChildrenMode','manual',...
|
|
'Visible',get(0,'defaultaxesVisible'),...
|
|
'HandleVisibility',get(0,'defaultaxesHandleVisibility'));
|
|
|
|
h3 = get(h2,'title');
|
|
|
|
set(h3,...
|
|
'Parent',h2,...
|
|
'Units','data',...
|
|
'FontUnits','normalized',...
|
|
'DecorationContainer',[],...
|
|
'DecorationContainerMode','auto',...
|
|
'Color',[0 0 0],...
|
|
'ColorMode','auto',...
|
|
'Position',[0.500000730279374 1.00006515710682 0.5],...
|
|
'PositionMode','auto',...
|
|
'String',blanks(0),...
|
|
'Interpreter','tex',...
|
|
'Rotation',0,...
|
|
'RotationMode','auto',...
|
|
'FontName','Helvetica',...
|
|
'FontSize',0.0951293759512938,...
|
|
'FontAngle','normal',...
|
|
'FontWeight','normal',...
|
|
'HorizontalAlignment','center',...
|
|
'HorizontalAlignmentMode','auto',...
|
|
'VerticalAlignment','bottom',...
|
|
'VerticalAlignmentMode','auto',...
|
|
'EdgeColor','none',...
|
|
'LineStyle','-',...
|
|
'LineWidth',0.5,...
|
|
'BackgroundColor','none',...
|
|
'Margin',2,...
|
|
'Clipping','off',...
|
|
'Layer','middle',...
|
|
'LayerMode','auto',...
|
|
'FontSmoothing','on',...
|
|
'FontSmoothingMode','auto',...
|
|
'IncludeRenderer','on',...
|
|
'IsContainer','off',...
|
|
'IsContainerMode','auto',...
|
|
'HelpTopicKey',blanks(0),...
|
|
'ButtonDownFcn',blanks(0),...
|
|
'BusyAction','queue',...
|
|
'Interruptible','on',...
|
|
'CreateFcn', {@local_CreateFcn, blanks(0), ''} ,...
|
|
'DeleteFcn',blanks(0),...
|
|
'Tag',blanks(0),...
|
|
'UserData',[],...
|
|
'HitTest','on',...
|
|
'PickableParts','visible',...
|
|
'PickablePartsMode','auto',...
|
|
'DimensionNames',{ 'X' 'Y' 'Z' },...
|
|
'DimensionNamesMode','auto',...
|
|
'XLimInclude','on',...
|
|
'YLimInclude','on',...
|
|
'ZLimInclude','on',...
|
|
'CLimInclude','on',...
|
|
'ALimInclude','on',...
|
|
'Description','Axes Title',...
|
|
'DescriptionMode','auto',...
|
|
'Visible','on',...
|
|
'Serializable','on',...
|
|
'HandleVisibility','off',...
|
|
'TransformForPrintFcnImplicitInvoke','on',...
|
|
'TransformForPrintFcnImplicitInvokeMode','auto');
|
|
|
|
h4 = get(h2,'xlabel');
|
|
|
|
set(h4,...
|
|
'Parent',h2,...
|
|
'Units','data',...
|
|
'FontUnits','normalized',...
|
|
'DecorationContainer',[],...
|
|
'DecorationContainerMode','auto',...
|
|
'Color',[0.15 0.15 0.15],...
|
|
'ColorMode','auto',...
|
|
'Position',[0.500000476837158 -0.136405433827787 0],...
|
|
'PositionMode','auto',...
|
|
'String',blanks(0),...
|
|
'Interpreter','tex',...
|
|
'Rotation',0,...
|
|
'RotationMode','auto',...
|
|
'FontName','Helvetica',...
|
|
'FontSize',0.0951293759512938,...
|
|
'FontAngle','normal',...
|
|
'FontWeight','normal',...
|
|
'HorizontalAlignment','center',...
|
|
'HorizontalAlignmentMode','auto',...
|
|
'VerticalAlignment','top',...
|
|
'VerticalAlignmentMode','auto',...
|
|
'EdgeColor','none',...
|
|
'LineStyle','-',...
|
|
'LineWidth',0.5,...
|
|
'BackgroundColor','none',...
|
|
'Margin',2,...
|
|
'Clipping','off',...
|
|
'Layer','back',...
|
|
'LayerMode','auto',...
|
|
'FontSmoothing','on',...
|
|
'FontSmoothingMode','auto',...
|
|
'IncludeRenderer','on',...
|
|
'IsContainer','off',...
|
|
'IsContainerMode','auto',...
|
|
'HelpTopicKey',blanks(0),...
|
|
'ButtonDownFcn',blanks(0),...
|
|
'BusyAction','queue',...
|
|
'Interruptible','on',...
|
|
'CreateFcn', {@local_CreateFcn, blanks(0), ''} ,...
|
|
'DeleteFcn',blanks(0),...
|
|
'Tag',blanks(0),...
|
|
'UserData',[],...
|
|
'HitTest','on',...
|
|
'PickableParts','visible',...
|
|
'PickablePartsMode','auto',...
|
|
'DimensionNames',{ 'X' 'Y' 'Z' },...
|
|
'DimensionNamesMode','auto',...
|
|
'XLimInclude','on',...
|
|
'YLimInclude','on',...
|
|
'ZLimInclude','on',...
|
|
'CLimInclude','on',...
|
|
'ALimInclude','on',...
|
|
'Description','NumericRuler Label',...
|
|
'DescriptionMode','auto',...
|
|
'Visible','on',...
|
|
'Serializable','on',...
|
|
'HandleVisibility','off',...
|
|
'TransformForPrintFcnImplicitInvoke','on',...
|
|
'TransformForPrintFcnImplicitInvokeMode','auto');
|
|
|
|
h5 = get(h2,'ylabel');
|
|
|
|
set(h5,...
|
|
'Parent',h2,...
|
|
'Units','data',...
|
|
'FontUnits','normalized',...
|
|
'DecorationContainer',[],...
|
|
'DecorationContainerMode','auto',...
|
|
'Color',[0.15 0.15 0.15],...
|
|
'ColorMode','auto',...
|
|
'Position',[-0.182371949750624 0.500000476837158 0],...
|
|
'PositionMode','auto',...
|
|
'String',blanks(0),...
|
|
'Interpreter','tex',...
|
|
'Rotation',90,...
|
|
'RotationMode','auto',...
|
|
'FontName','Helvetica',...
|
|
'FontSize',0.0951293759512938,...
|
|
'FontAngle','normal',...
|
|
'FontWeight','normal',...
|
|
'HorizontalAlignment','center',...
|
|
'HorizontalAlignmentMode','auto',...
|
|
'VerticalAlignment','bottom',...
|
|
'VerticalAlignmentMode','auto',...
|
|
'EdgeColor','none',...
|
|
'LineStyle','-',...
|
|
'LineWidth',0.5,...
|
|
'BackgroundColor','none',...
|
|
'Margin',2,...
|
|
'Clipping','off',...
|
|
'Layer','back',...
|
|
'LayerMode','auto',...
|
|
'FontSmoothing','on',...
|
|
'FontSmoothingMode','auto',...
|
|
'IncludeRenderer','on',...
|
|
'IsContainer','off',...
|
|
'IsContainerMode','auto',...
|
|
'HelpTopicKey',blanks(0),...
|
|
'ButtonDownFcn',blanks(0),...
|
|
'BusyAction','queue',...
|
|
'Interruptible','on',...
|
|
'CreateFcn', {@local_CreateFcn, blanks(0), ''} ,...
|
|
'DeleteFcn',blanks(0),...
|
|
'Tag',blanks(0),...
|
|
'UserData',[],...
|
|
'HitTest','on',...
|
|
'PickableParts','visible',...
|
|
'PickablePartsMode','auto',...
|
|
'DimensionNames',{ 'X' 'Y' 'Z' },...
|
|
'DimensionNamesMode','auto',...
|
|
'XLimInclude','on',...
|
|
'YLimInclude','on',...
|
|
'ZLimInclude','on',...
|
|
'CLimInclude','on',...
|
|
'ALimInclude','on',...
|
|
'Description','NumericRuler Label',...
|
|
'DescriptionMode','auto',...
|
|
'Visible','on',...
|
|
'Serializable','on',...
|
|
'HandleVisibility','off',...
|
|
'TransformForPrintFcnImplicitInvoke','on',...
|
|
'TransformForPrintFcnImplicitInvokeMode','auto');
|
|
|
|
h6 = get(h2,'zlabel');
|
|
|
|
set(h6,...
|
|
'Parent',h2,...
|
|
'Units','data',...
|
|
'FontUnits','normalized',...
|
|
'DecorationContainer',[],...
|
|
'DecorationContainerMode','auto',...
|
|
'Color',[0.15 0.15 0.15],...
|
|
'ColorMode','auto',...
|
|
'Position',[0 0 0],...
|
|
'PositionMode','auto',...
|
|
'Interpreter','tex',...
|
|
'InterpreterMode','auto',...
|
|
'Rotation',0,...
|
|
'RotationMode','auto',...
|
|
'FontName','Helvetica',...
|
|
'FontNameMode','auto',...
|
|
'FontSize',0.103930461073318,...
|
|
'FontSizeMode','auto',...
|
|
'FontAngle','normal',...
|
|
'FontAngleMode','auto',...
|
|
'FontWeight','normal',...
|
|
'FontWeightMode','auto',...
|
|
'HorizontalAlignment','left',...
|
|
'HorizontalAlignmentMode','auto',...
|
|
'VerticalAlignment','middle',...
|
|
'VerticalAlignmentMode','auto',...
|
|
'EdgeColor','none',...
|
|
'EdgeColorMode','auto',...
|
|
'LineStyle','-',...
|
|
'LineStyleMode','auto',...
|
|
'LineWidth',0.5,...
|
|
'LineWidthMode','auto',...
|
|
'BackgroundColor','none',...
|
|
'BackgroundColorMode','auto',...
|
|
'Margin',3,...
|
|
'MarginMode','auto',...
|
|
'Clipping','off',...
|
|
'ClippingMode','auto',...
|
|
'Layer','middle',...
|
|
'LayerMode','auto',...
|
|
'FontSmoothing','on',...
|
|
'FontSmoothingMode','auto',...
|
|
'IncludeRenderer','on',...
|
|
'IsContainer','off',...
|
|
'IsContainerMode','auto',...
|
|
'HG1EraseMode','auto',...
|
|
'BusyAction','queue',...
|
|
'Interruptible','on',...
|
|
'HitTest','on',...
|
|
'HitTestMode','auto',...
|
|
'PickableParts','visible',...
|
|
'PickablePartsMode','auto',...
|
|
'DimensionNames',{ 'X' 'Y' 'Z' },...
|
|
'DimensionNamesMode','auto',...
|
|
'XLimInclude','on',...
|
|
'XLimIncludeMode','auto',...
|
|
'YLimInclude','on',...
|
|
'YLimIncludeMode','auto',...
|
|
'ZLimInclude','on',...
|
|
'ZLimIncludeMode','auto',...
|
|
'CLimInclude','on',...
|
|
'CLimIncludeMode','auto',...
|
|
'ALimInclude','on',...
|
|
'ALimIncludeMode','auto',...
|
|
'Description','NumericRuler Label',...
|
|
'DescriptionMode','auto',...
|
|
'Visible','off',...
|
|
'VisibleMode','auto',...
|
|
'Serializable','on',...
|
|
'SerializableMode','auto',...
|
|
'HandleVisibility','off',...
|
|
'HandleVisibilityMode','auto',...
|
|
'TransformForPrintFcnImplicitInvoke','on',...
|
|
'TransformForPrintFcnImplicitInvokeMode','auto');
|
|
|
|
appdata = [];
|
|
appdata.lastValidTag = 'pushbutton1';
|
|
|
|
h7 = uicontrol(...
|
|
'Parent',h1,...
|
|
'FontUnits',get(0,'defaultuicontrolFontUnits'),...
|
|
'Units','pixels',...
|
|
'ListboxTop',0,...
|
|
'String','Add more pixels',...
|
|
'Position',[613 413 146 48],...
|
|
'BackgroundColor',[0.831 0.816 0.784],...
|
|
'Callback',@(hObject,eventdata)create_mask_GUI_export('pushbutton1_Callback',hObject,eventdata,guidata(hObject)),...
|
|
'Children',[],...
|
|
'ButtonDownFcn',blanks(0),...
|
|
'CreateFcn', {@local_CreateFcn, blanks(0), appdata} ,...
|
|
'DeleteFcn',blanks(0),...
|
|
'Tag','pushbutton1',...
|
|
'UserData',[],...
|
|
'KeyPressFcn',blanks(0),...
|
|
'FontSize',8,...
|
|
'FontSizeMode',get(0,'defaultuicontrolFontSizeMode'));
|
|
|
|
appdata = [];
|
|
appdata.lastValidTag = 'pushbutton2';
|
|
|
|
h8 = uicontrol(...
|
|
'Parent',h1,...
|
|
'FontUnits',get(0,'defaultuicontrolFontUnits'),...
|
|
'Units','pixels',...
|
|
'ListboxTop',0,...
|
|
'String','Undo',...
|
|
'Position',[613 344 146 48],...
|
|
'BackgroundColor',[0.831 0.816 0.784],...
|
|
'Callback',@(hObject,eventdata)create_mask_GUI_export('pushbutton2_Callback',hObject,eventdata,guidata(hObject)),...
|
|
'Children',[],...
|
|
'ButtonDownFcn',blanks(0),...
|
|
'CreateFcn', {@local_CreateFcn, blanks(0), appdata} ,...
|
|
'DeleteFcn',blanks(0),...
|
|
'Tag','pushbutton2',...
|
|
'UserData',[],...
|
|
'KeyPressFcn',blanks(0),...
|
|
'FontSize',8,...
|
|
'FontSizeMode',get(0,'defaultuicontrolFontSizeMode'));
|
|
|
|
appdata = [];
|
|
appdata.lastValidTag = 'pushbutton5';
|
|
|
|
h8 = uicontrol(...
|
|
'Parent',h1,...
|
|
'FontUnits',get(0,'defaultuicontrolFontUnits'),...
|
|
'Units','pixels',...
|
|
'ListboxTop',0,...
|
|
'String','Reset',...
|
|
'Position',[613 275 146 48],...
|
|
'BackgroundColor',[0.831 0.816 0.784],...
|
|
'Callback',@(hObject,eventdata)create_mask_GUI_export('revert_Callback',hObject,eventdata,guidata(hObject)),...
|
|
'Children',[],...
|
|
'ButtonDownFcn',blanks(0),...
|
|
'CreateFcn', {@local_CreateFcn, blanks(0), appdata} ,...
|
|
'DeleteFcn',blanks(0),...
|
|
'Tag','pushbutton2',...
|
|
'UserData',[],...
|
|
'KeyPressFcn',blanks(0),...
|
|
'FontSize',8,...
|
|
'FontSizeMode',get(0,'defaultuicontrolFontSizeMode'));
|
|
|
|
appdata = [];
|
|
appdata.lastValidTag = 'pushbutton3';
|
|
|
|
h9 = uicontrol(...
|
|
'Parent',h1,...
|
|
'FontUnits',get(0,'defaultuicontrolFontUnits'),...
|
|
'Units','pixels',...
|
|
'ListboxTop',0,...
|
|
'String','Load mask',...
|
|
'Position',[613 206 146 48],...
|
|
'BackgroundColor',[0.831 0.816 0.784],...
|
|
'Callback',@(hObject,eventdata)create_mask_GUI_export('pushbutton3_Callback',hObject,eventdata,guidata(hObject)),...
|
|
'Children',[],...
|
|
'ButtonDownFcn',blanks(0),...
|
|
'CreateFcn', {@local_CreateFcn, blanks(0), appdata} ,...
|
|
'DeleteFcn',blanks(0),...
|
|
'Tag','pushbutton3',...
|
|
'UserData',[],...
|
|
'KeyPressFcn',blanks(0),...
|
|
'FontSize',8,...
|
|
'FontSizeMode',get(0,'defaultuicontrolFontSizeMode'));
|
|
|
|
appdata = [];
|
|
appdata.lastValidTag = 'pushbutton4';
|
|
|
|
h10 = uicontrol(...
|
|
'Parent',h1,...
|
|
'FontUnits',get(0,'defaultuicontrolFontUnits'),...
|
|
'Units','pixels',...
|
|
'ListboxTop',0,...
|
|
'String','Save mask',...
|
|
'Position',[613 137 146 48],...
|
|
'BackgroundColor',[0.831 0.816 0.784],...
|
|
'Callback',@(hObject,eventdata)create_mask_GUI_export('pushbutton4_Callback',hObject,eventdata,guidata(hObject)),...
|
|
'Children',[],...
|
|
'ButtonDownFcn',blanks(0),...
|
|
'CreateFcn', {@local_CreateFcn, blanks(0), appdata} ,...
|
|
'DeleteFcn',blanks(0),...
|
|
'Tag','pushbutton4',...
|
|
'UserData',[],...
|
|
'KeyPressFcn',blanks(0),...
|
|
'FontSize',8,...
|
|
'FontSizeMode',get(0,'defaultuicontrolFontSizeMode'));
|
|
|
|
appdata = [];
|
|
appdata.lastValidTag = 'quit';
|
|
|
|
h11 = uicontrol(...
|
|
'Parent',h1,...
|
|
'FontUnits',get(0,'defaultuicontrolFontUnits'),...
|
|
'Units','pixels',...
|
|
'ListboxTop',0,...
|
|
'String','Quit',...
|
|
'Position',[613 68 146 48],...
|
|
'BackgroundColor',[0.831 0.816 0.784],...
|
|
'Callback',@(hObject,eventdata)create_mask_GUI_export('quit_Callback',hObject,eventdata,guidata(hObject)),...
|
|
'Children',[],...
|
|
'ButtonDownFcn',blanks(0),...
|
|
'CreateFcn', {@local_CreateFcn, blanks(0), appdata} ,...
|
|
'DeleteFcn',blanks(0),...
|
|
'Tag','quit',...
|
|
'UserData',[],...
|
|
'KeyPressFcn',blanks(0),...
|
|
'FontSize',8,...
|
|
'FontSizeMode',get(0,'defaultuicontrolFontSizeMode'));
|
|
|
|
appdata = [];
|
|
appdata.lastValidTag = 'quit';
|
|
|
|
h12 = uicontrol(...
|
|
'Parent',h1,...
|
|
'FontUnits',get(0,'defaultuicontrolFontUnits'),...
|
|
'Units','pixels',...
|
|
'String',{ 'Apply to stack' },...
|
|
'Style','togglebutton',...
|
|
'Position',[613 472 146 22],...
|
|
'Callback',@(hObject,eventdata)create_mask_GUI_export('toggle_button_stack_Callback',hObject,eventdata,guidata(hObject)),...
|
|
'Children',[],...
|
|
'Tag','togglebutton1',...
|
|
'Visible', 'off',...
|
|
'Value', 1,...
|
|
'BackgroundColor', [0.956 0.3137 0.2588],...
|
|
'CreateFcn', {@local_CreateFcn, blanks(0), appdata} );
|
|
|
|
|
|
h1.UserData.apply_to_stack_toggle = h12;
|
|
|
|
hsingleton = h1;
|
|
|
|
|
|
% --- Set application data first then calling the CreateFcn.
|
|
function local_CreateFcn(hObject, eventdata, createfcn, appdata)
|
|
|
|
if ~isempty(appdata)
|
|
names = fieldnames(appdata);
|
|
for i=1:length(names)
|
|
name = char(names(i));
|
|
setappdata(hObject, name, getfield(appdata,name));
|
|
end
|
|
end
|
|
|
|
if ~isempty(createfcn)
|
|
if isa(createfcn,'function_handle')
|
|
createfcn(hObject, eventdata);
|
|
else
|
|
eval(createfcn);
|
|
end
|
|
end
|
|
|
|
|
|
% --- Handles default GUIDE GUI creation and callback dispatch
|
|
function varargout = gui_mainfcn(gui_State, varargin)
|
|
|
|
gui_StateFields = {'gui_Name'
|
|
'gui_Singleton'
|
|
'gui_OpeningFcn'
|
|
'gui_OutputFcn'
|
|
'gui_LayoutFcn'
|
|
'gui_Callback'};
|
|
gui_Mfile = '';
|
|
for i=1:length(gui_StateFields)
|
|
if ~isfield(gui_State, gui_StateFields{i})
|
|
error(message('MATLAB:guide:StateFieldNotFound', gui_StateFields{ i }, gui_Mfile));
|
|
elseif isequal(gui_StateFields{i}, 'gui_Name')
|
|
gui_Mfile = [gui_State.(gui_StateFields{i}), '.m'];
|
|
end
|
|
end
|
|
|
|
numargin = length(varargin);
|
|
|
|
if numargin == 0
|
|
% CREATE_MASK_GUI_EXPORT
|
|
% create the GUI only if we are not in the process of loading it
|
|
% already
|
|
gui_Create = true;
|
|
elseif local_isInvokeActiveXCallback(gui_State, varargin{:})
|
|
% CREATE_MASK_GUI_EXPORT(ACTIVEX,...)
|
|
vin{1} = gui_State.gui_Name;
|
|
vin{2} = [get(varargin{1}.Peer, 'Tag'), '_', varargin{end}];
|
|
vin{3} = varargin{1};
|
|
vin{4} = varargin{end-1};
|
|
vin{5} = guidata(varargin{1}.Peer);
|
|
feval(vin{:});
|
|
return;
|
|
elseif local_isInvokeHGCallback(gui_State, [])
|
|
% CREATE_MASK_GUI_EXPORT('CALLBACK',hObject,eventData,handles,...)
|
|
gui_Create = false;
|
|
else
|
|
% CREATE_MASK_GUI_EXPORT(...)
|
|
% create the GUI and hand varargin to the openingfcn
|
|
gui_Create = true;
|
|
end
|
|
|
|
if ~gui_Create
|
|
% In design time, we need to mark all components possibly created in
|
|
% the coming callback evaluation as non-serializable. This way, they
|
|
% will not be brought into GUIDE and not be saved in the figure file
|
|
% when running/saving the GUI from GUIDE.
|
|
designEval = false;
|
|
if (numargin>1 && ishghandle(varargin{2}))
|
|
fig = varargin{2};
|
|
while ~isempty(fig) && ~ishghandle(fig,'figure')
|
|
fig = get(fig,'parent');
|
|
end
|
|
|
|
designEval = isappdata(0,'CreatingGUIDEFigure') || (isscalar(fig)&&isprop(fig,'GUIDEFigure'));
|
|
end
|
|
|
|
if designEval
|
|
beforeChildren = findall(fig);
|
|
end
|
|
|
|
% evaluate the callback now
|
|
varargin{1} = gui_State.gui_Callback;
|
|
if nargout
|
|
[varargout{1:nargout}] = feval(varargin{:});
|
|
else
|
|
feval(varargin{:});
|
|
end
|
|
|
|
% Set serializable of objects created in the above callback to off in
|
|
% design time. Need to check whether figure handle is still valid in
|
|
% case the figure is deleted during the callback dispatching.
|
|
if designEval && ishghandle(fig)
|
|
set(setdiff(findall(fig),beforeChildren), 'Serializable','off');
|
|
end
|
|
else
|
|
if gui_State.gui_Singleton
|
|
gui_SingletonOpt = 'reuse';
|
|
else
|
|
gui_SingletonOpt = 'new';
|
|
end
|
|
|
|
% Check user passing 'visible' P/V pair first so that its value can be
|
|
% used by oepnfig to prevent flickering
|
|
gui_Visible = 'auto';
|
|
gui_VisibleInput = '';
|
|
for index=1:2:length(varargin)
|
|
if length(varargin) == index || ~ischar(varargin{index})
|
|
break;
|
|
end
|
|
|
|
% Recognize 'visible' P/V pair
|
|
len1 = min(length('visible'),length(varargin{index}));
|
|
len2 = min(length('off'),length(varargin{index+1}));
|
|
if ischar(varargin{index+1}) && strncmpi(varargin{index},'visible',len1) && len2 > 1
|
|
if strncmpi(varargin{index+1},'off',len2)
|
|
gui_Visible = 'invisible';
|
|
gui_VisibleInput = 'off';
|
|
elseif strncmpi(varargin{index+1},'on',len2)
|
|
gui_Visible = 'visible';
|
|
gui_VisibleInput = 'on';
|
|
end
|
|
end
|
|
end
|
|
|
|
% Open fig file with stored settings. Note: This executes all component
|
|
% specific CreateFunctions with an empty HANDLES structure.
|
|
|
|
|
|
% Do feval on layout code in m-file if it exists
|
|
gui_Exported = ~isempty(gui_State.gui_LayoutFcn);
|
|
% this application data is used to indicate the running mode of a GUIDE
|
|
% GUI to distinguish it from the design mode of the GUI in GUIDE. it is
|
|
% only used by actxproxy at this time.
|
|
setappdata(0,genvarname(['OpenGuiWhenRunning_', gui_State.gui_Name]),1);
|
|
if gui_Exported
|
|
gui_hFigure = feval(gui_State.gui_LayoutFcn, gui_SingletonOpt);
|
|
|
|
% make figure invisible here so that the visibility of figure is
|
|
% consistent in OpeningFcn in the exported GUI case
|
|
if isempty(gui_VisibleInput)
|
|
gui_VisibleInput = get(gui_hFigure,'Visible');
|
|
end
|
|
set(gui_hFigure,'Visible','off')
|
|
|
|
% openfig (called by local_openfig below) does this for guis without
|
|
% the LayoutFcn. Be sure to do it here so guis show up on screen.
|
|
movegui(gui_hFigure,'onscreen');
|
|
else
|
|
gui_hFigure = local_openfig(gui_State.gui_Name, gui_SingletonOpt, gui_Visible);
|
|
% If the figure has InGUIInitialization it was not completely created
|
|
% on the last pass. Delete this handle and try again.
|
|
if isappdata(gui_hFigure, 'InGUIInitialization')
|
|
delete(gui_hFigure);
|
|
gui_hFigure = local_openfig(gui_State.gui_Name, gui_SingletonOpt, gui_Visible);
|
|
end
|
|
end
|
|
if isappdata(0, genvarname(['OpenGuiWhenRunning_', gui_State.gui_Name]))
|
|
rmappdata(0,genvarname(['OpenGuiWhenRunning_', gui_State.gui_Name]));
|
|
end
|
|
|
|
% Set flag to indicate starting GUI initialization
|
|
setappdata(gui_hFigure,'InGUIInitialization',1);
|
|
|
|
% Fetch GUIDE Application options
|
|
gui_Options = getappdata(gui_hFigure,'GUIDEOptions');
|
|
% Singleton setting in the GUI MATLAB code file takes priority if different
|
|
gui_Options.singleton = gui_State.gui_Singleton;
|
|
|
|
if ~isappdata(gui_hFigure,'GUIOnScreen')
|
|
% Adjust background color
|
|
if gui_Options.syscolorfig
|
|
set(gui_hFigure,'Color', get(0,'DefaultUicontrolBackgroundColor'));
|
|
end
|
|
|
|
% Generate HANDLES structure and store with GUIDATA. If there is
|
|
% user set GUI data already, keep that also.
|
|
data = guidata(gui_hFigure);
|
|
handles = guihandles(gui_hFigure);
|
|
if ~isempty(handles)
|
|
if isempty(data)
|
|
data = handles;
|
|
else
|
|
names = fieldnames(handles);
|
|
for k=1:length(names)
|
|
data.(char(names(k)))=handles.(char(names(k)));
|
|
end
|
|
end
|
|
end
|
|
guidata(gui_hFigure, data);
|
|
end
|
|
|
|
% Apply input P/V pairs other than 'visible'
|
|
for index=1:2:length(varargin)
|
|
if length(varargin) == index || ~ischar(varargin{index})
|
|
break;
|
|
end
|
|
|
|
len1 = min(length('visible'),length(varargin{index}));
|
|
if ~strncmpi(varargin{index},'visible',len1)
|
|
try set(gui_hFigure, varargin{index}, varargin{index+1}), catch break, end
|
|
end
|
|
end
|
|
|
|
% If handle visibility is set to 'callback', turn it on until finished
|
|
% with OpeningFcn
|
|
gui_HandleVisibility = get(gui_hFigure,'HandleVisibility');
|
|
if strcmp(gui_HandleVisibility, 'callback')
|
|
set(gui_hFigure,'HandleVisibility', 'on');
|
|
end
|
|
|
|
feval(gui_State.gui_OpeningFcn, gui_hFigure, [], guidata(gui_hFigure), varargin{:});
|
|
|
|
if isscalar(gui_hFigure) && ishghandle(gui_hFigure)
|
|
% Handle the default callbacks of predefined toolbar tools in this
|
|
% GUI, if any
|
|
guidemfile('restoreToolbarToolPredefinedCallback',gui_hFigure);
|
|
|
|
% Update handle visibility
|
|
set(gui_hFigure,'HandleVisibility', gui_HandleVisibility);
|
|
|
|
% Call openfig again to pick up the saved visibility or apply the
|
|
% one passed in from the P/V pairs
|
|
if ~gui_Exported
|
|
gui_hFigure = local_openfig(gui_State.gui_Name, 'reuse',gui_Visible);
|
|
elseif ~isempty(gui_VisibleInput)
|
|
set(gui_hFigure,'Visible',gui_VisibleInput);
|
|
end
|
|
if strcmpi(get(gui_hFigure, 'Visible'), 'on')
|
|
figure(gui_hFigure);
|
|
|
|
if gui_Options.singleton
|
|
setappdata(gui_hFigure,'GUIOnScreen', 1);
|
|
end
|
|
end
|
|
|
|
% Done with GUI initialization
|
|
if isappdata(gui_hFigure,'InGUIInitialization')
|
|
rmappdata(gui_hFigure,'InGUIInitialization');
|
|
end
|
|
|
|
% If handle visibility is set to 'callback', turn it on until
|
|
% finished with OutputFcn
|
|
gui_HandleVisibility = get(gui_hFigure,'HandleVisibility');
|
|
if strcmp(gui_HandleVisibility, 'callback')
|
|
set(gui_hFigure,'HandleVisibility', 'on');
|
|
end
|
|
gui_Handles = guidata(gui_hFigure);
|
|
else
|
|
gui_Handles = [];
|
|
end
|
|
|
|
if nargout
|
|
[varargout{1:nargout}] = feval(gui_State.gui_OutputFcn, gui_hFigure, [], gui_Handles);
|
|
else
|
|
feval(gui_State.gui_OutputFcn, gui_hFigure, [], gui_Handles);
|
|
end
|
|
|
|
if isscalar(gui_hFigure) && ishghandle(gui_hFigure)
|
|
set(gui_hFigure,'HandleVisibility', gui_HandleVisibility);
|
|
end
|
|
end
|
|
|
|
function gui_hFigure = local_openfig(name, singleton, visible)
|
|
|
|
% openfig with three arguments was new from R13. Try to call that first, if
|
|
% failed, try the old openfig.
|
|
if nargin('openfig') == 2
|
|
% OPENFIG did not accept 3rd input argument until R13,
|
|
% toggle default figure visible to prevent the figure
|
|
% from showing up too soon.
|
|
gui_OldDefaultVisible = get(0,'defaultFigureVisible');
|
|
set(0,'defaultFigureVisible','off');
|
|
gui_hFigure = matlab.hg.internal.openfigLegacy(name, singleton);
|
|
set(0,'defaultFigureVisible',gui_OldDefaultVisible);
|
|
else
|
|
% Call version of openfig that accepts 'auto' option"
|
|
gui_hFigure = matlab.hg.internal.openfigLegacy(name, singleton, visible);
|
|
% %workaround for CreateFcn not called to create ActiveX
|
|
% peers=findobj(findall(allchild(gui_hFigure)),'type','uicontrol','style','text');
|
|
% for i=1:length(peers)
|
|
% if isappdata(peers(i),'Control')
|
|
% actxproxy(peers(i));
|
|
% end
|
|
% end
|
|
end
|
|
|
|
function result = local_isInvokeActiveXCallback(gui_State, varargin)
|
|
|
|
try
|
|
result = ispc && iscom(varargin{1}) ...
|
|
&& isequal(varargin{1},gcbo);
|
|
catch
|
|
result = false;
|
|
end
|
|
|
|
function result = local_isInvokeHGCallback(gui_State, varargin)
|
|
|
|
try
|
|
fhandle = functions(gui_State.gui_Callback);
|
|
result = ~isempty(findstr(gui_State.gui_Name,fhandle.file)) || ...
|
|
(ischar(varargin{1}) ...
|
|
&& isequal(ishghandle(varargin{2}), 1) ...
|
|
&& (~isempty(strfind(varargin{1},[get(varargin{2}, 'Tag'), '_'])) || ...
|
|
~isempty(strfind(varargin{1}, '_CreateFcn'))) );
|
|
catch
|
|
result = false;
|
|
end
|
|
|
|
|