PLplot  5.11.1
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros
plplot.h
Go to the documentation of this file.
1 // Macros and prototypes for the PLplot package. This header file must
2 // be included by all user codes.
3 //
4 // Note: some systems allow the Fortran & C namespaces to clobber each
5 // other. So for PLplot to work from Fortran, we do some rather nasty
6 // things to the externally callable C function names. This shouldn't
7 // affect any user programs in C as long as this file is included.
8 //
9 // Copyright (C) 1992 Maurice J. LeBrun, Geoff Furnish, Tony Richardson.
10 // Copyright (C) 2004-2015 Alan W. Irwin
11 // Copyright (C) 2004 Rafael Laboissiere
12 // Copyright (C) 2004 Andrew Ross
13 //
14 // This file is part of PLplot.
15 //
16 // PLplot is free software; you can redistribute it and/or modify
17 // it under the terms of the GNU Library General Public License as published
18 // by the Free Software Foundation; either version 2 of the License, or
19 // (at your option) any later version.
20 //
21 // PLplot is distributed in the hope that it will be useful,
22 // but WITHOUT ANY WARRANTY; without even the implied warranty of
23 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
24 // GNU Library General Public License for more details.
25 //
26 // You should have received a copy of the GNU Library General Public License
27 // along with PLplot; if not, write to the Free Software
28 // Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
29 //
30 
31 #ifndef __PLPLOT_H__
32 #define __PLPLOT_H__
33 
34 #include "plConfig.h"
35 
36 //--------------------------------------------------------------------------
37 // USING PLplot
38 //
39 // To use PLplot from C or C++, it is only necessary to
40 //
41 // #include "plplot.h"
42 //
43 // This file does all the necessary setup to make PLplot accessible to
44 // your program as documented in the manual. Additionally, this file
45 // allows you to request certain behavior by defining certain symbols
46 // before inclusion. At the moment the only one is:
47 //
48 // #define DOUBLE or..
49 // #define PL_DOUBLE
50 //
51 // This causes PLplot to use doubles instead of floats. Use the type
52 // PLFLT everywhere in your code, and it will always be the right thing.
53 //
54 // Note: most of the functions visible here begin with "pl", while all
55 // of the data types and switches begin with "PL". Eventually everything
56 // will conform to this rule in order to keep namespace pollution of the
57 // user code to a minimum. All the PLplot source files actually include
58 // "plplotP.h", which includes this file as well as all the internally-
59 // visible declarations, etc.
60 //--------------------------------------------------------------------------
61 
62 // The majority of PLplot source files require these, so..
63 // Under ANSI C, they can be included any number of times.
64 
65 #include <stdio.h>
66 #include <stdlib.h>
67 
68 //--------------------------------------------------------------------------
69 // SYSTEM IDENTIFICATION
70 //
71 // Several systems are supported directly by PLplot. In order to avoid
72 // confusion, one id macro per system is used. Since different compilers
73 // may predefine different system id macros, we need to check all the
74 // possibilities, and then set the one we will be referencing. These are:
75 //
76 // __cplusplus Any C++ compiler
77 // __unix Any Unix-like system
78 // __hpux Any HP/UX system
79 // __aix Any AIX system
80 // __linux Linux for i386
81 // (others...)
82 //
83 //--------------------------------------------------------------------------
84 
85 #ifdef unix // the old way
86 #ifndef __unix
87 #define __unix
88 #endif
89 #endif
90 
91 #if 0
92 #if defined ( __GNUC__ ) && __GNUC__ > 3
93 // If gcc 4.x, then turn off all visibility of symbols unless
94 // specified as visible using PLDLLIMPEXP.
95 //#pragma GCC visibility push(hidden)
96 // temporary until issues with above hidden can be sorted out
97  #pragma GCC visibility push(default)
98 #endif
99 #endif
100 // Make sure Unix systems define "__unix"
101 
102 #if defined ( SX ) || /* NEC Super-UX */ \
103  ( defined ( _IBMR2 ) && defined ( _AIX ) ) || /* AIX */ \
104  defined ( __hpux ) || /* HP/UX */ \
105  defined ( sun ) || /* SUN */ \
106  defined ( CRAY ) || /* Cray */ \
107  defined ( __convexc__ ) || /* CONVEX */ \
108  ( defined ( __alpha ) && defined ( __osf__ ) ) || /* DEC Alpha AXP/OSF */ \
109  defined ( __APPLE__ ) // Max OS-X
110 #ifndef __unix
111 #define __unix
112 #endif
113 #endif
114 
115 //--------------------------------------------------------------------------
116 // dll functions
117 //--------------------------------------------------------------------------
118 #include "pldll.h"
119 
120 // Macro to mark function parameters as unused.
121 // For gcc this uses the unused attribute to remove compiler warnings.
122 // For all compilers the parameter name is also mangled to prevent
123 // accidental use.
124 #ifdef PL_UNUSED
125 #elif defined ( __GNUC__ )
126 # define PL_UNUSED( x ) UNUSED_ ## x __attribute__( ( unused ) )
127 #else
128 # define PL_UNUSED( x ) UNUSED_ ## x
129 #endif
130 
131 //--------------------------------------------------------------------------
132 // Base types for PLplot
133 //
134 // Only those that are necessary for function prototypes are defined here.
135 // Notes:
136 //
137 // PLINT is typedef'd to a long by default. This is a change from some
138 // previous versions, where a int was used. However, so long as you have
139 // used type PLINT for integer array arguments as specified by the API,
140 // this change will be transparent for you.
141 //
142 // short is currently used for device page coordinates, so they are
143 // bounded by (-32767, 32767). This gives a max resolution of about 3000
144 // dpi, and improves performance in some areas over using a PLINT.
145 //
146 // PLUNICODE should be a 32-bit unsigned integer on all platforms.
147 // For now, we are using unsigned int for our Linux ix86 unicode experiments,
148 // but that doesn't guarantee 32 bits exactly on all platforms so this will
149 // be subject to change.
150 //--------------------------------------------------------------------------
151 
152 #if defined ( PL_DOUBLE ) || defined ( DOUBLE )
153 typedef double PLFLT;
154 #define PLFLT_MAX DBL_MAX
155 #define PLFLT_MIN DBL_MIN
156 #else
157 typedef float PLFLT;
158 #define PLFLT_MAX FLT_MAX
159 #define PLFLT_MIN FLT_MIN
160 #endif
161 
162 #if ( defined ( PL_HAVE_STDINT_H ) && !defined ( __cplusplus ) ) || \
163  ( defined ( __cplusplus ) && defined ( PL_HAVE_CXX_STDINT_H ) )
164 #include <stdint.h>
165 // This is apparently portable if stdint.h exists.
166 typedef uint32_t PLUINT;
167 typedef int32_t PLINT;
168 typedef int64_t PLINT64;
169 #define PLINT_MIN INT32_MIN
170 #define PLINT_MAX INT32_MAX
171 #else
172 // A reasonable back-up in case stdint.h does not exist on the platform.
173 typedef unsigned int PLUINT;
174 typedef int PLINT;
175 typedef __int64 PLINT64;
176 // for Visual C++ 2003 and later INT_MIN must be used, otherwise
177 // PLINT_MIN is unsigned and 2147483648 NOT -2147483648, see
178 // http://msdn.microsoft.com/en-us/library/4kh09110(VS.71).aspx for
179 // details
180 #if defined ( _MSC_VER ) && _MSC_VER >= 1310
181  #include <Limits.h>
182  #define PLINT_MIN INT_MIN
183 #else
184  #define PLINT_MIN -2147483648
185 #endif
186 //
187 // typedef unsigned int PLUINT;
188 // typedef int PLINT;
189 // typedef long long PLINT64;
190 //
191 #endif
192 
193 // For identifying unicode characters
195 
196 // For identifying logical (boolean) arguments
197 typedef PLINT PLBOOL;
198 
199 // For passing user data, as with X's XtPointer
200 typedef void* PLPointer;
201 
202 //--------------------------------------------------------------------------
203 // Complex data types and other good stuff
204 //--------------------------------------------------------------------------
205 
206 // Switches for escape function call.
207 // Some of these are obsolete but are retained in order to process
208 // old metafiles
209 
210 #define PLESC_SET_RGB 1 // obsolete
211 #define PLESC_ALLOC_NCOL 2 // obsolete
212 #define PLESC_SET_LPB 3 // obsolete
213 #define PLESC_EXPOSE 4 // handle window expose
214 #define PLESC_RESIZE 5 // handle window resize
215 #define PLESC_REDRAW 6 // handle window redraw
216 #define PLESC_TEXT 7 // switch to text screen
217 #define PLESC_GRAPH 8 // switch to graphics screen
218 #define PLESC_FILL 9 // fill polygon
219 #define PLESC_DI 10 // handle DI command
220 #define PLESC_FLUSH 11 // flush output
221 #define PLESC_EH 12 // handle Window events
222 #define PLESC_GETC 13 // get cursor position
223 #define PLESC_SWIN 14 // set window parameters
224 #define PLESC_DOUBLEBUFFERING 15 // configure double buffering
225 #define PLESC_XORMOD 16 // set xor mode
226 #define PLESC_SET_COMPRESSION 17 // AFR: set compression
227 #define PLESC_CLEAR 18 // RL: clear graphics region
228 #define PLESC_DASH 19 // RL: draw dashed line
229 #define PLESC_HAS_TEXT 20 // driver draws text
230 #define PLESC_IMAGE 21 // handle image
231 #define PLESC_IMAGEOPS 22 // plimage related operations
232 #define PLESC_PL2DEVCOL 23 // convert PLColor to device color
233 #define PLESC_DEV2PLCOL 24 // convert device color to PLColor
234 #define PLESC_SETBGFG 25 // set BG, FG colors
235 #define PLESC_DEVINIT 26 // alternate device initialization
236 #define PLESC_GETBACKEND 27 // get used backend of (wxWidgets) driver - no longer used
237 #define PLESC_BEGIN_TEXT 28 // get ready to draw a line of text
238 #define PLESC_TEXT_CHAR 29 // render a character of text
239 #define PLESC_CONTROL_CHAR 30 // handle a text control character (super/subscript, etc.)
240 #define PLESC_END_TEXT 31 // finish a drawing a line of text
241 #define PLESC_START_RASTERIZE 32 // start rasterized rendering
242 #define PLESC_END_RASTERIZE 33 // end rasterized rendering
243 #define PLESC_ARC 34 // render an arc
244 #define PLESC_GRADIENT 35 // render a gradient
245 #define PLESC_MODESET 36 // set drawing mode
246 #define PLESC_MODEGET 37 // get drawing mode
247 #define PLESC_FIXASPECT 38 // set or unset fixing the aspect ratio of the plot
248 #define PLESC_IMPORT_BUFFER 39 // set the contents of the buffer to a specified byte string
249 #define PLESC_APPEND_BUFFER 40 // append the given byte string to the buffer
250 #define PLESC_FLUSH_REMAINING_BUFFER 41 // flush the remaining buffer e.g. after new data was appended
251 
252 // Alternative unicode text handling control characters
253 #define PLTEXT_FONTCHANGE 0 // font change in the text stream
254 #define PLTEXT_SUPERSCRIPT 1 // superscript in the text stream
255 #define PLTEXT_SUBSCRIPT 2 // subscript in the text stream
256 #define PLTEXT_BACKCHAR 3 // back-char in the text stream
257 #define PLTEXT_OVERLINE 4 // toggle overline in the text stream
258 #define PLTEXT_UNDERLINE 5 // toggle underline in the text stream
259 
260 // image operations
261 #define ZEROW2B 1
262 #define ZEROW2D 2
263 #define ONEW2B 3
264 #define ONEW2D 4
265 
266 // Window parameter tags
267 
268 #define PLSWIN_DEVICE 1 // device coordinates
269 #define PLSWIN_WORLD 2 // world coordinates
270 
271 // Axis label tags
272 #define PL_X_AXIS 1 // The x-axis
273 #define PL_Y_AXIS 2 // The y-axis
274 #define PL_Z_AXIS 3 // The z-axis
275 
276 // PLplot Option table & support constants
277 
278 // Option-specific settings
279 
280 #define PL_OPT_ENABLED 0x0001 // Obsolete
281 #define PL_OPT_ARG 0x0002 // Option has an argment
282 #define PL_OPT_NODELETE 0x0004 // Don't delete after processing
283 #define PL_OPT_INVISIBLE 0x0008 // Make invisible
284 #define PL_OPT_DISABLED 0x0010 // Processing is disabled
285 
286 // Option-processing settings -- mutually exclusive
287 
288 #define PL_OPT_FUNC 0x0100 // Call handler function
289 #define PL_OPT_BOOL 0x0200 // Set *var = 1
290 #define PL_OPT_INT 0x0400 // Set *var = atoi(optarg)
291 #define PL_OPT_FLOAT 0x0800 // Set *var = atof(optarg)
292 #define PL_OPT_STRING 0x1000 // Set var = optarg
293 
294 // Global mode settings
295 // These override per-option settings
296 
297 #define PL_PARSE_PARTIAL 0x0000 // For backward compatibility
298 #define PL_PARSE_FULL 0x0001 // Process fully & exit if error
299 #define PL_PARSE_QUIET 0x0002 // Don't issue messages
300 #define PL_PARSE_NODELETE 0x0004 // Don't delete options after
301  // processing
302 #define PL_PARSE_SHOWALL 0x0008 // Show invisible options
303 #define PL_PARSE_OVERRIDE 0x0010 // Obsolete
304 #define PL_PARSE_NOPROGRAM 0x0020 // Program name NOT in *argv[0]..
305 #define PL_PARSE_NODASH 0x0040 // Set if leading dash NOT required
306 #define PL_PARSE_SKIP 0x0080 // Skip over unrecognized args
307 
308 // FCI (font characterization integer) related constants.
309 #define PL_FCI_MARK 0x80000000
310 #define PL_FCI_IMPOSSIBLE 0x00000000
311 #define PL_FCI_HEXDIGIT_MASK 0xf
312 #define PL_FCI_HEXPOWER_MASK 0x7
313 #define PL_FCI_HEXPOWER_IMPOSSIBLE 0xf
314 // These define hexpower values corresponding to each font attribute.
315 #define PL_FCI_FAMILY 0x0
316 #define PL_FCI_STYLE 0x1
317 #define PL_FCI_WEIGHT 0x2
318 // These are legal values for font family attribute
319 #define PL_FCI_SANS 0x0
320 #define PL_FCI_SERIF 0x1
321 #define PL_FCI_MONO 0x2
322 #define PL_FCI_SCRIPT 0x3
323 #define PL_FCI_SYMBOL 0x4
324 // These are legal values for font style attribute
325 #define PL_FCI_UPRIGHT 0x0
326 #define PL_FCI_ITALIC 0x1
327 #define PL_FCI_OBLIQUE 0x2
328 // These are legal values for font weight attribute
329 #define PL_FCI_MEDIUM 0x0
330 #define PL_FCI_BOLD 0x1
331 
332 #ifdef PL_DEPRECATED
333 
334 // Obsolete names
335 
336 #define plParseInternalOpts( a, b, c ) c_plparseopts( a, b, c )
337 #define plSetInternalOpt( a, b ) c_plsetopt( a, b )
338 
339 #endif // PL_DEPRECATED
340 
341 
342 // Option table definition
343 
344 typedef struct
345 {
346  const char *opt;
347  int ( *handler )( const char *, const char *, void * );
348  void *client_data;
349  void *var;
350  long mode;
351  const char *syntax;
352  const char *desc;
353 } PLOptionTable;
354 
355 // PLplot Graphics Input structure
356 
357 #define PL_MAXKEY 16
358 
359 //Masks for use with PLGraphicsIn::state
360 //These exactly coincide with the X11 masks
361 //from X11/X.h, however the values 1<<3 to
362 //1<<7 aparently may vary depending upon
363 //X implementation and keyboard
364 // Numerical #defines are parsed further to help determine
365 // additional files such as ../bindings/swig-support/plplotcapi.i
366 // so must #define numerical #defines with numbers rather than C operators
367 // such as <<.
368 #define PL_MASK_SHIFT 0x1 // ( 1 << 0 )
369 #define PL_MASK_CAPS 0x2 // ( 1 << 1 )
370 #define PL_MASK_CONTROL 0x4 // ( 1 << 2 )
371 #define PL_MASK_ALT 0x8 // ( 1 << 3 )
372 #define PL_MASK_NUM 0x10 // ( 1 << 4 )
373 #define PL_MASK_ALTGR 0x20 // ( 1 << 5 )
374 #define PL_MASK_WIN 0x40 // ( 1 << 6 )
375 #define PL_MASK_SCROLL 0x80 // ( 1 << 7 )
376 #define PL_MASK_BUTTON1 0x100 // ( 1 << 8 )
377 #define PL_MASK_BUTTON2 0x200 // ( 1 << 9 )
378 #define PL_MASK_BUTTON3 0x400 // ( 1 << 10 )
379 #define PL_MASK_BUTTON4 0x800 // ( 1 << 11 )
380 #define PL_MASK_BUTTON5 0x1000 // ( 1 << 12 )
381 
382 typedef struct
383 {
384  int type; // of event (CURRENTLY UNUSED)
385  unsigned int state; // key or button mask
386  unsigned int keysym; // key selected
387  unsigned int button; // mouse button selected
388  PLINT subwindow; // subwindow (alias subpage, alias subplot) number
389  char string[PL_MAXKEY]; // translated string
390  int pX, pY; // absolute device coordinates of pointer
391  PLFLT dX, dY; // relative device coordinates of pointer
392  PLFLT wX, wY; // world coordinates of pointer
393 } PLGraphicsIn;
394 
395 // Structure for describing the plot window
396 
397 #define PL_MAXWINDOWS 64 // Max number of windows/page tracked
398 
399 typedef struct
400 {
401  PLFLT dxmi, dxma, dymi, dyma; // min, max window rel dev coords
402  PLFLT wxmi, wxma, wymi, wyma; // min, max window world coords
403 } PLWindow;
404 
405 // Structure for doing display-oriented operations via escape commands
406 // May add other attributes in time
407 
408 typedef struct
409 {
410  unsigned int x, y; // upper left hand corner
411  unsigned int width, height; // window dimensions
412 } PLDisplay;
413 
414 // Macro used (in some cases) to ignore value of argument
415 // I don't plan on changing the value so you can hard-code it
416 
417 #define PL_NOTSET ( -42 )
418 
419 // See plcont.c for examples of the following
420 
421 //
422 // PLfGrid is for passing (as a pointer to the first element) an arbitrarily
423 // dimensioned array. The grid dimensions MUST be stored, with a maximum of 3
424 // dimensions assumed for now.
425 //
426 
427 typedef struct
428 {
429  const PLFLT *f;
430  PLINT nx, ny, nz;
431 } PLfGrid;
432 
433 //
434 // PLfGrid2 is for passing (as an array of pointers) a 2d function array. The
435 // grid dimensions are passed for possible bounds checking.
436 //
437 
438 typedef struct
439 {
440  PLFLT **f;
441  PLINT nx, ny;
442 } PLfGrid2;
443 
444 //
445 // NOTE: a PLfGrid3 is a good idea here but there is no way to exploit it yet
446 // so I'll leave it out for now.
447 //
448 
449 //
450 // PLcGrid is for passing (as a pointer to the first element) arbitrarily
451 // dimensioned coordinate transformation arrays. The grid dimensions MUST be
452 // stored, with a maximum of 3 dimensions assumed for now.
453 //
454 
455 typedef struct
456 {
457  PLFLT *xg, *yg, *zg;
458  PLINT nx, ny, nz;
459 } PLcGrid;
460 
461 //
462 // PLcGrid2 is for passing (as arrays of pointers) 2d coordinate
463 // transformation arrays. The grid dimensions are passed for possible bounds
464 // checking.
465 //
466 
467 typedef struct
468 {
469  PLFLT **xg, **yg, **zg;
470  PLINT nx, ny;
471 } PLcGrid2;
472 
473 //
474 // NOTE: a PLcGrid3 is a good idea here but there is no way to exploit it yet
475 // so I'll leave it out for now.
476 //
477 
478 // PLColor is the usual way to pass an rgb color value.
479 
480 typedef struct
481 {
482  unsigned char r; // red
483  unsigned char g; // green
484  unsigned char b; // blue
485  PLFLT a; // alpha (or transparency)
486  const char *name;
487 } PLColor;
488 
489 // PLControlPt is how cmap1 control points are represented.
490 
491 typedef struct
492 {
493  PLFLT h; // hue
494  PLFLT l; // lightness
495  PLFLT s; // saturation
496  PLFLT p; // position
497  PLFLT a; // alpha (or transparency)
498  int alt_hue_path; // if set, interpolate through h=0
499 } PLControlPt;
500 
501 // A PLBufferingCB is a control block for interacting with devices
502 // that support double buffering.
503 
504 typedef struct
505 {
508 } PLBufferingCB;
509 
510 #define PLESC_DOUBLEBUFFERING_ENABLE 1
511 #define PLESC_DOUBLEBUFFERING_DISABLE 2
512 #define PLESC_DOUBLEBUFFERING_QUERY 3
513 
514 typedef struct
515 {
520 
521 //
522 // typedefs for access methods for arbitrary (i.e. user defined) data storage
523 //
524 
525 //
526 // This type of struct holds pointers to functions that are used to get, set,
527 // modify, and test individual 2-D data points referenced by a PLPointer. How
528 // the PLPointer is used depends entirely on the functions that implement the
529 // various operations. Certain common data representations have predefined
530 // instances of this structure prepopulated with pointers to predefined
531 // functions.
532 //
533 
534 typedef struct
535 {
536  PLFLT ( *get )( PLPointer p, PLINT ix, PLINT iy );
537  PLFLT ( *set )( PLPointer p, PLINT ix, PLINT iy, PLFLT z );
538  PLFLT ( *add )( PLPointer p, PLINT ix, PLINT iy, PLFLT z );
539  PLFLT ( *sub )( PLPointer p, PLINT ix, PLINT iy, PLFLT z );
540  PLFLT ( *mul )( PLPointer p, PLINT ix, PLINT iy, PLFLT z );
541  PLFLT ( *div )( PLPointer p, PLINT ix, PLINT iy, PLFLT z );
542  PLINT ( *is_nan )( PLPointer p, PLINT ix, PLINT iy );
543  void ( *minmax )( PLPointer p, PLINT nx, PLINT ny, PLFLT *zmim, PLFLT *zmax );
544  //
545  // f2eval is backwards compatible signature for "f2eval" functions that
546  // existed before plf2ops "operator function families" were used.
547  //
548  PLFLT ( *f2eval )( PLINT ix, PLINT iy, PLPointer p );
549 } plf2ops_t;
550 
551 //
552 // A typedef to facilitate declaration of a pointer to a plfops_t structure.
553 //
554 
555 typedef plf2ops_t * PLF2OPS;
556 
557 //
558 // A struct to pass a buffer around
559 //
560 typedef struct
561 {
562  size_t size;
563  void * buffer;
564 } plbuffer;
565 
566 //--------------------------------------------------------------------------
567 // BRAINDEAD-ness
568 //
569 // Some systems allow the Fortran & C namespaces to clobber each other.
570 // For PLplot to work from Fortran on these systems, we must name the the
571 // externally callable C functions something other than their Fortran entry
572 // names. In order to make this as easy as possible for the casual user,
573 // yet reversible to those who abhor my solution, I have done the
574 // following:
575 //
576 // The C-language bindings are actually different from those
577 // described in the manual. Macros are used to convert the
578 // documented names to the names used in this package. The
579 // user MUST include plplot.h in order to get the name
580 // redefinition correct.
581 //
582 // Sorry to have to resort to such an ugly kludge, but it is really the
583 // best way to handle the situation at present. If all available
584 // compilers offer a way to correct this stupidity, then perhaps we can
585 // eventually reverse it.
586 //
587 // If you feel like screaming at someone (I sure do), please
588 // direct it at your nearest system vendor who has a braindead shared
589 // C/Fortran namespace. Some vendors do offer compiler switches that
590 // change the object names, but then everybody who wants to use the
591 // package must throw these same switches, leading to no end of trouble.
592 //
593 // Note that this definition should not cause any noticable effects except
594 // when debugging PLplot calls, in which case you will need to remember
595 // the real function names (same as before but with a 'c_' prepended).
596 //
597 // Also, to avoid macro conflicts, the BRAINDEAD part must not be expanded
598 // in the stub routines.
599 //
600 // Aside: the reason why a shared Fortran/C namespace is deserving of the
601 // BRAINDEAD characterization is that it completely precludes the the kind
602 // of universal API that is attempted (more or less) with PLplot, without
603 // Herculean efforts (e.g. remapping all of the C bindings by macros as
604 // done here). The vendors of such a scheme, in order to allow a SINGLE
605 // type of argument to be passed transparently between C and Fortran,
606 // namely, a pointer to a conformable data type, have slammed the door on
607 // insertion of stub routines to handle the conversions needed for other
608 // data types. Intelligent linkers could solve this problem, but these are
609 // not anywhere close to becoming universal. So meanwhile, one must live
610 // with either stub routines for the inevitable data conversions, or a
611 // different API. The former is what is used here, but is made far more
612 // difficult in a braindead shared Fortran/C namespace.
613 //--------------------------------------------------------------------------
614 
615 #ifndef BRAINDEAD
616 #define BRAINDEAD
617 #endif
618 
619 #ifdef BRAINDEAD
620 
621 #ifndef __PLSTUBS_H__ // i.e. do not expand this in the stubs
622 
623 #define pl_setcontlabelformat c_pl_setcontlabelformat
624 #define pl_setcontlabelparam c_pl_setcontlabelparam
625 #define pladv c_pladv
626 #define plarc c_plarc
627 #define plaxes c_plaxes
628 #define plbin c_plbin
629 #define plbop c_plbop
630 #define plbox c_plbox
631 #define plbox3 c_plbox3
632 #define plbtime c_plbtime
633 #define plcalc_world c_plcalc_world
634 #define plclear c_plclear
635 #define plcol0 c_plcol0
636 #define plcol1 c_plcol1
637 #define plcolorbar c_plcolorbar
638 #define plconfigtime c_plconfigtime
639 #define plcont c_plcont
640 #define plcpstrm c_plcpstrm
641 #define plctime c_plctime
642 #define plend c_plend
643 #define plend1 c_plend1
644 #define plenv c_plenv
645 #define plenv0 c_plenv0
646 #define pleop c_pleop
647 #define plerrx c_plerrx
648 #define plerry c_plerry
649 #define plfamadv c_plfamadv
650 #define plfill c_plfill
651 #define plfill3 c_plfill3
652 #define plflush c_plflush
653 #define plfont c_plfont
654 #define plfontld c_plfontld
655 #define plgchr c_plgchr
656 #define plgcol0 c_plgcol0
657 #define plgcol0a c_plgcol0a
658 #define plgcolbg c_plgcolbg
659 #define plgcolbga c_plgcolbga
660 #define plgcompression c_plgcompression
661 #define plgdev c_plgdev
662 #define plgdidev c_plgdidev
663 #define plgdiori c_plgdiori
664 #define plgdiplt c_plgdiplt
665 #define plgdrawmode c_plgdrawmode
666 #define plgfam c_plgfam
667 #define plgfci c_plgfci
668 #define plgfnam c_plgfnam
669 #define plgfont c_plgfont
670 #define plglevel c_plglevel
671 #define plgpage c_plgpage
672 #define plgra c_plgra
673 #define plgradient c_plgradient
674 #define plgriddata c_plgriddata
675 #define plgspa c_plgspa
676 #define plgstrm c_plgstrm
677 #define plgver c_plgver
678 #define plgvpd c_plgvpd
679 #define plgvpw c_plgvpw
680 #define plgxax c_plgxax
681 #define plgyax c_plgyax
682 #define plgzax c_plgzax
683 #define plhist c_plhist
684 #ifdef PL_DEPRECATED
685 #define plhls c_plhls
686 #endif
687 #define plhlsrgb c_plhlsrgb
688 #define plimage c_plimage
689 #define plimagefr c_plimagefr
690 #define plinit c_plinit
691 #define pljoin c_pljoin
692 #define pllab c_pllab
693 #define pllegend c_pllegend
694 #define pllightsource c_pllightsource
695 #define plline c_plline
696 #define plpath c_plpath
697 #define plline3 c_plline3
698 #define pllsty c_pllsty
699 #define plmap c_plmap
700 #define plmapline c_plmapline
701 #define plmapstring c_plmapstring
702 #define plmaptex c_plmaptex
703 #define plmapfill c_plmapfill
704 #define plmeridians c_plmeridians
705 #define plmesh c_plmesh
706 #define plmeshc c_plmeshc
707 #define plmkstrm c_plmkstrm
708 #define plmtex c_plmtex
709 #define plmtex3 c_plmtex3
710 #define plot3d c_plot3d
711 #define plot3dc c_plot3dc
712 #define plot3dcl c_plot3dcl
713 #define plparseopts c_plparseopts
714 #define plpat c_plpat
715 #define plpoin c_plpoin
716 #define plpoin3 c_plpoin3
717 #define plpoly3 c_plpoly3
718 #define plprec c_plprec
719 #define plpsty c_plpsty
720 #define plptex c_plptex
721 #define plptex3 c_plptex3
722 #define plrandd c_plrandd
723 #define plreplot c_plreplot
724 #ifdef PL_DEPRECATED
725 #define plrgb c_plrgb
726 #define plrgb1 c_plrgb1
727 #endif
728 #define plrgbhls c_plrgbhls
729 #define plschr c_plschr
730 #define plscmap0 c_plscmap0
731 #define plscmap0a c_plscmap0a
732 #define plscmap0n c_plscmap0n
733 #define plscmap1 c_plscmap1
734 #define plscmap1a c_plscmap1a
735 #define plscmap1l c_plscmap1l
736 #define plscmap1la c_plscmap1la
737 #define plscmap1n c_plscmap1n
738 #define plscmap1_range c_plscmap1_range
739 #define plgcmap1_range c_plgcmap1_range
740 #define plscol0 c_plscol0
741 #define plscol0a c_plscol0a
742 #define plscolbg c_plscolbg
743 #define plscolbga c_plscolbga
744 #define plscolor c_plscolor
745 #define plscompression c_plscompression
746 #define plsdev c_plsdev
747 #define plsdidev c_plsdidev
748 #define plsdimap c_plsdimap
749 #define plsdiori c_plsdiori
750 #define plsdiplt c_plsdiplt
751 #define plsdiplz c_plsdiplz
752 #define plseed c_plseed
753 #define plsesc c_plsesc
754 #define plsetopt c_plsetopt
755 #define plsfam c_plsfam
756 #define plsfci c_plsfci
757 #define plsfnam c_plsfnam
758 #define plsfont c_plsfont
759 #define plshade c_plshade
760 #define plshade1 c_plshade1
761 #define plshades c_plshades
762 #define plslabelfunc c_plslabelfunc
763 #define plsmaj c_plsmaj
764 #define plsmem c_plsmem
765 #define plsmema c_plsmema
766 #define plsmin c_plsmin
767 #define plsdrawmode c_plsdrawmode
768 #define plsori c_plsori
769 #define plspage c_plspage
770 #define plspal0 c_plspal0
771 #define plspal1 c_plspal1
772 #define plspause c_plspause
773 #define plsstrm c_plsstrm
774 #define plssub c_plssub
775 #define plssym c_plssym
776 #define plstar c_plstar
777 #define plstart c_plstart
778 #define plstransform c_plstransform
779 #define plstring c_plstring
780 #define plstring3 c_plstring3
781 #define plstripa c_plstripa
782 #define plstripc c_plstripc
783 #define plstripd c_plstripd
784 #define plstyl c_plstyl
785 #define plsurf3d c_plsurf3d
786 #define plsurf3dl c_plsurf3dl
787 #define plsvect c_plsvect
788 #define plsvpa c_plsvpa
789 #define plsxax c_plsxax
790 #define plsyax c_plsyax
791 #define plsym c_plsym
792 #define plszax c_plszax
793 #define pltext c_pltext
794 #define pltimefmt c_pltimefmt
795 #define plvasp c_plvasp
796 #define plvect c_plvect
797 #define plvpas c_plvpas
798 #define plvpor c_plvpor
799 #define plvsta c_plvsta
800 #define plw3d c_plw3d
801 #ifdef PL_DEPRECATED
802 #define plwid c_plwid
803 #endif
804 #define plwidth c_plwidth
805 #define plwind c_plwind
806 #define plxormod c_plxormod
807 
808 #endif // __PLSTUBS_H__
809 
810 #endif // BRAINDEAD
811 
812 // Redefine some old function names for backward compatibility
813 
814 #ifndef __PLSTUBS_H__ // i.e. do not expand this in the stubs
815 
816 #ifdef PL_DEPRECATED
817 
818 #define plclr pleop
819 #define plpage plbop
820 #define plcol plcol0
821 #define plcontf plfcont
822 // Comment out these as they can upset the C++ bindings since the C++
823 // bindings use the function names without the pl prefix.
824 //#define Alloc2dGrid plAlloc2dGrid
825 //#define Free2dGrid plFree2dGrid
826 //#define MinMax2dGrid plMinMax2dGrid
827 #define plP_gvpd plgvpd
828 #define plP_gvpw plgvpw
829 #define plotsh3d( x, y, z, nx, ny, opt ) plsurf3d( x, y, z, nx, ny, opt, NULL, 0 )
830 
831 #endif // PL_DEPRECATED
832 
833 #endif // __PLSTUBS_H__
834 
835 //--------------------------------------------------------------------------
836 // Function Prototypes
837 //--------------------------------------------------------------------------
838 
839 #ifdef __cplusplus
840 extern "C" {
841 #endif
842 
843 // All void types
844 
845 // C routines callable from stub routines come first
846 
847 // set the format of the contour labels
848 
849 PLDLLIMPEXP void
850 c_pl_setcontlabelformat( PLINT lexp, PLINT sigdig );
851 
852 // set offset and spacing of contour labels
853 
854 PLDLLIMPEXP void
855 c_pl_setcontlabelparam( PLFLT offset, PLFLT size, PLFLT spacing, PLINT active );
856 
857 // Advance to subpage "page", or to the next one if "page" = 0.
858 
859 PLDLLIMPEXP void
860 c_pladv( PLINT page );
861 
862 // Plot an arc
863 
864 PLDLLIMPEXP void
865 c_plarc( PLFLT x, PLFLT y, PLFLT a, PLFLT b, PLFLT angle1, PLFLT angle2,
866  PLFLT rotate, PLBOOL fill );
867 
868 // This functions similarly to plbox() except that the origin of the axes
869 // is placed at the user-specified point (x0, y0).
870 
871 PLDLLIMPEXP void
872 c_plaxes( PLFLT x0, PLFLT y0, const char *xopt, PLFLT xtick, PLINT nxsub,
873  const char *yopt, PLFLT ytick, PLINT nysub );
874 
875 // Plot a histogram using x to store data values and y to store frequencies
876 
877 // Flags for plbin() - opt argument
878 #define PL_BIN_DEFAULT 0x0
879 #define PL_BIN_CENTRED 0x1
880 #define PL_BIN_NOEXPAND 0x2
881 #define PL_BIN_NOEMPTY 0x4
882 
883 PLDLLIMPEXP void
884 c_plbin( PLINT nbin, const PLFLT *x, const PLFLT *y, PLINT opt );
885 
886 // Calculate broken-down time from continuous time for current stream.
887 PLDLLIMPEXP void
888 c_plbtime( PLINT *year, PLINT *month, PLINT *day, PLINT *hour, PLINT *min, PLFLT *sec, PLFLT ctime );
889 
890 // Start new page. Should only be used with pleop().
891 
892 PLDLLIMPEXP void
893 c_plbop( void );
894 
895 // This draws a box around the current viewport.
896 
897 PLDLLIMPEXP void
898 c_plbox( const char *xopt, PLFLT xtick, PLINT nxsub,
899  const char *yopt, PLFLT ytick, PLINT nysub );
900 
901 // This is the 3-d analogue of plbox().
902 
903 PLDLLIMPEXP void
904 c_plbox3( const char *xopt, const char *xlabel, PLFLT xtick, PLINT nxsub,
905  const char *yopt, const char *ylabel, PLFLT ytick, PLINT nysub,
906  const char *zopt, const char *zlabel, PLFLT ztick, PLINT nzsub );
907 
908 // Calculate world coordinates and subpage from relative device coordinates.
909 
910 PLDLLIMPEXP void
911 c_plcalc_world( PLFLT rx, PLFLT ry, PLFLT *wx, PLFLT *wy, PLINT *window );
912 
913 // Clear current subpage.
914 
915 PLDLLIMPEXP void
916 c_plclear( void );
917 
918 // Set color, map 0. Argument is integer between 0 and 15.
919 
920 PLDLLIMPEXP void
921 c_plcol0( PLINT icol0 );
922 
923 // Set color, map 1. Argument is a float between 0. and 1.
924 
925 PLDLLIMPEXP void
926 c_plcol1( PLFLT col1 );
927 
928 // Configure transformation between continuous and broken-down time (and
929 // vice versa) for current stream.
930 PLDLLIMPEXP void
931 c_plconfigtime( PLFLT scale, PLFLT offset1, PLFLT offset2, PLINT ccontrol, PLBOOL ifbtime_offset, PLINT year, PLINT month, PLINT day, PLINT hour, PLINT min, PLFLT sec );
932 
933 // Draws a contour plot from data in f(nx,ny). Is just a front-end to
934 // plfcont, with a particular choice for f2eval and f2eval_data.
935 //
936 
937 PLDLLIMPEXP void
938 c_plcont( const PLFLT * const *f, PLINT nx, PLINT ny, PLINT kx, PLINT lx,
939  PLINT ky, PLINT ly, const PLFLT *clevel, PLINT nlevel,
940  void ( *pltr )( PLFLT, PLFLT, PLFLT *, PLFLT *, PLPointer ),
941  PLPointer pltr_data );
942 
943 // Draws a contour plot using the function evaluator f2eval and data stored
944 // by way of the f2eval_data pointer. This allows arbitrary organizations
945 // of 2d array data to be used.
946 //
947 
948 PLDLLIMPEXP void
949 plfcont( PLFLT ( *f2eval )( PLINT, PLINT, PLPointer ),
950  PLPointer f2eval_data,
951  PLINT nx, PLINT ny, PLINT kx, PLINT lx,
952  PLINT ky, PLINT ly, const PLFLT *clevel, PLINT nlevel,
953  void ( *pltr )( PLFLT, PLFLT, PLFLT *, PLFLT *, PLPointer ),
954  PLPointer pltr_data );
955 
956 // Copies state parameters from the reference stream to the current stream.
957 
958 PLDLLIMPEXP void
959 c_plcpstrm( PLINT iplsr, PLBOOL flags );
960 
961 // Calculate continuous time from broken-down time for current stream.
962 PLDLLIMPEXP void
963 c_plctime( PLINT year, PLINT month, PLINT day, PLINT hour, PLINT min, PLFLT sec, PLFLT *ctime );
964 
965 // Converts input values from relative device coordinates to relative plot
966 // coordinates.
967 
968 PLDLLIMPEXP void
970 
971 // Converts input values from relative plot coordinates to relative
972 // device coordinates.
973 
974 PLDLLIMPEXP void
976 
977 // End a plotting session for all open streams.
978 
979 PLDLLIMPEXP void
980 c_plend( void );
981 
982 // End a plotting session for the current stream only.
983 
984 PLDLLIMPEXP void
985 c_plend1( void );
986 
987 // Simple interface for defining viewport and window.
988 
989 PLDLLIMPEXP void
991  PLINT just, PLINT axis );
992 
993 
994 // similar to plenv() above, but in multiplot mode does not advance the subpage,
995 // instead the current subpage is cleared
996 
997 PLDLLIMPEXP void
999  PLINT just, PLINT axis );
1000 
1001 // End current page. Should only be used with plbop().
1002 
1003 PLDLLIMPEXP void
1004 c_pleop( void );
1005 
1006 // Plot horizontal error bars (xmin(i),y(i)) to (xmax(i),y(i))
1007 
1008 PLDLLIMPEXP void
1009 c_plerrx( PLINT n, const PLFLT *xmin, const PLFLT *xmax, const PLFLT *y );
1010 
1011 // Plot vertical error bars (x,ymin(i)) to (x(i),ymax(i))
1012 
1013 PLDLLIMPEXP void
1014 c_plerry( PLINT n, const PLFLT *x, const PLFLT *ymin, const PLFLT *ymax );
1015 
1016 // Advance to the next family file on the next new page
1017 
1018 PLDLLIMPEXP void
1019 c_plfamadv( void );
1020 
1021 // Pattern fills the polygon bounded by the input points.
1022 
1023 PLDLLIMPEXP void
1024 c_plfill( PLINT n, const PLFLT *x, const PLFLT *y );
1025 
1026 // Pattern fills the 3d polygon bounded by the input points.
1027 
1028 PLDLLIMPEXP void
1029 c_plfill3( PLINT n, const PLFLT *x, const PLFLT *y, const PLFLT *z );
1030 
1031 // Flushes the output stream. Use sparingly, if at all.
1032 
1033 PLDLLIMPEXP void
1034 c_plflush( void );
1035 
1036 // Sets the global font flag to 'ifont'.
1037 
1038 PLDLLIMPEXP void
1039 c_plfont( PLINT ifont );
1040 
1041 // Load specified font set.
1042 
1043 PLDLLIMPEXP void
1044 c_plfontld( PLINT fnt );
1045 
1046 // Get character default height and current (scaled) height
1047 
1048 PLDLLIMPEXP void
1049 c_plgchr( PLFLT *p_def, PLFLT *p_ht );
1050 
1051 // Returns 8 bit RGB values for given color from color map 0
1052 
1053 PLDLLIMPEXP void
1054 c_plgcol0( PLINT icol0, PLINT *r, PLINT *g, PLINT *b );
1055 
1056 // Returns 8 bit RGB values for given color from color map 0 and alpha value
1057 
1058 PLDLLIMPEXP void
1059 c_plgcol0a( PLINT icol0, PLINT *r, PLINT *g, PLINT *b, PLFLT *alpha );
1060 
1061 // Returns the background color by 8 bit RGB value
1062 
1063 PLDLLIMPEXP void
1064 c_plgcolbg( PLINT *r, PLINT *g, PLINT *b );
1065 
1066 // Returns the background color by 8 bit RGB value and alpha value
1067 
1068 PLDLLIMPEXP void
1069 c_plgcolbga( PLINT *r, PLINT *g, PLINT *b, PLFLT *alpha );
1070 
1071 // Returns the current compression setting
1072 
1073 PLDLLIMPEXP void
1074 c_plgcompression( PLINT *compression );
1075 
1076 // Get the current device (keyword) name
1077 
1078 PLDLLIMPEXP void
1079 c_plgdev( char *p_dev );
1080 
1081 // Retrieve current window into device space
1082 
1083 PLDLLIMPEXP void
1084 c_plgdidev( PLFLT *p_mar, PLFLT *p_aspect, PLFLT *p_jx, PLFLT *p_jy );
1085 
1086 // Get plot orientation
1087 
1088 PLDLLIMPEXP void
1089 c_plgdiori( PLFLT *p_rot );
1090 
1091 // Retrieve current window into plot space
1092 
1093 PLDLLIMPEXP void
1094 c_plgdiplt( PLFLT *p_xmin, PLFLT *p_ymin, PLFLT *p_xmax, PLFLT *p_ymax );
1095 
1096 // Get the drawing mode
1097 
1099 c_plgdrawmode( void );
1100 
1101 // Get FCI (font characterization integer)
1102 
1103 PLDLLIMPEXP void
1104 c_plgfci( PLUNICODE *p_fci );
1105 
1106 // Get family file parameters
1107 
1108 PLDLLIMPEXP void
1109 c_plgfam( PLINT *p_fam, PLINT *p_num, PLINT *p_bmax );
1110 
1111 // Get the (current) output file name. Must be preallocated to >80 bytes
1112 
1113 PLDLLIMPEXP void
1114 c_plgfnam( char *fnam );
1115 
1116 // Get the current font family, style and weight
1117 
1118 PLDLLIMPEXP void
1119 c_plgfont( PLINT *p_family, PLINT *p_style, PLINT *p_weight );
1120 
1121 // Get the (current) run level.
1122 
1123 PLDLLIMPEXP void
1124 c_plglevel( PLINT *p_level );
1125 
1126 // Get output device parameters.
1127 
1128 PLDLLIMPEXP void
1129 c_plgpage( PLFLT *p_xp, PLFLT *p_yp,
1130  PLINT *p_xleng, PLINT *p_yleng, PLINT *p_xoff, PLINT *p_yoff );
1131 
1132 // Switches to graphics screen.
1133 
1134 PLDLLIMPEXP void
1135 c_plgra( void );
1136 
1137 // Draw gradient in polygon.
1138 
1139 PLDLLIMPEXP void
1140 c_plgradient( PLINT n, const PLFLT *x, const PLFLT *y, PLFLT angle );
1141 
1142 // grid irregularly sampled data
1143 
1144 PLDLLIMPEXP void
1145 c_plgriddata( const PLFLT *x, const PLFLT *y, const PLFLT *z, PLINT npts,
1146  const PLFLT *xg, PLINT nptsx, const PLFLT *yg, PLINT nptsy,
1147  PLFLT **zg, PLINT type, PLFLT data );
1148 
1149 PLDLLIMPEXP void
1150 plfgriddata( const PLFLT *x, const PLFLT *y, const PLFLT *z, PLINT npts,
1151  const PLFLT *xg, PLINT nptsx, const PLFLT *yg, PLINT nptsy,
1152  PLF2OPS zops, PLPointer zgp, PLINT type, PLFLT data );
1153 
1154 // type of gridding algorithm for plgriddata()
1155 
1156 #define GRID_CSA 1 // Bivariate Cubic Spline approximation
1157 #define GRID_DTLI 2 // Delaunay Triangulation Linear Interpolation
1158 #define GRID_NNI 3 // Natural Neighbors Interpolation
1159 #define GRID_NNIDW 4 // Nearest Neighbors Inverse Distance Weighted
1160 #define GRID_NNLI 5 // Nearest Neighbors Linear Interpolation
1161 #define GRID_NNAIDW 6 // Nearest Neighbors Around Inverse Distance Weighted
1162 
1163 // Get subpage boundaries in absolute coordinates
1164 
1165 PLDLLIMPEXP void
1167 
1168 // Get current stream number.
1169 
1170 PLDLLIMPEXP void
1171 c_plgstrm( PLINT *p_strm );
1172 
1173 // Get the current library version number
1174 
1175 PLDLLIMPEXP void
1176 c_plgver( char *p_ver );
1177 
1178 // Get viewport boundaries in normalized device coordinates
1179 
1180 PLDLLIMPEXP void
1181 c_plgvpd( PLFLT *p_xmin, PLFLT *p_xmax, PLFLT *p_ymin, PLFLT *p_ymax );
1182 
1183 // Get viewport boundaries in world coordinates
1184 
1185 PLDLLIMPEXP void
1186 c_plgvpw( PLFLT *p_xmin, PLFLT *p_xmax, PLFLT *p_ymin, PLFLT *p_ymax );
1187 
1188 // Get x axis labeling parameters
1189 
1190 PLDLLIMPEXP void
1191 c_plgxax( PLINT *p_digmax, PLINT *p_digits );
1192 
1193 // Get y axis labeling parameters
1194 
1195 PLDLLIMPEXP void
1196 c_plgyax( PLINT *p_digmax, PLINT *p_digits );
1197 
1198 // Get z axis labeling parameters
1199 
1200 PLDLLIMPEXP void
1201 c_plgzax( PLINT *p_digmax, PLINT *p_digits );
1202 
1203 // Draws a histogram of n values of a variable in array data[0..n-1]
1204 
1205 // Flags for plhist() - opt argument; note: some flags are passed to
1206 // plbin() for the actual plotting
1207 #define PL_HIST_DEFAULT 0x00
1208 #define PL_HIST_NOSCALING 0x01
1209 #define PL_HIST_IGNORE_OUTLIERS 0x02
1210 #define PL_HIST_NOEXPAND 0x08
1211 #define PL_HIST_NOEMPTY 0x10
1212 
1213 PLDLLIMPEXP void
1214 c_plhist( PLINT n, const PLFLT *data, PLFLT datmin, PLFLT datmax,
1215  PLINT nbin, PLINT opt );
1216 
1217 // Functions for converting between HLS and RGB color space
1218 
1219 PLDLLIMPEXP void
1220 c_plhlsrgb( PLFLT h, PLFLT l, PLFLT s, PLFLT *p_r, PLFLT *p_g, PLFLT *p_b );
1221 
1222 // Initializes PLplot, using preset or default options
1223 
1224 PLDLLIMPEXP void
1225 c_plinit( void );
1226 
1227 // Draws a line segment from (x1, y1) to (x2, y2).
1228 
1229 PLDLLIMPEXP void
1230 c_pljoin( PLFLT x1, PLFLT y1, PLFLT x2, PLFLT y2 );
1231 
1232 // Simple routine for labelling graphs.
1233 
1234 PLDLLIMPEXP void
1235 c_pllab( const char *xlabel, const char *ylabel, const char *tlabel );
1236 
1237 //flags used for position argument of both pllegend and plcolorbar
1238 #define PL_POSITION_LEFT 0x1
1239 #define PL_POSITION_RIGHT 0x2
1240 #define PL_POSITION_TOP 0x4
1241 #define PL_POSITION_BOTTOM 0x8
1242 #define PL_POSITION_INSIDE 0x10
1243 #define PL_POSITION_OUTSIDE 0x20
1244 #define PL_POSITION_VIEWPORT 0x40
1245 #define PL_POSITION_SUBPAGE 0x80
1246 
1247 // Flags for pllegend.
1248 #define PL_LEGEND_NONE 0x1
1249 #define PL_LEGEND_COLOR_BOX 0x2
1250 #define PL_LEGEND_LINE 0x4
1251 #define PL_LEGEND_SYMBOL 0x8
1252 #define PL_LEGEND_TEXT_LEFT 0x10
1253 #define PL_LEGEND_BACKGROUND 0x20
1254 #define PL_LEGEND_BOUNDING_BOX 0x40
1255 #define PL_LEGEND_ROW_MAJOR 0x80
1256 
1257 // Flags for plcolorbar
1258 #define PL_COLORBAR_LABEL_LEFT 0x1
1259 #define PL_COLORBAR_LABEL_RIGHT 0x2
1260 #define PL_COLORBAR_LABEL_TOP 0x4
1261 #define PL_COLORBAR_LABEL_BOTTOM 0x8
1262 #define PL_COLORBAR_IMAGE 0x10
1263 #define PL_COLORBAR_SHADE 0x20
1264 #define PL_COLORBAR_GRADIENT 0x40
1265 #define PL_COLORBAR_CAP_NONE 0x80
1266 #define PL_COLORBAR_CAP_LOW 0x100
1267 #define PL_COLORBAR_CAP_HIGH 0x200
1268 #define PL_COLORBAR_SHADE_LABEL 0x400
1269 #define PL_COLORBAR_ORIENT_RIGHT 0x800
1270 #define PL_COLORBAR_ORIENT_TOP 0x1000
1271 #define PL_COLORBAR_ORIENT_LEFT 0x2000
1272 #define PL_COLORBAR_ORIENT_BOTTOM 0x4000
1273 #define PL_COLORBAR_BACKGROUND 0x8000
1274 #define PL_COLORBAR_BOUNDING_BOX 0x10000
1275 
1276 // Flags for drawing mode
1277 #define PL_DRAWMODE_UNKNOWN 0x0
1278 #define PL_DRAWMODE_DEFAULT 0x1
1279 #define PL_DRAWMODE_REPLACE 0x2
1280 #define PL_DRAWMODE_XOR 0x4
1281 
1282 // Routine for drawing discrete line, symbol, or cmap0 legends
1283 PLDLLIMPEXP void
1284 c_pllegend( PLFLT *p_legend_width, PLFLT *p_legend_height,
1285  PLINT opt, PLINT position, PLFLT x, PLFLT y, PLFLT plot_width,
1286  PLINT bg_color, PLINT bb_color, PLINT bb_style,
1287  PLINT nrow, PLINT ncolumn,
1288  PLINT nlegend, const PLINT *opt_array,
1289  PLFLT text_offset, PLFLT text_scale, PLFLT text_spacing,
1290  PLFLT text_justification,
1291  const PLINT *text_colors, const char * const *text,
1292  const PLINT *box_colors, const PLINT *box_patterns,
1293  const PLFLT *box_scales, const PLFLT *box_line_widths,
1294  const PLINT *line_colors, const PLINT *line_styles,
1295  const PLFLT *line_widths,
1296  const PLINT *symbol_colors, const PLFLT *symbol_scales,
1297  const PLINT *symbol_numbers, const char * const *symbols );
1298 
1299 // Routine for drawing continous colour legends
1300 PLDLLIMPEXP void
1301 c_plcolorbar( PLFLT *p_colorbar_width, PLFLT *p_colorbar_height,
1302  PLINT opt, PLINT position, PLFLT x, PLFLT y,
1303  PLFLT x_length, PLFLT y_length,
1304  PLINT bg_color, PLINT bb_color, PLINT bb_style,
1305  PLFLT low_cap_color, PLFLT high_cap_color,
1306  PLINT cont_color, PLFLT cont_width,
1307  PLINT n_labels, const PLINT *label_opts, const char * const *labels,
1308  PLINT n_axes, const char * const * axis_opts,
1309  const PLFLT *ticks, const PLINT *sub_ticks,
1310  const PLINT *n_values, const PLFLT * const *values );
1311 
1312 // Sets position of the light source
1313 PLDLLIMPEXP void
1314 c_pllightsource( PLFLT x, PLFLT y, PLFLT z );
1315 
1316 // Draws line segments connecting a series of points.
1317 
1318 PLDLLIMPEXP void
1319 c_plline( PLINT n, const PLFLT *x, const PLFLT *y );
1320 
1321 // Draws a line in 3 space.
1322 
1323 PLDLLIMPEXP void
1324 c_plline3( PLINT n, const PLFLT *x, const PLFLT *y, const PLFLT *z );
1325 
1326 // Set line style.
1327 
1328 PLDLLIMPEXP void
1329 c_pllsty( PLINT lin );
1330 
1331 // Plot continental outline in world coordinates
1332 
1333 PLDLLIMPEXP void
1334 c_plmap( void ( *mapform )( PLINT, PLFLT *, PLFLT * ), const char *name,
1335  PLFLT minx, PLFLT maxx, PLFLT miny, PLFLT maxy );
1336 
1337 // Plot map outlines
1338 
1339 PLDLLIMPEXP void
1340 c_plmapline( void ( *mapform )( PLINT, PLFLT *, PLFLT * ), const char *name,
1341  PLFLT minx, PLFLT maxx, PLFLT miny, PLFLT maxy,
1342  const PLINT *plotentries, PLINT nplotentries );
1343 
1344 // Plot map points
1345 
1346 PLDLLIMPEXP void
1347 c_plmapstring( void ( *mapform )( PLINT, PLFLT *, PLFLT * ),
1348  const char *name, const char *string,
1349  PLFLT minx, PLFLT maxx, PLFLT miny, PLFLT maxy,
1350  const PLINT *plotentries, PLINT nplotentries );
1351 
1352 // Plot map text
1353 
1354 PLDLLIMPEXP void
1355 c_plmaptex( void ( *mapform )( PLINT, PLFLT *, PLFLT * ),
1356  const char *name, PLFLT dx, PLFLT dy, PLFLT just, const char *text,
1357  PLFLT minx, PLFLT maxx, PLFLT miny, PLFLT maxy,
1358  PLINT plotentry );
1359 
1360 // Plot map fills
1361 
1362 PLDLLIMPEXP void
1363 c_plmapfill( void ( *mapform )( PLINT, PLFLT *, PLFLT * ),
1364  const char *name, PLFLT minx, PLFLT maxx, PLFLT miny, PLFLT maxy,
1365  const PLINT *plotentries, PLINT nplotentries );
1366 
1367 // Plot the latitudes and longitudes on the background.
1368 
1369 PLDLLIMPEXP void
1370 c_plmeridians( void ( *mapform )( PLINT, PLFLT *, PLFLT * ),
1371  PLFLT dlong, PLFLT dlat,
1372  PLFLT minlong, PLFLT maxlong, PLFLT minlat, PLFLT maxlat );
1373 
1374 // Plots a mesh representation of the function z[x][y].
1375 
1376 PLDLLIMPEXP void
1377 c_plmesh( const PLFLT *x, const PLFLT *y, const PLFLT * const *z, PLINT nx, PLINT ny, PLINT opt );
1378 
1379 // Like plmesh, but uses an evaluator function to access z data from zp
1380 
1381 PLDLLIMPEXP void
1382 plfmesh( const PLFLT *x, const PLFLT *y, PLF2OPS zops, PLPointer zp,
1383  PLINT nx, PLINT ny, PLINT opt );
1384 
1385 // Plots a mesh representation of the function z[x][y] with contour
1386 
1387 PLDLLIMPEXP void
1388 c_plmeshc( const PLFLT *x, const PLFLT *y, const PLFLT * const *z, PLINT nx, PLINT ny, PLINT opt,
1389  const PLFLT *clevel, PLINT nlevel );
1390 
1391 // Like plmeshc, but uses an evaluator function to access z data from zp
1392 
1393 PLDLLIMPEXP void
1394 plfmeshc( const PLFLT *x, const PLFLT *y, PLF2OPS zops, PLPointer zp,
1395  PLINT nx, PLINT ny, PLINT opt, const PLFLT *clevel, PLINT nlevel );
1396 
1397 // Creates a new stream and makes it the default.
1398 
1399 PLDLLIMPEXP void
1400 c_plmkstrm( PLINT *p_strm );
1401 
1402 // Prints out "text" at specified position relative to viewport
1403 
1404 PLDLLIMPEXP void
1405 c_plmtex( const char *side, PLFLT disp, PLFLT pos, PLFLT just,
1406  const char *text );
1407 
1408 // Prints out "text" at specified position relative to viewport (3D)
1409 
1410 PLDLLIMPEXP void
1411 c_plmtex3( const char *side, PLFLT disp, PLFLT pos, PLFLT just,
1412  const char *text );
1413 
1414 // Plots a 3-d representation of the function z[x][y].
1415 
1416 PLDLLIMPEXP void
1417 c_plot3d( const PLFLT *x, const PLFLT *y, const PLFLT * const *z,
1418  PLINT nx, PLINT ny, PLINT opt, PLBOOL side );
1419 
1420 // Like plot3d, but uses an evaluator function to access z data from zp
1421 
1422 PLDLLIMPEXP void
1423 plfplot3d( const PLFLT *x, const PLFLT *y, PLF2OPS zops, PLPointer zp,
1424  PLINT nx, PLINT ny, PLINT opt, PLBOOL side );
1425 
1426 // Plots a 3-d representation of the function z[x][y] with contour.
1427 
1428 PLDLLIMPEXP void
1429 c_plot3dc( const PLFLT *x, const PLFLT *y, const PLFLT * const *z,
1430  PLINT nx, PLINT ny, PLINT opt,
1431  const PLFLT *clevel, PLINT nlevel );
1432 
1433 // Like plot3dc, but uses an evaluator function to access z data from zp
1434 
1435 PLDLLIMPEXP void
1436 plfplot3dc( const PLFLT *x, const PLFLT *y, PLF2OPS zops, PLPointer zp,
1437  PLINT nx, PLINT ny, PLINT opt, const PLFLT *clevel, PLINT nlevel );
1438 
1439 // Plots a 3-d representation of the function z[x][y] with contour and
1440 // y index limits.
1441 
1442 PLDLLIMPEXP void
1443 c_plot3dcl( const PLFLT *x, const PLFLT *y, const PLFLT * const *z,
1444  PLINT nx, PLINT ny, PLINT opt,
1445  const PLFLT *clevel, PLINT nlevel,
1446  PLINT indexxmin, PLINT indexxmax, const PLINT *indexymin, const PLINT *indexymax );
1447 
1448 // Like plot3dcl, but uses an evaluator function to access z data from zp
1449 
1450 PLDLLIMPEXP void
1451 plfplot3dcl( const PLFLT *x, const PLFLT *y, PLF2OPS zops, PLPointer zp,
1452  PLINT nx, PLINT ny, PLINT opt,
1453  const PLFLT *clevel, PLINT nlevel,
1454  PLINT indexxmin, PLINT indexxmax, const PLINT *indexymin, const PLINT *indexymax );
1455 
1456 //
1457 // definitions for the opt argument in plot3dc() and plsurf3d()
1458 //
1459 // DRAW_LINEX *must* be 1 and DRAW_LINEY *must* be 2, because of legacy code!
1460 //
1461 
1462 #define DRAW_LINEX 0x001 // draw lines parallel to the X axis
1463 #define DRAW_LINEY 0x002 // draw lines parallel to the Y axis
1464 #define DRAW_LINEXY 0x003 // draw lines parallel to both the X and Y axis
1465 #define MAG_COLOR 0x004 // draw the mesh with a color dependent of the magnitude
1466 #define BASE_CONT 0x008 // draw contour plot at bottom xy plane
1467 #define TOP_CONT 0x010 // draw contour plot at top xy plane
1468 #define SURF_CONT 0x020 // draw contour plot at surface
1469 #define DRAW_SIDES 0x040 // draw sides
1470 #define FACETED 0x080 // draw outline for each square that makes up the surface
1471 #define MESH 0x100 // draw mesh
1472 
1473 //
1474 // valid options for plot3dc():
1475 //
1476 // DRAW_SIDES, BASE_CONT, TOP_CONT (not yet),
1477 // MAG_COLOR, DRAW_LINEX, DRAW_LINEY, DRAW_LINEXY.
1478 //
1479 // valid options for plsurf3d():
1480 //
1481 // MAG_COLOR, BASE_CONT, SURF_CONT, FACETED, DRAW_SIDES.
1482 //
1483 
1484 // Set fill pattern directly.
1485 
1486 PLDLLIMPEXP void
1487 c_plpat( PLINT nlin, const PLINT *inc, const PLINT *del );
1488 
1489 // Draw a line connecting two points, accounting for coordinate transforms
1490 
1491 PLDLLIMPEXP void
1492 c_plpath( PLINT n, PLFLT x1, PLFLT y1, PLFLT x2, PLFLT y2 );
1493 
1494 // Plots array y against x for n points using ASCII code "code".
1495 
1496 PLDLLIMPEXP void
1497 c_plpoin( PLINT n, const PLFLT *x, const PLFLT *y, PLINT code );
1498 
1499 // Draws a series of points in 3 space.
1500 
1501 PLDLLIMPEXP void
1502 c_plpoin3( PLINT n, const PLFLT *x, const PLFLT *y, const PLFLT *z, PLINT code );
1503 
1504 // Draws a polygon in 3 space.
1505 
1506 PLDLLIMPEXP void
1507 c_plpoly3( PLINT n, const PLFLT *x, const PLFLT *y, const PLFLT *z, const PLBOOL *draw, PLBOOL ifcc );
1508 
1509 // Set the floating point precision (in number of places) in numeric labels.
1510 
1511 PLDLLIMPEXP void
1512 c_plprec( PLINT setp, PLINT prec );
1513 
1514 // Set fill pattern, using one of the predefined patterns.
1515 
1516 PLDLLIMPEXP void
1517 c_plpsty( PLINT patt );
1518 
1519 // Prints out "text" at world cooordinate (x,y).
1520 
1521 PLDLLIMPEXP void
1522 c_plptex( PLFLT x, PLFLT y, PLFLT dx, PLFLT dy, PLFLT just, const char *text );
1523 
1524 // Prints out "text" at world cooordinate (x,y,z).
1525 
1526 PLDLLIMPEXP void
1527 c_plptex3( PLFLT wx, PLFLT wy, PLFLT wz, PLFLT dx, PLFLT dy, PLFLT dz,
1528  PLFLT sx, PLFLT sy, PLFLT sz, PLFLT just, const char *text );
1529 
1530 // Random number generator based on Mersenne Twister.
1531 // Obtain real random number in range [0,1].
1532 
1534 c_plrandd( void );
1535 
1536 // Replays contents of plot buffer to current device/file.
1537 
1538 PLDLLIMPEXP void
1539 c_plreplot( void );
1540 
1541 // Functions for converting between HLS and RGB color space
1542 
1543 PLDLLIMPEXP void
1544 c_plrgbhls( PLFLT r, PLFLT g, PLFLT b, PLFLT *p_h, PLFLT *p_l, PLFLT *p_s );
1545 
1546 // Set character height.
1547 
1548 PLDLLIMPEXP void
1549 c_plschr( PLFLT def, PLFLT scale );
1550 
1551 // Set color map 0 colors by 8 bit RGB values
1552 
1553 PLDLLIMPEXP void
1554 c_plscmap0( const PLINT *r, const PLINT *g, const PLINT *b, PLINT ncol0 );
1555 
1556 // Set color map 0 colors by 8 bit RGB values and alpha values
1557 
1558 PLDLLIMPEXP void
1559 c_plscmap0a( const PLINT *r, const PLINT *g, const PLINT *b, const PLFLT *alpha, PLINT ncol0 );
1560 
1561 // Set number of colors in cmap 0
1562 
1563 PLDLLIMPEXP void
1564 c_plscmap0n( PLINT ncol0 );
1565 
1566 // Set color map 1 colors by 8 bit RGB values
1567 
1568 PLDLLIMPEXP void
1569 c_plscmap1( const PLINT *r, const PLINT *g, const PLINT *b, PLINT ncol1 );
1570 
1571 // Set color map 1 colors by 8 bit RGB and alpha values
1572 
1573 PLDLLIMPEXP void
1574 c_plscmap1a( const PLINT *r, const PLINT *g, const PLINT *b, const PLFLT *alpha, PLINT ncol1 );
1575 
1576 // Set color map 1 colors using a piece-wise linear relationship between
1577 // intensity [0,1] (cmap 1 index) and position in HLS or RGB color space.
1578 
1579 PLDLLIMPEXP void
1580 c_plscmap1l( PLBOOL itype, PLINT npts, const PLFLT *intensity,
1581  const PLFLT *coord1, const PLFLT *coord2, const PLFLT *coord3, const PLBOOL *alt_hue_path );
1582 
1583 // Set color map 1 colors using a piece-wise linear relationship between
1584 // intensity [0,1] (cmap 1 index) and position in HLS or RGB color space.
1585 // Will also linear interpolate alpha values.
1586 
1587 PLDLLIMPEXP void
1588 c_plscmap1la( PLBOOL itype, PLINT npts, const PLFLT *intensity,
1589  const PLFLT *coord1, const PLFLT *coord2, const PLFLT *coord3, const PLFLT *alpha, const PLBOOL *alt_hue_path );
1590 
1591 // Set number of colors in cmap 1
1592 
1593 PLDLLIMPEXP void
1594 c_plscmap1n( PLINT ncol1 );
1595 
1596 // Set the color map 1 range used in continuous plots
1597 
1598 PLDLLIMPEXP void
1599 c_plscmap1_range( PLFLT min_color, PLFLT max_color );
1600 
1601 // Get the color map 1 range used in continuous plots
1602 
1603 PLDLLIMPEXP void
1604 c_plgcmap1_range( PLFLT *min_color, PLFLT *max_color );
1605 
1606 // Set a given color from color map 0 by 8 bit RGB value
1607 
1608 PLDLLIMPEXP void
1609 c_plscol0( PLINT icol0, PLINT r, PLINT g, PLINT b );
1610 
1611 // Set a given color from color map 0 by 8 bit RGB value
1612 
1613 PLDLLIMPEXP void
1614 c_plscol0a( PLINT icol0, PLINT r, PLINT g, PLINT b, PLFLT alpha );
1615 
1616 // Set the background color by 8 bit RGB value
1617 
1618 PLDLLIMPEXP void
1619 c_plscolbg( PLINT r, PLINT g, PLINT b );
1620 
1621 // Set the background color by 8 bit RGB value and alpha value
1622 
1623 PLDLLIMPEXP void
1624 c_plscolbga( PLINT r, PLINT g, PLINT b, PLFLT alpha );
1625 
1626 // Used to globally turn color output on/off
1627 
1628 PLDLLIMPEXP void
1629 c_plscolor( PLINT color );
1630 
1631 // Set the compression level
1632 
1633 PLDLLIMPEXP void
1634 c_plscompression( PLINT compression );
1635 
1636 // Set the device (keyword) name
1637 
1638 PLDLLIMPEXP void
1639 c_plsdev( const char *devname );
1640 
1641 // Set window into device space using margin, aspect ratio, and
1642 // justification
1643 
1644 PLDLLIMPEXP void
1645 c_plsdidev( PLFLT mar, PLFLT aspect, PLFLT jx, PLFLT jy );
1646 
1647 // Set up transformation from metafile coordinates.
1648 
1649 PLDLLIMPEXP void
1650 c_plsdimap( PLINT dimxmin, PLINT dimxmax, PLINT dimymin, PLINT dimymax,
1651  PLFLT dimxpmm, PLFLT dimypmm );
1652 
1653 // Set plot orientation, specifying rotation in units of pi/2.
1654 
1655 PLDLLIMPEXP void
1656 c_plsdiori( PLFLT rot );
1657 
1658 // Set window into plot space
1659 
1660 PLDLLIMPEXP void
1662 
1663 // Set window into plot space incrementally (zoom)
1664 
1665 PLDLLIMPEXP void
1667 
1668 // Set seed for internal random number generator
1669 
1670 PLDLLIMPEXP void
1671 c_plseed( unsigned int seed );
1672 
1673 // Set the escape character for text strings.
1674 
1675 PLDLLIMPEXP void
1676 c_plsesc( char esc );
1677 
1678 // Set family file parameters
1679 
1680 PLDLLIMPEXP void
1681 c_plsfam( PLINT fam, PLINT num, PLINT bmax );
1682 
1683 // Set FCI (font characterization integer)
1684 
1685 PLDLLIMPEXP void
1686 c_plsfci( PLUNICODE fci );
1687 
1688 // Set the output file name.
1689 
1690 PLDLLIMPEXP void
1691 c_plsfnam( const char *fnam );
1692 
1693 // Set the current font family, style and weight
1694 
1695 PLDLLIMPEXP void
1696 c_plsfont( PLINT family, PLINT style, PLINT weight );
1697 
1698 // Shade region.
1699 
1700 PLDLLIMPEXP void
1701 c_plshade( const PLFLT * const *a, PLINT nx, PLINT ny, PLINT ( *defined )( PLFLT, PLFLT ),
1703  PLFLT shade_min, PLFLT shade_max,
1704  PLINT sh_cmap, PLFLT sh_color, PLFLT sh_width,
1705  PLINT min_color, PLFLT min_width,
1706  PLINT max_color, PLFLT max_width,
1707  void ( *fill )( PLINT, const PLFLT *, const PLFLT * ), PLBOOL rectangular,
1708  void ( *pltr )( PLFLT, PLFLT, PLFLT *, PLFLT *, PLPointer ),
1709  PLPointer pltr_data );
1710 
1711 PLDLLIMPEXP void
1712 c_plshade1( const PLFLT *a, PLINT nx, PLINT ny, PLINT ( *defined )( PLFLT, PLFLT ),
1713  PLFLT xmin, PLFLT xmax, PLFLT ymin, PLFLT ymax,
1714  PLFLT shade_min, PLFLT shade_max,
1715  PLINT sh_cmap, PLFLT sh_color, PLFLT sh_width,
1716  PLINT min_color, PLFLT min_width,
1717  PLINT max_color, PLFLT max_width,
1718  void ( *fill )( const PLINT, const PLFLT *, const PLFLT * ), PLBOOL rectangular,
1719  void ( *pltr )( PLFLT, PLFLT, PLFLT *, PLFLT *, PLPointer ),
1720  PLPointer pltr_data );
1721 
1722 PLDLLIMPEXP void
1723 c_plshades( const PLFLT * const *a, PLINT nx, PLINT ny, PLINT ( *defined )( PLFLT, PLFLT ),
1724  PLFLT xmin, PLFLT xmax, PLFLT ymin, PLFLT ymax,
1725  const PLFLT *clevel, PLINT nlevel, PLFLT fill_width,
1726  PLINT cont_color, PLFLT cont_width,
1727  void ( *fill )( PLINT, const PLFLT *, const PLFLT * ), PLBOOL rectangular,
1728  void ( *pltr )( PLFLT, PLFLT, PLFLT *, PLFLT *, PLPointer ),
1729  PLPointer pltr_data );
1730 
1731 PLDLLIMPEXP void
1732 plfshades( PLF2OPS zops, PLPointer zp, PLINT nx, PLINT ny,
1733  PLINT ( *defined )( PLFLT, PLFLT ),
1734  PLFLT xmin, PLFLT xmax, PLFLT ymin, PLFLT ymax,
1735  const PLFLT *clevel, PLINT nlevel, PLFLT fill_width,
1736  PLINT cont_color, PLFLT cont_width,
1737  void ( *fill )( PLINT, const PLFLT *, const PLFLT * ), PLINT rectangular,
1738  void ( *pltr )( PLFLT, PLFLT, PLFLT *, PLFLT *, PLPointer ),
1739  PLPointer pltr_data );
1740 
1741 PLDLLIMPEXP void
1742 plfshade( PLFLT ( *f2eval )( PLINT, PLINT, PLPointer ),
1743  PLPointer f2eval_data,
1744  PLFLT ( *c2eval )( PLINT, PLINT, PLPointer ),
1745  PLPointer c2eval_data,
1746  PLINT nx, PLINT ny,
1747  PLFLT left, PLFLT right, PLFLT bottom, PLFLT top,
1748  PLFLT shade_min, PLFLT shade_max,
1749  PLINT sh_cmap, PLFLT sh_color, PLFLT sh_width,
1750  PLINT min_color, PLFLT min_width,
1751  PLINT max_color, PLFLT max_width,
1752  void ( *fill )( PLINT, const PLFLT *, const PLFLT * ), PLBOOL rectangular,
1753  void ( *pltr )( PLFLT, PLFLT, PLFLT *, PLFLT *, PLPointer ),
1754  PLPointer pltr_data );
1755 
1756 PLDLLIMPEXP void
1757 plfshade1( PLF2OPS zops, PLPointer zp, PLINT nx, PLINT ny,
1758  PLINT ( *defined )( PLFLT, PLFLT ),
1759  PLFLT xmin, PLFLT xmax, PLFLT ymin, PLFLT ymax,
1760  PLFLT shade_min, PLFLT shade_max,
1761  PLINT sh_cmap, PLFLT sh_color, PLFLT sh_width,
1762  PLINT min_color, PLFLT min_width,
1763  PLINT max_color, PLFLT max_width,
1764  void ( *fill )( PLINT, const PLFLT *, const PLFLT * ), PLINT rectangular,
1765  void ( *pltr )( PLFLT, PLFLT, PLFLT *, PLFLT *, PLPointer ),
1766  PLPointer pltr_data );
1767 
1768 // Setup a user-provided custom labeling function
1769 
1770 PLDLLIMPEXP void
1771 c_plslabelfunc( void ( *label_func )( PLINT, PLFLT, char *, PLINT, PLPointer ),
1772  PLPointer label_data );
1773 
1774 // Set up lengths of major tick marks.
1775 
1776 PLDLLIMPEXP void
1777 c_plsmaj( PLFLT def, PLFLT scale );
1778 
1779 // Set the RGB memory area to be plotted (with the 'mem' or 'memcairo' drivers)
1780 
1781 PLDLLIMPEXP void
1782 c_plsmem( PLINT maxx, PLINT maxy, void *plotmem );
1783 
1784 // Set the RGBA memory area to be plotted (with the 'memcairo' driver)
1785 
1786 PLDLLIMPEXP void
1787 c_plsmema( PLINT maxx, PLINT maxy, void *plotmem );
1788 
1789 // Set up lengths of minor tick marks.
1790 
1791 PLDLLIMPEXP void
1792 c_plsmin( PLFLT def, PLFLT scale );
1793 
1794 // Set the drawing mode
1795 PLDLLIMPEXP void
1796 c_plsdrawmode( PLINT mode );
1797 
1798 // Set orientation. Must be done before calling plinit.
1799 
1800 PLDLLIMPEXP void
1801 c_plsori( PLINT ori );
1802 
1803 // Set output device parameters. Usually ignored by the driver.
1804 
1805 PLDLLIMPEXP void
1806 c_plspage( PLFLT xp, PLFLT yp, PLINT xleng, PLINT yleng,
1807  PLINT xoff, PLINT yoff );
1808 
1809 // Set the colors for color table 0 from a cmap0 file
1810 
1811 PLDLLIMPEXP void
1812 c_plspal0( const char *filename );
1813 
1814 // Set the colors for color table 1 from a cmap1 file
1815 
1816 PLDLLIMPEXP void
1817 c_plspal1( const char *filename, PLBOOL interpolate );
1818 
1819 // Set the pause (on end-of-page) status
1820 
1821 PLDLLIMPEXP void
1822 c_plspause( PLBOOL pause );
1823 
1824 // Set stream number.
1825 
1826 PLDLLIMPEXP void
1827 c_plsstrm( PLINT strm );
1828 
1829 // Set the number of subwindows in x and y
1830 
1831 PLDLLIMPEXP void
1832 c_plssub( PLINT nx, PLINT ny );
1833 
1834 // Set symbol height.
1835 
1836 PLDLLIMPEXP void
1837 c_plssym( PLFLT def, PLFLT scale );
1838 
1839 // Initialize PLplot, passing in the windows/page settings.
1840 
1841 PLDLLIMPEXP void
1842 c_plstar( PLINT nx, PLINT ny );
1843 
1844 // Initialize PLplot, passing the device name and windows/page settings.
1845 
1846 PLDLLIMPEXP void
1847 c_plstart( const char *devname, PLINT nx, PLINT ny );
1848 
1849 // Set the coordinate transform
1850 
1851 PLDLLIMPEXP void
1852 c_plstransform( void ( *coordinate_transform )( PLFLT, PLFLT, PLFLT*, PLFLT*, PLPointer ), PLPointer coordinate_transform_data );
1853 
1854 // Prints out the same string repeatedly at the n points in world
1855 // coordinates given by the x and y arrays. Supersedes plpoin and
1856 // plsymbol for the case where text refers to a unicode glyph either
1857 // directly as UTF-8 or indirectly via the standard text escape
1858 // sequences allowed for PLplot input strings.
1859 
1860 PLDLLIMPEXP void
1861 c_plstring( PLINT n, const PLFLT *x, const PLFLT *y, const char *string );
1862 
1863 // Prints out the same string repeatedly at the n points in world
1864 // coordinates given by the x, y, and z arrays. Supersedes plpoin3
1865 // for the case where text refers to a unicode glyph either directly
1866 // as UTF-8 or indirectly via the standard text escape sequences
1867 // allowed for PLplot input strings.
1868 
1869 PLDLLIMPEXP void
1870 c_plstring3( PLINT n, const PLFLT *x, const PLFLT *y, const PLFLT *z, const char *string );
1871 
1872 // Add a point to a stripchart.
1873 
1874 PLDLLIMPEXP void
1875 c_plstripa( PLINT id, PLINT pen, PLFLT x, PLFLT y );
1876 
1877 // Create 1d stripchart
1878 
1879 PLDLLIMPEXP void
1880 c_plstripc( PLINT *id, const char *xspec, const char *yspec,
1881  PLFLT xmin, PLFLT xmax, PLFLT xjump, PLFLT ymin, PLFLT ymax,
1882  PLFLT xlpos, PLFLT ylpos,
1883  PLBOOL y_ascl, PLBOOL acc,
1884  PLINT colbox, PLINT collab,
1885  const PLINT colline[], const PLINT styline[], const char *legline[],
1886  const char *labx, const char *laby, const char *labtop );
1887 
1888 // Deletes and releases memory used by a stripchart.
1889 
1890 PLDLLIMPEXP void
1891 c_plstripd( PLINT id );
1892 
1893 // plots a 2d image (or a matrix too large for plshade() )
1894 
1895 PLDLLIMPEXP void
1896 c_plimagefr( const PLFLT * const *idata, PLINT nx, PLINT ny,
1897  PLFLT xmin, PLFLT xmax, PLFLT ymin, PLFLT ymax, PLFLT zmin, PLFLT zmax,
1898  PLFLT valuemin, PLFLT valuemax,
1899  void ( *pltr )( PLFLT, PLFLT, PLFLT *, PLFLT *, PLPointer ),
1900  PLPointer pltr_data );
1901 
1902 //
1903 // Like plimagefr, but uses an evaluator function to access image data from
1904 // idatap. getminmax is only used if zmin == zmax.
1905 //
1906 
1907 PLDLLIMPEXP void
1908 plfimagefr( PLF2OPS idataops, PLPointer idatap, PLINT nx, PLINT ny,
1909  PLFLT xmin, PLFLT xmax, PLFLT ymin, PLFLT ymax, PLFLT zmin, PLFLT zmax,
1910  PLFLT valuemin, PLFLT valuemax,
1911  void ( *pltr )( PLFLT, PLFLT, PLFLT *, PLFLT *, PLPointer ),
1912  PLPointer pltr_data );
1913 
1914 // plots a 2d image (or a matrix too large for plshade() ) - colors
1915 // automatically scaled
1916 
1917 PLDLLIMPEXP void
1918 c_plimage( const PLFLT * const *idata, PLINT nx, PLINT ny,
1919  PLFLT xmin, PLFLT xmax, PLFLT ymin, PLFLT ymax, PLFLT zmin, PLFLT zmax,
1920  PLFLT Dxmin, PLFLT Dxmax, PLFLT Dymin, PLFLT Dymax );
1921 
1922 //
1923 // Like plimage, but uses an operator functions to access image data from
1924 // idatap.
1925 //
1926 
1927 PLDLLIMPEXP void
1928 plfimage( PLF2OPS idataops, PLPointer idatap, PLINT nx, PLINT ny,
1929  PLFLT xmin, PLFLT xmax, PLFLT ymin, PLFLT ymax, PLFLT zmin, PLFLT zmax,
1930  PLFLT Dxmin, PLFLT Dxmax, PLFLT Dymin, PLFLT Dymax );
1931 
1932 // Set up a new line style
1933 
1934 PLDLLIMPEXP void
1935 c_plstyl( PLINT nms, const PLINT *mark, const PLINT *space );
1936 
1937 // Plots the 3d surface representation of the function z[x][y].
1938 
1939 PLDLLIMPEXP void
1940 c_plsurf3d( const PLFLT *x, const PLFLT *y, const PLFLT * const *z, PLINT nx, PLINT ny,
1941  PLINT opt, const PLFLT *clevel, PLINT nlevel );
1942 
1943 // Like plsurf3d, but uses an evaluator function to access z data from zp
1944 
1945 PLDLLIMPEXP void
1946 plfsurf3d( const PLFLT *x, const PLFLT *y, PLF2OPS zops, PLPointer zp,
1947  PLINT nx, PLINT ny, PLINT opt, const PLFLT *clevel, PLINT nlevel );
1948 
1949 // Plots the 3d surface representation of the function z[x][y] with y
1950 // index limits.
1951 
1952 PLDLLIMPEXP void
1953 c_plsurf3dl( const PLFLT *x, const PLFLT *y, const PLFLT * const *z, PLINT nx, PLINT ny,
1954  PLINT opt, const PLFLT *clevel, PLINT nlevel,
1955  PLINT indexxmin, PLINT indexxmax, const PLINT *indexymin, const PLINT *indexymax );
1956 
1957 // Like plsurf3dl, but uses an evaluator function to access z data from zp
1958 
1959 PLDLLIMPEXP void
1960 plfsurf3dl( const PLFLT *x, const PLFLT *y, PLF2OPS zops, PLPointer zp, PLINT nx, PLINT ny,
1961  PLINT opt, const PLFLT *clevel, PLINT nlevel,
1962  PLINT indexxmin, PLINT indexxmax, const PLINT *indexymin, const PLINT *indexymax );
1963 
1964 // Set arrow style for vector plots.
1965 PLDLLIMPEXP void
1966 c_plsvect( const PLFLT *arrowx, const PLFLT *arrowy, PLINT npts, PLBOOL fill );
1967 
1968 // Sets the edges of the viewport to the specified absolute coordinates
1969 
1970 PLDLLIMPEXP void
1971 c_plsvpa( PLFLT xmin, PLFLT xmax, PLFLT ymin, PLFLT ymax );
1972 
1973 // Set x axis labeling parameters
1974 
1975 PLDLLIMPEXP void
1976 c_plsxax( PLINT digmax, PLINT digits );
1977 
1978 // Set inferior X window
1979 
1980 PLDLLIMPEXP void
1981 plsxwin( PLINT window_id );
1982 
1983 // Set y axis labeling parameters
1984 
1985 PLDLLIMPEXP void
1986 c_plsyax( PLINT digmax, PLINT digits );
1987 
1988 // Plots array y against x for n points using Hershey symbol "code"
1989 
1990 PLDLLIMPEXP void
1991 c_plsym( PLINT n, const PLFLT *x, const PLFLT *y, PLINT code );
1992 
1993 // Set z axis labeling parameters
1994 
1995 PLDLLIMPEXP void
1996 c_plszax( PLINT digmax, PLINT digits );
1997 
1998 // Switches to text screen.
1999 
2000 PLDLLIMPEXP void
2001 c_pltext( void );
2002 
2003 // Set the format for date / time labels for current stream.
2004 
2005 PLDLLIMPEXP void
2006 c_pltimefmt( const char *fmt );
2007 
2008 // Sets the edges of the viewport with the given aspect ratio, leaving
2009 // room for labels.
2010 
2011 PLDLLIMPEXP void
2012 c_plvasp( PLFLT aspect );
2013 
2014 // Creates the largest viewport of the specified aspect ratio that fits
2015 // within the specified normalized subpage coordinates.
2016 
2017 // simple arrow plotter.
2018 
2019 PLDLLIMPEXP void
2020 c_plvect( const PLFLT * const *u, const PLFLT * const *v, PLINT nx, PLINT ny, PLFLT scale,
2021  void ( *pltr )( PLFLT, PLFLT, PLFLT *, PLFLT *, PLPointer ),
2022  PLPointer pltr_data );
2023 
2024 //
2025 // Routine to plot a vector array with arbitrary coordinate
2026 // and vector transformations
2027 //
2028 PLDLLIMPEXP void
2029 plfvect( PLFLT ( *getuv )( PLINT, PLINT, PLPointer ),
2030  PLPointer up, PLPointer vp,
2031  PLINT nx, PLINT ny, PLFLT scale,
2032  void ( *pltr )( PLFLT, PLFLT, PLFLT *, PLFLT *, PLPointer ),
2033  PLPointer pltr_data );
2034 
2035 PLDLLIMPEXP void
2036 c_plvpas( PLFLT xmin, PLFLT xmax, PLFLT ymin, PLFLT ymax, PLFLT aspect );
2037 
2038 // Creates a viewport with the specified normalized subpage coordinates.
2039 
2040 PLDLLIMPEXP void
2041 c_plvpor( PLFLT xmin, PLFLT xmax, PLFLT ymin, PLFLT ymax );
2042 
2043 // Defines a "standard" viewport with seven character heights for
2044 // the left margin and four character heights everywhere else.
2045 
2046 PLDLLIMPEXP void
2047 c_plvsta( void );
2048 
2049 // Set up a window for three-dimensional plotting.
2050 
2051 PLDLLIMPEXP void
2052 c_plw3d( PLFLT basex, PLFLT basey, PLFLT height, PLFLT xmin,
2053  PLFLT xmax, PLFLT ymin, PLFLT ymax, PLFLT zmin,
2054  PLFLT zmax, PLFLT alt, PLFLT az );
2055 
2056 #ifdef PL_DEPRECATED
2057 // Set pen width with deprecated integer width
2058 
2059 PLDLLIMPEXP void
2060 c_plwid( PLINT width );
2061 #endif
2062 
2063 // Set pen width.
2064 
2065 PLDLLIMPEXP void
2066 c_plwidth( PLFLT width );
2067 
2068 // Set up world coordinates of the viewport boundaries (2d plots).
2069 
2070 PLDLLIMPEXP void
2071 c_plwind( PLFLT xmin, PLFLT xmax, PLFLT ymin, PLFLT ymax );
2072 
2073 // Set xor mode; mode = 1-enter, 0-leave, status = 0 if not interactive device
2074 
2075 PLDLLIMPEXP void
2076 c_plxormod( PLBOOL mode, PLBOOL *status );
2077 
2078 
2079 //--------------------------------------------------------------------------
2080 // Functions for use from C or C++ only
2081 //--------------------------------------------------------------------------
2082 
2083 // Returns a list of file-oriented device names and their menu strings
2084 
2085 PLDLLIMPEXP void
2086 plgFileDevs( const char ***p_menustr, const char ***p_devname, int *p_ndev );
2087 
2088 // Returns a list of all device names and their menu strings
2089 
2090 PLDLLIMPEXP void
2091 plgDevs( const char ***p_menustr, const char ***p_devname, int *p_ndev );
2092 
2093 // Set the function pointer for the keyboard event handler
2094 
2095 PLDLLIMPEXP void
2096 plsKeyEH( void ( *KeyEH )( PLGraphicsIn *, void *, int * ), void *KeyEH_data );
2097 
2098 // Set the function pointer for the (mouse) button event handler
2099 
2100 PLDLLIMPEXP void
2101 plsButtonEH( void ( *ButtonEH )( PLGraphicsIn *, void *, int * ),
2102  void *ButtonEH_data );
2103 
2104 // Sets an optional user bop handler
2105 
2106 PLDLLIMPEXP void
2107 plsbopH( void ( *handler )( void *, int * ), void *handler_data );
2108 
2109 // Sets an optional user eop handler
2110 
2111 PLDLLIMPEXP void
2112 plseopH( void ( *handler )( void *, int * ), void *handler_data );
2113 
2114 // Set the variables to be used for storing error info
2115 
2116 PLDLLIMPEXP void
2117 plsError( PLINT *errcode, char *errmsg );
2118 
2119 // Sets an optional user exit handler.
2120 
2121 PLDLLIMPEXP void
2122 plsexit( int ( *handler )( const char * ) );
2123 
2124 // Sets an optional user abort handler.
2125 
2126 PLDLLIMPEXP void
2127 plsabort( void ( *handler )( const char * ) );
2128 
2129 // Transformation routines
2130 
2131 // Identity transformation.
2132 
2133 PLDLLIMPEXP void
2134 pltr0( PLFLT x, PLFLT y, PLFLT *tx, PLFLT *ty, PLPointer pltr_data );
2135 
2136 // Does linear interpolation from singly dimensioned coord arrays.
2137 
2138 PLDLLIMPEXP void
2139 pltr1( PLFLT x, PLFLT y, PLFLT *tx, PLFLT *ty, PLPointer pltr_data );
2140 
2141 // Does linear interpolation from doubly dimensioned coord arrays
2142 // (column dominant, as per normal C 2d arrays).
2143 
2144 PLDLLIMPEXP void
2145 pltr2( PLFLT x, PLFLT y, PLFLT *tx, PLFLT *ty, PLPointer pltr_data );
2146 
2147 // Just like pltr2() but uses pointer arithmetic to get coordinates from
2148 // 2d grid tables.
2149 
2150 PLDLLIMPEXP void
2151 pltr2p( PLFLT x, PLFLT y, PLFLT *tx, PLFLT *ty, PLPointer pltr_data );
2152 
2153 // Does linear interpolation from doubly dimensioned coord arrays
2154 // (row dominant, i.e. Fortran ordering).
2155 
2156 PLDLLIMPEXP void
2157 pltr2f( PLFLT x, PLFLT y, PLFLT *tx, PLFLT *ty, void *pltr_data );
2158 
2159 //
2160 // Returns a pointer to a plf2ops_t stucture with pointers to functions for
2161 // accessing 2-D data referenced as (PLFLT **), such as the C variable z
2162 // declared as...
2163 //
2164 // PLFLT z[nx][ny];
2165 //
2166 
2168 plf2ops_c( void );
2169 
2170 //
2171 // Returns a pointer to a plf2ops_t stucture with pointers to functions for accessing 2-D data
2172 // referenced as (PLfGrid2 *), where the PLfGrid2's "f" is treated as type
2173 // (PLFLT **).
2174 //
2175 
2177 plf2ops_grid_c( void );
2178 
2179 //
2180 // Returns a pointer to a plf2ops_t stucture with pointers to functions for
2181 // accessing 2-D data stored in (PLfGrid2 *), with the PLfGrid2's "f" field
2182 // treated as type (PLFLT *) pointing to 2-D data stored in row-major order.
2183 // In the context of plotting, it might be easier to think of it as "X-major"
2184 // order. In this ordering, values for a single X index are stored in
2185 // consecutive memory locations.
2186 //
2187 
2189 plf2ops_grid_row_major( void );
2190 
2191 //
2192 // Returns a pointer to a plf2ops_t stucture with pointers to functions for
2193 // accessing 2-D data stored in (PLfGrid2 *), with the PLfGrid2's "f" field
2194 // treated as type (PLFLT *) pointing to 2-D data stored in column-major order.
2195 // In the context of plotting, it might be easier to think of it as "Y-major"
2196 // order. In this ordering, values for a single Y index are stored in
2197 // consecutive memory locations.
2198 //
2199 
2201 plf2ops_grid_col_major( void );
2202 
2203 
2204 // Function evaluators (Should these be deprecated in favor of plf2ops?)
2205 
2206 //
2207 // Does a lookup from a 2d function array. plf2eval_data is treated as type
2208 // (PLFLT **) and data for (ix,iy) is returned from...
2209 //
2210 // plf2eval_data[ix][iy];
2211 //
2212 
2214 plf2eval1( PLINT ix, PLINT iy, PLPointer plf2eval_data );
2215 
2216 //
2217 // Does a lookup from a 2d function array. plf2eval_data is treated as type
2218 // (PLfGrid2 *) and data for (ix,iy) is returned from...
2219 //
2220 // plf2eval_data->f[ix][iy];
2221 //
2222 
2224 plf2eval2( PLINT ix, PLINT iy, PLPointer plf2eval_data );
2225 
2226 //
2227 // Does a lookup from a 2d function array. plf2eval_data is treated as type
2228 // (PLfGrid *) and data for (ix,iy) is returned from...
2229 //
2230 // plf2eval_data->f[ix * plf2eval_data->ny + iy];
2231 //
2232 // This is commonly called "row-major order", but in the context of plotting,
2233 // it might be easier to think of it as "X-major order". In this ordering,
2234 // values for a single X index are stored in consecutive memory locations.
2235 // This is also known as C ordering.
2236 //
2237 
2239 plf2eval( PLINT ix, PLINT iy, PLPointer plf2eval_data );
2240 
2241 //
2242 // Does a lookup from a 2d function array. plf2eval_data is treated as type
2243 // (PLfGrid *) and data for (ix,iy) is returned from...
2244 //
2245 // plf2eval_data->f[ix + iy * plf2eval_data->nx];
2246 //
2247 // This is commonly called "column-major order", but in the context of
2248 // plotting, it might be easier to think of it as "Y-major order". In this
2249 // ordering, values for a single Y index are stored in consecutive memory
2250 // locations. This is also known as FORTRAN ordering.
2251 //
2252 
2254 plf2evalr( PLINT ix, PLINT iy, PLPointer plf2eval_data );
2255 
2256 // Command line parsing utilities
2257 
2258 // Clear internal option table info structure.
2259 
2260 PLDLLIMPEXP void
2261 plClearOpts( void );
2262 
2263 // Reset internal option table info structure.
2264 
2265 PLDLLIMPEXP void
2266 plResetOpts( void );
2267 
2268 // Merge user option table into internal info structure.
2269 
2271 plMergeOpts( PLOptionTable *options, const char *name, const char **notes );
2272 
2273 // Set the strings used in usage and syntax messages.
2274 
2275 PLDLLIMPEXP void
2276 plSetUsage( const char *program_string, const char *usage_string );
2277 
2278 // Process input strings, treating them as an option and argument pair.
2279 // The first is for the external API, the second the work routine declared
2280 // here for backward compatibilty.
2281 
2283 c_plsetopt( const char *opt, const char *optarg );
2284 
2285 #ifdef PL_DEPRECATED
2286 
2287 PLDLLIMPEXP int
2288 plSetOpt( const char *opt, const char *optarg );
2289 
2290 #endif // PL_DEPRECATED
2291 
2292 // Process options list using current options info.
2293 
2295 c_plparseopts( int *p_argc, char **argv, PLINT mode );
2296 
2297 // Print usage & syntax message.
2298 
2299 PLDLLIMPEXP void
2300 plOptUsage( void );
2301 
2302 // Miscellaneous
2303 
2304 // Set the output file pointer
2305 
2306 PLDLLIMPEXP void
2307 plgfile( FILE **p_file );
2308 
2309 // Get the output file pointer
2310 
2311 PLDLLIMPEXP void
2312 plsfile( FILE *file );
2313 
2314 // Get the escape character for text strings.
2315 
2316 PLDLLIMPEXP void
2317 plgesc( char *p_esc );
2318 
2319 // Front-end to driver escape function.
2320 
2321 PLDLLIMPEXP void
2322 pl_cmd( PLINT op, void *ptr );
2323 
2324 // Return full pathname for given file if executable
2325 
2327 plFindName( char *p );
2328 
2329 // Looks for the specified executable file according to usual search path.
2330 
2331 PLDLLIMPEXP char *
2332 plFindCommand( const char *fn );
2333 
2334 // Gets search name for file by concatenating the dir, subdir, and file
2335 // name, allocating memory as needed.
2336 
2337 PLDLLIMPEXP void
2338 plGetName( const char *dir, const char *subdir, const char *filename, char **filespec );
2339 
2340 // Prompts human to input an integer in response to given message.
2341 
2343 plGetInt( const char *s );
2344 
2345 // Prompts human to input a float in response to given message.
2346 
2348 plGetFlt( const char *s );
2349 
2350 // Nice way to allocate space for a vectored 2d grid
2351 
2352 // Allocates a block of memory for use as a 2-d grid of PLFLT's.
2353 
2354 PLDLLIMPEXP void
2355 plAlloc2dGrid( PLFLT ***f, PLINT nx, PLINT ny );
2356 
2357 // Frees a block of memory allocated with plAlloc2dGrid().
2358 
2359 PLDLLIMPEXP void
2360 plFree2dGrid( PLFLT **f, PLINT nx, PLINT ny );
2361 
2362 // Find the maximum and minimum of a 2d matrix allocated with plAllc2dGrid().
2363 
2364 PLDLLIMPEXP void
2365 plMinMax2dGrid( const PLFLT * const *f, PLINT nx, PLINT ny, PLFLT *fmax, PLFLT *fmin );
2366 
2367 // Wait for graphics input event and translate to world coordinates
2368 
2370 plGetCursor( PLGraphicsIn *gin );
2371 
2372 // Translates relative device coordinates to world coordinates.
2373 
2376 
2377 // Set the pointer to the data used in driver initialisation
2378 
2379 // N.B. Currently used only by the wxwidgets device driver and
2380 // associated binding. This function might be used for other device drivers
2381 // later on whether written in c++ or c. But this function is not part of the
2382 // common API and should not be propagated to any binding other than
2383 // c++.
2384 
2385 PLDLLIMPEXP void
2386 plsdevdata( void *data );
2387 
2388 #ifdef PL_DEPRECATED
2389 
2390 // These functions are deprecated and only retained for backwards
2391 // compatibility - do not use in new code.
2392 
2393 // Set current color (map 0) by hue, lightness, and saturation.
2394 
2395 PLDLLIMPEXP void
2396 c_plhls( PLFLT h, PLFLT l, PLFLT s );
2397 
2398 // Set line color by red, green, blue from 0. to 1.
2399 
2400 PLDLLIMPEXP void
2401 c_plrgb( PLFLT r, PLFLT g, PLFLT b );
2402 
2403 // Set line color by 8 bit RGB values.
2404 
2405 PLDLLIMPEXP void
2406 c_plrgb1( PLINT r, PLINT g, PLINT b );
2407 
2408 #endif // PL_DEPRECATED
2409 
2410 
2411 #ifdef __cplusplus
2412 }
2413 #endif
2414 #if 0
2415 #if defined ( __GNUC__ ) && __GNUC__ > 3
2416  #pragma GCC visibility pop
2417 #endif
2418 #endif
2419 
2420 #endif // __PLPLOT_H__
PLDLLIMPEXP void plsbopH(void(*handler)(void *, int *), void *handler_data)
Definition: plcore.c:3714
PLDLLIMPEXP void c_plxormod(PLBOOL mode, PLBOOL *status)
Definition: plctrl.c:2008
PLDLLIMPEXP void c_plsdev(const char *devname)
Definition: plcore.c:3619
int alt_hue_path
Definition: plplot.h:498
PLDLLIMPEXP void c_plsstrm(PLINT strm)
Definition: plcore.c:2600
PLDLLIMPEXP void plfimagefr(PLF2OPS idataops, PLPointer idatap, PLINT nx, PLINT ny, PLFLT xmin, PLFLT xmax, PLFLT ymin, PLFLT ymax, PLFLT zmin, PLFLT zmax, PLFLT valuemin, PLFLT valuemax, void(*pltr)(PLFLT, PLFLT, PLFLT *, PLFLT *, PLPointer), PLPointer pltr_data)
Definition: plimage.c:206
PLDLLIMPEXP void c_plsfont(PLINT family, PLINT style, PLINT weight)
Definition: plsym.c:2076
PLDLLIMPEXP char * plFindCommand(const char *fn)
Definition: plctrl.c:2136
void * var
Definition: plplot.h:349
static const char * name
Definition: tkMain.c:135
static char ** argv
Definition: qt.cpp:40
PLDLLIMPEXP void plsButtonEH(void(*ButtonEH)(PLGraphicsIn *, void *, int *), void *ButtonEH_data)
Definition: plcore.c:3704
PLDLLIMPEXP void c_plsesc(char esc)
Definition: plcore.c:3869
PLFLT dymi
Definition: plplot.h:401
PLDLLIMPEXP void c_plsvpa(PLFLT xmin, PLFLT xmax, PLFLT ymin, PLFLT ymax)
Definition: plvpor.c:508
PLDLLIMPEXP void c_plspal1(const char *filename, PLBOOL interpolate)
Definition: plctrl.c:1604
PLDLLIMPEXP void c_plscmap1l(PLBOOL itype, PLINT npts, const PLFLT *intensity, const PLFLT *coord1, const PLFLT *coord2, const PLFLT *coord3, const PLBOOL *alt_hue_path)
Definition: plctrl.c:641
PLDLLIMPEXP void c_plglevel(PLINT *p_level)
Definition: plcore.c:3686
PLFLT a
Definition: plplot.h:497
PLFLT h
Definition: plplot.h:493
PLDLLIMPEXP void c_plsfci(PLUNICODE fci)
Definition: plcore.c:3905
PLDLLIMPEXP PLINT plTranslateCursor(PLGraphicsIn *gin)
Definition: plpage.c:259
PLDLLIMPEXP void plResetOpts(void)
Definition: plargs.c:855
PLDLLIMPEXP void c_plconfigtime(PLFLT scale, PLFLT offset1, PLFLT offset2, PLINT ccontrol, PLBOOL ifbtime_offset, PLINT year, PLINT month, PLINT day, PLINT hour, PLINT min, PLFLT sec)
Definition: pltime.c:36
PLDLLIMPEXP void c_plshade(const PLFLT *const *a, PLINT nx, PLINT ny, PLINT(*defined)(PLFLT, PLFLT), PLFLT xmin, PLFLT xmax, PLFLT ymin, PLFLT ymax, PLFLT shade_min, PLFLT shade_max, PLINT sh_cmap, PLFLT sh_color, PLFLT sh_width, PLINT min_color, PLFLT min_width, PLINT max_color, PLFLT max_width, void(*fill)(PLINT, const PLFLT *, const PLFLT *), PLBOOL rectangular, void(*pltr)(PLFLT, PLFLT, PLFLT *, PLFLT *, PLPointer), PLPointer pltr_data)
Definition: plshade.c:319
PLDLLIMPEXP void c_plspage(PLFLT xp, PLFLT yp, PLINT xleng, PLINT yleng, PLINT xoff, PLINT yoff)
Definition: plcore.c:3572
static PLFLT ** xg
unsigned char b
Definition: plplot.h:484
PLDLLIMPEXP void plMinMax2dGrid(const PLFLT *const *f, PLINT nx, PLINT ny, PLFLT *fmax, PLFLT *fmin)
Definition: plmem.c:110
PLDLLIMPEXP void pltr0(PLFLT x, PLFLT y, PLFLT *tx, PLFLT *ty, PLPointer pltr_data)
PLDLLIMPEXP void c_plsdrawmode(PLINT mode)
Definition: plctrl.c:2038
void * client_data
Definition: plplot.h:348
PLDLLIMPEXP void c_plsori(PLINT ori)
Definition: plcore.c:3744
PLDLLIMPEXP void c_plgra(void)
Definition: plctrl.c:1993
int min(int a, int b)
PLDLLIMPEXP void c_plvpor(PLFLT xmin, PLFLT xmax, PLFLT ymin, PLFLT ymax)
Definition: plvpor.c:342
PLDLLIMPEXP void c_plreplot(void)
Definition: plcore.c:3485
PLDLLIMPEXP void c_plvasp(PLFLT aspect)
Definition: plvpor.c:456
PLDLLIMPEXP void c_plsmaj(PLFLT def, PLFLT scale)
Definition: plsdef.c:235
void mapform(PLINT n, PLFLT *x, PLFLT *y)
Definition: tclAPI.c:3640
PLDLLIMPEXP void plsxwin(PLINT window_id)
Definition: plcore.c:3957
PLDLLIMPEXP void c_plscolbga(PLINT r, PLINT g, PLINT b, PLFLT alpha)
Definition: plctrl.c:234
PLDLLIMPEXP PLINT plFindName(char *p)
Definition: plctrl.c:2422
PLUINT PLUNICODE
Definition: plplot.h:194
PLDLLIMPEXP void c_plscmap1n(PLINT ncol1)
Definition: plctrl.c:1057
PLDLLIMPEXP PLFLT c_plrandd(void)
Definition: plctrl.c:3071
PLINT nz
Definition: plplot.h:458
PLDLLIMPEXP void c_plstripa(PLINT id, PLINT pen, PLFLT x, PLFLT y)
Definition: plstripc.c:221
PLDLLIMPEXP void c_plgpage(PLFLT *p_xp, PLFLT *p_yp, PLINT *p_xleng, PLINT *p_yleng, PLINT *p_xoff, PLINT *p_yoff)
Definition: plcore.c:3558
PLDLLIMPEXP void plfsurf3d(const PLFLT *x, const PLFLT *y, PLF2OPS zops, PLPointer zp, PLINT nx, PLINT ny, PLINT opt, const PLFLT *clevel, PLINT nlevel)
Definition: plot3d.c:332
PLDLLIMPEXP void c_plctime(PLINT year, PLINT month, PLINT day, PLINT hour, PLINT min, PLFLT sec, PLFLT *ctime)
Definition: pltime.c:54
PLDLLIMPEXP void c_plsvect(const PLFLT *arrowx, const PLFLT *arrowy, PLINT npts, PLBOOL fill)
Definition: plvect.c:38
PLDLLIMPEXP void c_plsyax(PLINT digmax, PLINT digits)
Definition: plcore.c:4040
PLDLLIMPEXP void c_plmapline(void(*mapform)(PLINT, PLFLT *, PLFLT *), const char *name, PLFLT minx, PLFLT maxx, PLFLT miny, PLFLT maxy, const PLINT *plotentries, PLINT nplotentries)
PLDLLIMPEXP void c_plgcompression(PLINT *compression)
Definition: plcore.c:4264
PLDLLIMPEXP void c_plptex3(PLFLT wx, PLFLT wy, PLFLT wz, PLFLT dx, PLFLT dy, PLFLT dz, PLFLT sx, PLFLT sy, PLFLT sz, PLFLT just, const char *text)
Definition: plsym.c:1964
PLDLLIMPEXP void plsKeyEH(void(*KeyEH)(PLGraphicsIn *, void *, int *), void *KeyEH_data)
Definition: plcore.c:3694
PLDLLIMPEXP void plfvect(PLFLT(*getuv)(PLINT, PLINT, PLPointer), PLPointer up, PLPointer vp, PLINT nx, PLINT ny, PLFLT scale, void(*pltr)(PLFLT, PLFLT, PLFLT *, PLFLT *, PLPointer), PLPointer pltr_data)
Definition: plvect.c:136
PLDLLIMPEXP void c_plgfam(PLINT *p_fam, PLINT *p_num, PLINT *p_bmax)
Definition: plcore.c:3974
const char * desc
Definition: plplot.h:352
PLDLLIMPEXP void plsabort(void(*handler)(const char *))
Definition: plctrl.c:1928
PLDLLIMPEXP void plgDevs(const char ***p_menustr, const char ***p_devname, int *p_ndev)
Definition: plcore.c:3521
PLDLLIMPEXP void plsexit(int(*handler)(const char *))
Definition: plctrl.c:1977
PLFLT ** f
Definition: plplot.h:440
#define PL_MAXKEY
Definition: plplot.h:357
PLDLLIMPEXP void c_plszax(PLINT digmax, PLINT digits)
Definition: plcore.c:4058
PLDLLIMPEXP void plfplot3d(const PLFLT *x, const PLFLT *y, PLF2OPS zops, PLPointer zp, PLINT nx, PLINT ny, PLINT opt, PLBOOL side)
Definition: plot3d.c:865
void c_plrgb1(PLINT r, PLINT g, PLINT b)
PLDLLIMPEXP void c_plprec(PLINT setp, PLINT prec)
Definition: plcore.c:3839
PLDLLIMPEXP void c_plstart(const char *devname, PLINT nx, PLINT ny)
Definition: plcore.c:2281
PLFLT ** zg
Definition: plplot.h:469
PLFLT a
Definition: plplot.h:485
PLDLLIMPEXP void c_plmapfill(void(*mapform)(PLINT, PLFLT *, PLFLT *), const char *name, PLFLT minx, PLFLT maxx, PLFLT miny, PLFLT maxy, const PLINT *plotentries, PLINT nplotentries)
PLDLLIMPEXP PLINT c_plparseopts(int *p_argc, char **argv, PLINT mode)
Definition: plargs.c:877
PLDLLIMPEXP void c_plfill3(PLINT n, const PLFLT *x, const PLFLT *y, const PLFLT *z)
Definition: plfill.c:202
PLFLT l
Definition: plplot.h:494
tuple xmin
Definition: Plframe.py:907
PLDLLIMPEXP void c_plsurf3d(const PLFLT *x, const PLFLT *y, const PLFLT *const *z, PLINT nx, PLINT ny, PLINT opt, const PLFLT *clevel, PLINT nlevel)
Definition: plot3d.c:324
const PLFLT * f
Definition: plplot.h:429
PLDLLIMPEXP void pl_cmd(PLINT op, void *ptr)
Definition: plctrl.c:2108
PLDLLIMPEXP void c_plstyl(PLINT nms, const PLINT *mark, const PLINT *space)
Definition: plline.c:404
PLDLLIMPEXP void c_plwidth(PLFLT width)
Definition: plcore.c:3756
PLDLLIMPEXP void c_plaxes(PLFLT x0, PLFLT y0, const char *xopt, PLFLT xtick, PLINT nxsub, const char *yopt, PLFLT ytick, PLINT nysub)
Definition: plbox.c:135
PLDLLIMPEXP void plGetName(const char *dir, const char *subdir, const char *filename, char **filespec)
Definition: plctrl.c:2443
PLDLLIMPEXP PLF2OPS plf2ops_grid_row_major(void)
Definition: plf2ops.c:348
PLDLLIMPEXP PLF2OPS plf2ops_grid_col_major(void)
Definition: plf2ops.c:430
void * PLPointer
Definition: plplot.h:200
PLFLT exp_label_disp
Definition: plplot.h:516
PLDLLIMPEXP void c_pllegend(PLFLT *p_legend_width, PLFLT *p_legend_height, PLINT opt, PLINT position, PLFLT x, PLFLT y, PLFLT plot_width, PLINT bg_color, PLINT bb_color, PLINT bb_style, PLINT nrow, PLINT ncolumn, PLINT nlegend, const PLINT *opt_array, PLFLT text_offset, PLFLT text_scale, PLFLT text_spacing, PLFLT text_justification, const PLINT *text_colors, const char *const *text, const PLINT *box_colors, const PLINT *box_patterns, const PLFLT *box_scales, const PLFLT *box_line_widths, const PLINT *line_colors, const PLINT *line_styles, const PLFLT *line_widths, const PLINT *symbol_colors, const PLFLT *symbol_scales, const PLINT *symbol_numbers, const char *const *symbols)
Definition: pllegend.c:531
PLDLLIMPEXP void plsfile(FILE *file)
Definition: plcore.c:3781
PLDLLIMPEXP void c_plfont(PLINT ifont)
Definition: plsym.c:1323
tuple ymin
Definition: Plframe.py:908
PLDLLIMPEXP void c_plot3d(const PLFLT *x, const PLFLT *y, const PLFLT *const *z, PLINT nx, PLINT ny, PLINT opt, PLBOOL side)
Definition: plot3d.c:858
PLDLLIMPEXP void plfshade1(PLF2OPS zops, PLPointer zp, PLINT nx, PLINT ny, PLINT(*defined)(PLFLT, PLFLT), PLFLT xmin, PLFLT xmax, PLFLT ymin, PLFLT ymax, PLFLT shade_min, PLFLT shade_max, PLINT sh_cmap, PLFLT sh_color, PLFLT sh_width, PLINT min_color, PLFLT min_width, PLINT max_color, PLFLT max_width, void(*fill)(PLINT, const PLFLT *, const PLFLT *), PLINT rectangular, void(*pltr)(PLFLT, PLFLT, PLFLT *, PLFLT *, PLPointer), PLPointer pltr_data)
Definition: plshade.c:415
PLDLLIMPEXP void c_pladv(PLINT page)
Definition: plpage.c:34
PLDLLIMPEXP void plSetUsage(const char *program_string, const char *usage_string)
Definition: plargs.c:1287
PLDLLIMPEXP void pltr2f(PLFLT x, PLFLT y, PLFLT *tx, PLFLT *ty, void *pltr_data)
Definition: plcont.c:1306
PLINT ny
Definition: plplot.h:470
static PLFLT ** yg
PLDLLIMPEXP void plOptUsage(void)
Definition: plargs.c:1304
PLDLLIMPEXP void plsdevdata(void *data)
Definition: plcore.c:3823
PLDLLIMPEXP void c_plshades(const PLFLT *const *a, PLINT nx, PLINT ny, PLINT(*defined)(PLFLT, PLFLT), PLFLT xmin, PLFLT xmax, PLFLT ymin, PLFLT ymax, const PLFLT *clevel, PLINT nlevel, PLFLT fill_width, PLINT cont_color, PLFLT cont_width, void(*fill)(PLINT, const PLFLT *, const PLFLT *), PLBOOL rectangular, void(*pltr)(PLFLT, PLFLT, PLFLT *, PLFLT *, PLPointer), PLPointer pltr_data)
Definition: plshade.c:203
PLDLLIMPEXP void c_plpoin(PLINT n, const PLFLT *x, const PLFLT *y, PLINT code)
Definition: plsym.c:162
PLDLLIMPEXP void c_plmeridians(void(*mapform)(PLINT, PLFLT *, PLFLT *), PLFLT dlong, PLFLT dlat, PLFLT minlong, PLFLT maxlong, PLFLT minlat, PLFLT maxlat)
PLDLLIMPEXP void c_plsdiori(PLFLT rot)
Definition: plcore.c:1998
int PLINT
Definition: plplot.h:174
PLDLLIMPEXP void c_plgver(char *p_ver)
Definition: plcore.c:3949
PLINT PLBOOL
Definition: plplot.h:197
PLDLLIMPEXP void c_plgxax(PLINT *p_digmax, PLINT *p_digits)
Definition: plcore.c:4013
PLDLLIMPEXP void c_plmapstring(void(*mapform)(PLINT, PLFLT *, PLFLT *), const char *name, const char *string, PLFLT minx, PLFLT maxx, PLFLT miny, PLFLT maxy, const PLINT *plotentries, PLINT nplotentries)
plf2ops_t * PLF2OPS
Definition: plplot.h:555
PLDLLIMPEXP void c_pl_setcontlabelparam(PLFLT offset, PLFLT size, PLFLT spacing, PLINT active)
Definition: plcont.c:251
PLINT result
Definition: plplot.h:507
PLDLLIMPEXP void c_plhlsrgb(PLFLT h, PLFLT l, PLFLT s, PLFLT *p_r, PLFLT *p_g, PLFLT *p_b)
Definition: plctrl.c:1251
PLDLLIMPEXP void c_plscol0(PLINT icol0, PLINT r, PLINT g, PLINT b)
Definition: plctrl.c:282
PLDLLIMPEXP void c_plsmema(PLINT maxx, PLINT maxy, void *plotmem)
Definition: plcore.c:3662
PLDLLIMPEXP void plfgriddata(const PLFLT *x, const PLFLT *y, const PLFLT *z, PLINT npts, const PLFLT *xg, PLINT nptsx, const PLFLT *yg, PLINT nptsy, PLF2OPS zops, PLPointer zgp, PLINT type, PLFLT data)
Definition: plgridd.c:124
PLDLLIMPEXP void c_plpoly3(PLINT n, const PLFLT *x, const PLFLT *y, const PLFLT *z, const PLBOOL *draw, PLBOOL ifcc)
Definition: plline.c:266
PLFLT p
Definition: plplot.h:496
PLDLLIMPEXP void plseopH(void(*handler)(void *, int *), void *handler_data)
Definition: plcore.c:3723
PLDLLIMPEXP void c_plpsty(PLINT patt)
Definition: plsdef.c:327
PLDLLIMPEXP void c_plbox3(const char *xopt, const char *xlabel, PLFLT xtick, PLINT nxsub, const char *yopt, const char *ylabel, PLFLT ytick, PLINT nysub, const char *zopt, const char *zlabel, PLFLT ztick, PLINT nzsub)
Definition: plbox.c:593
PLDLLIMPEXP void c_plscmap0a(const PLINT *r, const PLINT *g, const PLINT *b, const PLFLT *alpha, PLINT ncol0)
Definition: plctrl.c:476
PLDLLIMPEXP void c_plschr(PLFLT def, PLFLT scale)
Definition: plsdef.c:202
PLFLT exp_label_pos
Definition: plplot.h:517
PLFLT exp_label_just
Definition: plplot.h:518
unsigned char g
Definition: plplot.h:483
PLDLLIMPEXP void c_plimage(const PLFLT *const *idata, PLINT nx, PLINT ny, PLFLT xmin, PLFLT xmax, PLFLT ymin, PLFLT ymax, PLFLT zmin, PLFLT zmax, PLFLT Dxmin, PLFLT Dxmax, PLFLT Dymin, PLFLT Dymax)
Definition: plimage.c:333
PLDLLIMPEXP void c_plpoin3(PLINT n, const PLFLT *x, const PLFLT *y, const PLFLT *z, PLINT code)
Definition: plsym.c:225
PLFLT wymi
Definition: plplot.h:402
PLDLLIMPEXP PLFLT plf2evalr(PLINT ix, PLINT iy, PLPointer plf2eval_data)
Definition: plcont.c:470
PLDLLIMPEXP void c_plspal0(const char *filename)
Definition: plctrl.c:1548
PLDLLIMPEXP void c_plgcmap1_range(PLFLT *min_color, PLFLT *max_color)
Definition: plctrl.c:914
PLDLLIMPEXP void c_plgcol0(PLINT icol0, PLINT *r, PLINT *g, PLINT *b)
Definition: plctrl.c:359
PLDLLIMPEXP void c_plgdidev(PLFLT *p_mar, PLFLT *p_aspect, PLFLT *p_jx, PLFLT *p_jy)
Definition: plcore.c:1983
PLDLLIMPEXP PLINT plGetInt(const char *s)
Definition: plctrl.c:2900
PLDLLIMPEXP void c_plsurf3dl(const PLFLT *x, const PLFLT *y, const PLFLT *const *z, PLINT nx, PLINT ny, PLINT opt, const PLFLT *clevel, PLINT nlevel, PLINT indexxmin, PLINT indexxmax, const PLINT *indexymin, const PLINT *indexymax)
Definition: plot3d.c:387
PLDLLIMPEXP void c_pltext(void)
Switches to text screen.
Definition: plctrl.c:2090
PLDLLIMPEXP void c_plerrx(PLINT n, const PLFLT *xmin, const PLFLT *xmax, const PLFLT *y)
Definition: pltick.c:179
PLDLLIMPEXP void c_plenv0(PLFLT xmin, PLFLT xmax, PLFLT ymin, PLFLT ymax, PLINT just, PLINT axis)
Definition: plvpor.c:103
int type
Definition: plplot.h:384
PLINT ny
Definition: plplot.h:441
PLDLLIMPEXP void c_plpath(PLINT n, PLFLT x1, PLFLT y1, PLFLT x2, PLFLT y2)
Definition: plline.c:94
PLDLLIMPEXP void plAlloc2dGrid(PLFLT ***f, PLINT nx, PLINT ny)
Definition: plmem.c:60
PLDLLIMPEXP void pldid2pc(PLFLT *xmin, PLFLT *ymin, PLFLT *xmax, PLFLT *ymax)
Definition: plcore.c:1667
PLDLLIMPEXP void c_plvect(const PLFLT *const *u, const PLFLT *const *v, PLINT nx, PLINT ny, PLFLT scale, void(*pltr)(PLFLT, PLFLT, PLFLT *, PLFLT *, PLPointer), PLPointer pltr_data)
Definition: plvect.c:252
PLDLLIMPEXP void c_plfamadv(void)
Definition: plcore.c:4000
PLDLLIMPEXP void plgesc(char *p_esc)
Definition: plcore.c:3893
PLDLLIMPEXP void c_plscmap1(const PLINT *r, const PLINT *g, const PLINT *b, PLINT ncol1)
Definition: plctrl.c:518
PLDLLIMPEXP PLFLT plGetFlt(const char *s)
Definition: plctrl.c:2935
PLDLLIMPEXP void c_plsmem(PLINT maxx, PLINT maxy, void *plotmem)
Definition: plcore.c:3652
PLDLLIMPEXP void c_plend(void)
Definition: plcore.c:2463
PLDLLIMPEXP void c_plseed(unsigned int seed)
Definition: plctrl.c:3058
PLDLLIMPEXP void c_plscolor(PLINT color)
Definition: plctrl.c:1192
PLDLLIMPEXP void c_plscol0a(PLINT icol0, PLINT r, PLINT g, PLINT b, PLFLT alpha)
Definition: plctrl.c:318
PLDLLIMPEXP void plfplot3dc(const PLFLT *x, const PLFLT *y, PLF2OPS zops, PLPointer zp, PLINT nx, PLINT ny, PLINT opt, const PLFLT *clevel, PLINT nlevel)
Definition: plot3d.c:889
PLDLLIMPEXP void c_plgstrm(PLINT *p_strm)
Definition: plcore.c:2631
PLDLLIMPEXP void c_plgdev(char *p_dev)
Definition: plcore.c:3637
PLDLLIMPEXP void c_plfontld(PLINT fnt)
Definition: plcore.c:3467
PLDLLIMPEXP void c_plssym(PLFLT def, PLFLT scale)
Definition: plsdef.c:250
PLDLLIMPEXP void c_plscmap1la(PLBOOL itype, PLINT npts, const PLFLT *intensity, const PLFLT *coord1, const PLFLT *coord2, const PLFLT *coord3, const PLFLT *alpha, const PLBOOL *alt_hue_path)
Definition: plctrl.c:727
PLDLLIMPEXP void plfcont(PLFLT(*f2eval)(PLINT, PLINT, PLPointer), PLPointer f2eval_data, PLINT nx, PLINT ny, PLINT kx, PLINT lx, PLINT ky, PLINT ly, const PLFLT *clevel, PLINT nlevel, void(*pltr)(PLFLT, PLFLT, PLFLT *, PLFLT *, PLPointer), PLPointer pltr_data)
Definition: plcont.c:541
PLDLLIMPEXP void c_plgfci(PLUNICODE *p_fci)
Definition: plcore.c:3915
PLDLLIMPEXP PLINT c_plgdrawmode(void)
Definition: plctrl.c:2061
const char * name
Definition: plplot.h:486
PLDLLIMPEXP void c_plcol0(PLINT icol0)
Definition: plctrl.c:141
PLDLLIMPEXP void plgFileDevs(const char ***p_menustr, const char ***p_devname, int *p_ndev)
Definition: plcore.c:3509
PLDLLIMPEXP void c_plwind(PLFLT xmin, PLFLT xmax, PLFLT ymin, PLFLT ymax)
Definition: plwind.c:33
PLDLLIMPEXP void c_plenv(PLFLT xmin, PLFLT xmax, PLFLT ymin, PLFLT ymax, PLINT just, PLINT axis)
Definition: plvpor.c:89
PLDLLIMPEXP void plfsurf3dl(const PLFLT *x, const PLFLT *y, PLF2OPS zops, PLPointer zp, PLINT nx, PLINT ny, PLINT opt, const PLFLT *clevel, PLINT nlevel, PLINT indexxmin, PLINT indexxmax, const PLINT *indexymin, const PLINT *indexymax)
Definition: plot3d.c:396
size_t size
Definition: plplot.h:562
PLDLLIMPEXP void c_plstring(PLINT n, const PLFLT *x, const PLFLT *y, const char *string)
Definition: plsym.c:98
const char * opt
Definition: plplot.h:346
PLDLLIMPEXP void c_plgfnam(char *fnam)
Definition: plcore.c:3790
PLDLLIMPEXP void c_plw3d(PLFLT basex, PLFLT basey, PLFLT height, PLFLT xmin, PLFLT xmax, PLFLT ymin, PLFLT ymax, PLFLT zmin, PLFLT zmax, PLFLT alt, PLFLT az)
Definition: plwind.c:137
PLDLLIMPEXP void c_plsdiplt(PLFLT xmin, PLFLT ymin, PLFLT xmax, PLFLT ymax)
Definition: plcore.c:1758
unsigned int keysym
Definition: plplot.h:386
PLDLLIMPEXP void c_plgcol0a(PLINT icol0, PLINT *r, PLINT *g, PLINT *b, PLFLT *alpha)
Definition: plctrl.c:396
PLDLLIMPEXP void c_plvpas(PLFLT xmin, PLFLT xmax, PLFLT ymin, PLFLT ymax, PLFLT aspect)
Definition: plvpor.c:386
PLDLLIMPEXP void c_plgvpd(PLFLT *p_xmin, PLFLT *p_xmax, PLFLT *p_ymin, PLFLT *p_ymax)
Definition: plcore.c:4076
PLDLLIMPEXP void c_plsfnam(const char *fnam)
Definition: plcore.c:3809
tuple xmax
Definition: Plframe.py:909
PLDLLIMPEXP void c_plgdiori(PLFLT *p_rot)
Definition: plcore.c:2121
PLDLLIMPEXP void c_plclear(void)
Definition: plpage.c:71
PLDLLIMPEXP void c_plshade1(const PLFLT *a, PLINT nx, PLINT ny, PLINT(*defined)(PLFLT, PLFLT), PLFLT xmin, PLFLT xmax, PLFLT ymin, PLFLT ymax, PLFLT shade_min, PLFLT shade_max, PLINT sh_cmap, PLFLT sh_color, PLFLT sh_width, PLINT min_color, PLFLT min_width, PLINT max_color, PLFLT max_width, void(*fill)(const PLINT, const PLFLT *, const PLFLT *), PLBOOL rectangular, void(*pltr)(PLFLT, PLFLT, PLFLT *, PLFLT *, PLPointer), PLPointer pltr_data)
PLDLLIMPEXP void c_plcpstrm(PLINT iplsr, PLBOOL flags)
Definition: plcore.c:2740
PLDLLIMPEXP void c_plmkstrm(PLINT *p_strm)
Definition: plcore.c:2650
PLDLLIMPEXP void c_plssub(PLINT nx, PLINT ny)
Definition: plcore.c:3596
void c_plrgb(PLFLT r, PLFLT g, PLFLT b)
PLDLLIMPEXP PLF2OPS plf2ops_grid_c(void)
Definition: plf2ops.c:233
PLDLLIMPEXP void pltr2(PLFLT x, PLFLT y, PLFLT *tx, PLFLT *ty, PLPointer pltr_data)
Definition: plcont.c:953
PLDLLIMPEXP PLINT c_plsetopt(const char *opt, const char *optarg)
Definition: plargs.c:761
PLDLLIMPEXP void c_pleop(void)
Definition: plpage.c:101
PLINT nz
Definition: plplot.h:430
PLDLLIMPEXP void c_plcolorbar(PLFLT *p_colorbar_width, PLFLT *p_colorbar_height, PLINT opt, PLINT position, PLFLT x, PLFLT y, PLFLT x_length, PLFLT y_length, PLINT bg_color, PLINT bb_color, PLINT bb_style, PLFLT low_cap_color, PLFLT high_cap_color, PLINT cont_color, PLFLT cont_width, PLINT n_labels, const PLINT *label_opts, const char *const *labels, PLINT n_axes, const char *const *axis_opts, const PLFLT *ticks, const PLINT *sub_ticks, const PLINT *n_values, const PLFLT *const *values)
Definition: pllegend.c:1525
PLDLLIMPEXP void c_plbox(const char *xopt, PLFLT xtick, PLINT nxsub, const char *yopt, PLFLT ytick, PLINT nysub)
Definition: plbox.c:89
PLDLLIMPEXP void c_plgchr(PLFLT *p_def, PLFLT *p_ht)
Definition: plcore.c:4067
PLDLLIMPEXP void c_plinit(void)
Definition: plcore.c:2301
PLDLLIMPEXP void plClearOpts(void)
Definition: plargs.c:842
static PLOptionTable options[]
Definition: tclMain.c:108
PLDLLIMPEXP void pltr1(PLFLT x, PLFLT y, PLFLT *tx, PLFLT *ty, PLPointer pltr_data)
Definition: plcont.c:886
PLINT subwindow
Definition: plplot.h:388
PLDLLIMPEXP void c_pllab(const char *xlabel, const char *ylabel, const char *tlabel)
Definition: plsym.c:531
PLDLLIMPEXP void c_plstripd(PLINT id)
Definition: plstripc.c:327
void(* label_func)(PLINT, PLFLT, char *, PLINT, PLPointer)
PLDLLIMPEXP void c_plpat(PLINT nlin, const PLINT *inc, const PLINT *del)
Definition: plsdef.c:293
PLDLLIMPEXP void c_plsmin(PLFLT def, PLFLT scale)
Definition: plsdef.c:220
PLDLLIMPEXP void c_plbtime(PLINT *year, PLINT *month, PLINT *day, PLINT *hour, PLINT *min, PLFLT *sec, PLFLT ctime)
Definition: pltime.c:26
PLDLLIMPEXP void c_plsdidev(PLFLT mar, PLFLT aspect, PLFLT jx, PLFLT jy)
Definition: plcore.c:1868
PLDLLIMPEXP void c_plsym(PLINT n, const PLFLT *x, const PLFLT *y, PLINT code)
Definition: plsym.c:118
PLDLLIMPEXP void plfshades(PLF2OPS zops, PLPointer zp, PLINT nx, PLINT ny, PLINT(*defined)(PLFLT, PLFLT), PLFLT xmin, PLFLT xmax, PLFLT ymin, PLFLT ymax, const PLFLT *clevel, PLINT nlevel, PLFLT fill_width, PLINT cont_color, PLFLT cont_width, void(*fill)(PLINT, const PLFLT *, const PLFLT *), PLINT rectangular, void(*pltr)(PLFLT, PLFLT, PLFLT *, PLFLT *, PLPointer), PLPointer pltr_data)
Definition: plshade.c:233
PLDLLIMPEXP void plfimage(PLF2OPS idataops, PLPointer idatap, PLINT nx, PLINT ny, PLFLT xmin, PLFLT xmax, PLFLT ymin, PLFLT ymax, PLFLT zmin, PLFLT zmax, PLFLT Dxmin, PLFLT Dxmax, PLFLT Dymin, PLFLT Dymax)
Definition: plimage.c:343
PLDLLIMPEXP void pldip2dc(PLFLT *xmin, PLFLT *ymin, PLFLT *xmax, PLFLT *ymax)
Definition: plcore.c:1713
PLDLLIMPEXP void c_plgcolbga(PLINT *r, PLINT *g, PLINT *b, PLFLT *alpha)
Definition: plctrl.c:265
PLDLLIMPEXP void c_plstring3(PLINT n, const PLFLT *x, const PLFLT *y, const PLFLT *z, const char *string)
Definition: plsym.c:301
void c_plhls(PLFLT h, PLFLT l, PLFLT s)
PLDLLIMPEXP void pltr2p(PLFLT x, PLFLT y, PLFLT *tx, PLFLT *ty, PLPointer pltr_data)
Definition: plcont.c:1125
float PLFLT
Definition: plplot.h:157
PLDLLIMPEXP PLF2OPS plf2ops_c(void)
Definition: plf2ops.c:126
PLDLLIMPEXP void c_plgradient(PLINT n, const PLFLT *x, const PLFLT *y, PLFLT angle)
Definition: plgradient.c:52
PLDLLIMPEXP void c_plscompression(PLINT compression)
Definition: plcore.c:4249
PLDLLIMPEXP void c_plsxax(PLINT digmax, PLINT digits)
Definition: plcore.c:4022
PLDLLIMPEXP void c_plscmap1a(const PLINT *r, const PLINT *g, const PLINT *b, const PLFLT *alpha, PLINT ncol1)
Definition: plctrl.c:559
PLDLLIMPEXP void c_plline(PLINT n, const PLFLT *x, const PLFLT *y)
Definition: plline.c:75
PLDLLIMPEXP void c_plsdimap(PLINT dimxmin, PLINT dimxmax, PLINT dimymin, PLINT dimymax, PLFLT dimxpmm, PLFLT dimypmm)
Definition: plcore.c:2136
PLDLLIMPEXP void c_pltimefmt(const char *fmt)
Definition: pltime.c:66
PLDLLIMPEXP void plfmeshc(const PLFLT *x, const PLFLT *y, PLF2OPS zops, PLPointer zp, PLINT nx, PLINT ny, PLINT opt, const PLFLT *clevel, PLINT nlevel)
Definition: plot3d.c:155
PLDLLIMPEXP void c_plmeshc(const PLFLT *x, const PLFLT *y, const PLFLT *const *z, PLINT nx, PLINT ny, PLINT opt, const PLFLT *clevel, PLINT nlevel)
Definition: plot3d.c:148
PLDLLIMPEXP PLFLT plf2eval(PLINT ix, PLINT iy, PLPointer plf2eval_data)
Definition: plcont.c:451
PLDLLIMPEXP PLINT plMergeOpts(PLOptionTable *options, const char *name, const char **notes)
Definition: plargs.c:795
PLDLLIMPEXP void c_plgvpw(PLFLT *p_xmin, PLFLT *p_xmax, PLFLT *p_ymin, PLFLT *p_ymax)
Definition: plcore.c:4087
PLDLLIMPEXP void c_plgyax(PLINT *p_digmax, PLINT *p_digits)
Definition: plcore.c:4031
PLDLLIMPEXP void c_plhist(PLINT n, const PLFLT *data, PLFLT datmin, PLFLT datmax, PLINT nbin, PLINT opt)
Definition: plhist.c:41
PLDLLIMPEXP void plsError(PLINT *errcode, char *errmsg)
Definition: plcore.c:3732
PLDLLIMPEXP void c_pllightsource(PLFLT x, PLFLT y, PLFLT z)
Definition: plot3d.c:99
PLDLLIMPEXP void c_plmtex3(const char *side, PLFLT disp, PLFLT pos, PLFLT just, const char *text)
Definition: plsym.c:1592
PLDLLIMPEXP void c_plimagefr(const PLFLT *const *idata, PLINT nx, PLINT ny, PLFLT xmin, PLFLT xmax, PLFLT ymin, PLFLT ymax, PLFLT zmin, PLFLT zmax, PLFLT valuemin, PLFLT valuemax, void(*pltr)(PLFLT, PLFLT, PLFLT *, PLFLT *, PLPointer), PLPointer pltr_data)
Definition: plimage.c:194
tuple ymax
Definition: Plframe.py:910
unsigned int state
Definition: plplot.h:385
PLDLLIMPEXP void c_plarc(PLFLT x, PLFLT y, PLFLT a, PLFLT b, PLFLT angle1, PLFLT angle2, PLFLT rotate, PLBOOL fill)
Definition: plarc.c:141
PLDLLIMPEXP void c_plslabelfunc(void(*label_func)(PLINT, PLFLT, char *, PLINT, PLPointer), PLPointer label_data)
Definition: plbox.c:2645
PLDLLIMPEXP void c_plgriddata(const PLFLT *x, const PLFLT *y, const PLFLT *z, PLINT npts, const PLFLT *xg, PLINT nptsx, const PLFLT *yg, PLINT nptsy, PLFLT **zg, PLINT type, PLFLT data)
Definition: plgridd.c:116
PLDLLIMPEXP void c_plptex(PLFLT x, PLFLT y, PLFLT dx, PLFLT dy, PLFLT just, const char *text)
Definition: plsym.c:716
unsigned char r
Definition: plplot.h:482
PLDLLIMPEXP void c_plscolbg(PLINT r, PLINT g, PLINT b)
Definition: plctrl.c:215
PLDLLIMPEXP void c_plstransform(void(*coordinate_transform)(PLFLT, PLFLT, PLFLT *, PLFLT *, PLPointer), PLPointer coordinate_transform_data)
Definition: plcore.c:4452
PLDLLIMPEXP void c_plvsta(void)
Definition: plvpor.c:307
PLDLLIMPEXP void c_plstripc(PLINT *id, const char *xspec, const char *yspec, PLFLT xmin, PLFLT xmax, PLFLT xjump, PLFLT ymin, PLFLT ymax, PLFLT xlpos, PLFLT ylpos, PLBOOL y_ascl, PLBOOL acc, PLINT colbox, PLINT collab, const PLINT colline[], const PLINT styline[], const char *legline[], const char *labx, const char *laby, const char *labtop)
PLDLLIMPEXP PLFLT plf2eval1(PLINT ix, PLINT iy, PLPointer plf2eval_data)
Definition: plcont.c:414
PLDLLIMPEXP void c_plflush(void)
Definition: plcore.c:2206
PLINT cmd
Definition: plplot.h:506
PLDLLIMPEXP void plfmesh(const PLFLT *x, const PLFLT *y, PLF2OPS zops, PLPointer zp, PLINT nx, PLINT ny, PLINT opt)
Definition: plot3d.c:122
PLDLLIMPEXP void c_plmtex(const char *side, PLFLT disp, PLFLT pos, PLFLT just, const char *text)
Definition: plsym.c:576
PLDLLIMPEXP void c_plcalc_world(PLFLT rx, PLFLT ry, PLFLT *wx, PLFLT *wy, PLINT *window)
Definition: plpage.c:289
unsigned int button
Definition: plplot.h:387
unsigned int PLUINT
Definition: plplot.h:173
PLDLLIMPEXP void plFree2dGrid(PLFLT **f, PLINT nx, PLINT ny)
static char errmsg[160]
Definition: tclAPI.c:146
PLDLLIMPEXP PLFLT plf2eval2(PLINT ix, PLINT iy, PLPointer plf2eval_data)
Definition: plcont.c:432
PLDLLIMPEXP void c_plstar(PLINT nx, PLINT ny)
Definition: plcore.c:2262
PLDLLIMPEXP void c_plgzax(PLINT *p_digmax, PLINT *p_digits)
Definition: plcore.c:4049
PLDLLIMPEXP void c_plfill(PLINT n, const PLFLT *x, const PLFLT *y)
Definition: plfill.c:132
#define PLDLLIMPEXP
Definition: pldll.h:49
PLFLT dY
Definition: plplot.h:391
PLDLLIMPEXP void c_plcol1(PLFLT col1)
Definition: plctrl.c:175
PLDLLIMPEXP void c_pllsty(PLINT lin)
Definition: plsdef.c:268
PLDLLIMPEXP void c_plsdiplz(PLFLT xmin, PLFLT ymin, PLFLT xmax, PLFLT ymax)
Definition: plcore.c:1782
PLDLLIMPEXP void c_plgdiplt(PLFLT *p_xmin, PLFLT *p_ymin, PLFLT *p_xmax, PLFLT *p_ymax)
Definition: plcore.c:1848
PLDLLIMPEXP void c_plline3(PLINT n, const PLFLT *x, const PLFLT *y, const PLFLT *z)
Definition: plline.c:131
PLFLT s
Definition: plplot.h:495
PLDLLIMPEXP void c_pljoin(PLFLT x1, PLFLT y1, PLFLT x2, PLFLT y2)
Definition: plline.c:62
dx
if { $zoomopts($this,1) == 0 } then {
Definition: Plframe.py:613
PLDLLIMPEXP void plfshade(PLFLT(*f2eval)(PLINT, PLINT, PLPointer), PLPointer f2eval_data, PLFLT(*c2eval)(PLINT, PLINT, PLPointer), PLPointer c2eval_data, PLINT nx, PLINT ny, PLFLT left, PLFLT right, PLFLT bottom, PLFLT top, PLFLT shade_min, PLFLT shade_max, PLINT sh_cmap, PLFLT sh_color, PLFLT sh_width, PLINT min_color, PLFLT min_width, PLINT max_color, PLFLT max_width, void(*fill)(PLINT, const PLFLT *, const PLFLT *), PLBOOL rectangular, void(*pltr)(PLFLT, PLFLT, PLFLT *, PLFLT *, PLPointer), PLPointer pltr_data)
Definition: plshade.c:381
PLDLLIMPEXP void c_pl_setcontlabelformat(PLINT lexp, PLINT sigdig)
Definition: plcont.c:260
PLDLLIMPEXP void plgfile(FILE **p_file)
Definition: plcore.c:3773
PLDLLIMPEXP void c_plbin(PLINT nbin, const PLFLT *x, const PLFLT *y, PLINT opt)
Definition: plhist.c:125
PLDLLIMPEXP void c_plscmap0n(PLINT ncol0)
Definition: plctrl.c:932
PLDLLIMPEXP void c_plmaptex(void(*mapform)(PLINT, PLFLT *, PLFLT *), const char *name, PLFLT dx, PLFLT dy, PLFLT just, const char *text, PLFLT minx, PLFLT maxx, PLFLT miny, PLFLT maxy, PLINT plotentry)
__int64 PLINT64
Definition: plplot.h:175
PLDLLIMPEXP void c_plot3dcl(const PLFLT *x, const PLFLT *y, const PLFLT *const *z, PLINT nx, PLINT ny, PLINT opt, const PLFLT *clevel, PLINT nlevel, PLINT indexxmin, PLINT indexxmax, const PLINT *indexymin, const PLINT *indexymax)
Definition: plot3d.c:919
PLDLLIMPEXP void c_plerry(PLINT n, const PLFLT *x, const PLFLT *ymin, const PLFLT *ymax)
Definition: pltick.c:200
PLDLLIMPEXP void c_plbop(void)
Definition: plpage.c:118
PLDLLIMPEXP void c_plend1(void)
Definition: plcore.c:2521
PLDLLIMPEXP PLINT plGetCursor(PLGraphicsIn *gin)
Definition: plpage.c:244
unsigned int width
Definition: plplot.h:411
void * buffer
Definition: plplot.h:563
long mode
Definition: plplot.h:350
PLDLLIMPEXP void c_plspause(PLBOOL pause)
Definition: plcore.c:3831
PLDLLIMPEXP void c_plscmap0(const PLINT *r, const PLINT *g, const PLINT *b, PLINT ncol0)
Definition: plctrl.c:434
unsigned int y
Definition: plplot.h:410
PLDLLIMPEXP void c_plscmap1_range(PLFLT min_color, PLFLT max_color)
Definition: plctrl.c:885
PLDLLIMPEXP void c_plgfont(PLINT *p_family, PLINT *p_style, PLINT *p_weight)
Definition: plsym.c:2120
PLFLT wY
Definition: plplot.h:392
PLDLLIMPEXP void c_plmap(void(*mapform)(PLINT, PLFLT *, PLFLT *), const char *name, PLFLT minx, PLFLT maxx, PLFLT miny, PLFLT maxy)
const char * syntax
Definition: plplot.h:351
PLDLLIMPEXP void c_plgcolbg(PLINT *r, PLINT *g, PLINT *b)
Definition: plctrl.c:249
PLFLT * zg
Definition: plplot.h:457
PLDLLIMPEXP void c_plmesh(const PLFLT *x, const PLFLT *y, const PLFLT *const *z, PLINT nx, PLINT ny, PLINT opt)
Definition: plot3d.c:116
PLDLLIMPEXP void c_plrgbhls(PLFLT r, PLFLT g, PLFLT b, PLFLT *p_h, PLFLT *p_l, PLFLT *p_s)
Definition: plctrl.c:1284
PLDLLIMPEXP void c_plot3dc(const PLFLT *x, const PLFLT *y, const PLFLT *const *z, PLINT nx, PLINT ny, PLINT opt, const PLFLT *clevel, PLINT nlevel)
Definition: plot3d.c:881
PLDLLIMPEXP void c_plsfam(PLINT fam, PLINT num, PLINT bmax)
Definition: plcore.c:3984
PLDLLIMPEXP void plfplot3dcl(const PLFLT *x, const PLFLT *y, PLF2OPS zops, PLPointer zp, PLINT nx, PLINT ny, PLINT opt, const PLFLT *clevel, PLINT nlevel, PLINT indexxmin, PLINT indexxmax, const PLINT *indexymin, const PLINT *indexymax)
PLDLLIMPEXP_CXX void fill(PLINT n, const PLFLT *x, const PLFLT *y)
Definition: plstream.cc:240
PLDLLIMPEXP void c_plcont(const PLFLT *const *f, PLINT nx, PLINT ny, PLINT kx, PLINT lx, PLINT ky, PLINT ly, const PLFLT *clevel, PLINT nlevel, void(*pltr)(PLFLT, PLFLT, PLFLT *, PLFLT *, PLPointer), PLPointer pltr_data)
Definition: plcont.c:513
PLDLLIMPEXP void c_plgspa(PLFLT *xmin, PLFLT *xmax, PLFLT *ymin, PLFLT *ymax)
Definition: plpage.c:222