Mercurial > hg > octave-lyh
annotate scripts/plot/private/__gnuplot_print__.m @ 14174:447b57ebc27b stable
Validate suffix when printing to {eps,ps,pdf}latex devices.
* __fltk_print__.m: gl2ps is not agnostic to file suffix.
* __gnuplot_print__.m: gnuplot is not agnostic to file suffix.
author | Ben Abbott <bpabbott@mac.com> |
---|---|
date | Sun, 08 Jan 2012 19:23:55 -0500 |
parents | 2ff75e38c299 |
children | 5d3a684236b0 d174210ce1ec |
rev | line source |
---|---|
14138
72c96de7a403
maint: update copyright notices for 2012
John W. Eaton <jwe@octave.org>
parents:
12793
diff
changeset
|
1 ## Copyright (C) 1999-2012 Daniel Heiserer |
5361 | 2 ## Copyright (C) 2001 Laurent Mazet |
3 ## | |
5362 | 4 ## This file is part of Octave. |
5 ## | |
6 ## Octave is free software; you can redistribute it and/or modify it | |
7 ## under the terms of the GNU General Public License as published by | |
7016 | 8 ## the Free Software Foundation; either version 3 of the License, or (at |
9 ## your option) any later version. | |
5362 | 10 ## |
11 ## Octave is distributed in the hope that it will be useful, but | |
12 ## WITHOUT ANY WARRANTY; without even the implied warranty of | |
13 ## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | |
14 ## General Public License for more details. | |
5361 | 15 ## |
16 ## You should have received a copy of the GNU General Public License | |
7016 | 17 ## along with Octave; see the file COPYING. If not, see |
18 ## <http://www.gnu.org/licenses/>. | |
5361 | 19 |
20 ## -*- texinfo -*- | |
10913
dd6b90f44ae5
Unify gnuplot printing with the fltk backend.
Ben Abbott <bpabbott@mac.com>
parents:
10854
diff
changeset
|
21 ## @deftypefn {Function File} {} __gnuplot_print__ (@var{@dots{}}) |
10727
570f30a48732
split printing between backends
Shai Ayal <shaiay@users.sourceforge.net>
parents:
10711
diff
changeset
|
22 ## Undocumented internal function. |
5361 | 23 ## @end deftypefn |
24 | |
25 ## Author: Daniel Heiserer <Daniel.heiserer@physik.tu-muenchen.de> | |
5362 | 26 ## Adapted-By: jwe |
5361 | 27 |
10954
ee9d74048827
Consolidate gs code into print.m.
Ben Abbott <bpabbott@mac.com>
parents:
10915
diff
changeset
|
28 function opts = __gnuplot_print__ (opts) |
9157
fce7315c1eee
print.m: Fix typo, improvments to code, and allow for creation of tight bbox.
Ben Abbott <bpabbott@mac.com>
parents:
9152
diff
changeset
|
29 |
11009 | 30 dos_shell = (ispc () && ! isunix ()); |
31 | |
10913
dd6b90f44ae5
Unify gnuplot printing with the fltk backend.
Ben Abbott <bpabbott@mac.com>
parents:
10854
diff
changeset
|
32 if (isempty (opts.fontsize)) |
dd6b90f44ae5
Unify gnuplot printing with the fltk backend.
Ben Abbott <bpabbott@mac.com>
parents:
10854
diff
changeset
|
33 ## If no fontsize, determine the nominal axes fontsize. |
dd6b90f44ae5
Unify gnuplot printing with the fltk backend.
Ben Abbott <bpabbott@mac.com>
parents:
10854
diff
changeset
|
34 defaultfontsize = get (0, "defaultaxesfontsize"); |
dd6b90f44ae5
Unify gnuplot printing with the fltk backend.
Ben Abbott <bpabbott@mac.com>
parents:
10854
diff
changeset
|
35 axesfontsize = get (findobj (opts.figure, "type", "axes"), "fontsize"); |
dd6b90f44ae5
Unify gnuplot printing with the fltk backend.
Ben Abbott <bpabbott@mac.com>
parents:
10854
diff
changeset
|
36 if (iscell (axesfontsize)) |
dd6b90f44ae5
Unify gnuplot printing with the fltk backend.
Ben Abbott <bpabbott@mac.com>
parents:
10854
diff
changeset
|
37 axesfontsize = round (median (cell2mat (axesfontsize))); |
7550
bffb1e2ab732
print.m: Figure handle as argument.
Ben Abbott <bpabbott@mac.com>
parents:
7543
diff
changeset
|
38 endif |
10913
dd6b90f44ae5
Unify gnuplot printing with the fltk backend.
Ben Abbott <bpabbott@mac.com>
parents:
10854
diff
changeset
|
39 if (isempty (axesfontsize)) |
dd6b90f44ae5
Unify gnuplot printing with the fltk backend.
Ben Abbott <bpabbott@mac.com>
parents:
10854
diff
changeset
|
40 opts.fontsize = defaultfontsize; |
5361 | 41 else |
10913
dd6b90f44ae5
Unify gnuplot printing with the fltk backend.
Ben Abbott <bpabbott@mac.com>
parents:
10854
diff
changeset
|
42 opts.fontsize = axesfontsize; |
5361 | 43 endif |
11113
a8ac114ec9ab
Stylefixes, replace end by endif.
Thorsten Meyer <thorsten.meyier@gmx.de>
parents:
11009
diff
changeset
|
44 endif |
10913
dd6b90f44ae5
Unify gnuplot printing with the fltk backend.
Ben Abbott <bpabbott@mac.com>
parents:
10854
diff
changeset
|
45 ## The axes-label and tick-label spacing is determined by |
dd6b90f44ae5
Unify gnuplot printing with the fltk backend.
Ben Abbott <bpabbott@mac.com>
parents:
10854
diff
changeset
|
46 ## the font spec given in "set terminal ..." |
dd6b90f44ae5
Unify gnuplot printing with the fltk backend.
Ben Abbott <bpabbott@mac.com>
parents:
10854
diff
changeset
|
47 gp_opts = font_spec (opts); |
10423
dfc662a47b7a
print.m: Add '-append' option.
Ben Abbott <bpabbott@mac.com>
parents:
10422
diff
changeset
|
48 |
11009 | 49 pipeline = ""; |
50 | |
11120
a44f979a35ce
style fixes for some .m files
John W. Eaton <jwe@octave.org>
parents:
11113
diff
changeset
|
51 switch (lower (opts.devopt)) |
10954
ee9d74048827
Consolidate gs code into print.m.
Ben Abbott <bpabbott@mac.com>
parents:
10915
diff
changeset
|
52 case {"eps", "eps2", "epsc", "epsc2"} |
ee9d74048827
Consolidate gs code into print.m.
Ben Abbott <bpabbott@mac.com>
parents:
10915
diff
changeset
|
53 if (any (strcmp (opts.devopt, {"eps", "epsc"}))) |
ee9d74048827
Consolidate gs code into print.m.
Ben Abbott <bpabbott@mac.com>
parents:
10915
diff
changeset
|
54 gp_opts = sprintf ("%s level1", gp_opts); |
ee9d74048827
Consolidate gs code into print.m.
Ben Abbott <bpabbott@mac.com>
parents:
10915
diff
changeset
|
55 endif |
11009 | 56 if (opts.tight_flag || ! isempty (opts.preview)) |
57 tmp_file = strcat (tmpnam (), ".eps"); | |
58 eps_drawnow (opts, tmp_file, gp_opts); | |
59 if (dos_shell) | |
11252
d048ce3f7cef
Replace "delete" with "del" in DOS shell commands.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
11120
diff
changeset
|
60 cleanup = sprintf (" & del %s", strrep (tmp_file, '/', '\')); |
11009 | 61 else |
62 cleanup = sprintf (" ; rm %s", tmp_file); | |
63 endif | |
64 pipeline = {sprintf("%s %s", | |
65 opts.epstool_cmd (opts, tmp_file, opts.name), | |
66 cleanup)}; | |
67 else | |
68 eps_drawnow (opts, opts.name, gp_opts); | |
69 endif | |
10954
ee9d74048827
Consolidate gs code into print.m.
Ben Abbott <bpabbott@mac.com>
parents:
10915
diff
changeset
|
70 case {"epslatex", "pslatex", "pstex", "epslatexstandalone"} |
ee9d74048827
Consolidate gs code into print.m.
Ben Abbott <bpabbott@mac.com>
parents:
10915
diff
changeset
|
71 dot = find (opts.name == ".", 1, "last"); |
14174
447b57ebc27b
Validate suffix when printing to {eps,ps,pdf}latex devices.
Ben Abbott <bpabbott@mac.com>
parents:
14170
diff
changeset
|
72 n = find (opts.devopt == "l", 1); |
447b57ebc27b
Validate suffix when printing to {eps,ps,pdf}latex devices.
Ben Abbott <bpabbott@mac.com>
parents:
14170
diff
changeset
|
73 suffix = opts.devopt(1:n-1); |
14170
2ff75e38c299
improve error message in __gnuplot_print__
John W. Eaton <jwe@octave.org>
parents:
14138
diff
changeset
|
74 if (! isempty (dot)) |
14174
447b57ebc27b
Validate suffix when printing to {eps,ps,pdf}latex devices.
Ben Abbott <bpabbott@mac.com>
parents:
14170
diff
changeset
|
75 if (any (strcmpi (opts.name(dot:end), {strcat(".", suffix), ".tex", "."}))) |
14170
2ff75e38c299
improve error message in __gnuplot_print__
John W. Eaton <jwe@octave.org>
parents:
14138
diff
changeset
|
76 name = opts.name(1:dot-1); |
2ff75e38c299
improve error message in __gnuplot_print__
John W. Eaton <jwe@octave.org>
parents:
14138
diff
changeset
|
77 else |
14174
447b57ebc27b
Validate suffix when printing to {eps,ps,pdf}latex devices.
Ben Abbott <bpabbott@mac.com>
parents:
14170
diff
changeset
|
78 error ("print:invalid-suffix", |
447b57ebc27b
Validate suffix when printing to {eps,ps,pdf}latex devices.
Ben Abbott <bpabbott@mac.com>
parents:
14170
diff
changeset
|
79 "invalid suffix `%s' for device `%s'.", |
14170
2ff75e38c299
improve error message in __gnuplot_print__
John W. Eaton <jwe@octave.org>
parents:
14138
diff
changeset
|
80 opts.name(dot:end), lower (opts.devopt)); |
2ff75e38c299
improve error message in __gnuplot_print__
John W. Eaton <jwe@octave.org>
parents:
14138
diff
changeset
|
81 endif |
10954
ee9d74048827
Consolidate gs code into print.m.
Ben Abbott <bpabbott@mac.com>
parents:
10915
diff
changeset
|
82 endif |
ee9d74048827
Consolidate gs code into print.m.
Ben Abbott <bpabbott@mac.com>
parents:
10915
diff
changeset
|
83 if (strfind (opts.devopt, "standalone")) |
ee9d74048827
Consolidate gs code into print.m.
Ben Abbott <bpabbott@mac.com>
parents:
10915
diff
changeset
|
84 term = sprintf ("%s ", |
ee9d74048827
Consolidate gs code into print.m.
Ben Abbott <bpabbott@mac.com>
parents:
10915
diff
changeset
|
85 strrep (opts.devopt, "standalone", " standalone")); |
ee9d74048827
Consolidate gs code into print.m.
Ben Abbott <bpabbott@mac.com>
parents:
10915
diff
changeset
|
86 else |
ee9d74048827
Consolidate gs code into print.m.
Ben Abbott <bpabbott@mac.com>
parents:
10915
diff
changeset
|
87 term = sprintf ("%s ", opts.devopt); |
ee9d74048827
Consolidate gs code into print.m.
Ben Abbott <bpabbott@mac.com>
parents:
10915
diff
changeset
|
88 endif |
ee9d74048827
Consolidate gs code into print.m.
Ben Abbott <bpabbott@mac.com>
parents:
10915
diff
changeset
|
89 if (__gnuplot_has_feature__ ("epslatex_implies_eps_filesuffix")) |
ee9d74048827
Consolidate gs code into print.m.
Ben Abbott <bpabbott@mac.com>
parents:
10915
diff
changeset
|
90 suffix = "tex"; |
ee9d74048827
Consolidate gs code into print.m.
Ben Abbott <bpabbott@mac.com>
parents:
10915
diff
changeset
|
91 else |
ee9d74048827
Consolidate gs code into print.m.
Ben Abbott <bpabbott@mac.com>
parents:
10915
diff
changeset
|
92 %% Gnuplot 4.0 wants a ".eps" suffix. |
ee9d74048827
Consolidate gs code into print.m.
Ben Abbott <bpabbott@mac.com>
parents:
10915
diff
changeset
|
93 suffix = "eps"; |
ee9d74048827
Consolidate gs code into print.m.
Ben Abbott <bpabbott@mac.com>
parents:
10915
diff
changeset
|
94 endif |
ee9d74048827
Consolidate gs code into print.m.
Ben Abbott <bpabbott@mac.com>
parents:
10915
diff
changeset
|
95 local_drawnow (sprintf ("%s %s", term, gp_opts), |
11589
b0084095098e
missing semicolons in script files
John W. Eaton <jwe@octave.org>
parents:
11588
diff
changeset
|
96 strcat (name, ".", suffix), opts); |
11120
a44f979a35ce
style fixes for some .m files
John W. Eaton <jwe@octave.org>
parents:
11113
diff
changeset
|
97 case "tikz" |
11009 | 98 if (__gnuplot_has_terminal__ ("tikz")) |
99 local_drawnow (sprintf ("lua tikz %s", gp_opts), opts.name, opts); | |
100 else | |
101 error (sprintf ("print:no%soutput", opts.devopt), | |
11588
d5bd2766c640
style fixes for warning and error messages in script files
John W. Eaton <jwe@octave.org>
parents:
11587
diff
changeset
|
102 "print.m: '%s' output is not available for gnuplot-%s", |
11589
b0084095098e
missing semicolons in script files
John W. Eaton <jwe@octave.org>
parents:
11588
diff
changeset
|
103 upper (opts.devopt), __gnuplot_version__ ()); |
10954
ee9d74048827
Consolidate gs code into print.m.
Ben Abbott <bpabbott@mac.com>
parents:
10915
diff
changeset
|
104 endif |
11120
a44f979a35ce
style fixes for some .m files
John W. Eaton <jwe@octave.org>
parents:
11113
diff
changeset
|
105 case "svg" |
10954
ee9d74048827
Consolidate gs code into print.m.
Ben Abbott <bpabbott@mac.com>
parents:
10915
diff
changeset
|
106 local_drawnow (sprintf ("svg dynamic %s", gp_opts), opts.name, opts); |
11009 | 107 case {"aifm", "corel", "eepic", "emf", "fig"} |
10954
ee9d74048827
Consolidate gs code into print.m.
Ben Abbott <bpabbott@mac.com>
parents:
10915
diff
changeset
|
108 local_drawnow (sprintf ("%s %s", opts.devopt, gp_opts), opts.name, opts); |
11009 | 109 case {"pdfcairo", "pngcairo"} |
110 if (__gnuplot_has_terminal__ (opts.devopt)) | |
111 local_drawnow (sprintf ("%s %s", opts.devopt, gp_opts), opts.name, opts); | |
112 else | |
113 error (sprintf ("print:no%soutput", opts.devopt), | |
11588
d5bd2766c640
style fixes for warning and error messages in script files
John W. Eaton <jwe@octave.org>
parents:
11587
diff
changeset
|
114 "print.m: '%s' output is not available for gnuplot-%s", |
11589
b0084095098e
missing semicolons in script files
John W. Eaton <jwe@octave.org>
parents:
11588
diff
changeset
|
115 upper (opts.devopt), __gnuplot_version__ ()); |
11009 | 116 endif |
10954
ee9d74048827
Consolidate gs code into print.m.
Ben Abbott <bpabbott@mac.com>
parents:
10915
diff
changeset
|
117 case {"canvas", "dxf", "hpgl", "mf", "gif", "pstricks", "texdraw"} |
11589
b0084095098e
missing semicolons in script files
John W. Eaton <jwe@octave.org>
parents:
11588
diff
changeset
|
118 local_drawnow (sprintf ("%s %s", opts.devopt, gp_opts), opts.name, opts); |
10954
ee9d74048827
Consolidate gs code into print.m.
Ben Abbott <bpabbott@mac.com>
parents:
10915
diff
changeset
|
119 case opts.ghostscript.device |
11009 | 120 gp_opts = font_spec (opts, "devopt", "eps"); |
121 opts.ghostscript.output = opts.name; | |
122 opts.ghostscript.source = strcat (tmpnam (), ".eps"); | |
123 eps_drawnow (opts, opts.ghostscript.source, gp_opts); | |
11587
c792872f8942
all script files: untabify and strip trailing whitespace
John W. Eaton <jwe@octave.org>
parents:
11576
diff
changeset
|
124 [cmd_gs, cmd_cleanup] = __ghostscript__ (opts.ghostscript); |
11009 | 125 if (opts.send_to_printer || isempty (opts.name)) |
126 cmd_lpr = opts.lpr_cmd (opts); | |
127 cmd = sprintf ("%s | %s", cmd_gs, cmd_lpr); | |
128 else | |
129 cmd = sprintf ("%s", cmd_gs); | |
8889
665b264b6a50
Compatible support of figure paper properties and resolution for the gnuplot backend.
Ben Abbott <bpabbott@mac.com>
parents:
8746
diff
changeset
|
130 endif |
11009 | 131 if (dos_shell) |
11252
d048ce3f7cef
Replace "delete" with "del" in DOS shell commands.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
11120
diff
changeset
|
132 cmd = sprintf ("%s & del %s", cmd, strrep (opts.ghostscript.source, '/', '\')); |
11009 | 133 else |
134 cmd = sprintf ("%s ; rm %s", cmd, opts.ghostscript.source); | |
135 endif | |
136 if (! isempty (cmd_cleanup)) | |
137 if (dos_shell) | |
138 pipeline = {sprintf("%s & %s", cmd, cmd_cleanup)}; | |
139 else | |
140 pipeline = {sprintf("%s ; %s", cmd, cmd_cleanup)}; | |
141 endif | |
142 else | |
143 pipeline = {cmd}; | |
144 endif | |
10954
ee9d74048827
Consolidate gs code into print.m.
Ben Abbott <bpabbott@mac.com>
parents:
10915
diff
changeset
|
145 otherwise |
ee9d74048827
Consolidate gs code into print.m.
Ben Abbott <bpabbott@mac.com>
parents:
10915
diff
changeset
|
146 error (sprintf ("print:no%soutput", opts.devopt), |
11576
8ac9687dbe9f
rename backend to graphics_toolkit
John W. Eaton <jwe@octave.org>
parents:
11523
diff
changeset
|
147 "print.m: %s output is not available for the Gnuplot graphics toolkit", |
11589
b0084095098e
missing semicolons in script files
John W. Eaton <jwe@octave.org>
parents:
11588
diff
changeset
|
148 upper (opts.devopt)); |
10954
ee9d74048827
Consolidate gs code into print.m.
Ben Abbott <bpabbott@mac.com>
parents:
10915
diff
changeset
|
149 endswitch |
5363 | 150 |
11009 | 151 |
152 opts.pipeline = pipeline; | |
153 | |
154 for n = 1:numel(pipeline) | |
155 if (opts.debug) | |
11589
b0084095098e
missing semicolons in script files
John W. Eaton <jwe@octave.org>
parents:
11588
diff
changeset
|
156 fprintf ("gnuplot-pipeline: '%s'\n", pipeline{n}); |
11009 | 157 endif |
158 [status, output] = system (pipeline{n}); | |
159 if (status) | |
11587
c792872f8942
all script files: untabify and strip trailing whitespace
John W. Eaton <jwe@octave.org>
parents:
11576
diff
changeset
|
160 fprintf ("%s\n%s\n%s\n", |
11009 | 161 "---------- output begin ----------", |
162 output, | |
163 "----------- output end -----------"); | |
11589
b0084095098e
missing semicolons in script files
John W. Eaton <jwe@octave.org>
parents:
11588
diff
changeset
|
164 error ("gnuplot:failedpipe", "print: failed to print"); |
11009 | 165 endif |
166 endfor | |
167 | |
5361 | 168 endfunction |
9152
4c9aff0c9a61
print.m: Use Ghostscript rather than ImageMagick's 'convert'.
Ben Abbott <bpabbott@mac.com>
parents:
9107
diff
changeset
|
169 |
10913
dd6b90f44ae5
Unify gnuplot printing with the fltk backend.
Ben Abbott <bpabbott@mac.com>
parents:
10854
diff
changeset
|
170 function eps_drawnow (opts, epsfile, gp_opts) |
dd6b90f44ae5
Unify gnuplot printing with the fltk backend.
Ben Abbott <bpabbott@mac.com>
parents:
10854
diff
changeset
|
171 [h, fontsize] = get_figure_text_objs (opts); |
9334
4f96a7770492
print.m: properly render mono figures, and favor cairo terminals.
Ben Abbott <bpabbott@mac.com>
parents:
9249
diff
changeset
|
172 unwind_protect |
10913
dd6b90f44ae5
Unify gnuplot printing with the fltk backend.
Ben Abbott <bpabbott@mac.com>
parents:
10854
diff
changeset
|
173 for n = 1:numel(h) |
10915
2a25f282e965
__gnuplot_print__.m: Properly restore fontsize after eps output.
Ben Abbott <bpabbott@mac.com>
parents:
10913
diff
changeset
|
174 set (h(n), "fontsize", 2 * fontsize{n}); |
10913
dd6b90f44ae5
Unify gnuplot printing with the fltk backend.
Ben Abbott <bpabbott@mac.com>
parents:
10854
diff
changeset
|
175 endfor |
dd6b90f44ae5
Unify gnuplot printing with the fltk backend.
Ben Abbott <bpabbott@mac.com>
parents:
10854
diff
changeset
|
176 local_drawnow (sprintf ("postscript eps %s", gp_opts), epsfile, opts); |
9334
4f96a7770492
print.m: properly render mono figures, and favor cairo terminals.
Ben Abbott <bpabbott@mac.com>
parents:
9249
diff
changeset
|
177 unwind_protect_cleanup |
10913
dd6b90f44ae5
Unify gnuplot printing with the fltk backend.
Ben Abbott <bpabbott@mac.com>
parents:
10854
diff
changeset
|
178 for n = 1:numel(h) |
10915
2a25f282e965
__gnuplot_print__.m: Properly restore fontsize after eps output.
Ben Abbott <bpabbott@mac.com>
parents:
10913
diff
changeset
|
179 set (h(n), "fontsize", fontsize{n}); |
10913
dd6b90f44ae5
Unify gnuplot printing with the fltk backend.
Ben Abbott <bpabbott@mac.com>
parents:
10854
diff
changeset
|
180 endfor |
9334
4f96a7770492
print.m: properly render mono figures, and favor cairo terminals.
Ben Abbott <bpabbott@mac.com>
parents:
9249
diff
changeset
|
181 end_unwind_protect |
10913
dd6b90f44ae5
Unify gnuplot printing with the fltk backend.
Ben Abbott <bpabbott@mac.com>
parents:
10854
diff
changeset
|
182 endfunction |
dd6b90f44ae5
Unify gnuplot printing with the fltk backend.
Ben Abbott <bpabbott@mac.com>
parents:
10854
diff
changeset
|
183 |
dd6b90f44ae5
Unify gnuplot printing with the fltk backend.
Ben Abbott <bpabbott@mac.com>
parents:
10854
diff
changeset
|
184 function local_drawnow (term, file, opts) |
dd6b90f44ae5
Unify gnuplot printing with the fltk backend.
Ben Abbott <bpabbott@mac.com>
parents:
10854
diff
changeset
|
185 if (opts.use_color < 0) |
dd6b90f44ae5
Unify gnuplot printing with the fltk backend.
Ben Abbott <bpabbott@mac.com>
parents:
10854
diff
changeset
|
186 mono = true; |
dd6b90f44ae5
Unify gnuplot printing with the fltk backend.
Ben Abbott <bpabbott@mac.com>
parents:
10854
diff
changeset
|
187 else |
dd6b90f44ae5
Unify gnuplot printing with the fltk backend.
Ben Abbott <bpabbott@mac.com>
parents:
10854
diff
changeset
|
188 mono = false; |
dd6b90f44ae5
Unify gnuplot printing with the fltk backend.
Ben Abbott <bpabbott@mac.com>
parents:
10854
diff
changeset
|
189 endif |
11589
b0084095098e
missing semicolons in script files
John W. Eaton <jwe@octave.org>
parents:
11588
diff
changeset
|
190 figure (opts.figure); |
10913
dd6b90f44ae5
Unify gnuplot printing with the fltk backend.
Ben Abbott <bpabbott@mac.com>
parents:
10854
diff
changeset
|
191 if (isempty (opts.debug_file) || ! opts.debug) |
dd6b90f44ae5
Unify gnuplot printing with the fltk backend.
Ben Abbott <bpabbott@mac.com>
parents:
10854
diff
changeset
|
192 drawnow (term, file, mono); |
dd6b90f44ae5
Unify gnuplot printing with the fltk backend.
Ben Abbott <bpabbott@mac.com>
parents:
10854
diff
changeset
|
193 else |
dd6b90f44ae5
Unify gnuplot printing with the fltk backend.
Ben Abbott <bpabbott@mac.com>
parents:
10854
diff
changeset
|
194 drawnow (term, file, mono, opts.debug_file); |
dd6b90f44ae5
Unify gnuplot printing with the fltk backend.
Ben Abbott <bpabbott@mac.com>
parents:
10854
diff
changeset
|
195 endif |
dd6b90f44ae5
Unify gnuplot printing with the fltk backend.
Ben Abbott <bpabbott@mac.com>
parents:
10854
diff
changeset
|
196 endfunction |
dd6b90f44ae5
Unify gnuplot printing with the fltk backend.
Ben Abbott <bpabbott@mac.com>
parents:
10854
diff
changeset
|
197 |
dd6b90f44ae5
Unify gnuplot printing with the fltk backend.
Ben Abbott <bpabbott@mac.com>
parents:
10854
diff
changeset
|
198 function f = font_spec (opts, varargin) |
dd6b90f44ae5
Unify gnuplot printing with the fltk backend.
Ben Abbott <bpabbott@mac.com>
parents:
10854
diff
changeset
|
199 for n = 1:2:numel(varargin) |
dd6b90f44ae5
Unify gnuplot printing with the fltk backend.
Ben Abbott <bpabbott@mac.com>
parents:
10854
diff
changeset
|
200 opts.(varargin{n}) = varargin{n+1}; |
9334
4f96a7770492
print.m: properly render mono figures, and favor cairo terminals.
Ben Abbott <bpabbott@mac.com>
parents:
9249
diff
changeset
|
201 endfor |
10913
dd6b90f44ae5
Unify gnuplot printing with the fltk backend.
Ben Abbott <bpabbott@mac.com>
parents:
10854
diff
changeset
|
202 f = ""; |
11120
a44f979a35ce
style fixes for some .m files
John W. Eaton <jwe@octave.org>
parents:
11113
diff
changeset
|
203 switch (opts.devopt) |
a44f979a35ce
style fixes for some .m files
John W. Eaton <jwe@octave.org>
parents:
11113
diff
changeset
|
204 case "cgm" |
10913
dd6b90f44ae5
Unify gnuplot printing with the fltk backend.
Ben Abbott <bpabbott@mac.com>
parents:
10854
diff
changeset
|
205 if (! isempty (opts.font) && ! isempty (opts.fontsize)) |
dd6b90f44ae5
Unify gnuplot printing with the fltk backend.
Ben Abbott <bpabbott@mac.com>
parents:
10854
diff
changeset
|
206 f = sprintf ("font ""%s,%d""", opts.font, opts.fontsize); |
dd6b90f44ae5
Unify gnuplot printing with the fltk backend.
Ben Abbott <bpabbott@mac.com>
parents:
10854
diff
changeset
|
207 elseif (! isempty (opts.font)) |
dd6b90f44ae5
Unify gnuplot printing with the fltk backend.
Ben Abbott <bpabbott@mac.com>
parents:
10854
diff
changeset
|
208 f = sprintf ("font ""%s""", opts.font); |
dd6b90f44ae5
Unify gnuplot printing with the fltk backend.
Ben Abbott <bpabbott@mac.com>
parents:
10854
diff
changeset
|
209 elseif (! isempty (opts.fontsize)) |
dd6b90f44ae5
Unify gnuplot printing with the fltk backend.
Ben Abbott <bpabbott@mac.com>
parents:
10854
diff
changeset
|
210 f = sprintf ("%d", opts.fontsize); |
dd6b90f44ae5
Unify gnuplot printing with the fltk backend.
Ben Abbott <bpabbott@mac.com>
parents:
10854
diff
changeset
|
211 endif |
10954
ee9d74048827
Consolidate gs code into print.m.
Ben Abbott <bpabbott@mac.com>
parents:
10915
diff
changeset
|
212 case {"eps", "eps2", "epsc", "epsc2"} |
11587
c792872f8942
all script files: untabify and strip trailing whitespace
John W. Eaton <jwe@octave.org>
parents:
11576
diff
changeset
|
213 ## Gnuplot renders fonts as half their specification, which |
10913
dd6b90f44ae5
Unify gnuplot printing with the fltk backend.
Ben Abbott <bpabbott@mac.com>
parents:
10854
diff
changeset
|
214 ## results in a tight spacing for the axes-labels and tick-labels. |
dd6b90f44ae5
Unify gnuplot printing with the fltk backend.
Ben Abbott <bpabbott@mac.com>
parents:
10854
diff
changeset
|
215 ## Compensate for the half scale. This will produce the proper |
dd6b90f44ae5
Unify gnuplot printing with the fltk backend.
Ben Abbott <bpabbott@mac.com>
parents:
10854
diff
changeset
|
216 ## spacing for the requested fontsize. |
dd6b90f44ae5
Unify gnuplot printing with the fltk backend.
Ben Abbott <bpabbott@mac.com>
parents:
10854
diff
changeset
|
217 if (! isempty (opts.font) && ! isempty (opts.fontsize)) |
dd6b90f44ae5
Unify gnuplot printing with the fltk backend.
Ben Abbott <bpabbott@mac.com>
parents:
10854
diff
changeset
|
218 f = sprintf ("font ""%s,%d""", opts.font, 2 * opts.fontsize); |
dd6b90f44ae5
Unify gnuplot printing with the fltk backend.
Ben Abbott <bpabbott@mac.com>
parents:
10854
diff
changeset
|
219 elseif (! isempty (opts.font)) |
dd6b90f44ae5
Unify gnuplot printing with the fltk backend.
Ben Abbott <bpabbott@mac.com>
parents:
10854
diff
changeset
|
220 f = sprintf ("font ""%s""", opts.font); |
dd6b90f44ae5
Unify gnuplot printing with the fltk backend.
Ben Abbott <bpabbott@mac.com>
parents:
10854
diff
changeset
|
221 elseif (! isempty (opts.fontsize)) |
dd6b90f44ae5
Unify gnuplot printing with the fltk backend.
Ben Abbott <bpabbott@mac.com>
parents:
10854
diff
changeset
|
222 f = sprintf ("%d", 2 * opts.fontsize); |
dd6b90f44ae5
Unify gnuplot printing with the fltk backend.
Ben Abbott <bpabbott@mac.com>
parents:
10854
diff
changeset
|
223 endif |
11120
a44f979a35ce
style fixes for some .m files
John W. Eaton <jwe@octave.org>
parents:
11113
diff
changeset
|
224 case "svg" |
10913
dd6b90f44ae5
Unify gnuplot printing with the fltk backend.
Ben Abbott <bpabbott@mac.com>
parents:
10854
diff
changeset
|
225 if (! isempty (opts.font) && ! isempty (opts.fontsize)) |
dd6b90f44ae5
Unify gnuplot printing with the fltk backend.
Ben Abbott <bpabbott@mac.com>
parents:
10854
diff
changeset
|
226 fontsize = round (opts.fontsize * 0.75); |
dd6b90f44ae5
Unify gnuplot printing with the fltk backend.
Ben Abbott <bpabbott@mac.com>
parents:
10854
diff
changeset
|
227 f = sprintf ("fname ""%s"" fsize %d", opts.font, fontsize); |
dd6b90f44ae5
Unify gnuplot printing with the fltk backend.
Ben Abbott <bpabbott@mac.com>
parents:
10854
diff
changeset
|
228 elseif (! isempty (opts.font)) |
dd6b90f44ae5
Unify gnuplot printing with the fltk backend.
Ben Abbott <bpabbott@mac.com>
parents:
10854
diff
changeset
|
229 f = sprintf ("fname ""%s""", opts.font); |
dd6b90f44ae5
Unify gnuplot printing with the fltk backend.
Ben Abbott <bpabbott@mac.com>
parents:
10854
diff
changeset
|
230 elseif (! isempty (opts.fontsize)) |
dd6b90f44ae5
Unify gnuplot printing with the fltk backend.
Ben Abbott <bpabbott@mac.com>
parents:
10854
diff
changeset
|
231 fontsize = round (opts.fontsize * 0.75); |
dd6b90f44ae5
Unify gnuplot printing with the fltk backend.
Ben Abbott <bpabbott@mac.com>
parents:
10854
diff
changeset
|
232 f = sprintf ("%s fsize %d", f, fontsize); |
dd6b90f44ae5
Unify gnuplot printing with the fltk backend.
Ben Abbott <bpabbott@mac.com>
parents:
10854
diff
changeset
|
233 endif |
11120
a44f979a35ce
style fixes for some .m files
John W. Eaton <jwe@octave.org>
parents:
11113
diff
changeset
|
234 case "pdf" |
10913
dd6b90f44ae5
Unify gnuplot printing with the fltk backend.
Ben Abbott <bpabbott@mac.com>
parents:
10854
diff
changeset
|
235 if (! isempty (opts.font) && ! isempty (opts.fontsize)) |
dd6b90f44ae5
Unify gnuplot printing with the fltk backend.
Ben Abbott <bpabbott@mac.com>
parents:
10854
diff
changeset
|
236 f = sprintf ("font ""%s,%d""", opts.font, opts.fontsize); |
dd6b90f44ae5
Unify gnuplot printing with the fltk backend.
Ben Abbott <bpabbott@mac.com>
parents:
10854
diff
changeset
|
237 elseif (! isempty (opts.font)) |
dd6b90f44ae5
Unify gnuplot printing with the fltk backend.
Ben Abbott <bpabbott@mac.com>
parents:
10854
diff
changeset
|
238 f = sprintf ("font ""%s""", opts.font); |
dd6b90f44ae5
Unify gnuplot printing with the fltk backend.
Ben Abbott <bpabbott@mac.com>
parents:
10854
diff
changeset
|
239 elseif (! isempty (opts.fontsize)) |
dd6b90f44ae5
Unify gnuplot printing with the fltk backend.
Ben Abbott <bpabbott@mac.com>
parents:
10854
diff
changeset
|
240 f = sprintf ("fsize %d", f, opts.fontsize); |
dd6b90f44ae5
Unify gnuplot printing with the fltk backend.
Ben Abbott <bpabbott@mac.com>
parents:
10854
diff
changeset
|
241 endif |
dd6b90f44ae5
Unify gnuplot printing with the fltk backend.
Ben Abbott <bpabbott@mac.com>
parents:
10854
diff
changeset
|
242 case {"pdfcairo", "pngcairo"} |
dd6b90f44ae5
Unify gnuplot printing with the fltk backend.
Ben Abbott <bpabbott@mac.com>
parents:
10854
diff
changeset
|
243 if (! isempty (opts.font)) |
dd6b90f44ae5
Unify gnuplot printing with the fltk backend.
Ben Abbott <bpabbott@mac.com>
parents:
10854
diff
changeset
|
244 f = sprintf ("font ""%s""", opts.font); |
dd6b90f44ae5
Unify gnuplot printing with the fltk backend.
Ben Abbott <bpabbott@mac.com>
parents:
10854
diff
changeset
|
245 endif |
dd6b90f44ae5
Unify gnuplot printing with the fltk backend.
Ben Abbott <bpabbott@mac.com>
parents:
10854
diff
changeset
|
246 case {"epslatex", "epslatexstandalone"} |
dd6b90f44ae5
Unify gnuplot printing with the fltk backend.
Ben Abbott <bpabbott@mac.com>
parents:
10854
diff
changeset
|
247 if (! isempty (opts.font) && ! isempty (opts.fontsize)) |
dd6b90f44ae5
Unify gnuplot printing with the fltk backend.
Ben Abbott <bpabbott@mac.com>
parents:
10854
diff
changeset
|
248 f = sprintf ("font ""%s,%d""", opts.font, opts.fontsize); |
dd6b90f44ae5
Unify gnuplot printing with the fltk backend.
Ben Abbott <bpabbott@mac.com>
parents:
10854
diff
changeset
|
249 elseif (! isempty (opts.font)) |
dd6b90f44ae5
Unify gnuplot printing with the fltk backend.
Ben Abbott <bpabbott@mac.com>
parents:
10854
diff
changeset
|
250 f = sprintf ("font ""%s""", opts.font); |
dd6b90f44ae5
Unify gnuplot printing with the fltk backend.
Ben Abbott <bpabbott@mac.com>
parents:
10854
diff
changeset
|
251 elseif (! isempty (opts.fontsize)) |
dd6b90f44ae5
Unify gnuplot printing with the fltk backend.
Ben Abbott <bpabbott@mac.com>
parents:
10854
diff
changeset
|
252 f = sprintf ("%d", opts.fontsize); |
dd6b90f44ae5
Unify gnuplot printing with the fltk backend.
Ben Abbott <bpabbott@mac.com>
parents:
10854
diff
changeset
|
253 endif |
11120
a44f979a35ce
style fixes for some .m files
John W. Eaton <jwe@octave.org>
parents:
11113
diff
changeset
|
254 case "pslatex" |
10913
dd6b90f44ae5
Unify gnuplot printing with the fltk backend.
Ben Abbott <bpabbott@mac.com>
parents:
10854
diff
changeset
|
255 if (! isempty (opts.fontsize)) |
dd6b90f44ae5
Unify gnuplot printing with the fltk backend.
Ben Abbott <bpabbott@mac.com>
parents:
10854
diff
changeset
|
256 f = sprintf ("%d", opts.fontsize); |
dd6b90f44ae5
Unify gnuplot printing with the fltk backend.
Ben Abbott <bpabbott@mac.com>
parents:
10854
diff
changeset
|
257 endif |
dd6b90f44ae5
Unify gnuplot printing with the fltk backend.
Ben Abbott <bpabbott@mac.com>
parents:
10854
diff
changeset
|
258 case {"gif", "jpeg", "png"} |
dd6b90f44ae5
Unify gnuplot printing with the fltk backend.
Ben Abbott <bpabbott@mac.com>
parents:
10854
diff
changeset
|
259 if (! isempty (opts.font) && ! isempty (opts.fontsize)) |
dd6b90f44ae5
Unify gnuplot printing with the fltk backend.
Ben Abbott <bpabbott@mac.com>
parents:
10854
diff
changeset
|
260 f = sprintf ("font ""%s ,%d""", opts.font, opts.fontsize); |
dd6b90f44ae5
Unify gnuplot printing with the fltk backend.
Ben Abbott <bpabbott@mac.com>
parents:
10854
diff
changeset
|
261 elseif (! isempty (opts.font)) |
dd6b90f44ae5
Unify gnuplot printing with the fltk backend.
Ben Abbott <bpabbott@mac.com>
parents:
10854
diff
changeset
|
262 f = sprintf ("font ""%s""", opts.font); |
dd6b90f44ae5
Unify gnuplot printing with the fltk backend.
Ben Abbott <bpabbott@mac.com>
parents:
10854
diff
changeset
|
263 elseif (! isempty (opts.fontsize)) |
dd6b90f44ae5
Unify gnuplot printing with the fltk backend.
Ben Abbott <bpabbott@mac.com>
parents:
10854
diff
changeset
|
264 f = sprintf ("font ""%d""", opts.fontsize); |
dd6b90f44ae5
Unify gnuplot printing with the fltk backend.
Ben Abbott <bpabbott@mac.com>
parents:
10854
diff
changeset
|
265 endif |
11120
a44f979a35ce
style fixes for some .m files
John W. Eaton <jwe@octave.org>
parents:
11113
diff
changeset
|
266 case "emf" |
10913
dd6b90f44ae5
Unify gnuplot printing with the fltk backend.
Ben Abbott <bpabbott@mac.com>
parents:
10854
diff
changeset
|
267 if (! isempty (opts.font) && ! isempty (opts.fontsize)) |
dd6b90f44ae5
Unify gnuplot printing with the fltk backend.
Ben Abbott <bpabbott@mac.com>
parents:
10854
diff
changeset
|
268 f = sprintf ("""%s"" %d", opts.font, opts.fontsize); |
dd6b90f44ae5
Unify gnuplot printing with the fltk backend.
Ben Abbott <bpabbott@mac.com>
parents:
10854
diff
changeset
|
269 elseif (! isempty (opts.font)) |
dd6b90f44ae5
Unify gnuplot printing with the fltk backend.
Ben Abbott <bpabbott@mac.com>
parents:
10854
diff
changeset
|
270 f = sprintf ("""%s""", opts.font); |
dd6b90f44ae5
Unify gnuplot printing with the fltk backend.
Ben Abbott <bpabbott@mac.com>
parents:
10854
diff
changeset
|
271 elseif (! isempty (opts.fontsize)) |
dd6b90f44ae5
Unify gnuplot printing with the fltk backend.
Ben Abbott <bpabbott@mac.com>
parents:
10854
diff
changeset
|
272 f = sprintf ("%d", opts.fontsize); |
dd6b90f44ae5
Unify gnuplot printing with the fltk backend.
Ben Abbott <bpabbott@mac.com>
parents:
10854
diff
changeset
|
273 endif |
11120
a44f979a35ce
style fixes for some .m files
John W. Eaton <jwe@octave.org>
parents:
11113
diff
changeset
|
274 case "canvas" |
10913
dd6b90f44ae5
Unify gnuplot printing with the fltk backend.
Ben Abbott <bpabbott@mac.com>
parents:
10854
diff
changeset
|
275 if (! isempty (opts.fontsize)) |
dd6b90f44ae5
Unify gnuplot printing with the fltk backend.
Ben Abbott <bpabbott@mac.com>
parents:
10854
diff
changeset
|
276 f = sprintf ("fsize %d", opts.fontsize); |
dd6b90f44ae5
Unify gnuplot printing with the fltk backend.
Ben Abbott <bpabbott@mac.com>
parents:
10854
diff
changeset
|
277 endif |
dd6b90f44ae5
Unify gnuplot printing with the fltk backend.
Ben Abbott <bpabbott@mac.com>
parents:
10854
diff
changeset
|
278 case {"aifm", "corel"} |
dd6b90f44ae5
Unify gnuplot printing with the fltk backend.
Ben Abbott <bpabbott@mac.com>
parents:
10854
diff
changeset
|
279 if (! isempty (opts.font) && ! isempty (opts.fontsize)) |
dd6b90f44ae5
Unify gnuplot printing with the fltk backend.
Ben Abbott <bpabbott@mac.com>
parents:
10854
diff
changeset
|
280 f = sprintf ("%s %d", opts.font, opts.fontsize); |
dd6b90f44ae5
Unify gnuplot printing with the fltk backend.
Ben Abbott <bpabbott@mac.com>
parents:
10854
diff
changeset
|
281 elseif (! isempty (opts.font)) |
dd6b90f44ae5
Unify gnuplot printing with the fltk backend.
Ben Abbott <bpabbott@mac.com>
parents:
10854
diff
changeset
|
282 f = sprintf ("%s", opts.font); |
dd6b90f44ae5
Unify gnuplot printing with the fltk backend.
Ben Abbott <bpabbott@mac.com>
parents:
10854
diff
changeset
|
283 elseif (! isempty (opts.fontsize)) |
dd6b90f44ae5
Unify gnuplot printing with the fltk backend.
Ben Abbott <bpabbott@mac.com>
parents:
10854
diff
changeset
|
284 f = sprintf ("%d", opts.fontsize); |
dd6b90f44ae5
Unify gnuplot printing with the fltk backend.
Ben Abbott <bpabbott@mac.com>
parents:
10854
diff
changeset
|
285 endif |
11120
a44f979a35ce
style fixes for some .m files
John W. Eaton <jwe@octave.org>
parents:
11113
diff
changeset
|
286 case "fig" |
10913
dd6b90f44ae5
Unify gnuplot printing with the fltk backend.
Ben Abbott <bpabbott@mac.com>
parents:
10854
diff
changeset
|
287 if (! isempty (opts.font) && ! isempty (opts.fontsize)) |
dd6b90f44ae5
Unify gnuplot printing with the fltk backend.
Ben Abbott <bpabbott@mac.com>
parents:
10854
diff
changeset
|
288 f = sprintf ("font %s fontsize %d", opts.font, opts.fontsize); |
dd6b90f44ae5
Unify gnuplot printing with the fltk backend.
Ben Abbott <bpabbott@mac.com>
parents:
10854
diff
changeset
|
289 elseif (! isempty (opts.font)) |
dd6b90f44ae5
Unify gnuplot printing with the fltk backend.
Ben Abbott <bpabbott@mac.com>
parents:
10854
diff
changeset
|
290 f = sprintf ("font %s", opts.font); |
dd6b90f44ae5
Unify gnuplot printing with the fltk backend.
Ben Abbott <bpabbott@mac.com>
parents:
10854
diff
changeset
|
291 elseif (! isempty (opts.fontsize)) |
dd6b90f44ae5
Unify gnuplot printing with the fltk backend.
Ben Abbott <bpabbott@mac.com>
parents:
10854
diff
changeset
|
292 f = sprintf ("fontsize %d", opts.fontsize); |
dd6b90f44ae5
Unify gnuplot printing with the fltk backend.
Ben Abbott <bpabbott@mac.com>
parents:
10854
diff
changeset
|
293 endif |
dd6b90f44ae5
Unify gnuplot printing with the fltk backend.
Ben Abbott <bpabbott@mac.com>
parents:
10854
diff
changeset
|
294 endswitch |
9334
4f96a7770492
print.m: properly render mono figures, and favor cairo terminals.
Ben Abbott <bpabbott@mac.com>
parents:
9249
diff
changeset
|
295 endfunction |
4f96a7770492
print.m: properly render mono figures, and favor cairo terminals.
Ben Abbott <bpabbott@mac.com>
parents:
9249
diff
changeset
|
296 |
10913
dd6b90f44ae5
Unify gnuplot printing with the fltk backend.
Ben Abbott <bpabbott@mac.com>
parents:
10854
diff
changeset
|
297 function [h, fontsize] = get_figure_text_objs (opts) |
dd6b90f44ae5
Unify gnuplot printing with the fltk backend.
Ben Abbott <bpabbott@mac.com>
parents:
10854
diff
changeset
|
298 h = findall (opts.figure, "-property", "fontsize"); |
dd6b90f44ae5
Unify gnuplot printing with the fltk backend.
Ben Abbott <bpabbott@mac.com>
parents:
10854
diff
changeset
|
299 fontsize = get (h, "fontsize"); |
11120
a44f979a35ce
style fixes for some .m files
John W. Eaton <jwe@octave.org>
parents:
11113
diff
changeset
|
300 switch (numel (fontsize)) |
10913
dd6b90f44ae5
Unify gnuplot printing with the fltk backend.
Ben Abbott <bpabbott@mac.com>
parents:
10854
diff
changeset
|
301 case 0 |
dd6b90f44ae5
Unify gnuplot printing with the fltk backend.
Ben Abbott <bpabbott@mac.com>
parents:
10854
diff
changeset
|
302 fontsize = {}; |
dd6b90f44ae5
Unify gnuplot printing with the fltk backend.
Ben Abbott <bpabbott@mac.com>
parents:
10854
diff
changeset
|
303 case 1 |
dd6b90f44ae5
Unify gnuplot printing with the fltk backend.
Ben Abbott <bpabbott@mac.com>
parents:
10854
diff
changeset
|
304 fontsize = {fontsize}; |
dd6b90f44ae5
Unify gnuplot printing with the fltk backend.
Ben Abbott <bpabbott@mac.com>
parents:
10854
diff
changeset
|
305 endswitch |
dd6b90f44ae5
Unify gnuplot printing with the fltk backend.
Ben Abbott <bpabbott@mac.com>
parents:
10854
diff
changeset
|
306 endfunction |