Initial release of Maemo 5 port of gnuplot
[gnuplot] / src / graphics.h
diff --git a/src/graphics.h b/src/graphics.h
new file mode 100644 (file)
index 0000000..7e21899
--- /dev/null
@@ -0,0 +1,133 @@
+/*
+ * $Id: graphics.h,v 1.34.2.2 2008/02/28 22:58:25 sfeam Exp $
+ */
+
+/* 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"
+
+/* 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 */
+    TBOOLEAN title_no_enhanced;        /* don't typeset title in enhanced mode */
+    TBOOLEAN title_is_filename;        /* TRUE if title was auto-generated from filename */
+    TBOOLEAN title_is_suppressed;/* TRUE if 'notitle' was specified */
+    struct lp_style_type lp_properties;
+    struct arrow_style_type arrow_properties;
+    struct fill_style_type fill_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 */
+    filledcurves_opts filledcurves_options;
+    struct coordinate GPHUGE *points;
+#ifdef EAM_DATASTRINGS
+    struct text_label *labels; /* Only used if plot_style == LABELPOINTS */
+#endif
+#ifdef EAM_HISTOGRAMS
+    struct histogram_style *histogram; /* Only used if plot_style == HISTOGRAM */
+    int histogram_sequence;    /* Ordering of this dataset within the histogram */
+#endif
+} 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 do_plot __PROTO((struct curve_points *, int));
+int label_width __PROTO((const char *, int *));
+void map_position __PROTO((struct position * pos, int *x, int *y, const char *what));
+void map_position_r __PROTO((struct position* pos, double* x, double* 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 arrow_style_type *arrow_properties));
+
+#ifdef EAM_HISTOGRAMS
+void init_histogram __PROTO((struct histogram_style *hist, char *title));
+void free_histlist __PROTO((struct histogram_style *hist));
+#endif
+
+#ifdef WITH_IMAGE
+void plot_image_or_update_axes __PROTO((void *plot, t_imagecolor pixel_planes,
+                                       TBOOLEAN map_points, TBOOLEAN update_axes));
+#define PLOT_IMAGE(plot, pixel_planes) \
+       plot_image_or_update_axes(plot, pixel_planes, FALSE, FALSE)
+#define UPDATE_AXES_FOR_PLOT_IMAGE(plot, pixel_planes) \
+       plot_image_or_update_axes(plot, pixel_planes, FALSE, TRUE)
+#define SPLOT_IMAGE(plot, pixel_planes) \
+       plot_image_or_update_axes(plot, pixel_planes, TRUE, FALSE)
+#endif
+
+#ifdef EAM_OBJECTS
+void place_rectangles __PROTO((struct object *listhead, int layer, int dimensions, BoundingBox *clip_area));
+#else
+#define place_rectangles(listhead,layer,dimensions,clip_area) /* void() */
+#endif
+
+#endif /* GNUPLOT_GRAPHICS_H */