TPCCLIB
Loading...
Searching...
No Matches
libtpcsvg.h
Go to the documentation of this file.
1
5#ifndef _LIBTPCSVG_H
6#define _LIBTPCSVG_H
7/*****************************************************************************/
8
9/*****************************************************************************/
10#include "tpcclibConfig.h"
11/*****************************************************************************/
12#include <stdio.h>
13#include <stdlib.h>
14#include <string.h>
15#include <math.h>
16#include <time.h>
17/*****************************************************************************/
18
19/*****************************************************************************/
21#define SVG_VIEWPORT_WIDTH 10000
23#define SVG_VIEWPORT_HEIGHT 10000
25#define MAX_TICK_NR 12
27#define MAX_TICK_LABEL_LEN 20
29#define MAX_SVG_LEGEND_LEN 30
30/*****************************************************************************/
31
32/*****************************************************************************/
33/* axis */
35 const double begin, const double end, double *ticks, int *tick_nr,
36 double *scale_factor, int *tick_decimals, int verbose
37);
38void axis_check_range(double *begin, double *end, int verbose);
39void strRmExpZeroes(char *str);
40/*****************************************************************************/
41
42/*****************************************************************************/
44typedef enum {RECTANGLE,CIRCLE,UPTRIANGLE,DOWNTRIANGLE,DIAMOND,
45 LEFTTRIANGLE,RIGHTTRIANGLE} svgSymbolType;
47typedef enum {SYMBOLOPEN,SYMBOLFILLED} svgSymbolFill;
49typedef enum {BLACK,RED,BLUE,GREEN,PURPLE,OLIVE,AQUA,FUCHSIA,GRAY,LIME,MAROON,
50 NAVY,SILVER,TEAL,YELLOW} svgColor;
51/*****************************************************************************/
57 int is;
59 int x;
61 int y;
63 int w;
65 int h;
68};
69
122/*****************************************************************************/
136
138typedef struct svg_legends {
140
141 int _init;
143
144 int n;
148/*****************************************************************************/
149
150/*****************************************************************************/
151/* svg_file.c */
152extern FILE *svg_initiate(
153 const char *filename, const double height, const double width,
154 struct svg_viewports *vp, char *errmsg, int verbose
155);
156extern int svg_close(
157 FILE *fp, char *errmsg, int verbose
158);
159extern FILE *svg_xhtml_initiate(
160 const char *filename, const char *XHTML_title, char *errmsg, int verbose
161);
162extern int svg_xhtml_close(
163 FILE *fp, char *errmsg, int verbose
164);
165extern int svg_xhtml_svg_open(
166 FILE *fp, const double height, const double width, struct svg_viewports *vp,
167 char *errmsg, int verbose
168);
169extern int svg_xhtml_svg_close(
170 FILE *fp, char *errmsg, int verbose
171);
172extern int svg_write(
173 FILE *fp, const char *svg_string, char *errmsg, int verbose
174);
175/*****************************************************************************/
176/* svg_vport.c */
177extern void svg_init_viewport_pos(struct svg_viewport_pos *p);
178extern void svg_init_coord(struct svg_coord *p);
179extern void svg_init_viewports(struct svg_viewports *p);
180extern int svg_define_viewports(
181 const int main_viewport_width, const int main_viewport_height,
182 const int is_main_title, const int is_yaxis_title, const int is_xaxis_title,
183 const int is_label_area, struct svg_viewports *vp, int verbose
184);
185/*****************************************************************************/
186/* svg_plot.c */
187extern int svg_start_plot_viewport(
188 FILE *fp, struct svg_viewports *vp, char *errmsg, int verbose
189);
190extern int svg_end_plot_viewport(
191 FILE *fp, /*struct svg_viewports *vp,*/ char *errmsg, int verbose
192);
194 FILE *fp, struct svg_viewports *vp, char *errmsg, int verbose
195);
197 FILE *fp, char *errmsg, int verbose
198);
199extern int svg_calculate_axes(
200 struct svg_viewports *vp, int verbose
201);
202extern int svg_write_axes(
203 FILE *fp, struct svg_viewports *vp, char *errmsg, int verbose
204);
205extern int svg_write_xticks(
206 FILE *fp, struct svg_viewports *vp, char *errmsg, int verbose
207);
208extern int svg_write_yticks(
209 FILE *fp, struct svg_viewports *vp, char *errmsg, int verbose
210);
211extern int svg_write_tac(
212 FILE *fp, struct svg_viewports *vp, const int plot_type, const char *tac_id,
213 const char *tac_title, double *x, double *y, const int data_nr,
214 const char *color, const svgSymbolType symbol_type, const svgSymbolFill symbol_fill,
215 char *errmsg, int verbose
216);
217extern int get_line_intersection(
218 const double a1x, const double a1y, const double a2x, const double a2y,
219 const double b1x, const double b1y, const double b2x, const double b2y,
220 double *ix, double *iy, int verbose
221);
223 const double x1, const double y1, const double x2, const double y2,
224 struct svg_viewport_pos *cavp,
225 double *nx1, double *ny1, double *nx2, double *ny2, int verbose
226);
227/*****************************************************************************/
228/* svg_title.c */
229extern int svg_create_main_title(
230 FILE *fp, const char *main_title_text, const char *sub_title_text,
231 struct svg_viewports *vp, char *errmsg, int verbose
232);
233extern int svg_create_xaxis_title(
234 FILE *fp, const char *title_text, struct svg_viewports *vp,
235 char *errmsg, int verbose
236);
237extern int svg_create_yaxis_title(
238 FILE *fp, const char *title_text, struct svg_viewports *vp,
239 char *errmsg, int verbose
240);
241/*****************************************************************************/
242/* svg_defs.c */
243extern int svg_define_symbols(FILE *fp, char *errmsg, int verbose);
244extern char *svgColorName(const svgColor index);
245extern char *svgSymbolName(const svgSymbolType index);
246/*****************************************************************************/
247/* svg_legend.c */
248extern void svg_init_legends(
249 SVG_LEGENDS *legends
250);
251extern void svg_legend_empty(
252 SVG_LEGENDS *legends
253);
254extern int svg_legend_add(
255 SVG_LEGENDS *legends, const int plot_type, const int symbol_type, const svgSymbolFill symbol_fill,
256 const int color, const char *text
257);
258extern int svg_create_legends(
259 FILE *fp, struct svg_viewports *vp, SVG_LEGENDS *legends,
260 char *errmsg, int verbose
261);
262extern char *svg_str_encode(
263 const char *s
264);
265/*****************************************************************************/
266
267/*****************************************************************************/
268#endif // _LIBTPCSVG_H
void svg_legend_empty(SVG_LEGENDS *legends)
Definition svg_legend.c:26
int svg_write_xticks(FILE *fp, struct svg_viewports *vp, char *errmsg, int verbose)
Definition svg_plot.c:555
#define MAX_TICK_LABEL_LEN
Definition libtpcsvg.h:27
void strRmExpZeroes(char *str)
Definition axis.c:179
void svg_init_legends(SVG_LEGENDS *legends)
Definition svg_legend.c:14
FILE * svg_xhtml_initiate(const char *filename, const char *XHTML_title, char *errmsg, int verbose)
Definition svg_file.c:131
int svg_xhtml_svg_open(FILE *fp, const double height, const double width, struct svg_viewports *vp, char *errmsg, int verbose)
Definition svg_file.c:231
int svg_create_xaxis_title(FILE *fp, const char *title_text, struct svg_viewports *vp, char *errmsg, int verbose)
Definition svg_title.c:126
#define MAX_SVG_LEGEND_LEN
Definition libtpcsvg.h:29
char * svgColorName(const svgColor index)
Definition svg_defs.c:38
int svg_create_main_title(FILE *fp, const char *main_title_text, const char *sub_title_text, struct svg_viewports *vp, char *errmsg, int verbose)
Definition svg_title.c:17
svgColor
Definition libtpcsvg.h:49
int svg_legend_add(SVG_LEGENDS *legends, const int plot_type, const int symbol_type, const svgSymbolFill symbol_fill, const int color, const char *text)
Definition svg_legend.c:43
void svg_init_coord(struct svg_coord *p)
Definition svg_vport.c:26
char * svgSymbolName(const svgSymbolType index)
Definition svg_defs.c:67
svgSymbolType
Definition libtpcsvg.h:44
#define MAX_TICK_NR
Definition libtpcsvg.h:25
int svg_xhtml_close(FILE *fp, char *errmsg, int verbose)
Definition svg_file.c:206
int svg_define_viewports(const int main_viewport_width, const int main_viewport_height, const int is_main_title, const int is_yaxis_title, const int is_xaxis_title, const int is_label_area, struct svg_viewports *vp, int verbose)
Definition svg_vport.c:65
int svg_end_plot_viewport(FILE *fp, char *errmsg, int verbose)
Definition svg_plot.c:238
int svg_start_coordinate_viewport(FILE *fp, struct svg_viewports *vp, char *errmsg, int verbose)
Definition svg_plot.c:276
int svg_create_legends(FILE *fp, struct svg_viewports *vp, SVG_LEGENDS *legends, char *errmsg, int verbose)
Definition svg_legend.c:76
void svg_init_viewports(struct svg_viewports *p)
Definition svg_vport.c:43
FILE * svg_initiate(const char *filename, const double height, const double width, struct svg_viewports *vp, char *errmsg, int verbose)
Definition svg_file.c:22
void axis_check_range(double *begin, double *end, int verbose)
Definition axis.c:116
int svg_calculate_axes(struct svg_viewports *vp, int verbose)
Definition svg_plot.c:364
int svg_write_axes(FILE *fp, struct svg_viewports *vp, char *errmsg, int verbose)
Definition svg_plot.c:437
int svg_end_coordinate_viewport(FILE *fp, char *errmsg, int verbose)
Definition svg_plot.c:327
int svg_define_symbols(FILE *fp, char *errmsg, int verbose)
Definition svg_defs.c:83
int svg_start_plot_viewport(FILE *fp, struct svg_viewports *vp, char *errmsg, int verbose)
Definition svg_plot.c:181
int get_line_intersection(const double a1x, const double a1y, const double a2x, const double a2y, const double b1x, const double b1y, const double b2x, const double b2y, double *ix, double *iy, int verbose)
Definition svg_plot.c:19
svgSymbolFill
Definition libtpcsvg.h:47
int svg_write(FILE *fp, const char *svg_string, char *errmsg, int verbose)
Definition svg_file.c:304
int svg_create_yaxis_title(FILE *fp, const char *title_text, struct svg_viewports *vp, char *errmsg, int verbose)
Definition svg_title.c:197
int axis_tick_positions(const double begin, const double end, double *ticks, int *tick_nr, double *scale_factor, int *tick_decimals, int verbose)
Definition axis.c:14
int check_intersection_with_viewport(const double x1, const double y1, const double x2, const double y2, struct svg_viewport_pos *cavp, double *nx1, double *ny1, double *nx2, double *ny2, int verbose)
Definition svg_plot.c:73
int svg_write_yticks(FILE *fp, struct svg_viewports *vp, char *errmsg, int verbose)
Definition svg_plot.c:655
void svg_init_viewport_pos(struct svg_viewport_pos *p)
Definition svg_vport.c:15
int svg_write_tac(FILE *fp, struct svg_viewports *vp, const int plot_type, const char *tac_id, const char *tac_title, double *x, double *y, const int data_nr, const char *color, const svgSymbolType symbol_type, const svgSymbolFill symbol_fill, char *errmsg, int verbose)
Definition svg_plot.c:746
int svg_xhtml_svg_close(FILE *fp, char *errmsg, int verbose)
Definition svg_file.c:283
int svg_close(FILE *fp, char *errmsg, int verbose)
Definition svg_file.c:107
char * svg_str_encode(const char *s)
Definition svg_legend.c:256
int plot_type
Definition libtpcsvg.h:126
svgColor color
Definition libtpcsvg.h:132
svgSymbolType symbol_type
Definition libtpcsvg.h:128
svgSymbolFill symbol_fill
Definition libtpcsvg.h:130
SVG_LEGEND * l
Definition libtpcsvg.h:146
int upper_margin
Definition libtpcsvg.h:93
double tickscale
Definition libtpcsvg.h:87
int tick_nr
Definition libtpcsvg.h:83
double origo
Definition libtpcsvg.h:81
double scale
Definition libtpcsvg.h:79
int fixed_max
Definition libtpcsvg.h:97
int tick_decimals
Definition libtpcsvg.h:89
double tick[MAX_TICK_NR]
Definition libtpcsvg.h:85
double max
Definition libtpcsvg.h:77
int fixed_min
Definition libtpcsvg.h:95
char tick_label[MAX_TICK_NR][MAX_TICK_LABEL_LEN+1]
Definition libtpcsvg.h:91
double min
Definition libtpcsvg.h:75
struct svg_viewport_pos coordinate_area_viewport
Definition libtpcsvg.h:116
struct svg_viewport_pos main_title_viewport
Definition libtpcsvg.h:106
struct svg_viewport_pos label_area_viewport
Definition libtpcsvg.h:112
struct svg_coord x
Definition libtpcsvg.h:118
struct svg_viewport_pos main_viewport
Definition libtpcsvg.h:104
struct svg_viewport_pos yaxis_title_viewport
Definition libtpcsvg.h:108
struct svg_coord y
Definition libtpcsvg.h:120
struct svg_viewport_pos plot_area_viewport
Definition libtpcsvg.h:114
struct svg_viewport_pos xaxis_title_viewport
Definition libtpcsvg.h:110