version 1.7, 2010/06/11 07:23:04 |
version 1.8, 2010/06/11 15:26:39 |
Line 58 static void ps_begin(struct termp *); |
|
Line 58 static void ps_begin(struct termp *); |
|
static void ps_end(struct termp *); |
static void ps_end(struct termp *); |
static void ps_advance(struct termp *, size_t); |
static void ps_advance(struct termp *, size_t); |
static void ps_endline(struct termp *); |
static void ps_endline(struct termp *); |
|
static void ps_pletter(struct termp *, char); |
static void ps_printf(struct termp *, const char *, ...); |
static void ps_printf(struct termp *, const char *, ...); |
static void ps_putchar(struct termp *, char); |
static void ps_putchar(struct termp *, char); |
|
|
Line 161 ps_end(struct termp *p) |
|
Line 162 ps_end(struct termp *p) |
|
* well as just one. |
* well as just one. |
*/ |
*/ |
|
|
|
assert(0 == p->engine.ps.psstate); |
|
assert('\0' == p->engine.ps.last); |
assert(p->engine.ps.psmarg && p->engine.ps.psmarg[0]); |
assert(p->engine.ps.psmarg && p->engine.ps.psmarg[0]); |
printf("%s", p->engine.ps.psmarg); |
printf("%s", p->engine.ps.psmarg); |
printf("showpage\n"); |
printf("showpage\n"); |
Line 226 ps_begin(struct termp *p) |
|
Line 229 ps_begin(struct termp *p) |
|
|
|
|
|
static void |
static void |
ps_letter(struct termp *p, char c) |
ps_pletter(struct termp *p, char c) |
{ |
{ |
char cc; |
|
|
|
if ( ! (PS_INLINE & p->engine.ps.psstate)) { |
if ( ! (PS_INLINE & p->engine.ps.psstate)) { |
/* |
/* |
Line 241 ps_letter(struct termp *p, char c) |
|
Line 243 ps_letter(struct termp *p, char c) |
|
p->engine.ps.psstate |= PS_INLINE; |
p->engine.ps.psstate |= PS_INLINE; |
} |
} |
|
|
if ('\0' == p->engine.ps.last) { |
|
assert(8 != c); |
|
p->engine.ps.last = c; |
|
return; |
|
} else if (8 == p->engine.ps.last) { |
|
assert(8 != c); |
|
p->engine.ps.last = c; |
|
return; |
|
} else if (8 == c) { |
|
assert(8 != p->engine.ps.last); |
|
p->engine.ps.last = c; |
|
return; |
|
} else { |
|
cc = p->engine.ps.last; |
|
p->engine.ps.last = c; |
|
c = cc; |
|
} |
|
|
|
/* |
/* |
* We need to escape these characters as per the PostScript |
* We need to escape these characters as per the PostScript |
* specification. We would also escape non-graphable characters |
* specification. We would also escape non-graphable characters |
Line 285 ps_letter(struct termp *p, char c) |
|
Line 269 ps_letter(struct termp *p, char c) |
|
|
|
|
|
static void |
static void |
|
ps_letter(struct termp *p, char c) |
|
{ |
|
char cc; |
|
|
|
if ('\0' == p->engine.ps.last) { |
|
assert(8 != c); |
|
p->engine.ps.last = c; |
|
return; |
|
} else if (8 == p->engine.ps.last) { |
|
assert(8 != c); |
|
p->engine.ps.last = c; |
|
return; |
|
} else if (8 == c) { |
|
assert(8 != p->engine.ps.last); |
|
p->engine.ps.last = c; |
|
return; |
|
} else { |
|
cc = p->engine.ps.last; |
|
p->engine.ps.last = c; |
|
c = cc; |
|
} |
|
|
|
return(ps_pletter(p, c)); |
|
} |
|
|
|
|
|
static void |
ps_advance(struct termp *p, size_t len) |
ps_advance(struct termp *p, size_t len) |
{ |
{ |
size_t i; |
size_t i; |
|
|
|
if ('\0' != p->engine.ps.last) { |
|
ps_pletter(p, p->engine.ps.last); |
|
p->engine.ps.last = '\0'; |
|
} |
|
|
if (PS_INLINE & p->engine.ps.psstate) { |
if (PS_INLINE & p->engine.ps.psstate) { |
assert(8 != p->engine.ps.last); |
assert(8 != p->engine.ps.last); |
if (p->engine.ps.last) |
if (p->engine.ps.last) |
Line 307 ps_advance(struct termp *p, size_t len) |
|
Line 323 ps_advance(struct termp *p, size_t len) |
|
static void |
static void |
ps_endline(struct termp *p) |
ps_endline(struct termp *p) |
{ |
{ |
|
|
|
if ('\0' != p->engine.ps.last) { |
|
ps_pletter(p, p->engine.ps.last); |
|
p->engine.ps.last = '\0'; |
|
} |
|
|
if (PS_INLINE & p->engine.ps.psstate) { |
if (PS_INLINE & p->engine.ps.psstate) { |
assert(8 != p->engine.ps.last); |
assert(8 != p->engine.ps.last); |