2021-06-29 15:44:28 +02:00
|
|
|
function figure_handle = getFigureByTag(tag_name, varargin)
|
|
|
|
% figure_handle = getFigureByTag(tag_name, varargin)
|
|
|
|
%
|
|
|
|
% Example code:
|
|
|
|
% f_h = getFigureByTag('survivalMeasurement','Name','Survival')
|
|
|
|
%
|
|
|
|
% clf(f_h);
|
|
|
|
% a_h = gca(f_h);
|
|
|
|
% xlim(a_h,[10,100]);
|
|
|
|
% % custom position
|
|
|
|
% f_h.Position = [4052.3 719.67 560 420];
|
|
|
|
|
|
|
|
assert(nargin>=1 && ischar(tag_name),'You must specify ``tag_name'' as a string.');
|
|
|
|
|
|
|
|
f_h = findobj('type','figure','tag',tag_name);
|
|
|
|
|
|
|
|
if isempty(f_h)
|
|
|
|
f_h = figure('Tag',tag_name,varargin{:});
|
|
|
|
|
|
|
|
defaultNewFigProperties = {'Color','w','NumberTitle','off','Name',sprintf('Fig. %d',f_h.Number)};
|
|
|
|
|
|
|
|
varargin = [defaultNewFigProperties,varargin];
|
|
|
|
else
|
|
|
|
f_h = f_h(1);
|
|
|
|
end
|
|
|
|
|
|
|
|
if ~isempty(varargin)
|
|
|
|
set(f_h,varargin{:});
|
|
|
|
end
|
|
|
|
|
|
|
|
addCopyButton(f_h);
|
|
|
|
|
|
|
|
if nargout > 0
|
|
|
|
figure_handle = f_h;
|
|
|
|
else
|
|
|
|
set(groot,'CurrentFigure',f_h);
|
|
|
|
end
|
|
|
|
|
|
|
|
end
|
|
|
|
|
|
|
|
function addCopyButton(f_h)
|
|
|
|
|
|
|
|
if(strcmp(f_h.ToolBar,'none'))
|
|
|
|
return
|
|
|
|
end
|
|
|
|
|
|
|
|
tb = findall(f_h,'Type','uitoolbar');
|
|
|
|
|
|
|
|
pt = findall(tb, 'tag', 'Custom.CopyPlot' );
|
|
|
|
if isempty(pt)
|
|
|
|
pt = uipushtool(tb);
|
|
|
|
else
|
|
|
|
pt = pt(1);
|
|
|
|
end
|
|
|
|
|
|
|
|
cdata = zeros(16,16,3);
|
|
|
|
|
|
|
|
% Evernote Logo
|
|
|
|
% cdata(:,:,1) =[255 NaN NaN NaN NaN 99 11 27 175 NaN NaN NaN NaN NaN NaN 255
|
|
|
|
% NaN NaN NaN 251 93 14 0 0 0 66 70 106 210 NaN NaN NaN
|
|
|
|
% NaN NaN NaN 42 0 43 0 0 0 0 0 0 20 185 NaN NaN
|
|
|
|
% NaN 243 56 0 42 82 0 0 0 0 0 0 0 45 NaN NaN
|
|
|
|
% NaN 156 44 64 113 65 0 0 0 0 0 0 0 32 NaN NaN
|
|
|
|
% 136 9 26 28 11 0 0 0 0 0 0 0 0 10 188 NaN
|
|
|
|
% 132 0 0 0 0 0 0 0 0 0 136 175 16 0 133 NaN
|
|
|
|
% NaN 28 0 0 0 0 0 0 0 0 152 238 50 0 124 NaN
|
|
|
|
% NaN 58 0 0 0 0 0 0 0 0 0 9 0 0 71 NaN
|
|
|
|
% NaN 175 0 0 0 0 0 61 15 0 0 0 0 0 100 NaN
|
|
|
|
% NaN NaN 143 12 0 0 0 210 195 87 17 0 0 0 126 NaN
|
|
|
|
% NaN NaN NaN 183 118 50 150 NaN NaN 110 219 78 0 0 160 NaN
|
|
|
|
% NaN NaN NaN NaN NaN NaN NaN 191 0 35 NaN 150 0 23 NaN NaN
|
|
|
|
% NaN NaN NaN NaN NaN NaN NaN 124 0 172 NaN 81 0 93 NaN NaN
|
|
|
|
% 255 NaN NaN NaN NaN NaN NaN 183 0 0 0 0 51 228 NaN 245
|
|
|
|
% 253 254 NaN NaN NaN NaN NaN NaN 156 63 45 100 NaN NaN 255 255]/255.;
|
|
|
|
%
|
|
|
|
%
|
|
|
|
% cdata(:,:,2) = [255 255 255 255 255 216 166 171 225 229 218 229 247 255 255 255
|
|
|
|
% 255 255 255 255 201 166 159 157 167 188 189 200 243 255 255 255
|
|
|
|
% 237 238 255 181 159 183 164 170 163 158 160 157 169 233 248 250
|
|
|
|
% 224 235 188 140 182 195 161 168 168 168 168 169 147 186 244 240
|
|
|
|
% 255 226 175 185 207 189 161 168 168 168 168 168 159 179 249 249
|
|
|
|
% 227 172 172 179 172 163 169 168 168 170 163 155 160 173 231 237
|
|
|
|
% 215 161 163 165 166 168 168 168 168 162 215 228 172 163 209 219
|
|
|
|
% 248 178 159 168 168 168 168 168 168 159 220 249 185 158 208 222
|
|
|
|
% 249 192 151 169 168 168 169 160 163 172 163 159 166 167 194 204
|
|
|
|
% 246 229 155 157 168 169 159 188 174 154 162 167 166 166 202 214
|
|
|
|
% 212 231 218 168 157 153 165 255 242 190 171 159 167 166 207 220
|
|
|
|
% 218 203 251 243 206 181 230 210 208 207 242 196 154 168 223 232
|
|
|
|
% 255 224 232 250 237 214 244 194 152 178 255 223 145 175 250 252
|
|
|
|
% 255 255 244 239 222 213 240 214 149 228 254 199 136 203 244 232
|
|
|
|
% 255 255 255 246 231 246 246 232 165 159 167 147 184 253 254 242
|
|
|
|
% 253 254 255 255 254 255 255 255 231 183 178 199 249 255 255 255]/255.;
|
|
|
|
%
|
|
|
|
%
|
|
|
|
% cdata(:,:,3) = [255 255 255 255 255 117 38 50 187 211 170 190 234 255 255 255
|
|
|
|
% 255 254 255 255 120 51 27 20 39 97 98 122 220 255 255 255
|
|
|
|
% 238 252 246 73 22 71 37 49 35 20 24 18 49 196 231 231
|
|
|
|
% 232 242 86 0 78 108 29 45 45 45 45 46 0 82 214 201
|
|
|
|
% 255 175 63 85 139 98 27 45 45 45 45 45 23 72 233 231
|
|
|
|
% 167 51 57 72 55 32 47 45 45 50 34 14 27 57 201 218
|
|
|
|
% 154 30 33 38 39 45 45 45 45 31 157 188 53 34 153 180
|
|
|
|
% 234 67 24 45 45 45 45 44 45 24 169 241 83 20 146 182
|
|
|
|
% 241 99 4 48 45 45 47 28 35 53 32 26 39 44 104 127
|
|
|
|
% 238 192 14 20 45 47 27 97 56 10 29 44 41 40 127 158
|
|
|
|
% 214 253 169 37 20 16 34 218 207 105 55 23 42 40 147 182
|
|
|
|
% 218 214 241 201 138 71 177 225 181 130 224 107 12 45 175 197
|
|
|
|
% 255 233 202 218 212 132 230 196 27 61 255 172 0 64 240 242
|
|
|
|
% 255 255 219 197 176 160 237 143 0 195 245 110 0 123 230 230
|
|
|
|
% 255 255 255 227 197 241 244 202 36 24 39 0 81 228 242 245
|
|
|
|
% 253 254 255 255 254 255 255 255 191 78 71 121 221 255 255 255]/255.;
|
|
|
|
|
|
|
|
%OneNote logo
|
|
|
|
|
|
|
|
cdata(:,:,1) =[255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
|
|
|
|
255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
|
|
|
|
255 255 255 255 245 213 213 213 213 213 213 213 184 184 215 255
|
|
|
|
255 255 255 255 241 213 213 213 213 213 213 213 184 184 208 255
|
|
|
|
255 233 204 204 194 176 176 185 213 213 213 213 184 184 208 255
|
|
|
|
255 154 101 101 101 101 101 103 213 213 213 206 162 162 193 255
|
|
|
|
255 152 101 183 116 152 115 101 213 213 213 206 162 162 193 255
|
|
|
|
255 152 101 207 189 178 122 101 213 213 213 206 162 162 193 255
|
|
|
|
255 152 101 199 152 224 122 101 213 213 213 195 128 128 170 255
|
|
|
|
255 152 101 166 101 183 115 101 213 213 213 195 128 128 170 255
|
|
|
|
255 154 101 101 101 101 101 103 213 213 213 195 128 128 170 255
|
|
|
|
255 233 204 204 194 176 176 185 213 213 213 183 95 95 148 255
|
|
|
|
255 255 255 255 241 213 213 213 213 213 213 183 94 94 148 255
|
|
|
|
255 255 255 255 245 213 213 213 213 213 213 183 94 94 163 255
|
|
|
|
255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
|
|
|
|
255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255]/255.;
|
|
|
|
|
|
|
|
|
|
|
|
cdata(:,:,2) =[255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
|
|
|
|
255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
|
|
|
|
255 255 255 255 219 112 110 110 110 110 110 134 84 84 158 255
|
|
|
|
255 255 255 255 207 110 110 110 110 110 110 134 84 84 141 255
|
|
|
|
255 222 178 178 146 81 81 88 110 110 110 134 84 84 141 255
|
|
|
|
255 102 23 23 23 23 23 24 110 110 110 125 58 58 123 255
|
|
|
|
255 100 23 147 46 100 44 23 110 110 110 125 58 58 123 255
|
|
|
|
255 100 23 183 156 139 55 23 110 110 110 125 58 58 123 255
|
|
|
|
255 100 23 170 99 208 55 23 110 110 110 119 38 38 109 255
|
|
|
|
255 100 23 121 23 146 44 23 110 110 110 119 38 38 109 255
|
|
|
|
255 102 23 23 23 23 23 24 110 110 110 119 38 38 109 255
|
|
|
|
255 222 178 178 146 81 81 88 110 110 110 118 37 37 109 255
|
|
|
|
255 255 255 255 207 110 110 110 110 110 110 118 37 37 110 255
|
|
|
|
255 255 255 255 219 112 110 110 110 110 110 118 37 37 131 255
|
|
|
|
255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
|
|
|
|
255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255]/255.;
|
|
|
|
|
|
|
|
|
|
|
|
cdata(:,:,3) =[255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
|
|
|
|
255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
|
|
|
|
255 255 255 255 255 255 255 255 255 255 255 246 229 229 240 255
|
|
|
|
255 255 255 255 255 255 255 255 255 255 255 246 229 229 238 255
|
|
|
|
255 242 224 224 224 224 224 232 255 255 255 246 229 229 238 255
|
|
|
|
255 194 163 163 163 163 163 164 255 255 255 244 223 223 234 255
|
|
|
|
255 194 163 212 172 194 171 163 255 255 255 244 223 223 234 255
|
|
|
|
255 194 163 226 216 209 176 163 255 255 255 244 223 223 234 255
|
|
|
|
255 194 163 221 193 236 176 163 255 255 255 240 209 209 224 255
|
|
|
|
255 194 163 202 163 212 171 163 255 255 255 240 209 209 224 255
|
|
|
|
255 194 163 163 163 163 163 164 255 255 255 240 209 209 224 255
|
|
|
|
255 242 224 224 224 224 224 232 255 255 255 223 161 161 192 255
|
|
|
|
255 255 255 255 255 255 255 255 255 255 255 223 160 160 192 255
|
|
|
|
255 255 255 255 255 255 255 255 255 255 255 223 160 160 201 255
|
|
|
|
255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
|
|
|
|
255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255]/255.;
|
|
|
|
|
|
|
|
|
|
|
|
pt.Tag = 'Custom.CopyPlot';
|
|
|
|
pt.CData = cdata;
|
|
|
|
pt.Separator = true;
|
|
|
|
pt.ClickedCallback = @copyToClipboard;
|
|
|
|
|
|
|
|
end
|
|
|
|
|
|
|
|
function copyToClipboard(~,~)
|
|
|
|
fig_h = get(get(gcbo,'Parent'),'Parent');
|
|
|
|
if strcmp(fig_h.WindowStyle,'docked')
|
|
|
|
if ismac || ispc
|
|
|
|
matlab.graphics.internal.copyFigureHelper(fig_h);
|
|
|
|
else
|
|
|
|
%warning('Copy function to the clipboard only works if the figure is undocked.');
|
|
|
|
Helper.screencapture(fig_h,[],'clipboard');
|
|
|
|
end
|
|
|
|
else
|
|
|
|
pos = fig_h.Position;
|
2021-07-03 10:19:27 +02:00
|
|
|
Helper.screencapture(fig_h,[],'clipboard','position',[7,7,pos(3)-2,pos(4)]);
|
2021-06-29 15:44:28 +02:00
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
|
|
|