annotate src/DLD-FUNCTIONS/__gnuplot_raw__.l @ 7151:aeeb646f6538

[project @ 2007-11-09 19:34:17 by jwe]
author jwe
date Fri, 09 Nov 2007 19:35:52 +0000
parents 68a1b616b7df
children cc0276c3269d
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
5790
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1 /*
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
2
7017
a1dbe9d80eee [project @ 2007-10-12 21:27:11 by jwe]
jwe
parents: 7016
diff changeset
3 Copyright (C) 2004, 2005, 2006, 2007 John W. Eaton and Teemu Ikonen
5790
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
4
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
5 This file is part of Octave.
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
6
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
7 Octave is free software; you can redistribute it and/or modify it
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
8 under the terms of the GNU General Public License as published by the
7016
93c65f2a5668 [project @ 2007-10-12 06:40:56 by jwe]
jwe
parents: 6556
diff changeset
9 Free Software Foundation; either version 3 of the License, or (at your
93c65f2a5668 [project @ 2007-10-12 06:40:56 by jwe]
jwe
parents: 6556
diff changeset
10 option) any later version.
5790
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
11
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
12 Octave is distributed in the hope that it will be useful, but WITHOUT
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
13 ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
14 FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
15 for more details.
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
16
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
17 You should have received a copy of the GNU General Public License
7016
93c65f2a5668 [project @ 2007-10-12 06:40:56 by jwe]
jwe
parents: 6556
diff changeset
18 along with Octave; see the file COPYING. If not, see
93c65f2a5668 [project @ 2007-10-12 06:40:56 by jwe]
jwe
parents: 6556
diff changeset
19 <http://www.gnu.org/licenses/>.
5790
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
20
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
21 */
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
22
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
23 %option prefix="gpt"
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
24 %option noyywrap
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
25
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
26 %{
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
27 // PKG_ADD: mark_as_rawcommand ("__gnuplot_plot__");
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
28 // PKG_ADD: mark_as_rawcommand ("__gnuplot_splot__");
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
29 // PKG_ADD: mark_as_rawcommand ("__gnuplot_replot__");
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
30
5796
20f4bd627a74 [project @ 2006-05-09 02:04:54 by jwe]
jwe
parents: 5794
diff changeset
31 // PKG_ADD: mark_as_command ("__gnuplot_set__");
5790
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
32 // PKG_ADD: mark_as_command ("__gnuplot_show__");
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
33
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
34 #ifdef HAVE_CONFIG_H
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
35 #include <config.h>
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
36 #endif
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
37
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
38 #include <map>
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
39 #include <string>
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
40 #include <fstream>
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
41 #include <iostream>
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
42 #include <sstream>
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
43
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
44 #ifdef HAVE_UNISTD_H
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
45 #ifdef HAVE_SYS_TYPES_H
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
46 #include <sys/types.h>
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
47 #endif
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
48 #include <unistd.h>
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
49 #endif
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
50
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
51 #include "file-ops.h"
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
52 #include "oct-env.h"
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
53
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
54 #include "defun-dld.h"
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
55 #include "file-io.h"
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
56 #include "gripes.h"
5958
85c7dc4afe6b [project @ 2006-08-23 18:35:38 by jwe]
jwe
parents: 5832
diff changeset
57 #include "ls-oct-ascii.h"
5790
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
58 #include "parse.h"
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
59 #include "procstream.h"
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
60 #include "sighandlers.h"
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
61 #include "utils.h"
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
62 #include "variables.h"
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
63
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
64 enum _toktype
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
65 {
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
66 START_PAREN = 1,
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
67 END_PAREN,
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
68 START_BRACE,
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
69 END_BRACE,
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
70 START_BRACKET,
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
71 END_BRACKET,
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
72 COLON,
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
73 SEMICOLON,
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
74 COMMA,
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
75 QUOTE,
5958
85c7dc4afe6b [project @ 2006-08-23 18:35:38 by jwe]
jwe
parents: 5832
diff changeset
76 DOLLAR,
5790
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
77 IDENT,
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
78 NUMBER,
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
79 BINOP,
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
80 UNOP,
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
81 STRING,
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
82 OTHER,
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
83 TITLE,
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
84 USING,
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
85 WITH,
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
86 AXES,
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
87 CLEAR
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
88 };
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
89
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
90 typedef bool (*pred) (const int);
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
91
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
92 class
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
93 gpt_parse_error
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
94 {
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
95 public:
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
96 gpt_parse_error (void) : msg () { }
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
97 gpt_parse_error (std::string errmsg) : msg (errmsg) { }
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
98
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
99 std::string msg;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
100 };
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
101
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
102 static bool gpt_quote_is_transpose;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
103 static bool gpt_allow_plotkw;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
104 static int gpt_parens;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
105 static int gpt_brackets;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
106 static int gpt_braces;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
107
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
108 static bool can_be_plotkw (void);
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
109
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
110 static int is_plot_keyword (const std::string& s);
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
111
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
112 static int handle_string (char delim);
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
113 static std::string strbuf;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
114
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
115 %}
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
116
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
117 D [0-9]
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
118 S [ \t]
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
119 IDENT ([_a-zA-Z@][_a-zA-Z0-9]*)
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
120 EXPON ([DdEe][+-]?{D}+)
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
121 NUMBER (({D}+\.?{D}*{EXPON}?)|(\.{D}+{EXPON}?)|(0[xX][0-9a-fA-F]+))
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
122 NOT ((\~)|(\!))
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
123 /* NOT is not strictly a binary operator, but is close enough for us. */
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
124 BINOP (({NOT})|(\.?([\*/\\^+-]|\*\*)=?)|([<=~!>&|]=)|([=&|<>]{1,2})|(<<=)|(>>=)|(\.))
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
125 /* single quote (') transpose operator is handled separately. */
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
126 UNOP ((\+\+)|(\-\-)|(\.'))
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
127
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
128 %%
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
129
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
130 "(" {
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
131 gpt_quote_is_transpose = false;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
132 gpt_parens++;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
133 return START_PAREN;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
134 }
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
135
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
136 ")" {
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
137 gpt_quote_is_transpose = true;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
138 gpt_parens--;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
139 return END_PAREN;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
140 }
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
141
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
142 "{" {
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
143 gpt_quote_is_transpose = false;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
144 gpt_braces++;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
145 return START_BRACE;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
146 }
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
147
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
148 "}" {
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
149 gpt_quote_is_transpose = true;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
150 gpt_braces--;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
151 return END_BRACE;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
152 }
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
153
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
154 "[" {
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
155 gpt_quote_is_transpose = false;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
156 gpt_brackets++;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
157 return START_BRACKET;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
158 }
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
159
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
160 "]" {
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
161 gpt_quote_is_transpose = true;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
162 gpt_brackets--;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
163 return END_BRACKET;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
164 }
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
165
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
166 ":" {
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
167 gpt_quote_is_transpose = false;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
168 return COLON;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
169 }
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
170
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
171 ";" {
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
172 gpt_quote_is_transpose = false;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
173 return SEMICOLON;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
174 }
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
175
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
176 "," {
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
177 gpt_quote_is_transpose = false;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
178 return COMMA;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
179 }
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
180
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
181 "'" {
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
182 if (gpt_quote_is_transpose)
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
183 {
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
184 gpt_allow_plotkw = true;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
185 return QUOTE;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
186 }
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
187 else
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
188 {
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
189 gpt_quote_is_transpose = true;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
190 gpt_allow_plotkw = true;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
191 return handle_string ('\'');
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
192 }
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
193 }
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
194
5958
85c7dc4afe6b [project @ 2006-08-23 18:35:38 by jwe]
jwe
parents: 5832
diff changeset
195 "$" {
85c7dc4afe6b [project @ 2006-08-23 18:35:38 by jwe]
jwe
parents: 5832
diff changeset
196 gpt_quote_is_transpose = false;
85c7dc4afe6b [project @ 2006-08-23 18:35:38 by jwe]
jwe
parents: 5832
diff changeset
197 return DOLLAR;
85c7dc4afe6b [project @ 2006-08-23 18:35:38 by jwe]
jwe
parents: 5832
diff changeset
198 }
85c7dc4afe6b [project @ 2006-08-23 18:35:38 by jwe]
jwe
parents: 5832
diff changeset
199
5790
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
200 "\"" {
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
201 return handle_string ('"');
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
202 }
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
203
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
204 {IDENT} {
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
205 int itok = 0;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
206 if (can_be_plotkw () && (itok = is_plot_keyword (yytext)))
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
207 {
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
208 gpt_quote_is_transpose = false;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
209 gpt_allow_plotkw = true;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
210 return itok;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
211 }
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
212 else if (std::string (yytext) == "function")
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
213 throw gpt_parse_error ("function keyword not allowed in plot commands");
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
214 else
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
215 {
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
216 gpt_quote_is_transpose = true;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
217 gpt_allow_plotkw = true;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
218 return IDENT;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
219 }
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
220 }
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
221
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
222 {D}+/\.[\*/\\^'] | /* ' */
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
223 {NUMBER} {
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
224 gpt_quote_is_transpose = true;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
225 gpt_allow_plotkw = true;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
226 return NUMBER;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
227 }
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
228
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
229 {BINOP} {
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
230 gpt_quote_is_transpose = false;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
231 gpt_allow_plotkw = false;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
232 return BINOP;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
233 }
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
234
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
235 {UNOP} {
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
236 gpt_quote_is_transpose = false;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
237 gpt_allow_plotkw = true;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
238 return UNOP;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
239 }
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
240
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
241 {S} { /* Ignore spaces and tabs outside of character strings. */ }
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
242
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
243 . {
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
244 gpt_quote_is_transpose = false;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
245 gpt_allow_plotkw = true;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
246 warning ("unknown token = \"%s\" in plot command", yytext);
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
247 return OTHER;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
248 }
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
249
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
250 %%
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
251
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
252 // ------------------------------------------------------------
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
253 // Interface to external gnuplot process(es), including gnuplot
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
254 // command parser.
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
255 // ------------------------------------------------------------
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
256
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
257 // The name of the shell command to execute to start gnuplot.
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
258 static std::string Vgnuplot_binary = GNUPLOT_BINARY;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
259
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
260 // Append -title "Figure NN" to the gnuplot command?
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
261 static bool Vgnuplot_use_title_option = octave_env::have_x11_display ();
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
262
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
263 // Gnuplot command strings that we use.
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
264 static std::string Vgnuplot_command_plot = "pl";
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
265 static std::string Vgnuplot_command_replot = "rep";
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
266 static std::string Vgnuplot_command_splot = "sp";
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
267 static std::string Vgnuplot_command_using = "u";
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
268 static std::string Vgnuplot_command_with = "w";
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
269 static std::string Vgnuplot_command_axes = "ax";
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
270 static std::string Vgnuplot_command_title = "t";
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
271 static std::string Vgnuplot_command_end = "\n";
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
272
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
273 // Check if the parser state is such that a plot keyword can occur.
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
274
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
275 static bool
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
276 can_be_plotkw (void)
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
277 {
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
278 return (gpt_allow_plotkw
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
279 && (gpt_braces == 0)
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
280 && (gpt_brackets == 0)
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
281 && (gpt_parens == 0));
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
282 }
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
283
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
284 // Check to see if a character string matches any one of the plot
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
285 // option keywords. Don't match abbreviations for clear, since that's
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
286 // not a gnuplot keyword (users will probably only expect to be able
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
287 // to abbreviate actual gnuplot keywords).
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
288
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
289 static int
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
290 is_plot_keyword (const std::string& s)
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
291 {
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
292 if (almost_match ("title", s, 1))
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
293 return TITLE;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
294 else if (almost_match ("using", s, 1))
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
295 return USING;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
296 else if (almost_match ("with", s, 1))
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
297 return WITH;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
298 else if (almost_match ("axes", s, 2) || almost_match ("axis", s, 2))
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
299 return AXES;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
300 else if ("clear" == s)
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
301 return CLEAR;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
302 else
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
303 return 0;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
304 }
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
305
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
306 // This is used to handle character strings. Kludge alert.
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
307
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
308 static int
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
309 handle_string (char delim)
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
310 {
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
311 int c;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
312 bool escape_pending = false;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
313
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
314 strbuf = std::string (1, delim);
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
315
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
316 while ((c = yyinput ()) != EOF)
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
317 {
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
318 if (c == '\\')
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
319 {
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
320 if (escape_pending)
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
321 {
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
322 strbuf += static_cast<char> (c);
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
323 escape_pending = false;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
324 }
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
325 else
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
326 {
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
327 strbuf += static_cast<char> (c);
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
328 escape_pending = true;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
329 }
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
330 continue;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
331 }
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
332 else if (c == '\n')
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
333 {
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
334 error ("unterminated string constant");
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
335 break;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
336 }
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
337 else if (c == delim)
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
338 {
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
339 if (escape_pending)
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
340 strbuf += static_cast<char> (c);
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
341 else
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
342 {
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
343 c = yyinput ();
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
344
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
345 if (c == delim)
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
346 {
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
347 strbuf += static_cast<char> (c);
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
348 strbuf += static_cast<char> (c);
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
349 }
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
350 else
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
351 {
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
352 yyunput (c, yytext);
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
353 strbuf += static_cast<char> (delim);
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
354 return STRING;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
355 }
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
356 }
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
357 }
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
358 else
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
359 strbuf += static_cast<char> (c);
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
360
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
361 escape_pending = false;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
362 }
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
363
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
364 throw gpt_parse_error ("unterminated string");
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
365
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
366 return 0;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
367 }
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
368
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
369 // (Probably not necessesary, but current Matlab style plot functions
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
370 // break without this (they emit too short gnuplot commands))
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
371
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
372 static std::string
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
373 plot_style_token (const std::string& s)
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
374 {
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
375 std::string retval;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
376
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
377 // FIXME -- specify minimum match length for these.
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
378 static const char *plot_styles[] =
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
379 {
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
380 "boxes",
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
381 "boxerrorbars",
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
382 "boxxyerrorbars",
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
383 "candlesticks",
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
384 "dots",
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
385 "errorbars",
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
386 "financebars",
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
387 "fsteps",
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
388 "histeps",
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
389 "impulses",
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
390 "lines",
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
391 "linespoints",
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
392 "points",
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
393 "steps",
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
394 "vector",
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
395 "xerrorbars",
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
396 "xyerrorbars",
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
397 "yerrorbars",
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
398 0,
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
399 };
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
400
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
401 const char * const *tmp = plot_styles;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
402 while (*tmp)
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
403 {
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
404 if (almost_match (*tmp, s.c_str ()))
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
405 {
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
406 retval = *tmp;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
407 break;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
408 }
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
409
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
410 tmp++;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
411 }
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
412
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
413 return retval;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
414 }
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
415
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
416 // Some predicates on tokens
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
417
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
418 // Return true for ":".
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
419
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
420 static bool
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
421 colonp (const int tok)
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
422 {
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
423 return (tok == COLON);
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
424 }
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
425
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
426 // Return TRUE for "]".
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
427
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
428 static bool
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
429 endbracketp (const int tok)
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
430 {
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
431 return (tok == END_BRACKET);
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
432 }
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
433
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
434 // Return TRUE for plot token, comma or end of input.
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
435
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
436 static bool
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
437 plottok_or_end_p (const int tok)
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
438 {
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
439 return (tok == TITLE
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
440 || tok == USING
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
441 || tok == WITH
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
442 || tok == AXES
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
443 || tok == CLEAR
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
444 || tok == COMMA
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
445 || tok == 0);
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
446 }
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
447
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
448 // Equivalent to (colonp (tok) || plottok_or_end_p (tok)).
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
449
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
450 static bool
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
451 colon_plottok_or_end_p (const int tok)
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
452 {
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
453 return (tok == COLON || plottok_or_end_p (tok));
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
454 }
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
455
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
456 // read until test is true and delimiters are balanced, or end of input.
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
457 // Return the last token in lasttok
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
458
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
459 static std::string
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
460 read_until (pred test, int& lasttok) throw (gpt_parse_error)
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
461 {
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
462 int tok;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
463
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
464 // We have to maintain balanced delimiters per subexpression too.
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
465 int brackets = 0;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
466 int parens = 0;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
467 int braces = 0;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
468 std::string s;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
469
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
470 tok = gptlex ();
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
471
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
472 while (tok && ! (test (tok)
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
473 && brackets == 0
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
474 && parens == 0
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
475 && braces == 0))
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
476 {
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
477 switch (tok)
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
478 {
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
479 case START_BRACKET:
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
480 brackets++;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
481 break;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
482
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
483 case END_BRACKET:
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
484 brackets--;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
485 break;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
486
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
487 case START_PAREN:
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
488 parens++;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
489 break;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
490
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
491 case END_PAREN:
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
492 parens--;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
493 break;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
494
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
495 case START_BRACE:
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
496 braces++;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
497 break;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
498
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
499 case END_BRACE:
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
500 braces--;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
501 break;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
502
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
503 default:
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
504 break;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
505 }
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
506
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
507 s += (tok == STRING ? strbuf : std::string (yytext)) + " ";
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
508
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
509 tok = gptlex ();
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
510 }
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
511
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
512 // Throw error only if we've reached the end token and the test
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
513 // doesn't accept it.
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
514
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
515 if (! test (tok) && ! tok)
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
516 throw gpt_parse_error ("unexpected end of input");
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
517
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
518 lasttok = tok;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
519
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
520 return s;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
521 }
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
522
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
523 // Eval the two expressions giving limits of range and print it.
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
524
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
525 static std::string
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
526 printrange (std::string starts, std::string ends)
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
527 {
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
528 octave_value startv, endv;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
529 int status;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
530 std::string s;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
531 std::ostringstream range_buf;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
532
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
533 range_buf << "[";
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
534
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
535 if (! starts.empty ())
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
536 {
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
537 startv = eval_string (starts, true, status);
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
538 if (! startv.is_real_scalar ())
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
539 throw gpt_parse_error ();
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
540 startv.print_raw (range_buf);
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
541 }
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
542
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
543 range_buf << ":";
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
544
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
545 if (! ends.empty ())
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
546 {
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
547 endv = eval_string (ends, true, status);
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
548 if (! endv.is_real_scalar ())
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
549 throw gpt_parse_error ();
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
550 endv.print_raw (range_buf);
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
551 }
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
552
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
553 range_buf << "]";
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
554
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
555 s = range_buf.str ();
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
556
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
557 return s;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
558 }
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
559
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
560 // Handle plot parameters.
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
561
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
562 // Parse, evaluate and print colon separated expressions in the using
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
563 // plot parameter. The use of trailing format string is not supported.
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
564
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
565 static std::string
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
566 handle_using (int& lasttok)
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
567 {
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
568 int tok;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
569 std::string expr_str;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
570 std::string retstr = Vgnuplot_command_using + " ";
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
571 bool out = false;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
572
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
573 octave_value tmp_data;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
574 int status;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
575 while (! out)
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
576 {
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
577 expr_str = read_until (colon_plottok_or_end_p, tok);
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
578
5958
85c7dc4afe6b [project @ 2006-08-23 18:35:38 by jwe]
jwe
parents: 5832
diff changeset
579 if (! expr_str.empty () && expr_str[0] == '(')
85c7dc4afe6b [project @ 2006-08-23 18:35:38 by jwe]
jwe
parents: 5832
diff changeset
580 retstr += expr_str;
85c7dc4afe6b [project @ 2006-08-23 18:35:38 by jwe]
jwe
parents: 5832
diff changeset
581 else
85c7dc4afe6b [project @ 2006-08-23 18:35:38 by jwe]
jwe
parents: 5832
diff changeset
582 {
85c7dc4afe6b [project @ 2006-08-23 18:35:38 by jwe]
jwe
parents: 5832
diff changeset
583 tmp_data = eval_string (expr_str, true, status);
85c7dc4afe6b [project @ 2006-08-23 18:35:38 by jwe]
jwe
parents: 5832
diff changeset
584 if (status != 0 || ! tmp_data.is_real_scalar ())
85c7dc4afe6b [project @ 2006-08-23 18:35:38 by jwe]
jwe
parents: 5832
diff changeset
585 throw gpt_parse_error ();
5790
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
586
5958
85c7dc4afe6b [project @ 2006-08-23 18:35:38 by jwe]
jwe
parents: 5832
diff changeset
587 std::ostringstream tmp_buf;
85c7dc4afe6b [project @ 2006-08-23 18:35:38 by jwe]
jwe
parents: 5832
diff changeset
588 tmp_data.print_raw (tmp_buf);
85c7dc4afe6b [project @ 2006-08-23 18:35:38 by jwe]
jwe
parents: 5832
diff changeset
589 retstr += tmp_buf.str ();
85c7dc4afe6b [project @ 2006-08-23 18:35:38 by jwe]
jwe
parents: 5832
diff changeset
590 }
5790
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
591
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
592 if (tok == COLON)
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
593 retstr += ":";
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
594 else
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
595 out = true;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
596 }
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
597
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
598 lasttok = tok;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
599
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
600 return retstr;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
601 }
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
602
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
603 // Presently just passes the linewidth, pointtype etc. tokens as they are.
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
604
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
605 static std::string
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
606 handle_style (int& lasttok)
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
607 {
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
608 std::string retstr = Vgnuplot_command_with + " ";
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
609 std::string style;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
610
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
611 lasttok = gptlex ();
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
612
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
613 if (lasttok != IDENT)
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
614 throw gpt_parse_error ("expected plot style token");
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
615
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
616 style = std::string (yytext);
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
617 style = plot_style_token (style);
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
618
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
619 if (! style.empty ())
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
620 retstr += style;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
621 else
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
622 retstr += std::string (yytext);
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
623
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
624 // FIXME -- should evaluate the remaining tokens, but this
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
625 // needs changes in the parser.
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
626 retstr += " " + read_until (plottok_or_end_p, lasttok);
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
627
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
628 return retstr;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
629 }
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
630
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
631 // Axes has only one qualifier keyword, which is not evaluated.
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
632
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
633 static std::string
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
634 handle_axes (int& lasttok)
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
635 {
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
636 return Vgnuplot_command_axes + " " + read_until (plottok_or_end_p, lasttok);
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
637 }
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
638
6171
4508e9d73ea1 [project @ 2006-11-15 20:03:18 by jwe]
jwe
parents: 6030
diff changeset
639 static void
4508e9d73ea1 [project @ 2006-11-15 20:03:18 by jwe]
jwe
parents: 6030
diff changeset
640 write_data (std::ostream& os, const octave_value& val,
4508e9d73ea1 [project @ 2006-11-15 20:03:18 by jwe]
jwe
parents: 6030
diff changeset
641 int ndim = 2, bool parametric = false,
4508e9d73ea1 [project @ 2006-11-15 20:03:18 by jwe]
jwe
parents: 6030
diff changeset
642 const std::string& name = std::string ())
4508e9d73ea1 [project @ 2006-11-15 20:03:18 by jwe]
jwe
parents: 6030
diff changeset
643 {
4508e9d73ea1 [project @ 2006-11-15 20:03:18 by jwe]
jwe
parents: 6030
diff changeset
644 switch (ndim)
4508e9d73ea1 [project @ 2006-11-15 20:03:18 by jwe]
jwe
parents: 6030
diff changeset
645 {
4508e9d73ea1 [project @ 2006-11-15 20:03:18 by jwe]
jwe
parents: 6030
diff changeset
646 case 2:
4508e9d73ea1 [project @ 2006-11-15 20:03:18 by jwe]
jwe
parents: 6030
diff changeset
647 save_ascii_data_for_plotting (os, val, name);
4508e9d73ea1 [project @ 2006-11-15 20:03:18 by jwe]
jwe
parents: 6030
diff changeset
648 break;
4508e9d73ea1 [project @ 2006-11-15 20:03:18 by jwe]
jwe
parents: 6030
diff changeset
649
4508e9d73ea1 [project @ 2006-11-15 20:03:18 by jwe]
jwe
parents: 6030
diff changeset
650 case 3:
4508e9d73ea1 [project @ 2006-11-15 20:03:18 by jwe]
jwe
parents: 6030
diff changeset
651 save_three_d (os, val, parametric);
4508e9d73ea1 [project @ 2006-11-15 20:03:18 by jwe]
jwe
parents: 6030
diff changeset
652 break;
4508e9d73ea1 [project @ 2006-11-15 20:03:18 by jwe]
jwe
parents: 6030
diff changeset
653
4508e9d73ea1 [project @ 2006-11-15 20:03:18 by jwe]
jwe
parents: 6030
diff changeset
654 default:
4508e9d73ea1 [project @ 2006-11-15 20:03:18 by jwe]
jwe
parents: 6030
diff changeset
655 gripe_2_or_3_dim_plot ();
4508e9d73ea1 [project @ 2006-11-15 20:03:18 by jwe]
jwe
parents: 6030
diff changeset
656 break;
4508e9d73ea1 [project @ 2006-11-15 20:03:18 by jwe]
jwe
parents: 6030
diff changeset
657 }
4508e9d73ea1 [project @ 2006-11-15 20:03:18 by jwe]
jwe
parents: 6030
diff changeset
658 }
4508e9d73ea1 [project @ 2006-11-15 20:03:18 by jwe]
jwe
parents: 6030
diff changeset
659
4508e9d73ea1 [project @ 2006-11-15 20:03:18 by jwe]
jwe
parents: 6030
diff changeset
660 static void
4508e9d73ea1 [project @ 2006-11-15 20:03:18 by jwe]
jwe
parents: 6030
diff changeset
661 write_inline_data (std::ostream& os, const octave_value& val,
4508e9d73ea1 [project @ 2006-11-15 20:03:18 by jwe]
jwe
parents: 6030
diff changeset
662 int ndim = 2, bool parametric = false)
4508e9d73ea1 [project @ 2006-11-15 20:03:18 by jwe]
jwe
parents: 6030
diff changeset
663 {
4508e9d73ea1 [project @ 2006-11-15 20:03:18 by jwe]
jwe
parents: 6030
diff changeset
664 write_data (os, val, ndim, parametric);
4508e9d73ea1 [project @ 2006-11-15 20:03:18 by jwe]
jwe
parents: 6030
diff changeset
665 os << "e" << std::endl;
4508e9d73ea1 [project @ 2006-11-15 20:03:18 by jwe]
jwe
parents: 6030
diff changeset
666 }
4508e9d73ea1 [project @ 2006-11-15 20:03:18 by jwe]
jwe
parents: 6030
diff changeset
667
5790
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
668 static std::string
6171
4508e9d73ea1 [project @ 2006-11-15 20:03:18 by jwe]
jwe
parents: 6030
diff changeset
669 save_in_tmp_file (const octave_value& val, int ndim = 2,
4508e9d73ea1 [project @ 2006-11-15 20:03:18 by jwe]
jwe
parents: 6030
diff changeset
670 bool parametric = false)
5790
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
671 {
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
672 std::string name = file_ops::tempnam ("", "oct-");
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
673
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
674 if (! name.empty ())
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
675 {
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
676 std::ofstream file (name.c_str ());
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
677
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
678 if (file)
6171
4508e9d73ea1 [project @ 2006-11-15 20:03:18 by jwe]
jwe
parents: 6030
diff changeset
679 write_data (file, val, ndim, parametric, name);
5790
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
680 else
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
681 {
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
682 error ("couldn't open temporary output file `%s'", name.c_str ());
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
683 name.resize (0);
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
684 }
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
685 }
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
686
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
687 return name;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
688 }
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
689
7138
f70121606be5 [project @ 2007-11-09 02:06:54 by jwe]
jwe
parents: 7117
diff changeset
690 #define WARN_OBSOLETE(nm) \
f70121606be5 [project @ 2007-11-09 02:06:54 by jwe]
jwe
parents: 7117
diff changeset
691 do \
f70121606be5 [project @ 2007-11-09 02:06:54 by jwe]
jwe
parents: 7117
diff changeset
692 { \
7139
9dd8e2c98bd2 [project @ 2007-11-09 02:15:22 by jwe]
jwe
parents: 7138
diff changeset
693 static bool warned = false; \
7138
f70121606be5 [project @ 2007-11-09 02:06:54 by jwe]
jwe
parents: 7117
diff changeset
694 \
f70121606be5 [project @ 2007-11-09 02:06:54 by jwe]
jwe
parents: 7117
diff changeset
695 if (! warned) \
f70121606be5 [project @ 2007-11-09 02:06:54 by jwe]
jwe
parents: 7117
diff changeset
696 { \
7140
beb8c3771579 [project @ 2007-11-09 02:32:18 by jwe]
jwe
parents: 7139
diff changeset
697 warning ("%s: this function is obsolete and will be removed from a future version of Octave", nm); \
7138
f70121606be5 [project @ 2007-11-09 02:06:54 by jwe]
jwe
parents: 7117
diff changeset
698 \
f70121606be5 [project @ 2007-11-09 02:06:54 by jwe]
jwe
parents: 7117
diff changeset
699 warned = true; \
f70121606be5 [project @ 2007-11-09 02:06:54 by jwe]
jwe
parents: 7117
diff changeset
700 } \
f70121606be5 [project @ 2007-11-09 02:06:54 by jwe]
jwe
parents: 7117
diff changeset
701 } \
f70121606be5 [project @ 2007-11-09 02:06:54 by jwe]
jwe
parents: 7117
diff changeset
702 while (0)
f70121606be5 [project @ 2007-11-09 02:06:54 by jwe]
jwe
parents: 7117
diff changeset
703
6171
4508e9d73ea1 [project @ 2006-11-15 20:03:18 by jwe]
jwe
parents: 6030
diff changeset
704 DEFUN_DLD (__gnuplot_save_data__, args, ,
4508e9d73ea1 [project @ 2006-11-15 20:03:18 by jwe]
jwe
parents: 6030
diff changeset
705 "-*- texinfo -*-\n\
4508e9d73ea1 [project @ 2006-11-15 20:03:18 by jwe]
jwe
parents: 6030
diff changeset
706 @deftypefn {Loadable Function} {} __gnuplot_save_data__ (@var{data}, @var{ndim}, @var{parametric})\n\
7138
f70121606be5 [project @ 2007-11-09 02:06:54 by jwe]
jwe
parents: 7117
diff changeset
707 @strong{This function is obsolete and will be removed from a future version\n\
f70121606be5 [project @ 2007-11-09 02:06:54 by jwe]
jwe
parents: 7117
diff changeset
708 of Octave.}\n\
6171
4508e9d73ea1 [project @ 2006-11-15 20:03:18 by jwe]
jwe
parents: 6030
diff changeset
709 @end deftypefn")
4508e9d73ea1 [project @ 2006-11-15 20:03:18 by jwe]
jwe
parents: 6030
diff changeset
710 {
4508e9d73ea1 [project @ 2006-11-15 20:03:18 by jwe]
jwe
parents: 6030
diff changeset
711 octave_value retval;
4508e9d73ea1 [project @ 2006-11-15 20:03:18 by jwe]
jwe
parents: 6030
diff changeset
712
4508e9d73ea1 [project @ 2006-11-15 20:03:18 by jwe]
jwe
parents: 6030
diff changeset
713 int nargin = args.length ();
4508e9d73ea1 [project @ 2006-11-15 20:03:18 by jwe]
jwe
parents: 6030
diff changeset
714
4508e9d73ea1 [project @ 2006-11-15 20:03:18 by jwe]
jwe
parents: 6030
diff changeset
715 if (nargin > 0 && nargin < 4)
4508e9d73ea1 [project @ 2006-11-15 20:03:18 by jwe]
jwe
parents: 6030
diff changeset
716 {
7141
63ba061a3036 [project @ 2007-11-09 02:35:35 by jwe]
jwe
parents: 7140
diff changeset
717 WARN_OBSOLETE ("__gnuplot_save_data__");
63ba061a3036 [project @ 2007-11-09 02:35:35 by jwe]
jwe
parents: 7140
diff changeset
718
6171
4508e9d73ea1 [project @ 2006-11-15 20:03:18 by jwe]
jwe
parents: 6030
diff changeset
719 int ndim = 2;
4508e9d73ea1 [project @ 2006-11-15 20:03:18 by jwe]
jwe
parents: 6030
diff changeset
720 bool parametric = false;
4508e9d73ea1 [project @ 2006-11-15 20:03:18 by jwe]
jwe
parents: 6030
diff changeset
721
4508e9d73ea1 [project @ 2006-11-15 20:03:18 by jwe]
jwe
parents: 6030
diff changeset
722 if (nargin > 1)
4508e9d73ea1 [project @ 2006-11-15 20:03:18 by jwe]
jwe
parents: 6030
diff changeset
723 {
4508e9d73ea1 [project @ 2006-11-15 20:03:18 by jwe]
jwe
parents: 6030
diff changeset
724 ndim = args(1).int_value ();
4508e9d73ea1 [project @ 2006-11-15 20:03:18 by jwe]
jwe
parents: 6030
diff changeset
725
4508e9d73ea1 [project @ 2006-11-15 20:03:18 by jwe]
jwe
parents: 6030
diff changeset
726 if (! error_state)
4508e9d73ea1 [project @ 2006-11-15 20:03:18 by jwe]
jwe
parents: 6030
diff changeset
727 {
4508e9d73ea1 [project @ 2006-11-15 20:03:18 by jwe]
jwe
parents: 6030
diff changeset
728 if (nargin > 2)
4508e9d73ea1 [project @ 2006-11-15 20:03:18 by jwe]
jwe
parents: 6030
diff changeset
729 parametric = args(2).bool_value ();
4508e9d73ea1 [project @ 2006-11-15 20:03:18 by jwe]
jwe
parents: 6030
diff changeset
730 }
4508e9d73ea1 [project @ 2006-11-15 20:03:18 by jwe]
jwe
parents: 6030
diff changeset
731 }
4508e9d73ea1 [project @ 2006-11-15 20:03:18 by jwe]
jwe
parents: 6030
diff changeset
732
4508e9d73ea1 [project @ 2006-11-15 20:03:18 by jwe]
jwe
parents: 6030
diff changeset
733 if (! error_state)
4508e9d73ea1 [project @ 2006-11-15 20:03:18 by jwe]
jwe
parents: 6030
diff changeset
734 {
4508e9d73ea1 [project @ 2006-11-15 20:03:18 by jwe]
jwe
parents: 6030
diff changeset
735 std::string file = save_in_tmp_file (args(0), ndim, parametric);
4508e9d73ea1 [project @ 2006-11-15 20:03:18 by jwe]
jwe
parents: 6030
diff changeset
736
4508e9d73ea1 [project @ 2006-11-15 20:03:18 by jwe]
jwe
parents: 6030
diff changeset
737 mark_for_deletion (file);
4508e9d73ea1 [project @ 2006-11-15 20:03:18 by jwe]
jwe
parents: 6030
diff changeset
738
4508e9d73ea1 [project @ 2006-11-15 20:03:18 by jwe]
jwe
parents: 6030
diff changeset
739 retval = file;
4508e9d73ea1 [project @ 2006-11-15 20:03:18 by jwe]
jwe
parents: 6030
diff changeset
740 }
4508e9d73ea1 [project @ 2006-11-15 20:03:18 by jwe]
jwe
parents: 6030
diff changeset
741 }
4508e9d73ea1 [project @ 2006-11-15 20:03:18 by jwe]
jwe
parents: 6030
diff changeset
742 else
4508e9d73ea1 [project @ 2006-11-15 20:03:18 by jwe]
jwe
parents: 6030
diff changeset
743 print_usage ();
4508e9d73ea1 [project @ 2006-11-15 20:03:18 by jwe]
jwe
parents: 6030
diff changeset
744
4508e9d73ea1 [project @ 2006-11-15 20:03:18 by jwe]
jwe
parents: 6030
diff changeset
745 return retval;
4508e9d73ea1 [project @ 2006-11-15 20:03:18 by jwe]
jwe
parents: 6030
diff changeset
746 }
4508e9d73ea1 [project @ 2006-11-15 20:03:18 by jwe]
jwe
parents: 6030
diff changeset
747
5790
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
748 static int
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
749 get_current_figure (void)
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
750 {
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
751 int retval = 1;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
752
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
753 octave_value cf = get_global_value ("__current_figure__", true);
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
754
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
755 if (cf.is_defined ())
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
756 retval = cf.int_value ();
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
757 else
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
758 set_global_value ("__current_figure__", retval);
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
759
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
760 return retval;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
761 }
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
762
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
763 class
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
764 gnuplot
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
765 {
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
766 protected:
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
767
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
768 gnuplot (void)
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
769 : plot_line_count (0), parametric_plot (false),
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
770 use_title_option (Vgnuplot_use_title_option),
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
771 gnuplot_exe (Vgnuplot_binary),
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
772 gnuplot_terminal_type (), plot_stream () { }
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
773
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
774 public:
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
775
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
776 ~gnuplot (void) { }
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
777
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
778 static bool have_instance (void);
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
779
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
780 static bool ensure_instance (void);
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
781
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
782 static bool ensure_plot_stream (void);
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
783
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
784 static void open (void);
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
785
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
786 static void close (void);
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
787
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
788 static void close_all (void);
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
789
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
790 static bool plot_stream_event_handler (pid_t pid, int status);
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
791
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
792 static void send (const std::string& cmd)
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
793 {
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
794 if (ensure_plot_stream ())
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
795 instance->do_send (cmd);
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
796 }
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
797
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
798 static void send_raw (const std::string& cmd)
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
799 {
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
800 if (ensure_plot_stream ())
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
801 instance->do_send_raw (cmd);
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
802 }
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
803
6171
4508e9d73ea1 [project @ 2006-11-15 20:03:18 by jwe]
jwe
parents: 6030
diff changeset
804 static void send_inline_data (const octave_value& val, int ndim,
4508e9d73ea1 [project @ 2006-11-15 20:03:18 by jwe]
jwe
parents: 6030
diff changeset
805 bool parametric)
4508e9d73ea1 [project @ 2006-11-15 20:03:18 by jwe]
jwe
parents: 6030
diff changeset
806 {
4508e9d73ea1 [project @ 2006-11-15 20:03:18 by jwe]
jwe
parents: 6030
diff changeset
807 if (ensure_plot_stream ())
4508e9d73ea1 [project @ 2006-11-15 20:03:18 by jwe]
jwe
parents: 6030
diff changeset
808 instance->do_send_inline_data (val, ndim, parametric);
4508e9d73ea1 [project @ 2006-11-15 20:03:18 by jwe]
jwe
parents: 6030
diff changeset
809 }
4508e9d73ea1 [project @ 2006-11-15 20:03:18 by jwe]
jwe
parents: 6030
diff changeset
810
5790
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
811 static void clear (void)
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
812 {
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
813 if (ensure_plot_stream ())
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
814 instance->do_clear ();
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
815 }
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
816
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
817 static void set (const string_vector& argv)
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
818 {
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
819 if (ensure_plot_stream ())
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
820 instance->do_set (argv);
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
821 }
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
822
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
823 static void show (const string_vector& argv)
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
824 {
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
825 if (ensure_plot_stream ())
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
826 instance->do_show (argv);
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
827 }
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
828
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
829 static void set_gnuplot_exe (const std::string& exe)
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
830 {
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
831 if (ensure_instance ())
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
832 instance->do_set_gnuplot_exe (exe);
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
833 }
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
834
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
835 static void set_gnuplot_use_title_option (bool opt)
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
836 {
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
837 if (ensure_instance ())
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
838 instance->do_set_gnuplot_use_title_option (opt);
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
839 }
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
840
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
841 // FIXME -- should only remove tmp files associated with
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
842 // gnuplot?
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
843 static void cleanup_tmp_files (void) { ::cleanup_tmp_files (); }
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
844
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
845 static void plot (const string_vector& argv)
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
846 {
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
847 if (ensure_plot_stream ())
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
848 instance->do_plot (argv);
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
849 }
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
850
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
851 private:
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
852
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
853 static gnuplot *instance;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
854
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
855 static std::map<int, gnuplot *> instance_map;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
856
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
857 // The number of lines we've plotted so far.
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
858 int plot_line_count;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
859
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
860 // Is this a parametric plot? Makes a difference for 3D plotting.
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
861 bool parametric_plot;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
862
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
863 // Should we append '-title "TITLE"' to the gnuplot command?
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
864 bool use_title_option;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
865
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
866 // The executable program to run.
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
867 std::string gnuplot_exe;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
868
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
869 // The gnuplot terminal type.
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
870 std::string gnuplot_terminal_type;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
871
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
872 // Pipe to gnuplot.
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
873 oprocstream *plot_stream;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
874
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
875 pid_t pid (void) const;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
876
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
877 static gnuplot *lookup_by_pid (pid_t pid);
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
878
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
879 void do_open (void);
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
880
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
881 void do_close (void);
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
882
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
883 void delete_plot_stream (void);
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
884
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
885 void reset_plot_stream (void);
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
886
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
887 void do_send (const std::string& cmd);
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
888
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
889 void do_send_raw (const std::string& cmd);
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
890
6171
4508e9d73ea1 [project @ 2006-11-15 20:03:18 by jwe]
jwe
parents: 6030
diff changeset
891 void do_send_inline_data (const octave_value& val, int ndim,
4508e9d73ea1 [project @ 2006-11-15 20:03:18 by jwe]
jwe
parents: 6030
diff changeset
892 bool parametric);
4508e9d73ea1 [project @ 2006-11-15 20:03:18 by jwe]
jwe
parents: 6030
diff changeset
893
5790
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
894 void do_clear (void);
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
895
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
896 void do_set (const string_vector& argv);
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
897
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
898 void do_show (const string_vector& argv);
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
899
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
900 void do_set_gnuplot_exe (const std::string& exe) { gnuplot_exe = exe; }
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
901
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
902 void do_set_gnuplot_use_title_option (bool opt) { use_title_option = opt; }
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
903
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
904 void do_plot (const string_vector& argv);
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
905
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
906 std::string
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
907 makeplot (std::string caller, std::string args) throw (gpt_parse_error);
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
908
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
909 std::string handle_title (int& lasttok);
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
910 };
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
911
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
912 gnuplot *gnuplot::instance = 0;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
913
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
914 std::map<int, gnuplot *> gnuplot::instance_map;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
915
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
916 bool
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
917 gnuplot::have_instance (void)
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
918 {
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
919 int current_figure = get_current_figure ();
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
920
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
921 if (instance_map.find (current_figure) != instance_map.end ())
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
922 {
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
923 instance = instance_map[current_figure];
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
924 return true;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
925 }
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
926 else
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
927 return false;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
928 }
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
929
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
930 bool
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
931 gnuplot::ensure_instance (void)
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
932 {
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
933 if (! have_instance ())
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
934 {
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
935 instance = new gnuplot ();
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
936
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
937 if (! instance)
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
938 {
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
939 ::error ("unable to create gnuplot object!");
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
940
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
941 return false;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
942 }
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
943 else
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
944 instance_map[get_current_figure ()] = instance;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
945 }
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
946
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
947 return true;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
948 }
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
949
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
950 bool
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
951 gnuplot::ensure_plot_stream (void)
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
952 {
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
953 if (ensure_instance ())
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
954 {
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
955 instance->do_open ();
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
956
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
957 if (error_state)
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
958 return false;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
959 }
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
960
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
961 return true;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
962 }
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
963
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
964 void
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
965 gnuplot::close (void)
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
966 {
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
967 if (have_instance ())
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
968 {
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
969 instance->do_close ();
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
970
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
971 instance_map.erase (get_current_figure ());
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
972 }
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
973 }
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
974
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
975 void
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
976 gnuplot::close_all (void)
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
977 {
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
978 for (std::map<int, gnuplot *>::const_iterator p = instance_map.begin ();
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
979 p != instance_map.end ();
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
980 p++)
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
981 {
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
982 gnuplot *elt = p->second;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
983
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
984 elt->do_close ();
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
985 }
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
986 }
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
987
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
988 pid_t
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
989 gnuplot::pid (void) const
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
990 {
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
991 return plot_stream ? plot_stream->pid () : -1;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
992 }
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
993
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
994 gnuplot *
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
995 gnuplot::lookup_by_pid (pid_t pid)
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
996 {
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
997 gnuplot *retval = 0;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
998
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
999 for (std::map<int, gnuplot *>::const_iterator p = instance_map.begin ();
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1000 p != instance_map.end ();
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1001 p++)
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1002 {
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1003 gnuplot *elt = p->second;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1004
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1005 if (elt && elt->pid () == pid)
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1006 {
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1007 retval = elt;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1008 break;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1009 }
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1010 }
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1011
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1012 return retval;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1013 }
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1014
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1015 void
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1016 gnuplot::do_open (void)
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1017 {
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1018 static bool initialized = false;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1019
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1020 if (plot_stream && ! *plot_stream)
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1021 do_close ();
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1022
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1023 if (! plot_stream)
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1024 {
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1025 initialized = false;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1026
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1027 plot_line_count = 0;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1028
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1029 std::string cmd;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1030
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1031 if (gnuplot_exe.empty ())
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1032 cmd = "gnuplot";
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1033 else
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1034 cmd = "\"" + gnuplot_exe + "\"";
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1035
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1036 // FIXME -- I'm not sure this is the right thing to do,
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1037 // but without it, C-c at the octave prompt will kill gnuplot...
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1038
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1039 #if defined (HAVE_POSIX_SIGNALS)
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1040 sigset_t nset, oset;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1041 sigemptyset (&nset);
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1042 sigaddset (&nset, SIGINT);
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1043 sigprocmask (SIG_BLOCK, &nset, &oset);
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1044 #else
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1045 volatile octave_interrupt_handler old_interrupt_handler
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1046 = octave_ignore_interrupts ();
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1047 #endif
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1048
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1049 if (use_title_option)
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1050 {
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1051 std::ostringstream buf;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1052
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1053 buf << cmd << " -title \"Figure " << get_current_figure () << "\"";
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1054
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1055 cmd = buf.str ();
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1056 }
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1057
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1058 plot_stream = new oprocstream (cmd.c_str ());
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1059
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1060 if (plot_stream && *plot_stream)
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1061 octave_child_list::insert (plot_stream->pid (),
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1062 plot_stream_event_handler);
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1063 else
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1064 {
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1065 delete_plot_stream ();
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1066
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1067 error ("plot: unable to open pipe to `%s'", cmd.c_str ());
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1068 }
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1069
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1070 #if defined (HAVE_POSIX_SIGNALS)
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1071 sigprocmask (SIG_SETMASK, &oset, 0);
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1072 #else
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1073 octave_set_interrupt_handler (old_interrupt_handler);
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1074 #endif
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1075 }
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1076
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1077 if (! error_state && plot_stream && *plot_stream && ! initialized)
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1078 {
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1079 initialized = true;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1080
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1081 do_send_raw ("set style data lines\n");
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1082
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1083 if (! gnuplot_terminal_type.empty ())
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1084 do_send_raw ("set term " + gnuplot_terminal_type
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1085 + Vgnuplot_command_end + "\n");
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1086 }
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1087 }
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1088
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1089 void
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1090 gnuplot::delete_plot_stream (void)
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1091 {
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1092 do_send_raw ("\nquit\n");
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1093
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1094 delete plot_stream;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1095 plot_stream = 0;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1096 }
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1097
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1098 void
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1099 gnuplot::reset_plot_stream (void)
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1100 {
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1101 delete_plot_stream ();
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1102
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1103 plot_line_count = 0;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1104 parametric_plot = false;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1105 }
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1106
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1107 void
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1108 gnuplot::do_close (void)
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1109 {
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1110 if (plot_stream)
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1111 {
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1112 octave_child_list::remove (plot_stream->pid ());
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1113
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1114 delete_plot_stream ();
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1115 }
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1116
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1117 plot_line_count = 0;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1118 }
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1119
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1120 bool
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1121 gnuplot::plot_stream_event_handler (pid_t pid, int status)
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1122 {
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1123 bool retval = false;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1124
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1125 if (pid > 0)
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1126 {
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1127 if (WIFEXITED (status) || WIFSIGNALLED (status))
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1128 {
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1129 gnuplot *plotter = gnuplot::lookup_by_pid (pid);
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1130
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1131 // We should only print a warning or request removal of the
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1132 // process from the child list if the process died
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1133 // unexpectedly. If do_close is responsible for
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1134 // gnuplot's death, then plotter will be 0 here and we don't
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1135 // need to do anything.
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1136
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1137 if (plotter)
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1138 {
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1139 plotter->reset_plot_stream ();
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1140
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1141 warning ("connection to external plotter (pid = %d) lost --", pid);
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1142 // Request removal of this PID from the list of child
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1143 // processes.
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1144
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1145 retval = true;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1146 }
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1147 }
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1148 }
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1149
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1150 return retval;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1151 }
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1152
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1153 void
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1154 gnuplot::do_send (const std::string& cmd)
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1155 {
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1156 int replot_len = Vgnuplot_command_replot.length ();
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1157
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1158 bool is_replot = (Vgnuplot_command_replot == cmd.substr (0, replot_len));
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1159
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1160 if (! (plot_line_count == 0 && is_replot))
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1161 do_send_raw (cmd);
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1162 }
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1163
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1164 void
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1165 gnuplot::do_send_raw (const std::string& cmd)
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1166 {
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1167 if (plot_stream && *plot_stream)
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1168 {
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1169 *plot_stream << cmd;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1170
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1171 plot_stream->flush ();
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1172 }
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1173 }
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1174
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1175 void
6171
4508e9d73ea1 [project @ 2006-11-15 20:03:18 by jwe]
jwe
parents: 6030
diff changeset
1176 gnuplot::do_send_inline_data (const octave_value& val, int ndim,
4508e9d73ea1 [project @ 2006-11-15 20:03:18 by jwe]
jwe
parents: 6030
diff changeset
1177 bool parametric)
4508e9d73ea1 [project @ 2006-11-15 20:03:18 by jwe]
jwe
parents: 6030
diff changeset
1178 {
4508e9d73ea1 [project @ 2006-11-15 20:03:18 by jwe]
jwe
parents: 6030
diff changeset
1179 if (plot_stream && *plot_stream)
4508e9d73ea1 [project @ 2006-11-15 20:03:18 by jwe]
jwe
parents: 6030
diff changeset
1180 {
4508e9d73ea1 [project @ 2006-11-15 20:03:18 by jwe]
jwe
parents: 6030
diff changeset
1181 write_inline_data (*plot_stream, val, ndim, parametric);
4508e9d73ea1 [project @ 2006-11-15 20:03:18 by jwe]
jwe
parents: 6030
diff changeset
1182
4508e9d73ea1 [project @ 2006-11-15 20:03:18 by jwe]
jwe
parents: 6030
diff changeset
1183 plot_stream->flush ();
4508e9d73ea1 [project @ 2006-11-15 20:03:18 by jwe]
jwe
parents: 6030
diff changeset
1184 }
4508e9d73ea1 [project @ 2006-11-15 20:03:18 by jwe]
jwe
parents: 6030
diff changeset
1185 }
4508e9d73ea1 [project @ 2006-11-15 20:03:18 by jwe]
jwe
parents: 6030
diff changeset
1186
4508e9d73ea1 [project @ 2006-11-15 20:03:18 by jwe]
jwe
parents: 6030
diff changeset
1187 void
5790
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1188 gnuplot::do_clear (void)
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1189 {
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1190 do_send_raw ("clear\n");
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1191
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1192 // FIXME -- instead of just clearing these things, it would
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1193 // be nice if we could reset things to a user-specified default
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1194 // state.
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1195
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1196 do_send_raw ("set title\n");
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1197 do_send_raw ("set xlabel\n");
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1198 do_send_raw ("set ylabel\n");
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1199 do_send_raw ("set nogrid\n");
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1200 do_send_raw ("set nolabel\n");
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1201
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1202 // This makes a simple `replot' not work after a `clearplot' command
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1203 // has been issued.
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1204
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1205 plot_line_count = 0;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1206 }
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1207
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1208 void
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1209 gnuplot::do_set (const string_vector& argv)
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1210 {
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1211 int argc = argv.length ();
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1212
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1213 std::ostringstream plot_buf;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1214
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1215 if (argc > 1)
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1216 {
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1217 if (almost_match ("parametric", argv[1], 3))
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1218 parametric_plot = true;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1219 else if (almost_match ("noparametric", argv[1], 5))
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1220 parametric_plot = false;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1221 else if (almost_match ("term", argv[1], 1))
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1222 {
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1223 gnuplot_terminal_type = "";
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1224 std::ostringstream buf;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1225 int i;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1226 for (i = 2; i < argc-1; i++)
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1227 buf << argv[i] << " ";
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1228 if (i < argc)
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1229 buf << argv[i];
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1230 buf << Vgnuplot_command_end;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1231 gnuplot_terminal_type = buf.str ();
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1232 }
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1233 }
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1234
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1235 int i;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1236 for (i = 0; i < argc-1; i++)
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1237 plot_buf << argv[i] << " ";
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1238
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1239 if (i < argc)
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1240 plot_buf << argv[i];
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1241
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1242 plot_buf << Vgnuplot_command_end;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1243
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1244 do_send_raw (plot_buf.str ());
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1245 }
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1246
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1247 void
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1248 gnuplot::do_show (const string_vector& argv)
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1249 {
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1250 int argc = argv.length ();
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1251
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1252 std::ostringstream plot_buf;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1253
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1254 int i;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1255 for (i = 0; i < argc-1; i++)
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1256 plot_buf << argv[i] << " ";
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1257 if (i < argc)
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1258 plot_buf << argv[i];
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1259
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1260 plot_buf << Vgnuplot_command_end;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1261
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1262 do_send (plot_buf.str ());
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1263 }
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1264
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1265 void
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1266 gnuplot::do_plot (const string_vector& argv)
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1267 {
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1268 std::string s;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1269
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1270 for (int i = 1; i < argv.length (); i++)
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1271 s += argv[i] + " ";
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1272
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1273 try
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1274 {
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1275 std::string cmd = makeplot (argv[0], s);
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1276
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1277 do_send (cmd);
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1278 }
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1279 catch (gpt_parse_error& e)
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1280 {
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1281 if (e.msg.empty ())
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1282 error ("could not parse plot command");
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1283 else
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1284 error (e.msg.c_str ());
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1285 }
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1286 }
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1287
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1288 // Parse and evaluate parameter string and pass it to gnuplot pipe.
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1289
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1290 std::string
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1291 gnuplot::makeplot (std::string caller, std::string args)
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1292 throw (gpt_parse_error)
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1293 {
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1294 std::string retval;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1295
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1296 YY_BUFFER_STATE bstate;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1297
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1298 bstate = yy_scan_string (args.c_str ());
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1299 yy_switch_to_buffer (bstate);
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1300 std::string outstr;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1301 int ndim = 2;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1302
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1303 if (caller == "replot")
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1304 {
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1305 ndim = 1;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1306 outstr += Vgnuplot_command_replot + " ";
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1307 }
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1308 else if (caller == "plot")
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1309 {
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1310 ndim = 2;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1311 plot_line_count = 0;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1312 outstr += Vgnuplot_command_plot + " ";
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1313 }
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1314 else if (caller == "splot")
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1315 {
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1316 ndim = 3;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1317 plot_line_count = 0;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1318 outstr += Vgnuplot_command_splot + " ";
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1319 }
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1320 else
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1321 throw gpt_parse_error ("unknown plot command");
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1322
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1323 gpt_quote_is_transpose = false;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1324 gpt_allow_plotkw = false;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1325 gpt_parens = 0;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1326 gpt_braces = 0;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1327 gpt_brackets = 0;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1328
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1329 int tok;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1330 tok = gptlex ();
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1331 if (plottok_or_end_p (tok) && caller != "replot")
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1332 throw gpt_parse_error ("must have something to plot");
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1333
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1334 while (tok)
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1335 {
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1336 bool title_set = false;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1337 bool using_set = false;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1338 bool style_set = false;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1339 bool axes_set = false;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1340
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1341 if (tok == START_BRACKET)
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1342 {
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1343 if (caller == "replot")
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1344 throw gpt_parse_error ("can't specify new plot ranges with `replot' or while hold is on");
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1345
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1346 std::string xrange_start_str = read_until (colonp, tok);
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1347 std::string xrange_end_str = read_until (endbracketp, tok);
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1348 outstr += printrange (xrange_start_str, xrange_end_str) + " ";
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1349 tok = gptlex ();
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1350 if (tok == START_BRACKET)
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1351 {
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1352 std::string yrange_start_str = read_until (colonp, tok);
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1353 std::string yrange_end_str = read_until (endbracketp, tok);
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1354 outstr += printrange (yrange_start_str, yrange_end_str) + " ";
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1355 tok = gptlex ();
6548
ecc8d30fa288 [project @ 2007-04-20 05:31:41 by jwe]
jwe
parents: 6180
diff changeset
1356 if (tok == START_BRACKET && caller == "splot")
5790
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1357 {
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1358 std::string zrange_start_str = read_until (colonp, tok);
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1359 std::string zrange_end_str = read_until (endbracketp, tok);
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1360 outstr += printrange (zrange_start_str, zrange_end_str) + " ";
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1361 tok = gptlex ();
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1362 }
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1363 }
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1364 }
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1365
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1366 if (plottok_or_end_p (tok))
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1367 return std::string ();
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1368 else
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1369 {
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1370 std::string file;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1371 plot_line_count++;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1372
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1373 std::string plot_expr_str;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1374 plot_expr_str += std::string (yytext) + " ";
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1375 plot_expr_str += read_until (plottok_or_end_p, tok);
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1376
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1377 int status = 0;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1378 octave_value tmp_data = eval_string (plot_expr_str,
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1379 true, status);
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1380
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1381 if (status != 0 || ! tmp_data.is_defined ())
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1382 throw gpt_parse_error ();
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1383
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1384 std::ostringstream tmp_buf;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1385 tmp_data.print_raw (tmp_buf);
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1386
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1387 if (tmp_data.is_string ())
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1388 {
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1389 file = file_ops::tilde_expand (tmp_data.string_value ());
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1390 // FIXME -- perhaps should check if the file exists?
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1391 outstr += file + " ";
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1392 }
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1393 else
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1394 {
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1395 switch (ndim)
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1396 {
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1397 case 2:
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1398 file = save_in_tmp_file (tmp_data, ndim);
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1399 break;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1400
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1401 case 3:
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1402 file = save_in_tmp_file (tmp_data, ndim,
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1403 parametric_plot);
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1404 break;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1405
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1406 default:
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1407 gripe_2_or_3_dim_plot ();
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1408 break;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1409 }
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1410
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1411 if (file.length () > 0)
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1412 {
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1413 mark_for_deletion (file);
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1414 outstr += "'" + file + "' ";
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1415 }
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1416 }
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1417 }
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1418
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1419 std::string title_str;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1420 std::string using_str;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1421 std::string style_str;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1422 std::string axes_str;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1423
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1424 bool out = false;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1425 while (tok && ! out)
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1426 {
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1427 switch (tok)
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1428 {
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1429 case COMMA:
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1430 out = true;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1431 break;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1432
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1433 case TITLE:
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1434 if (! title_set)
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1435 title_str += handle_title (tok) + " ";
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1436 else
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1437 throw gpt_parse_error ("only one title option may be specified");
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1438 title_set = true;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1439 break;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1440
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1441 case USING:
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1442 if (! using_set)
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1443 using_str += handle_using (tok) + " ";
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1444 else
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1445 throw gpt_parse_error ("only one using option may be specified");
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1446 using_set = true;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1447 break;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1448
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1449 case WITH:
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1450 if (! style_set)
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1451 style_str += handle_style (tok) + " ";
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1452 else
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1453 throw gpt_parse_error ("only one style option may be specified");
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1454 style_set = true;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1455 break;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1456
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1457 case AXES:
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1458 if (! axes_set)
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1459 axes_str += handle_axes (tok) + " ";
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1460 else
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1461 throw gpt_parse_error ("only one axes option may be specified");
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1462 axes_set = true;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1463 break;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1464
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1465 default:
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1466 tok = 0;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1467 break;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1468 }
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1469 }
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1470
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1471 if (! title_set)
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1472 {
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1473 std::ostringstream tmp_buf;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1474 tmp_buf << Vgnuplot_command_title << " \"line "
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1475 << plot_line_count << "\" ";
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1476 title_str = tmp_buf.str ();
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1477 title_set = true;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1478 }
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1479
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1480 // Plot parameters have to be output in this order.
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1481 if (using_set)
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1482 outstr += using_str;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1483
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1484 if (axes_set)
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1485 outstr += axes_str;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1486
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1487 if (title_set)
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1488 outstr += title_str;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1489
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1490 if (style_set)
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1491 outstr += style_str;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1492
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1493 if (out)
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1494 {
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1495 // Saw comma on while loop.
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1496 outstr += ", ";
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1497 gpt_quote_is_transpose = false;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1498 gpt_allow_plotkw = false;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1499 gpt_parens = 0;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1500 gpt_braces = 0;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1501 gpt_brackets = 0;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1502 tok = gptlex ();
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1503 }
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1504 }
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1505
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1506 outstr += Vgnuplot_command_end;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1507
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1508 return outstr;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1509 }
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1510
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1511 // Title has one string expression which is evaluated and printed to the
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1512 // gnuplot command string.
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1513
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1514 std::string
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1515 gnuplot::handle_title (int& lasttok)
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1516 {
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1517 int tok;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1518 std::string retstr = Vgnuplot_command_title + " ";
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1519 std::string title_expr_str;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1520
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1521 title_expr_str += read_until (plottok_or_end_p, tok);
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1522
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1523 int status;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1524 octave_value tmp_data = eval_string (title_expr_str, true, status);
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1525
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1526 if (status != 0 || ! tmp_data.is_defined ())
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1527 throw gpt_parse_error ();
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1528
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1529 std::ostringstream tmp_buf;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1530 if (tmp_data.is_string ())
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1531 {
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1532 tmp_buf << '"';
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1533 tmp_data.print_raw (tmp_buf);
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1534 tmp_buf << '"';
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1535 }
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1536 else
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1537 {
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1538 warning ("line title must be a string");
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1539 tmp_buf << '"' << "line " << plot_line_count << '"';
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1540 }
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1541
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1542 retstr += tmp_buf.str ();
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1543
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1544 lasttok = tok;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1545
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1546 return retstr;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1547 }
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1548
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1549 // The static instance of this class is here so that
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1550 // gnuplot::close_all will be called when the .oct file is unloaded.
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1551
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1552 class
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1553 gnuplot_X
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1554 {
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1555 public:
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1556 gnuplot_X (void) { }
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1557 ~gnuplot_X (void) { gnuplot::close_all (); }
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1558 };
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1559
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1560 static gnuplot_X X;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1561
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1562 // -----------------------
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1563 // User-callable functions
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1564 // -----------------------
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1565
5794
1138ced03f14 [project @ 2006-05-08 20:23:04 by jwe]
jwe
parents: 5791
diff changeset
1566 DEFUN_DLD (gnuplot_binary, args, nargout,
5790
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1567 "-*- texinfo -*-\n\
5794
1138ced03f14 [project @ 2006-05-08 20:23:04 by jwe]
jwe
parents: 5791
diff changeset
1568 @deftypefn {Loadable Function} {@var{val} =} gnuplot_binary ()\n\
1138ced03f14 [project @ 2006-05-08 20:23:04 by jwe]
jwe
parents: 5791
diff changeset
1569 @deftypefnx {Loadable Function} {@var{old_val} =} gnuplot_binary (@var{new_val})\n\
1138ced03f14 [project @ 2006-05-08 20:23:04 by jwe]
jwe
parents: 5791
diff changeset
1570 Query or set the name of the program invoked by the plot command.\n\
1138ced03f14 [project @ 2006-05-08 20:23:04 by jwe]
jwe
parents: 5791
diff changeset
1571 The default value @code{\"gnuplot\"}. @xref{Installation}.\n\
5790
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1572 @end deftypefn")
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1573 {
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1574 octave_value retval = SET_INTERNAL_VARIABLE (gnuplot_binary);
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1575
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1576 if (! error_state && args.length () == 1)
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1577 gnuplot::set_gnuplot_exe (Vgnuplot_binary);
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1578
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1579 return retval;
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1580 }
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1581
5794
1138ced03f14 [project @ 2006-05-08 20:23:04 by jwe]
jwe
parents: 5791
diff changeset
1582 DEFUN_DLD (gnuplot_command_plot, args, nargout,
5790
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1583 "-*- texinfo -*-\n\
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1584 @deftypefn {Loadable Function} {@var{val} = } gnuplot_command_plot ()\n\
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1585 @deftypefnx {Loadable Function} {@var{old_val} = } gnuplot_command_plot (@var{new_val})\n\
7117
373c39904877 [project @ 2007-11-07 18:48:00 by jwe]
jwe
parents: 7017
diff changeset
1586 @strong{This function is obsolete and will be removed from a future version\n\
373c39904877 [project @ 2007-11-07 18:48:00 by jwe]
jwe
parents: 7017
diff changeset
1587 of Octave.}\n\
5790
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1588 @end deftypefn")
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1589 {
7138
f70121606be5 [project @ 2007-11-09 02:06:54 by jwe]
jwe
parents: 7117
diff changeset
1590 WARN_OBSOLETE ("gnuplot_command_plot");
f70121606be5 [project @ 2007-11-09 02:06:54 by jwe]
jwe
parents: 7117
diff changeset
1591
5790
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1592 return SET_INTERNAL_VARIABLE (gnuplot_command_plot);
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1593 }
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1594
5794
1138ced03f14 [project @ 2006-05-08 20:23:04 by jwe]
jwe
parents: 5791
diff changeset
1595 DEFUN_DLD (gnuplot_command_replot, args, nargout,
5790
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1596 "-*- texinfo -*-\n\
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1597 @deftypefn {Loadable Function} {@var{val} =} gnuplot_command_replot ()\n\
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1598 @deftypefnx {Loadable Function} {@var{old_val} =} gnuplot_command_replot (@var{new_val})\n\
7117
373c39904877 [project @ 2007-11-07 18:48:00 by jwe]
jwe
parents: 7017
diff changeset
1599 @strong{This function is obsolete and will be removed from a future version\n\
373c39904877 [project @ 2007-11-07 18:48:00 by jwe]
jwe
parents: 7017
diff changeset
1600 of Octave.}\n\
5790
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1601 @end deftypefn")
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1602 {
7138
f70121606be5 [project @ 2007-11-09 02:06:54 by jwe]
jwe
parents: 7117
diff changeset
1603 WARN_OBSOLETE ("gnuplot_command_replot");
f70121606be5 [project @ 2007-11-09 02:06:54 by jwe]
jwe
parents: 7117
diff changeset
1604
5790
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1605 return SET_INTERNAL_VARIABLE (gnuplot_command_replot);
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1606 }
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1607
5794
1138ced03f14 [project @ 2006-05-08 20:23:04 by jwe]
jwe
parents: 5791
diff changeset
1608 DEFUN_DLD (gnuplot_command_splot, args, nargout,
5790
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1609 "-*- texinfo -*-\n\
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1610 @deftypefn {Loadable Function} {@var{val} =} gnuplot_command_splot ()\n\
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1611 @deftypefnx {Loadable Function} {@var{old_val} =} gnuplot_command_splot (@var{new_val})\n\
7117
373c39904877 [project @ 2007-11-07 18:48:00 by jwe]
jwe
parents: 7017
diff changeset
1612 @strong{This function is obsolete and will be removed from a future version\n\
373c39904877 [project @ 2007-11-07 18:48:00 by jwe]
jwe
parents: 7017
diff changeset
1613 of Octave.}\n\
5790
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1614 @end deftypefn")
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1615 {
7138
f70121606be5 [project @ 2007-11-09 02:06:54 by jwe]
jwe
parents: 7117
diff changeset
1616 WARN_OBSOLETE ("gnuplot_command_splot");
f70121606be5 [project @ 2007-11-09 02:06:54 by jwe]
jwe
parents: 7117
diff changeset
1617
5790
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1618 return SET_INTERNAL_VARIABLE (gnuplot_command_splot);
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1619 }
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1620
5794
1138ced03f14 [project @ 2006-05-08 20:23:04 by jwe]
jwe
parents: 5791
diff changeset
1621 DEFUN_DLD (gnuplot_command_using, args, nargout,
5790
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1622 "-*- texinfo -*-\n\
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1623 @deftypefn {Loadable Function} {@var{val} =} gnuplot_command_using ()\n\
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1624 @deftypefnx {Loadable Function} {@var{old_val} =} gnuplot_command_using (@var{new_val})\n\
7117
373c39904877 [project @ 2007-11-07 18:48:00 by jwe]
jwe
parents: 7017
diff changeset
1625 @strong{This function is obsolete and will be removed from a future version\n\
373c39904877 [project @ 2007-11-07 18:48:00 by jwe]
jwe
parents: 7017
diff changeset
1626 of Octave.}\n\
5790
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1627 @end deftypefn")
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1628 {
7138
f70121606be5 [project @ 2007-11-09 02:06:54 by jwe]
jwe
parents: 7117
diff changeset
1629 WARN_OBSOLETE ("gnuplot_command_using");
f70121606be5 [project @ 2007-11-09 02:06:54 by jwe]
jwe
parents: 7117
diff changeset
1630
5790
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1631 return SET_INTERNAL_VARIABLE (gnuplot_command_using);
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1632 }
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1633
5794
1138ced03f14 [project @ 2006-05-08 20:23:04 by jwe]
jwe
parents: 5791
diff changeset
1634 DEFUN_DLD (gnuplot_command_with, args, nargout,
5790
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1635 "-*- texinfo -*-\n\
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1636 @deftypefn {Loadable Function} {@var{val} =} gnuplot_command_with ()\n\
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1637 @deftypefnx {Loadable Function} {@var{old_val} =} gnuplot_command_with (@var{new_val})\n\
7117
373c39904877 [project @ 2007-11-07 18:48:00 by jwe]
jwe
parents: 7017
diff changeset
1638 of Octave.}\n\
5790
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1639 @end deftypefn")
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1640 {
7138
f70121606be5 [project @ 2007-11-09 02:06:54 by jwe]
jwe
parents: 7117
diff changeset
1641 WARN_OBSOLETE ("gnuplot_command_with");
f70121606be5 [project @ 2007-11-09 02:06:54 by jwe]
jwe
parents: 7117
diff changeset
1642
5790
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1643 return SET_INTERNAL_VARIABLE (gnuplot_command_with);
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1644 }
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1645
5794
1138ced03f14 [project @ 2006-05-08 20:23:04 by jwe]
jwe
parents: 5791
diff changeset
1646 DEFUN_DLD (gnuplot_command_axes, args, nargout,
5790
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1647 "-*- texinfo -*-\n\
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1648 @deftypefn {Loadable Function} {@var{val} =} gnuplot_command_axes ()\n\
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1649 @deftypefnx {Loadable Function} {@var{old_val} =} gnuplot_command_axes (@var{new_val})\n\
7117
373c39904877 [project @ 2007-11-07 18:48:00 by jwe]
jwe
parents: 7017
diff changeset
1650 @strong{This function is obsolete and will be removed from a future version\n\
373c39904877 [project @ 2007-11-07 18:48:00 by jwe]
jwe
parents: 7017
diff changeset
1651 of Octave.}\n\
5790
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1652 @end deftypefn")
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1653 {
7138
f70121606be5 [project @ 2007-11-09 02:06:54 by jwe]
jwe
parents: 7117
diff changeset
1654 WARN_OBSOLETE ("gnuplot_command_axes");
f70121606be5 [project @ 2007-11-09 02:06:54 by jwe]
jwe
parents: 7117
diff changeset
1655
5790
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1656 return SET_INTERNAL_VARIABLE (gnuplot_command_axes);
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1657 }
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1658
5794
1138ced03f14 [project @ 2006-05-08 20:23:04 by jwe]
jwe
parents: 5791
diff changeset
1659 DEFUN_DLD (gnuplot_command_title, args, nargout,
5790
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1660 "-*- texinfo -*-\n\
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1661 @deftypefn {Loadable Function} {@var{val} =} gnuplot_command_title ()\n\
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1662 @deftypefnx {Loadable Function} {@var{old_val} =} gnuplot_command_title (@var{new_val})\n\
7117
373c39904877 [project @ 2007-11-07 18:48:00 by jwe]
jwe
parents: 7017
diff changeset
1663 @strong{This function is obsolete and will be removed from a future version\n\
373c39904877 [project @ 2007-11-07 18:48:00 by jwe]
jwe
parents: 7017
diff changeset
1664 of Octave.}\n\
5790
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1665 @end deftypefn")
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1666 {
7138
f70121606be5 [project @ 2007-11-09 02:06:54 by jwe]
jwe
parents: 7117
diff changeset
1667 WARN_OBSOLETE ("gnuplot_command_title");
f70121606be5 [project @ 2007-11-09 02:06:54 by jwe]
jwe
parents: 7117
diff changeset
1668
5790
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1669 return SET_INTERNAL_VARIABLE (gnuplot_command_title);
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1670 }
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1671
5794
1138ced03f14 [project @ 2006-05-08 20:23:04 by jwe]
jwe
parents: 5791
diff changeset
1672 DEFUN_DLD (gnuplot_command_end, args, nargout,
5790
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1673 "-*- texinfo -*-\n\
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1674 @deftypefn {Loadable Function} {@var{val} =} gnuplot_command_end ()\n\
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1675 @deftypefnx {Loadable Function} {@var{old_val} =} gnuplot_command_end (@var{new_val})\n\
7117
373c39904877 [project @ 2007-11-07 18:48:00 by jwe]
jwe
parents: 7017
diff changeset
1676 @strong{This function is obsolete and will be removed from a future version\n\
373c39904877 [project @ 2007-11-07 18:48:00 by jwe]
jwe
parents: 7017
diff changeset
1677 of Octave.}\n\
373c39904877 [project @ 2007-11-07 18:48:00 by jwe]
jwe
parents: 7017
diff changeset
1678 \n\
5790
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1679 @end deftypefn")
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1680 {
7138
f70121606be5 [project @ 2007-11-09 02:06:54 by jwe]
jwe
parents: 7117
diff changeset
1681 WARN_OBSOLETE ("gnuplot_command_end");
f70121606be5 [project @ 2007-11-09 02:06:54 by jwe]
jwe
parents: 7117
diff changeset
1682
5790
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1683 return SET_INTERNAL_VARIABLE (gnuplot_command_end);
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1684 }
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1685
5794
1138ced03f14 [project @ 2006-05-08 20:23:04 by jwe]
jwe
parents: 5791
diff changeset
1686 DEFUN_DLD (gnuplot_use_title_option, args, nargout,
5790
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1687 "-*- texinfo -*-\n\
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1688 @deftypefn {Loadable Function} {@var{val} =} gnuplot_use_title_option ()\n\
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1689 @deftypefnx {Loadable Function} {@var{old_val} =} gnuplot_use_title_option (@var{new_val})\n\
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1690 If enabled, append @samp{-title \"Figure NN\"} to the gnuplot command.\n\
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1691 By default, this feature is enabled if the @code{DISPLAY} environment\n\
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1692 variable is set when Octave starts.\n\
7117
373c39904877 [project @ 2007-11-07 18:48:00 by jwe]
jwe
parents: 7017
diff changeset
1693 \n\
373c39904877 [project @ 2007-11-07 18:48:00 by jwe]
jwe
parents: 7017
diff changeset
1694 @strong{This function is obsolete and will be removed from a future version\n\
373c39904877 [project @ 2007-11-07 18:48:00 by jwe]
jwe
parents: 7017
diff changeset
1695 of Octave.}\n\
5790
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1696 @end deftypefn")
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1697 {
7138
f70121606be5 [project @ 2007-11-09 02:06:54 by jwe]
jwe
parents: 7117
diff changeset
1698 WARN_OBSOLETE ("gnuplot_command_use_title_option");
f70121606be5 [project @ 2007-11-09 02:06:54 by jwe]
jwe
parents: 7117
diff changeset
1699
5790
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1700 return SET_INTERNAL_VARIABLE (gnuplot_use_title_option);
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1701 }
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1702
6030
004037def470 [project @ 2006-10-04 14:54:46 by jwe]
jwe
parents: 6029
diff changeset
1703 DEFUN_DLD (__clear_plot_window__, , ,
5790
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1704 "-*- texinfo -*-\n\
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1705 @deftypefn {Loadable Function} {} clearplot\n\
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1706 @deftypefnx {Loadable Function} {} clg\n\
6030
004037def470 [project @ 2006-10-04 14:54:46 by jwe]
jwe
parents: 6029
diff changeset
1707 Clear the plot window and any titles or axis labels.\n\
7117
373c39904877 [project @ 2007-11-07 18:48:00 by jwe]
jwe
parents: 7017
diff changeset
1708 \n\
373c39904877 [project @ 2007-11-07 18:48:00 by jwe]
jwe
parents: 7017
diff changeset
1709 @strong{This function is obsolete and will be removed from a future version\n\
373c39904877 [project @ 2007-11-07 18:48:00 by jwe]
jwe
parents: 7017
diff changeset
1710 of Octave.}\n\
5790
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1711 @end deftypefn")
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1712 {
7138
f70121606be5 [project @ 2007-11-09 02:06:54 by jwe]
jwe
parents: 7117
diff changeset
1713 WARN_OBSOLETE ("__clear_plot_window__");
f70121606be5 [project @ 2007-11-09 02:06:54 by jwe]
jwe
parents: 7117
diff changeset
1714
5790
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1715 gnuplot::clear ();
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1716
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1717 return octave_value_list ();
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1718 }
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1719
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1720 DEFUN_DLD (closeplot, , ,
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1721 "-*- texinfo -*-\n\
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1722 @deftypefn {Loadable Function} {} closeplot\n\
7117
373c39904877 [project @ 2007-11-07 18:48:00 by jwe]
jwe
parents: 7017
diff changeset
1723 @strong{This function is obsolete and will be removed from a future version\n\
373c39904877 [project @ 2007-11-07 18:48:00 by jwe]
jwe
parents: 7017
diff changeset
1724 of Octave.}\n\
373c39904877 [project @ 2007-11-07 18:48:00 by jwe]
jwe
parents: 7017
diff changeset
1725 \n\
5790
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1726 Close stream to the @code{gnuplot} subprocess. If you are using X11,\n\
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1727 this will close the plot window.\n\
7117
373c39904877 [project @ 2007-11-07 18:48:00 by jwe]
jwe
parents: 7017
diff changeset
1728 @seealso{close}\n\
5790
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1729 @end deftypefn")
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1730 {
7151
aeeb646f6538 [project @ 2007-11-09 19:34:17 by jwe]
jwe
parents: 7150
diff changeset
1731 WARN_OBSOLETE ("closeplot");
7138
f70121606be5 [project @ 2007-11-09 02:06:54 by jwe]
jwe
parents: 7117
diff changeset
1732
5790
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1733 gnuplot::close ();
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1734
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1735 return octave_value_list ();
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1736 }
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1737
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1738 DEFUN_DLD (purge_tmp_files, , ,
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1739 "-*- texinfo -*-\n\
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1740 @deftypefn {Loadable Function} {} purge_tmp_files\n\
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1741 Delete the temporary files created by the plotting commands.\n\
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1742 \n\
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1743 Octave creates temporary data files for @code{gnuplot} and then sends\n\
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1744 commands to @code{gnuplot} through a pipe. Octave will delete the\n\
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1745 temporary files on exit, but if you are doing a lot of plotting you may\n\
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1746 want to clean up in the middle of a session.\n\
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1747 \n\
7117
373c39904877 [project @ 2007-11-07 18:48:00 by jwe]
jwe
parents: 7017
diff changeset
1748 @strong{This function is obsolete and will be removed from a future version\n\
373c39904877 [project @ 2007-11-07 18:48:00 by jwe]
jwe
parents: 7017
diff changeset
1749 of Octave.}\n\
5790
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1750 @end deftypefn")
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1751 {
7138
f70121606be5 [project @ 2007-11-09 02:06:54 by jwe]
jwe
parents: 7117
diff changeset
1752 WARN_OBSOLETE ("purge_tmp_files");
f70121606be5 [project @ 2007-11-09 02:06:54 by jwe]
jwe
parents: 7117
diff changeset
1753
5790
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1754 gnuplot::cleanup_tmp_files ();
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1755
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1756 return octave_value_list ();
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1757 }
7150
68a1b616b7df [project @ 2007-11-09 18:48:41 by jwe]
jwe
parents: 7141
diff changeset
1758
5790
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1759 DEFUN_DLD (__gnuplot_raw__, args, ,
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1760 "-*- texinfo -*-\n\
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1761 @deftypefn {Loadable Function} {} __gnuplot_raw__ (@var{string})\n\
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1762 Send @var{string} directly to gnuplot subprocess.\n\
7117
373c39904877 [project @ 2007-11-07 18:48:00 by jwe]
jwe
parents: 7017
diff changeset
1763 \n\
373c39904877 [project @ 2007-11-07 18:48:00 by jwe]
jwe
parents: 7017
diff changeset
1764 @strong{This function is obsolete and will be removed from a future version\n\
373c39904877 [project @ 2007-11-07 18:48:00 by jwe]
jwe
parents: 7017
diff changeset
1765 of Octave.}\n\
5790
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1766 @end deftypefn")
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1767 {
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1768 if (args.length () == 1 && args(0).is_string ())
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1769 {
7141
63ba061a3036 [project @ 2007-11-09 02:35:35 by jwe]
jwe
parents: 7140
diff changeset
1770 WARN_OBSOLETE ("__gnuplot_raw__");
63ba061a3036 [project @ 2007-11-09 02:35:35 by jwe]
jwe
parents: 7140
diff changeset
1771
5790
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1772 std::string cmd = args(0).string_value ();
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1773
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1774 gnuplot::send_raw (cmd);
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1775 }
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1776 else
5823
080c08b192d8 [project @ 2006-05-19 05:32:17 by jwe]
jwe
parents: 5796
diff changeset
1777 print_usage ();
5790
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1778
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1779 return octave_value_list ();
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1780 }
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1781
6171
4508e9d73ea1 [project @ 2006-11-15 20:03:18 by jwe]
jwe
parents: 6030
diff changeset
1782 DEFUN_DLD (__gnuplot_send_inline_data__, args, ,
4508e9d73ea1 [project @ 2006-11-15 20:03:18 by jwe]
jwe
parents: 6030
diff changeset
1783 "-*- texinfo -*-\n\
6180
133e7a4a5565 [project @ 2006-11-17 21:09:34 by jwe]
jwe
parents: 6171
diff changeset
1784 @deftypefn {Loadable Function} {} __gnuplot_send_inline_data__ (@var{data}, @var{ndim}, @var{parametric})\n\
6171
4508e9d73ea1 [project @ 2006-11-15 20:03:18 by jwe]
jwe
parents: 6030
diff changeset
1785 Send @var{val} to gnuplot subprocess as inline data.\n\
7117
373c39904877 [project @ 2007-11-07 18:48:00 by jwe]
jwe
parents: 7017
diff changeset
1786 \n\
373c39904877 [project @ 2007-11-07 18:48:00 by jwe]
jwe
parents: 7017
diff changeset
1787 @strong{This function is obsolete and will be removed from a future version\n\
373c39904877 [project @ 2007-11-07 18:48:00 by jwe]
jwe
parents: 7017
diff changeset
1788 of Octave.}\n\
6171
4508e9d73ea1 [project @ 2006-11-15 20:03:18 by jwe]
jwe
parents: 6030
diff changeset
1789 @end deftypefn")
4508e9d73ea1 [project @ 2006-11-15 20:03:18 by jwe]
jwe
parents: 6030
diff changeset
1790 {
4508e9d73ea1 [project @ 2006-11-15 20:03:18 by jwe]
jwe
parents: 6030
diff changeset
1791 octave_value retval;
4508e9d73ea1 [project @ 2006-11-15 20:03:18 by jwe]
jwe
parents: 6030
diff changeset
1792
4508e9d73ea1 [project @ 2006-11-15 20:03:18 by jwe]
jwe
parents: 6030
diff changeset
1793 int nargin = args.length ();
4508e9d73ea1 [project @ 2006-11-15 20:03:18 by jwe]
jwe
parents: 6030
diff changeset
1794
4508e9d73ea1 [project @ 2006-11-15 20:03:18 by jwe]
jwe
parents: 6030
diff changeset
1795 if (nargin > 0 && nargin < 4)
4508e9d73ea1 [project @ 2006-11-15 20:03:18 by jwe]
jwe
parents: 6030
diff changeset
1796 {
7141
63ba061a3036 [project @ 2007-11-09 02:35:35 by jwe]
jwe
parents: 7140
diff changeset
1797 WARN_OBSOLETE ("__gnuplot_send_inline_data__");
63ba061a3036 [project @ 2007-11-09 02:35:35 by jwe]
jwe
parents: 7140
diff changeset
1798
6171
4508e9d73ea1 [project @ 2006-11-15 20:03:18 by jwe]
jwe
parents: 6030
diff changeset
1799 int ndim = 2;
4508e9d73ea1 [project @ 2006-11-15 20:03:18 by jwe]
jwe
parents: 6030
diff changeset
1800 bool parametric = false;
4508e9d73ea1 [project @ 2006-11-15 20:03:18 by jwe]
jwe
parents: 6030
diff changeset
1801
4508e9d73ea1 [project @ 2006-11-15 20:03:18 by jwe]
jwe
parents: 6030
diff changeset
1802 if (nargin > 1)
4508e9d73ea1 [project @ 2006-11-15 20:03:18 by jwe]
jwe
parents: 6030
diff changeset
1803 {
4508e9d73ea1 [project @ 2006-11-15 20:03:18 by jwe]
jwe
parents: 6030
diff changeset
1804 ndim = args(1).int_value ();
4508e9d73ea1 [project @ 2006-11-15 20:03:18 by jwe]
jwe
parents: 6030
diff changeset
1805
4508e9d73ea1 [project @ 2006-11-15 20:03:18 by jwe]
jwe
parents: 6030
diff changeset
1806 if (! error_state)
4508e9d73ea1 [project @ 2006-11-15 20:03:18 by jwe]
jwe
parents: 6030
diff changeset
1807 {
4508e9d73ea1 [project @ 2006-11-15 20:03:18 by jwe]
jwe
parents: 6030
diff changeset
1808 if (nargin > 2)
4508e9d73ea1 [project @ 2006-11-15 20:03:18 by jwe]
jwe
parents: 6030
diff changeset
1809 parametric = args(2).bool_value ();
4508e9d73ea1 [project @ 2006-11-15 20:03:18 by jwe]
jwe
parents: 6030
diff changeset
1810 }
4508e9d73ea1 [project @ 2006-11-15 20:03:18 by jwe]
jwe
parents: 6030
diff changeset
1811 }
4508e9d73ea1 [project @ 2006-11-15 20:03:18 by jwe]
jwe
parents: 6030
diff changeset
1812
4508e9d73ea1 [project @ 2006-11-15 20:03:18 by jwe]
jwe
parents: 6030
diff changeset
1813 if (! error_state)
4508e9d73ea1 [project @ 2006-11-15 20:03:18 by jwe]
jwe
parents: 6030
diff changeset
1814 gnuplot::send_inline_data (args(0), ndim, parametric);
4508e9d73ea1 [project @ 2006-11-15 20:03:18 by jwe]
jwe
parents: 6030
diff changeset
1815 }
4508e9d73ea1 [project @ 2006-11-15 20:03:18 by jwe]
jwe
parents: 6030
diff changeset
1816 else
4508e9d73ea1 [project @ 2006-11-15 20:03:18 by jwe]
jwe
parents: 6030
diff changeset
1817 print_usage ();
4508e9d73ea1 [project @ 2006-11-15 20:03:18 by jwe]
jwe
parents: 6030
diff changeset
1818
4508e9d73ea1 [project @ 2006-11-15 20:03:18 by jwe]
jwe
parents: 6030
diff changeset
1819 return retval;
4508e9d73ea1 [project @ 2006-11-15 20:03:18 by jwe]
jwe
parents: 6030
diff changeset
1820 }
4508e9d73ea1 [project @ 2006-11-15 20:03:18 by jwe]
jwe
parents: 6030
diff changeset
1821
5790
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1822 DEFUN_DLD (__gnuplot_set__, args, ,
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1823 "-*- texinfo -*-\n\
5832
5e41e06f6a78 [project @ 2006-05-26 21:41:32 by jwe]
jwe
parents: 5823
diff changeset
1824 @deffn {Loadable Function} __gnuplot_set__ options\n\
5790
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1825 Set plotting options for gnuplot\n\
7117
373c39904877 [project @ 2007-11-07 18:48:00 by jwe]
jwe
parents: 7017
diff changeset
1826 \n\
373c39904877 [project @ 2007-11-07 18:48:00 by jwe]
jwe
parents: 7017
diff changeset
1827 @strong{This function is obsolete and will be removed from a future version\n\
373c39904877 [project @ 2007-11-07 18:48:00 by jwe]
jwe
parents: 7017
diff changeset
1828 of Octave.}\n\
5790
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1829 @end deffn")
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1830 {
7138
f70121606be5 [project @ 2007-11-09 02:06:54 by jwe]
jwe
parents: 7117
diff changeset
1831 WARN_OBSOLETE ("__gnuplot_set__");
f70121606be5 [project @ 2007-11-09 02:06:54 by jwe]
jwe
parents: 7117
diff changeset
1832
5790
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1833 string_vector argv = args.make_argv ("set");
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1834
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1835 if (! error_state)
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1836 gnuplot::set (argv);
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1837
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1838 return octave_value_list ();
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1839 }
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1840
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1841 DEFUN_DLD (__gnuplot_show__, args, ,
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1842 "-*- texinfo -*-\n\
5832
5e41e06f6a78 [project @ 2006-05-26 21:41:32 by jwe]
jwe
parents: 5823
diff changeset
1843 @deffn {Loadable Function} __gnuplot_show__ options\n\
5790
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1844 Show plotting options.\n\
7117
373c39904877 [project @ 2007-11-07 18:48:00 by jwe]
jwe
parents: 7017
diff changeset
1845 \n\
373c39904877 [project @ 2007-11-07 18:48:00 by jwe]
jwe
parents: 7017
diff changeset
1846 @strong{This function is obsolete and will be removed from a future version\n\
373c39904877 [project @ 2007-11-07 18:48:00 by jwe]
jwe
parents: 7017
diff changeset
1847 of Octave.}\n\
5790
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1848 @end deffn")
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1849 {
7138
f70121606be5 [project @ 2007-11-09 02:06:54 by jwe]
jwe
parents: 7117
diff changeset
1850 WARN_OBSOLETE ("__gnuplot_show__");
f70121606be5 [project @ 2007-11-09 02:06:54 by jwe]
jwe
parents: 7117
diff changeset
1851
5790
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1852 string_vector argv = args.make_argv ("show");
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1853
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1854 if (! error_state)
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1855 gnuplot::show (argv);
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1856
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1857 return octave_value_list ();
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1858 }
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1859
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1860 DEFUN_DLD (__gnuplot_plot__, args, ,
7117
373c39904877 [project @ 2007-11-07 18:48:00 by jwe]
jwe
parents: 7017
diff changeset
1861 "-*- texinfo -*-\n\
373c39904877 [project @ 2007-11-07 18:48:00 by jwe]
jwe
parents: 7017
diff changeset
1862 Plot with gnuplot.\n\
373c39904877 [project @ 2007-11-07 18:48:00 by jwe]
jwe
parents: 7017
diff changeset
1863 \n\
373c39904877 [project @ 2007-11-07 18:48:00 by jwe]
jwe
parents: 7017
diff changeset
1864 @strong{This function is obsolete and will be removed from a future version\n\
373c39904877 [project @ 2007-11-07 18:48:00 by jwe]
jwe
parents: 7017
diff changeset
1865 of Octave.}")
5790
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1866 {
7138
f70121606be5 [project @ 2007-11-09 02:06:54 by jwe]
jwe
parents: 7117
diff changeset
1867 WARN_OBSOLETE ("__gnuplot_plot__");
f70121606be5 [project @ 2007-11-09 02:06:54 by jwe]
jwe
parents: 7117
diff changeset
1868
5790
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1869 string_vector argv = args.make_argv ("plot");
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1870
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1871 if (! error_state)
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1872 gnuplot::plot (argv);
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1873
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1874 return octave_value_list ();
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1875 }
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1876
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1877 DEFUN_DLD (__gnuplot_splot__, args, ,
7117
373c39904877 [project @ 2007-11-07 18:48:00 by jwe]
jwe
parents: 7017
diff changeset
1878 "-*- texinfo -*-\n\
373c39904877 [project @ 2007-11-07 18:48:00 by jwe]
jwe
parents: 7017
diff changeset
1879 Plot with gnuplot.\n\
373c39904877 [project @ 2007-11-07 18:48:00 by jwe]
jwe
parents: 7017
diff changeset
1880 \n\
373c39904877 [project @ 2007-11-07 18:48:00 by jwe]
jwe
parents: 7017
diff changeset
1881 @strong{This function is obsolete and will be removed from a future version\n\
373c39904877 [project @ 2007-11-07 18:48:00 by jwe]
jwe
parents: 7017
diff changeset
1882 of Octave.}")
5790
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1883 {
7138
f70121606be5 [project @ 2007-11-09 02:06:54 by jwe]
jwe
parents: 7117
diff changeset
1884 WARN_OBSOLETE ("__gnuplot_splot__");
f70121606be5 [project @ 2007-11-09 02:06:54 by jwe]
jwe
parents: 7117
diff changeset
1885
5790
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1886 string_vector argv = args.make_argv ("splot");
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1887
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1888 if (! error_state)
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1889 gnuplot::plot (argv);
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1890
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1891 return octave_value_list ();
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1892 }
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1893
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1894 DEFUN_DLD (__gnuplot_replot__, args, ,
7117
373c39904877 [project @ 2007-11-07 18:48:00 by jwe]
jwe
parents: 7017
diff changeset
1895 "-*- texinfo -*-\n\
373c39904877 [project @ 2007-11-07 18:48:00 by jwe]
jwe
parents: 7017
diff changeset
1896 Plot with gnuplot.\n\
373c39904877 [project @ 2007-11-07 18:48:00 by jwe]
jwe
parents: 7017
diff changeset
1897 \n\
373c39904877 [project @ 2007-11-07 18:48:00 by jwe]
jwe
parents: 7017
diff changeset
1898 @strong{This function is obsolete and will be removed from a future version\n\
373c39904877 [project @ 2007-11-07 18:48:00 by jwe]
jwe
parents: 7017
diff changeset
1899 of Octave.}")
5790
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1900 {
7138
f70121606be5 [project @ 2007-11-09 02:06:54 by jwe]
jwe
parents: 7117
diff changeset
1901 WARN_OBSOLETE ("__gnuplot_replot__");
f70121606be5 [project @ 2007-11-09 02:06:54 by jwe]
jwe
parents: 7117
diff changeset
1902
5790
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1903 string_vector argv = args.make_argv ("replot");
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1904
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1905 if (! error_state)
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1906 gnuplot::plot (argv);
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1907
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1908 return octave_value_list ();
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1909 }
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1910
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1911 /*
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1912 ;;; Local Variables: ***
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1913 ;;; mode: C++ ***
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1914 ;;; End: ***
60659f01c75b [project @ 2006-05-04 18:33:11 by jwe]
jwe
parents:
diff changeset
1915 */