[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[mgp-users 01096] Pregap?
- To: mgp-users@mew.org
- Subject: [mgp-users 01096] Pregap?
- From: Douglas Kilpatrick <dougk@tislabs.com>
- Date: Fri, 22 Nov 2002 01:40:04 -0500 (EST)
- Delivered-to: mailing list mgp-users@mew.org
- Mailing-list: contact mgp-users-help@mew.org; run by ezmlm
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;