add
This commit is contained in:
parent
49a1496cbb
commit
c42a1d3d61
31 changed files with 4745 additions and 2 deletions
142
src/cmd/htmlroff/t4.c
Normal file
142
src/cmd/htmlroff/t4.c
Normal file
|
|
@ -0,0 +1,142 @@
|
|||
#include "a.h"
|
||||
|
||||
/*
|
||||
* 4 - Text filling, centering, and adjusting.
|
||||
* "\ " - unbreakable space
|
||||
* .n register - length of last line
|
||||
* nl register - text baseline position on this page
|
||||
* .h register - baseline high water mark
|
||||
* .k register - current horizontal output position
|
||||
* \p - cause break at end of word, justify
|
||||
* \& - non-printing zero-width filler
|
||||
* tr - output translation
|
||||
* \c - break (but don't) input line in .nf mode
|
||||
* \c - break (but don't) word in .fi mode
|
||||
*/
|
||||
|
||||
int
|
||||
e_space(void)
|
||||
{
|
||||
return 0xA0; /* non-breaking space */
|
||||
}
|
||||
|
||||
int
|
||||
e_amp(void)
|
||||
{
|
||||
return Uempty;
|
||||
}
|
||||
|
||||
int
|
||||
e_c(void)
|
||||
{
|
||||
getrune();
|
||||
bol = 1;
|
||||
return 0;
|
||||
}
|
||||
|
||||
void
|
||||
r_br(int argc, Rune **argv)
|
||||
{
|
||||
USED(argc);
|
||||
USED(argv);
|
||||
br();
|
||||
}
|
||||
|
||||
/* fill mode on */
|
||||
void
|
||||
r_fi(int argc, Rune **argv)
|
||||
{
|
||||
USED(argc);
|
||||
USED(argv);
|
||||
nr(L(".fi"), 1);
|
||||
// warn(".fi");
|
||||
}
|
||||
|
||||
/* no-fill mode */
|
||||
void
|
||||
r_nf(int argc, Rune **argv)
|
||||
{
|
||||
USED(argc);
|
||||
USED(argv);
|
||||
nr(L(".fi"), 0);
|
||||
}
|
||||
|
||||
/* adjust */
|
||||
void
|
||||
r_ad(int argc, Rune **argv)
|
||||
{
|
||||
int c, n;
|
||||
|
||||
nr(L(".j"), getnr(L(".j"))|1);
|
||||
if(argc < 2)
|
||||
return;
|
||||
c = argv[1][0];
|
||||
switch(c){
|
||||
default:
|
||||
fprint(2, "%L: bad adjust %C\n", c);
|
||||
return;
|
||||
case 'r':
|
||||
n = 2*2|1;
|
||||
break;
|
||||
case 'l':
|
||||
n = 0;
|
||||
break;
|
||||
case 'c':
|
||||
n = 1*2|1;
|
||||
break;
|
||||
case 'b':
|
||||
case 'n':
|
||||
n = 0*2|1;
|
||||
break;
|
||||
case '0':
|
||||
case '1':
|
||||
case '2':
|
||||
case '3':
|
||||
case '4':
|
||||
case '5':
|
||||
n = c-'0';
|
||||
break;
|
||||
}
|
||||
nr(L(".j"), n);
|
||||
}
|
||||
|
||||
/* no adjust */
|
||||
void
|
||||
r_na(int argc, Rune **argv)
|
||||
{
|
||||
USED(argc);
|
||||
USED(argv);
|
||||
|
||||
nr(L(".j"), getnr(L(".j"))&~1);
|
||||
}
|
||||
|
||||
/* center next N lines */
|
||||
void
|
||||
r_ce(int argc, Rune **argv)
|
||||
{
|
||||
if(argc < 2)
|
||||
nr(L(".ce"), 1);
|
||||
else
|
||||
nr(L(".ce"), eval(argv[1]));
|
||||
/* XXX set trap */
|
||||
}
|
||||
|
||||
void
|
||||
t4init(void)
|
||||
{
|
||||
nr(L(".fi"), 1);
|
||||
nr(L(".j"), 1);
|
||||
|
||||
addreq(L("br"), r_br, 0);
|
||||
addreq(L("fi"), r_fi, 0);
|
||||
addreq(L("nf"), r_nf, 0);
|
||||
addreq(L("ad"), r_ad, -1);
|
||||
addreq(L("na"), r_na, 0);
|
||||
addreq(L("ce"), r_ce, -1);
|
||||
|
||||
addesc(' ', e_space, 0);
|
||||
addesc('p', e_warn, 0);
|
||||
addesc('&', e_amp, 0);
|
||||
addesc('c', e_c, 0);
|
||||
}
|
||||
|
||||
Loading…
Add table
Add a link
Reference in a new issue