1 /*
2  * CvsGraph graphical representation generator of brances and revisions
3  * of a file in cvs/rcs.
4  *
5  * Copyright (C) 2001  B. Stultiens
6  *
7  * This program is free software; you can redistribute it and/or modify
8  * it under the terms of the GNU General Public License as published by
9  * the Free Software Foundation; either version 2 of the License, or
10  * (at your option) any later version.
11  *
12  * This program is distributed in the hope that it will be useful,
13  * but WITHOUT ANY WARRANTY; without even the implied warranty of
14  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
15  * GNU General Public License for more details.
16  *
17  * You should have received a copy of the GNU General Public License
18  * along with this program; if not, write to the Free Software
19  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
20  */
21 
22 #ifndef __CVSGRAPH_H
23 #define __CVSGRAPH_H
24 
25 #define CONFFILENAME	"cvsgraph.conf"
26 
27 #ifndef ETCDIR
28 # define ETCDIR		"/usr/local/etc"
29 #endif
30 
31 #define DEBUG_CONF_LEX		0x01
32 #define DEBUG_CONF_YACC		0x02
33 #define DEBUG_RCS_LEX		0x04
34 #define DEBUG_RCS_YACC		0x08
35 #define DEBUG_RCS_FILE		0x10
36 
37 #define HTMLLEVEL_3		1	/* HTML 3.x compatibility */
38 #define HTMLLEVEL_4		2	/* HTML 4.x compatibility */
39 #define HTMLLEVEL_X		3	/* XHTML compatibility */
40 
41 extern int debuglevel;
42 
43 typedef struct __msg_stack_t
44 {
45 	int	severity;
46 	int	w;
47 	int	h;
48 	char	*msg;
49 } msg_stack_t;
50 
51 #define MSG_WARN	0
52 #define MSG_ERR		1
53 
54 void stack_msg(int severity, const char *fmt, ...);
55 
56 
57 typedef struct __font_t
58 {
59 	gdFontPtr	gdfont;
60 	char		*ttfont;
61 	double		ttsize;
62 } font_t;
63 
64 struct __node_t;
65 
66 typedef struct __color_t
67 {
68 	int	r;
69 	int	g;
70 	int	b;
71 	int	id;
72 	struct __node_t	*node;
73 } color_t;
74 
75 typedef struct __colorlist_t
76 {
77 	int	n;
78 	color_t	*clrs;
79 } colorlist_t;
80 
81 typedef struct __node_t
82 {
83 	int		key;
84 	int		op;
85 	char		*content;
86 	struct __node_t	*tcase;
87 	struct __node_t	*fcase;
88 	union {
89 		char	*str;
90 		color_t	clr;
91 	} value;
92 } node_t;
93 
94 typedef struct __stringlist_t
95 {
96 	int	n;
97 	char	**strs;
98 } stringlist_t;
99 
100 typedef struct __condstring_t
101 {
102 	char	*str;
103 	node_t	*node;
104 } condstring_t;
105 
106 typedef struct __config_t
107 {
108 	char	*cvsroot;
109 	char	*cvsmodule;
110 	char	*date_format;
111 
112 	color_t	color_bg;
113 	int	transparent_bg;
114 	int	box_shadow;
115 	int	upside_down;
116 	int	left_right;
117 	int	strip_untagged;
118 	int	strip_first_rev;
119 	int	auto_stretch;
120 	int	use_ttf;
121 	int	anti_alias;
122 	int	thick_lines;
123 	int	parse_logs;
124 	int	html_level;
125 
126 	font_t	msg_font;
127 	color_t	msg_color;
128 
129 	font_t	tag_font;
130 	color_t	tag_color;
131 	char	*tag_ignore;
132 	int	tag_ignore_merge;
133 	int	tag_nocase;
134 	int	tag_negate;
135 
136 	int	rev_hidenumber;
137 	font_t	rev_font;
138 	color_t	rev_color;
139 	color_t	rev_bgcolor;
140 	int	rev_separator;
141 	int	rev_minline;
142 	int	rev_maxline;
143 	int	rev_lspace;
144 	int	rev_rspace;
145 	int	rev_tspace;
146 	int	rev_bspace;
147 	condstring_t	rev_idtext;
148 	condstring_t	rev_text;
149 	color_t	rev_text_color;
150 	font_t	rev_text_font;
151 	int	rev_maxtags;
152 
153 	colorlist_t	merge_color;
154 	stringlist_t	merge_from;
155 	stringlist_t	merge_to;
156 	int	merge_findall;
157 	int	merge_front;
158 	int	merge_nocase;
159 	int	merge_arrows;
160 	int	merge_cvsnt;
161 	color_t	merge_cvsnt_color;
162 	int	merge_on_tag;
163 	int	arrow_width;
164 	int	arrow_length;
165 
166 	font_t	branch_font;
167 	color_t	branch_color;
168 	font_t	branch_tag_font;
169 	color_t	branch_tag_color;
170 	color_t	branch_bgcolor;
171 	int	branch_lspace;
172 	int	branch_rspace;
173 	int	branch_tspace;
174 	int	branch_bspace;
175 	int	branch_connect;
176 	int	branch_margin;
177 	int	branch_dupbox;
178 	int	branch_fold;
179 	int	branch_foldall;
180 	int	branch_resort;
181 	char	*branch_subtree;
182 
183 	char	*title;
184 	int	title_x;
185 	int	title_y;
186 	font_t	title_font;
187 	int	title_align;
188 	color_t	title_color;
189 
190 	int	margin_top;
191 	int	margin_bottom;
192 	int	margin_left;
193 	int	margin_right;
194 
195 	int	image_type;
196 	int	image_quality;
197 	int	image_compress;
198 	int	image_interlace;
199 
200 	char	*map_name;
201 	char	*map_branch_href;
202 	char	*map_branch_alt;
203 	char	*map_rev_href;
204 	char	*map_rev_alt;
205 	char	*map_diff_href;
206 	char	*map_diff_alt;
207 	char	*map_merge_href;
208 	char	*map_merge_alt;
209 
210 	char	*expand[10];
211 } config_t;
212 
213 extern config_t conf;
214 
215 #endif
216