PLplot
5.11.1
Main Page
Namespaces
Classes
Files
File List
File Members
All
Classes
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Macros
plcore.h
Go to the documentation of this file.
1
// Contains declarations for core plplot data structures. This file
2
// should be included only by plcore.c.
3
//
4
// Copyright (C) 2004 Andrew Roach
5
// Copyright (C) 2005 Thomas J. Duck
6
//
7
// This file is part of PLplot.
8
//
9
// PLplot is free software; you can redistribute it and/or modify
10
// it under the terms of the GNU Library General Public License as published
11
// by the Free Software Foundation; either version 2 of the License, or
12
// (at your option) any later version.
13
//
14
// PLplot is distributed in the hope that it will be useful,
15
// but WITHOUT ANY WARRANTY; without even the implied warranty of
16
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17
// GNU Library General Public License for more details.
18
//
19
// You should have received a copy of the GNU Library General Public License
20
// along with PLplot; if not, write to the Free Software
21
// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
22
//
23
//
24
25
#ifndef __PLCORE_H__
26
#define __PLCORE_H__
27
28
#include "
plplotP.h
"
29
#include "
drivers.h
"
30
#include "
plDevs.h
"
31
#include "
disptab.h
"
32
33
#ifdef ENABLE_DYNDRIVERS
34
#ifndef LTDL_WIN32
35
#include <ltdl.h>
36
#else
37
#include "
ltdl_win32.h
"
38
#endif
39
typedef
lt_ptr
( *
PLDispatchInit
)(
PLDispatchTable
*pdt );
40
#else
41
typedef
void
( *
PLDispatchInit
)(
PLDispatchTable
*pdt );
42
#endif
43
44
#ifdef HAVE_LIBUNICODE
45
#include <unicode.h>
46
#endif
47
48
49
// Static function prototypes
50
51
static
const
char
*
utf8_to_ucs4
(
const
char
*ptr,
PLUNICODE
*unichar );
52
static
void
grline
(
short
*,
short
*,
PLINT
);
53
static
void
grpolyline
(
short
*,
short
*,
PLINT
);
54
static
void
grfill
(
short
*,
short
*,
PLINT
);
55
static
void
grgradient
(
short
*,
short
*,
PLINT
);
56
static
void
plSelectDev
(
void
);
57
static
void
pldi_ini
(
void
);
58
static
void
calc_diplt
(
void
);
59
static
void
calc_didev
(
void
);
60
static
void
calc_diori
(
void
);
61
static
void
calc_dimap
(
void
);
62
static
void
plgdevlst
(
const
char
**,
const
char
**,
int
*,
int
);
63
64
static
void
plInitDispatchTable
(
void
);
65
66
static
void
plLoadDriver
(
void
);
67
68
// Static variables
69
70
static
PLINT
xscl
[
PL_MAXPOLY
],
yscl
[
PL_MAXPOLY
];
71
72
static
PLINT
initfont
= 1;
// initial font: extended by default
73
74
static
PLINT
lib_initialized
= 0;
75
76
//--------------------------------------------------------------------------
77
// Allocate a PLStream data structure (defined in plstrm.h).
78
//
79
// This struct contains a copy of every variable that is stream dependent.
80
// Only the first [index=0] stream is statically allocated; the rest
81
// are dynamically allocated when you switch streams (yes, it is legal
82
// to only initialize the first element of the array of pointers).
83
//--------------------------------------------------------------------------
84
85
static
PLStream
pls0
;
// preallocated stream
86
static
PLINT
ipls
;
// current stream number
87
88
static
PLStream
*
pls
[
PL_NSTREAMS
] = { &pls0 };
// Array of stream pointers
89
90
// Current stream pointer. Global, for easier access to state info
91
92
PLDLLIMPEXP_DATA
(
PLStream
) * plsc = &
pls0
;
93
94
// Only now can we include this
95
96
#include "
pldebug.h
"
97
98
//--------------------------------------------------------------------------
99
// Initialize dispatch table.
100
//
101
// Each device is selected by the appropriate define, passed in from the
102
// makefile. When installing plplot you may wish to exclude devices not
103
// present on your system in order to reduce screen clutter.
104
//
105
// If you hit a <CR> in response to the plinit() prompt, you get the FIRST
106
// one active below, so arrange them accordingly for your system (i.e. all
107
// the system-specific ones should go first, since they won't appear on
108
// most systems.)
109
//--------------------------------------------------------------------------
110
111
static
PLDispatchTable
**
dispatch_table
= 0;
112
static
int
npldrivers
= 0;
113
114
static
PLDispatchInit
static_device_initializers
[] = {
115
// Same order (by source filename and by device) as in drivers.h.
116
// ps and psttf are special cases where two devices are handled with
117
// one PLD macro.
118
// xwin is special case where the macro name is PLD_xwin but the
119
// function name in drivers.h is plD_dispatch_init_xw
120
121
#if defined ( PLD_aqt ) && !defined ( ENABLE_DYNDRIVERS )
122
plD_dispatch_init_aqt
,
123
#endif
124
#if defined ( PLD_epscairo ) && !defined ( ENABLE_DYNDRIVERS )
125
plD_dispatch_init_epscairo
,
126
#endif
127
#if defined ( PLD_extcairo ) && !defined ( ENABLE_DYNDRIVERS )
128
plD_dispatch_init_extcairo
,
129
#endif
130
#if defined ( PLD_memcairo ) && !defined ( ENABLE_DYNDRIVERS )
131
plD_dispatch_init_memcairo
,
132
#endif
133
#if defined ( PLD_pdfcairo ) && !defined ( ENABLE_DYNDRIVERS )
134
plD_dispatch_init_pdfcairo
,
135
#endif
136
#if defined ( PLD_pngcairo ) && !defined ( ENABLE_DYNDRIVERS )
137
plD_dispatch_init_pngcairo
,
138
#endif
139
#if defined ( PLD_pscairo ) && !defined ( ENABLE_DYNDRIVERS )
140
plD_dispatch_init_pscairo
,
141
#endif
142
#if defined ( PLD_svgcairo ) && !defined ( ENABLE_DYNDRIVERS )
143
plD_dispatch_init_svgcairo
,
144
#endif
145
#if defined ( PLD_wincairo ) && !defined ( ENABLE_DYNDRIVERS )
146
plD_dispatch_init_wincairo
,
147
#endif
148
#if defined ( PLD_xcairo ) && !defined ( ENABLE_DYNDRIVERS )
149
plD_dispatch_init_xcairo
,
150
#endif
151
#if defined ( PLD_cgm ) && !defined ( ENABLE_DYNDRIVERS )
152
plD_dispatch_init_cgm
,
153
#endif
154
#if defined ( PLD_gif ) && !defined ( ENABLE_DYNDRIVERS )
155
plD_dispatch_init_gif
,
156
#endif
157
#if defined ( PLD_jpeg ) && !defined ( ENABLE_DYNDRIVERS )
158
plD_dispatch_init_jpeg
,
159
#endif
160
#if defined ( PLD_png ) && !defined ( ENABLE_DYNDRIVERS )
161
plD_dispatch_init_png
,
162
#endif
163
#if defined ( PLD_mem ) && !defined ( ENABLE_DYNDRIVERS )
164
plD_dispatch_init_mem
,
165
#endif
166
#if defined ( PLD_ntk ) && !defined ( ENABLE_DYNDRIVERS )
167
plD_dispatch_init_ntk
,
168
#endif
169
#if defined ( PLD_null ) && !defined ( ENABLE_DYNDRIVERS )
170
plD_dispatch_init_null
,
171
#endif
172
#if defined ( PLD_pdf ) && !defined ( ENABLE_DYNDRIVERS )
173
plD_dispatch_init_pdf
,
174
#endif
175
#if defined ( PLD_plm ) && !defined ( ENABLE_DYNDRIVERS )
176
plD_dispatch_init_plm
,
177
#endif
178
#if defined ( PLD_ps ) && !defined ( ENABLE_DYNDRIVERS )
179
plD_dispatch_init_psc
,
180
plD_dispatch_init_psm
,
181
#endif
182
#if defined ( PLD_pstex ) && !defined ( ENABLE_DYNDRIVERS )
183
plD_dispatch_init_pstex
,
184
#endif
185
#if defined ( PLD_psttf ) && !defined ( ENABLE_DYNDRIVERS )
186
plD_dispatch_init_psttfc
,
187
plD_dispatch_init_psttfm
,
188
#endif
189
#if defined ( PLD_bmpqt ) && !defined ( ENABLE_DYNDRIVERS )
190
plD_dispatch_init_bmpqt
,
191
#endif
192
#if defined ( PLD_epsqt ) && !defined ( ENABLE_DYNDRIVERS )
193
plD_dispatch_init_epsqt
,
194
#endif
195
#if defined ( PLD_extqt ) && !defined ( ENABLE_DYNDRIVERS )
196
plD_dispatch_init_extqt
,
197
#endif
198
#if defined ( PLD_jpgqt ) && !defined ( ENABLE_DYNDRIVERS )
199
plD_dispatch_init_jpgqt
,
200
#endif
201
#if defined ( PLD_memqt ) && !defined ( ENABLE_DYNDRIVERS )
202
plD_dispatch_init_memqt
,
203
#endif
204
#if defined ( PLD_pdfqt ) && !defined ( ENABLE_DYNDRIVERS )
205
plD_dispatch_init_pdfqt
,
206
#endif
207
#if defined ( PLD_pngqt ) && !defined ( ENABLE_DYNDRIVERS )
208
plD_dispatch_init_pngqt
,
209
#endif
210
#if defined ( PLD_ppmqt ) && !defined ( ENABLE_DYNDRIVERS )
211
plD_dispatch_init_ppmqt
,
212
#endif
213
#if defined ( PLD_qtwidget ) && !defined ( ENABLE_DYNDRIVERS )
214
plD_dispatch_init_qtwidget
,
215
#endif
216
#if defined ( PLD_svgqt ) && !defined ( ENABLE_DYNDRIVERS )
217
plD_dispatch_init_svgqt
,
218
#endif
219
#if defined ( PLD_tiffqt ) && !defined ( ENABLE_DYNDRIVERS )
220
plD_dispatch_init_tiffqt
,
221
#endif
222
#if defined ( PLD_svg ) && !defined ( ENABLE_DYNDRIVERS )
223
plD_dispatch_init_svg
,
224
#endif
225
#if defined ( PLD_tk ) && !defined ( ENABLE_DYNDRIVERS )
226
plD_dispatch_init_tk
,
227
#endif
228
#if defined ( PLD_tkwin ) && !defined ( ENABLE_DYNDRIVERS )
229
plD_dispatch_init_tkwin
,
230
#endif
231
#if defined ( PLD_wingcc ) && !defined ( ENABLE_DYNDRIVERS )
232
plD_dispatch_init_wingcc
,
233
#endif
234
#if defined ( PLD_wxpng ) && !defined ( ENABLE_DYNDRIVERS )
235
plD_dispatch_init_wxpng
,
236
#endif
237
#if defined ( PLD_wxwidgets ) && !defined ( ENABLE_DYNDRIVERS )
238
plD_dispatch_init_wxwidgets
,
239
#endif
240
#if defined ( PLD_xfig ) && !defined ( ENABLE_DYNDRIVERS )
241
plD_dispatch_init_xfig
,
242
#endif
243
#if defined ( PLD_xwin ) && !defined ( ENABLE_DYNDRIVERS )
244
plD_dispatch_init_xw
,
245
#endif
246
NULL
247
};
248
249
static
int
nplstaticdevices
= (
sizeof
(
static_device_initializers
) /
250
sizeof
(
PLDispatchInit
) ) - 1;
251
static
int
npldynamicdevices
= 0;
252
253
//--------------------------------------------------------------------------
254
// Stuff to support the loadable device drivers.
255
//--------------------------------------------------------------------------
256
257
#ifdef ENABLE_DYNDRIVERS
258
typedef
struct
259
{
260
char
*devnam;
261
char
*description;
262
char
*drvnam;
263
char
*tag;
264
int
drvidx;
265
} PLLoadableDevice;
266
267
typedef
struct
268
{
269
char
*drvnam;
270
lt_dlhandle
dlhand;
271
} PLLoadableDriver;
272
273
static
PLLoadableDevice *loadable_device_list;
274
static
PLLoadableDriver *loadable_driver_list;
275
276
static
int
nloadabledrivers = 0;
277
278
#endif
279
280
#endif // __PLCORE_H__
plplot_source
include
plcore.h
Generated on Wed Aug 12 2015 10:35:52 for PLplot by
1.8.1.2