annotate saveeps.m @ 311:713b125038a3 feature/beams

Fixed function names in renamed files.
author Jonatan Werpers <jonatan@werpers.com>
date Fri, 23 Sep 2016 14:59:55 +0200
parents a2b95af82f68
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
43
a2b95af82f68 Corrected description of saveeps.m
Jonatan Werpers <jonatan@werpers.com>
parents: 34
diff changeset
1 % Saves a figure to an .eps file with corrected bounding box.
a2b95af82f68 Corrected description of saveeps.m
Jonatan Werpers <jonatan@werpers.com>
parents: 34
diff changeset
2 % e.g. saveeps(gcf,'myfig.eps')
0
48b6fb693025 Initial commit.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
3 function saveeps(handle,filename)
48b6fb693025 Initial commit.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
4 if length(filename) < 4 || ~strcmp(filename(end-3:end),'.eps')
48b6fb693025 Initial commit.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
5 filename = [filename '.eps'];
48b6fb693025 Initial commit.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
6 end
48b6fb693025 Initial commit.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
7
48b6fb693025 Initial commit.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
8 handle_units = handle.Units; % Save the current units to be able to restore
48b6fb693025 Initial commit.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
9
48b6fb693025 Initial commit.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
10 % Copy size of figure in centimeters to a place where saveas will honor it
48b6fb693025 Initial commit.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
11 handle.Units = 'centimeters';
48b6fb693025 Initial commit.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
12 handle.PaperUnits = 'centimeters';
48b6fb693025 Initial commit.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
13 handle.PaperPosition(3:4) = handle.Position(3:4);
48b6fb693025 Initial commit.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
14
48b6fb693025 Initial commit.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
15 % Save as a bugged eps file.
48b6fb693025 Initial commit.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
16 saveas(handle,filename,'epsc');
48b6fb693025 Initial commit.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
17
48b6fb693025 Initial commit.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
18 handle.Units = handle_units; % Restore the old units
48b6fb693025 Initial commit.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
19
48b6fb693025 Initial commit.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
20 % Correct the buggy eps file
48b6fb693025 Initial commit.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
21 correct_stupid_matlab_bug(filename);
48b6fb693025 Initial commit.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
22 end
48b6fb693025 Initial commit.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
23
48b6fb693025 Initial commit.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
24 % Corrects the format of an eps file so that the bounding box is defined at the top of the file instead of
48b6fb693025 Initial commit.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
25 % at the bottom.
48b6fb693025 Initial commit.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
26 function correct_stupid_matlab_bug(filename)
48b6fb693025 Initial commit.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
27 contents = fileread(filename);
48b6fb693025 Initial commit.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
28 lines = strsplit(contents,'\n');
48b6fb693025 Initial commit.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
29
48b6fb693025 Initial commit.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
30 % Find the line
48b6fb693025 Initial commit.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
31 pagel = findPrefix(lines,'%%Pages:');
48b6fb693025 Initial commit.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
32 boundl = findPrefix(lines,'%%BoundingBox:');
48b6fb693025 Initial commit.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
33
34
2b4f1d3e5630 Imporved error handling in saveeps. Fixed bug with vector fields in struct2string.
Jonatan Werpers <jonatan@werpers.com>
parents: 0
diff changeset
34
0
48b6fb693025 Initial commit.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
35 if ~(length(pagel) == 2 && length(boundl) == 2)
34
2b4f1d3e5630 Imporved error handling in saveeps. Fixed bug with vector fields in struct2string.
Jonatan Werpers <jonatan@werpers.com>
parents: 0
diff changeset
36 warning('Undexpected number of found lines: %d , %d\nNot correcting the file',pagel, boundl);
2b4f1d3e5630 Imporved error handling in saveeps. Fixed bug with vector fields in struct2string.
Jonatan Werpers <jonatan@werpers.com>
parents: 0
diff changeset
37 return
0
48b6fb693025 Initial commit.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
38 end
48b6fb693025 Initial commit.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
39
48b6fb693025 Initial commit.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
40 if ~(strcmp(lines{pagel(1)},'%%Pages: (atend)') && strcmp(lines{boundl(1)},'%%BoundingBox: (atend)'))
34
2b4f1d3e5630 Imporved error handling in saveeps. Fixed bug with vector fields in struct2string.
Jonatan Werpers <jonatan@werpers.com>
parents: 0
diff changeset
41 warning('Does the file really contain the error?\nNot correcting the file');
2b4f1d3e5630 Imporved error handling in saveeps. Fixed bug with vector fields in struct2string.
Jonatan Werpers <jonatan@werpers.com>
parents: 0
diff changeset
42 return
0
48b6fb693025 Initial commit.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
43 end
48b6fb693025 Initial commit.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
44
48b6fb693025 Initial commit.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
45 % Overwrite the nasty lines with the nice ones.
48b6fb693025 Initial commit.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
46 lines{pagel(1)} = lines{pagel(2)};
48b6fb693025 Initial commit.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
47 lines{boundl(1)} = lines{boundl(2)};
48b6fb693025 Initial commit.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
48
48b6fb693025 Initial commit.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
49 % Delete the duplicates
48b6fb693025 Initial commit.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
50 lines(pagel(2)) = [];
48b6fb693025 Initial commit.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
51 lines(boundl(2)) = [];
48b6fb693025 Initial commit.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
52
48b6fb693025 Initial commit.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
53
48b6fb693025 Initial commit.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
54 %Rewrite the file
48b6fb693025 Initial commit.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
55 contents = strjoin(lines,'\n');
48b6fb693025 Initial commit.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
56
48b6fb693025 Initial commit.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
57 fh = fopen(filename,'w');
48b6fb693025 Initial commit.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
58 fprintf(fh, '%s',contents);
48b6fb693025 Initial commit.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
59 fclose(fh);
48b6fb693025 Initial commit.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
60 end
48b6fb693025 Initial commit.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
61
48b6fb693025 Initial commit.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
62 function I = findPrefix(lines, prefix)
48b6fb693025 Initial commit.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
63 I = find(strncmp(lines,prefix,length(prefix)));
48b6fb693025 Initial commit.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
64 end