version 1.5, 2010/06/09 08:31:18 |
version 1.7, 2010/06/11 07:23:04 |
Line 228 ps_begin(struct termp *p) |
|
Line 228 ps_begin(struct termp *p) |
|
static void |
static void |
ps_letter(struct termp *p, char c) |
ps_letter(struct termp *p, char c) |
{ |
{ |
|
char cc; |
|
|
if ( ! (PS_INLINE & p->engine.ps.psstate)) { |
if ( ! (PS_INLINE & p->engine.ps.psstate)) { |
/* |
/* |
Line 240 ps_letter(struct termp *p, char c) |
|
Line 241 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 268 ps_letter(struct termp *p, char c) |
|
Line 287 ps_letter(struct termp *p, char c) |
|
static void |
static void |
ps_advance(struct termp *p, size_t len) |
ps_advance(struct termp *p, size_t len) |
{ |
{ |
|
size_t i; |
|
|
if (PS_INLINE & p->engine.ps.psstate) { |
if (PS_INLINE & p->engine.ps.psstate) { |
/* Dump out any existing line scope. */ |
assert(8 != p->engine.ps.last); |
ps_printf(p, ") show\n"); |
if (p->engine.ps.last) |
p->engine.ps.psstate &= ~PS_INLINE; |
ps_letter(p, p->engine.ps.last); |
|
p->engine.ps.last = '\0'; |
|
for (i = 0; i < len; i++) |
|
ps_letter(p, ' '); |
|
return; |
} |
} |
|
|
|
assert('\0' == p->engine.ps.last); |
p->engine.ps.pscol += len ? len * PS_CHAR_WIDTH : 0; |
p->engine.ps.pscol += len ? len * PS_CHAR_WIDTH : 0; |
} |
} |
|
|
Line 284 ps_endline(struct termp *p) |
|
Line 309 ps_endline(struct termp *p) |
|
{ |
{ |
|
|
if (PS_INLINE & p->engine.ps.psstate) { |
if (PS_INLINE & p->engine.ps.psstate) { |
|
assert(8 != p->engine.ps.last); |
|
if (p->engine.ps.last) |
|
ps_letter(p, p->engine.ps.last); |
|
p->engine.ps.last = '\0'; |
ps_printf(p, ") show\n"); |
ps_printf(p, ") show\n"); |
p->engine.ps.psstate &= ~PS_INLINE; |
p->engine.ps.psstate &= ~PS_INLINE; |
} |
} else |
|
assert('\0' == p->engine.ps.last); |
|
|
if (PS_MARGINS & p->engine.ps.psstate) |
if (PS_MARGINS & p->engine.ps.psstate) |
return; |
return; |