Lines 1-5
Link Here
|
1 |
/* $Id: dvi2xx.c,v 2.5 1997/12/08 20:52:20 neumann Exp $ */ |
1 |
/* $Id: dvi2xx.c,v 2.5 1997/12/08 20:52:20 neumann Exp $ */ |
2 |
#define VERSION "2.6p2 (dviljk)" |
2 |
#define VERSION "dviljk (version 2.6p3)" |
3 |
/* |
3 |
/* |
4 |
#define DEBUGGS 1 |
4 |
#define DEBUGGS 1 |
5 |
*/ |
5 |
*/ |
Lines 165-171
char *argv[];
Link Here
|
165 |
# endif |
165 |
# endif |
166 |
#endif |
166 |
#endif |
167 |
|
167 |
|
168 |
/* Initialize pixel_files */ |
168 |
/* Initialize pixel_files */ |
169 |
for (i = 0; i <= MAXOPEN; i++) |
169 |
for (i = 0; i <= MAXOPEN; i++) |
170 |
pixel_files[i].pixel_file_id = FPNULL; |
170 |
pixel_files[i].pixel_file_id = FPNULL; |
171 |
|
171 |
|
Lines 173-179
char *argv[];
Link Here
|
173 |
y_origin = YDEFAULTOFF; /* y-origin in dots */ |
173 |
y_origin = YDEFAULTOFF; /* y-origin in dots */ |
174 |
|
174 |
|
175 |
setbuf(ERR_STREAM, NULL); |
175 |
setbuf(ERR_STREAM, NULL); |
176 |
(void) strcpy(G_progname, argv[0]); |
176 |
G_progname = argv[0]; |
177 |
#ifdef KPATHSEA |
177 |
#ifdef KPATHSEA |
178 |
kpse_set_progname(argv[0]); |
178 |
kpse_set_progname(argv[0]); |
179 |
kpse_set_program_enabled (kpse_pk_format, MAKE_TEX_PK_BY_DEFAULT, kpse_src_compile); |
179 |
kpse_set_program_enabled (kpse_pk_format, MAKE_TEX_PK_BY_DEFAULT, kpse_src_compile); |
Lines 275-281
char *argv[];
Link Here
|
275 |
EMIT1("@PJL SET PAGEPROTECT=OFF\012"); |
275 |
EMIT1("@PJL SET PAGEPROTECT=OFF\012"); |
276 |
EMIT1("@PJL ENTER LANGUAGE=PCL\012"); |
276 |
EMIT1("@PJL ENTER LANGUAGE=PCL\012"); |
277 |
if (econoMode && LJ6) |
277 |
if (econoMode && LJ6) |
278 |
EMIT1("@PJL SET ECONOMODE=ON\012"); |
278 |
EMIT1("@PJL SET ECONOMODE=ON\012"); |
279 |
EMIT3("\033&u%dD\033*t%dR",RESOLUTION,RESOLUTION); |
279 |
EMIT3("\033&u%dD\033*t%dR",RESOLUTION,RESOLUTION); |
280 |
if (econoMode && !LJ6) |
280 |
if (econoMode && !LJ6) |
281 |
EMIT1("\033*v1T"); |
281 |
EMIT1("\033*v1T"); |
Lines 431-438
char *argv[];
Link Here
|
431 |
/* |
431 |
/* |
432 |
fprintf(ERR_STREAM,"FirstPart\n count %d, mod %d, pp %d\n",(int)count[0],(int)count[0]%2,PageParity); |
432 |
fprintf(ERR_STREAM,"FirstPart\n count %d, mod %d, pp %d\n",(int)count[0],(int)count[0]%2,PageParity); |
433 |
*/ |
433 |
*/ |
434 |
SkipMode = |
434 |
SkipMode = |
435 |
(bool)(PageParity != (short)((count[0]<0 ? |
435 |
(bool)(PageParity != (short)((count[0]<0 ? |
436 |
labs(count[0])+1 : count[0])%2)); |
436 |
labs(count[0])+1 : count[0])%2)); |
437 |
if (count[0] == 0) SkipMode = (bool)!SkipMode; |
437 |
if (count[0] == 0) SkipMode = (bool)!SkipMode; |
438 |
} |
438 |
} |
Lines 641-647
char *argv[];
Link Here
|
641 |
is not buffered. */ |
641 |
is not buffered. */ |
642 |
|
642 |
|
643 |
/* read a buffered byte */ |
643 |
/* read a buffered byte */ |
644 |
char |
644 |
char |
645 |
#if NeedFunctionPrototypes |
645 |
#if NeedFunctionPrototypes |
646 |
b_read(FILEPTR spfp) |
646 |
b_read(FILEPTR spfp) |
647 |
#else |
647 |
#else |
Lines 661-667
FILEPTR spfp;
Link Here
|
661 |
} |
661 |
} |
662 |
|
662 |
|
663 |
#ifdef RISC_BUFFER |
663 |
#ifdef RISC_BUFFER |
664 |
void |
664 |
void |
665 |
#if NeedFunctionPrototypes |
665 |
#if NeedFunctionPrototypes |
666 |
b_write(FILEPTR spfp, char c) /* write a buffered byte */ |
666 |
b_write(FILEPTR spfp, char c) /* write a buffered byte */ |
667 |
#else |
667 |
#else |
Lines 677-683
char c;
Link Here
|
677 |
buffout[boact++] = c; |
677 |
buffout[boact++] = c; |
678 |
} |
678 |
} |
679 |
|
679 |
|
680 |
void |
680 |
void |
681 |
#if NeedFunctionPrototypes |
681 |
#if NeedFunctionPrototypes |
682 |
b_wrtmult(FILEPTR spfp, char *buf, int len) /* write a sequence of bytes to the output buffer */ |
682 |
b_wrtmult(FILEPTR spfp, char *buf, int len) /* write a sequence of bytes to the output buffer */ |
683 |
#else |
683 |
#else |
Lines 693-714
int len;
Link Here
|
693 |
write_multi(buffout,1,boact,spfp); |
693 |
write_multi(buffout,1,boact,spfp); |
694 |
/* Copy only small blocks; large ones are written directly */ |
694 |
/* Copy only small blocks; large ones are written directly */ |
695 |
if (len < (BUFFSIZE/4)) { |
695 |
if (len < (BUFFSIZE/4)) { |
696 |
for (i = 0; i<len; i++) |
696 |
for (i = 0; i<len; i++) |
697 |
buffout[i] = buf[i]; |
697 |
buffout[i] = buf[i]; |
698 |
boact = len; |
698 |
boact = len; |
699 |
} else { |
699 |
} else { |
700 |
write_multi(buf,1,len,spfp); |
700 |
write_multi(buf,1,len,spfp); |
701 |
boact = 0; |
701 |
boact = 0; |
702 |
} |
702 |
} |
703 |
} |
703 |
} |
704 |
else { |
704 |
else { |
705 |
for (i = 0; i<len; i++) |
705 |
for (i = 0; i<len; i++) |
706 |
buffout[boact++] = buf[i]; |
706 |
buffout[boact++] = buf[i]; |
707 |
} |
707 |
} |
708 |
} |
708 |
} |
709 |
|
709 |
|
710 |
/* flush the output buffer */ |
710 |
/* flush the output buffer */ |
711 |
void |
711 |
void |
712 |
#if NeedFunctionPrototypes |
712 |
#if NeedFunctionPrototypes |
713 |
b_oflush(FILEPTR spfp) |
713 |
b_oflush(FILEPTR spfp) |
714 |
#else |
714 |
#else |
Lines 762-770
char *str;
Link Here
|
762 |
/***************************** CopyHPFile ******************************/ |
762 |
/***************************** CopyHPFile ******************************/ |
763 |
/*********************************************************************/ |
763 |
/*********************************************************************/ |
764 |
#if NeedFunctionPrototypes |
764 |
#if NeedFunctionPrototypes |
765 |
int getnum(FILEPTR spfp, char *t, char *numstr) |
765 |
int getnum(FILEPTR spfp, char *t, char *numstr) |
766 |
#else |
766 |
#else |
767 |
int getnum(spfp, t, numstr) |
767 |
int getnum(spfp, t, numstr) |
768 |
FILEPTR spfp; |
768 |
FILEPTR spfp; |
769 |
char *t, *numstr; |
769 |
char *t, *numstr; |
770 |
#endif |
770 |
#endif |
Lines 777-806
char *t, *numstr;
Link Here
|
777 |
} |
777 |
} |
778 |
|
778 |
|
779 |
#if NeedFunctionPrototypes |
779 |
#if NeedFunctionPrototypes |
780 |
void setOffset(char dir, char sign, int pos) |
780 |
void setOffset(char dir, char sign, int pos) |
781 |
#else |
781 |
#else |
782 |
void setOffset(dir, sign, pos, first) |
782 |
void setOffset(dir, sign, pos, first) |
783 |
char dir, sign; |
783 |
char dir, sign; |
784 |
int pos; |
784 |
int pos; |
785 |
#endif |
785 |
#endif |
786 |
{ |
786 |
{ |
787 |
if ((sign == '+' || sign == '-') && pos > 0 ) { |
787 |
if ((sign == '+' || sign == '-') && pos > 0 ) { |
788 |
EMIT4("\033*p%c%d%c",sign,pos,dir); |
788 |
EMIT4("\033*p%c%d%c",sign,pos,dir); |
789 |
#ifdef DEBUGGS |
789 |
#ifdef DEBUGGS |
790 |
fprintf(stderr, "relative: *p%c%d%c\n", sign, pos, dir); |
790 |
fprintf(stderr, "relative: *p%c%d%c\n", sign, pos, dir); |
791 |
#endif |
791 |
#endif |
792 |
} else if (pos>0) { |
792 |
} else if (pos>0) { |
793 |
EMIT3("\033*p%d%c",pos,dir); |
793 |
EMIT3("\033*p%d%c",pos,dir); |
794 |
#ifdef DEBUGGS |
794 |
#ifdef DEBUGGS |
795 |
fprintf(stderr, "absolute: *p%d%c\n", pos, dir); |
795 |
fprintf(stderr, "absolute: *p%d%c\n", pos, dir); |
796 |
#endif |
796 |
#endif |
797 |
if (dir == 'X') |
797 |
if (dir == 'X') |
798 |
last_rx = pos; |
798 |
last_rx = pos; |
799 |
else |
799 |
else |
800 |
last_ry = pos; |
800 |
last_ry = pos; |
801 |
} else { |
801 |
} else { |
802 |
/*EMIT3("\033*p%d%c",pos,dir);*/ |
802 |
/*EMIT3("\033*p%d%c",pos,dir);*/ |
803 |
#ifdef DEBUGGS |
803 |
#ifdef DEBUGGS |
804 |
fprintf(stderr, "Relative: *p%d%c\n", pos, dir); |
804 |
fprintf(stderr, "Relative: *p%d%c\n", pos, dir); |
805 |
#endif |
805 |
#endif |
806 |
} |
806 |
} |
Lines 832-838
char *str;
Link Here
|
832 |
unwanted commands from the input file and outputs the rest */ |
832 |
unwanted commands from the input file and outputs the rest */ |
833 |
|
833 |
|
834 |
/* reset the input buffer */ |
834 |
/* reset the input buffer */ |
835 |
binumber = 0; |
835 |
binumber = 0; |
836 |
biact = 0; |
836 |
biact = 0; |
837 |
|
837 |
|
838 |
qfprintf(ERR_STREAM," [%s", str); |
838 |
qfprintf(ERR_STREAM," [%s", str); |
Lines 853-868
char *str;
Link Here
|
853 |
/* of the commands (x first, y first) */ |
853 |
/* of the commands (x first, y first) */ |
854 |
|
854 |
|
855 |
if (t=='Y' || t=='y') { |
855 |
if (t=='Y' || t=='y') { |
856 |
if (numstr[0]!='+' && numstr[0]!='-' && num<miny) |
856 |
if (numstr[0]!='+' && numstr[0]!='-' && num<miny) |
857 |
miny = num; |
857 |
miny = num; |
858 |
if (t=='y') { |
858 |
if (t=='y') { |
859 |
num = getnum(spfp, &t, numstr); |
859 |
num = getnum(spfp, &t, numstr); |
860 |
if (numstr[0]!='+' && numstr[0]!='-' && num<minx) |
860 |
if (numstr[0]!='+' && numstr[0]!='-' && num<minx) |
861 |
minx = num; |
861 |
minx = num; |
862 |
} |
862 |
} |
863 |
} |
863 |
} |
864 |
if (t=='X' || t=='x') { |
864 |
if (t=='X' || t=='x') { |
865 |
if (numstr[0]!='+' && numstr[0]!='-' && num<minx) |
865 |
if (numstr[0]!='+' && numstr[0]!='-' && num<minx) |
866 |
minx = num; |
866 |
minx = num; |
867 |
|
867 |
|
868 |
if (t=='x') { |
868 |
if (t=='x') { |
Lines 920-935
char *str;
Link Here
|
920 |
} |
920 |
} |
921 |
qfprintf(ERR_STREAM," [%s", str); |
921 |
qfprintf(ERR_STREAM," [%s", str); |
922 |
/* reset input buffer again */ |
922 |
/* reset input buffer again */ |
923 |
binumber = 0; |
923 |
binumber = 0; |
924 |
biact = 0; |
924 |
biact = 0; |
925 |
|
925 |
|
926 |
|
926 |
|
927 |
/* Pass through the input file again but this time output the */ |
927 |
/* Pass through the input file again but this time output the */ |
928 |
/* retained PCL commands */ |
928 |
/* retained PCL commands */ |
929 |
#ifdef DEBUGGS |
929 |
#ifdef DEBUGGS |
930 |
fprintf(stderr,"\nminx=%d, miny=%d, xg=%d, yg=%d\n", |
930 |
fprintf(stderr,"\nminx=%d, miny=%d, xg=%d, yg=%d\n", |
931 |
minx, miny, x_goffset, y_goffset); |
931 |
minx, miny, x_goffset, y_goffset); |
932 |
#endif |
932 |
#endif |
933 |
do { |
933 |
do { |
934 |
t = (char)b_read(spfp); |
934 |
t = (char)b_read(spfp); |
935 |
if (t==0x1B) { |
935 |
if (t==0x1B) { |
Lines 948-954
char *str;
Link Here
|
948 |
} else { |
948 |
} else { |
949 |
setOffset('Y',numstr[0], num); |
949 |
setOffset('Y',numstr[0], num); |
950 |
} |
950 |
} |
951 |
|
951 |
|
952 |
if (t == 'y') { |
952 |
if (t == 'y') { |
953 |
num = getnum(spfp, &t,numstr); |
953 |
num = getnum(spfp, &t,numstr); |
954 |
if (numstr[0]!='+' && numstr[0]!='-') { |
954 |
if (numstr[0]!='+' && numstr[0]!='-') { |
Lines 960-975
char *str;
Link Here
|
960 |
} |
960 |
} |
961 |
} |
961 |
} |
962 |
} |
962 |
} |
963 |
|
963 |
|
964 |
if (t=='X' || t=='x') { |
964 |
if (t=='X' || t=='x') { |
965 |
if (numstr[0]!='+' && numstr[0]!='-') { |
965 |
if (numstr[0]!='+' && numstr[0]!='-') { |
966 |
/*Add in the correct horizontal offset*/ |
966 |
/*Add in the correct horizontal offset*/ |
967 |
setOffset('X',numstr[0], |
967 |
setOffset('X',numstr[0], |
968 |
num - minx + (int)PIXROUND(h,hconv) + x_goffset); |
968 |
num - minx + (int)PIXROUND(h,hconv) + x_goffset); |
969 |
} else { |
969 |
} else { |
970 |
setOffset('X',numstr[0], num); |
970 |
setOffset('X',numstr[0], num); |
971 |
} |
971 |
} |
972 |
|
972 |
|
973 |
if (t=='x') { |
973 |
if (t=='x') { |
974 |
num = getnum(spfp, &t,numstr); |
974 |
num = getnum(spfp, &t,numstr); |
975 |
if (numstr[0]!='+' && numstr[0]!='-') { |
975 |
if (numstr[0]!='+' && numstr[0]!='-') { |
Lines 1027-1033
char *str;
Link Here
|
1027 |
case(0x63): |
1027 |
case(0x63): |
1028 |
/* Rectangular draw commands */ |
1028 |
/* Rectangular draw commands */ |
1029 |
EMIT1("\033*c"); |
1029 |
EMIT1("\033*c"); |
1030 |
for (t = (char)b_read(spfp); t<0x40 || t>0x60; |
1030 |
for (t = (char)b_read(spfp); t<0x40 || t>0x60; |
1031 |
t = (char)b_read(spfp)) |
1031 |
t = (char)b_read(spfp)) |
1032 |
EMITC(t); |
1032 |
EMITC(t); |
1033 |
EMITC(t); |
1033 |
EMITC(t); |
Lines 1110-1116
register int n; /* number of byt
Link Here
|
1110 |
long4 x = 0; /* number being constructed */ |
1110 |
long4 x = 0; /* number being constructed */ |
1111 |
unsigned char h; |
1111 |
unsigned char h; |
1112 |
while (n--) { |
1112 |
while (n--) { |
1113 |
x <<= 8; |
1113 |
x <<= 8; |
1114 |
read_byte(fp,h); |
1114 |
read_byte(fp,h); |
1115 |
x |= h; |
1115 |
x |= h; |
1116 |
} |
1116 |
} |
Lines 1143-1149
register int n; /* number of bytes
Link Here
|
1143 |
#ifdef SIGN_DEBUG |
1143 |
#ifdef SIGN_DEBUG |
1144 |
long4 x0; /* copy of x */ |
1144 |
long4 x0; /* copy of x */ |
1145 |
#endif |
1145 |
#endif |
1146 |
read_byte(fp,h); |
1146 |
read_byte(fp,h); |
1147 |
x = h; /* get first (high-order) byte */ |
1147 |
x = h; /* get first (high-order) byte */ |
1148 |
n1 = n--; |
1148 |
n1 = n--; |
1149 |
while (n--) { |
1149 |
while (n--) { |
Lines 1296-1302
FILEPTR f;
Link Here
|
1296 |
/* ---> result in DX */ |
1296 |
/* ---> result in DX */ |
1297 |
|
1297 |
|
1298 |
if ( (regs.h.dl & 0x80) /* file handle points to a device */ |
1298 |
if ( (regs.h.dl & 0x80) /* file handle points to a device */ |
1299 |
&& !(regs.h.dl & 0x07) ) { /* neither console i/o or null */ |
1299 |
&& !(regs.h.dl & 0x07) ) { /* neither console i/o or null */ |
1300 |
|
1300 |
|
1301 |
regs.h.dl |= 0x20; /* set BINARY bit in device info */ |
1301 |
regs.h.dl |= 0x20; /* set BINARY bit in device info */ |
1302 |
regs.h.ah = (unsigned char) 0x44; /* IOCTL */ |
1302 |
regs.h.ah = (unsigned char) 0x44; /* IOCTL */ |
Lines 1501-1520
printf("Emit character %c(%d) id=%d, yof
Link Here
|
1501 |
/* For COMPRESSED CHARS */ |
1501 |
/* For COMPRESSED CHARS */ |
1502 |
if (PrevSize < nbpl) { |
1502 |
if (PrevSize < nbpl) { |
1503 |
PrevSize = nbpl; |
1503 |
PrevSize = nbpl; |
1504 |
if (PrevLine != NULL) |
1504 |
if (PrevLine != NULL) |
1505 |
free(PrevLine); |
1505 |
free(PrevLine); |
1506 |
if ((PrevLine = (unsigned char*)malloc(PrevSize*sizeof(char))) |
1506 |
if ((PrevLine = (unsigned char*)malloc(PrevSize*sizeof(char))) |
1507 |
== NULL) { |
1507 |
== NULL) { |
1508 |
PrevSize = 0; |
1508 |
PrevSize = 0; |
1509 |
Fatal("EmitChar: Out of memory error!\n"); |
1509 |
Fatal("EmitChar: Out of memory error!\n"); |
1510 |
} |
1510 |
} |
1511 |
} |
1511 |
} |
1512 |
/* Clear seed line */ |
1512 |
/* Clear seed line */ |
1513 |
for (i = 0; i<nbpl; i++) |
1513 |
for (i = 0; i<nbpl; i++) |
1514 |
PrevLine[i] = 0; |
1514 |
PrevLine[i] = 0; |
1515 |
CChar_Off = 0; |
1515 |
CChar_Off = 0; |
1516 |
CChar_Last = -1; |
1516 |
CChar_Last = -1; |
1517 |
|
1517 |
|
1518 |
/* This bit copied from below... */ |
1518 |
/* This bit copied from below... */ |
1519 |
# ifdef USEPXL |
1519 |
# ifdef USEPXL |
1520 |
if (fontptr->id == pk89) |
1520 |
if (fontptr->id == pk89) |
Lines 1530-1540
printf("Emit character %c(%d) id=%d, yof
Link Here
|
1530 |
CompressedCharLine(ce,nbpl,sl); |
1530 |
CompressedCharLine(ce,nbpl,sl); |
1531 |
} |
1531 |
} |
1532 |
# else |
1532 |
# else |
1533 |
for (i = num_rows; i > 0; i--) |
1533 |
for (i = num_rows; i > 0; i--) |
1534 |
CompressedCharLine(ce,nbpl,(bits + (i-1)*nbpl)); |
1534 |
CompressedCharLine(ce,nbpl,(bits + (i-1)*nbpl)); |
1535 |
# endif /* USEPXL */ |
1535 |
# endif /* USEPXL */ |
1536 |
} |
1536 |
} |
1537 |
else |
1537 |
else |
1538 |
CChar_Off = -1; |
1538 |
CChar_Off = -1; |
1539 |
# endif /* LJ4 */ |
1539 |
# endif /* LJ4 */ |
1540 |
|
1540 |
|
Lines 1544-1553
printf("Emit character %c(%d) id=%d, yof
Link Here
|
1544 |
# ifdef LJ4 |
1544 |
# ifdef LJ4 |
1545 |
/* printf("raw: %d (%d * %d), comp: %d\n", |
1545 |
/* printf("raw: %d (%d * %d), comp: %d\n", |
1546 |
total,ce->width,ce->height,CChar_Off); */ |
1546 |
total,ce->width,ce->height,CChar_Off); */ |
1547 |
/* Characters that don't compress well are usually rather small so |
1547 |
/* Characters that don't compress well are usually rather small so |
1548 |
reading them again and writing them uncompressed won't take |
1548 |
reading them again and writing them uncompressed won't take |
1549 |
much time anyway. */ |
1549 |
much time anyway. */ |
1550 |
if (CChar_Off > total) |
1550 |
if (CChar_Off > total) |
1551 |
CChar_Off = -1; |
1551 |
CChar_Off = -1; |
1552 |
if (CChar_Off >= 0) { |
1552 |
if (CChar_Off >= 0) { |
1553 |
EMIT4("\033*c%sd%dE\033(s%ldW", cnv_buffer, |
1553 |
EMIT4("\033*c%sd%dE\033(s%ldW", cnv_buffer, |
Lines 1606-1612
printf("Emit character %c(%d) id=%d, yof
Link Here
|
1606 |
} |
1606 |
} |
1607 |
#endif |
1607 |
#endif |
1608 |
} |
1608 |
} |
1609 |
|
1609 |
|
1610 |
#ifdef IBM3812 |
1610 |
#ifdef IBM3812 |
1611 |
#ifdef USEPXL |
1611 |
#ifdef USEPXL |
1612 |
used_fontstorage += (long4)ce->height * ((ce->width + 15) >> 4) * 2 + 14; |
1612 |
used_fontstorage += (long4)ce->height * ((ce->width + 15) >> 4) * 2 + 14; |
Lines 1652-1658
unsigned char *pkloc;
Link Here
|
1652 |
int repeatcount; |
1652 |
int repeatcount; |
1653 |
|
1653 |
|
1654 |
void /* <Read and translate raster description@>*/ |
1654 |
void /* <Read and translate raster description@>*/ |
1655 |
#if NeedFunctionPrototypes |
1655 |
#if NeedFunctionPrototypes |
1656 |
PkRaster(struct char_entry *ce, int raster) |
1656 |
PkRaster(struct char_entry *ce, int raster) |
1657 |
#else |
1657 |
#else |
1658 |
PkRaster(ce, raster) |
1658 |
PkRaster(ce, raster) |
Lines 1735-1741
int raster;
Link Here
|
1735 |
if (wordweight < 31) { |
1735 |
if (wordweight < 31) { |
1736 |
#ifdef COMMENT |
1736 |
#ifdef COMMENT |
1737 |
# ifdef DRAWGLYPH |
1737 |
# ifdef DRAWGLYPH |
1738 |
{ |
1738 |
{ |
1739 |
int k; |
1739 |
int k; |
1740 |
for (k = 15; k>=0; k--) { |
1740 |
for (k = 15; k>=0; k--) { |
1741 |
if ((power[k] & word)!=0) printf("Z"); |
1741 |
if ((power[k] & word)!=0) printf("Z"); |
Lines 1749-1755
int raster;
Link Here
|
1749 |
for (j = 3; j >= (wordwidth * 4 - (long4)nbpl); j--) { |
1749 |
for (j = 3; j >= (wordwidth * 4 - (long4)nbpl); j--) { |
1750 |
OUTCHAR(((word >> (j << 3)) & 0xff)); |
1750 |
OUTCHAR(((word >> (j << 3)) & 0xff)); |
1751 |
#ifdef DRAWGLYPH |
1751 |
#ifdef DRAWGLYPH |
1752 |
{ |
1752 |
{ |
1753 |
int k; |
1753 |
int k; |
1754 |
for (k = 7; k>=0; k--) { |
1754 |
for (k = 7; k>=0; k--) { |
1755 |
if ((power[k] & ((word >> (j << 3)) & 0xff))!=0) printf("M"); |
1755 |
if ((power[k] & ((word >> (j << 3)) & 0xff))!=0) printf("M"); |
Lines 1760-1768
int raster;
Link Here
|
1760 |
} |
1760 |
} |
1761 |
|
1761 |
|
1762 |
} |
1762 |
} |
1763 |
|
1763 |
|
1764 |
switch (raster) { |
1764 |
switch (raster) { |
1765 |
case 1: |
1765 |
case 1: |
1766 |
RasterLine(ce, nbpl, current_line, raster_line_buf); |
1766 |
RasterLine(ce, nbpl, current_line, raster_line_buf); |
1767 |
current_line++; |
1767 |
current_line++; |
1768 |
break; |
1768 |
break; |
Lines 1826-1832
int raster;
Link Here
|
1826 |
OUTCHAR((tl & 0xFF)); |
1826 |
OUTCHAR((tl & 0xFF)); |
1827 |
|
1827 |
|
1828 |
#ifdef DRAWGLYPH |
1828 |
#ifdef DRAWGLYPH |
1829 |
{ |
1829 |
{ |
1830 |
int k; |
1830 |
int k; |
1831 |
for (k = 31; k>=0; k--) { |
1831 |
for (k = 31; k>=0; k--) { |
1832 |
if ((power[k] & row[ii])!=0) printf("M"); |
1832 |
if ((power[k] & row[ii])!=0) printf("M"); |
Lines 1839-1845
int raster;
Link Here
|
1839 |
for (j = 3; j >= (wordwidth *4 - (long4)nbpl); j--) { |
1839 |
for (j = 3; j >= (wordwidth *4 - (long4)nbpl); j--) { |
1840 |
OUTCHAR(((tl >> (j << 3)) & 0xff)); |
1840 |
OUTCHAR(((tl >> (j << 3)) & 0xff)); |
1841 |
#ifdef DRAWGLYPH |
1841 |
#ifdef DRAWGLYPH |
1842 |
{ |
1842 |
{ |
1843 |
int k; |
1843 |
int k; |
1844 |
for (k = 7; k>=0; k--) { |
1844 |
for (k = 7; k>=0; k--) { |
1845 |
if ((power[k] & ((tl >> (j << 3)) & 0xff))!=0) printf("M"); |
1845 |
if ((power[k] & ((tl >> (j << 3)) & 0xff))!=0) printf("M"); |
Lines 1850-1856
int raster;
Link Here
|
1850 |
} |
1850 |
} |
1851 |
|
1851 |
|
1852 |
switch (raster) { |
1852 |
switch (raster) { |
1853 |
case 1: |
1853 |
case 1: |
1854 |
RasterLine(ce, (unsigned int)nbpl, current_line, raster_line_buf); |
1854 |
RasterLine(ce, (unsigned int)nbpl, current_line, raster_line_buf); |
1855 |
current_line++; |
1855 |
current_line++; |
1856 |
break; |
1856 |
break; |
Lines 1969-1975
int n;
Link Here
|
1969 |
|
1969 |
|
1970 |
#ifdef LJ4 |
1970 |
#ifdef LJ4 |
1971 |
/* Compress a raster line in compression mode 2 */ |
1971 |
/* Compress a raster line in compression mode 2 */ |
1972 |
int |
1972 |
int |
1973 |
#if NeedFunctionPrototypes |
1973 |
#if NeedFunctionPrototypes |
1974 |
CompressLine2(unsigned char *buffer, unsigned char *buffout, int emitbytes) |
1974 |
CompressLine2(unsigned char *buffer, unsigned char *buffout, int emitbytes) |
1975 |
#else |
1975 |
#else |
Lines 1984-1996
int emitbytes;
Link Here
|
1984 |
char last,c; |
1984 |
char last,c; |
1985 |
|
1985 |
|
1986 |
/* trap empty lines (otherwise problems with Packbits) */ |
1986 |
/* trap empty lines (otherwise problems with Packbits) */ |
1987 |
if (emitbytes == 0) |
1987 |
if (emitbytes == 0) |
1988 |
return(0); |
1988 |
return(0); |
1989 |
/* Use Packbits compression (mode 2) on raster line */ |
1989 |
/* Use Packbits compression (mode 2) on raster line */ |
1990 |
pos = buffer; |
1990 |
pos = buffer; |
1991 |
litpos = buffer; |
1991 |
litpos = buffer; |
1992 |
pack = 1; |
1992 |
pack = 1; |
1993 |
ppos = buffout; |
1993 |
ppos = buffout; |
1994 |
last = *pos++; |
1994 |
last = *pos++; |
1995 |
upper = buffer + emitbytes; |
1995 |
upper = buffer + emitbytes; |
1996 |
while (pos < upper) { |
1996 |
while (pos < upper) { |
Lines 2000-2013
int emitbytes;
Link Here
|
2000 |
/* At least three equal bytes ==> write out preceding literal sequence */ |
2000 |
/* At least three equal bytes ==> write out preceding literal sequence */ |
2001 |
if ((pack == 3) && ((lit = (int)(pos - litpos - 3)) != 0)) { |
2001 |
if ((pack == 3) && ((lit = (int)(pos - litpos - 3)) != 0)) { |
2002 |
while (lit >= 128) { |
2002 |
while (lit >= 128) { |
2003 |
*ppos++ = 127; |
2003 |
*ppos++ = 127; |
2004 |
for (i = 1; i<=128; i++) |
2004 |
for (i = 1; i<=128; i++) |
2005 |
*ppos++ = *litpos++; |
2005 |
*ppos++ = *litpos++; |
2006 |
lit -= 128; |
2006 |
lit -= 128; |
2007 |
} |
2007 |
} |
2008 |
if (lit != 0) { |
2008 |
if (lit != 0) { |
2009 |
*ppos++ = lit-1; |
2009 |
*ppos++ = lit-1; |
2010 |
while ((lit--) > 0) |
2010 |
while ((lit--) > 0) |
2011 |
*ppos++ = *litpos++; |
2011 |
*ppos++ = *litpos++; |
2012 |
/* litpos is now pos-3 (i.e. first of the sequence) */ |
2012 |
/* litpos is now pos-3 (i.e. first of the sequence) */ |
2013 |
} |
2013 |
} |
Lines 2015-2033
int emitbytes;
Link Here
|
2015 |
} |
2015 |
} |
2016 |
else { |
2016 |
else { |
2017 |
while (pack >= 128) { |
2017 |
while (pack >= 128) { |
2018 |
*ppos++ = 129; |
2018 |
*ppos++ = 129; |
2019 |
*ppos++ = last; |
2019 |
*ppos++ = last; |
2020 |
litpos += 128; |
2020 |
litpos += 128; |
2021 |
pack -= 128; |
2021 |
pack -= 128; |
2022 |
} |
2022 |
} |
2023 |
/* At least 3 equal bytes or 2 that don't break a literal sequence |
2023 |
/* At least 3 equal bytes or 2 that don't break a literal sequence |
2024 |
==> write out packed sequence */ |
2024 |
==> write out packed sequence */ |
2025 |
if ((pack >= 3) || ((pack == 2) && (litpos == pos-3))) { |
2025 |
if ((pack >= 3) || ((pack == 2) && (litpos == pos-3))) { |
2026 |
*ppos++ = 257 - pack; |
2026 |
*ppos++ = 257 - pack; |
2027 |
*ppos++ = last; |
2027 |
*ppos++ = last; |
2028 |
litpos += pack; |
2028 |
litpos += pack; |
2029 |
} |
2029 |
} |
2030 |
pack = 1; |
2030 |
pack = 1; |
2031 |
last = c; |
2031 |
last = c; |
2032 |
} |
2032 |
} |
2033 |
if (ppos > (buffout + BUFFSIZE/2 - 129)) { |
2033 |
if (ppos > (buffout + BUFFSIZE/2 - 129)) { |
Lines 2036-2063
int emitbytes;
Link Here
|
2036 |
return(0); |
2036 |
return(0); |
2037 |
} |
2037 |
} |
2038 |
} |
2038 |
} |
2039 |
|
2039 |
|
2040 |
while (pack >= 128) { |
2040 |
while (pack >= 128) { |
2041 |
*ppos++ = 129; |
2041 |
*ppos++ = 129; |
2042 |
*ppos++ = last; |
2042 |
*ppos++ = last; |
2043 |
litpos += 128; |
2043 |
litpos += 128; |
2044 |
pack -= 128; |
2044 |
pack -= 128; |
2045 |
} |
2045 |
} |
2046 |
if ((pack >= 3) || ((pack == 2) && (litpos == pos-3))) { |
2046 |
if ((pack >= 3) || ((pack == 2) && (litpos == pos-3))) { |
2047 |
*ppos++ = 257 - pack; |
2047 |
*ppos++ = 257 - pack; |
2048 |
*ppos++ = last; |
2048 |
*ppos++ = last; |
2049 |
litpos += pack; |
2049 |
litpos += pack; |
2050 |
} |
2050 |
} |
2051 |
else if ((lit = (int)(pos - litpos)) != 0) { |
2051 |
else if ((lit = (int)(pos - litpos)) != 0) { |
2052 |
while (lit >= 128) { |
2052 |
while (lit >= 128) { |
2053 |
*ppos++ = 127; |
2053 |
*ppos++ = 127; |
2054 |
for (i = 1; i<=128; i++) |
2054 |
for (i = 1; i<=128; i++) |
2055 |
*ppos++ = *litpos++; |
2055 |
*ppos++ = *litpos++; |
2056 |
lit -= 128; |
2056 |
lit -= 128; |
2057 |
} |
2057 |
} |
2058 |
if (lit != 0) { |
2058 |
if (lit != 0) { |
2059 |
*ppos++ = lit-1; |
2059 |
*ppos++ = lit-1; |
2060 |
while ((lit--) > 0) |
2060 |
while ((lit--) > 0) |
2061 |
*ppos++ = *litpos++; |
2061 |
*ppos++ = *litpos++; |
2062 |
} |
2062 |
} |
2063 |
} |
2063 |
} |
Lines 2079-2102
int emitbytes;
Link Here
|
2079 |
int lit,i,pack; |
2079 |
int lit,i,pack; |
2080 |
|
2080 |
|
2081 |
/* Use compression mode 3 */ |
2081 |
/* Use compression mode 3 */ |
2082 |
pos = buffer; |
2082 |
pos = buffer; |
2083 |
ppos = buffout; |
2083 |
ppos = buffout; |
2084 |
upper = buffer + emitbytes; |
2084 |
upper = buffer + emitbytes; |
2085 |
prev = PrevLine; |
2085 |
prev = PrevLine; |
2086 |
while(pos < upper) { |
2086 |
while(pos < upper) { |
2087 |
litpos = pos; |
2087 |
litpos = pos; |
2088 |
while ((*prev == *pos) && (pos < upper)) { |
2088 |
while ((*prev == *pos) && (pos < upper)) { |
2089 |
prev++; |
2089 |
prev++; |
2090 |
pos++; |
2090 |
pos++; |
2091 |
} |
2091 |
} |
2092 |
if (pos < upper) { |
2092 |
if (pos < upper) { |
2093 |
pack = (int)(pos - litpos); |
2093 |
pack = (int)(pos - litpos); |
2094 |
litpos = pos; |
2094 |
litpos = pos; |
2095 |
i = upper - pos; |
2095 |
i = upper - pos; |
2096 |
if (i > 8) |
2096 |
if (i > 8) |
2097 |
i = 8; |
2097 |
i = 8; |
2098 |
while ((*pos != *prev) && (i > 0)) { |
2098 |
while ((*pos != *prev) && (i > 0)) { |
2099 |
*prev++ = *pos++; |
2099 |
*prev++ = *pos++; |
2100 |
i--; |
2100 |
i--; |
2101 |
} |
2101 |
} |
2102 |
i = (int)(pos - litpos - 1); |
2102 |
i = (int)(pos - litpos - 1); |
Lines 2105-2120
int emitbytes;
Link Here
|
2105 |
*ppos++ = lit + pack; |
2105 |
*ppos++ = lit + pack; |
2106 |
} |
2106 |
} |
2107 |
else { |
2107 |
else { |
2108 |
*ppos++ = lit + 31; |
2108 |
*ppos++ = lit + 31; |
2109 |
pack -= 31; |
2109 |
pack -= 31; |
2110 |
while (pack >= 255) { |
2110 |
while (pack >= 255) { |
2111 |
*ppos++ = 255; |
2111 |
*ppos++ = 255; |
2112 |
pack -= 255; |
2112 |
pack -= 255; |
2113 |
} |
2113 |
} |
2114 |
*ppos++ = pack; |
2114 |
*ppos++ = pack; |
2115 |
} |
2115 |
} |
2116 |
while (i >= 0) { |
2116 |
while (i >= 0) { |
2117 |
*ppos++ = *litpos++; |
2117 |
*ppos++ = *litpos++; |
2118 |
i--; |
2118 |
i--; |
2119 |
} |
2119 |
} |
2120 |
} |
2120 |
} |
Lines 2134-2140
int emitbytes;
Link Here
|
2134 |
/**********************************************************************/ |
2134 |
/**********************************************************************/ |
2135 |
void |
2135 |
void |
2136 |
#if NeedFunctionPrototypes |
2136 |
#if NeedFunctionPrototypes |
2137 |
RasterLine(struct char_entry *ce, unsigned int nbpl, |
2137 |
RasterLine(struct char_entry *ce, unsigned int nbpl, |
2138 |
unsigned int current_line, unsigned char *buffer) |
2138 |
unsigned int current_line, unsigned char *buffer) |
2139 |
#else |
2139 |
#else |
2140 |
RasterLine(ce, nbpl, current_line, buffer) |
2140 |
RasterLine(ce, nbpl, current_line, buffer) |
Lines 2208-2228
char *buffer;
Link Here
|
2208 |
EMIT2("\033*b%dW", emitbytes); |
2208 |
EMIT2("\033*b%dW", emitbytes); |
2209 |
EMITL(emitbytes, buffer); |
2209 |
EMITL(emitbytes, buffer); |
2210 |
break; |
2210 |
break; |
2211 |
|
2211 |
|
2212 |
case 2: |
2212 |
case 2: |
2213 |
i = CompressLine2(buffer,buffin,emitbytes); |
2213 |
i = CompressLine2(buffer,buffin,emitbytes); |
2214 |
EMIT2("\033*b%dW", i); |
2214 |
EMIT2("\033*b%dW", i); |
2215 |
EMITL(i,buffin); |
2215 |
EMITL(i,buffin); |
2216 |
break; |
2216 |
break; |
2217 |
|
2217 |
|
2218 |
case 3: |
2218 |
case 3: |
2219 |
i = CompressLine3(buffer,buffin + BUFFSIZE/2,(int)nbpl); |
2219 |
i = CompressLine3(buffer,buffin + BUFFSIZE/2,(int)nbpl); |
2220 |
EMIT2("\033*b%dW", i); |
2220 |
EMIT2("\033*b%dW", i); |
2221 |
EMITL(i,buffin + BUFFSIZE/2); |
2221 |
EMITL(i,buffin + BUFFSIZE/2); |
2222 |
break; |
2222 |
break; |
2223 |
|
2223 |
|
2224 |
default: |
2224 |
default: |
2225 |
fprintf(ERR_STREAM,"Unsupported compression mode!\n"); |
2225 |
fprintf(ERR_STREAM,"Unsupported compression mode!\n"); |
2226 |
} |
2226 |
} |
2227 |
# else |
2227 |
# else |
2228 |
EMIT2("\033*b%dW", emitbytes); |
2228 |
EMIT2("\033*b%dW", emitbytes); |
Lines 2280-2289
struct char_entry *ce;
Link Here
|
2280 |
if (CompressCharMode == 3) { |
2280 |
if (CompressCharMode == 3) { |
2281 |
/* Check if PrevLine big enough; claim more space if not */ |
2281 |
/* Check if PrevLine big enough; claim more space if not */ |
2282 |
if (((int)nbpl) > PrevSize) { |
2282 |
if (((int)nbpl) > PrevSize) { |
2283 |
if (PrevLine != NULL) |
2283 |
if (PrevLine != NULL) |
2284 |
free(PrevLine); |
2284 |
free(PrevLine); |
2285 |
if ((PrevLine = (unsigned char *)malloc(nbpl*sizeof(char))) == NULL) { |
2285 |
if ((PrevLine = (unsigned char *)malloc(nbpl*sizeof(char))) == NULL) { |
2286 |
PrevSize = 0; |
2286 |
PrevSize = 0; |
2287 |
Fatal("RasterChar: out of memory!\n"); |
2287 |
Fatal("RasterChar: out of memory!\n"); |
2288 |
} |
2288 |
} |
2289 |
PrevSize = (int)nbpl; |
2289 |
PrevSize = (int)nbpl; |
Lines 2419-2425
register struct char_entry *ptr;
Link Here
|
2419 |
if (bytes > 0) { |
2419 |
if (bytes > 0) { |
2420 |
/* do NOT load Huge characters */ |
2420 |
/* do NOT load Huge characters */ |
2421 |
if ((bytes > HUGE_CHAR_PATTERN) && (fontptr->id != pk89)) { |
2421 |
if ((bytes > HUGE_CHAR_PATTERN) && (fontptr->id != pk89)) { |
2422 |
qfprintf(ERR_STREAM,"Huge Character <%c> (%ld Bytes)\n", |
2422 |
qfprintf(ERR_STREAM,"Huge Character <%c> (%ld Bytes)\n", |
2423 |
(char)c, bytes); |
2423 |
(char)c, bytes); |
2424 |
ptr->charsize = HUGE_SIZE; |
2424 |
ptr->charsize = HUGE_SIZE; |
2425 |
ptr->where.isloaded = _FALSE; |
2425 |
ptr->where.isloaded = _FALSE; |
Lines 2505-2511
bool do_posn,in_string;
Link Here
|
2505 |
SetPosn(h, v); |
2505 |
SetPosn(h, v); |
2506 |
} |
2506 |
} |
2507 |
|
2507 |
|
2508 |
/* |
2508 |
/* |
2509 |
fprintf(ERR_STREAM, |
2509 |
fprintf(ERR_STREAM, |
2510 |
"(%d) hh=%ld (+%ld/+%ld), h=%ld, xh=%ld,xhh=%ld, [%ld|%ld] ->%d\n", |
2510 |
"(%d) hh=%ld (+%ld/+%ld), h=%ld, xh=%ld,xhh=%ld, [%ld|%ld] ->%d\n", |
2511 |
(int)do_posn,hh,(long4)ptr->cw,(long4)ptr->cw*(long4)hconv,h, |
2511 |
(int)do_posn,hh,(long4)ptr->cw,(long4)ptr->cw*(long4)hconv,h, |
Lines 2553-2559
bool do_posn,in_string;
Link Here
|
2553 |
int tmp; |
2553 |
int tmp; |
2554 |
char sign; |
2554 |
char sign; |
2555 |
|
2555 |
|
2556 |
if (!do_posn) |
2556 |
if (!do_posn) |
2557 |
SetPosn(h, v); |
2557 |
SetPosn(h, v); |
2558 |
|
2558 |
|
2559 |
#ifdef USEPXL |
2559 |
#ifdef USEPXL |
Lines 2563-2569
bool do_posn,in_string;
Link Here
|
2563 |
#endif |
2563 |
#endif |
2564 |
if (tmp != 0) { |
2564 |
if (tmp != 0) { |
2565 |
if (tmp < 0) { |
2565 |
if (tmp < 0) { |
2566 |
sign = '-'; |
2566 |
sign = '-'; |
2567 |
tmp = -tmp; |
2567 |
tmp = -tmp; |
2568 |
} else |
2568 |
} else |
2569 |
sign = '+'; |
2569 |
sign = '+'; |
Lines 2576-2582
bool do_posn,in_string;
Link Here
|
2576 |
#endif |
2576 |
#endif |
2577 |
if (tmp != 0) { |
2577 |
if (tmp != 0) { |
2578 |
if (tmp < 0) { |
2578 |
if (tmp < 0) { |
2579 |
sign = '-'; |
2579 |
sign = '-'; |
2580 |
tmp = -tmp; |
2580 |
tmp = -tmp; |
2581 |
} else |
2581 |
} else |
2582 |
sign = '+'; |
2582 |
sign = '+'; |
Lines 2644-2650
bool do_posn,in_string;
Link Here
|
2644 |
fprintf(stderr,"--> hh(%ld) += cw(%ld) * hconv(%ld)", |
2644 |
fprintf(stderr,"--> hh(%ld) += cw(%ld) * hconv(%ld)", |
2645 |
(long)hh, (long)ptr->cw, (long) hconv); |
2645 |
(long)hh, (long)ptr->cw, (long) hconv); |
2646 |
*/ |
2646 |
*/ |
2647 |
#ifdef LJ |
2647 |
#ifdef LJ |
2648 |
/* the guessed position must be a multiple of pixels */ |
2648 |
/* the guessed position must be a multiple of pixels */ |
2649 |
if (RESOLUTION == 300) |
2649 |
if (RESOLUTION == 300) |
2650 |
hh += (long4) ((ptr->cw)/4)*4*hconv; |
2650 |
hh += (long4) ((ptr->cw)/4)*4*hconv; |
Lines 2661-2667
bool do_posn,in_string;
Link Here
|
2661 |
if (command <= SET4) |
2661 |
if (command <= SET4) |
2662 |
h += ptr->tfmw; |
2662 |
h += ptr->tfmw; |
2663 |
|
2663 |
|
2664 |
if (pos_after) |
2664 |
if (pos_after) |
2665 |
SetPosn(h, v); |
2665 |
SetPosn(h, v); |
2666 |
else |
2666 |
else |
2667 |
last_rx = (int)PIXROUND(h, hconv) + x_goffset; |
2667 |
last_rx = (int)PIXROUND(h, hconv) + x_goffset; |
Lines 2682-2688
void DoBop()
Link Here
|
2682 |
} |
2682 |
} |
2683 |
fonts_used_on_this_page = 0; |
2683 |
fonts_used_on_this_page = 0; |
2684 |
#endif |
2684 |
#endif |
2685 |
for (p = hfontptr; p; p = p->next) |
2685 |
for (p = hfontptr; p; p = p->next) |
2686 |
p->used_on_this_page = _FALSE; |
2686 |
p->used_on_this_page = _FALSE; |
2687 |
} |
2687 |
} |
2688 |
|
2688 |
|
Lines 2740-2746
long4 x, y;
Link Here
|
2740 |
rx = (int)PIXROUND(x, hconv) + x_goffset; |
2740 |
rx = (int)PIXROUND(x, hconv) + x_goffset; |
2741 |
ry = (int)PIXROUND(y, vconv) + y_goffset; |
2741 |
ry = (int)PIXROUND(y, vconv) + y_goffset; |
2742 |
|
2742 |
|
2743 |
/* |
2743 |
/* |
2744 |
fprintf(ERR_STREAM, |
2744 |
fprintf(ERR_STREAM, |
2745 |
"setposn to %ld/%ld, %d/%d, last: %d/%d\n", |
2745 |
"setposn to %ld/%ld, %d/%d, last: %d/%d\n", |
2746 |
(long)x,(long)y, |
2746 |
(long)x,(long)y, |
Lines 2804-2816
long4 x, y;
Link Here
|
2804 |
offset in the buffer, CChar_Last is the first byte of the last |
2804 |
offset in the buffer, CChar_Last is the first byte of the last |
2805 |
compacted row (line repeat count). Updates the previous line |
2805 |
compacted row (line repeat count). Updates the previous line |
2806 |
(PrevLine) if necessary. */ |
2806 |
(PrevLine) if necessary. */ |
2807 |
void |
2807 |
void |
2808 |
#if NeedFunctionPrototypes |
2808 |
#if NeedFunctionPrototypes |
2809 |
CompressedCharLine(struct char_entry *ce, int nbpl, unsigned char *buffer) |
2809 |
CompressedCharLine(struct char_entry *ce, int nbpl, unsigned char *buffer) |
2810 |
#else |
2810 |
#else |
2811 |
CompressedCharLine(ce, nbpl, buffer) |
2811 |
CompressedCharLine(ce, nbpl, buffer) |
2812 |
struct char_entry *ce; |
2812 |
struct char_entry *ce; |
2813 |
int nbpl; |
2813 |
int nbpl; |
2814 |
unsigned char *buffer; |
2814 |
unsigned char *buffer; |
2815 |
#endif |
2815 |
#endif |
2816 |
{ |
2816 |
{ |
Lines 2821-2851
unsigned char *buffer;
Link Here
|
2821 |
int t,mode,max; |
2821 |
int t,mode,max; |
2822 |
register int x,y,i; |
2822 |
register int x,y,i; |
2823 |
|
2823 |
|
2824 |
prev = PrevLine; |
2824 |
prev = PrevLine; |
2825 |
obuf = buffer; |
2825 |
obuf = buffer; |
2826 |
end = buffer + nbpl; |
2826 |
end = buffer + nbpl; |
2827 |
x = 0; |
2827 |
x = 0; |
2828 |
while (obuf < end) { |
2828 |
while (obuf < end) { |
2829 |
if (*obuf != *prev) { |
2829 |
if (*obuf != *prev) { |
2830 |
*prev = *obuf; |
2830 |
*prev = *obuf; |
2831 |
x = 1; |
2831 |
x = 1; |
2832 |
} |
2832 |
} |
2833 |
obuf++; |
2833 |
obuf++; |
2834 |
prev++; |
2834 |
prev++; |
2835 |
} |
2835 |
} |
2836 |
if (x == 0 && CChar_Last >= 0) { |
2836 |
if (x == 0 && CChar_Last >= 0) { |
2837 |
(buffin[CChar_Last])++; |
2837 |
(buffin[CChar_Last])++; |
2838 |
return; /* line repeat count +1 */ |
2838 |
return; /* line repeat count +1 */ |
2839 |
} |
2839 |
} |
2840 |
|
2840 |
|
2841 |
end = buffin + BUFFSIZE - 16; |
2841 |
end = buffin + BUFFSIZE - 16; |
2842 |
obuf = buffin + CChar_Off; |
2842 |
obuf = buffin + CChar_Off; |
2843 |
buff = buffer; |
2843 |
buff = buffer; |
2844 |
*obuf++ = 0; /* Line repeat count = 0 */ |
2844 |
*obuf++ = 0; /* Line repeat count = 0 */ |
2845 |
t = 0; |
2845 |
t = 0; |
2846 |
CChar_Last = CChar_Off; /* Next line */ |
2846 |
CChar_Last = CChar_Off; /* Next line */ |
2847 |
mode = 0; |
2847 |
mode = 0; |
2848 |
y = *buff++; |
2848 |
y = *buff++; |
2849 |
i = 7; /* i = current bit */ |
2849 |
i = 7; /* i = current bit */ |
2850 |
while ((t < ce->width) && (obuf < end)) { |
2850 |
while ((t < ce->width) && (obuf < end)) { |
2851 |
max = ce->width - t; /* maximum pixels left to do */ |
2851 |
max = ce->width - t; /* maximum pixels left to do */ |
Lines 2853-2865
unsigned char *buffer;
Link Here
|
2853 |
if (mode == 0) { |
2853 |
if (mode == 0) { |
2854 |
/* white run */ |
2854 |
/* white run */ |
2855 |
while ((y & (1<<i)) == 0 && x < max) { |
2855 |
while ((y & (1<<i)) == 0 && x < max) { |
2856 |
x++; |
2856 |
x++; |
2857 |
i--; |
2857 |
i--; |
2858 |
if (i < 0) { |
2858 |
if (i < 0) { |
2859 |
i = 7; |
2859 |
i = 7; |
2860 |
y = *buff++; |
2860 |
y = *buff++; |
2861 |
while (y == 0 && x < max) { |
2861 |
while (y == 0 && x < max) { |
2862 |
x += 8; |
2862 |
x += 8; |
2863 |
y = *buff++; |
2863 |
y = *buff++; |
2864 |
} |
2864 |
} |
2865 |
} |
2865 |
} |
Lines 2869-2894
unsigned char *buffer;
Link Here
|
2869 |
else { |
2869 |
else { |
2870 |
/* black run */ |
2870 |
/* black run */ |
2871 |
while ((y & (1<<i)) != 0 && x < max) { |
2871 |
while ((y & (1<<i)) != 0 && x < max) { |
2872 |
x++; |
2872 |
x++; |
2873 |
i--; |
2873 |
i--; |
2874 |
if (i < 0) { |
2874 |
if (i < 0) { |
2875 |
i = 7; |
2875 |
i = 7; |
2876 |
y = *buff++; |
2876 |
y = *buff++; |
2877 |
while (y == 0xff && x < max) { |
2877 |
while (y == 0xff && x < max) { |
2878 |
x += 8; |
2878 |
x += 8; |
2879 |
y = *buff++; |
2879 |
y = *buff++; |
2880 |
} |
2880 |
} |
2881 |
} |
2881 |
} |
2882 |
} |
2882 |
} |
2883 |
mode = 0; |
2883 |
mode = 0; |
2884 |
} |
2884 |
} |
2885 |
if (x > max) |
2885 |
if (x > max) |
2886 |
x = max; |
2886 |
x = max; |
2887 |
t += x; |
2887 |
t += x; |
2888 |
/* make precautions for very long runs */ |
2888 |
/* make precautions for very long runs */ |
2889 |
while (x > 0xff) { |
2889 |
while (x > 0xff) { |
2890 |
*obuf++ = 0xff; |
2890 |
*obuf++ = 0xff; |
2891 |
*obuf++ = 0; |
2891 |
*obuf++ = 0; |
2892 |
x -= 0xff; |
2892 |
x -= 0xff; |
2893 |
} |
2893 |
} |
2894 |
*obuf++ = x; |
2894 |
*obuf++ = x; |
Lines 2968-2975
char *argv[];
Link Here
|
2968 |
#endif |
2968 |
#endif |
2969 |
{ |
2969 |
{ |
2970 |
int argind; /* argument index for flags */ |
2970 |
int argind; /* argument index for flags */ |
2971 |
char curarea[STRSIZE]; /* current file area */ |
2971 |
char *curarea; /* current file area */ |
2972 |
char curname[STRSIZE]; /* current file name */ |
2972 |
char *curname; /* current file name */ |
2973 |
char *tcp, *tcp1; /* temporary character pointers */ |
2973 |
char *tcp, *tcp1; /* temporary character pointers */ |
2974 |
char *this_arg; |
2974 |
char *this_arg; |
2975 |
double x_offset = 0.0, y_offset = 0.0; |
2975 |
double x_offset = 0.0, y_offset = 0.0; |
Lines 2988-2996
char *argv[];
Link Here
|
2988 |
#endif |
2988 |
#endif |
2989 |
#endif |
2989 |
#endif |
2990 |
|
2990 |
|
2991 |
if (argc == 2 && (strcmp (argv[1], "--version") == 0)) { |
2991 |
if (argc == 2 && EQ(argv[1], "--version")) { |
2992 |
extern KPSEDLL char *kpathsea_version_string; |
2992 |
extern KPSEDLL char *kpathsea_version_string; |
2993 |
puts ("dvilj(k) 2.6"); |
2993 |
puts (VERSION); |
2994 |
puts (kpathsea_version_string); |
2994 |
puts (kpathsea_version_string); |
2995 |
puts ("Copyright (C) 1997 Gustaf Neumann.\n\ |
2995 |
puts ("Copyright (C) 1997 Gustaf Neumann.\n\ |
2996 |
There is NO warranty. You may redistribute this software\n\ |
2996 |
There is NO warranty. You may redistribute this software\n\ |
Lines 2998-3004
under the terms of the GNU General Publi
Link Here
|
2998 |
For more information about these matters, see the files\n\ |
2998 |
For more information about these matters, see the files\n\ |
2999 |
named COPYING and dvi2xx.c.\n\ |
2999 |
named COPYING and dvi2xx.c.\n\ |
3000 |
Primary author of Dvi2xx: Gustaf Neumann; -k maintainer: K. Berry."); |
3000 |
Primary author of Dvi2xx: Gustaf Neumann; -k maintainer: K. Berry."); |
3001 |
exit (0); |
3001 |
exit (0); |
3002 |
} |
3002 |
} |
3003 |
|
3003 |
|
3004 |
#ifdef LJ4 |
3004 |
#ifdef LJ4 |
Lines 3048-3056
Primary author of Dvi2xx: Gustaf Neumann
Link Here
|
3048 |
#ifdef LJ2P |
3048 |
#ifdef LJ2P |
3049 |
case 'd': /* d selects DUPLEX mode */ |
3049 |
case 'd': /* d selects DUPLEX mode */ |
3050 |
tcp++; |
3050 |
tcp++; |
3051 |
if (*tcp == '1' ) |
3051 |
if (*tcp == '1' ) |
3052 |
DuplexMode = 1; |
3052 |
DuplexMode = 1; |
3053 |
else if (*tcp == '2') |
3053 |
else if (*tcp == '2') |
3054 |
DuplexMode = 2; |
3054 |
DuplexMode = 2; |
3055 |
else { |
3055 |
else { |
3056 |
Warning("Invalid DUPLEX mode, assuming DUPLEX=1, Long-Edge Binding"); |
3056 |
Warning("Invalid DUPLEX mode, assuming DUPLEX=1, Long-Edge Binding"); |
Lines 3062-3074
Primary author of Dvi2xx: Gustaf Neumann
Link Here
|
3062 |
DoublePage = _TRUE; |
3062 |
DoublePage = _TRUE; |
3063 |
tcp++; |
3063 |
tcp++; |
3064 |
if (*tcp == '1' || *tcp == '2') { |
3064 |
if (*tcp == '1' || *tcp == '2') { |
3065 |
if (*tcp == '2') |
3065 |
if (*tcp == '2') |
3066 |
PrintFirstPart = _FALSE; |
3066 |
PrintFirstPart = _FALSE; |
3067 |
else |
3067 |
else |
3068 |
PrintSecondPart = _FALSE; |
3068 |
PrintSecondPart = _FALSE; |
3069 |
tcp++; |
3069 |
tcp++; |
3070 |
} |
3070 |
} |
3071 |
if (*tcp == '-') |
3071 |
if (*tcp == '-') |
3072 |
PrintEmptyPages = _FALSE; |
3072 |
PrintEmptyPages = _FALSE; |
3073 |
break; |
3073 |
break; |
3074 |
#ifdef LJ4 |
3074 |
#ifdef LJ4 |
Lines 3256-3269
Primary author of Dvi2xx: Gustaf Neumann
Link Here
|
3256 |
#ifdef LJ |
3256 |
#ifdef LJ |
3257 |
case 'V': /* bugfixes for various vendor's PCL emulations */ |
3257 |
case 'V': /* bugfixes for various vendor's PCL emulations */ |
3258 |
tcp++; |
3258 |
tcp++; |
3259 |
if (*tcp == 'K' || *tcp == 'k') |
3259 |
if (*tcp == 'K' || *tcp == 'k') |
3260 |
kyocera_mode = _TRUE; |
3260 |
kyocera_mode = _TRUE; |
3261 |
else |
3261 |
else |
3262 |
if (*tcp == 'B' || *tcp == 'b') |
3262 |
if (*tcp == 'B' || *tcp == 'b') |
3263 |
brother_mode = _TRUE; |
3263 |
brother_mode = _TRUE; |
3264 |
# ifdef LJ4 |
3264 |
# ifdef LJ4 |
3265 |
else |
3265 |
else |
3266 |
if (*tcp == '6' || *tcp == '6') |
3266 |
if (*tcp == '6' || *tcp == '6') |
3267 |
LJ6 = _TRUE; |
3267 |
LJ6 = _TRUE; |
3268 |
# endif |
3268 |
# endif |
3269 |
break; |
3269 |
break; |
Lines 3306-3312
Primary author of Dvi2xx: Gustaf Neumann
Link Here
|
3306 |
#endif |
3306 |
#endif |
3307 |
#ifdef __riscos |
3307 |
#ifdef __riscos |
3308 |
case 'i': /* name of directory to store diagrams in */ |
3308 |
case 'i': /* name of directory to store diagrams in */ |
3309 |
tcp++; |
3309 |
tcp++; |
3310 |
ddi = 0; |
3310 |
ddi = 0; |
3311 |
while (*tcp != ' ' && *tcp != '\0' && ddi < DIAGDIRSIZE-1) { |
3311 |
while (*tcp != ' ' && *tcp != '\0' && ddi < DIAGDIRSIZE-1) { |
3312 |
diagdir[ddi++] = *tcp++; |
3312 |
diagdir[ddi++] = *tcp++; |
Lines 3328-3335
Primary author of Dvi2xx: Gustaf Neumann
Link Here
|
3328 |
} |
3328 |
} |
3329 |
} else { |
3329 |
} else { |
3330 |
|
3330 |
|
3331 |
(void) strcpy(filename, tcp); |
3331 |
filename = tcp; |
3332 |
if (!strcmp(filename, "-")) { |
3332 |
if (EQ(filename, "-")) { |
3333 |
EmitFileName = "-"; |
3333 |
EmitFileName = "-"; |
3334 |
#ifdef RISC_USE_OSL |
3334 |
#ifdef RISC_USE_OSL |
3335 |
dvifp = BINOPEN("Kbd:"); |
3335 |
dvifp = BINOPEN("Kbd:"); |
Lines 3339-3395
Primary author of Dvi2xx: Gustaf Neumann
Link Here
|
3339 |
AssureBinary(fileno(dvifp)); |
3339 |
AssureBinary(fileno(dvifp)); |
3340 |
#endif |
3340 |
#endif |
3341 |
} else { |
3341 |
} else { |
|
|
3342 |
/* Since this code is used only once during startup, we don't care |
3343 |
about free()ing the allocated strings that represent filenames. |
3344 |
It will be more work to realize proper deallocation handling than |
3345 |
it's worth in terms of saving a few bytes. We consider these |
3346 |
bytes actually static memory where we don't know the size in |
3347 |
advance and don't add them to the allocated_storage count. |
3348 |
[27 Jun 07 -js] */ |
3342 |
#ifdef KPATHSEA |
3349 |
#ifdef KPATHSEA |
3343 |
/* split into directory + file name */ |
3350 |
/* split into directory + file name */ |
3344 |
int tcplen, argvlen; |
3351 |
int tcplen, argvlen; |
3345 |
tcp = (char *)xbasename(argv[argind]);/* this knows about any kind of slashes */ |
3352 |
tcp = (char *)xbasename(argv[argind]);/* this knows about any kind of slashes */ |
3346 |
tcplen = strlen(tcp); |
3353 |
tcplen = strlen(tcp); |
|
|
3354 |
if ( tcplen == 0 ) { |
3355 |
/* This happens when the DVI file name has a trailing slash; this |
3356 |
is not a valid name. Then we terminate the argument parsing |
3357 |
loop, a usage message will be output below. */ |
3358 |
break; |
3359 |
} |
3347 |
argvlen = strlen(argv[argind]); |
3360 |
argvlen = strlen(argv[argind]); |
3348 |
if (tcplen == argvlen) |
3361 |
if (tcplen == argvlen) |
3349 |
curarea[0] = '\0'; |
3362 |
curarea = ""; |
3350 |
else { |
3363 |
else { |
3351 |
(void) strcpy(curarea, argv[argind]); |
3364 |
curarea = xstrdup(argv[argind]); |
3352 |
curarea[argvlen-tcplen] = '\0'; |
3365 |
curarea[argvlen-tcplen] = '\0'; |
3353 |
} |
3366 |
} |
3354 |
#else |
3367 |
#else |
3355 |
tcp = strrchr(argv[argind], '/'); |
3368 |
tcp = strrchr(argv[argind], '/'); |
3356 |
/* split into directory + file name */ |
3369 |
/* split into directory + file name */ |
3357 |
if (tcp == NULL) { |
3370 |
if (tcp == NULL) { |
3358 |
curarea[0] = '\0'; |
3371 |
curarea[0] = ""; |
3359 |
tcp = argv[argind]; |
3372 |
tcp = argv[argind]; |
3360 |
} else { |
3373 |
} else { |
3361 |
(void) strcpy(curarea, argv[argind]); |
3374 |
curarea = xstrdup(argv[argind]); |
3362 |
curarea[tcp-argv[argind]+1] = '\0'; |
3375 |
curarea[tcp-argv[argind]+1] = '\0'; |
3363 |
tcp += 1; |
3376 |
tcp += 1; |
3364 |
} |
3377 |
} |
3365 |
#endif |
3378 |
#endif |
3366 |
|
3379 |
|
3367 |
(void) strcpy(curname, tcp); |
3380 |
curname = (char *) xmalloc(strlen(tcp)+5); /* + space for ".dvi" */ |
|
|
3381 |
(void) strcpy(curname, tcp); |
3368 |
/* split into file name + extension */ |
3382 |
/* split into file name + extension */ |
3369 |
tcp1 = strrchr(tcp, '.'); |
3383 |
tcp1 = strrchr(curname, '.'); |
3370 |
if (tcp1 == NULL) { |
3384 |
if (tcp1 == NULL) { |
3371 |
(void) strcpy(rootname, curname); |
3385 |
rootname = xstrdup(curname); |
3372 |
strcat(curname, ".dvi"); |
3386 |
strcat(curname, ".dvi"); |
3373 |
} else { |
3387 |
} else { |
3374 |
*tcp1 = '\0'; |
3388 |
*tcp1 = '\0'; |
3375 |
(void) strcpy(rootname, curname); |
3389 |
rootname = xstrdup(curname); |
3376 |
*tcp1 = '.'; |
3390 |
*tcp1 = '.'; |
3377 |
} |
3391 |
} |
3378 |
|
3392 |
|
|
|
3393 |
filename = (char *) xmalloc(strlen(curarea)+strlen(curname)+1); |
3379 |
(void) strcpy(filename, curarea); |
3394 |
(void) strcpy(filename, curarea); |
3380 |
(void) strcat(filename, curname); |
3395 |
(void) strcat(filename, curname); |
3381 |
|
3396 |
|
3382 |
if ((dvifp = BINOPEN(filename)) == FPNULL) { |
3397 |
if ((dvifp = BINOPEN(filename)) == FPNULL) { |
3383 |
/* do not insist on .dvi */ |
3398 |
/* do not insist on .dvi */ |
3384 |
if (tcp1 == NULL) { |
3399 |
if (tcp1 == NULL) { |
3385 |
int l = strlen(curname); |
3400 |
filename[strlen(filename) - 4] = '\0'; |
3386 |
if (l > 4) |
3401 |
dvifp = BINOPEN(filename); |
3387 |
curname[l - 4] = '\0'; |
|
|
3388 |
l = strlen(filename); |
3389 |
if (l > 4) |
3390 |
filename[l - 4] = '\0'; |
3391 |
} |
3402 |
} |
3392 |
if (tcp1 != NULL || (dvifp = BINOPEN(filename)) == FPNULL) { |
3403 |
if (dvifp == FPNULL) { |
3393 |
#ifdef MSC5 |
3404 |
#ifdef MSC5 |
3394 |
Fatal("%s: can't find DVI file \"%s\"\n\n", |
3405 |
Fatal("%s: can't find DVI file \"%s\"\n\n", |
3395 |
G_progname, filename); |
3406 |
G_progname, filename); |
Lines 3411-3417
Primary author of Dvi2xx: Gustaf Neumann
Link Here
|
3411 |
y_goffset = (short) MM_TO_PXL(y_offset) + y_origin; |
3422 |
y_goffset = (short) MM_TO_PXL(y_offset) + y_origin; |
3412 |
|
3423 |
|
3413 |
if (dvifp == FPNULL) { |
3424 |
if (dvifp == FPNULL) { |
3414 |
fprintf(ERR_STREAM,"\nThis is the DVI to %s converter version %s", |
3425 |
fprintf(ERR_STREAM,"\nThis is the DVI to %s converter %s", |
3415 |
PRINTER, VERSION); |
3426 |
PRINTER, VERSION); |
3416 |
#ifdef SEVENBIT |
3427 |
#ifdef SEVENBIT |
3417 |
fprintf(ERR_STREAM,", 7bit"); |
3428 |
fprintf(ERR_STREAM,", 7bit"); |
Lines 3507-3519
Primary author of Dvi2xx: Gustaf Neumann
Link Here
|
3507 |
exit(1); |
3518 |
exit(1); |
3508 |
} |
3519 |
} |
3509 |
if (EQ(EmitFileName, "")) { |
3520 |
if (EQ(EmitFileName, "")) { |
3510 |
if ((EmitFileName = (char *)malloc( STRSIZE )) != NULL) |
3521 |
EmitFileName = (char *) xmalloc(strlen(rootname)+sizeof(EMITFILE_EXTENSION)); |
3511 |
allocated_storage += STRSIZE; |
3522 |
(void) strcpy(EmitFileName, rootname); |
3512 |
else |
|
|
3513 |
Fatal("Can't allocate storage of %d bytes\n",STRSIZE); |
3514 |
(void) strcpy(EmitFileName, curname); |
3515 |
if ((tcp1 = strrchr(EmitFileName, '.'))) |
3516 |
*tcp1 = '\0'; |
3517 |
strcat(EmitFileName, EMITFILE_EXTENSION); |
3523 |
strcat(EmitFileName, EMITFILE_EXTENSION); |
3518 |
} |
3524 |
} |
3519 |
if (G_quiet) |
3525 |
if (G_quiet) |
Lines 3668-3674
bool PFlag;
Link Here
|
3668 |
if (PrintTestPage) EMIT1("\033z"); |
3674 |
if (PrintTestPage) EMIT1("\033z"); |
3669 |
#ifdef vms |
3675 |
#ifdef vms |
3670 |
/* last record is not flushed to file, unless it is completely filled */ |
3676 |
/* last record is not flushed to file, unless it is completely filled */ |
3671 |
for (kk = (int)((*outfp)->_cnt); kk > 0; --kk) |
3677 |
for (kk = (int)((*outfp)->_cnt); kk > 0; --kk) |
3672 |
putc('\0',outfp); |
3678 |
putc('\0',outfp); |
3673 |
fflush(outfp); |
3679 |
fflush(outfp); |
3674 |
#endif |
3680 |
#endif |
Lines 3698-3703
bool PFlag;
Link Here
|
3698 |
#endif |
3704 |
#endif |
3699 |
} |
3705 |
} |
3700 |
CloseFiles(); |
3706 |
CloseFiles(); |
|
|
3707 |
if ( tmp_dir[0] != '\0' ) |
3708 |
rmdir (tmp_dir); /* ignore errors */ |
3701 |
exit(G_errenc); |
3709 |
exit(G_errenc); |
3702 |
} |
3710 |
} |
3703 |
|
3711 |
|
Lines 3764-3778
char **end;
Link Here
|
3764 |
#endif |
3772 |
#endif |
3765 |
{ |
3773 |
{ |
3766 |
char *a,*b; |
3774 |
char *a,*b; |
3767 |
|
3775 |
|
3768 |
a = s1; |
3776 |
a = s1; |
3769 |
b = s2; |
3777 |
b = s2; |
3770 |
while (*a != '\0') { |
3778 |
while (*a != '\0') { |
3771 |
if (tolower(*a) != tolower(*b)) return(_FALSE); |
3779 |
if (tolower(*a) != tolower(*b)) return(_FALSE); |
3772 |
a++; |
3780 |
a++; |
3773 |
b++; |
3781 |
b++; |
3774 |
} |
3782 |
} |
3775 |
*end = b; |
3783 |
*end = b; |
3776 |
return(_TRUE); |
3784 |
return(_TRUE); |
3777 |
} |
3785 |
} |
3778 |
|
3786 |
|
Lines 3791-3808
char **end;
Link Here
|
3791 |
{ |
3799 |
{ |
3792 |
char *s; |
3800 |
char *s; |
3793 |
int count = 0; |
3801 |
int count = 0; |
3794 |
|
3802 |
|
3795 |
s = str; |
3803 |
s = str; |
3796 |
while ((*s != '\0') && (count < number)) { |
3804 |
while ((*s != '\0') && (count < number)) { |
3797 |
while ((*s == ' ') || (*s == ',') || (*s == '=')) |
3805 |
while ((*s == ' ') || (*s == ',') || (*s == '=')) |
3798 |
s++; |
3806 |
s++; |
3799 |
if (*s != '\0') { |
3807 |
if (*s != '\0') { |
3800 |
result[count++] = strtod(s,&s); |
3808 |
result[count++] = strtod(s,&s); |
3801 |
} |
3809 |
} |
3802 |
} |
3810 |
} |
3803 |
while ((*s == ' ') || (*s == ',') || (*s == '=')) |
3811 |
while ((*s == ' ') || (*s == ',') || (*s == '=')) |
3804 |
s++; |
3812 |
s++; |
3805 |
*end = s; |
3813 |
*end = s; |
3806 |
return(count); |
3814 |
return(count); |
3807 |
} |
3815 |
} |
3808 |
|
3816 |
|
Lines 3822-3843
char *str;
Link Here
|
3822 |
int results[4],no; |
3830 |
int results[4],no; |
3823 |
|
3831 |
|
3824 |
s = str; |
3832 |
s = str; |
3825 |
while (*s == ' ') |
3833 |
while (*s == ' ') |
3826 |
s++; |
3834 |
s++; |
3827 |
if ((StrCompare("drawfile",s,&s)) || (StrCompare("DVIview_diagram",s,&s))) { |
3835 |
if ((StrCompare("drawfile",s,&s)) || (StrCompare("DVIview_diagram",s,&s))) { |
3828 |
|
3836 |
|
3829 |
if (printdiag == _FALSE) |
3837 |
if (printdiag == _FALSE) |
3830 |
return(_TRUE); /* it's a diagram, but don't print */ |
3838 |
return(_TRUE); /* it's a diagram, but don't print */ |
3831 |
|
3839 |
|
3832 |
while ((*s == ' ') || (*s == '=')) |
3840 |
while ((*s == ' ') || (*s == '=')) |
3833 |
s++; /* space or '=' separates keyword/keyval */ |
3841 |
s++; /* space or '=' separates keyword/keyval */ |
3834 |
|
3842 |
|
3835 |
if (*s == '\0') { |
3843 |
if (*s == '\0') { |
3836 |
fprintf(ERR_STREAM,"No filename given for \\special-diagram!\n"); |
3844 |
fprintf(ERR_STREAM,"No filename given for \\special-diagram!\n"); |
3837 |
return(_TRUE); |
3845 |
return(_TRUE); |
3838 |
} |
3846 |
} |
3839 |
sh = diagname; |
3847 |
sh = diagname; |
3840 |
while ((*s != ' ') && (*s != ',') && (*s != '\0')) |
3848 |
while ((*s != ' ') && (*s != ',') && (*s != '\0')) |
3841 |
*sh++ = *s++; |
3849 |
*sh++ = *s++; |
3842 |
*sh = '\0'; |
3850 |
*sh = '\0'; |
3843 |
|
3851 |
|
Lines 3845-3851
char *str;
Link Here
|
3845 |
dt.scalex = dt.scaley = 100; |
3853 |
dt.scalex = dt.scaley = 100; |
3846 |
dt.cropl = dt.cropb = dt.cropr = dt.cropt = 0; |
3854 |
dt.cropl = dt.cropb = dt.cropr = dt.cropt = 0; |
3847 |
while (*s != '\0') { |
3855 |
while (*s != '\0') { |
3848 |
while ((*s == ' ') || (*s == ',')) |
3856 |
while ((*s == ' ') || (*s == ',')) |
3849 |
s++; |
3857 |
s++; |
3850 |
if (*s != '\0') { |
3858 |
if (*s != '\0') { |
3851 |
if (StrCompare("scale",s,&s)) { |
3859 |
if (StrCompare("scale",s,&s)) { |
Lines 3853-3859
char *str;
Link Here
|
3853 |
fprintf(ERR_STREAM, |
3861 |
fprintf(ERR_STREAM, |
3854 |
"Too few arguments (%d) given for <scale> - ignored.\n",no); |
3862 |
"Too few arguments (%d) given for <scale> - ignored.\n",no); |
3855 |
} |
3863 |
} |
3856 |
dt.scalex = results[0]; |
3864 |
dt.scalex = results[0]; |
3857 |
dt.scaley = results[1]; |
3865 |
dt.scaley = results[1]; |
3858 |
} |
3866 |
} |
3859 |
else if (StrCompare("crop",s,&s)) { |
3867 |
else if (StrCompare("crop",s,&s)) { |
Lines 3861-3875
char *str;
Link Here
|
3861 |
fprintf(ERR_STREAM, |
3869 |
fprintf(ERR_STREAM, |
3862 |
"Too few arguments (%d) given for <crop> - ignored.\n",no); |
3870 |
"Too few arguments (%d) given for <crop> - ignored.\n",no); |
3863 |
} |
3871 |
} |
3864 |
dt.cropl = results[0]; |
3872 |
dt.cropl = results[0]; |
3865 |
dt.cropr = results[1]; |
3873 |
dt.cropr = results[1]; |
3866 |
dt.cropt = results[2]; |
3874 |
dt.cropt = results[2]; |
3867 |
dt.cropb = results[3]; |
3875 |
dt.cropb = results[3]; |
3868 |
} |
3876 |
} |
3869 |
else { |
3877 |
else { |
3870 |
fprintf(ERR_STREAM,"Bad \\special keyword - <%s> ignored\n",s); |
3878 |
fprintf(ERR_STREAM,"Bad \\special keyword - <%s> ignored\n",s); |
3871 |
/* skip over this word */ |
3879 |
/* skip over this word */ |
3872 |
while ((*s != ' ') && (*s != ',') && (*s != '=') && (*s != '\0')) |
3880 |
while ((*s != ' ') && (*s != ',') && (*s != '=') && (*s != '\0')) |
3873 |
s++; |
3881 |
s++; |
3874 |
} |
3882 |
} |
3875 |
} |
3883 |
} |
Lines 3879-3885
char *str;
Link Here
|
3879 |
diagram(diagname,&dt); |
3887 |
diagram(diagname,&dt); |
3880 |
return(_TRUE); |
3888 |
return(_TRUE); |
3881 |
} |
3889 |
} |
3882 |
else |
3890 |
else |
3883 |
return(_FALSE); |
3891 |
return(_FALSE); |
3884 |
} |
3892 |
} |
3885 |
# endif /* LJ */ |
3893 |
# endif /* LJ */ |
Lines 3895-3964
char *str;
Link Here
|
3895 |
int n; |
3903 |
int n; |
3896 |
#endif |
3904 |
#endif |
3897 |
{ |
3905 |
{ |
3898 |
char spbuf[STRSIZE], xs[STRSIZE], ys[STRSIZE]; |
3906 |
char xs[STRSIZE], ys[STRSIZE]; |
3899 |
char *sf = NULL, *psfile = NULL; |
3907 |
char *include_file = NULL; |
|
|
3908 |
enum { VerbFile, HPFile, PSFile } file_type; |
3900 |
float x,y; |
3909 |
float x,y; |
3901 |
long4 x_pos, y_pos; |
3910 |
long4 x_pos, y_pos; |
3902 |
KeyWord k; |
3911 |
KeyWord k; |
3903 |
int i, j, j1; |
3912 |
int i, j, j1; |
3904 |
static int GrayScale = 10, Pattern = 1; |
3913 |
static int GrayScale = 10, Pattern = 1; |
3905 |
static bool GrayFill = _TRUE; |
3914 |
static bool GrayFill = _TRUE; |
3906 |
static long4 p_x[80], p_y[80]; |
3915 |
static long4 p_x[MAX_SPECIAL_DEFPOINTS], p_y[MAX_SPECIAL_DEFPOINTS]; |
3907 |
int llx=0, lly=0, urx=0, ury=0, rwi=0, rhi=0; |
3916 |
int llx=0, lly=0, urx=0, ury=0, rwi=0; |
3908 |
#ifdef WIN32 |
|
|
3909 |
char *gs_path; |
3910 |
#endif |
3911 |
|
3917 |
|
3912 |
str[n] = '\0'; |
3918 |
str[n] = '\0'; |
3913 |
spbuf[0] = '\0'; |
3919 |
for ( i=0 ; i<MAX_SPECIAL_DEFPOINTS ; i++ ) |
|
|
3920 |
p_x[i] = p_y[i] = -1; |
3914 |
|
3921 |
|
3915 |
SetPosn(h, v); |
3922 |
SetPosn(h, v); |
3916 |
#ifdef __riscos |
3923 |
#ifdef __riscos |
3917 |
#ifdef LJ |
3924 |
#ifdef LJ |
3918 |
if (ParseDiagram(str)) |
3925 |
if (ParseDiagram(str)) |
3919 |
return; |
3926 |
return; |
3920 |
#endif |
3927 |
#endif |
3921 |
#endif |
3928 |
#endif |
3922 |
|
3929 |
|
3923 |
while ( (str = GetKeyStr(str, &k)) != NULL ) { |
3930 |
while ( (str = GetKeyStr(str, &k)) != NULL ) { |
3924 |
/* get all keyword-value pairs */ |
3931 |
/* get all keyword-value pairs */ |
3925 |
/* for compatibility, single words are taken as file names */ |
3932 |
/* for compatibility, single words are taken as file names */ |
3926 |
if ( k.vt == None && access(k.Key, 0) == 0) { |
3933 |
if ( k.vt == None && access(k.Key, 0) == 0) { |
3927 |
if ( sf |
3934 |
if ( include_file && !kpse_tex_hush ("special") ) { |
3928 |
#ifdef KPATHSEA |
3935 |
Warning("More than one \\special file name given. %s ignored", include_file); |
3929 |
&& !kpse_tex_hush ("special") |
3936 |
free (include_file); |
3930 |
#endif |
3937 |
} |
3931 |
) |
3938 |
include_file = xstrdup(k.Key); |
3932 |
Warning("More than one \\special file name given. %s ignored", sf); |
3939 |
file_type = VerbFile; |
3933 |
(void) strcpy(spbuf, k.Key); |
3940 |
} else if ( GetKeyVal( &k, KeyTab, NKEYS, &i ) && i != -1 ) { |
3934 |
sf = spbuf; |
|
|
3935 |
/* |
3936 |
for (j = 1; ((sf[j]=='/' ? sf[j]='\\':sf[j]) != '\0'); j++); |
3937 |
*/ |
3938 |
} else if ( GetKeyVal( &k, KeyTab, NKEYS, &i ) && i != -1 ) |
3939 |
switch (i) { |
3941 |
switch (i) { |
3940 |
case PSFILE: |
3942 |
case PSFILE: |
3941 |
if (sf |
3943 |
if ( include_file ) { |
3942 |
#ifdef KPATHSEA |
3944 |
Warning("More than one \\special file name given. %s ignored", include_file); |
3943 |
&& !kpse_tex_hush ("special") |
3945 |
free(include_file); |
3944 |
#endif |
3946 |
} |
3945 |
) |
3947 |
include_file = xstrdup(k.Val); |
3946 |
Warning("More than one \\special file name given. %s ignored", sf); |
3948 |
file_type = PSFile; |
3947 |
(void) strcpy(spbuf, k.Val); |
|
|
3948 |
psfile = spbuf; |
3949 |
/* |
3950 |
for (j=1; ((sf[j]=='/' ? sf[j]='\\':sf[j]) != '\0'); j++); |
3951 |
*/ |
3952 |
break; |
3949 |
break; |
3953 |
|
3950 |
|
3954 |
case HPFILE: |
3951 |
case HPFILE: |
3955 |
if (sf) |
3952 |
if ( include_file && !kpse_tex_hush ("special") ) { |
3956 |
Warning("More than one \\special file name given. %s ignored", sf); |
3953 |
Warning("More than one \\special file name given. %s ignored", include_file); |
3957 |
(void) strcpy(spbuf, k.Val); |
3954 |
free(include_file); |
3958 |
sf = spbuf; |
3955 |
} |
3959 |
/* |
3956 |
include_file = xstrdup(k.Val); |
3960 |
for (j=1; ((sf[j]=='/' ? sf[j]='\\':sf[j]) != '\0'); j++); |
3957 |
file_type = HPFile; |
3961 |
*/ |
|
|
3962 |
break; |
3958 |
break; |
3963 |
|
3959 |
|
3964 |
case ORIENTATION: |
3960 |
case ORIENTATION: |
Lines 3977-4000
int n;
Link Here
|
3977 |
EMIT2("\033&l%dO\033*rF", (unsigned char)k.v.i); |
3973 |
EMIT2("\033&l%dO\033*rF", (unsigned char)k.v.i); |
3978 |
} |
3974 |
} |
3979 |
#endif |
3975 |
#endif |
3980 |
else |
3976 |
else { |
3981 |
#ifdef KPATHSEA |
3977 |
Warning( "Invalid orientation (%d) given; ignored.", k.v.i); |
3982 |
if (!kpse_tex_hush ("special")) |
3978 |
} |
3983 |
#endif |
|
|
3984 |
Warning( "Invalid orientation (%d)given; ignored.", k.v.i); |
3985 |
break; |
3979 |
break; |
3986 |
|
3980 |
|
3987 |
case RESETPOINTS: |
3981 |
case RESETPOINTS: |
3988 |
(void) strcpy(spbuf, k.Val); |
3982 |
for ( i=0 ; i<MAX_SPECIAL_DEFPOINTS ; i++ ) |
3989 |
|
3983 |
p_x[i] = p_y[i] = -1; |
3990 |
sf = NULL; |
|
|
3991 |
break; |
3984 |
break; |
3992 |
|
3985 |
|
3993 |
case DEFPOINT: |
3986 |
case DEFPOINT: |
3994 |
(void) strcpy(spbuf, k.Val); |
3987 |
/* 254 is STRSIZE-1. cpp should be used to construct that number. */ |
3995 |
i = sscanf(spbuf,"%d(%[^,],%s)",&j,xs,ys); |
3988 |
i = sscanf(k.Val,"%d(%254[^,],%254s)",&j,xs,ys); |
3996 |
if (i>0) { |
3989 |
if (i>0) { |
3997 |
x_pos = h; |
3990 |
if ( j < 0 || j >= MAX_SPECIAL_DEFPOINTS ) { |
|
|
3991 |
Warning ("defpoint %d ignored, must be between 0 and %d", |
3992 |
j, MAX_SPECIAL_DEFPOINTS); |
3993 |
break; |
3994 |
} |
3995 |
x_pos = h; |
3998 |
y_pos = v; |
3996 |
y_pos = v; |
3999 |
if (i>1) { |
3997 |
if (i>1) { |
4000 |
if (sscanf(xs,"%fpt",&x)>0) { |
3998 |
if (sscanf(xs,"%fpt",&x)>0) { |
Lines 4010-4029
int n;
Link Here
|
4010 |
} |
4008 |
} |
4011 |
p_x[j]=x_pos; |
4009 |
p_x[j]=x_pos; |
4012 |
p_y[j]=y_pos; |
4010 |
p_y[j]=y_pos; |
4013 |
} else |
4011 |
} else { |
4014 |
#ifdef KPATHSEA |
4012 |
Warning("invalid point definition"); |
4015 |
if (!kpse_tex_hush ("special")) |
4013 |
} |
4016 |
#endif |
|
|
4017 |
Warning("invalid point definition\n"); |
4018 |
|
4019 |
sf = NULL; |
4020 |
break; |
4014 |
break; |
4021 |
|
4015 |
|
4022 |
case FILL: |
4016 |
case FILL: |
4023 |
(void) strcpy(spbuf, k.Val); |
4017 |
/* 254 is STRSIZE-1. cpp should be used to construct that number. */ |
4024 |
i = sscanf(spbuf,"%d/%d %s",&j,&j1,xs); |
4018 |
i = sscanf(k.Val,"%d/%d %254s",&j,&j1,xs); |
4025 |
if (i>1) { |
4019 |
if (i>1) { |
4026 |
#ifdef LJ |
4020 |
#ifdef LJ |
|
|
4021 |
if ( j < 0 || j >= MAX_SPECIAL_DEFPOINTS ) { |
4022 |
Warning ("fill ignored, point %d must be between 0 and %d", |
4023 |
j, MAX_SPECIAL_DEFPOINTS); |
4024 |
break; |
4025 |
} |
4026 |
if ( p_x[j] == -1 ) { |
4027 |
Warning ("fill ignored, point %d is undefined\n", j); |
4028 |
break; |
4029 |
} |
4030 |
if ( j1 < 0 || j1 >= MAX_SPECIAL_DEFPOINTS ) { |
4031 |
Warning ("fill ignored, point %d must be between 0 and %d", |
4032 |
j1, MAX_SPECIAL_DEFPOINTS); |
4033 |
break; |
4034 |
} |
4035 |
if ( p_x[j1] == -1 ) { |
4036 |
Warning ("fill ignored, point %d is undefined\n", j1); |
4037 |
break; |
4038 |
} |
4027 |
SetPosn(p_x[j], p_y[j]); |
4039 |
SetPosn(p_x[j], p_y[j]); |
4028 |
x_pos = (long4)PIXROUND(p_x[j1]-p_x[j], hconv); |
4040 |
x_pos = (long4)PIXROUND(p_x[j1]-p_x[j], hconv); |
4029 |
y_pos = (long4)PIXROUND(p_y[j1]-p_y[j], vconv); |
4041 |
y_pos = (long4)PIXROUND(p_y[j1]-p_y[j], vconv); |
Lines 4043-4064
int n;
Link Here
|
4043 |
if ((k.v.i >= 0) && (k.v.i < 101)) { |
4055 |
if ((k.v.i >= 0) && (k.v.i < 101)) { |
4044 |
GrayScale = k.v.i; |
4056 |
GrayScale = k.v.i; |
4045 |
GrayFill = _TRUE; |
4057 |
GrayFill = _TRUE; |
4046 |
} else |
4058 |
} else { |
4047 |
#ifdef KPATHSEA |
|
|
4048 |
if (!kpse_tex_hush ("special")) |
4049 |
#endif |
4050 |
Warning( "Invalid gray scale (%d) given; ignored.", k.v.i); |
4059 |
Warning( "Invalid gray scale (%d) given; ignored.", k.v.i); |
|
|
4060 |
} |
4051 |
break; |
4061 |
break; |
4052 |
|
4062 |
|
4053 |
case PATTERN: |
4063 |
case PATTERN: |
4054 |
if ((k.v.i >= 0) && (k.v.i < 7)) { |
4064 |
if ((k.v.i >= 0) && (k.v.i < 7)) { |
4055 |
Pattern = k.v.i; |
4065 |
Pattern = k.v.i; |
4056 |
GrayFill = _FALSE; |
4066 |
GrayFill = _FALSE; |
4057 |
} else |
4067 |
} else { |
4058 |
#ifdef KPATHSEA |
|
|
4059 |
if (!kpse_tex_hush ("special")) |
4060 |
#endif |
4061 |
Warning( "Invalid pattern (%d) given; ignored.", k.v.i); |
4068 |
Warning( "Invalid pattern (%d) given; ignored.", k.v.i); |
|
|
4069 |
} |
4062 |
break; |
4070 |
break; |
4063 |
|
4071 |
|
4064 |
case LLX: llx = k.v.i; break; |
4072 |
case LLX: llx = k.v.i; break; |
Lines 4066-4168
int n;
Link Here
|
4066 |
case URX: urx = k.v.i; break; |
4074 |
case URX: urx = k.v.i; break; |
4067 |
case URY: ury = k.v.i; break; |
4075 |
case URY: ury = k.v.i; break; |
4068 |
case RWI: rwi = k.v.i; break; |
4076 |
case RWI: rwi = k.v.i; break; |
4069 |
case RHI: rhi = k.v.i; break; |
4077 |
case RHI: |
|
|
4078 |
if (!kpse_tex_hush ("special")) |
4079 |
Warning("Whatever rhi was good for once, it is ignored now."); |
4080 |
break; |
4070 |
|
4081 |
|
4071 |
default: |
4082 |
default: |
4072 |
#ifdef KPATHSEA |
4083 |
if ( !kpse_tex_hush ("special") ) |
4073 |
if (!kpse_tex_hush ("special")) |
4084 |
Warning("Can't handle %s=%s command; ignored.", k.Key, k.Val); |
4074 |
#endif |
|
|
4075 |
Warning("Can't handle %s=%s command; ignored.", k.Key, k.Val); |
4076 |
break; |
4085 |
break; |
4077 |
} |
4086 |
} |
4078 |
|
4087 |
|
4079 |
else |
4088 |
} else if (!kpse_tex_hush ("special")) { |
4080 |
#ifdef KPATHSEA |
|
|
4081 |
if (!kpse_tex_hush ("special")) |
4082 |
#endif |
4083 |
Warning("Invalid keyword or value in \\special - <%s> ignored", k.Key); |
4089 |
Warning("Invalid keyword or value in \\special - <%s> ignored", k.Key); |
|
|
4090 |
} |
4091 |
|
4092 |
free (k.Key); |
4093 |
if ( k.Val != NULL ) free(k.Val); |
4084 |
} |
4094 |
} |
4085 |
|
4095 |
|
4086 |
if ( sf || psfile ) { |
4096 |
if ( include_file ) { |
4087 |
last_rx = last_ry = UNKNOWN; |
4097 |
last_rx = last_ry = UNKNOWN; |
4088 |
#ifdef IBM3812 |
4098 |
#ifdef IBM3812 |
4089 |
PMPflush; |
4099 |
PMPflush; |
4090 |
#endif |
4100 |
#endif |
4091 |
if (sf) { |
4101 |
|
4092 |
if (i == HPFILE) |
|
|
4093 |
CopyHPFile( sf ); |
4094 |
else |
4095 |
CopyFile( sf ); |
4096 |
} |
4097 |
else |
4098 |
#ifdef LJ |
4102 |
#ifdef LJ |
4099 |
if (psfile) { |
4103 |
if ( file_type == PSFile) { |
4100 |
/* int height = rwi * (urx - llx) / (ury - lly);*/ |
4104 |
/* int height = rwi * (urx - llx) / (ury - lly);*/ |
4101 |
int width = urx - llx; |
4105 |
int width = urx - llx; |
4102 |
int height = ury - lly; |
4106 |
int height = ury - lly; |
4103 |
char cmd[255]; |
4107 |
char cmd[255]; |
4104 |
int scale_factor = 3000 * width / rwi; |
4108 |
char *cmd_format = "%s -q -dSIMPLE -dSAFER -dNOPAUSE -sDEVICE=%s -sOutputFile=%s %s %s showpage.ps -c quit"; |
4105 |
int adjusted_height = height * 300/scale_factor; |
4109 |
char *gs_cmd; |
4106 |
int adjusted_llx = llx * 300/scale_factor; |
4110 |
int scale_factor, adjusted_height, adjusted_llx; |
4107 |
char *printer = "ljetplus"; /* use the most stupid one */ |
4111 |
char *printer = "ljetplus"; /* use the most stupid one */ |
4108 |
|
4112 |
|
4109 |
|
4113 |
char pcl_file[STRSIZE]; |
4110 |
char scale_file_name[255]; |
4114 |
char scale_file[STRSIZE]; |
4111 |
char *scale_file = tmpnam(scale_file_name); |
4115 |
FILEPTR scalef; |
4112 |
char *pcl_file = tmpnam(NULL); |
4116 |
|
4113 |
FILEPTR scalef; |
4117 |
if ( urx == 0 || ury == 0 || rwi == 0 ) { |
4114 |
|
4118 |
/* Since dvips' psfile special has a different syntax, this might |
4115 |
if ( (scalef = BOUTOPEN(scale_file)) == FPNULL ) { |
4119 |
well be one of those specials, i.e., a non-dviljk special. Then |
4116 |
Warning("Unable to open file %s for writing", scale_file ); |
4120 |
the Warning should be suppressable. */ |
4117 |
return; |
4121 |
if ( !kpse_tex_hush ("special") ) |
4118 |
} |
4122 |
Warning ("Ignoring psfile special without urx, ury and rwi attributes"); |
4119 |
fprintf(scalef, "%.2f %.2f scale\n%d %d translate\n", |
4123 |
free (include_file); |
4120 |
300.0/scale_factor, 300.0/scale_factor, |
4124 |
return; |
4121 |
0, adjusted_height == height ? 0 : ury); |
4125 |
} |
4122 |
BCLOSE( scalef ); |
4126 |
scale_factor = 3000 * width / rwi; |
|
|
4127 |
adjusted_height = height * 300/scale_factor; |
4128 |
adjusted_llx = llx * 300/scale_factor; |
4129 |
|
4130 |
/* We cannot use mkstemp, as we cannot pass two open file descriptors |
4131 |
portably to Ghostscript. We don't want to use tmpnam() or tempnam() |
4132 |
either, as they have tempfile creation race conditions. Instead we |
4133 |
create a temporary directory with mkdtemp() -- if that's available. |
4134 |
If not, we are thrown back to tempnam(), to get our functionality |
4135 |
at all. We need to create the temporary directory only once per |
4136 |
run; it will be deleted in AllDone(). */ |
4137 |
if ( tmp_dir[0] == '\0' ) { |
4138 |
char * base_dir; |
4139 |
if ( (base_dir = getenv("TMPDIR")) == NULL ) { |
4140 |
base_dir = "/tmp"; |
4141 |
} else if ( strlen(base_dir) > STRSIZE - sizeof("/dviljkXXXXXX/include.pcl") ) { |
4142 |
Warning ("TMPDIR %s is too long, using /tmp instead", base_dir); |
4143 |
base_dir = "/tmp"; |
4144 |
} |
4145 |
if ( base_dir[0] == '/' && base_dir[1] == '\0' ) { |
4146 |
Warning ("Feeling naughty, do we? / is no temporary directory, dude"); |
4147 |
base_dir = "/tmp"; |
4148 |
} |
4149 |
strcpy (tmp_dir, base_dir); |
4150 |
strcat (tmp_dir, "/dviljkXXXXXX"); |
4151 |
if ( mkdtemp(tmp_dir) == NULL ) { |
4152 |
Warning ("Could not create temporary directory %s, errno = %d; ignoring include file special", |
4153 |
tmp_dir, errno); |
4154 |
return; |
4155 |
} |
4156 |
} |
4157 |
strcpy(pcl_file, tmp_dir); |
4158 |
strcat(pcl_file, "/include.pcl"); |
4159 |
strcpy(scale_file, tmp_dir); |
4160 |
strcat(scale_file, "/scale.ps"); |
4161 |
|
4162 |
if ( (scalef = BOUTOPEN(scale_file)) == FPNULL ) { |
4163 |
Warning("Unable to open file %s for writing", scale_file ); |
4164 |
free (include_file); |
4165 |
unlink(scale_file); /* ignore error */ |
4166 |
return; |
4167 |
} |
4168 |
fprintf(scalef, "%.2f %.2f scale\n%d %d translate\n", |
4169 |
300.0/scale_factor, 300.0/scale_factor, |
4170 |
0, adjusted_height == height ? 0 : ury); |
4171 |
BCLOSE( scalef ); |
4123 |
|
4172 |
|
4124 |
#ifdef WIN32 |
4173 |
#ifdef WIN32 |
4125 |
gs_path = getenv("GS_PATH"); |
4174 |
if ( (gs_cmd = getenv("GS_PATH")) == NULL ) |
4126 |
if (!gs_path) |
4175 |
gs_cmd = "gswin32c.exe"; |
4127 |
gs_path = "gswin32c.exe"; |
4176 |
#else |
4128 |
sprintf(cmd,"%s -q -dSIMPLE -dSAFER -dNOPAUSE -sDEVICE=%s -sOutputFile=%s %s %s showpage.ps -c quit", |
4177 |
gs_cmd = "gs"; |
4129 |
gs_path, printer, pcl_file, scale_file, psfile); |
|
|
4130 |
#else |
4131 |
sprintf(cmd,"gs -q -dSIMPLE -dSAFER -dNOPAUSE -sDEVICE=%s -sOutputFile=%s %s %s showpage.ps -c quit", |
4132 |
printer, pcl_file, scale_file, psfile); |
4133 |
#endif |
4134 |
#ifdef DEBUGGS |
4135 |
fprintf(stderr, |
4136 |
"PS-file '%s' w=%d, h=%d, urx=%d, ury=%d, llx=%d, lly=%d, rwi=%d\n", |
4137 |
psfile, urx - llx, height, urx,ury,llx,lly, rwi); |
4138 |
fprintf(stderr,"%s\n",cmd); |
4139 |
#endif |
4178 |
#endif |
4140 |
if (system(cmd)) { |
4179 |
if ( strlen(cmd_format)-10 + strlen(gs_cmd) + strlen(printer) + |
4141 |
Warning("execution of '%s' returned an error", cmd); |
4180 |
strlen(pcl_file) + strlen(scale_file) + strlen(include_file) +1 > |
4142 |
} else { |
4181 |
sizeof(cmd) ) { |
4143 |
#ifdef DEBUGGS |
4182 |
Warning ("Ghostscript command for %s would be too long, skipping special", include_file); |
4144 |
fprintf(stderr, "o=%d, h=%d, so=%d, sh=%d\n", |
4183 |
free (include_file); |
4145 |
llx, height, adjusted_llx, adjusted_height); |
4184 |
unlink(scale_file); /* ignore errors */ |
4146 |
|
4185 |
unlink(pcl_file); |
4147 |
fprintf(stderr, "OLD x=%d, y=%d\n", |
4186 |
return; |
4148 |
(int)PIXROUND(h, hconv) + x_goffset, |
4187 |
} |
4149 |
(int)PIXROUND(v, vconv) + y_goffset); |
4188 |
sprintf(cmd, cmd_format, |
4150 |
#endif |
4189 |
gs_cmd, printer, pcl_file, scale_file, include_file); |
4151 |
v -= 65536l*adjusted_height; /**300/scale_factor;*/ |
4190 |
#ifdef DEBUGGS |
4152 |
h -= 65536l*adjusted_llx; /* *300/scale_factor;*/ |
4191 |
fprintf(stderr, |
4153 |
SetPosn(h, v); |
4192 |
"PS-file '%s' w=%d, h=%d, urx=%d, ury=%d, llx=%d, lly=%d, rwi=%d\n", |
4154 |
#ifdef DEBUGGS |
4193 |
include_file, urx - llx, height, urx,ury,llx,lly, rwi); |
4155 |
fprintf(stderr, "NEW x=%d, y=%d\n", |
4194 |
fprintf(stderr,"%s\n",cmd); |
4156 |
(int)PIXROUND(h, hconv) + x_goffset, |
4195 |
#endif |
4157 |
(int)PIXROUND(v, vconv) + y_goffset); |
4196 |
if (system(cmd)) { |
4158 |
#endif |
4197 |
Warning("execution of '%s' returned an error", cmd); |
4159 |
|
4198 |
} else { |
4160 |
CopyHPFile( pcl_file ); |
4199 |
#ifdef DEBUGGS |
4161 |
/* unlink(pcl_file); */ |
4200 |
fprintf(stderr, "o=%d, h=%d, so=%d, sh=%d\n", |
4162 |
/* unlink(scale_file); */ |
4201 |
llx, height, adjusted_llx, adjusted_height); |
4163 |
} |
4202 |
|
|
|
4203 |
fprintf(stderr, "OLD x=%d, y=%d\n", |
4204 |
(int)PIXROUND(h, hconv) + x_goffset, |
4205 |
(int)PIXROUND(v, vconv) + y_goffset); |
4206 |
#endif |
4207 |
v -= 65536l*adjusted_height; /**300/scale_factor;*/ |
4208 |
h -= 65536l*adjusted_llx; /* *300/scale_factor;*/ |
4209 |
SetPosn(h, v); |
4210 |
#ifdef DEBUGGS |
4211 |
fprintf(stderr, "NEW x=%d, y=%d\n", |
4212 |
(int)PIXROUND(h, hconv) + x_goffset, |
4213 |
(int)PIXROUND(v, vconv) + y_goffset); |
4214 |
#endif |
4215 |
|
4216 |
CopyHPFile( pcl_file ); |
4164 |
} |
4217 |
} |
|
|
4218 |
unlink(scale_file); /* ignore errors */ |
4219 |
unlink(pcl_file); |
4220 |
} |
4221 |
else |
4165 |
#endif /* LJ */ |
4222 |
#endif /* LJ */ |
|
|
4223 |
|
4224 |
if ( file_type == HPFile ) |
4225 |
CopyHPFile( include_file ); |
4226 |
else if ( file_type == VerbFile ) |
4227 |
CopyFile( include_file ); |
4228 |
else |
4229 |
Warning ("This can't happen: unknown file_type value %d", file_type); |
4230 |
|
4231 |
if ( include_file != NULL ) free(include_file); |
4166 |
} |
4232 |
} |
4167 |
} |
4233 |
} |
4168 |
|
4234 |
|
Lines 4173-4184
int n;
Link Here
|
4173 |
/**********************************************************************/ |
4239 |
/**********************************************************************/ |
4174 |
/***************************** GetKeyStr ****************************/ |
4240 |
/***************************** GetKeyStr ****************************/ |
4175 |
/**********************************************************************/ |
4241 |
/**********************************************************************/ |
4176 |
/* extract first keyword-value pair from string (value part may be null) |
4242 |
/* Extract first keyword-value pair from string (value part may be null), |
4177 |
* return pointer to remainder of string |
4243 |
* keyword and value are allocated and must be free by caller. |
4178 |
* return NULL if none found |
4244 |
* Return pointer to remainder of string, |
|
|
4245 |
* return NULL if none found. |
4179 |
*/ |
4246 |
*/ |
4180 |
char KeyStr[STRSIZE]; |
|
|
4181 |
char ValStr[STRSIZE]; |
4182 |
#if NeedFunctionPrototypes |
4247 |
#if NeedFunctionPrototypes |
4183 |
char *GetKeyStr(char *str, KeyWord *kw ) |
4248 |
char *GetKeyStr(char *str, KeyWord *kw ) |
4184 |
#else |
4249 |
#else |
Lines 4187-4225
char *str;
Link Here
|
4187 |
KeyWord *kw; |
4252 |
KeyWord *kw; |
4188 |
#endif |
4253 |
#endif |
4189 |
{ |
4254 |
{ |
4190 |
char *s, *k, *v, t; |
4255 |
char *s, *start; |
|
|
4256 |
char save_char, quote_char; |
4191 |
if ( !str ) |
4257 |
if ( !str ) |
4192 |
return( NULL ); |
4258 |
return( NULL ); |
4193 |
for (s = str; *s == ' '; s++) |
4259 |
for (s = str; *s == ' '; s++) |
4194 |
; /* skip over blanks */ |
4260 |
; /* skip over blanks */ |
4195 |
if (*s == '\0') |
4261 |
if (*s == '\0') |
4196 |
return( NULL ); |
4262 |
return( NULL ); |
4197 |
for (k = KeyStr; /* extract keyword portion */ |
4263 |
start = s++; /* start of keyword */ |
4198 |
*s != ' ' && *s != '\0' && *s != '='; |
4264 |
while ( *s != ' ' && *s != '\0' && *s != '=' ) /* locate end */ |
4199 |
*k++ = *s++) |
4265 |
s++; |
4200 |
; |
4266 |
save_char = *s; |
4201 |
*k = '\0'; |
4267 |
*s = '\0'; |
4202 |
kw->Key = KeyStr; |
4268 |
kw->Key = xstrdup(start); |
4203 |
kw->Val = v = NULL; |
4269 |
kw->Val = NULL; |
4204 |
kw->vt = None; |
4270 |
kw->vt = None; |
4205 |
for ( ; *s == ' '; s++) |
4271 |
if ( save_char == '\0' ) /* shortcut when we're at the end */ |
4206 |
; /* skip over blanks */ |
4272 |
return (s); |
4207 |
if ( *s != '=' ) /* look for "=" */ |
4273 |
*s = save_char; /* restore keyword end char */ |
|
|
4274 |
while ( *s == ' ' ) s++ ; /* skip over blanks */ |
4275 |
if ( *s != '=' ) /* no "=" means no value */ |
4208 |
return( s ); |
4276 |
return( s ); |
4209 |
for (s++; *s == ' '; s++); /* skip over blanks */ |
4277 |
for (s++; *s == ' '; s++) |
4210 |
if ( *s == '\'' || *s == '\"' ) /* get string delimiter */ |
4278 |
; /* skip over blanks */ |
4211 |
t = *s++; |
4279 |
if ( *s == '\'' || *s == '\"' ) /* get string delimiter */ |
|
|
4280 |
quote_char = *s++; |
4212 |
else |
4281 |
else |
4213 |
t = ' '; |
4282 |
quote_char = ' '; |
4214 |
for (v = ValStr; /* copy value portion up to delim */ |
4283 |
start = s; /* no increment, might be "" as value */ |
4215 |
*s != t && *s != '\0'; |
4284 |
while ( *s != quote_char && *s != '\0' ) |
4216 |
*v++ = *s++) |
4285 |
s++; /* locate end of value portion */ |
4217 |
; |
4286 |
save_char = *s; |
4218 |
if ( t != ' ' && *s == t ) |
4287 |
*s = '\0'; |
4219 |
s++; |
4288 |
kw->Val = xstrdup(start); |
4220 |
*v = '\0'; |
|
|
4221 |
kw->Val = ValStr; |
4222 |
kw->vt = String; |
4289 |
kw->vt = String; |
|
|
4290 |
if ( save_char != '\0' ) { /* save_char is now quote_char */ |
4291 |
*s = save_char; |
4292 |
if ( quote_char != ' ' ) /* we had real quote chars */ |
4293 |
s++; |
4294 |
} |
4223 |
return( s ); |
4295 |
return( s ); |
4224 |
} |
4296 |
} |
4225 |
|
4297 |
|
Lines 4281-4287
char *a, *b;
Link Here
|
4281 |
#endif |
4353 |
#endif |
4282 |
{ |
4354 |
{ |
4283 |
char *x, *y; |
4355 |
char *x, *y; |
4284 |
|
4356 |
|
4285 |
for (x = a, y = b; *a; a++, b++) |
4357 |
for (x = a, y = b; *a; a++, b++) |
4286 |
if ( tolower(*a) != tolower(*b) ) |
4358 |
if ( tolower(*a) != tolower(*b) ) |
4287 |
return( _FALSE ); |
4359 |
return( _FALSE ); |
Lines 4469-4478
int Set;
Link Here
|
4469 |
* process for simplicity always horizontally |
4541 |
* process for simplicity always horizontally |
4470 |
*/ |
4542 |
*/ |
4471 |
|
4543 |
|
4472 |
/* |
4544 |
/* |
4473 |
fprintf(ERR_STREAM,"large box: w=%d,x=%d,y=%d\n",(int)yy,(int)xx,0); |
4545 |
fprintf(ERR_STREAM,"large box: w=%d,x=%d,y=%d\n",(int)yy,(int)xx,0); |
4474 |
*/ |
4546 |
*/ |
4475 |
|
4547 |
|
4476 |
hor_offset = HOR_HALF(30); |
4548 |
hor_offset = HOR_HALF(30); |
4477 |
MoveHor(hor_offset); |
4549 |
MoveHor(hor_offset); |
4478 |
vert_offset = VERT_HALF(30); |
4550 |
vert_offset = VERT_HALF(30); |
Lines 4547-4553
int Set;
Link Here
|
4547 |
yy += (long4)pgsiz_dots - (long4)last_ry; |
4619 |
yy += (long4)pgsiz_dots - (long4)last_ry; |
4548 |
|
4620 |
|
4549 |
if ((yy>0) && (xx>0)) |
4621 |
if ((yy>0) && (xx>0)) |
4550 |
EMIT4("\033*p-%ldY\033*c%lda%ldbP", |
4622 |
EMIT4("\033*p-%ldY\033*c%lda%ldbP", |
4551 |
(long)yy - 1, (long)xx, (long)yy); |
4623 |
(long)yy - 1, (long)xx, (long)yy); |
4552 |
#endif |
4624 |
#endif |
4553 |
last_rx = last_ry = UNKNOWN; /* next time full positioning */ |
4625 |
last_rx = last_ry = UNKNOWN; /* next time full positioning */ |
Lines 4708-4714
void OpenFontFile()
Link Here
|
4708 |
if ((fid = pixel_files[least_used].pixel_file_id) != NO_FILE) { |
4780 |
if ((fid = pixel_files[least_used].pixel_file_id) != NO_FILE) { |
4709 |
/* mark file as being closed in the entry */ |
4781 |
/* mark file as being closed in the entry */ |
4710 |
fp = hfontptr; |
4782 |
fp = hfontptr; |
4711 |
while (fp != NULL && fp->font_file_id != fid) |
4783 |
while (fp != NULL && fp->font_file_id != fid) |
4712 |
fp = fp->next; |
4784 |
fp = fp->next; |
4713 |
if (fp == NULL) |
4785 |
if (fp == NULL) |
4714 |
Fatal("Open file %x not found in font entry list.\n", fid); |
4786 |
Fatal("Open file %x not found in font entry list.\n", fid); |
Lines 4763-4771
void OpenFontFile()
Link Here
|
4763 |
while ((fp != NULL) && (fp->font_file_id != f)) |
4835 |
while ((fp != NULL) && (fp->font_file_id != f)) |
4764 |
fp = fp->next; |
4836 |
fp = fp->next; |
4765 |
|
4837 |
|
4766 |
if (fp == NULL) |
4838 |
if (fp == NULL) |
4767 |
Fatal("Open file %x not found in font entry list.\n",f); |
4839 |
Fatal("Open file %x not found in font entry list.\n",f); |
4768 |
else |
4840 |
else |
4769 |
fp->font_file_id = FPNULL; |
4841 |
fp->font_file_id = FPNULL; |
4770 |
} |
4842 |
} |
4771 |
BCLOSE(f); |
4843 |
BCLOSE(f); |
Lines 4819-4831
struct font_entry *fontptr;
Link Here
|
4819 |
the resident fonts. */ |
4891 |
the resident fonts. */ |
4820 |
if (tfm_read_info(fontptr->n, &tfm_info) |
4892 |
if (tfm_read_info(fontptr->n, &tfm_info) |
4821 |
&& tfm_info.family[0] |
4893 |
&& tfm_info.family[0] |
4822 |
&& strcmp((char *)tfm_info.family, "HPAUTOTFM") == 0) { |
4894 |
&& EQ((char *)tfm_info.family, "HPAUTOTFM")) { |
4823 |
unsigned i; |
4895 |
unsigned i; |
4824 |
double factor = fontptr->s / (double)0x100000; |
4896 |
double factor = fontptr->s / (double)0x100000; |
4825 |
|
4897 |
|
4826 |
resident_count++; |
4898 |
resident_count++; |
4827 |
fontptr->resident_p = _TRUE; |
4899 |
fontptr->resident_p = _TRUE; |
4828 |
strcpy(fontptr->symbol_set, (char *)tfm_info.coding_scheme); |
4900 |
strncpy(fontptr->symbol_set, (char *)tfm_info.coding_scheme, 39); |
|
|
4901 |
fontptr->symbol_set[39] = '\0'; |
4829 |
fontptr->resid = tfm_info.typeface_id; |
4902 |
fontptr->resid = tfm_info.typeface_id; |
4830 |
fontptr->spacing = tfm_info.spacing; |
4903 |
fontptr->spacing = tfm_info.spacing; |
4831 |
fontptr->style = tfm_info.style; |
4904 |
fontptr->style = tfm_info.style; |
Lines 4878-4884
struct font_entry *fontptr;
Link Here
|
4878 |
fontptr->resident_p = _FALSE; |
4951 |
fontptr->resident_p = _FALSE; |
4879 |
|
4952 |
|
4880 |
if (tfm_info.family[0] |
4953 |
if (tfm_info.family[0] |
4881 |
&& strcmp((char *)tfm_info.family, "UNSPECIFIED") == 0) { |
4954 |
&& EQ((char *)tfm_info.family, "UNSPECIFIED")) { |
4882 |
Warning("font family for %s is UNSPECIFIED; need to run dvicopy?", |
4955 |
Warning("font family for %s is UNSPECIFIED; need to run dvicopy?", |
4883 |
fontptr->n); |
4956 |
fontptr->n); |
4884 |
fontptr->font_file_id = NO_FILE; |
4957 |
fontptr->font_file_id = NO_FILE; |
Lines 5005-5011
long4 k;
Link Here
|
5005 |
GetBytes(dvifp, tfontptr->n, tfontptr->a + tfontptr->l); |
5078 |
GetBytes(dvifp, tfontptr->n, tfontptr->a + tfontptr->l); |
5006 |
tfontptr->n[tfontptr->a+tfontptr->l] = '\0'; |
5079 |
tfontptr->n[tfontptr->a+tfontptr->l] = '\0'; |
5007 |
|
5080 |
|
5008 |
tfontptr->font_mag = |
5081 |
tfontptr->font_mag = |
5009 |
(long4)((ActualFactor((long4)(1000.0*tfontptr->s/(double)tfontptr->d+0.5)) |
5082 |
(long4)((ActualFactor((long4)(1000.0*tfontptr->s/(double)tfontptr->d+0.5)) |
5010 |
* ActualFactor(mag) |
5083 |
* ActualFactor(mag) |
5011 |
#ifdef USEPXL |
5084 |
#ifdef USEPXL |
Lines 5031-5040
printf("[%ld]=%lf * %lf * %lf + 0.5 = %l
Link Here
|
5031 |
if (tfontptr->resident_p) |
5104 |
if (tfontptr->resident_p) |
5032 |
return; |
5105 |
return; |
5033 |
|
5106 |
|
5034 |
if (!(resident_font_located)) { |
5107 |
if (!(resident_font_located)) |
5035 |
#endif |
5108 |
#endif |
5036 |
|
5109 |
|
5037 |
#ifdef KPATHSEA |
|
|
5038 |
{ |
5110 |
{ |
5039 |
kpse_glyph_file_type font_ret; |
5111 |
kpse_glyph_file_type font_ret; |
5040 |
char *name; |
5112 |
char *name; |
Lines 5042-5055
printf("[%ld]=%lf * %lf * %lf + 0.5 = %l
Link Here
|
5042 |
= kpse_magstep_fix ((unsigned) (tfontptr->font_mag / 5.0 + .5), |
5114 |
= kpse_magstep_fix ((unsigned) (tfontptr->font_mag / 5.0 + .5), |
5043 |
RESOLUTION, NULL); |
5115 |
RESOLUTION, NULL); |
5044 |
tfontptr->font_mag = dpi * 5; /* save correct dpi */ |
5116 |
tfontptr->font_mag = dpi * 5; /* save correct dpi */ |
5045 |
|
5117 |
|
5046 |
name = kpse_find_pk (tfontptr->n, dpi, &font_ret); |
5118 |
name = kpse_find_pk (tfontptr->n, dpi, &font_ret); |
5047 |
if (name) |
5119 |
if (name) |
5048 |
{ |
5120 |
{ |
5049 |
font_found = _TRUE; |
5121 |
font_found = _TRUE; |
5050 |
strcpy (tfontptr->name, name); |
5122 |
tfontptr->name = name; |
5051 |
free (name); |
5123 |
allocated_storage += strlen(name)+1; |
5052 |
|
5124 |
|
5053 |
if (!FILESTRCASEEQ (tfontptr->n, font_ret.name)) { |
5125 |
if (!FILESTRCASEEQ (tfontptr->n, font_ret.name)) { |
5054 |
fprintf (stderr, |
5126 |
fprintf (stderr, |
5055 |
"dvilj: Font %s not found, using %s at %d instead.\n", |
5127 |
"dvilj: Font %s not found, using %s at %d instead.\n", |
Lines 5071-5099
printf("[%ld]=%lf * %lf * %lf + 0.5 = %l
Link Here
|
5071 |
tfontptr->n, dpi); |
5143 |
tfontptr->n, dpi); |
5072 |
} |
5144 |
} |
5073 |
} |
5145 |
} |
5074 |
#else /* not KPATHSEA */ |
|
|
5075 |
if (!(findfile(PXLpath, |
5076 |
tfontptr->n, |
5077 |
tfontptr->font_mag, |
5078 |
tfontptr->name, |
5079 |
_FALSE, |
5080 |
0))) { |
5081 |
Warning(tfontptr->name); /* contains error messsage */ |
5082 |
tfontptr->font_file_id = NO_FILE; |
5083 |
#ifdef __riscos |
5084 |
MakeMetafontFile(PXLpath, tfontptr->n, tfontptr->font_mag); |
5085 |
#endif |
5086 |
} |
5087 |
else { |
5088 |
font_found = _TRUE; |
5089 |
if (G_verbose) |
5090 |
fprintf(ERR_STREAM,"%d: using font <%s>\n", plusid, tfontptr->name); |
5091 |
} |
5092 |
#endif /* not KPATHSEA */ |
5093 |
|
5094 |
#ifdef LJ_RESIDENT_FONTS |
5095 |
} |
5096 |
#endif |
5097 |
|
5146 |
|
5098 |
tfontptr->plusid = plusid; |
5147 |
tfontptr->plusid = plusid; |
5099 |
plusid++; |
5148 |
plusid++; |
Lines 5107-5113
printf("[%ld]=%lf * %lf * %lf + 0.5 = %l
Link Here
|
5107 |
HANDLE_MAX_FONTS); |
5156 |
HANDLE_MAX_FONTS); |
5108 |
#endif |
5157 |
#endif |
5109 |
if (tfontptr != pfontptr) { |
5158 |
if (tfontptr != pfontptr) { |
5110 |
if (font_found) |
5159 |
if (font_found) |
5111 |
OpenFontFile(); |
5160 |
OpenFontFile(); |
5112 |
else |
5161 |
else |
5113 |
pxlfp = NO_FILE; |
5162 |
pxlfp = NO_FILE; |
Lines 5146-5152
printf("[%ld]=%lf * %lf * %lf + 0.5 = %l
Link Here
|
5146 |
if (t == PK_PRE) { |
5195 |
if (t == PK_PRE) { |
5147 |
unsigned char temp_byte; |
5196 |
unsigned char temp_byte; |
5148 |
temp_byte = (unsigned char) NoSignExtend(pxlfp, 1); |
5197 |
temp_byte = (unsigned char) NoSignExtend(pxlfp, 1); |
5149 |
if (temp_byte != PK_ID) |
5198 |
if (temp_byte != PK_ID) |
5150 |
Fatal( "Wrong Version of pk file! (%d should be 89)\n", |
5199 |
Fatal( "Wrong Version of pk file! (%d should be 89)\n", |
5151 |
(int)temp_byte); |
5200 |
(int)temp_byte); |
5152 |
else |
5201 |
else |
Lines 5163-5169
printf("[%ld]=%lf * %lf * %lf + 0.5 = %l
Link Here
|
5163 |
|
5212 |
|
5164 |
tfontptr->magnification = NoSignExtend(pxlfp, 4); |
5213 |
tfontptr->magnification = NoSignExtend(pxlfp, 4); |
5165 |
tfontptr->designsize = NoSignExtend(pxlfp, 4); |
5214 |
tfontptr->designsize = NoSignExtend(pxlfp, 4); |
5166 |
|
5215 |
|
5167 |
if (tfontptr->id == id1001) |
5216 |
if (tfontptr->id == id1001) |
5168 |
FSEEK(pxlfp, (long)(NoSignExtend(pxlfp, 4) * 4), SEEK_SET); |
5217 |
FSEEK(pxlfp, (long)(NoSignExtend(pxlfp, 4) * 4), SEEK_SET); |
5169 |
else |
5218 |
else |
Lines 5232-5238
printf("[%ld]=%lf * %lf * %lf + 0.5 = %l
Link Here
|
5232 |
hppp = NoSignExtend(pxlfp, 4); |
5281 |
hppp = NoSignExtend(pxlfp, 4); |
5233 |
vppp = NoSignExtend(pxlfp, 4); |
5282 |
vppp = NoSignExtend(pxlfp, 4); |
5234 |
if (hppp != vppp) |
5283 |
if (hppp != vppp) |
5235 |
Warning("aspect ratio is %ld:%ld (should be 1:1)!", |
5284 |
Warning("aspect ratio is %ld:%ld (should be 1:1)!", |
5236 |
(long)hppp, (long)vppp); |
5285 |
(long)hppp, (long)vppp); |
5237 |
tfontptr->magnification = (long4)(hppp * 72.27 * 5 / 65536l + 0.5); |
5286 |
tfontptr->magnification = (long4)(hppp * 72.27 * 5 / 65536l + 0.5); |
5238 |
|
5287 |
|
Lines 5515-5521
void SkipFontDef()
Link Here
|
5515 |
{ |
5564 |
{ |
5516 |
int a, l; |
5565 |
int a, l; |
5517 |
char n[STRSIZE]; |
5566 |
char n[STRSIZE]; |
5518 |
|
5567 |
|
5519 |
(void) NoSignExtend(dvifp, 4); |
5568 |
(void) NoSignExtend(dvifp, 4); |
5520 |
(void) NoSignExtend(dvifp, 4); |
5569 |
(void) NoSignExtend(dvifp, 4); |
5521 |
(void) NoSignExtend(dvifp, 4); |
5570 |
(void) NoSignExtend(dvifp, 4); |
Lines 5524-5530
void SkipFontDef()
Link Here
|
5524 |
GetBytes(dvifp, n, a + l); |
5573 |
GetBytes(dvifp, n, a + l); |
5525 |
} |
5574 |
} |
5526 |
|
5575 |
|
5527 |
|
5576 |
|
5528 |
|
5577 |
|
5529 |
/*------------------------ end dvifont.c -------------------------------*/ |
5578 |
/*------------------------ end dvifont.c -------------------------------*/ |
5530 |
|
5579 |
|
Lines 5598-5604
Warning(va_alist)
Link Here
|
5598 |
#endif |
5647 |
#endif |
5599 |
if ( G_nowarn || G_quiet ) |
5648 |
if ( G_nowarn || G_quiet ) |
5600 |
return; |
5649 |
return; |
5601 |
|
5650 |
|
5602 |
fprintf(ERR_STREAM, "%s: warning: ", G_progname); |
5651 |
fprintf(ERR_STREAM, "%s: warning: ", G_progname); |
5603 |
vfprintf(ERR_STREAM, fmt, args); |
5652 |
vfprintf(ERR_STREAM, fmt, args); |
5604 |
fprintf(ERR_STREAM, "\n"); |
5653 |
fprintf(ERR_STREAM, "\n"); |