?? n6.c
字號:
#ifndef lintstatic char sccsid[] = "@(#)n6.c 4.2 11/26/82";#endif lint#include "tdef.h"extern#include "d.h"extern#include "v.h"#ifdef NROFFextern#include "tw.h"#endif/*troff6.cwidth functions, sizes and fonts*/extern int inchar[LNSIZE], *pinchar; /* XXX */extern int eschar;extern int widthp;extern int ohc;extern int xfont;extern int smnt;extern int setwdf;extern char trtab[];extern int chbits;extern int nonumb;extern int noscale;extern int font;extern int font1;extern int pts;extern int sps;extern int nlflg;extern int nform;extern int dfact;extern int dfactd;extern int lss;extern int lss1;extern int vflag;extern int ch0;extern int level;extern int ch;extern int res;extern int xxx;int fontlab[] = {'R','I','B','S',0};width(c)int c;{ register i,j,k; j = c; k = 0; if(j & MOT){ if(j & VMOT)goto rtn; k = j & ~MOTV; if(j & NMOT)k = -k; goto rtn; } if((i = (j & CMASK)) == 010){ k = -widthp; goto rtn; } if(i == PRESC)i = eschar; if((i == ohc) || (i >= 0370))goto rtn; if(j & ZBIT)goto rtn; i = trtab[i] & BMASK; if(i < 040)goto rtn; if (t.codetab[i-32]) k = (*(t.codetab[i-32]) & 0177) * t.Char; else k = 0; widthp = k;rtn: return(k);}setch(){ register i,*j,k; extern int chtab[]; if((i = getrq()) == 0)return(0); for(j=chtab;*j != i;j++)if(*(j++) == 0)return(0); k = *(++j) | chbits; return(k);}find(i,j)int i,j[];{ register k; if(((k = i-'0') >= 1) && (k <= 4) && (k != smnt))return(--k); for(k=0; j[k] != i; k++)if(j[k] == 0)return(-1); return(k);}mchbits(){ chbits = (((pts)<<2) | font) << (BYTE + 1); sps = width(' ' | chbits);}setps(){ register i,j; if((((i=getch() & CMASK) == '+') || (i == '-')) && (((j=(ch = getch() & CMASK) - '0') >= 0) && (j <= 9))){ ch = 0; return; } if((i -= '0') == 0){ return; } if((i > 0) && (i <= 9)){ if((i <= 3) && ((j=(ch = getch() & CMASK) - '0') >= 0) && (j <= 9)){ i = 10*i +j; ch = 0; } }}caseft(){ skip(); setfont(1);}setfont(a)int a;{ register i,j; if(a)i = getrq(); else i = getsn(); if(!i || (i == 'P')){ j = font1; goto s0; } if(i == 'S')return; if((j = find(i,fontlab)) == -1)return;s0: font1 = font; font = j; mchbits();}setwd(){ register i, base, wid; int delim, em, k; int savlevel, savhp, savfont, savfont1; int *savpinchar, *p, *q, tempinchar[LNSIZE]; /* XXX */ base = v.st = v.sb = wid = v.ct = 0; if((delim = getch() & CMASK) & MOT)return; savhp = v.hp; savpinchar = pinchar; /* XXX */ for (p=inchar, q=tempinchar; p < pinchar; ) /* XXX */ *q++ = *p++; /* XXX */ pinchar = inchar; /* XXX */ savlevel = level; v.hp = level = 0; savfont = font; savfont1 = font1; setwdf++; while((((i = getch()) & CMASK) != delim) && !nlflg){ wid += width(i); if(!(i & MOT)){ em = 2*t.Halfline; }else if(i & VMOT){ k = i & ~MOTV; if(i & NMOT)k = -k; base -= k; em = 0; }else continue; if(base < v.sb)v.sb = base; if((k=base + em) > v.st)v.st = k; } nform = 0; setn1(wid); v.hp = savhp; pinchar = savpinchar; /* XXX */ for (p=inchar, q=tempinchar; p < pinchar; ) /* XXX */ *p++ = *q++; /* XXX */ level = savlevel; font = savfont; font1 = savfont1; mchbits(); setwdf = 0;}vmot(){ dfact = lss; vflag++; return(mot());}hmot(){ dfact = EM; return(mot());}mot(){ register i, j; j = HOR; getch(); /*eat delim*/ if(i = atoi()){ if(vflag)j = VERT; i = makem(quant(i,j)); } getch(); vflag = 0; dfact = 1; return(i);}sethl(k)int k;{ register i; i = t.Halfline; if(k == 'u')i = -i; else if(k == 'r')i = -2*i; vflag++; i = makem(i); vflag = 0; return(i);}makem(i)int i;{ register j; if((j = i) < 0)j = -j; j = (j & ~MOTV) | MOT; if(i < 0)j |= NMOT; if(vflag)j |= VMOT; return(j);}casefp(){ register i, j; skip(); if(((i = (getch() & CMASK) - '0' -1) < 0) || (i >3))return; if(skip() || !(j = getrq()))return; fontlab[i] = j;}casevs(){ register i; skip(); vflag++; dfact = INCH; /*default scaling is points!*/ dfactd = 72; res = VERT; i = inumb(&lss); if(nonumb)i = lss1; if(i < VERT)i = VERT; lss1 = lss; lss = i;}xlss(){ register i, j; getch(); dfact = lss; i = quant(atoi(),VERT); dfact = 1; getch(); if((j = i) < 0)j = -j; ch0 = ((j & 03700)<<3) | HX; if(i < 0)ch0 |= 040000; return(((j & 077)<<9) | LX);}casefz(){}caseps(){}caselg(){}casecs(){}casebd(){}casess(){}getlg(i)int i;{ return(i);}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -