|
|
1.1 root 1: /*
2: Copyright (C) 1993 Free Software Foundation
3:
4: This file is part of the GNU IO Library. This library is free
5: software; you can redistribute it and/or modify it under the
6: terms of the GNU General Public License as published by the
7: Free Software Foundation; either version 2, or (at your option)
8: any later version.
9:
10: This library is distributed in the hope that it will be useful,
11: but WITHOUT ANY WARRANTY; without even the implied warranty of
12: MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13: GNU General Public License for more details.
14:
15: You should have received a copy of the GNU General Public License
16: along with GNU CC; see the file COPYING. If not, write to
17: the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
18:
19: As a special exception, if you link this library with files
20: compiled with a GNU compiler to produce an executable, this does not cause
21: the resulting executable to be covered by the GNU General Public License.
22: This exception does not however invalidate any other reasons why
23: the executable file might be covered by the GNU General Public License. */
24:
25: // This may look like C code, but it is really -*- C++ -*-
26: /*
27: Copyright (C) 1988, 1992, 1993 Free Software Foundation
28: written by Doug Lea ([email protected])
29: converted to use iostream library by Per Bothner ([email protected])
30:
31: This file is part of the GNU IO Library. This library is free
32: software; you can redistribute it and/or modify it under the
33: terms of the GNU General Public License as published by the
34: Free Software Foundation; either version 2, or (at your option)
35: any later version.
36:
37: This library is distributed in the hope that it will be useful,
38: but WITHOUT ANY WARRANTY; without even the implied warranty of
39: MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
40: GNU General Public License for more details.
41:
42: You should have received a copy of the GNU General Public License
43: along with GNU CC; see the file COPYING. If not, write to
44: the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
45:
46: As a special exception, if you link this library with files
47: compiled with GCC to produce an executable, this does not cause
48: the resulting executable to be covered by the GNU General Public License.
49: This exception does not however invalidate any other reasons why
50: the executable file might be covered by the GNU General Public License. */
51:
52: #ifdef __GNUG__
53: #pragma implementation
54: #endif
55: #include <PlotFile.h>
56:
57: /*
58: PlotFile implementation module
59: */
60:
61:
62: PlotFile& PlotFile:: cmd(char c)
63: {
64: ofstream::put(c);
65: return *this;
66: }
67:
68: PlotFile& PlotFile:: operator<<(const int x)
69: {
70: #if defined(convex)
71: ofstream::put((char)(x>>8));
72: ofstream::put((char)(x&0377));
73: #else
74: ofstream::put((char)(x&0377));
75: ofstream::put((char)(x>>8));
76: #endif
77: return *this;
78: }
79:
80: PlotFile& PlotFile:: operator<<(const char *s)
81: {
82: *(ofstream*)this << s;
83: return *this;
84: }
85:
86:
87: PlotFile& PlotFile:: arc(const int xi, const int yi,
88: const int x0, const int y0,
89: const int x1, const int y1)
90: {
91: return cmd('a') << xi << yi << x0 << y0 << x1 << y1;
92: }
93:
94:
95: PlotFile& PlotFile:: box(const int x0, const int y0,
96: const int x1, const int y1)
97: {
98: line(x0, y0, x0, y1);
99: line(x0, y1, x1, y1);
100: line(x1, y1, x1, y0);
101: return line(x1, y0, x0, y0);
102: }
103:
104: PlotFile& PlotFile:: circle(const int x, const int y, const int r)
105: {
106: return cmd('c') << x << y << r;
107: }
108:
109: PlotFile& PlotFile:: cont(const int xi, const int yi)
110: {
111: return cmd('n') << xi << yi;
112: }
113:
114: PlotFile& PlotFile:: dot(const int xi, const int yi, const int dx,
115: int n, const int* pat)
116: {
117: cmd('d') << xi << yi << dx << n;
118: while (n-- > 0) *this << *pat++;
119: return *this;
120: }
121:
122: PlotFile& PlotFile:: erase()
123: {
124: return cmd('e');
125: }
126:
127: PlotFile& PlotFile:: label(const char* s)
128: {
129: return cmd('t') << s << "\n";
130: }
131:
132: PlotFile& PlotFile:: line(const int x0, const int y0,
133: const int x1, const int y1)
134: {
135: return cmd('l') << x0 << y0 << x1 << y1;
136: }
137:
138: PlotFile& PlotFile:: linemod(const char* s)
139: {
140: return cmd('f') << s << "\n";
141: }
142:
143: PlotFile& PlotFile:: move(const int xi, const int yi)
144: {
145: return cmd('m') << xi << yi;
146: }
147:
148: PlotFile& PlotFile:: point(const int xi, const int yi)
149: {
150: return cmd('p') << xi << yi;
151: }
152:
153: PlotFile& PlotFile:: space(const int x0, const int y0,
154: const int x1, const int y1)
155: {
156: return cmd('s') << x0 << y0 << x1 << y1;
157: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.