[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[mgp-users 01096] Pregap?



I've attached a patch again CVS for the pregap feature I talked about 
yesterday.  (The patch also contains some yacc/lex noice for the 
%defpage feature, but I havn't started implimenting it yet).

My tests were ... minimal.  So if anyone wants to point out things I 
missed, feel free.

Er, who do I talk to to see if this will be comitted?

Doug
-- 
dougk@tislabs.com
dkilpatr@nai.com
? .draw.c.swp
? pregap.patch
Index: draw.c
===================================================================
RCS file: /cvsmgp/kit/draw.c,v
retrieving revision 1.194
diff -u -r1.194 draw.c
--- draw.c	2002/09/17 22:23:30	1.194
+++ draw.c	2002/11/22 05:52:28
@@ -485,6 +485,10 @@
 		vert_gap[caching] = cp->cti_value;
 		break;
 
+	case CTL_VPREGAP:
+		vert_pregap[caching] = cp->cti_value;
+		break;
+
 	case CTL_HGAP:
 		horiz_gap[caching] = cp->cti_value;
 		break;
@@ -1074,6 +1078,8 @@
 
 	p = (u_char *)data;
 
+	state->ypos += VERT_PREGAP(char_size[caching]);
+
 	while (*p && *p != '\n') {
 		/* 94x94 charset */
 		if (p[0] == 0x1b && p[1] == '$'
@@ -1839,7 +1845,7 @@
 	} drawarea[MAXDRAWAREA];
 	int areaindex = 0;
 #define addarea(X) \
-{\
+do {\
 	if (areaindex == MAXDRAWAREA){\
 		fprintf(stderr, "too many drawarea (increase MAXDRAWAREA)\n");\
 			exit(1);\
@@ -1849,7 +1855,7 @@
 	drawarea[areaindex].width = obj->data.X->xmax+1;\
 	drawarea[areaindex].height = obj->data.X->height+1;\
 	areaindex ++;\
-}
+} while (0)
 #if 0
 	char ch[2];
 #endif
@@ -3168,6 +3174,7 @@
 	width -= swidth;
 	st = cp->ctb_start * state->width / 100 + state->xoff;
 	len = cp->ctb_length * state->width / 100;
+	state->ypos += VERT_PREGAP(char_size[caching])/2;
 	XFillRectangle(display, state->target, gcbar, st, state->ypos + state->yoff, len, width);
 	XFillRectangle(display, state->target, gcsbar, st, state->ypos + state->yoff + width, len, swidth);
 
@@ -4012,6 +4019,7 @@
 	char_size[0] = char_size[1];
 	horiz_gap[0] = horiz_gap[1];
 	vert_gap[0] = vert_gap[1];
+	vert_pregap[0] = vert_pregap[1];
 	fore_color[0] = fore_color[1];
 	back_color[0] = back_color[1];
 	ctrl_color[0] = ctrl_color[1];
Index: globals.c
===================================================================
RCS file: /cvsmgp/kit/globals.c,v
retrieving revision 1.46
diff -u -r1.46 globals.c
--- globals.c	2001/09/17 14:48:30	1.46
+++ globals.c	2002/11/22 05:52:29
@@ -76,6 +76,7 @@
 u_int char_size[2];
 u_int horiz_gap[2] = {DEFAULT_HGAP, DEFAULT_HGAP};
 u_int vert_gap[2] = {DEFAULT_VGAP, DEFAULT_VGAP};
+u_int vert_pregap[2] = {DEFAULT_VPREGAP, DEFAULT_VPREGAP};
 u_int depth;
 u_long fore_color[2];
 u_long back_color[2];
@@ -150,5 +151,7 @@
 /*CTL*/	{ CTL_ANIM,		T_STR,	"anim", 4 },
 /*CTL*/	{ CTL_VALIGN,		T_STR,	"valign", 6 },
 /*CTL*/	{ CTL_AREA,		T_STR,	"area", 4 },
+/*CTL*/	{ CTL_VPREGAP,		T_INT,	"vpregap", 7 },
+/*CTL*/	{ CTL_DEFPAGE,		T_INT,	"default", 7 },
 	{ 0, 0, NULL, 0 },
 };
Index: grammar.y
===================================================================
RCS file: /cvsmgp/kit/grammar.y,v
retrieving revision 1.41
diff -u -r1.41 grammar.y
--- grammar.y	2001/09/17 14:48:30	1.41
+++ grammar.y	2002/11/22 05:52:32
@@ -732,10 +732,11 @@
 %token KW_QUALITY KW_ICON KW_LEFTFILL KW_XSYSTEM KW_VFCAP KW_TFONT KW_TFDIR
 %token KW_DEFFONT KW_FONT KW_TFONT0 KW_EMBED KW_ENDEMBED KW_NEWIMAGE
 %token KW_CHARSET KW_TMFONT KW_PCACHE KW_TMFONT0 KW_ANIM KW_VALIGN KW_AREA
+%token KW_VPREGAP KW_DEFPAGE
 
 %type <ct> toplevel
-%type <ct> line defaultline tabline shellline deffontline
-%type <ct> cmd defaultcmd tabcmd  deffontcmd
+%type <ct> line defaultline defpageline tabline shellline deffontline
+%type <ct> cmd defaultcmd defpagecmd tabcmd  deffontcmd
 %type <ct> nid args arg
 %type <i> NUM
 %type <d> DOUBLE
@@ -744,6 +745,7 @@
 %%
 toplevel: line			{ root = $$; }
 	| defaultline		{ root = $$; }
+        | defpageline           { root = $$; }
 	| tabline		{ root = $$; }
 	| shellline		{ root = $$; }
 	| deffontline		{ root = $$; }
@@ -751,8 +753,13 @@
 line:	  cmd			{ $$ = $1; }
 	| cmd COMMA line	{ $$ = $1; $$->ct_next = $3; }
 	;
+
 defaultline: defaultcmd line	{ $$ = $1; $$->ct_next = $2; }
 	;
+
+defpageline: defpagecmd line	{ $$ = $1; $$->ct_next = $2; }
+	;
+
 tabline: tabcmd line		{ $$ = $1; $$->ct_next = $2; }
 	;
 deffontline: deffontcmd line	{ $$ = $1; $$->ct_next = $2; }
@@ -801,6 +808,7 @@
 	| KW_SIZE DOUBLE	{ $$ = gen_double(CTL_SIZE, $2); }
 	| KW_HGAP NUM	{ $$ = gen_int(CTL_HGAP, $2); }
 	| KW_VGAP NUM	{ $$ = gen_int(CTL_VGAP, $2); }
+	| KW_VPREGAP NUM	{ $$ = gen_int(CTL_VPREGAP, $2); }
 	| KW_GAP NUM	{ $$ = gen_int(CTL_GAP, $2); }
 	| KW_QUALITY NUM
 			{ if (!quality_flag)
@@ -1001,6 +1009,11 @@
 defaultcmd: KW_DEFAULT NUM
 			{ $$ = gen_int(CTL_DEFAULT, $2); }
 	;
+
+defpagecmd: KW_DEFPAGE STR NUM
+			{ $$ = gen_int(CTL_DEFPAGE, $3); }
+	;
+
 deffontcmd: KW_DEFFONT STR
 			{ $$ = gen_str(CTL_DEFFONT, $2); }
 	;
Index: mgp.h
===================================================================
RCS file: /cvsmgp/kit/mgp.h,v
retrieving revision 1.128
diff -u -r1.128 mgp.h
--- mgp.h	2001/09/17 14:48:30	1.128
+++ mgp.h	2002/11/22 05:52:34
@@ -103,6 +103,7 @@
 #define DEFAULT_CHARSIZE	10	/* 10% of height */
 #define DEFAULT_HGAP		0
 #define DEFAULT_VGAP		15
+#define DEFAULT_VPREGAP		0
 #define DEFAULT_BQUALITY	100
 
 #define XLFD_HYPHEN	14
@@ -563,6 +564,7 @@
 extern u_int char_size[2];
 extern u_int horiz_gap[2];
 extern u_int vert_gap[2];
+extern u_int vert_pregap[2];
 extern u_int depth;
 extern Visual *visual;
 extern u_long fore_color[2];
@@ -574,6 +576,7 @@
 extern char mgp_charset[256];
 
 #define VERT_GAP(s)		((s) * vert_gap[caching] / 100)
+#define VERT_PREGAP(s)		((s) * vert_pregap[caching] / 100)
 #define HORIZ_GAP(s)		((s) * horiz_gap[caching] / 100)
 #define VERT_STEP(s)		((s) + VERT_GAP(s))
 #define HORIZ_STEP(s, x)	((x) + HORIZ_GAP(s))
Index: parse.c
===================================================================
RCS file: /cvsmgp/kit/parse.c,v
retrieving revision 1.87
diff -u -r1.87 parse.c
--- parse.c	2002/02/08 05:37:03	1.87
+++ parse.c	2002/11/22 05:52:37
@@ -842,6 +842,8 @@
 	tmpint[2]->cti_value = DEFAULT_VGAP;
 	tmpint[3] = ctlalloc1(CTL_QUALITY);
 	tmpint[3]->cti_value = DEFAULT_BQUALITY;
+	tmpint[4] = ctlalloc1(CTL_VPREGAP);
+	tmpint[4]->cti_value = DEFAULT_VPREGAP;
 	tmpvoid[0] = ctlalloc1(CTL_LEFT);
 	tmparea[0] = ctlalloc1(CTL_AREA);
 	tmparea[0]->ctar_width = 100;
@@ -957,6 +959,7 @@
 				case CTL_HGAP: tmpint[1] = cp; break;
 				case CTL_VGAP: tmpint[2] = cp; break;
 				case CTL_QUALITY: tmpint[3] = cp; break;
+				case CTL_VPREGAP: tmpint[4] = cp; break;
 
 				case CTL_LEFT: tmpvoid[0] = cp; break;
 				case CTL_RIGHT: tmpvoid[0] = cp; break;
Index: scanner.l
===================================================================
RCS file: /cvsmgp/kit/scanner.l,v
retrieving revision 1.22
diff -u -r1.22 scanner.l
--- scanner.l	2001/08/11 08:50:01	1.22
+++ scanner.l	2002/11/22 05:52:37
@@ -111,6 +111,7 @@
 %%
 (NOOP|noop)		return KW_NOOP;
 (DEFAULT|default)	return KW_DEFAULT;
+(DEFPAGE|defpage)	return KW_DEFPAGE;
 (TAB|tab)		return KW_TAB;
 (SIZE|size)		return KW_SIZE;
 (FORE|fore)		return KW_FORE;
@@ -134,6 +135,7 @@
 (PAGE|page)		return KW_PAGE;
 (HGAP|hgap)		return KW_HGAP;
 (VGAP|vgap)		return KW_VGAP;
+(VPREGAP|vpregap)	return KW_VPREGAP;
 (GAP|gap)		return KW_GAP;
 (PAUSE|pause)		return KW_PAUSE;
 (PREFIX|prefix)		return KW_PREFIX;