source: rotateflip.m @ 2

Last change on this file since 2 was 2, checked in by tjniskan, 12 years ago
  • Imported first revision
File size: 8.1 KB
Line 
1function Out = rotateflip(DATA,squareImages)
2% ROTATEFLIP - GUI for rotating and flipping files
3%   
4%
5% Synopsis:
6%
7% Description:
8%
9% Examples:
10%
11% See also:
12%
13
14% Juha-Pekka Niskanen - <Juha-Pekka.Niskanen@uku.fi>  -  26.05.2006
15% Department of Biomedical NMR, University of Kuopio
16%
17% Last modified - 30.10.2006 - (J-P N)
18
19% Public variables
20H = [];
21Out = [];
22Dat = [];
23cancel = true;
24
25% Get file names and paths
26for ii=1:length(DATA)
27  Dat.fnames{ii} = DATA{ii}.HDR.fname;
28  Dat.fpaths{ii} = DATA{ii}.HDR.fpath;
29  Dat.fullfiles{ii} = [DATA{ii}.HDR.fpath,...
30                      DATA{ii}.HDR.fname];
31end
32H = l_DrawGUI;
33
34% Wait for quit
35waitfor(H.FH)
36if cancel
37  clear H Dat cancel
38  return
39end
40
41function H=l_DrawGUI()
42
43%% Load default font and colors
44FigColor=get(0,'DefaultUicontrolBackgroundcolor');
45GD=gui_defaults;
46GD.col.mainfig = FigColor;
47fig_h = 305;
48fig_w = 500;
49scrsz = get(0,'screensize');
50fig_pos = [scrsz(3)/2-fig_w/2 scrsz(4)/2-fig_h/2 fig_w fig_h];
51
52%% The main figure
53H.FH = figure('position',fig_pos,...
54              'Units','Pixel', ...
55              'Name','Rotate/Flip images', ...
56              'Numbertitle','off', ...
57              'Tag','im_rotate_gui', ...
58              'Color',FigColor, ...
59              'Toolbar','none', ...
60              'Menubar','none', ...
61              'DoubleBuffer','on', ...
62              'DockControls','off',...
63              'renderer','painters',...
64              'KeyPressFcn','',...
65              'resize','off',...
66              'windowstyle','modal');
67
68% Options uipanel
69H.OPTUIPANEL = uipanel('parent',H.FH,...
70                       'units','pixel',...
71                       'position',[5 40 fig_w-10 fig_h-45]);
72
73% Rotation uipanel
74H.ROTUIGRP = uibuttongroup('parent',H.OPTUIPANEL,...
75                           'units','pixel',...
76                           'position',[10 135 110 105],...
77                           'title','Rotation (CCW)',...
78                           'SelectionChangeFcn',@l_SelectionChanged);
79
80% Rotation Radio buttons
81H.ROTNONE=uicontrol('parent',H.ROTUIGRP,...
82                    'units','pixel',...
83                    'style','radio',...
84                    'position',[20 70 80 15],...
85                    'string','none',...
86                    'value',1);
87tmp=get(H.ROTNONE,'position');
88H.ROT90=uicontrol('parent',H.ROTUIGRP,...
89                  'units','pixel',...
90                  'style','radio',...
91                  'position',[tmp(1) tmp(2)-20 tmp(3) tmp(4)],...
92                  'string',['90',char(186)],...
93                  'value',0);
94tmp=get(H.ROT90,'position');
95H.ROT180=uicontrol('parent',H.ROTUIGRP,...
96                   'units','pixel',...
97                   'style','radio',...
98                   'position',[tmp(1) tmp(2)-20 tmp(3) tmp(4)],...
99                   'string',['180',char(186)],...
100                   'value',0);
101tmp=get(H.ROT180,'position');
102H.ROT270=uicontrol('parent',H.ROTUIGRP,...
103                   'units','pixel',...
104                   'style','radio',...
105                   'position',[tmp(1) tmp(2)-20 tmp(3) tmp(4)],...
106                   'string',['270',char(186)],...
107                   'value',0);
108if ~squareImages
109  set([H.ROT90,H.ROT270],'enable','off')
110end
111
112% Flip uipanel
113tmp = get(H.ROTUIGRP,'position');
114H.FLIPUIGRP = uibuttongroup('parent',H.OPTUIPANEL,...
115                            'units','pixel',...
116                            'position',[tmp(1) tmp(2)-85-15 tmp(3) 85],...
117                            'title','Flipping',...
118                            'SelectionChangeFcn',@l_SelectionChanged);
119
120% Flipping radio buttons
121H.FLIPNONE=uicontrol('parent',H.FLIPUIGRP,...
122                     'units','pixel',...
123                     'style','radio',...
124                     'position',[20 50 80 15],...
125                     'string','none',...
126                     'value',1);
127tmp=get(H.FLIPNONE,'position');
128H.FLIPUD=uicontrol('parent',H.FLIPUIGRP,...
129                   'units','pixel',...
130                   'style','radio',...
131                   'position',[tmp(1) tmp(2)-20 tmp(3) tmp(4)],...
132                   'string','Up/Down',...
133                   'value',0);
134tmp=get(H.FLIPUD,'position');
135H.FLIPLR=uicontrol('parent',H.FLIPUIGRP,...
136                   'units','pixel',...
137                   'style','radio',...
138                   'position',[tmp(1) tmp(2)-20 tmp(3) tmp(4)],...
139                   'string','Left/Right',...
140                   'value',0);
141
142% File listbox
143tmp = get(H.FLIPUIGRP,'position');
144H.FILELBOX = uicontrol('parent',H.OPTUIPANEL,...
145                       'units','pixel',...
146                       'style','listbox',...
147                       'position',[tmp(1)+tmp(3)+10 tmp(2) fig_w-tmp(1)-tmp(3)-35 ...
148                   200],...
149                       'backgroundcolor','w',...
150                       'string',Dat.fullfiles,...
151                       'Min',0,'Max',2);
152tmp = get(H.FILELBOX,'position');
153files_tx = uicontrol('parent',H.OPTUIPANEL,...
154                     'units','pixel',...
155                     'style','text',...
156                     'position',[tmp(1) tmp(2)+tmp(4) 150 12],...
157                     'string','Files (slices)',...
158                     'horizontalalign','left',...
159                     'fontweig','bold');
160
161% Select all and select none buttons
162tmp = get(H.FILELBOX,'position');
163H.SELALL = uicontrol('parent',H.OPTUIPANEL,...
164                     'units','pixel',...
165                     'style','pushbutton',...
166                     'position',[tmp(1) tmp(2)-25-5 tmp(3)/2-5 25],...
167                     'string','Select All',...
168                     'callback',@l_SelectAll);
169tmp = get(H.SELALL,'position');
170H.SELNONE = uicontrol('parent',H.OPTUIPANEL,...
171                      'units','pixel',...
172                      'style','pushbutton',...
173                      'position',[tmp(1)+tmp(3)+10 tmp(2) tmp(3) 25],...
174                      'string','Select None',...
175                      'userdata',H.FILELBOX,...
176                      'callback','set(get(gcbo,''userdata''),''value'',[])');
177
178% OK button
179H.OKBTN = uicontrol('parent',H.FH,...
180                    'units','pixel',...
181                    'position',[350 5 70 30],...
182                    'string','OK',...
183                    'callback',@l_OKCallBack);
184
185% Cancel button
186tmp = get(H.OKBTN,'position');
187H.CANCELTN = uicontrol('parent',H.FH,...
188                       'units','pixel',...
189                       'position',[tmp(1)+tmp(3)+5 tmp(2) tmp(3) tmp(4)],...
190                       'string','Cancel',...
191                       'callback','delete(gcbf)');
192
193end % function l_DrawGUI()
194
195
196%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
197%
198% Select All Files
199%
200%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
201function l_SelectAll(h,evd)
202  lbox_length = length(get(H.FILELBOX,'string'));
203  set(H.FILELBOX,'value',1:lbox_length);
204end % function l_SelectAll(h,
205
206
207%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
208%
209% Selection Changed
210%
211%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
212function l_SelectionChanged(h,evd)
213
214if h==H.ROTUIGRP
215 
216  if evd.NewValue==H.ROTNONE
217    set([H.FLIPNONE,H.FLIPUD,H.FLIPLR],'enable','on')
218  else
219    set([H.FLIPNONE,H.FLIPUD,H.FLIPLR],'enable','off')
220  end
221 
222elseif h==H.FLIPUIGRP
223 
224  if evd.NewValue==H.FLIPNONE
225    if ~squareImages
226      set([H.ROTNONE,H.ROT180],'enable','on')
227    else
228      set([H.ROTNONE,H.ROT90,H.ROT180,H.ROT270],'enable','on')
229    end
230  else
231    set([H.ROTNONE,H.ROT90,H.ROT180,H.ROT270],'enable','off')
232  end
233 
234end
235
236end % function
237
238
239
240%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
241%
242% OK Selected
243%
244%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
245function l_OKCallBack(h,evd)
246
247cancel = false;
248val = get(H.FILELBOX,'value');
249str = get(H.FILELBOX,'string');
250RotSelObject = get(H.ROTUIGRP,'SelectedObject');
251FlipSelObject = get(H.FLIPUIGRP,'SelectedObject');
252
253%% Flipping vector:
254%% 0 = none
255%% 1 = Up/Down
256%% 2 = Left/Right
257Out.Flip = zeros(1,length(str));
258if ~isempty(val)
259  if FlipSelObject==H.FLIPUD
260    Out.Flip(val)=1;
261  elseif FlipSelObject==H.FLIPLR
262    Out.Flip(val)=2;
263  end
264end
265
266%% Rotate vector
267%% 0 = none
268%% 1 = 90
269%% 2 = 180
270%% 3 = 270
271Out.Rotate = zeros(1,length(str));
272if ~isempty(val)
273  if RotSelObject==H.ROT90
274    Out.Rotate(val)=1;
275  elseif RotSelObject==H.ROT180
276    Out.Rotate(val)=2;
277  elseif RotSelObject==H.ROT270
278    Out.Rotate(val)=3;
279  end
280end
281
282%% Delete figure window
283delete(H.FH)
284
285end % function l_OKCallBack(h,
286
287end
Note: See TracBrowser for help on using the repository browser.

Powered by Trac 1.0.9.Copyright © Juha-Pekka Niskanen 2008