TPCCLIB
Loading...
Searching...
No Matches
svg_vport.c
Go to the documentation of this file.
1
5/*****************************************************************************/
6#include "libtpcsvg.h"
7#include <math.h>
8/*****************************************************************************/
10extern int SVG_INLINE;
11/*****************************************************************************/
12
13/*****************************************************************************/
16 struct svg_viewport_pos *p
17) {
18 p->is=0;
19 p->x=0;
20 p->y=0;
21 p->w=0;
22 p->h=0;
23 p->chr_size=0;
24}
27 struct svg_coord *p
28) {
29 p->min=0;
30 p->max=0;
31 p->scale=0.0;
32 p->origo=0.0;
33 p->tick_nr=0;
34 for(int i=0; i<MAX_TICK_NR; i++) p->tick[i]=0.0;
35 p->tickscale=0.0;
36 p->tick_decimals=0.0;
37 for(int i=0; i<MAX_TICK_NR; i++) p->tick_label[i][0]=(char)0;
38 p->upper_margin=0;
39 p->fixed_min=0;
40 p->fixed_max=0;
41}
56/*****************************************************************************/
57
58/*****************************************************************************/
67 const int main_viewport_width,
69 const int main_viewport_height,
71 const int is_main_title,
73 const int is_yaxis_title,
75 const int is_xaxis_title,
77 const int is_label_area,
79 struct svg_viewports *vp,
81 int verbose
82) {
83 int ti, m, n;
84
85 if(verbose>0)
86 printf("%s(%d, %d, %d, %d, %d, %d, vp, %d)\n", __func__,
87 main_viewport_width, main_viewport_height, is_main_title, is_yaxis_title,
88 is_xaxis_title, is_label_area, verbose);
89
90 if(vp==NULL) return(1);
91 /* Set main viewport */
93 if(main_viewport_width<1) vp->main_viewport.w=SVG_VIEWPORT_WIDTH;
94 if(main_viewport_height<1) vp->main_viewport.h=SVG_VIEWPORT_HEIGHT;
95 /* Set viewport for main title(s) */
96 if(is_main_title==0) {
101 } else {
107 }
108 /* Set viewport for x axis title */
109 if(is_xaxis_title==0) {
116 } else {
123 }
124 /* Set viewport for y axis title */
125 if(is_yaxis_title==0) {
132 } else {
140 else
142 }
143 /* Set viewport for label area */
144 if(is_label_area==0) {
150 } else {
156 }
157 /* Set viewport for plot area */
163 /* Set plot area contents (inside plot area) */
165 for(ti=m=0; ti<vp->y.tick_nr; ti++) {n=strlen(vp->y.tick_label[ti]); if(n>m) m=n;}
166 if(verbose>2) printf("max_yaxis_label_len=%d\n", m);
168 else if(m<5) vp->coordinate_area_viewport.x=vp->plot_area_viewport.w/10;
169 else if(m<7) vp->coordinate_area_viewport.x=vp->plot_area_viewport.w/7; // prev 8
170 else vp->coordinate_area_viewport.x=vp->plot_area_viewport.w/4; // prev 5
174 /* Calculate the character size for tick labels etc */
176 ceil(0.62*(double)(vp->plot_area_viewport.h-vp->coordinate_area_viewport.h)); // prev 0.67
177
178 if(verbose>3) printf("coordinate_area_viewport.h := %d\n", vp->coordinate_area_viewport.h);
179
180 return(0);
181}
182/*****************************************************************************/
183
184/*****************************************************************************/
Header file for libtpcsvg.
#define MAX_TICK_NR
Definition libtpcsvg.h:25
#define SVG_VIEWPORT_WIDTH
Definition libtpcsvg.h:21
#define SVG_VIEWPORT_HEIGHT
Definition libtpcsvg.h:23
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
int SVG_INLINE
Definition svg_file.c:12
void svg_init_coord(struct svg_coord *p)
Definition svg_vport.c:26
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
void svg_init_viewports(struct svg_viewports *p)
Definition svg_vport.c:43
void svg_init_viewport_pos(struct svg_viewport_pos *p)
Definition svg_vport.c:15