--- a
+++ b/combinedDeepLearningActiveContour/functions/tightfig.m
@@ -0,0 +1,120 @@
+function hfig = tightfig(hfig)
+% tightfig: Alters a figure so that it has the minimum size necessary to
+% enclose all axes in the figure without excess space around them.
+% 
+% Note that tightfig will expand the figure to completely encompass all
+% axes if necessary. If any 3D axes are present which have been zoomed,
+% tightfig will produce an error, as these cannot easily be dealt with.
+% 
+% hfig - handle to figure, if not supplied, the current figure will be used
+% instead.
+
+    if nargin == 0
+        hfig = gcf;
+    end
+
+    % There can be an issue with tightfig when the user has been modifying
+    % the contnts manually, the code below is an attempt to resolve this,
+    % but it has not yet been satisfactorily fixed
+%     origwindowstyle = get(hfig, 'WindowStyle');
+    set(hfig, 'WindowStyle', 'normal');
+    
+    % 1 point is 0.3528 mm for future use
+
+    % get all the axes handles note this will also fetch legends and
+    % colorbars as well
+    hax = findall(hfig, 'type', 'axes');
+    
+    % get the original axes units, so we can change and reset these again
+    % later
+    origaxunits = get(hax, 'Units');
+    
+    % change the axes units to cm
+    set(hax, 'Units', 'centimeters');
+    
+    % get various position parameters of the axes
+    if numel(hax) > 1
+%         fsize = cell2mat(get(hax, 'FontSize'));
+        ti = cell2mat(get(hax,'TightInset'));
+        pos = cell2mat(get(hax, 'Position'));
+    else
+%         fsize = get(hax, 'FontSize');
+        ti = get(hax,'TightInset');
+        pos = get(hax, 'Position');
+    end
+    
+    % ensure very tiny border so outer box always appears
+    ti(ti < 0.1) = 0.15;
+    
+    % we will check if any 3d axes are zoomed, to do this we will check if
+    % they are not being viewed in any of the 2d directions
+    views2d = [0,90; 0,0; 90,0];
+    
+    for i = 1:numel(hax)
+        
+        set(hax(i), 'LooseInset', ti(i,:));
+%         set(hax(i), 'LooseInset', [0,0,0,0]);
+        
+        % get the current viewing angle of the axes
+        [az,el] = view(hax(i));
+        
+        % determine if the axes are zoomed
+        iszoomed = strcmp(get(hax(i), 'CameraViewAngleMode'), 'manual');
+        
+        % test if we are viewing in 2d mode or a 3d view
+        is2d = all(bsxfun(@eq, [az,el], views2d), 2);
+               
+        if iszoomed && ~any(is2d)
+           error('TIGHTFIG:haszoomed3d', 'Cannot make figures containing zoomed 3D axes tight.') 
+        end
+        
+    end
+    
+    % we will move all the axes down and to the left by the amount
+    % necessary to just show the bottom and leftmost axes and labels etc.
+    moveleft = min(pos(:,1) - ti(:,1));
+    
+    movedown = min(pos(:,2) - ti(:,2));
+    
+    % we will also alter the height and width of the figure to just
+    % encompass the topmost and rightmost axes and lables
+    figwidth = max(pos(:,1) + pos(:,3) + ti(:,3) - moveleft);
+    
+    figheight = max(pos(:,2) + pos(:,4) + ti(:,4) - movedown);
+    
+    % move all the axes
+    for i = 1:numel(hax)
+        
+        set(hax(i), 'Position', [pos(i,1:2) - [moveleft,movedown], pos(i,3:4)]);
+        
+    end
+    
+    origfigunits = get(hfig, 'Units');
+    
+    set(hfig, 'Units', 'centimeters');
+    
+    % change the size of the figure
+    figpos = get(hfig, 'Position');
+    
+    set(hfig, 'Position', [figpos(1), figpos(2), figwidth, figheight]);
+    
+    % change the size of the paper
+    set(hfig, 'PaperUnits','centimeters');
+    set(hfig, 'PaperSize', [figwidth, figheight]);
+    set(hfig, 'PaperPositionMode', 'manual');
+    set(hfig, 'PaperPosition',[0 0 figwidth figheight]);    
+    
+    % reset to original units for axes and figure 
+    if ~iscell(origaxunits)
+        origaxunits = {origaxunits};
+    end
+
+    for i = 1:numel(hax)
+        set(hax(i), 'Units', origaxunits{i});
+    end
+
+    set(hfig, 'Units', origfigunits);
+    
+%      set(hfig, 'WindowStyle', origwindowstyle);
+     
+end
\ No newline at end of file