annotate src/pt-plot.cc @ 2553:f57c52dcd5ed

[project @ 1996-11-21 01:38:48 by jwe]
author jwe
date Thu, 21 Nov 1996 01:38:48 +0000
parents 050924aee81a
children 00163160cf66
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
1
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
1 /*
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
2
1827
effa9400766f [project @ 1996-02-02 14:07:51 by jwe]
jwe
parents: 1802
diff changeset
3 Copyright (C) 1996 John W. Eaton
1
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
4
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
5 This file is part of Octave.
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
6
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
7 Octave is free software; you can redistribute it and/or modify it
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
8 under the terms of the GNU General Public License as published by the
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
9 Free Software Foundation; either version 2, or (at your option) any
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
10 later version.
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
11
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
12 Octave is distributed in the hope that it will be useful, but WITHOUT
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
13 ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
14 FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
15 for more details.
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
16
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
17 You should have received a copy of the GNU General Public License
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
18 along with Octave; see the file COPYING. If not, write to the Free
1315
611d403c7f3d [project @ 1995-06-25 19:56:32 by jwe]
jwe
parents: 1297
diff changeset
19 Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
1
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
20
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
21 */
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
22
1297
12ecc2ecf0e3 [project @ 1995-05-01 18:39:43 by jwe]
jwe
parents: 1203
diff changeset
23 #if defined (__GNUG__)
12ecc2ecf0e3 [project @ 1995-05-01 18:39:43 by jwe]
jwe
parents: 1203
diff changeset
24 #pragma implementation
12ecc2ecf0e3 [project @ 1995-05-01 18:39:43 by jwe]
jwe
parents: 1203
diff changeset
25 #endif
12ecc2ecf0e3 [project @ 1995-05-01 18:39:43 by jwe]
jwe
parents: 1203
diff changeset
26
240
a99f28f5e351 [project @ 1993-11-30 20:24:36 by jwe]
jwe
parents: 191
diff changeset
27 #ifdef HAVE_CONFIG_H
1192
b6360f2d4fa6 [project @ 1995-03-30 21:38:35 by jwe]
jwe
parents: 1086
diff changeset
28 #include <config.h>
1
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
29 #endif
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
30
1343
94bedeb289e5 [project @ 1995-09-04 00:29:21 by jwe]
jwe
parents: 1328
diff changeset
31 #include <cstring>
94bedeb289e5 [project @ 1995-09-04 00:29:21 by jwe]
jwe
parents: 1328
diff changeset
32
1728
42b4f904f1af [project @ 1996-01-09 11:36:01 by jwe]
jwe
parents: 1690
diff changeset
33 #include <string>
42b4f904f1af [project @ 1996-01-09 11:36:01 by jwe]
jwe
parents: 1690
diff changeset
34
1350
5f63d83dd694 [project @ 1995-09-05 07:37:59 by jwe]
jwe
parents: 1343
diff changeset
35 #include <fstream.h>
5f63d83dd694 [project @ 1995-09-05 07:37:59 by jwe]
jwe
parents: 1343
diff changeset
36 #include <iostream.h>
5f63d83dd694 [project @ 1995-09-05 07:37:59 by jwe]
jwe
parents: 1343
diff changeset
37 #include <strstream.h>
5f63d83dd694 [project @ 1995-09-05 07:37:59 by jwe]
jwe
parents: 1343
diff changeset
38
5f63d83dd694 [project @ 1995-09-05 07:37:59 by jwe]
jwe
parents: 1343
diff changeset
39 #ifdef HAVE_UNISTD_H
2442
f667d7ec08b9 [project @ 1996-10-30 18:46:22 by jwe]
jwe
parents: 2371
diff changeset
40 #ifdef HAVE_SYS_TYPES_H
524
2814c75c8398 [project @ 1994-07-20 18:36:24 by jwe]
jwe
parents: 491
diff changeset
41 #include <sys/types.h>
2442
f667d7ec08b9 [project @ 1996-10-30 18:46:22 by jwe]
jwe
parents: 2371
diff changeset
42 #endif
524
2814c75c8398 [project @ 1994-07-20 18:36:24 by jwe]
jwe
parents: 491
diff changeset
43 #include <unistd.h>
2814c75c8398 [project @ 1994-07-20 18:36:24 by jwe]
jwe
parents: 491
diff changeset
44 #endif
1
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
45
524
2814c75c8398 [project @ 1994-07-20 18:36:24 by jwe]
jwe
parents: 491
diff changeset
46 #include "SLStack.h"
2814c75c8398 [project @ 1994-07-20 18:36:24 by jwe]
jwe
parents: 491
diff changeset
47 #include "procstream.h"
2814c75c8398 [project @ 1994-07-20 18:36:24 by jwe]
jwe
parents: 491
diff changeset
48
1802
8173b1fa052d [project @ 1996-01-29 06:10:18 by jwe]
jwe
parents: 1755
diff changeset
49 #include "file-ops.h"
1755
3a9462b655f1 [project @ 1996-01-22 04:47:22 by jwe]
jwe
parents: 1750
diff changeset
50 #include "str-vec.h"
3a9462b655f1 [project @ 1996-01-22 04:47:22 by jwe]
jwe
parents: 1750
diff changeset
51
1352
19c10b8657d5 [project @ 1995-09-05 08:11:57 by jwe]
jwe
parents: 1350
diff changeset
52 #include "defun.h"
19c10b8657d5 [project @ 1995-09-05 08:11:57 by jwe]
jwe
parents: 1350
diff changeset
53 #include "error.h"
19c10b8657d5 [project @ 1995-09-05 08:11:57 by jwe]
jwe
parents: 1350
diff changeset
54 #include "gripes.h"
19c10b8657d5 [project @ 1995-09-05 08:11:57 by jwe]
jwe
parents: 1350
diff changeset
55 #include "help.h"
19c10b8657d5 [project @ 1995-09-05 08:11:57 by jwe]
jwe
parents: 1350
diff changeset
56 #include "load-save.h"
1742
a02f140ed897 [project @ 1996-01-12 11:09:39 by jwe]
jwe
parents: 1728
diff changeset
57 #include "mappers.h"
a02f140ed897 [project @ 1996-01-12 11:09:39 by jwe]
jwe
parents: 1728
diff changeset
58 #include "oct-obj.h"
a02f140ed897 [project @ 1996-01-12 11:09:39 by jwe]
jwe
parents: 1728
diff changeset
59 #include "pt-cmd.h"
a02f140ed897 [project @ 1996-01-12 11:09:39 by jwe]
jwe
parents: 1728
diff changeset
60 #include "pt-exp.h"
a02f140ed897 [project @ 1996-01-12 11:09:39 by jwe]
jwe
parents: 1728
diff changeset
61 #include "pt-plot.h"
2124
97a566037a75 [project @ 1996-05-12 07:16:36 by jwe]
jwe
parents: 2086
diff changeset
62 #include "pt-walk.h"
2209
859030f15706 [project @ 1996-05-15 11:46:43 by jwe]
jwe
parents: 2200
diff changeset
63 #include "sighandlers.h"
1750
fd0d12493223 [project @ 1996-01-13 09:31:07 by jwe]
jwe
parents: 1742
diff changeset
64 #include "sysdep.h"
1
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
65 #include "utils.h"
2371
dd29ab8af9e7 [project @ 1996-10-12 00:09:55 by jwe]
jwe
parents: 2305
diff changeset
66 #include "variables.h"
1
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
67
2176
868d82fe5fdc [project @ 1996-05-13 16:22:01 by jwe]
jwe
parents: 2124
diff changeset
68 // If TRUE, a replot command is issued automatically each time a plot
868d82fe5fdc [project @ 1996-05-13 16:22:01 by jwe]
jwe
parents: 2124
diff changeset
69 // changes in some way.
868d82fe5fdc [project @ 1996-05-13 16:22:01 by jwe]
jwe
parents: 2124
diff changeset
70 static bool Vautomatic_replot;
868d82fe5fdc [project @ 1996-05-13 16:22:01 by jwe]
jwe
parents: 2124
diff changeset
71
868d82fe5fdc [project @ 1996-05-13 16:22:01 by jwe]
jwe
parents: 2124
diff changeset
72 // The name of the shell command to execute to start gnuplot.
868d82fe5fdc [project @ 1996-05-13 16:22:01 by jwe]
jwe
parents: 2124
diff changeset
73 static string Vgnuplot_binary;
868d82fe5fdc [project @ 1996-05-13 16:22:01 by jwe]
jwe
parents: 2124
diff changeset
74
2289
d9fe34ccf2bf [project @ 1996-06-06 05:05:47 by jwe]
jwe
parents: 2211
diff changeset
75 // TRUE if gnuplot appears to support multiple plot windows with X11.
d9fe34ccf2bf [project @ 1996-06-06 05:05:47 by jwe]
jwe
parents: 2211
diff changeset
76 static bool Vgnuplot_has_frames;
d9fe34ccf2bf [project @ 1996-06-06 05:05:47 by jwe]
jwe
parents: 2211
diff changeset
77
2176
868d82fe5fdc [project @ 1996-05-13 16:22:01 by jwe]
jwe
parents: 2124
diff changeset
78 // TRUE if gnuplot appears to support multiplot.
868d82fe5fdc [project @ 1996-05-13 16:22:01 by jwe]
jwe
parents: 2124
diff changeset
79 static bool Vgnuplot_has_multiplot;
868d82fe5fdc [project @ 1996-05-13 16:22:01 by jwe]
jwe
parents: 2124
diff changeset
80
1358
dc9c01f66a19 [project @ 1995-09-05 21:10:01 by jwe]
jwe
parents: 1352
diff changeset
81 // The number of lines we've plotted so far.
735
7455048010b9 [project @ 1994-09-24 03:22:34 by jwe]
jwe
parents: 662
diff changeset
82 static int plot_line_count = 0;
1
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
83
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
84 // Is this a parametric plot? Makes a difference for 3D plotting.
1827
effa9400766f [project @ 1996-02-02 14:07:51 by jwe]
jwe
parents: 1802
diff changeset
85 static bool parametric_plot = false;
1
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
86
943
4fc1ae8c24dc [project @ 1994-11-21 19:05:31 by jwe]
jwe
parents: 940
diff changeset
87 // The gnuplot terminal type.
4fc1ae8c24dc [project @ 1994-11-21 19:05:31 by jwe]
jwe
parents: 940
diff changeset
88 static char *gnuplot_terminal_type = 0;
4fc1ae8c24dc [project @ 1994-11-21 19:05:31 by jwe]
jwe
parents: 940
diff changeset
89
478
90964309100b [project @ 1994-06-28 16:39:41 by jwe]
jwe
parents: 476
diff changeset
90 // Should the graph window be cleared before plotting the next line?
1827
effa9400766f [project @ 1996-02-02 14:07:51 by jwe]
jwe
parents: 1802
diff changeset
91 static bool clear_before_plotting = true;
478
90964309100b [project @ 1994-06-28 16:39:41 by jwe]
jwe
parents: 476
diff changeset
92
524
2814c75c8398 [project @ 1994-07-20 18:36:24 by jwe]
jwe
parents: 491
diff changeset
93 // List of files to delete when we exit or crash.
1750
fd0d12493223 [project @ 1996-01-13 09:31:07 by jwe]
jwe
parents: 1742
diff changeset
94 static SLStack <string> tmp_files;
524
2814c75c8398 [project @ 1994-07-20 18:36:24 by jwe]
jwe
parents: 491
diff changeset
95
2814c75c8398 [project @ 1994-07-20 18:36:24 by jwe]
jwe
parents: 491
diff changeset
96 // Pipe to gnuplot.
1449
df589c97e140 [project @ 1995-09-20 03:49:51 by jwe]
jwe
parents: 1358
diff changeset
97 static oprocstream *plot_stream = 0;
524
2814c75c8398 [project @ 1994-07-20 18:36:24 by jwe]
jwe
parents: 491
diff changeset
98
2211
71aef7b5339e [project @ 1996-05-15 13:00:17 by jwe]
jwe
parents: 2209
diff changeset
99 // ID of the plotter process.
71aef7b5339e [project @ 1996-05-15 13:00:17 by jwe]
jwe
parents: 2209
diff changeset
100 static pid_t plot_stream_pid = 0;
71aef7b5339e [project @ 1996-05-15 13:00:17 by jwe]
jwe
parents: 2209
diff changeset
101
866
f02ec9f8de65 [project @ 1994-11-02 05:19:02 by jwe]
jwe
parents: 777
diff changeset
102 // Use shortest possible abbreviations to minimize trouble caused by
f02ec9f8de65 [project @ 1994-11-02 05:19:02 by jwe]
jwe
parents: 777
diff changeset
103 // gnuplot's fixed-length command line buffer.
f02ec9f8de65 [project @ 1994-11-02 05:19:02 by jwe]
jwe
parents: 777
diff changeset
104
2523
007e977442b8 [project @ 1996-11-16 00:33:22 by jwe]
jwe
parents: 2521
diff changeset
105 #ifndef GPLOT_CMD_PLOT
007e977442b8 [project @ 1996-11-16 00:33:22 by jwe]
jwe
parents: 2521
diff changeset
106 #define GPLOT_CMD_PLOT "pl"
866
f02ec9f8de65 [project @ 1994-11-02 05:19:02 by jwe]
jwe
parents: 777
diff changeset
107 #endif
f02ec9f8de65 [project @ 1994-11-02 05:19:02 by jwe]
jwe
parents: 777
diff changeset
108
2523
007e977442b8 [project @ 1996-11-16 00:33:22 by jwe]
jwe
parents: 2521
diff changeset
109 #ifndef GPLOT_CMD_REPLOT
007e977442b8 [project @ 1996-11-16 00:33:22 by jwe]
jwe
parents: 2521
diff changeset
110 #define GPLOT_CMD_REPLOT "rep"
007e977442b8 [project @ 1996-11-16 00:33:22 by jwe]
jwe
parents: 2521
diff changeset
111 #endif
007e977442b8 [project @ 1996-11-16 00:33:22 by jwe]
jwe
parents: 2521
diff changeset
112
007e977442b8 [project @ 1996-11-16 00:33:22 by jwe]
jwe
parents: 2521
diff changeset
113 #ifndef GPLOT_CMD_SPLOT
007e977442b8 [project @ 1996-11-16 00:33:22 by jwe]
jwe
parents: 2521
diff changeset
114 #define GPLOT_CMD_SPLOT "sp"
866
f02ec9f8de65 [project @ 1994-11-02 05:19:02 by jwe]
jwe
parents: 777
diff changeset
115 #endif
f02ec9f8de65 [project @ 1994-11-02 05:19:02 by jwe]
jwe
parents: 777
diff changeset
116
2523
007e977442b8 [project @ 1996-11-16 00:33:22 by jwe]
jwe
parents: 2521
diff changeset
117 #ifndef GPLOT_CMD_USING
007e977442b8 [project @ 1996-11-16 00:33:22 by jwe]
jwe
parents: 2521
diff changeset
118 #define GPLOT_CMD_USING "u"
866
f02ec9f8de65 [project @ 1994-11-02 05:19:02 by jwe]
jwe
parents: 777
diff changeset
119 #endif
f02ec9f8de65 [project @ 1994-11-02 05:19:02 by jwe]
jwe
parents: 777
diff changeset
120
2523
007e977442b8 [project @ 1996-11-16 00:33:22 by jwe]
jwe
parents: 2521
diff changeset
121 #ifndef GPLOT_CMD_WITH
007e977442b8 [project @ 1996-11-16 00:33:22 by jwe]
jwe
parents: 2521
diff changeset
122 #define GPLOT_CMD_WITH "w"
866
f02ec9f8de65 [project @ 1994-11-02 05:19:02 by jwe]
jwe
parents: 777
diff changeset
123 #endif
f02ec9f8de65 [project @ 1994-11-02 05:19:02 by jwe]
jwe
parents: 777
diff changeset
124
2523
007e977442b8 [project @ 1996-11-16 00:33:22 by jwe]
jwe
parents: 2521
diff changeset
125 #ifndef GPLOT_CMD_TITLE
007e977442b8 [project @ 1996-11-16 00:33:22 by jwe]
jwe
parents: 2521
diff changeset
126 #define GPLOT_CMD_TITLE "t"
866
f02ec9f8de65 [project @ 1994-11-02 05:19:02 by jwe]
jwe
parents: 777
diff changeset
127 #endif
f02ec9f8de65 [project @ 1994-11-02 05:19:02 by jwe]
jwe
parents: 777
diff changeset
128
2523
007e977442b8 [project @ 1996-11-16 00:33:22 by jwe]
jwe
parents: 2521
diff changeset
129 #ifndef GPLOT_CMD_END
007e977442b8 [project @ 1996-11-16 00:33:22 by jwe]
jwe
parents: 2521
diff changeset
130 #define GPLOT_CMD_END ";\n"
866
f02ec9f8de65 [project @ 1994-11-02 05:19:02 by jwe]
jwe
parents: 777
diff changeset
131 #endif
f02ec9f8de65 [project @ 1994-11-02 05:19:02 by jwe]
jwe
parents: 777
diff changeset
132
597
205b8c2ef749 [project @ 1994-08-09 19:31:39 by jwe]
jwe
parents: 592
diff changeset
133 static void
2209
859030f15706 [project @ 1996-05-15 11:46:43 by jwe]
jwe
parents: 2200
diff changeset
134 plot_stream_death_handler (pid_t pid, int)
859030f15706 [project @ 1996-05-15 11:46:43 by jwe]
jwe
parents: 2200
diff changeset
135 {
859030f15706 [project @ 1996-05-15 11:46:43 by jwe]
jwe
parents: 2200
diff changeset
136 close_plot_stream ();
859030f15706 [project @ 1996-05-15 11:46:43 by jwe]
jwe
parents: 2200
diff changeset
137
859030f15706 [project @ 1996-05-15 11:46:43 by jwe]
jwe
parents: 2200
diff changeset
138 warning ("connection to external plotter (pid = %d) lost --", pid);
859030f15706 [project @ 1996-05-15 11:46:43 by jwe]
jwe
parents: 2200
diff changeset
139 warning ("please try your plot command(s) again");
859030f15706 [project @ 1996-05-15 11:46:43 by jwe]
jwe
parents: 2200
diff changeset
140 }
859030f15706 [project @ 1996-05-15 11:46:43 by jwe]
jwe
parents: 2200
diff changeset
141
859030f15706 [project @ 1996-05-15 11:46:43 by jwe]
jwe
parents: 2200
diff changeset
142 static void
597
205b8c2ef749 [project @ 1994-08-09 19:31:39 by jwe]
jwe
parents: 592
diff changeset
143 open_plot_stream (void)
205b8c2ef749 [project @ 1994-08-09 19:31:39 by jwe]
jwe
parents: 592
diff changeset
144 {
1827
effa9400766f [project @ 1996-02-02 14:07:51 by jwe]
jwe
parents: 1802
diff changeset
145 static bool initialized = false;
597
205b8c2ef749 [project @ 1994-08-09 19:31:39 by jwe]
jwe
parents: 592
diff changeset
146
1449
df589c97e140 [project @ 1995-09-20 03:49:51 by jwe]
jwe
parents: 1358
diff changeset
147 if (plot_stream && ! *plot_stream)
df589c97e140 [project @ 1995-09-20 03:49:51 by jwe]
jwe
parents: 1358
diff changeset
148 {
df589c97e140 [project @ 1995-09-20 03:49:51 by jwe]
jwe
parents: 1358
diff changeset
149 delete plot_stream;
df589c97e140 [project @ 1995-09-20 03:49:51 by jwe]
jwe
parents: 1358
diff changeset
150 plot_stream = 0;
df589c97e140 [project @ 1995-09-20 03:49:51 by jwe]
jwe
parents: 1358
diff changeset
151 }
df589c97e140 [project @ 1995-09-20 03:49:51 by jwe]
jwe
parents: 1358
diff changeset
152
df589c97e140 [project @ 1995-09-20 03:49:51 by jwe]
jwe
parents: 1358
diff changeset
153 if (! plot_stream)
597
205b8c2ef749 [project @ 1994-08-09 19:31:39 by jwe]
jwe
parents: 592
diff changeset
154 {
1827
effa9400766f [project @ 1996-02-02 14:07:51 by jwe]
jwe
parents: 1802
diff changeset
155 initialized = false;
943
4fc1ae8c24dc [project @ 1994-11-21 19:05:31 by jwe]
jwe
parents: 940
diff changeset
156
597
205b8c2ef749 [project @ 1994-08-09 19:31:39 by jwe]
jwe
parents: 592
diff changeset
157 plot_line_count = 0;
205b8c2ef749 [project @ 1994-08-09 19:31:39 by jwe]
jwe
parents: 592
diff changeset
158
2176
868d82fe5fdc [project @ 1996-05-13 16:22:01 by jwe]
jwe
parents: 2124
diff changeset
159 string plot_prog = Vgnuplot_binary;
1755
3a9462b655f1 [project @ 1996-01-22 04:47:22 by jwe]
jwe
parents: 1750
diff changeset
160
2209
859030f15706 [project @ 1996-05-15 11:46:43 by jwe]
jwe
parents: 2200
diff changeset
161 if (plot_prog.empty ())
859030f15706 [project @ 1996-05-15 11:46:43 by jwe]
jwe
parents: 2200
diff changeset
162 plot_prog = "gnuplot";
859030f15706 [project @ 1996-05-15 11:46:43 by jwe]
jwe
parents: 2200
diff changeset
163
859030f15706 [project @ 1996-05-15 11:46:43 by jwe]
jwe
parents: 2200
diff changeset
164 // XXX FIXME XXX -- I'm not sure this is the right thing to do,
859030f15706 [project @ 1996-05-15 11:46:43 by jwe]
jwe
parents: 2200
diff changeset
165 // but without it, C-c at the octave prompt will kill gnuplot...
859030f15706 [project @ 1996-05-15 11:46:43 by jwe]
jwe
parents: 2200
diff changeset
166
2211
71aef7b5339e [project @ 1996-05-15 13:00:17 by jwe]
jwe
parents: 2209
diff changeset
167 #if defined (HAVE_POSIX_SIGNALS)
71aef7b5339e [project @ 1996-05-15 13:00:17 by jwe]
jwe
parents: 2209
diff changeset
168 sigset_t set, oset;
71aef7b5339e [project @ 1996-05-15 13:00:17 by jwe]
jwe
parents: 2209
diff changeset
169 sigemptyset (&set);
71aef7b5339e [project @ 1996-05-15 13:00:17 by jwe]
jwe
parents: 2209
diff changeset
170 sigaddset (&set, SIGINT);
71aef7b5339e [project @ 1996-05-15 13:00:17 by jwe]
jwe
parents: 2209
diff changeset
171 sigprocmask (SIG_BLOCK, &set, &oset);
2553
f57c52dcd5ed [project @ 1996-11-21 01:38:48 by jwe]
jwe
parents: 2543
diff changeset
172 #else
f57c52dcd5ed [project @ 1996-11-21 01:38:48 by jwe]
jwe
parents: 2543
diff changeset
173 volatile octave_interrupt_handler *old_interrupt_handler
f57c52dcd5ed [project @ 1996-11-21 01:38:48 by jwe]
jwe
parents: 2543
diff changeset
174 = octave_ignore_interrupts ();
2211
71aef7b5339e [project @ 1996-05-15 13:00:17 by jwe]
jwe
parents: 2209
diff changeset
175 #endif
2209
859030f15706 [project @ 1996-05-15 11:46:43 by jwe]
jwe
parents: 2200
diff changeset
176
859030f15706 [project @ 1996-05-15 11:46:43 by jwe]
jwe
parents: 2200
diff changeset
177 plot_stream = new oprocstream (plot_prog.c_str ());
859030f15706 [project @ 1996-05-15 11:46:43 by jwe]
jwe
parents: 2200
diff changeset
178
859030f15706 [project @ 1996-05-15 11:46:43 by jwe]
jwe
parents: 2200
diff changeset
179 if (plot_stream)
597
205b8c2ef749 [project @ 1994-08-09 19:31:39 by jwe]
jwe
parents: 592
diff changeset
180 {
2209
859030f15706 [project @ 1996-05-15 11:46:43 by jwe]
jwe
parents: 2200
diff changeset
181 if (! *plot_stream)
1449
df589c97e140 [project @ 1995-09-20 03:49:51 by jwe]
jwe
parents: 1358
diff changeset
182 {
df589c97e140 [project @ 1995-09-20 03:49:51 by jwe]
jwe
parents: 1358
diff changeset
183 delete plot_stream;
df589c97e140 [project @ 1995-09-20 03:49:51 by jwe]
jwe
parents: 1358
diff changeset
184 plot_stream = 0;
2209
859030f15706 [project @ 1996-05-15 11:46:43 by jwe]
jwe
parents: 2200
diff changeset
185
859030f15706 [project @ 1996-05-15 11:46:43 by jwe]
jwe
parents: 2200
diff changeset
186 error ("plot: unable to open pipe to `%s'", plot_prog.c_str ());
1449
df589c97e140 [project @ 1995-09-20 03:49:51 by jwe]
jwe
parents: 1358
diff changeset
187 }
2209
859030f15706 [project @ 1996-05-15 11:46:43 by jwe]
jwe
parents: 2200
diff changeset
188 else
597
205b8c2ef749 [project @ 1994-08-09 19:31:39 by jwe]
jwe
parents: 592
diff changeset
189 {
2211
71aef7b5339e [project @ 1996-05-15 13:00:17 by jwe]
jwe
parents: 2209
diff changeset
190 plot_stream_pid = plot_stream->pid ();
71aef7b5339e [project @ 1996-05-15 13:00:17 by jwe]
jwe
parents: 2209
diff changeset
191 octave_child_list::insert (plot_stream_pid,
71aef7b5339e [project @ 1996-05-15 13:00:17 by jwe]
jwe
parents: 2209
diff changeset
192 plot_stream_death_handler);
597
205b8c2ef749 [project @ 1994-08-09 19:31:39 by jwe]
jwe
parents: 592
diff changeset
193 }
205b8c2ef749 [project @ 1994-08-09 19:31:39 by jwe]
jwe
parents: 592
diff changeset
194 }
205b8c2ef749 [project @ 1994-08-09 19:31:39 by jwe]
jwe
parents: 592
diff changeset
195 else
2209
859030f15706 [project @ 1996-05-15 11:46:43 by jwe]
jwe
parents: 2200
diff changeset
196 error ("plot: unable to open pipe to `%s'", plot_prog.c_str ());
2211
71aef7b5339e [project @ 1996-05-15 13:00:17 by jwe]
jwe
parents: 2209
diff changeset
197
71aef7b5339e [project @ 1996-05-15 13:00:17 by jwe]
jwe
parents: 2209
diff changeset
198 #if defined (HAVE_POSIX_SIGNALS)
71aef7b5339e [project @ 1996-05-15 13:00:17 by jwe]
jwe
parents: 2209
diff changeset
199 sigprocmask (SIG_SETMASK, &oset, 0);
2553
f57c52dcd5ed [project @ 1996-11-21 01:38:48 by jwe]
jwe
parents: 2543
diff changeset
200 #else
f57c52dcd5ed [project @ 1996-11-21 01:38:48 by jwe]
jwe
parents: 2543
diff changeset
201 octave_set_interrupt_handler (old_interrupt_handler);
2211
71aef7b5339e [project @ 1996-05-15 13:00:17 by jwe]
jwe
parents: 2209
diff changeset
202 #endif
597
205b8c2ef749 [project @ 1994-08-09 19:31:39 by jwe]
jwe
parents: 592
diff changeset
203 }
205b8c2ef749 [project @ 1994-08-09 19:31:39 by jwe]
jwe
parents: 592
diff changeset
204
1449
df589c97e140 [project @ 1995-09-20 03:49:51 by jwe]
jwe
parents: 1358
diff changeset
205 if (! error_state && plot_stream && *plot_stream && ! initialized)
597
205b8c2ef749 [project @ 1994-08-09 19:31:39 by jwe]
jwe
parents: 592
diff changeset
206 {
1827
effa9400766f [project @ 1996-02-02 14:07:51 by jwe]
jwe
parents: 1802
diff changeset
207 initialized = true;
1449
df589c97e140 [project @ 1995-09-20 03:49:51 by jwe]
jwe
parents: 1358
diff changeset
208 *plot_stream << "set data style lines\n";
943
4fc1ae8c24dc [project @ 1994-11-21 19:05:31 by jwe]
jwe
parents: 940
diff changeset
209
4fc1ae8c24dc [project @ 1994-11-21 19:05:31 by jwe]
jwe
parents: 940
diff changeset
210 if (gnuplot_terminal_type)
2523
007e977442b8 [project @ 1996-11-16 00:33:22 by jwe]
jwe
parents: 2521
diff changeset
211 *plot_stream << "set term " << gnuplot_terminal_type << GPLOT_CMD_END;
597
205b8c2ef749 [project @ 1994-08-09 19:31:39 by jwe]
jwe
parents: 592
diff changeset
212 }
205b8c2ef749 [project @ 1994-08-09 19:31:39 by jwe]
jwe
parents: 592
diff changeset
213 }
205b8c2ef749 [project @ 1994-08-09 19:31:39 by jwe]
jwe
parents: 592
diff changeset
214
205b8c2ef749 [project @ 1994-08-09 19:31:39 by jwe]
jwe
parents: 592
diff changeset
215 static int
205b8c2ef749 [project @ 1994-08-09 19:31:39 by jwe]
jwe
parents: 592
diff changeset
216 send_to_plot_stream (const char *cmd)
205b8c2ef749 [project @ 1994-08-09 19:31:39 by jwe]
jwe
parents: 592
diff changeset
217 {
1449
df589c97e140 [project @ 1995-09-20 03:49:51 by jwe]
jwe
parents: 1358
diff changeset
218 if (! (plot_stream && *plot_stream))
597
205b8c2ef749 [project @ 1994-08-09 19:31:39 by jwe]
jwe
parents: 592
diff changeset
219 {
205b8c2ef749 [project @ 1994-08-09 19:31:39 by jwe]
jwe
parents: 592
diff changeset
220 open_plot_stream ();
205b8c2ef749 [project @ 1994-08-09 19:31:39 by jwe]
jwe
parents: 592
diff changeset
221
205b8c2ef749 [project @ 1994-08-09 19:31:39 by jwe]
jwe
parents: 592
diff changeset
222 if (error_state)
205b8c2ef749 [project @ 1994-08-09 19:31:39 by jwe]
jwe
parents: 592
diff changeset
223 return -1;
205b8c2ef749 [project @ 1994-08-09 19:31:39 by jwe]
jwe
parents: 592
diff changeset
224 }
205b8c2ef749 [project @ 1994-08-09 19:31:39 by jwe]
jwe
parents: 592
diff changeset
225
2523
007e977442b8 [project @ 1996-11-16 00:33:22 by jwe]
jwe
parents: 2521
diff changeset
226 int replot_len = strlen (GPLOT_CMD_REPLOT);
007e977442b8 [project @ 1996-11-16 00:33:22 by jwe]
jwe
parents: 2521
diff changeset
227 int splot_len = strlen (GPLOT_CMD_SPLOT);
007e977442b8 [project @ 1996-11-16 00:33:22 by jwe]
jwe
parents: 2521
diff changeset
228 int plot_len = strlen (GPLOT_CMD_PLOT);
930
b02124748d40 [project @ 1994-11-16 01:40:19 by jwe]
jwe
parents: 929
diff changeset
229
2523
007e977442b8 [project @ 1996-11-16 00:33:22 by jwe]
jwe
parents: 2521
diff changeset
230 bool is_replot = (strncmp (cmd, GPLOT_CMD_REPLOT, replot_len) == 0);
007e977442b8 [project @ 1996-11-16 00:33:22 by jwe]
jwe
parents: 2521
diff changeset
231 bool is_splot = (strncmp (cmd, GPLOT_CMD_SPLOT, splot_len) == 0);
007e977442b8 [project @ 1996-11-16 00:33:22 by jwe]
jwe
parents: 2521
diff changeset
232 bool is_plot = (strncmp (cmd, GPLOT_CMD_PLOT, plot_len) == 0);
661
9ccf86647203 [project @ 1994-08-30 04:41:56 by jwe]
jwe
parents: 637
diff changeset
233
9ccf86647203 [project @ 1994-08-30 04:41:56 by jwe]
jwe
parents: 637
diff changeset
234 if (plot_line_count == 0 && is_replot)
597
205b8c2ef749 [project @ 1994-08-09 19:31:39 by jwe]
jwe
parents: 592
diff changeset
235 error ("replot: no previous plot");
205b8c2ef749 [project @ 1994-08-09 19:31:39 by jwe]
jwe
parents: 592
diff changeset
236 else
205b8c2ef749 [project @ 1994-08-09 19:31:39 by jwe]
jwe
parents: 592
diff changeset
237 {
1449
df589c97e140 [project @ 1995-09-20 03:49:51 by jwe]
jwe
parents: 1358
diff changeset
238 *plot_stream << cmd;
930
b02124748d40 [project @ 1994-11-16 01:40:19 by jwe]
jwe
parents: 929
diff changeset
239
661
9ccf86647203 [project @ 1994-08-30 04:41:56 by jwe]
jwe
parents: 637
diff changeset
240 if (! (is_replot || is_splot || is_plot)
9ccf86647203 [project @ 1994-08-30 04:41:56 by jwe]
jwe
parents: 637
diff changeset
241 && plot_line_count > 0
2176
868d82fe5fdc [project @ 1996-05-13 16:22:01 by jwe]
jwe
parents: 2124
diff changeset
242 && Vautomatic_replot)
2523
007e977442b8 [project @ 1996-11-16 00:33:22 by jwe]
jwe
parents: 2521
diff changeset
243 *plot_stream << GPLOT_CMD_REPLOT << GPLOT_CMD_END;
930
b02124748d40 [project @ 1994-11-16 01:40:19 by jwe]
jwe
parents: 929
diff changeset
244
1449
df589c97e140 [project @ 1995-09-20 03:49:51 by jwe]
jwe
parents: 1358
diff changeset
245 plot_stream->flush ();
597
205b8c2ef749 [project @ 1994-08-09 19:31:39 by jwe]
jwe
parents: 592
diff changeset
246 }
205b8c2ef749 [project @ 1994-08-09 19:31:39 by jwe]
jwe
parents: 592
diff changeset
247
205b8c2ef749 [project @ 1994-08-09 19:31:39 by jwe]
jwe
parents: 592
diff changeset
248 return 0;
205b8c2ef749 [project @ 1994-08-09 19:31:39 by jwe]
jwe
parents: 592
diff changeset
249 }
205b8c2ef749 [project @ 1994-08-09 19:31:39 by jwe]
jwe
parents: 592
diff changeset
250
581
bc813f5eb025 [project @ 1994-08-07 01:02:15 by jwe]
jwe
parents: 578
diff changeset
251 // Plotting, eh?
1
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
252
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
253 tree_plot_command::~tree_plot_command (void)
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
254 {
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
255 delete range;
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
256 delete plot_list;
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
257 }
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
258
578
d169be9237fb [project @ 1994-08-03 20:06:54 by jwe]
jwe
parents: 543
diff changeset
259 void
d169be9237fb [project @ 1994-08-03 20:06:54 by jwe]
jwe
parents: 543
diff changeset
260 tree_plot_command::eval (void)
1
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
261 {
143
7849db4b6dbc [project @ 1993-10-04 02:36:45 by jwe]
jwe
parents: 134
diff changeset
262 if (error_state)
578
d169be9237fb [project @ 1994-08-03 20:06:54 by jwe]
jwe
parents: 543
diff changeset
263 return;
143
7849db4b6dbc [project @ 1993-10-04 02:36:45 by jwe]
jwe
parents: 134
diff changeset
264
597
205b8c2ef749 [project @ 1994-08-09 19:31:39 by jwe]
jwe
parents: 592
diff changeset
265 open_plot_stream ();
205b8c2ef749 [project @ 1994-08-09 19:31:39 by jwe]
jwe
parents: 592
diff changeset
266
1
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
267 ostrstream plot_buf;
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
268
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
269 switch (ndim)
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
270 {
476
de9de43ad21f [project @ 1994-06-24 16:17:47 by jwe]
jwe
parents: 452
diff changeset
271 case 1:
478
90964309100b [project @ 1994-06-28 16:39:41 by jwe]
jwe
parents: 476
diff changeset
272 if (plot_line_count == 0)
90964309100b [project @ 1994-06-28 16:39:41 by jwe]
jwe
parents: 476
diff changeset
273 {
90964309100b [project @ 1994-06-28 16:39:41 by jwe]
jwe
parents: 476
diff changeset
274 if (plot_list)
2523
007e977442b8 [project @ 1996-11-16 00:33:22 by jwe]
jwe
parents: 2521
diff changeset
275 plot_buf << GPLOT_CMD_PLOT;
478
90964309100b [project @ 1994-06-28 16:39:41 by jwe]
jwe
parents: 476
diff changeset
276 else
90964309100b [project @ 1994-06-28 16:39:41 by jwe]
jwe
parents: 476
diff changeset
277 {
90964309100b [project @ 1994-06-28 16:39:41 by jwe]
jwe
parents: 476
diff changeset
278 ::error ("replot: must have something to plot");
578
d169be9237fb [project @ 1994-08-03 20:06:54 by jwe]
jwe
parents: 543
diff changeset
279 return;
478
90964309100b [project @ 1994-06-28 16:39:41 by jwe]
jwe
parents: 476
diff changeset
280 }
90964309100b [project @ 1994-06-28 16:39:41 by jwe]
jwe
parents: 476
diff changeset
281 }
90964309100b [project @ 1994-06-28 16:39:41 by jwe]
jwe
parents: 476
diff changeset
282 else
2523
007e977442b8 [project @ 1996-11-16 00:33:22 by jwe]
jwe
parents: 2521
diff changeset
283 plot_buf << GPLOT_CMD_REPLOT;
476
de9de43ad21f [project @ 1994-06-24 16:17:47 by jwe]
jwe
parents: 452
diff changeset
284 break;
777
a2f9d3fd720c [project @ 1994-10-07 14:01:53 by jwe]
jwe
parents: 771
diff changeset
285
1
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
286 case 2:
478
90964309100b [project @ 1994-06-28 16:39:41 by jwe]
jwe
parents: 476
diff changeset
287 if (clear_before_plotting || plot_line_count == 0)
90964309100b [project @ 1994-06-28 16:39:41 by jwe]
jwe
parents: 476
diff changeset
288 {
90964309100b [project @ 1994-06-28 16:39:41 by jwe]
jwe
parents: 476
diff changeset
289 plot_line_count = 0;
2523
007e977442b8 [project @ 1996-11-16 00:33:22 by jwe]
jwe
parents: 2521
diff changeset
290 plot_buf << GPLOT_CMD_PLOT;
478
90964309100b [project @ 1994-06-28 16:39:41 by jwe]
jwe
parents: 476
diff changeset
291 }
90964309100b [project @ 1994-06-28 16:39:41 by jwe]
jwe
parents: 476
diff changeset
292 else
2523
007e977442b8 [project @ 1996-11-16 00:33:22 by jwe]
jwe
parents: 2521
diff changeset
293 plot_buf << GPLOT_CMD_REPLOT;
1
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
294 break;
777
a2f9d3fd720c [project @ 1994-10-07 14:01:53 by jwe]
jwe
parents: 771
diff changeset
295
1
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
296 case 3:
930
b02124748d40 [project @ 1994-11-16 01:40:19 by jwe]
jwe
parents: 929
diff changeset
297 if (clear_before_plotting || plot_line_count == 0)
b02124748d40 [project @ 1994-11-16 01:40:19 by jwe]
jwe
parents: 929
diff changeset
298 {
b02124748d40 [project @ 1994-11-16 01:40:19 by jwe]
jwe
parents: 929
diff changeset
299 plot_line_count = 0;
2523
007e977442b8 [project @ 1996-11-16 00:33:22 by jwe]
jwe
parents: 2521
diff changeset
300 plot_buf << GPLOT_CMD_SPLOT;
930
b02124748d40 [project @ 1994-11-16 01:40:19 by jwe]
jwe
parents: 929
diff changeset
301 }
b02124748d40 [project @ 1994-11-16 01:40:19 by jwe]
jwe
parents: 929
diff changeset
302 else
2523
007e977442b8 [project @ 1996-11-16 00:33:22 by jwe]
jwe
parents: 2521
diff changeset
303 plot_buf << GPLOT_CMD_REPLOT;
1
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
304 break;
777
a2f9d3fd720c [project @ 1994-10-07 14:01:53 by jwe]
jwe
parents: 771
diff changeset
305
1
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
306 default:
771
e16a175a8bb5 [project @ 1994-10-05 21:59:29 by jwe]
jwe
parents: 735
diff changeset
307 gripe_2_or_3_dim_plot ();
e16a175a8bb5 [project @ 1994-10-05 21:59:29 by jwe]
jwe
parents: 735
diff changeset
308 return;
1
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
309 }
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
310
524
2814c75c8398 [project @ 1994-07-20 18:36:24 by jwe]
jwe
parents: 491
diff changeset
311 if (range)
478
90964309100b [project @ 1994-06-28 16:39:41 by jwe]
jwe
parents: 476
diff changeset
312 {
90964309100b [project @ 1994-06-28 16:39:41 by jwe]
jwe
parents: 476
diff changeset
313 if (plot_line_count == 0)
90964309100b [project @ 1994-06-28 16:39:41 by jwe]
jwe
parents: 476
diff changeset
314 range->print (ndim, plot_buf);
90964309100b [project @ 1994-06-28 16:39:41 by jwe]
jwe
parents: 476
diff changeset
315 else
90964309100b [project @ 1994-06-28 16:39:41 by jwe]
jwe
parents: 476
diff changeset
316 warning ("can't specify new plot ranges with `replot' or while\
90964309100b [project @ 1994-06-28 16:39:41 by jwe]
jwe
parents: 476
diff changeset
317 hold is on");
90964309100b [project @ 1994-06-28 16:39:41 by jwe]
jwe
parents: 476
diff changeset
318 }
1
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
319
191
b6b4d8c513fe [project @ 1993-10-29 23:41:39 by jwe]
jwe
parents: 143
diff changeset
320 if (error_state)
578
d169be9237fb [project @ 1994-08-03 20:06:54 by jwe]
jwe
parents: 543
diff changeset
321 return;
191
b6b4d8c513fe [project @ 1993-10-29 23:41:39 by jwe]
jwe
parents: 143
diff changeset
322
591
7563a815389b [project @ 1994-08-09 01:18:36 by jwe]
jwe
parents: 584
diff changeset
323 if (plot_list)
1
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
324 {
591
7563a815389b [project @ 1994-08-09 01:18:36 by jwe]
jwe
parents: 584
diff changeset
325 int status = plot_list->print (ndim, plot_buf);
578
d169be9237fb [project @ 1994-08-03 20:06:54 by jwe]
jwe
parents: 543
diff changeset
326
771
e16a175a8bb5 [project @ 1994-10-05 21:59:29 by jwe]
jwe
parents: 735
diff changeset
327 if (error_state || status < 0)
578
d169be9237fb [project @ 1994-08-03 20:06:54 by jwe]
jwe
parents: 543
diff changeset
328 return;
1
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
329 }
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
330
2523
007e977442b8 [project @ 1996-11-16 00:33:22 by jwe]
jwe
parents: 2521
diff changeset
331 plot_buf << GPLOT_CMD_END << ends;
1
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
332
1358
dc9c01f66a19 [project @ 1995-09-05 21:10:01 by jwe]
jwe
parents: 1352
diff changeset
333 // Just testing...
dc9c01f66a19 [project @ 1995-09-05 21:10:01 by jwe]
jwe
parents: 1352
diff changeset
334 // char *message = plot_buf.str ();
dc9c01f66a19 [project @ 1995-09-05 21:10:01 by jwe]
jwe
parents: 1352
diff changeset
335 // cout << "[*]" << message << "[*]\n";
1
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
336
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
337 if (parametric_plot && ndim == 2)
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
338 {
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
339 warning ("can't make 2D parametric plot -- setting noparametric...");
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
340 send_to_plot_stream ("set noparametric\n");
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
341 char *message = plot_buf.str ();
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
342 send_to_plot_stream (message);
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
343 delete [] message;
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
344 send_to_plot_stream ("set parametric\n");
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
345 }
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
346 else
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
347 {
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
348 char *message = plot_buf.str ();
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
349 send_to_plot_stream (message);
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
350 delete [] message;
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
351 }
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
352 }
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
353
591
7563a815389b [project @ 1994-08-09 01:18:36 by jwe]
jwe
parents: 584
diff changeset
354 void
2124
97a566037a75 [project @ 1996-05-12 07:16:36 by jwe]
jwe
parents: 2086
diff changeset
355 tree_plot_command::accept (tree_walker& tw)
1
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
356 {
2124
97a566037a75 [project @ 1996-05-12 07:16:36 by jwe]
jwe
parents: 2086
diff changeset
357 tw.visit_plot_command (*this);
1
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
358 }
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
359
578
d169be9237fb [project @ 1994-08-03 20:06:54 by jwe]
jwe
parents: 543
diff changeset
360 plot_limits::~plot_limits (void)
1
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
361 {
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
362 delete x_range;
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
363 delete y_range;
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
364 delete z_range;
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
365 }
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
366
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
367 void
578
d169be9237fb [project @ 1994-08-03 20:06:54 by jwe]
jwe
parents: 543
diff changeset
368 plot_limits::print (int ndim, ostrstream& plot_buf)
1
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
369 {
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
370 if (ndim == 2 || ndim == 3)
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
371 {
524
2814c75c8398 [project @ 1994-07-20 18:36:24 by jwe]
jwe
parents: 491
diff changeset
372 if (x_range)
1
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
373 x_range->print (plot_buf);
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
374 else
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
375 return;
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
376
524
2814c75c8398 [project @ 1994-07-20 18:36:24 by jwe]
jwe
parents: 491
diff changeset
377 if (y_range)
1
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
378 y_range->print (plot_buf);
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
379 else
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
380 return;
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
381 }
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
382
524
2814c75c8398 [project @ 1994-07-20 18:36:24 by jwe]
jwe
parents: 491
diff changeset
383 if (ndim == 3 && z_range)
1
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
384 z_range->print (plot_buf);
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
385 }
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
386
591
7563a815389b [project @ 1994-08-09 01:18:36 by jwe]
jwe
parents: 584
diff changeset
387 void
2124
97a566037a75 [project @ 1996-05-12 07:16:36 by jwe]
jwe
parents: 2086
diff changeset
388 plot_limits::accept (tree_walker& tw)
591
7563a815389b [project @ 1994-08-09 01:18:36 by jwe]
jwe
parents: 584
diff changeset
389 {
2124
97a566037a75 [project @ 1996-05-12 07:16:36 by jwe]
jwe
parents: 2086
diff changeset
390 tw.visit_plot_limits (*this);
591
7563a815389b [project @ 1994-08-09 01:18:36 by jwe]
jwe
parents: 584
diff changeset
391 }
7563a815389b [project @ 1994-08-09 01:18:36 by jwe]
jwe
parents: 584
diff changeset
392
578
d169be9237fb [project @ 1994-08-03 20:06:54 by jwe]
jwe
parents: 543
diff changeset
393 plot_range::~plot_range (void)
1
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
394 {
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
395 delete lower;
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
396 delete upper;
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
397 }
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
398
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
399 void
578
d169be9237fb [project @ 1994-08-03 20:06:54 by jwe]
jwe
parents: 543
diff changeset
400 plot_range::print (ostrstream& plot_buf)
1
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
401 {
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
402 plot_buf << " [";
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
403
524
2814c75c8398 [project @ 1994-07-20 18:36:24 by jwe]
jwe
parents: 491
diff changeset
404 if (lower)
1
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
405 {
2086
bfb775fb6fe8 [project @ 1996-04-25 05:55:19 by jwe]
jwe
parents: 1996
diff changeset
406 octave_value lower_val = lower->eval (false);
191
b6b4d8c513fe [project @ 1993-10-29 23:41:39 by jwe]
jwe
parents: 143
diff changeset
407 if (error_state)
b6b4d8c513fe [project @ 1993-10-29 23:41:39 by jwe]
jwe
parents: 143
diff changeset
408 {
240
a99f28f5e351 [project @ 1993-11-30 20:24:36 by jwe]
jwe
parents: 191
diff changeset
409 ::error ("evaluating lower bound of plot range");
191
b6b4d8c513fe [project @ 1993-10-29 23:41:39 by jwe]
jwe
parents: 143
diff changeset
410 return;
b6b4d8c513fe [project @ 1993-10-29 23:41:39 by jwe]
jwe
parents: 143
diff changeset
411 }
b6b4d8c513fe [project @ 1993-10-29 23:41:39 by jwe]
jwe
parents: 143
diff changeset
412 else
b6b4d8c513fe [project @ 1993-10-29 23:41:39 by jwe]
jwe
parents: 143
diff changeset
413 {
629
0788882808bc [project @ 1994-08-19 14:33:40 by jwe]
jwe
parents: 610
diff changeset
414 double lo = lower_val.double_value ();
191
b6b4d8c513fe [project @ 1993-10-29 23:41:39 by jwe]
jwe
parents: 143
diff changeset
415 plot_buf << lo;
b6b4d8c513fe [project @ 1993-10-29 23:41:39 by jwe]
jwe
parents: 143
diff changeset
416 }
1
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
417 }
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
418
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
419 plot_buf << ":";
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
420
524
2814c75c8398 [project @ 1994-07-20 18:36:24 by jwe]
jwe
parents: 491
diff changeset
421 if (upper)
1
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
422 {
2086
bfb775fb6fe8 [project @ 1996-04-25 05:55:19 by jwe]
jwe
parents: 1996
diff changeset
423 octave_value upper_val = upper->eval (false);
191
b6b4d8c513fe [project @ 1993-10-29 23:41:39 by jwe]
jwe
parents: 143
diff changeset
424 if (error_state)
b6b4d8c513fe [project @ 1993-10-29 23:41:39 by jwe]
jwe
parents: 143
diff changeset
425 {
240
a99f28f5e351 [project @ 1993-11-30 20:24:36 by jwe]
jwe
parents: 191
diff changeset
426 ::error ("evaluating upper bound of plot range");
191
b6b4d8c513fe [project @ 1993-10-29 23:41:39 by jwe]
jwe
parents: 143
diff changeset
427 return;
b6b4d8c513fe [project @ 1993-10-29 23:41:39 by jwe]
jwe
parents: 143
diff changeset
428 }
b6b4d8c513fe [project @ 1993-10-29 23:41:39 by jwe]
jwe
parents: 143
diff changeset
429 else
b6b4d8c513fe [project @ 1993-10-29 23:41:39 by jwe]
jwe
parents: 143
diff changeset
430 {
629
0788882808bc [project @ 1994-08-19 14:33:40 by jwe]
jwe
parents: 610
diff changeset
431 double hi = upper_val.double_value ();
191
b6b4d8c513fe [project @ 1993-10-29 23:41:39 by jwe]
jwe
parents: 143
diff changeset
432 plot_buf << hi;
b6b4d8c513fe [project @ 1993-10-29 23:41:39 by jwe]
jwe
parents: 143
diff changeset
433 }
1
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
434 }
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
435
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
436 plot_buf << "]";
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
437 }
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
438
591
7563a815389b [project @ 1994-08-09 01:18:36 by jwe]
jwe
parents: 584
diff changeset
439 void
2124
97a566037a75 [project @ 1996-05-12 07:16:36 by jwe]
jwe
parents: 2086
diff changeset
440 plot_range::accept (tree_walker& tw)
591
7563a815389b [project @ 1994-08-09 01:18:36 by jwe]
jwe
parents: 584
diff changeset
441 {
2124
97a566037a75 [project @ 1996-05-12 07:16:36 by jwe]
jwe
parents: 2086
diff changeset
442 tw.visit_plot_range (*this);
591
7563a815389b [project @ 1994-08-09 01:18:36 by jwe]
jwe
parents: 584
diff changeset
443 }
7563a815389b [project @ 1994-08-09 01:18:36 by jwe]
jwe
parents: 584
diff changeset
444
578
d169be9237fb [project @ 1994-08-03 20:06:54 by jwe]
jwe
parents: 543
diff changeset
445 subplot_using::~subplot_using (void)
1
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
446 {
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
447 delete scanf_fmt;
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
448 }
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
449
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
450 int
872
fb24794ef0e2 [project @ 1994-11-04 00:59:24 by jwe]
jwe
parents: 871
diff changeset
451 subplot_using::eval (int ndim, int n_max)
1
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
452 {
2124
97a566037a75 [project @ 1996-05-12 07:16:36 by jwe]
jwe
parents: 2086
diff changeset
453 if ((ndim == 2 && qual_count > 4)
97a566037a75 [project @ 1996-05-12 07:16:36 by jwe]
jwe
parents: 2086
diff changeset
454 || (ndim == 3 && qual_count > 3))
1
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
455 return -1;
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
456
2124
97a566037a75 [project @ 1996-05-12 07:16:36 by jwe]
jwe
parents: 2086
diff changeset
457 if (qual_count > 0)
97a566037a75 [project @ 1996-05-12 07:16:36 by jwe]
jwe
parents: 2086
diff changeset
458 val.resize (qual_count);
872
fb24794ef0e2 [project @ 1994-11-04 00:59:24 by jwe]
jwe
parents: 871
diff changeset
459
2124
97a566037a75 [project @ 1996-05-12 07:16:36 by jwe]
jwe
parents: 2086
diff changeset
460 for (int i = 0; i < qual_count; i++)
1
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
461 {
524
2814c75c8398 [project @ 1994-07-20 18:36:24 by jwe]
jwe
parents: 491
diff changeset
462 if (x[i])
1
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
463 {
2086
bfb775fb6fe8 [project @ 1996-04-25 05:55:19 by jwe]
jwe
parents: 1996
diff changeset
464 octave_value tmp = x[i]->eval (false);
191
b6b4d8c513fe [project @ 1993-10-29 23:41:39 by jwe]
jwe
parents: 143
diff changeset
465 if (error_state)
b6b4d8c513fe [project @ 1993-10-29 23:41:39 by jwe]
jwe
parents: 143
diff changeset
466 {
240
a99f28f5e351 [project @ 1993-11-30 20:24:36 by jwe]
jwe
parents: 191
diff changeset
467 ::error ("evaluating plot using command");
191
b6b4d8c513fe [project @ 1993-10-29 23:41:39 by jwe]
jwe
parents: 143
diff changeset
468 return -1;
b6b4d8c513fe [project @ 1993-10-29 23:41:39 by jwe]
jwe
parents: 143
diff changeset
469 }
b6b4d8c513fe [project @ 1993-10-29 23:41:39 by jwe]
jwe
parents: 143
diff changeset
470
872
fb24794ef0e2 [project @ 1994-11-04 00:59:24 by jwe]
jwe
parents: 871
diff changeset
471 double val_tmp;
1
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
472 if (tmp.is_defined ())
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
473 {
872
fb24794ef0e2 [project @ 1994-11-04 00:59:24 by jwe]
jwe
parents: 871
diff changeset
474 val_tmp = tmp.double_value ();
1
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
475
872
fb24794ef0e2 [project @ 1994-11-04 00:59:24 by jwe]
jwe
parents: 871
diff changeset
476 if (error_state)
fb24794ef0e2 [project @ 1994-11-04 00:59:24 by jwe]
jwe
parents: 871
diff changeset
477 return -1;
1
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
478
1086
75fc98220389 [project @ 1995-01-31 04:17:15 by jwe]
jwe
parents: 1009
diff changeset
479 if (xisnan (val_tmp))
75fc98220389 [project @ 1995-01-31 04:17:15 by jwe]
jwe
parents: 1009
diff changeset
480 {
75fc98220389 [project @ 1995-01-31 04:17:15 by jwe]
jwe
parents: 1009
diff changeset
481 ::error ("NaN is invalid as a column specifier");
75fc98220389 [project @ 1995-01-31 04:17:15 by jwe]
jwe
parents: 1009
diff changeset
482 return -1;
75fc98220389 [project @ 1995-01-31 04:17:15 by jwe]
jwe
parents: 1009
diff changeset
483 }
75fc98220389 [project @ 1995-01-31 04:17:15 by jwe]
jwe
parents: 1009
diff changeset
484
872
fb24794ef0e2 [project @ 1994-11-04 00:59:24 by jwe]
jwe
parents: 871
diff changeset
485 int n = NINT (val_tmp);
1086
75fc98220389 [project @ 1995-01-31 04:17:15 by jwe]
jwe
parents: 1009
diff changeset
486
322
d93ab6bf48d7 [project @ 1994-02-02 04:30:42 by jwe]
jwe
parents: 240
diff changeset
487 if (n < 1 || n_max > 0 && n > n_max)
1
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
488 {
240
a99f28f5e351 [project @ 1993-11-30 20:24:36 by jwe]
jwe
parents: 191
diff changeset
489 ::error ("using: column %d out of range", n);
1
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
490 return -1;
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
491 }
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
492 else
2305
5a3f1d00a474 [project @ 1996-07-09 16:20:40 by jwe]
jwe
parents: 2289
diff changeset
493 val (i) = n;
1
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
494 }
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
495 else
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
496 return -1;
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
497 }
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
498 else
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
499 return -1;
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
500 }
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
501
524
2814c75c8398 [project @ 1994-07-20 18:36:24 by jwe]
jwe
parents: 491
diff changeset
502 if (scanf_fmt)
1
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
503 warning ("ignoring scanf format in plot command");
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
504
872
fb24794ef0e2 [project @ 1994-11-04 00:59:24 by jwe]
jwe
parents: 871
diff changeset
505 return 0;
fb24794ef0e2 [project @ 1994-11-04 00:59:24 by jwe]
jwe
parents: 871
diff changeset
506 }
fb24794ef0e2 [project @ 1994-11-04 00:59:24 by jwe]
jwe
parents: 871
diff changeset
507
fb24794ef0e2 [project @ 1994-11-04 00:59:24 by jwe]
jwe
parents: 871
diff changeset
508 ColumnVector
fb24794ef0e2 [project @ 1994-11-04 00:59:24 by jwe]
jwe
parents: 871
diff changeset
509 subplot_using::values (int ndim, int n_max)
fb24794ef0e2 [project @ 1994-11-04 00:59:24 by jwe]
jwe
parents: 871
diff changeset
510 {
fb24794ef0e2 [project @ 1994-11-04 00:59:24 by jwe]
jwe
parents: 871
diff changeset
511 int status = eval (ndim, n_max);
fb24794ef0e2 [project @ 1994-11-04 00:59:24 by jwe]
jwe
parents: 871
diff changeset
512
1203
da56532815ee [project @ 1995-04-03 22:58:38 by jwe]
jwe
parents: 1192
diff changeset
513 if (status < 0)
872
fb24794ef0e2 [project @ 1994-11-04 00:59:24 by jwe]
jwe
parents: 871
diff changeset
514 return -1;
fb24794ef0e2 [project @ 1994-11-04 00:59:24 by jwe]
jwe
parents: 871
diff changeset
515
fb24794ef0e2 [project @ 1994-11-04 00:59:24 by jwe]
jwe
parents: 871
diff changeset
516 return val;
fb24794ef0e2 [project @ 1994-11-04 00:59:24 by jwe]
jwe
parents: 871
diff changeset
517 }
fb24794ef0e2 [project @ 1994-11-04 00:59:24 by jwe]
jwe
parents: 871
diff changeset
518
fb24794ef0e2 [project @ 1994-11-04 00:59:24 by jwe]
jwe
parents: 871
diff changeset
519 int
fb24794ef0e2 [project @ 1994-11-04 00:59:24 by jwe]
jwe
parents: 871
diff changeset
520 subplot_using::print (int ndim, int n_max, ostrstream& plot_buf)
fb24794ef0e2 [project @ 1994-11-04 00:59:24 by jwe]
jwe
parents: 871
diff changeset
521 {
fb24794ef0e2 [project @ 1994-11-04 00:59:24 by jwe]
jwe
parents: 871
diff changeset
522 int status = eval (ndim, n_max);
fb24794ef0e2 [project @ 1994-11-04 00:59:24 by jwe]
jwe
parents: 871
diff changeset
523
1203
da56532815ee [project @ 1995-04-03 22:58:38 by jwe]
jwe
parents: 1192
diff changeset
524 if (status < 0)
872
fb24794ef0e2 [project @ 1994-11-04 00:59:24 by jwe]
jwe
parents: 871
diff changeset
525 return -1;
fb24794ef0e2 [project @ 1994-11-04 00:59:24 by jwe]
jwe
parents: 871
diff changeset
526
2124
97a566037a75 [project @ 1996-05-12 07:16:36 by jwe]
jwe
parents: 2086
diff changeset
527 for (int i = 0; i < qual_count; i++)
872
fb24794ef0e2 [project @ 1994-11-04 00:59:24 by jwe]
jwe
parents: 871
diff changeset
528 {
fb24794ef0e2 [project @ 1994-11-04 00:59:24 by jwe]
jwe
parents: 871
diff changeset
529 if (i == 0)
2523
007e977442b8 [project @ 1996-11-16 00:33:22 by jwe]
jwe
parents: 2521
diff changeset
530 plot_buf << " " << GPLOT_CMD_USING << " ";
872
fb24794ef0e2 [project @ 1994-11-04 00:59:24 by jwe]
jwe
parents: 871
diff changeset
531 else
fb24794ef0e2 [project @ 1994-11-04 00:59:24 by jwe]
jwe
parents: 871
diff changeset
532 plot_buf << ":";
fb24794ef0e2 [project @ 1994-11-04 00:59:24 by jwe]
jwe
parents: 871
diff changeset
533
2305
5a3f1d00a474 [project @ 1996-07-09 16:20:40 by jwe]
jwe
parents: 2289
diff changeset
534 plot_buf << val (i);
872
fb24794ef0e2 [project @ 1994-11-04 00:59:24 by jwe]
jwe
parents: 871
diff changeset
535 }
fb24794ef0e2 [project @ 1994-11-04 00:59:24 by jwe]
jwe
parents: 871
diff changeset
536
1
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
537 return 0;
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
538 }
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
539
591
7563a815389b [project @ 1994-08-09 01:18:36 by jwe]
jwe
parents: 584
diff changeset
540 void
2124
97a566037a75 [project @ 1996-05-12 07:16:36 by jwe]
jwe
parents: 2086
diff changeset
541 subplot_using::accept (tree_walker& tw)
1
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
542 {
2124
97a566037a75 [project @ 1996-05-12 07:16:36 by jwe]
jwe
parents: 2086
diff changeset
543 tw.visit_subplot_using (*this);
1
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
544 }
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
545
578
d169be9237fb [project @ 1994-08-03 20:06:54 by jwe]
jwe
parents: 543
diff changeset
546 subplot_style::~subplot_style (void)
1622
2aed00132ba2 [project @ 1995-11-06 17:36:48 by jwe]
jwe
parents: 1488
diff changeset
547 {
2124
97a566037a75 [project @ 1996-05-12 07:16:36 by jwe]
jwe
parents: 2086
diff changeset
548 delete sp_linetype;
97a566037a75 [project @ 1996-05-12 07:16:36 by jwe]
jwe
parents: 2086
diff changeset
549 delete sp_pointtype;
1
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
550 }
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
551
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
552 int
578
d169be9237fb [project @ 1994-08-03 20:06:54 by jwe]
jwe
parents: 543
diff changeset
553 subplot_style::print (ostrstream& plot_buf)
1
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
554 {
2124
97a566037a75 [project @ 1996-05-12 07:16:36 by jwe]
jwe
parents: 2086
diff changeset
555 if (! sp_style.empty ())
1
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
556 {
2523
007e977442b8 [project @ 1996-11-16 00:33:22 by jwe]
jwe
parents: 2521
diff changeset
557 plot_buf << " " << GPLOT_CMD_WITH << " " << sp_style;
1
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
558
2124
97a566037a75 [project @ 1996-05-12 07:16:36 by jwe]
jwe
parents: 2086
diff changeset
559 if (sp_linetype)
1
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
560 {
2124
97a566037a75 [project @ 1996-05-12 07:16:36 by jwe]
jwe
parents: 2086
diff changeset
561 octave_value tmp = sp_linetype->eval (false);
191
b6b4d8c513fe [project @ 1993-10-29 23:41:39 by jwe]
jwe
parents: 143
diff changeset
562 if (! error_state && tmp.is_defined ())
1
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
563 {
629
0788882808bc [project @ 1994-08-19 14:33:40 by jwe]
jwe
parents: 610
diff changeset
564 double val = tmp.double_value ();
1086
75fc98220389 [project @ 1995-01-31 04:17:15 by jwe]
jwe
parents: 1009
diff changeset
565 if (xisnan (val))
75fc98220389 [project @ 1995-01-31 04:17:15 by jwe]
jwe
parents: 1009
diff changeset
566 {
75fc98220389 [project @ 1995-01-31 04:17:15 by jwe]
jwe
parents: 1009
diff changeset
567 ::error ("NaN is invalid a plotting line style");
75fc98220389 [project @ 1995-01-31 04:17:15 by jwe]
jwe
parents: 1009
diff changeset
568 return -1;
75fc98220389 [project @ 1995-01-31 04:17:15 by jwe]
jwe
parents: 1009
diff changeset
569 }
75fc98220389 [project @ 1995-01-31 04:17:15 by jwe]
jwe
parents: 1009
diff changeset
570 else
75fc98220389 [project @ 1995-01-31 04:17:15 by jwe]
jwe
parents: 1009
diff changeset
571 plot_buf << " " << NINT (val);
1
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
572 }
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
573 else
191
b6b4d8c513fe [project @ 1993-10-29 23:41:39 by jwe]
jwe
parents: 143
diff changeset
574 {
240
a99f28f5e351 [project @ 1993-11-30 20:24:36 by jwe]
jwe
parents: 191
diff changeset
575 ::error ("evaluating plot style command");
191
b6b4d8c513fe [project @ 1993-10-29 23:41:39 by jwe]
jwe
parents: 143
diff changeset
576 return -1;
b6b4d8c513fe [project @ 1993-10-29 23:41:39 by jwe]
jwe
parents: 143
diff changeset
577 }
1
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
578 }
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
579
2124
97a566037a75 [project @ 1996-05-12 07:16:36 by jwe]
jwe
parents: 2086
diff changeset
580 if (sp_pointtype)
1
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
581 {
2124
97a566037a75 [project @ 1996-05-12 07:16:36 by jwe]
jwe
parents: 2086
diff changeset
582 octave_value tmp = sp_pointtype->eval (false);
191
b6b4d8c513fe [project @ 1993-10-29 23:41:39 by jwe]
jwe
parents: 143
diff changeset
583 if (! error_state && tmp.is_defined ())
1
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
584 {
629
0788882808bc [project @ 1994-08-19 14:33:40 by jwe]
jwe
parents: 610
diff changeset
585 double val = tmp.double_value ();
1086
75fc98220389 [project @ 1995-01-31 04:17:15 by jwe]
jwe
parents: 1009
diff changeset
586 if (xisnan (val))
75fc98220389 [project @ 1995-01-31 04:17:15 by jwe]
jwe
parents: 1009
diff changeset
587 {
75fc98220389 [project @ 1995-01-31 04:17:15 by jwe]
jwe
parents: 1009
diff changeset
588 ::error ("NaN is invalid a plotting point style");
75fc98220389 [project @ 1995-01-31 04:17:15 by jwe]
jwe
parents: 1009
diff changeset
589 return -1;
75fc98220389 [project @ 1995-01-31 04:17:15 by jwe]
jwe
parents: 1009
diff changeset
590 }
75fc98220389 [project @ 1995-01-31 04:17:15 by jwe]
jwe
parents: 1009
diff changeset
591 else
75fc98220389 [project @ 1995-01-31 04:17:15 by jwe]
jwe
parents: 1009
diff changeset
592 plot_buf << " " << NINT (val);
1
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
593 }
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
594 else
191
b6b4d8c513fe [project @ 1993-10-29 23:41:39 by jwe]
jwe
parents: 143
diff changeset
595 {
240
a99f28f5e351 [project @ 1993-11-30 20:24:36 by jwe]
jwe
parents: 191
diff changeset
596 ::error ("evaluating plot style command");
191
b6b4d8c513fe [project @ 1993-10-29 23:41:39 by jwe]
jwe
parents: 143
diff changeset
597 return -1;
b6b4d8c513fe [project @ 1993-10-29 23:41:39 by jwe]
jwe
parents: 143
diff changeset
598 }
1
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
599 }
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
600 }
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
601 else
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
602 return -1;
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
603
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
604 return 0;
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
605 }
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
606
2543
050924aee81a [project @ 1996-11-20 03:03:01 by jwe]
jwe
parents: 2542
diff changeset
607 bool
050924aee81a [project @ 1996-11-20 03:03:01 by jwe]
jwe
parents: 2542
diff changeset
608 subplot_style::columns_ok (int nc)
872
fb24794ef0e2 [project @ 1994-11-04 00:59:24 by jwe]
jwe
parents: 871
diff changeset
609 {
2543
050924aee81a [project @ 1996-11-20 03:03:01 by jwe]
jwe
parents: 2542
diff changeset
610 bool retval = true;
050924aee81a [project @ 1996-11-20 03:03:01 by jwe]
jwe
parents: 2542
diff changeset
611
050924aee81a [project @ 1996-11-20 03:03:01 by jwe]
jwe
parents: 2542
diff changeset
612 if ((almost_match ("boxes", sp_style, 5, 0) && nc != 3)
050924aee81a [project @ 1996-11-20 03:03:01 by jwe]
jwe
parents: 2542
diff changeset
613 || (almost_match ("boxerrorbars", sp_style, 5, 0)
050924aee81a [project @ 1996-11-20 03:03:01 by jwe]
jwe
parents: 2542
diff changeset
614 && (! (nc == 3 || nc == 4 || nc == 5)))
050924aee81a [project @ 1996-11-20 03:03:01 by jwe]
jwe
parents: 2542
diff changeset
615 || ((almost_match ("boxxyerrorbars", sp_style, 4, 0)
050924aee81a [project @ 1996-11-20 03:03:01 by jwe]
jwe
parents: 2542
diff changeset
616 || almost_match ("xyerrorbars", sp_style, 2, 0))
050924aee81a [project @ 1996-11-20 03:03:01 by jwe]
jwe
parents: 2542
diff changeset
617 && (! (nc == 4 || nc == 6 || nc == 7)))
050924aee81a [project @ 1996-11-20 03:03:01 by jwe]
jwe
parents: 2542
diff changeset
618 || ((almost_match ("candlesticks", sp_style, 1, 0)
050924aee81a [project @ 1996-11-20 03:03:01 by jwe]
jwe
parents: 2542
diff changeset
619 || almost_match ("financebars", sp_style, 2, 0))
050924aee81a [project @ 1996-11-20 03:03:01 by jwe]
jwe
parents: 2542
diff changeset
620 && nc != 5)
050924aee81a [project @ 1996-11-20 03:03:01 by jwe]
jwe
parents: 2542
diff changeset
621 || ((almost_match ("errorbars", sp_style, 1, 0)
050924aee81a [project @ 1996-11-20 03:03:01 by jwe]
jwe
parents: 2542
diff changeset
622 || almost_match ("xerrorbars", sp_style, 1, 0)
050924aee81a [project @ 1996-11-20 03:03:01 by jwe]
jwe
parents: 2542
diff changeset
623 || almost_match ("yerrorbars", sp_style, 1, 0))
050924aee81a [project @ 1996-11-20 03:03:01 by jwe]
jwe
parents: 2542
diff changeset
624 && (! (nc == 3 || nc == 4))))
050924aee81a [project @ 1996-11-20 03:03:01 by jwe]
jwe
parents: 2542
diff changeset
625 {
050924aee81a [project @ 1996-11-20 03:03:01 by jwe]
jwe
parents: 2542
diff changeset
626 error
050924aee81a [project @ 1996-11-20 03:03:01 by jwe]
jwe
parents: 2542
diff changeset
627 ("invalid number of data columns = %d specified for plot style `%s'",
050924aee81a [project @ 1996-11-20 03:03:01 by jwe]
jwe
parents: 2542
diff changeset
628 nc, sp_style.c_str ());
050924aee81a [project @ 1996-11-20 03:03:01 by jwe]
jwe
parents: 2542
diff changeset
629
050924aee81a [project @ 1996-11-20 03:03:01 by jwe]
jwe
parents: 2542
diff changeset
630 retval = false;
050924aee81a [project @ 1996-11-20 03:03:01 by jwe]
jwe
parents: 2542
diff changeset
631 }
050924aee81a [project @ 1996-11-20 03:03:01 by jwe]
jwe
parents: 2542
diff changeset
632
050924aee81a [project @ 1996-11-20 03:03:01 by jwe]
jwe
parents: 2542
diff changeset
633 return retval;
872
fb24794ef0e2 [project @ 1994-11-04 00:59:24 by jwe]
jwe
parents: 871
diff changeset
634 }
fb24794ef0e2 [project @ 1994-11-04 00:59:24 by jwe]
jwe
parents: 871
diff changeset
635
591
7563a815389b [project @ 1994-08-09 01:18:36 by jwe]
jwe
parents: 584
diff changeset
636 void
2124
97a566037a75 [project @ 1996-05-12 07:16:36 by jwe]
jwe
parents: 2086
diff changeset
637 subplot_style::accept (tree_walker& tw)
591
7563a815389b [project @ 1994-08-09 01:18:36 by jwe]
jwe
parents: 584
diff changeset
638 {
2124
97a566037a75 [project @ 1996-05-12 07:16:36 by jwe]
jwe
parents: 2086
diff changeset
639 tw.visit_subplot_style (*this);
591
7563a815389b [project @ 1994-08-09 01:18:36 by jwe]
jwe
parents: 584
diff changeset
640 }
7563a815389b [project @ 1994-08-09 01:18:36 by jwe]
jwe
parents: 584
diff changeset
641
878
e8a677c3f042 [project @ 1994-11-05 03:23:14 by jwe]
jwe
parents: 872
diff changeset
642 subplot::~subplot (void)
e8a677c3f042 [project @ 1994-11-05 03:23:14 by jwe]
jwe
parents: 872
diff changeset
643 {
2124
97a566037a75 [project @ 1996-05-12 07:16:36 by jwe]
jwe
parents: 2086
diff changeset
644 delete sp_plot_data;
97a566037a75 [project @ 1996-05-12 07:16:36 by jwe]
jwe
parents: 2086
diff changeset
645 delete sp_using_clause;
97a566037a75 [project @ 1996-05-12 07:16:36 by jwe]
jwe
parents: 2086
diff changeset
646 delete sp_title_clause;
97a566037a75 [project @ 1996-05-12 07:16:36 by jwe]
jwe
parents: 2086
diff changeset
647 delete sp_style_clause;
878
e8a677c3f042 [project @ 1994-11-05 03:23:14 by jwe]
jwe
parents: 872
diff changeset
648 }
e8a677c3f042 [project @ 1994-11-05 03:23:14 by jwe]
jwe
parents: 872
diff changeset
649
2086
bfb775fb6fe8 [project @ 1996-04-25 05:55:19 by jwe]
jwe
parents: 1996
diff changeset
650 octave_value
bfb775fb6fe8 [project @ 1996-04-25 05:55:19 by jwe]
jwe
parents: 1996
diff changeset
651 subplot::extract_plot_data (int ndim, octave_value& data)
872
fb24794ef0e2 [project @ 1994-11-04 00:59:24 by jwe]
jwe
parents: 871
diff changeset
652 {
2086
bfb775fb6fe8 [project @ 1996-04-25 05:55:19 by jwe]
jwe
parents: 1996
diff changeset
653 octave_value retval;
872
fb24794ef0e2 [project @ 1994-11-04 00:59:24 by jwe]
jwe
parents: 871
diff changeset
654
2124
97a566037a75 [project @ 1996-05-12 07:16:36 by jwe]
jwe
parents: 2086
diff changeset
655 if (sp_using_clause)
872
fb24794ef0e2 [project @ 1994-11-04 00:59:24 by jwe]
jwe
parents: 871
diff changeset
656 {
2124
97a566037a75 [project @ 1996-05-12 07:16:36 by jwe]
jwe
parents: 2086
diff changeset
657 ColumnVector val = sp_using_clause->values (ndim);
872
fb24794ef0e2 [project @ 1994-11-04 00:59:24 by jwe]
jwe
parents: 871
diff changeset
658
2086
bfb775fb6fe8 [project @ 1996-04-25 05:55:19 by jwe]
jwe
parents: 1996
diff changeset
659 octave_value_list args;
872
fb24794ef0e2 [project @ 1994-11-04 00:59:24 by jwe]
jwe
parents: 871
diff changeset
660 args(1) = val;
2086
bfb775fb6fe8 [project @ 1996-04-25 05:55:19 by jwe]
jwe
parents: 1996
diff changeset
661 args(0) = octave_value::magic_colon_t;
872
fb24794ef0e2 [project @ 1994-11-04 00:59:24 by jwe]
jwe
parents: 871
diff changeset
662
2371
dd29ab8af9e7 [project @ 1996-10-12 00:09:55 by jwe]
jwe
parents: 2305
diff changeset
663 retval = data.index (args);
872
fb24794ef0e2 [project @ 1994-11-04 00:59:24 by jwe]
jwe
parents: 871
diff changeset
664
fb24794ef0e2 [project @ 1994-11-04 00:59:24 by jwe]
jwe
parents: 871
diff changeset
665 if (error_state)
2086
bfb775fb6fe8 [project @ 1996-04-25 05:55:19 by jwe]
jwe
parents: 1996
diff changeset
666 return octave_value ();
872
fb24794ef0e2 [project @ 1994-11-04 00:59:24 by jwe]
jwe
parents: 871
diff changeset
667 }
fb24794ef0e2 [project @ 1994-11-04 00:59:24 by jwe]
jwe
parents: 871
diff changeset
668 else
fb24794ef0e2 [project @ 1994-11-04 00:59:24 by jwe]
jwe
parents: 871
diff changeset
669 {
fb24794ef0e2 [project @ 1994-11-04 00:59:24 by jwe]
jwe
parents: 871
diff changeset
670 retval = data;
fb24794ef0e2 [project @ 1994-11-04 00:59:24 by jwe]
jwe
parents: 871
diff changeset
671 }
fb24794ef0e2 [project @ 1994-11-04 00:59:24 by jwe]
jwe
parents: 871
diff changeset
672
2543
050924aee81a [project @ 1996-11-20 03:03:01 by jwe]
jwe
parents: 2542
diff changeset
673 int nc = retval.columns ();
872
fb24794ef0e2 [project @ 1994-11-04 00:59:24 by jwe]
jwe
parents: 871
diff changeset
674
2543
050924aee81a [project @ 1996-11-20 03:03:01 by jwe]
jwe
parents: 2542
diff changeset
675 if (ndim == 2 && sp_style_clause && ! sp_style_clause->columns_ok (nc))
050924aee81a [project @ 1996-11-20 03:03:01 by jwe]
jwe
parents: 2542
diff changeset
676 return octave_value ();
872
fb24794ef0e2 [project @ 1994-11-04 00:59:24 by jwe]
jwe
parents: 871
diff changeset
677
fb24794ef0e2 [project @ 1994-11-04 00:59:24 by jwe]
jwe
parents: 871
diff changeset
678 return retval;
fb24794ef0e2 [project @ 1994-11-04 00:59:24 by jwe]
jwe
parents: 871
diff changeset
679 }
fb24794ef0e2 [project @ 1994-11-04 00:59:24 by jwe]
jwe
parents: 871
diff changeset
680
591
7563a815389b [project @ 1994-08-09 01:18:36 by jwe]
jwe
parents: 584
diff changeset
681 int
872
fb24794ef0e2 [project @ 1994-11-04 00:59:24 by jwe]
jwe
parents: 871
diff changeset
682 subplot::handle_plot_data (int ndim, ostrstream& plot_buf)
591
7563a815389b [project @ 1994-08-09 01:18:36 by jwe]
jwe
parents: 584
diff changeset
683 {
2124
97a566037a75 [project @ 1996-05-12 07:16:36 by jwe]
jwe
parents: 2086
diff changeset
684 if (sp_plot_data)
591
7563a815389b [project @ 1994-08-09 01:18:36 by jwe]
jwe
parents: 584
diff changeset
685 {
2124
97a566037a75 [project @ 1996-05-12 07:16:36 by jwe]
jwe
parents: 2086
diff changeset
686 octave_value data = sp_plot_data->eval (false);
872
fb24794ef0e2 [project @ 1994-11-04 00:59:24 by jwe]
jwe
parents: 871
diff changeset
687
591
7563a815389b [project @ 1994-08-09 01:18:36 by jwe]
jwe
parents: 584
diff changeset
688 if (! error_state && data.is_defined ())
7563a815389b [project @ 1994-08-09 01:18:36 by jwe]
jwe
parents: 584
diff changeset
689 {
1750
fd0d12493223 [project @ 1996-01-13 09:31:07 by jwe]
jwe
parents: 1742
diff changeset
690 string file;
fd0d12493223 [project @ 1996-01-13 09:31:07 by jwe]
jwe
parents: 1742
diff changeset
691
610
14b2a186a5c0 [project @ 1994-08-14 00:55:49 by jwe]
jwe
parents: 607
diff changeset
692 if (data.is_string ())
591
7563a815389b [project @ 1994-08-09 01:18:36 by jwe]
jwe
parents: 584
diff changeset
693 {
1358
dc9c01f66a19 [project @ 1995-09-05 21:10:01 by jwe]
jwe
parents: 1352
diff changeset
694 // Should really try to look at data file to determine
dc9c01f66a19 [project @ 1995-09-05 21:10:01 by jwe]
jwe
parents: 1352
diff changeset
695 // n_max. Can't do much about other arbitrary gnuplot
dc9c01f66a19 [project @ 1995-09-05 21:10:01 by jwe]
jwe
parents: 1352
diff changeset
696 // commands though...
872
fb24794ef0e2 [project @ 1994-11-04 00:59:24 by jwe]
jwe
parents: 871
diff changeset
697
fb24794ef0e2 [project @ 1994-11-04 00:59:24 by jwe]
jwe
parents: 871
diff changeset
698 int n_max = 0;
fb24794ef0e2 [project @ 1994-11-04 00:59:24 by jwe]
jwe
parents: 871
diff changeset
699
1750
fd0d12493223 [project @ 1996-01-13 09:31:07 by jwe]
jwe
parents: 1742
diff changeset
700 file = oct_tilde_expand (data.string_value ());
1728
42b4f904f1af [project @ 1996-01-09 11:36:01 by jwe]
jwe
parents: 1690
diff changeset
701
1750
fd0d12493223 [project @ 1996-01-13 09:31:07 by jwe]
jwe
parents: 1742
diff changeset
702 ifstream ftmp (file.c_str ());
fd0d12493223 [project @ 1996-01-13 09:31:07 by jwe]
jwe
parents: 1742
diff changeset
703
591
7563a815389b [project @ 1994-08-09 01:18:36 by jwe]
jwe
parents: 584
diff changeset
704 if (ftmp)
7563a815389b [project @ 1994-08-09 01:18:36 by jwe]
jwe
parents: 584
diff changeset
705 {
7563a815389b [project @ 1994-08-09 01:18:36 by jwe]
jwe
parents: 584
diff changeset
706 plot_buf << " \"" << file << '"';
7563a815389b [project @ 1994-08-09 01:18:36 by jwe]
jwe
parents: 584
diff changeset
707 }
7563a815389b [project @ 1994-08-09 01:18:36 by jwe]
jwe
parents: 584
diff changeset
708 else
7563a815389b [project @ 1994-08-09 01:18:36 by jwe]
jwe
parents: 584
diff changeset
709 {
1750
fd0d12493223 [project @ 1996-01-13 09:31:07 by jwe]
jwe
parents: 1742
diff changeset
710 file = "";
591
7563a815389b [project @ 1994-08-09 01:18:36 by jwe]
jwe
parents: 584
diff changeset
711
1358
dc9c01f66a19 [project @ 1995-09-05 21:10:01 by jwe]
jwe
parents: 1352
diff changeset
712 // Opening as a file failed. Let's try passing it
dc9c01f66a19 [project @ 1995-09-05 21:10:01 by jwe]
jwe
parents: 1352
diff changeset
713 // along as a plot command.
dc9c01f66a19 [project @ 1995-09-05 21:10:01 by jwe]
jwe
parents: 1352
diff changeset
714
591
7563a815389b [project @ 1994-08-09 01:18:36 by jwe]
jwe
parents: 584
diff changeset
715 plot_buf << " " << data.string_value ();
872
fb24794ef0e2 [project @ 1994-11-04 00:59:24 by jwe]
jwe
parents: 871
diff changeset
716 }
fb24794ef0e2 [project @ 1994-11-04 00:59:24 by jwe]
jwe
parents: 871
diff changeset
717
2124
97a566037a75 [project @ 1996-05-12 07:16:36 by jwe]
jwe
parents: 2086
diff changeset
718 if (sp_using_clause)
872
fb24794ef0e2 [project @ 1994-11-04 00:59:24 by jwe]
jwe
parents: 871
diff changeset
719 {
2124
97a566037a75 [project @ 1996-05-12 07:16:36 by jwe]
jwe
parents: 2086
diff changeset
720 int status = sp_using_clause->print (ndim, n_max, plot_buf);
1750
fd0d12493223 [project @ 1996-01-13 09:31:07 by jwe]
jwe
parents: 1742
diff changeset
721
872
fb24794ef0e2 [project @ 1994-11-04 00:59:24 by jwe]
jwe
parents: 871
diff changeset
722 if (status < 0)
fb24794ef0e2 [project @ 1994-11-04 00:59:24 by jwe]
jwe
parents: 871
diff changeset
723 return -1;
591
7563a815389b [project @ 1994-08-09 01:18:36 by jwe]
jwe
parents: 584
diff changeset
724 }
7563a815389b [project @ 1994-08-09 01:18:36 by jwe]
jwe
parents: 584
diff changeset
725 }
872
fb24794ef0e2 [project @ 1994-11-04 00:59:24 by jwe]
jwe
parents: 871
diff changeset
726 else
591
7563a815389b [project @ 1994-08-09 01:18:36 by jwe]
jwe
parents: 584
diff changeset
727 {
1358
dc9c01f66a19 [project @ 1995-09-05 21:10:01 by jwe]
jwe
parents: 1352
diff changeset
728 // Eliminate the need for printing a using clause to
dc9c01f66a19 [project @ 1995-09-05 21:10:01 by jwe]
jwe
parents: 1352
diff changeset
729 // plot_buf.
872
fb24794ef0e2 [project @ 1994-11-04 00:59:24 by jwe]
jwe
parents: 871
diff changeset
730
2086
bfb775fb6fe8 [project @ 1996-04-25 05:55:19 by jwe]
jwe
parents: 1996
diff changeset
731 octave_value tmp_data = extract_plot_data (ndim, data);
872
fb24794ef0e2 [project @ 1994-11-04 00:59:24 by jwe]
jwe
parents: 871
diff changeset
732
fb24794ef0e2 [project @ 1994-11-04 00:59:24 by jwe]
jwe
parents: 871
diff changeset
733 if (tmp_data.is_defined ())
fb24794ef0e2 [project @ 1994-11-04 00:59:24 by jwe]
jwe
parents: 871
diff changeset
734 {
fb24794ef0e2 [project @ 1994-11-04 00:59:24 by jwe]
jwe
parents: 871
diff changeset
735 switch (ndim)
fb24794ef0e2 [project @ 1994-11-04 00:59:24 by jwe]
jwe
parents: 871
diff changeset
736 {
fb24794ef0e2 [project @ 1994-11-04 00:59:24 by jwe]
jwe
parents: 871
diff changeset
737 case 2:
fb24794ef0e2 [project @ 1994-11-04 00:59:24 by jwe]
jwe
parents: 871
diff changeset
738 file = save_in_tmp_file (tmp_data, ndim);
fb24794ef0e2 [project @ 1994-11-04 00:59:24 by jwe]
jwe
parents: 871
diff changeset
739 break;
777
a2f9d3fd720c [project @ 1994-10-07 14:01:53 by jwe]
jwe
parents: 771
diff changeset
740
872
fb24794ef0e2 [project @ 1994-11-04 00:59:24 by jwe]
jwe
parents: 871
diff changeset
741 case 3:
fb24794ef0e2 [project @ 1994-11-04 00:59:24 by jwe]
jwe
parents: 871
diff changeset
742 file = save_in_tmp_file (tmp_data, ndim,
fb24794ef0e2 [project @ 1994-11-04 00:59:24 by jwe]
jwe
parents: 871
diff changeset
743 parametric_plot);
fb24794ef0e2 [project @ 1994-11-04 00:59:24 by jwe]
jwe
parents: 871
diff changeset
744 break;
777
a2f9d3fd720c [project @ 1994-10-07 14:01:53 by jwe]
jwe
parents: 771
diff changeset
745
872
fb24794ef0e2 [project @ 1994-11-04 00:59:24 by jwe]
jwe
parents: 871
diff changeset
746 default:
fb24794ef0e2 [project @ 1994-11-04 00:59:24 by jwe]
jwe
parents: 871
diff changeset
747 gripe_2_or_3_dim_plot ();
fb24794ef0e2 [project @ 1994-11-04 00:59:24 by jwe]
jwe
parents: 871
diff changeset
748 break;
fb24794ef0e2 [project @ 1994-11-04 00:59:24 by jwe]
jwe
parents: 871
diff changeset
749 }
591
7563a815389b [project @ 1994-08-09 01:18:36 by jwe]
jwe
parents: 584
diff changeset
750
1750
fd0d12493223 [project @ 1996-01-13 09:31:07 by jwe]
jwe
parents: 1742
diff changeset
751 if (file.length () > 0)
872
fb24794ef0e2 [project @ 1994-11-04 00:59:24 by jwe]
jwe
parents: 871
diff changeset
752 {
fb24794ef0e2 [project @ 1994-11-04 00:59:24 by jwe]
jwe
parents: 871
diff changeset
753 mark_for_deletion (file);
fb24794ef0e2 [project @ 1994-11-04 00:59:24 by jwe]
jwe
parents: 871
diff changeset
754 plot_buf << " \"" << file << '"';
fb24794ef0e2 [project @ 1994-11-04 00:59:24 by jwe]
jwe
parents: 871
diff changeset
755 }
fb24794ef0e2 [project @ 1994-11-04 00:59:24 by jwe]
jwe
parents: 871
diff changeset
756 }
591
7563a815389b [project @ 1994-08-09 01:18:36 by jwe]
jwe
parents: 584
diff changeset
757 }
7563a815389b [project @ 1994-08-09 01:18:36 by jwe]
jwe
parents: 584
diff changeset
758 }
7563a815389b [project @ 1994-08-09 01:18:36 by jwe]
jwe
parents: 584
diff changeset
759 else
7563a815389b [project @ 1994-08-09 01:18:36 by jwe]
jwe
parents: 584
diff changeset
760 return -1;
7563a815389b [project @ 1994-08-09 01:18:36 by jwe]
jwe
parents: 584
diff changeset
761 }
7563a815389b [project @ 1994-08-09 01:18:36 by jwe]
jwe
parents: 584
diff changeset
762 else
7563a815389b [project @ 1994-08-09 01:18:36 by jwe]
jwe
parents: 584
diff changeset
763 return -1;
7563a815389b [project @ 1994-08-09 01:18:36 by jwe]
jwe
parents: 584
diff changeset
764
872
fb24794ef0e2 [project @ 1994-11-04 00:59:24 by jwe]
jwe
parents: 871
diff changeset
765 return 0;
fb24794ef0e2 [project @ 1994-11-04 00:59:24 by jwe]
jwe
parents: 871
diff changeset
766 }
591
7563a815389b [project @ 1994-08-09 01:18:36 by jwe]
jwe
parents: 584
diff changeset
767
872
fb24794ef0e2 [project @ 1994-11-04 00:59:24 by jwe]
jwe
parents: 871
diff changeset
768 int
fb24794ef0e2 [project @ 1994-11-04 00:59:24 by jwe]
jwe
parents: 871
diff changeset
769 subplot::print (int ndim, ostrstream& plot_buf)
fb24794ef0e2 [project @ 1994-11-04 00:59:24 by jwe]
jwe
parents: 871
diff changeset
770 {
fb24794ef0e2 [project @ 1994-11-04 00:59:24 by jwe]
jwe
parents: 871
diff changeset
771 int status = handle_plot_data (ndim, plot_buf);
fb24794ef0e2 [project @ 1994-11-04 00:59:24 by jwe]
jwe
parents: 871
diff changeset
772
fb24794ef0e2 [project @ 1994-11-04 00:59:24 by jwe]
jwe
parents: 871
diff changeset
773 if (status < 0)
fb24794ef0e2 [project @ 1994-11-04 00:59:24 by jwe]
jwe
parents: 871
diff changeset
774 return -1;
591
7563a815389b [project @ 1994-08-09 01:18:36 by jwe]
jwe
parents: 584
diff changeset
775
2124
97a566037a75 [project @ 1996-05-12 07:16:36 by jwe]
jwe
parents: 2086
diff changeset
776 if (sp_title_clause)
591
7563a815389b [project @ 1994-08-09 01:18:36 by jwe]
jwe
parents: 584
diff changeset
777 {
2124
97a566037a75 [project @ 1996-05-12 07:16:36 by jwe]
jwe
parents: 2086
diff changeset
778 octave_value tmp = sp_title_clause->eval (false);
610
14b2a186a5c0 [project @ 1994-08-14 00:55:49 by jwe]
jwe
parents: 607
diff changeset
779 if (! error_state && tmp.is_string ())
2523
007e977442b8 [project @ 1996-11-16 00:33:22 by jwe]
jwe
parents: 2521
diff changeset
780 plot_buf << " " << GPLOT_CMD_TITLE << " "
866
f02ec9f8de65 [project @ 1994-11-02 05:19:02 by jwe]
jwe
parents: 777
diff changeset
781 << '"' << tmp.string_value () << '"';
591
7563a815389b [project @ 1994-08-09 01:18:36 by jwe]
jwe
parents: 584
diff changeset
782 else
7563a815389b [project @ 1994-08-09 01:18:36 by jwe]
jwe
parents: 584
diff changeset
783 {
7563a815389b [project @ 1994-08-09 01:18:36 by jwe]
jwe
parents: 584
diff changeset
784 warning ("line title must be a string");
2523
007e977442b8 [project @ 1996-11-16 00:33:22 by jwe]
jwe
parents: 2521
diff changeset
785 plot_buf << " " << GPLOT_CMD_TITLE << " "
866
f02ec9f8de65 [project @ 1994-11-02 05:19:02 by jwe]
jwe
parents: 777
diff changeset
786 << '"' << "line " << plot_line_count << '"';
591
7563a815389b [project @ 1994-08-09 01:18:36 by jwe]
jwe
parents: 584
diff changeset
787 }
7563a815389b [project @ 1994-08-09 01:18:36 by jwe]
jwe
parents: 584
diff changeset
788 }
7563a815389b [project @ 1994-08-09 01:18:36 by jwe]
jwe
parents: 584
diff changeset
789 else
2523
007e977442b8 [project @ 1996-11-16 00:33:22 by jwe]
jwe
parents: 2521
diff changeset
790 plot_buf << " " << GPLOT_CMD_TITLE << " "
866
f02ec9f8de65 [project @ 1994-11-02 05:19:02 by jwe]
jwe
parents: 777
diff changeset
791 << '"' << "line " << plot_line_count << '"';
591
7563a815389b [project @ 1994-08-09 01:18:36 by jwe]
jwe
parents: 584
diff changeset
792
2124
97a566037a75 [project @ 1996-05-12 07:16:36 by jwe]
jwe
parents: 2086
diff changeset
793 if (sp_style_clause)
591
7563a815389b [project @ 1994-08-09 01:18:36 by jwe]
jwe
parents: 584
diff changeset
794 {
2124
97a566037a75 [project @ 1996-05-12 07:16:36 by jwe]
jwe
parents: 2086
diff changeset
795 int status = sp_style_clause->print (plot_buf);
591
7563a815389b [project @ 1994-08-09 01:18:36 by jwe]
jwe
parents: 584
diff changeset
796 if (status < 0)
7563a815389b [project @ 1994-08-09 01:18:36 by jwe]
jwe
parents: 584
diff changeset
797 return -1;
7563a815389b [project @ 1994-08-09 01:18:36 by jwe]
jwe
parents: 584
diff changeset
798 }
7563a815389b [project @ 1994-08-09 01:18:36 by jwe]
jwe
parents: 584
diff changeset
799
7563a815389b [project @ 1994-08-09 01:18:36 by jwe]
jwe
parents: 584
diff changeset
800 return 0;
7563a815389b [project @ 1994-08-09 01:18:36 by jwe]
jwe
parents: 584
diff changeset
801 }
7563a815389b [project @ 1994-08-09 01:18:36 by jwe]
jwe
parents: 584
diff changeset
802
7563a815389b [project @ 1994-08-09 01:18:36 by jwe]
jwe
parents: 584
diff changeset
803 void
2124
97a566037a75 [project @ 1996-05-12 07:16:36 by jwe]
jwe
parents: 2086
diff changeset
804 subplot::accept (tree_walker& tw)
591
7563a815389b [project @ 1994-08-09 01:18:36 by jwe]
jwe
parents: 584
diff changeset
805 {
2124
97a566037a75 [project @ 1996-05-12 07:16:36 by jwe]
jwe
parents: 2086
diff changeset
806 tw.visit_subplot (*this);
591
7563a815389b [project @ 1994-08-09 01:18:36 by jwe]
jwe
parents: 584
diff changeset
807 }
7563a815389b [project @ 1994-08-09 01:18:36 by jwe]
jwe
parents: 584
diff changeset
808
1622
2aed00132ba2 [project @ 1995-11-06 17:36:48 by jwe]
jwe
parents: 1488
diff changeset
809 subplot_list::~subplot_list (void)
2aed00132ba2 [project @ 1995-11-06 17:36:48 by jwe]
jwe
parents: 1488
diff changeset
810 {
2aed00132ba2 [project @ 1995-11-06 17:36:48 by jwe]
jwe
parents: 1488
diff changeset
811 while (! empty ())
2aed00132ba2 [project @ 1995-11-06 17:36:48 by jwe]
jwe
parents: 1488
diff changeset
812 {
2aed00132ba2 [project @ 1995-11-06 17:36:48 by jwe]
jwe
parents: 1488
diff changeset
813 subplot *t = remove_front ();
2aed00132ba2 [project @ 1995-11-06 17:36:48 by jwe]
jwe
parents: 1488
diff changeset
814 delete t;
2aed00132ba2 [project @ 1995-11-06 17:36:48 by jwe]
jwe
parents: 1488
diff changeset
815 }
2aed00132ba2 [project @ 1995-11-06 17:36:48 by jwe]
jwe
parents: 1488
diff changeset
816 }
2aed00132ba2 [project @ 1995-11-06 17:36:48 by jwe]
jwe
parents: 1488
diff changeset
817
883
ff0bbf26b028 [project @ 1994-11-06 00:22:31 by jwe]
jwe
parents: 878
diff changeset
818 int
591
7563a815389b [project @ 1994-08-09 01:18:36 by jwe]
jwe
parents: 584
diff changeset
819 subplot_list::print (int ndim, ostrstream& plot_buf)
7563a815389b [project @ 1994-08-09 01:18:36 by jwe]
jwe
parents: 584
diff changeset
820 {
7563a815389b [project @ 1994-08-09 01:18:36 by jwe]
jwe
parents: 584
diff changeset
821 int status = 0;
7563a815389b [project @ 1994-08-09 01:18:36 by jwe]
jwe
parents: 584
diff changeset
822
7563a815389b [project @ 1994-08-09 01:18:36 by jwe]
jwe
parents: 584
diff changeset
823 for (Pix p = first (); p != 0; next (p))
7563a815389b [project @ 1994-08-09 01:18:36 by jwe]
jwe
parents: 584
diff changeset
824 {
7563a815389b [project @ 1994-08-09 01:18:36 by jwe]
jwe
parents: 584
diff changeset
825 subplot *elt = this->operator () (p);
7563a815389b [project @ 1994-08-09 01:18:36 by jwe]
jwe
parents: 584
diff changeset
826
7563a815389b [project @ 1994-08-09 01:18:36 by jwe]
jwe
parents: 584
diff changeset
827 plot_line_count++;
7563a815389b [project @ 1994-08-09 01:18:36 by jwe]
jwe
parents: 584
diff changeset
828
7563a815389b [project @ 1994-08-09 01:18:36 by jwe]
jwe
parents: 584
diff changeset
829 if (p != first ())
7563a815389b [project @ 1994-08-09 01:18:36 by jwe]
jwe
parents: 584
diff changeset
830 plot_buf << ",\\\n ";
7563a815389b [project @ 1994-08-09 01:18:36 by jwe]
jwe
parents: 584
diff changeset
831
7563a815389b [project @ 1994-08-09 01:18:36 by jwe]
jwe
parents: 584
diff changeset
832 status = elt->print (ndim, plot_buf);
7563a815389b [project @ 1994-08-09 01:18:36 by jwe]
jwe
parents: 584
diff changeset
833
7563a815389b [project @ 1994-08-09 01:18:36 by jwe]
jwe
parents: 584
diff changeset
834 if (status < 0)
7563a815389b [project @ 1994-08-09 01:18:36 by jwe]
jwe
parents: 584
diff changeset
835 break;
7563a815389b [project @ 1994-08-09 01:18:36 by jwe]
jwe
parents: 584
diff changeset
836 }
7563a815389b [project @ 1994-08-09 01:18:36 by jwe]
jwe
parents: 584
diff changeset
837
7563a815389b [project @ 1994-08-09 01:18:36 by jwe]
jwe
parents: 584
diff changeset
838 return status;
7563a815389b [project @ 1994-08-09 01:18:36 by jwe]
jwe
parents: 584
diff changeset
839 }
7563a815389b [project @ 1994-08-09 01:18:36 by jwe]
jwe
parents: 584
diff changeset
840
7563a815389b [project @ 1994-08-09 01:18:36 by jwe]
jwe
parents: 584
diff changeset
841 void
2124
97a566037a75 [project @ 1996-05-12 07:16:36 by jwe]
jwe
parents: 2086
diff changeset
842 subplot_list::accept (tree_walker& tw)
591
7563a815389b [project @ 1994-08-09 01:18:36 by jwe]
jwe
parents: 584
diff changeset
843 {
2124
97a566037a75 [project @ 1996-05-12 07:16:36 by jwe]
jwe
parents: 2086
diff changeset
844 tw.visit_subplot_list (*this);
591
7563a815389b [project @ 1994-08-09 01:18:36 by jwe]
jwe
parents: 584
diff changeset
845 }
7563a815389b [project @ 1994-08-09 01:18:36 by jwe]
jwe
parents: 584
diff changeset
846
1755
3a9462b655f1 [project @ 1996-01-22 04:47:22 by jwe]
jwe
parents: 1750
diff changeset
847 string
2086
bfb775fb6fe8 [project @ 1996-04-25 05:55:19 by jwe]
jwe
parents: 1996
diff changeset
848 save_in_tmp_file (octave_value& t, int ndim, bool parametric)
524
2814c75c8398 [project @ 1994-07-20 18:36:24 by jwe]
jwe
parents: 491
diff changeset
849 {
1802
8173b1fa052d [project @ 1996-01-29 06:10:18 by jwe]
jwe
parents: 1755
diff changeset
850 string name = oct_tempnam ();
1755
3a9462b655f1 [project @ 1996-01-22 04:47:22 by jwe]
jwe
parents: 1750
diff changeset
851
3a9462b655f1 [project @ 1996-01-22 04:47:22 by jwe]
jwe
parents: 1750
diff changeset
852 if (! name.empty ())
524
2814c75c8398 [project @ 1994-07-20 18:36:24 by jwe]
jwe
parents: 491
diff changeset
853 {
1755
3a9462b655f1 [project @ 1996-01-22 04:47:22 by jwe]
jwe
parents: 1750
diff changeset
854 ofstream file (name.c_str ());
3a9462b655f1 [project @ 1996-01-22 04:47:22 by jwe]
jwe
parents: 1750
diff changeset
855
524
2814c75c8398 [project @ 1994-07-20 18:36:24 by jwe]
jwe
parents: 491
diff changeset
856 if (file)
2814c75c8398 [project @ 1994-07-20 18:36:24 by jwe]
jwe
parents: 491
diff changeset
857 {
2814c75c8398 [project @ 1994-07-20 18:36:24 by jwe]
jwe
parents: 491
diff changeset
858 switch (ndim)
2814c75c8398 [project @ 1994-07-20 18:36:24 by jwe]
jwe
parents: 491
diff changeset
859 {
2814c75c8398 [project @ 1994-07-20 18:36:24 by jwe]
jwe
parents: 491
diff changeset
860 case 2:
1755
3a9462b655f1 [project @ 1996-01-22 04:47:22 by jwe]
jwe
parents: 1750
diff changeset
861 save_ascii_data (file, t, name, 1);
524
2814c75c8398 [project @ 1994-07-20 18:36:24 by jwe]
jwe
parents: 491
diff changeset
862 break;
777
a2f9d3fd720c [project @ 1994-10-07 14:01:53 by jwe]
jwe
parents: 771
diff changeset
863
524
2814c75c8398 [project @ 1994-07-20 18:36:24 by jwe]
jwe
parents: 491
diff changeset
864 case 3:
607
ae3b8b2924a0 [project @ 1994-08-13 20:11:17 by jwe]
jwe
parents: 597
diff changeset
865 save_three_d (file, t, parametric);
524
2814c75c8398 [project @ 1994-07-20 18:36:24 by jwe]
jwe
parents: 491
diff changeset
866 break;
777
a2f9d3fd720c [project @ 1994-10-07 14:01:53 by jwe]
jwe
parents: 771
diff changeset
867
524
2814c75c8398 [project @ 1994-07-20 18:36:24 by jwe]
jwe
parents: 491
diff changeset
868 default:
771
e16a175a8bb5 [project @ 1994-10-05 21:59:29 by jwe]
jwe
parents: 735
diff changeset
869 gripe_2_or_3_dim_plot ();
524
2814c75c8398 [project @ 1994-07-20 18:36:24 by jwe]
jwe
parents: 491
diff changeset
870 break;
2814c75c8398 [project @ 1994-07-20 18:36:24 by jwe]
jwe
parents: 491
diff changeset
871 }
2814c75c8398 [project @ 1994-07-20 18:36:24 by jwe]
jwe
parents: 491
diff changeset
872 }
2814c75c8398 [project @ 1994-07-20 18:36:24 by jwe]
jwe
parents: 491
diff changeset
873 else
2814c75c8398 [project @ 1994-07-20 18:36:24 by jwe]
jwe
parents: 491
diff changeset
874 {
1755
3a9462b655f1 [project @ 1996-01-22 04:47:22 by jwe]
jwe
parents: 1750
diff changeset
875 error ("couldn't open temporary output file `%s'", name.c_str ());
3a9462b655f1 [project @ 1996-01-22 04:47:22 by jwe]
jwe
parents: 1750
diff changeset
876 name.resize (0);
524
2814c75c8398 [project @ 1994-07-20 18:36:24 by jwe]
jwe
parents: 491
diff changeset
877 }
2814c75c8398 [project @ 1994-07-20 18:36:24 by jwe]
jwe
parents: 491
diff changeset
878 }
1755
3a9462b655f1 [project @ 1996-01-22 04:47:22 by jwe]
jwe
parents: 1750
diff changeset
879
524
2814c75c8398 [project @ 1994-07-20 18:36:24 by jwe]
jwe
parents: 491
diff changeset
880 return name;
2814c75c8398 [project @ 1994-07-20 18:36:24 by jwe]
jwe
parents: 491
diff changeset
881 }
2814c75c8398 [project @ 1994-07-20 18:36:24 by jwe]
jwe
parents: 491
diff changeset
882
2814c75c8398 [project @ 1994-07-20 18:36:24 by jwe]
jwe
parents: 491
diff changeset
883 void
1750
fd0d12493223 [project @ 1996-01-13 09:31:07 by jwe]
jwe
parents: 1742
diff changeset
884 mark_for_deletion (const string& file)
524
2814c75c8398 [project @ 1994-07-20 18:36:24 by jwe]
jwe
parents: 491
diff changeset
885 {
1750
fd0d12493223 [project @ 1996-01-13 09:31:07 by jwe]
jwe
parents: 1742
diff changeset
886 tmp_files.push (file);
524
2814c75c8398 [project @ 1994-07-20 18:36:24 by jwe]
jwe
parents: 491
diff changeset
887 }
2814c75c8398 [project @ 1994-07-20 18:36:24 by jwe]
jwe
parents: 491
diff changeset
888
2814c75c8398 [project @ 1994-07-20 18:36:24 by jwe]
jwe
parents: 491
diff changeset
889 void
2814c75c8398 [project @ 1994-07-20 18:36:24 by jwe]
jwe
parents: 491
diff changeset
890 cleanup_tmp_files (void)
2814c75c8398 [project @ 1994-07-20 18:36:24 by jwe]
jwe
parents: 491
diff changeset
891 {
2814c75c8398 [project @ 1994-07-20 18:36:24 by jwe]
jwe
parents: 491
diff changeset
892 while (! tmp_files.empty ())
2814c75c8398 [project @ 1994-07-20 18:36:24 by jwe]
jwe
parents: 491
diff changeset
893 {
1750
fd0d12493223 [project @ 1996-01-13 09:31:07 by jwe]
jwe
parents: 1742
diff changeset
894 string filename = tmp_files.pop ();
fd0d12493223 [project @ 1996-01-13 09:31:07 by jwe]
jwe
parents: 1742
diff changeset
895 unlink (filename.c_str ());
524
2814c75c8398 [project @ 1994-07-20 18:36:24 by jwe]
jwe
parents: 491
diff changeset
896 }
2814c75c8398 [project @ 1994-07-20 18:36:24 by jwe]
jwe
parents: 491
diff changeset
897 }
2814c75c8398 [project @ 1994-07-20 18:36:24 by jwe]
jwe
parents: 491
diff changeset
898
2814c75c8398 [project @ 1994-07-20 18:36:24 by jwe]
jwe
parents: 491
diff changeset
899 void
2814c75c8398 [project @ 1994-07-20 18:36:24 by jwe]
jwe
parents: 491
diff changeset
900 close_plot_stream (void)
2814c75c8398 [project @ 1994-07-20 18:36:24 by jwe]
jwe
parents: 491
diff changeset
901 {
2211
71aef7b5339e [project @ 1996-05-15 13:00:17 by jwe]
jwe
parents: 2209
diff changeset
902 octave_child_list::remove (plot_stream_pid);
71aef7b5339e [project @ 1996-05-15 13:00:17 by jwe]
jwe
parents: 2209
diff changeset
903
1449
df589c97e140 [project @ 1995-09-20 03:49:51 by jwe]
jwe
parents: 1358
diff changeset
904 if (plot_stream)
df589c97e140 [project @ 1995-09-20 03:49:51 by jwe]
jwe
parents: 1358
diff changeset
905 {
df589c97e140 [project @ 1995-09-20 03:49:51 by jwe]
jwe
parents: 1358
diff changeset
906 delete plot_stream;
df589c97e140 [project @ 1995-09-20 03:49:51 by jwe]
jwe
parents: 1358
diff changeset
907 plot_stream = 0;
df589c97e140 [project @ 1995-09-20 03:49:51 by jwe]
jwe
parents: 1358
diff changeset
908 }
524
2814c75c8398 [project @ 1994-07-20 18:36:24 by jwe]
jwe
parents: 491
diff changeset
909
2814c75c8398 [project @ 1994-07-20 18:36:24 by jwe]
jwe
parents: 491
diff changeset
910 plot_line_count = 0;
2814c75c8398 [project @ 1994-07-20 18:36:24 by jwe]
jwe
parents: 491
diff changeset
911 }
2814c75c8398 [project @ 1994-07-20 18:36:24 by jwe]
jwe
parents: 491
diff changeset
912
1328
ec2ab864e8eb [project @ 1995-08-22 22:32:34 by jwe]
jwe
parents: 1315
diff changeset
913 void
1755
3a9462b655f1 [project @ 1996-01-22 04:47:22 by jwe]
jwe
parents: 1750
diff changeset
914 do_external_plotter_cd (const string& newdir)
1328
ec2ab864e8eb [project @ 1995-08-22 22:32:34 by jwe]
jwe
parents: 1315
diff changeset
915 {
1449
df589c97e140 [project @ 1995-09-20 03:49:51 by jwe]
jwe
parents: 1358
diff changeset
916 if (plot_stream && *plot_stream)
1328
ec2ab864e8eb [project @ 1995-08-22 22:32:34 by jwe]
jwe
parents: 1315
diff changeset
917 {
ec2ab864e8eb [project @ 1995-08-22 22:32:34 by jwe]
jwe
parents: 1315
diff changeset
918 ostrstream plot_buf;
2523
007e977442b8 [project @ 1996-11-16 00:33:22 by jwe]
jwe
parents: 2521
diff changeset
919 plot_buf << "cd \"" << newdir << "\"" GPLOT_CMD_END << ends;
1328
ec2ab864e8eb [project @ 1995-08-22 22:32:34 by jwe]
jwe
parents: 1315
diff changeset
920 char *message = plot_buf.str ();
ec2ab864e8eb [project @ 1995-08-22 22:32:34 by jwe]
jwe
parents: 1315
diff changeset
921 send_to_plot_stream (message);
ec2ab864e8eb [project @ 1995-08-22 22:32:34 by jwe]
jwe
parents: 1315
diff changeset
922 delete [] message;
ec2ab864e8eb [project @ 1995-08-22 22:32:34 by jwe]
jwe
parents: 1315
diff changeset
923 }
ec2ab864e8eb [project @ 1995-08-22 22:32:34 by jwe]
jwe
parents: 1315
diff changeset
924 }
ec2ab864e8eb [project @ 1995-08-22 22:32:34 by jwe]
jwe
parents: 1315
diff changeset
925
1957
0e6a0a271998 [project @ 1996-02-15 01:08:15 by jwe]
jwe
parents: 1827
diff changeset
926 DEFUN (clearplot, , ,
883
ff0bbf26b028 [project @ 1994-11-06 00:22:31 by jwe]
jwe
parents: 878
diff changeset
927 "clearplot (): clear the plot window")
ff0bbf26b028 [project @ 1994-11-06 00:22:31 by jwe]
jwe
parents: 878
diff changeset
928 {
2086
bfb775fb6fe8 [project @ 1996-04-25 05:55:19 by jwe]
jwe
parents: 1996
diff changeset
929 octave_value_list retval;
883
ff0bbf26b028 [project @ 1994-11-06 00:22:31 by jwe]
jwe
parents: 878
diff changeset
930 send_to_plot_stream ("clear\n");
930
b02124748d40 [project @ 1994-11-16 01:40:19 by jwe]
jwe
parents: 929
diff changeset
931
1358
dc9c01f66a19 [project @ 1995-09-05 21:10:01 by jwe]
jwe
parents: 1352
diff changeset
932 // XXX FIXME XXX -- instead of just clearing these things, it would
dc9c01f66a19 [project @ 1995-09-05 21:10:01 by jwe]
jwe
parents: 1352
diff changeset
933 // be nice if we could reset things to a user-specified default
dc9c01f66a19 [project @ 1995-09-05 21:10:01 by jwe]
jwe
parents: 1352
diff changeset
934 // state.
930
b02124748d40 [project @ 1994-11-16 01:40:19 by jwe]
jwe
parents: 929
diff changeset
935
b02124748d40 [project @ 1994-11-16 01:40:19 by jwe]
jwe
parents: 929
diff changeset
936 send_to_plot_stream ("set title\n");
b02124748d40 [project @ 1994-11-16 01:40:19 by jwe]
jwe
parents: 929
diff changeset
937 send_to_plot_stream ("set xlabel\n");
b02124748d40 [project @ 1994-11-16 01:40:19 by jwe]
jwe
parents: 929
diff changeset
938 send_to_plot_stream ("set ylabel\n");
940
16062e9a6b7e [project @ 1994-11-21 15:41:05 by jwe]
jwe
parents: 930
diff changeset
939 send_to_plot_stream ("set nogrid\n");
1000
de0df9547e08 [project @ 1994-12-21 15:56:47 by jwe]
jwe
parents: 999
diff changeset
940 send_to_plot_stream ("set nolabel\n");
940
16062e9a6b7e [project @ 1994-11-21 15:41:05 by jwe]
jwe
parents: 930
diff changeset
941
1358
dc9c01f66a19 [project @ 1995-09-05 21:10:01 by jwe]
jwe
parents: 1352
diff changeset
942 // This makes a simple `replot' not work after a `clearplot' command
dc9c01f66a19 [project @ 1995-09-05 21:10:01 by jwe]
jwe
parents: 1352
diff changeset
943 // has been issued.
940
16062e9a6b7e [project @ 1994-11-21 15:41:05 by jwe]
jwe
parents: 930
diff changeset
944
16062e9a6b7e [project @ 1994-11-21 15:41:05 by jwe]
jwe
parents: 930
diff changeset
945 plot_line_count = 0;
930
b02124748d40 [project @ 1994-11-16 01:40:19 by jwe]
jwe
parents: 929
diff changeset
946
883
ff0bbf26b028 [project @ 1994-11-06 00:22:31 by jwe]
jwe
parents: 878
diff changeset
947 return retval;
ff0bbf26b028 [project @ 1994-11-06 00:22:31 by jwe]
jwe
parents: 878
diff changeset
948 }
ff0bbf26b028 [project @ 1994-11-06 00:22:31 by jwe]
jwe
parents: 878
diff changeset
949
884
d92f1ea6d0cd [project @ 1994-11-06 00:42:40 by jwe]
jwe
parents: 883
diff changeset
950 DEFALIAS (clg, clearplot);
d92f1ea6d0cd [project @ 1994-11-06 00:42:40 by jwe]
jwe
parents: 883
diff changeset
951
1957
0e6a0a271998 [project @ 1996-02-15 01:08:15 by jwe]
jwe
parents: 1827
diff changeset
952 DEFUN (closeplot, , ,
524
2814c75c8398 [project @ 1994-07-20 18:36:24 by jwe]
jwe
parents: 491
diff changeset
953 "closeplot (): close the stream to plotter")
2814c75c8398 [project @ 1994-07-20 18:36:24 by jwe]
jwe
parents: 491
diff changeset
954 {
2086
bfb775fb6fe8 [project @ 1996-04-25 05:55:19 by jwe]
jwe
parents: 1996
diff changeset
955 octave_value_list retval;
524
2814c75c8398 [project @ 1994-07-20 18:36:24 by jwe]
jwe
parents: 491
diff changeset
956 close_plot_stream ();
2814c75c8398 [project @ 1994-07-20 18:36:24 by jwe]
jwe
parents: 491
diff changeset
957 return retval;
2814c75c8398 [project @ 1994-07-20 18:36:24 by jwe]
jwe
parents: 491
diff changeset
958 }
2814c75c8398 [project @ 1994-07-20 18:36:24 by jwe]
jwe
parents: 491
diff changeset
959
1957
0e6a0a271998 [project @ 1996-02-15 01:08:15 by jwe]
jwe
parents: 1827
diff changeset
960 DEFUN_TEXT (hold, args, ,
524
2814c75c8398 [project @ 1994-07-20 18:36:24 by jwe]
jwe
parents: 491
diff changeset
961 "hold [on|off]\n\
2814c75c8398 [project @ 1994-07-20 18:36:24 by jwe]
jwe
parents: 491
diff changeset
962 \n\
2814c75c8398 [project @ 1994-07-20 18:36:24 by jwe]
jwe
parents: 491
diff changeset
963 determine whether the plot window is cleared before the next line is\n\
2814c75c8398 [project @ 1994-07-20 18:36:24 by jwe]
jwe
parents: 491
diff changeset
964 drawn. With no argument, toggle the current state.")
2814c75c8398 [project @ 1994-07-20 18:36:24 by jwe]
jwe
parents: 491
diff changeset
965 {
2086
bfb775fb6fe8 [project @ 1996-04-25 05:55:19 by jwe]
jwe
parents: 1996
diff changeset
966 octave_value_list retval;
524
2814c75c8398 [project @ 1994-07-20 18:36:24 by jwe]
jwe
parents: 491
diff changeset
967
1755
3a9462b655f1 [project @ 1996-01-22 04:47:22 by jwe]
jwe
parents: 1750
diff changeset
968 int argc = args.length () + 1;
3a9462b655f1 [project @ 1996-01-22 04:47:22 by jwe]
jwe
parents: 1750
diff changeset
969
1968
a2e206524aa0 [project @ 1996-02-17 02:54:24 by jwe]
jwe
parents: 1957
diff changeset
970 string_vector argv = args.make_argv ("hold");
1755
3a9462b655f1 [project @ 1996-01-22 04:47:22 by jwe]
jwe
parents: 1750
diff changeset
971
3a9462b655f1 [project @ 1996-01-22 04:47:22 by jwe]
jwe
parents: 1750
diff changeset
972 if (error_state)
3a9462b655f1 [project @ 1996-01-22 04:47:22 by jwe]
jwe
parents: 1750
diff changeset
973 return retval;
524
2814c75c8398 [project @ 1994-07-20 18:36:24 by jwe]
jwe
parents: 491
diff changeset
974
2814c75c8398 [project @ 1994-07-20 18:36:24 by jwe]
jwe
parents: 491
diff changeset
975 switch (argc)
2814c75c8398 [project @ 1994-07-20 18:36:24 by jwe]
jwe
parents: 491
diff changeset
976 {
2814c75c8398 [project @ 1994-07-20 18:36:24 by jwe]
jwe
parents: 491
diff changeset
977 case 1:
2814c75c8398 [project @ 1994-07-20 18:36:24 by jwe]
jwe
parents: 491
diff changeset
978 clear_before_plotting = ! clear_before_plotting;
2814c75c8398 [project @ 1994-07-20 18:36:24 by jwe]
jwe
parents: 491
diff changeset
979 break;
777
a2f9d3fd720c [project @ 1994-10-07 14:01:53 by jwe]
jwe
parents: 771
diff changeset
980
524
2814c75c8398 [project @ 1994-07-20 18:36:24 by jwe]
jwe
parents: 491
diff changeset
981 case 2:
1755
3a9462b655f1 [project @ 1996-01-22 04:47:22 by jwe]
jwe
parents: 1750
diff changeset
982 if (argv[1] == "on")
1827
effa9400766f [project @ 1996-02-02 14:07:51 by jwe]
jwe
parents: 1802
diff changeset
983 clear_before_plotting = false;
1755
3a9462b655f1 [project @ 1996-01-22 04:47:22 by jwe]
jwe
parents: 1750
diff changeset
984 else if (argv[1] == "off")
1827
effa9400766f [project @ 1996-02-02 14:07:51 by jwe]
jwe
parents: 1802
diff changeset
985 clear_before_plotting = true;
524
2814c75c8398 [project @ 1994-07-20 18:36:24 by jwe]
jwe
parents: 491
diff changeset
986 else
2814c75c8398 [project @ 1994-07-20 18:36:24 by jwe]
jwe
parents: 491
diff changeset
987 print_usage ("hold");
2814c75c8398 [project @ 1994-07-20 18:36:24 by jwe]
jwe
parents: 491
diff changeset
988 break;
777
a2f9d3fd720c [project @ 1994-10-07 14:01:53 by jwe]
jwe
parents: 771
diff changeset
989
524
2814c75c8398 [project @ 1994-07-20 18:36:24 by jwe]
jwe
parents: 491
diff changeset
990 default:
2814c75c8398 [project @ 1994-07-20 18:36:24 by jwe]
jwe
parents: 491
diff changeset
991 print_usage ("hold");
2814c75c8398 [project @ 1994-07-20 18:36:24 by jwe]
jwe
parents: 491
diff changeset
992 break;
2814c75c8398 [project @ 1994-07-20 18:36:24 by jwe]
jwe
parents: 491
diff changeset
993 }
2814c75c8398 [project @ 1994-07-20 18:36:24 by jwe]
jwe
parents: 491
diff changeset
994
2814c75c8398 [project @ 1994-07-20 18:36:24 by jwe]
jwe
parents: 491
diff changeset
995 return retval;
2814c75c8398 [project @ 1994-07-20 18:36:24 by jwe]
jwe
parents: 491
diff changeset
996 }
2814c75c8398 [project @ 1994-07-20 18:36:24 by jwe]
jwe
parents: 491
diff changeset
997
1957
0e6a0a271998 [project @ 1996-02-15 01:08:15 by jwe]
jwe
parents: 1827
diff changeset
998 DEFUN (ishold, , ,
735
7455048010b9 [project @ 1994-09-24 03:22:34 by jwe]
jwe
parents: 662
diff changeset
999 "ishold\n\
7455048010b9 [project @ 1994-09-24 03:22:34 by jwe]
jwe
parents: 662
diff changeset
1000 \n\
7455048010b9 [project @ 1994-09-24 03:22:34 by jwe]
jwe
parents: 662
diff changeset
1001 Return 1 if hold is on, otherwise return 0.")
7455048010b9 [project @ 1994-09-24 03:22:34 by jwe]
jwe
parents: 662
diff changeset
1002 {
7455048010b9 [project @ 1994-09-24 03:22:34 by jwe]
jwe
parents: 662
diff changeset
1003 return (double) (! clear_before_plotting);
7455048010b9 [project @ 1994-09-24 03:22:34 by jwe]
jwe
parents: 662
diff changeset
1004 }
7455048010b9 [project @ 1994-09-24 03:22:34 by jwe]
jwe
parents: 662
diff changeset
1005
1957
0e6a0a271998 [project @ 1996-02-15 01:08:15 by jwe]
jwe
parents: 1827
diff changeset
1006 DEFUN (purge_tmp_files, , ,
524
2814c75c8398 [project @ 1994-07-20 18:36:24 by jwe]
jwe
parents: 491
diff changeset
1007 "delete temporary data files used for plotting")
2814c75c8398 [project @ 1994-07-20 18:36:24 by jwe]
jwe
parents: 491
diff changeset
1008 {
2086
bfb775fb6fe8 [project @ 1996-04-25 05:55:19 by jwe]
jwe
parents: 1996
diff changeset
1009 octave_value_list retval;
524
2814c75c8398 [project @ 1994-07-20 18:36:24 by jwe]
jwe
parents: 491
diff changeset
1010 cleanup_tmp_files ();
2814c75c8398 [project @ 1994-07-20 18:36:24 by jwe]
jwe
parents: 491
diff changeset
1011 return retval;
2814c75c8398 [project @ 1994-07-20 18:36:24 by jwe]
jwe
parents: 491
diff changeset
1012 }
2814c75c8398 [project @ 1994-07-20 18:36:24 by jwe]
jwe
parents: 491
diff changeset
1013
2520
a034dcdbc282 [project @ 1996-11-15 04:57:21 by jwe]
jwe
parents: 2508
diff changeset
1014 DEFUN_TEXT (gset, args, ,
a034dcdbc282 [project @ 1996-11-15 04:57:21 by jwe]
jwe
parents: 2508
diff changeset
1015 "gset [options]\n\
524
2814c75c8398 [project @ 1994-07-20 18:36:24 by jwe]
jwe
parents: 491
diff changeset
1016 \n\
2520
a034dcdbc282 [project @ 1996-11-15 04:57:21 by jwe]
jwe
parents: 2508
diff changeset
1017 set plotting options for gnuplot")
524
2814c75c8398 [project @ 1994-07-20 18:36:24 by jwe]
jwe
parents: 491
diff changeset
1018 {
2086
bfb775fb6fe8 [project @ 1996-04-25 05:55:19 by jwe]
jwe
parents: 1996
diff changeset
1019 octave_value_list retval;
524
2814c75c8398 [project @ 1994-07-20 18:36:24 by jwe]
jwe
parents: 491
diff changeset
1020
1755
3a9462b655f1 [project @ 1996-01-22 04:47:22 by jwe]
jwe
parents: 1750
diff changeset
1021 int argc = args.length () + 1;
3a9462b655f1 [project @ 1996-01-22 04:47:22 by jwe]
jwe
parents: 1750
diff changeset
1022
1968
a2e206524aa0 [project @ 1996-02-17 02:54:24 by jwe]
jwe
parents: 1957
diff changeset
1023 string_vector argv = args.make_argv ("set");
1755
3a9462b655f1 [project @ 1996-01-22 04:47:22 by jwe]
jwe
parents: 1750
diff changeset
1024
3a9462b655f1 [project @ 1996-01-22 04:47:22 by jwe]
jwe
parents: 1750
diff changeset
1025 if (error_state)
3a9462b655f1 [project @ 1996-01-22 04:47:22 by jwe]
jwe
parents: 1750
diff changeset
1026 return retval;
524
2814c75c8398 [project @ 1994-07-20 18:36:24 by jwe]
jwe
parents: 491
diff changeset
1027
2814c75c8398 [project @ 1994-07-20 18:36:24 by jwe]
jwe
parents: 491
diff changeset
1028 ostrstream plot_buf;
2814c75c8398 [project @ 1994-07-20 18:36:24 by jwe]
jwe
parents: 491
diff changeset
1029
2814c75c8398 [project @ 1994-07-20 18:36:24 by jwe]
jwe
parents: 491
diff changeset
1030 if (argc > 1)
2814c75c8398 [project @ 1994-07-20 18:36:24 by jwe]
jwe
parents: 491
diff changeset
1031 {
2814c75c8398 [project @ 1994-07-20 18:36:24 by jwe]
jwe
parents: 491
diff changeset
1032 if (almost_match ("parametric", argv[1], 3))
1827
effa9400766f [project @ 1996-02-02 14:07:51 by jwe]
jwe
parents: 1802
diff changeset
1033 parametric_plot = true;
524
2814c75c8398 [project @ 1994-07-20 18:36:24 by jwe]
jwe
parents: 491
diff changeset
1034 else if (almost_match ("noparametric", argv[1], 5))
1827
effa9400766f [project @ 1996-02-02 14:07:51 by jwe]
jwe
parents: 1802
diff changeset
1035 parametric_plot = false;
943
4fc1ae8c24dc [project @ 1994-11-21 19:05:31 by jwe]
jwe
parents: 940
diff changeset
1036 else if (almost_match ("term", argv[1], 1))
4fc1ae8c24dc [project @ 1994-11-21 19:05:31 by jwe]
jwe
parents: 940
diff changeset
1037 {
4fc1ae8c24dc [project @ 1994-11-21 19:05:31 by jwe]
jwe
parents: 940
diff changeset
1038 delete [] gnuplot_terminal_type;
4fc1ae8c24dc [project @ 1994-11-21 19:05:31 by jwe]
jwe
parents: 940
diff changeset
1039 ostrstream buf;
4fc1ae8c24dc [project @ 1994-11-21 19:05:31 by jwe]
jwe
parents: 940
diff changeset
1040 for (int i = 2; i < argc; i++)
4fc1ae8c24dc [project @ 1994-11-21 19:05:31 by jwe]
jwe
parents: 940
diff changeset
1041 buf << argv[i] << " ";
2523
007e977442b8 [project @ 1996-11-16 00:33:22 by jwe]
jwe
parents: 2521
diff changeset
1042 buf << GPLOT_CMD_END << ends;
943
4fc1ae8c24dc [project @ 1994-11-21 19:05:31 by jwe]
jwe
parents: 940
diff changeset
1043 gnuplot_terminal_type = buf.str ();
4fc1ae8c24dc [project @ 1994-11-21 19:05:31 by jwe]
jwe
parents: 940
diff changeset
1044 }
524
2814c75c8398 [project @ 1994-07-20 18:36:24 by jwe]
jwe
parents: 491
diff changeset
1045 }
2814c75c8398 [project @ 1994-07-20 18:36:24 by jwe]
jwe
parents: 491
diff changeset
1046
2814c75c8398 [project @ 1994-07-20 18:36:24 by jwe]
jwe
parents: 491
diff changeset
1047 for (int i = 0; i < argc; i++)
2814c75c8398 [project @ 1994-07-20 18:36:24 by jwe]
jwe
parents: 491
diff changeset
1048 plot_buf << argv[i] << " ";
2814c75c8398 [project @ 1994-07-20 18:36:24 by jwe]
jwe
parents: 491
diff changeset
1049
2523
007e977442b8 [project @ 1996-11-16 00:33:22 by jwe]
jwe
parents: 2521
diff changeset
1050 plot_buf << GPLOT_CMD_END << ends;
524
2814c75c8398 [project @ 1994-07-20 18:36:24 by jwe]
jwe
parents: 491
diff changeset
1051
2814c75c8398 [project @ 1994-07-20 18:36:24 by jwe]
jwe
parents: 491
diff changeset
1052 char *plot_command = plot_buf.str ();
2814c75c8398 [project @ 1994-07-20 18:36:24 by jwe]
jwe
parents: 491
diff changeset
1053 send_to_plot_stream (plot_command);
2814c75c8398 [project @ 1994-07-20 18:36:24 by jwe]
jwe
parents: 491
diff changeset
1054
2814c75c8398 [project @ 1994-07-20 18:36:24 by jwe]
jwe
parents: 491
diff changeset
1055 delete [] plot_command;
2814c75c8398 [project @ 1994-07-20 18:36:24 by jwe]
jwe
parents: 491
diff changeset
1056
2814c75c8398 [project @ 1994-07-20 18:36:24 by jwe]
jwe
parents: 491
diff changeset
1057 return retval;
2814c75c8398 [project @ 1994-07-20 18:36:24 by jwe]
jwe
parents: 491
diff changeset
1058 }
2814c75c8398 [project @ 1994-07-20 18:36:24 by jwe]
jwe
parents: 491
diff changeset
1059
2520
a034dcdbc282 [project @ 1996-11-15 04:57:21 by jwe]
jwe
parents: 2508
diff changeset
1060 DEFUN_TEXT (set, args, nargout,
a034dcdbc282 [project @ 1996-11-15 04:57:21 by jwe]
jwe
parents: 2508
diff changeset
1061 "This command is has been replaced by `gset'.")
a034dcdbc282 [project @ 1996-11-15 04:57:21 by jwe]
jwe
parents: 2508
diff changeset
1062 {
2521
19b33e933eae [project @ 1996-11-15 05:28:26 by jwe]
jwe
parents: 2520
diff changeset
1063 warning ("set is obsolete -- use gset instead");
2520
a034dcdbc282 [project @ 1996-11-15 04:57:21 by jwe]
jwe
parents: 2508
diff changeset
1064 return Fgset (args, nargout);
a034dcdbc282 [project @ 1996-11-15 04:57:21 by jwe]
jwe
parents: 2508
diff changeset
1065 }
a034dcdbc282 [project @ 1996-11-15 04:57:21 by jwe]
jwe
parents: 2508
diff changeset
1066
a034dcdbc282 [project @ 1996-11-15 04:57:21 by jwe]
jwe
parents: 2508
diff changeset
1067 DEFUN_TEXT (gshow, args, ,
a034dcdbc282 [project @ 1996-11-15 04:57:21 by jwe]
jwe
parents: 2508
diff changeset
1068 "gshow [options]\n\
524
2814c75c8398 [project @ 1994-07-20 18:36:24 by jwe]
jwe
parents: 491
diff changeset
1069 \n\
2814c75c8398 [project @ 1994-07-20 18:36:24 by jwe]
jwe
parents: 491
diff changeset
1070 show plotting options")
2814c75c8398 [project @ 1994-07-20 18:36:24 by jwe]
jwe
parents: 491
diff changeset
1071 {
2086
bfb775fb6fe8 [project @ 1996-04-25 05:55:19 by jwe]
jwe
parents: 1996
diff changeset
1072 octave_value_list retval;
524
2814c75c8398 [project @ 1994-07-20 18:36:24 by jwe]
jwe
parents: 491
diff changeset
1073
1755
3a9462b655f1 [project @ 1996-01-22 04:47:22 by jwe]
jwe
parents: 1750
diff changeset
1074 int argc = args.length () + 1;
3a9462b655f1 [project @ 1996-01-22 04:47:22 by jwe]
jwe
parents: 1750
diff changeset
1075
1968
a2e206524aa0 [project @ 1996-02-17 02:54:24 by jwe]
jwe
parents: 1957
diff changeset
1076 string_vector argv = args.make_argv ("show");
1755
3a9462b655f1 [project @ 1996-01-22 04:47:22 by jwe]
jwe
parents: 1750
diff changeset
1077
3a9462b655f1 [project @ 1996-01-22 04:47:22 by jwe]
jwe
parents: 1750
diff changeset
1078 if (error_state)
3a9462b655f1 [project @ 1996-01-22 04:47:22 by jwe]
jwe
parents: 1750
diff changeset
1079 return retval;
524
2814c75c8398 [project @ 1994-07-20 18:36:24 by jwe]
jwe
parents: 491
diff changeset
1080
2814c75c8398 [project @ 1994-07-20 18:36:24 by jwe]
jwe
parents: 491
diff changeset
1081 ostrstream plot_buf;
2814c75c8398 [project @ 1994-07-20 18:36:24 by jwe]
jwe
parents: 491
diff changeset
1082
2814c75c8398 [project @ 1994-07-20 18:36:24 by jwe]
jwe
parents: 491
diff changeset
1083 for (int i = 0; i < argc; i++)
2814c75c8398 [project @ 1994-07-20 18:36:24 by jwe]
jwe
parents: 491
diff changeset
1084 plot_buf << argv[i] << " ";
2814c75c8398 [project @ 1994-07-20 18:36:24 by jwe]
jwe
parents: 491
diff changeset
1085
2523
007e977442b8 [project @ 1996-11-16 00:33:22 by jwe]
jwe
parents: 2521
diff changeset
1086 plot_buf << GPLOT_CMD_END << ends;
524
2814c75c8398 [project @ 1994-07-20 18:36:24 by jwe]
jwe
parents: 491
diff changeset
1087
2814c75c8398 [project @ 1994-07-20 18:36:24 by jwe]
jwe
parents: 491
diff changeset
1088 char *plot_command = plot_buf.str ();
2814c75c8398 [project @ 1994-07-20 18:36:24 by jwe]
jwe
parents: 491
diff changeset
1089 send_to_plot_stream (plot_command);
2814c75c8398 [project @ 1994-07-20 18:36:24 by jwe]
jwe
parents: 491
diff changeset
1090
2814c75c8398 [project @ 1994-07-20 18:36:24 by jwe]
jwe
parents: 491
diff changeset
1091 delete [] plot_command;
2814c75c8398 [project @ 1994-07-20 18:36:24 by jwe]
jwe
parents: 491
diff changeset
1092
2814c75c8398 [project @ 1994-07-20 18:36:24 by jwe]
jwe
parents: 491
diff changeset
1093 return retval;
2814c75c8398 [project @ 1994-07-20 18:36:24 by jwe]
jwe
parents: 491
diff changeset
1094 }
2814c75c8398 [project @ 1994-07-20 18:36:24 by jwe]
jwe
parents: 491
diff changeset
1095
2520
a034dcdbc282 [project @ 1996-11-15 04:57:21 by jwe]
jwe
parents: 2508
diff changeset
1096 DEFUN_TEXT (show, args, nargout,
a034dcdbc282 [project @ 1996-11-15 04:57:21 by jwe]
jwe
parents: 2508
diff changeset
1097 "This command is has been replaced by `gshow'.")
a034dcdbc282 [project @ 1996-11-15 04:57:21 by jwe]
jwe
parents: 2508
diff changeset
1098 {
2521
19b33e933eae [project @ 1996-11-15 05:28:26 by jwe]
jwe
parents: 2520
diff changeset
1099 warning ("show is obsolete -- use gshow instead");
2520
a034dcdbc282 [project @ 1996-11-15 04:57:21 by jwe]
jwe
parents: 2508
diff changeset
1100 return Fgshow (args, nargout);
a034dcdbc282 [project @ 1996-11-15 04:57:21 by jwe]
jwe
parents: 2508
diff changeset
1101 }
a034dcdbc282 [project @ 1996-11-15 04:57:21 by jwe]
jwe
parents: 2508
diff changeset
1102
2176
868d82fe5fdc [project @ 1996-05-13 16:22:01 by jwe]
jwe
parents: 2124
diff changeset
1103 static int
868d82fe5fdc [project @ 1996-05-13 16:22:01 by jwe]
jwe
parents: 2124
diff changeset
1104 automatic_replot (void)
868d82fe5fdc [project @ 1996-05-13 16:22:01 by jwe]
jwe
parents: 2124
diff changeset
1105 {
868d82fe5fdc [project @ 1996-05-13 16:22:01 by jwe]
jwe
parents: 2124
diff changeset
1106 Vautomatic_replot = check_preference ("automatic_replot");
868d82fe5fdc [project @ 1996-05-13 16:22:01 by jwe]
jwe
parents: 2124
diff changeset
1107
868d82fe5fdc [project @ 1996-05-13 16:22:01 by jwe]
jwe
parents: 2124
diff changeset
1108 return 0;
868d82fe5fdc [project @ 1996-05-13 16:22:01 by jwe]
jwe
parents: 2124
diff changeset
1109 }
868d82fe5fdc [project @ 1996-05-13 16:22:01 by jwe]
jwe
parents: 2124
diff changeset
1110
868d82fe5fdc [project @ 1996-05-13 16:22:01 by jwe]
jwe
parents: 2124
diff changeset
1111 int
868d82fe5fdc [project @ 1996-05-13 16:22:01 by jwe]
jwe
parents: 2124
diff changeset
1112 gnuplot_binary (void)
868d82fe5fdc [project @ 1996-05-13 16:22:01 by jwe]
jwe
parents: 2124
diff changeset
1113 {
868d82fe5fdc [project @ 1996-05-13 16:22:01 by jwe]
jwe
parents: 2124
diff changeset
1114 int status = 0;
868d82fe5fdc [project @ 1996-05-13 16:22:01 by jwe]
jwe
parents: 2124
diff changeset
1115
868d82fe5fdc [project @ 1996-05-13 16:22:01 by jwe]
jwe
parents: 2124
diff changeset
1116 string s = builtin_string_variable ("gnuplot_binary");
868d82fe5fdc [project @ 1996-05-13 16:22:01 by jwe]
jwe
parents: 2124
diff changeset
1117
868d82fe5fdc [project @ 1996-05-13 16:22:01 by jwe]
jwe
parents: 2124
diff changeset
1118 if (s.empty ())
868d82fe5fdc [project @ 1996-05-13 16:22:01 by jwe]
jwe
parents: 2124
diff changeset
1119 {
868d82fe5fdc [project @ 1996-05-13 16:22:01 by jwe]
jwe
parents: 2124
diff changeset
1120 gripe_invalid_value_specified ("gnuplot_binary");
868d82fe5fdc [project @ 1996-05-13 16:22:01 by jwe]
jwe
parents: 2124
diff changeset
1121 status = -1;
868d82fe5fdc [project @ 1996-05-13 16:22:01 by jwe]
jwe
parents: 2124
diff changeset
1122 }
868d82fe5fdc [project @ 1996-05-13 16:22:01 by jwe]
jwe
parents: 2124
diff changeset
1123 else
868d82fe5fdc [project @ 1996-05-13 16:22:01 by jwe]
jwe
parents: 2124
diff changeset
1124 Vgnuplot_binary = s;
868d82fe5fdc [project @ 1996-05-13 16:22:01 by jwe]
jwe
parents: 2124
diff changeset
1125
868d82fe5fdc [project @ 1996-05-13 16:22:01 by jwe]
jwe
parents: 2124
diff changeset
1126 return status;
868d82fe5fdc [project @ 1996-05-13 16:22:01 by jwe]
jwe
parents: 2124
diff changeset
1127 }
868d82fe5fdc [project @ 1996-05-13 16:22:01 by jwe]
jwe
parents: 2124
diff changeset
1128
868d82fe5fdc [project @ 1996-05-13 16:22:01 by jwe]
jwe
parents: 2124
diff changeset
1129 static int
2289
d9fe34ccf2bf [project @ 1996-06-06 05:05:47 by jwe]
jwe
parents: 2211
diff changeset
1130 gnuplot_has_frames (void)
d9fe34ccf2bf [project @ 1996-06-06 05:05:47 by jwe]
jwe
parents: 2211
diff changeset
1131 {
d9fe34ccf2bf [project @ 1996-06-06 05:05:47 by jwe]
jwe
parents: 2211
diff changeset
1132 Vgnuplot_has_frames = check_preference ("gnuplot_has_frames");
d9fe34ccf2bf [project @ 1996-06-06 05:05:47 by jwe]
jwe
parents: 2211
diff changeset
1133
d9fe34ccf2bf [project @ 1996-06-06 05:05:47 by jwe]
jwe
parents: 2211
diff changeset
1134 return 0;
d9fe34ccf2bf [project @ 1996-06-06 05:05:47 by jwe]
jwe
parents: 2211
diff changeset
1135 }
d9fe34ccf2bf [project @ 1996-06-06 05:05:47 by jwe]
jwe
parents: 2211
diff changeset
1136
d9fe34ccf2bf [project @ 1996-06-06 05:05:47 by jwe]
jwe
parents: 2211
diff changeset
1137 static int
2176
868d82fe5fdc [project @ 1996-05-13 16:22:01 by jwe]
jwe
parents: 2124
diff changeset
1138 gnuplot_has_multiplot (void)
868d82fe5fdc [project @ 1996-05-13 16:22:01 by jwe]
jwe
parents: 2124
diff changeset
1139 {
868d82fe5fdc [project @ 1996-05-13 16:22:01 by jwe]
jwe
parents: 2124
diff changeset
1140 Vgnuplot_has_multiplot = check_preference ("gnuplot_has_multiplot");
868d82fe5fdc [project @ 1996-05-13 16:22:01 by jwe]
jwe
parents: 2124
diff changeset
1141
868d82fe5fdc [project @ 1996-05-13 16:22:01 by jwe]
jwe
parents: 2124
diff changeset
1142 return 0;
868d82fe5fdc [project @ 1996-05-13 16:22:01 by jwe]
jwe
parents: 2124
diff changeset
1143 }
868d82fe5fdc [project @ 1996-05-13 16:22:01 by jwe]
jwe
parents: 2124
diff changeset
1144
868d82fe5fdc [project @ 1996-05-13 16:22:01 by jwe]
jwe
parents: 2124
diff changeset
1145 void
868d82fe5fdc [project @ 1996-05-13 16:22:01 by jwe]
jwe
parents: 2124
diff changeset
1146 symbols_of_pt_plot (void)
868d82fe5fdc [project @ 1996-05-13 16:22:01 by jwe]
jwe
parents: 2124
diff changeset
1147 {
868d82fe5fdc [project @ 1996-05-13 16:22:01 by jwe]
jwe
parents: 2124
diff changeset
1148 DEFVAR (automatic_replot, 0.0, 0, automatic_replot,
868d82fe5fdc [project @ 1996-05-13 16:22:01 by jwe]
jwe
parents: 2124
diff changeset
1149 "if true, auto-insert a replot command when a plot changes");
868d82fe5fdc [project @ 1996-05-13 16:22:01 by jwe]
jwe
parents: 2124
diff changeset
1150
868d82fe5fdc [project @ 1996-05-13 16:22:01 by jwe]
jwe
parents: 2124
diff changeset
1151 DEFVAR (gnuplot_binary, "gnuplot", 0, gnuplot_binary,
868d82fe5fdc [project @ 1996-05-13 16:22:01 by jwe]
jwe
parents: 2124
diff changeset
1152 "path to gnuplot binary");
868d82fe5fdc [project @ 1996-05-13 16:22:01 by jwe]
jwe
parents: 2124
diff changeset
1153
2289
d9fe34ccf2bf [project @ 1996-06-06 05:05:47 by jwe]
jwe
parents: 2211
diff changeset
1154 #ifdef GNUPLOT_HAS_FRAMES
d9fe34ccf2bf [project @ 1996-06-06 05:05:47 by jwe]
jwe
parents: 2211
diff changeset
1155 double with_frames = 1.0;
d9fe34ccf2bf [project @ 1996-06-06 05:05:47 by jwe]
jwe
parents: 2211
diff changeset
1156 #else
d9fe34ccf2bf [project @ 1996-06-06 05:05:47 by jwe]
jwe
parents: 2211
diff changeset
1157 double with_frames = 0.0;
d9fe34ccf2bf [project @ 1996-06-06 05:05:47 by jwe]
jwe
parents: 2211
diff changeset
1158 #endif
d9fe34ccf2bf [project @ 1996-06-06 05:05:47 by jwe]
jwe
parents: 2211
diff changeset
1159
d9fe34ccf2bf [project @ 1996-06-06 05:05:47 by jwe]
jwe
parents: 2211
diff changeset
1160 DEFVAR (gnuplot_has_frames, with_frames, 0, gnuplot_has_frames,
d9fe34ccf2bf [project @ 1996-06-06 05:05:47 by jwe]
jwe
parents: 2211
diff changeset
1161 "true if gnuplot supports multiple plot windows on X11, false otherwise");
d9fe34ccf2bf [project @ 1996-06-06 05:05:47 by jwe]
jwe
parents: 2211
diff changeset
1162
2176
868d82fe5fdc [project @ 1996-05-13 16:22:01 by jwe]
jwe
parents: 2124
diff changeset
1163 #ifdef GNUPLOT_HAS_MULTIPLOT
868d82fe5fdc [project @ 1996-05-13 16:22:01 by jwe]
jwe
parents: 2124
diff changeset
1164 double with_multiplot = 1.0;
868d82fe5fdc [project @ 1996-05-13 16:22:01 by jwe]
jwe
parents: 2124
diff changeset
1165 #else
868d82fe5fdc [project @ 1996-05-13 16:22:01 by jwe]
jwe
parents: 2124
diff changeset
1166 double with_multiplot = 0.0;
868d82fe5fdc [project @ 1996-05-13 16:22:01 by jwe]
jwe
parents: 2124
diff changeset
1167 #endif
868d82fe5fdc [project @ 1996-05-13 16:22:01 by jwe]
jwe
parents: 2124
diff changeset
1168
868d82fe5fdc [project @ 1996-05-13 16:22:01 by jwe]
jwe
parents: 2124
diff changeset
1169 DEFVAR (gnuplot_has_multiplot, with_multiplot, 0, gnuplot_has_multiplot,
868d82fe5fdc [project @ 1996-05-13 16:22:01 by jwe]
jwe
parents: 2124
diff changeset
1170 "true if gnuplot supports multiplot, false otherwise");
868d82fe5fdc [project @ 1996-05-13 16:22:01 by jwe]
jwe
parents: 2124
diff changeset
1171 }
868d82fe5fdc [project @ 1996-05-13 16:22:01 by jwe]
jwe
parents: 2124
diff changeset
1172
1
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
1173 /*
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
1174 ;;; Local Variables: ***
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
1175 ;;; mode: C++ ***
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
1176 ;;; End: ***
78fd87e624cb [project @ 1993-08-08 01:13:40 by jwe]
jwe
parents:
diff changeset
1177 */