/*
* $Id: graphics.h,v 1.21 2002/07/23 18:53:12 mikulik Exp $
*/
/* GNUPLOT - graphics.h */
/*[
* Copyright 1999
*
* Permission to use, copy, and distribute this software and its
* documentation for any purpose with or without fee is hereby granted,
* provided that the above copyright notice appear in all copies and
* that both that copyright notice and this permission notice appear
* in supporting documentation.
*
* Permission to modify the software is granted, but not the right to
* distribute the complete modified source code. Modifications are to
* be distributed as patches to the released version. Permission to
* distribute binaries produced by compiling modified sources is granted,
* provided you
* 1. distribute the corresponding source modifications from the
* released version in the form of a patch file along with the binaries,
* 2. add special version identification to distinguish your version
* in addition to the base release version number,
* 3. provide your name and address as the primary contact for the
* support of your modified version, and
* 4. retain our contact information in regard to use of the base
* software.
* Permission to distribute the released version of the source code along
* with corresponding source modifications in the form of a patch file is
* granted with same provisions 2 through 4 for binary distributions.
*
* This software is provided "as is" without express or implied warranty
* to the extent permitted by applicable law.
]*/
#ifndef GNUPLOT_GRAPHICS_H
# define GNUPLOT_GRAPHICS_H
#include "syscfg.h"
#include "gp_types.h"
#include "gadgets.h"
#include "term_api.h"
/* types defined for 2D plotting */
typedef struct curve_points {
struct curve_points *next; /* pointer to next plot in linked list */
int token; /* last token nr., for second pass */
enum PLOT_TYPE plot_type; /* data, function? 3D? */
enum PLOT_STYLE plot_style; /* which "with" option in use? */
enum PLOT_SMOOTH plot_smooth; /* which "smooth" method to be used? */
char *title; /* plot title, a.k.a. key entry */
int title_no_enhanced; /* don't typeset title in enhanced mode */
struct lp_style_type lp_properties;
int p_max; /* how many points are allocated */
int p_count; /* count of points in points */
int x_axis; /* FIRST_X_AXIS or SECOND_X_AXIS */
int y_axis; /* FIRST_Y_AXIS or SECOND_Y_AXIS */
/* HBB 20000504: new field */
int z_axis; /* same as either x_axis or y_axis, for 5-column plot types */
/* pm 5.1.2002: new field */
#ifdef PM3D
filledcurves_opts filledcurves_options;
#endif
struct coordinate GPHUGE *points;
} curve_points;
/* From ESR's "Actual code patch" :) */
/* An exclusion box.
* Right now, the only exclusion region is the key box, but that will
* change when we support boxed labels.
*/
struct clipbox {
int xl;
int xr;
int yt;
int yb;
};
/* externally visible variables of graphics.h */
/* 'set offset' status variables */
extern double loff, roff, toff, boff;
/* 'set bar' status */
extern double bar_size;
/* function prototypes */
void get_offsets __PROTO((struct text_label* this_label,
struct termentry* t, int* htic, int* vtic));
void do_plot __PROTO((struct curve_points *, int));
int label_width __PROTO((const char *, int *));
void map_position __PROTO((struct position * pos, unsigned int *x,
unsigned int *y, const char *what));
#if defined(sun386) || defined(AMIGA_SC_6_1)
double CheckLog __PROTO((TBOOLEAN, double, double));
#endif
void apply_head_properties __PROTO((struct position* headsize, TBOOLEAN filled));
#endif /* GNUPLOT_GRAPHICS_H */