-
Notifications
You must be signed in to change notification settings - Fork 99
Expand file tree
/
Copy pathgraphics.h
More file actions
142 lines (118 loc) · 5.99 KB
/
graphics.h
File metadata and controls
142 lines (118 loc) · 5.99 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
/* GNUPLOT - graphics.h */
/*[
* Copyright 1999, 2004
*
* 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"
#ifndef AXIS_INDEX
#include "axis.h"
#endif
/* types defined for 2D plotting */
typedef struct curve_points {
struct curve_points *next; /* pointer to next plot in linked list */
int token; /* last token used, for second parsing pass */
enum PLOT_TYPE plot_type; /* DATA2D? DATA3D? FUNC2D FUNC3D? NODATA? */
enum PLOT_STYLE plot_style; /* style set by "with" or by default */
char *title; /* plot title, a.k.a. key entry */
t_position *title_position; /* title at {beginning|end|<xpos>,<ypos>} */
TBOOLEAN title_no_enhanced; /* don't typeset title in enhanced mode */
TBOOLEAN title_is_automated;/* TRUE if title was auto-generated */
TBOOLEAN title_is_suppressed;/* TRUE if 'notitle' was specified */
TBOOLEAN noautoscale; /* ignore data from this plot during autoscaling */
struct lp_style_type lp_properties;
struct arrow_style_type arrow_properties;
struct fill_style_type fill_properties;
struct text_label *labels; /* Only used if plot_style == LABELPOINTS */
struct t_image image_properties; /* only used if plot_style is IMAGE or RGB_IMAGE */
struct udvt_entry *sample_var; /* used by '+' if plot has private sampling range */
struct udvt_entry *sample_var2; /* used by '++'if plot has private sampling range */
struct udft_entry plot_function; /* action table and dummy variables for function plot */
/* 2D and 3D plot structure fields overlay only to this point */
filledcurves_opts filledcurves_options;
int base_linetype; /* before any calls to load_linetype(), lc variable */
/* analogous to hidden3d_top_linetype in graph3d.h */
struct watch_t *watchlist; /* only used if watch conditions are active */
int ellipseaxes_units; /* Only used if plot_style == ELLIPSES */
struct histogram_style *histogram; /* Only used if plot_style == HISTOGRAM */
int histogram_sequence; /* Ordering of this dataset within the histogram */
enum PLOT_FILTER plot_filter; /* which filter was specified? */
enum PLOT_SMOOTH plot_smooth; /* which "smooth" method to be used? */
double smooth_parameter; /* e.g. optional bandwidth for smooth kdensity */
double smooth_period; /* e.g. 2pi for a circular function */
int boxplot_factors; /* Only used if plot_style == BOXPLOT */
hsteps_opts hsteps_options;
int p_max; /* how many points are allocated */
int p_count; /* count of points in points */
AXIS_INDEX x_axis; /* FIRST_X_AXIS or SECOND_X_AXIS */
AXIS_INDEX y_axis; /* FIRST_Y_AXIS or SECOND_Y_AXIS */
AXIS_INDEX z_axis; /* same as either x_axis or y_axis, for 5-column plot types */
int current_plotno; /* Only used by "pn" option of linespoints */
AXIS_INDEX p_axis; /* Only used for parallel axis plots */
double *varcolor; /* Only used if plot has variable color */
struct coordinate *points;
} curve_points;
/* externally visible variables of graphics.h */
/* 'set offset' status variables */
extern t_position loff, roff, toff, boff;
extern TBOOLEAN retain_offsets;
/* 'set bar' status */
extern double bar_size;
extern int bar_layer;
extern struct lp_style_type bar_lp;
/* 'set rgbmax {0|255}' */
extern double rgbmax;
/* function prototypes */
void do_plot(struct curve_points *, int);
void map_position(struct position * pos, int *x, int *y, const char *what);
void map_position_r(struct position* pos, double* x, double* y, const char* what);
void init_histogram(struct histogram_style *hist, text_label *title);
void free_histlist(struct histogram_style *hist);
typedef enum en_procimg_action {
IMG_PLOT,
IMG_UPDATE_AXES,
IMG_UPDATE_CORNERS
} t_procimg_action;
void process_image(void *plot, t_procimg_action action);
TBOOLEAN check_for_variable_color(struct curve_points *plot, double *colorvalue);
void autoscale_boxplot(struct curve_points *plot);
void place_objects(struct object *listhead, int layer, int dimensions);
void do_ellipse(int dimensions, t_ellipse *e, int style, TBOOLEAN do_own_mapping );
void do_sector(double cx, double cy, double rin, double rout, double arc_begin, double arc_end, double ratio, int style, TBOOLEAN complete_circle);
void place_pixmaps(int layer, int dimensions);
int filter_boxplot(struct curve_points *);
void attach_title_to_plot(struct curve_points *this_plot, legend_key *key);
/* Only used in hsteps style */
#define HSTEPS_DIR_BOTHSIDES 0
#define HSTEPS_DIR_FORWARD 1
#define HSTEPS_DIR_BACKWARD 2
#endif /* GNUPLOT_GRAPHICS_H */