home *** CD-ROM | disk | FTP | other *** search
Text File | 1989-07-16 | 57.6 KB | 2,165 lines |
- Path: uunet!island!argv
- From: argv@island.uu.net (Dan Heller)
- Newsgroups: comp.sources.x
- Subject: v04i044: xdvi, Patch4
- Message-ID: <875@island.uu.net>
- Date: 17 Jul 89 06:27:26 GMT
- Organization: Island Graphics, Marin County, California
- Lines: 2154
- Approved: island!argv@sun.com
-
- Submitted-by: vojta@bosco.Berkeley.EDU
- Posting-number: Volume 4, Issue 44
- Archive-name: xdvi/patch4
-
- Here's patch 4 to xdvi. This patch allows the magnifying glass to move.
- It's jerky, but better than nothing. Also, it changes the default shrink
- factor to 3. I find it more useful than 4.
-
- --Paul Vojta, vojta@math.berkeley.edu
-
- ---- cut here ----
- diff -cr old/Makefile new/Makefile
- *** old/Makefile Thu Jul 13 12:52:07 1989
- --- new/Makefile Thu Jul 13 12:58:03 1989
- ***************
- *** 22,28 ****
- BINDIR=/usr/sipb/$$(MACHTYPE)bin
- INCLUDES=-I$(INCDIR)
- CFLAGS=-O $(INCLUDES) $(DEFINES)
- ! LIBS=-L$(LIBDIR) -lXaw -lXt $(XMULIB) -lX11 -lm
- SRCS=xdvi.c dvi_init.c dvi_draw.c $(FONTFORMATS_C) pxl_open.c tpic.c \
- xdvi.h dvi.h xdvi.icon
- OBJS=xdvi.o dvi_init.o dvi_draw.o $(FONTFORMATS_O) pxl_open.o tpic.o
- --- 22,28 ----
- BINDIR=/usr/sipb/$$(MACHTYPE)bin
- INCLUDES=-I$(INCDIR)
- CFLAGS=-O $(INCLUDES) $(DEFINES)
- ! LIBS=-L$(LIBDIR) -lXaw $(XMULIB) -lXt -lX11 -lm
- SRCS=xdvi.c dvi_init.c dvi_draw.c $(FONTFORMATS_C) pxl_open.c tpic.c \
- xdvi.h dvi.h xdvi.icon
- OBJS=xdvi.o dvi_init.o dvi_draw.o $(FONTFORMATS_O) pxl_open.o tpic.o
- diff -cr old/README new/README
- *** old/README Thu Jul 13 12:52:13 1989
- --- new/README Sat Jul 8 15:43:09 1989
- ***************
- *** 61,68 ****
- time xdvi -d 8 file.dvi
- BMLONG (X11 only; xdvi.c dvi_draw.c gf.c pk.c pxl.c) Store
- bitmaps in long integers instead of bytes.
- - MAXCHARS (dvi_init.c dvi_draw.c gf.c pk.c pxl.c) Set to 256 for
- - 256-character fonts. Default is 128.
- ALTFONT Default font to use if the font named in the dvi file
- cannot be found. Can be set to NULL. By default, it
- is "cmr10".
- --- 61,66 ----
- ***************
- *** 125,130 ****
- --- 123,131 ----
- generating table.h.
- -- Patchlevel 3: --
- 13. Added -altfont command line option and SYSV compilation option.
- + -- Patchlevel 4: --
- + 14. Removed MAXCHARS compilation option. It's automatic now. Made X10
- + scrolling smoother. Implemented the moving magnifying glass.
-
- Paul Vojta, vojta@math.berkeley.edu
- ================================================================================
- diff -cr old/dvi_draw.c new/dvi_draw.c
- *** old/dvi_draw.c Thu Jul 13 12:52:19 1989
- --- new/dvi_draw.c Sat Jul 8 15:20:40 1989
- ***************
- *** 19,25 ****
- * MSBITFIRST store bitmaps internally in with significant bit first
- * BMSHORT store bitmaps in shorts instead of bytes
- * BMLONG store bitmaps in longs instead of bytes
- - * MAXCHARS set to 256 for 256 character fonts (default = 128)
- */
-
- #include <stdio.h>
- --- 19,24 ----
- ***************
- *** 294,302 ****
- {
- register struct glyph *g;
-
- ! g = ¤t_font->glyph[ch];
- ! if (g->bitmap.bits == NULL) {
- ! if (g->addr == NULL)
- oops("Character %d not defined in font %s\n", ch,
- current_font->fontname);
- open_pxl_file(current_font);
- --- 293,301 ----
- {
- register struct glyph *g;
-
- ! if (ch > maxchar ||
- ! (g = ¤t_font->glyph[ch])->bitmap.bits == NULL) {
- ! if (ch > maxchar || g->addr == 0)
- oops("Character %d not defined in font %s\n", ch,
- current_font->fontname);
- open_pxl_file(current_font);
- ***************
- *** 378,383 ****
- --- 377,383 ----
- *prev = fontp->next;
- fontp->next = current_font;
- current_font = fontp;
- + maxchar = current_font->maxchar;
- }
-
- static
- ***************
- *** 426,435 ****
- case SET1:
- case PUT1:
- ch1 = one(dvi_file);
- - #if MAXCHARS < 256
- - if (ch1 >= MAXCHARS)
- - oops("Character code too large: %d", ch1);
- - #endif MAXCHARS
- set_char(ch1);
- if (ch == SET1)
- DVI_H += current_font->glyph[ch1].dvi_adv;
- --- 426,431 ----
- diff -cr old/dvi_init.c new/dvi_init.c
- *** old/dvi_init.c Thu Jul 13 12:52:22 1989
- --- new/dvi_init.c Mon Jul 10 13:27:43 1989
- ***************
- *** 19,25 ****
- * MSBITFIRST store bitmaps internally in with significant bit first
- * BMSHORT store bitmaps in shorts instead of bytes
- * BMLONG store bitmaps in longs instead of bytes
- - * MAXCHARS set to 256 for 256 character fonts (default = 128)
- */
-
- #include <stdio.h>
- --- 19,24 ----
- ***************
- *** 29,34 ****
- --- 28,34 ----
- #include <sys/stat.h>
-
- #define dvi_oops(str) longjmp(dvi_env, (int) str);
- + #define XtOffset(type, field) ((unsigned int)&(((type)NULL)->field))
- extern char *alt_font;
-
- static struct stat fstatbuf; /* mechanism to see if file was */
- ***************
- *** 35,40 ****
- --- 35,41 ----
- time_t dvi_time; /* modified since last usage */
-
- struct font *current_font = NULL; /* ptr into linked list of fonts */
- + ubyte maxchar;
-
- static Boolean font_not_found;
- static struct font **old_fonts; /* used by read_postamble */
- ***************
- *** 41,46 ****
- --- 42,49 ----
-
- int n_fonts_left = 32767; /* for LRU management of fonts */
-
- + char *realloc();
- +
- /*
- * DVI preamble and postamble information.
- */
- ***************
- *** 66,72 ****
- #ifndef SYSV
- char *sprintf();
- #endif
- ! char *malloc();
- FILE *pxl_open();
-
- static Boolean
- --- 69,75 ----
- #ifndef SYSV
- char *sprintf();
- #endif
- ! char *malloc(), *strcpy();
- FILE *pxl_open();
-
- static Boolean
- ***************
- *** 159,164 ****
- --- 162,168 ----
- for (;;) {
- fontp1 = *fontpp;
- if (fontp1 == NULL) {
- + maxchar = 255;
- if (!define_new_font(fontp, fontp->fontname)) {
- if (alt_font == NULL || !define_new_font(fontp, alt_font)) {
- font_not_found = True;
- ***************
- *** 171,176 ****
- --- 175,186 ----
- fontp->fontname = malloc((unsigned) strlen(alt_font)+1);
- (void) strcpy(fontp->fontname, alt_font);
- }
- + while (maxchar > 0 && fontp->glyph[maxchar].addr == 0)
- + --maxchar;
- + if (maxchar < 255)
- + fontp = (struct font *) realloc((char *) fontp,
- + XtOffset(struct font *, glyph[(int) maxchar + 1]));
- + fontp->maxchar = maxchar;
- break;
- }
- if (strcmp(fontp->fontname, fontp1->fontname) == 0
- ***************
- *** 294,300 ****
- }
- free(fontp->fontname);
- free(fontp->filename);
- ! for (g = &fontp->glyph[0]; g < &fontp->glyph[MAXCHARS]; ++g) {
- if (g->bitmap.bits) free(g->bitmap.bits);
- if (g->bitmap2.bits) free(g->bitmap2.bits);
- }
- --- 304,311 ----
- }
- free(fontp->fontname);
- free(fontp->filename);
- ! for (g = fontp->glyph; g <= fontp->glyph + fontp->maxchar; ++g)
- ! {
- if (g->bitmap.bits) free(g->bitmap.bits);
- if (g->bitmap2.bits) free(g->bitmap2.bits);
- }
- ***************
- *** 394,400 ****
- register struct glyph *g;
-
- for (f = current_font; f != NULL; f = f->next)
- ! for (g = &f->glyph[0]; g < &f->glyph[MAXCHARS]; ++g)
- if (g->bitmap2.bits) {
- free(g->bitmap2.bits);
- g->bitmap2.bits = NULL;
- --- 405,411 ----
- register struct glyph *g;
-
- for (f = current_font; f != NULL; f = f->next)
- ! for (g = f->glyph; g <= f->glyph + f->maxchar; ++g)
- if (g->bitmap2.bits) {
- free(g->bitmap2.bits);
- g->bitmap2.bits = NULL;
- diff -cr old/gf.c new/gf.c
- *** old/gf.c Thu Jul 13 12:52:25 1989
- --- new/gf.c Sat Jul 8 15:21:34 1989
- ***************
- *** 76,82 ****
- */
- if (debug & DBG_PK)
- Printf("Reading header for GF pixel file %s\n", fontp->filename);
- - GF_file = fontp->file;
- expect(PRE);
- expect(GF_ID_BYTE);
- /*
- --- 76,81 ----
- ***************
- *** 96,116 ****
- * Read postamble.
- */
- expect(POST);
- ! (void) four(GF_file); /* pointer to last eoc + 1 */
- ! (void) four(fontp->file); /* skip design size */
- ! (void) four(fontp->file); /* skip checksum */
- ! hppp = sfour(fontp->file);
- ! vppp = sfour(fontp->file);
- if (debug && hppp != vppp)
- oops("Warning: aspect ratio not 1:1 for font %s", fontp->fontname);
- ! (void) four(fontp->file); /* skip min_m */
- ! (void) four(fontp->file); /* skip max_m */
- ! (void) four(fontp->file); /* skip min_n */
- ! (void) four(fontp->file); /* skip max_n */
- /*
- * Prepare glyph array.
- */
- ! for (g = fontp->glyph; g < &fontp->glyph[MAXCHARS]; ++g) {
- g->addr = 0;
- g->bitmap.bits = NULL;
- g->bitmap2.bits = NULL;
- --- 95,115 ----
- * Read postamble.
- */
- expect(POST);
- ! (void) four(GF_file); /* pointer to last eoc + 1 */
- ! (void) four(GF_file); /* skip design size */
- ! (void) four(GF_file); /* skip checksum */
- ! hppp = sfour(GF_file);
- ! vppp = sfour(GF_file);
- if (debug && hppp != vppp)
- oops("Warning: aspect ratio not 1:1 for font %s", fontp->fontname);
- ! (void) four(GF_file); /* skip min_m */
- ! (void) four(GF_file); /* skip max_m */
- ! (void) four(GF_file); /* skip min_n */
- ! (void) four(GF_file); /* skip max_n */
- /*
- * Prepare glyph array.
- */
- ! for (g = fontp->glyph; g < fontp->glyph + 256; ++g) {
- g->addr = 0;
- g->bitmap.bits = NULL;
- g->bitmap2.bits = NULL;
- ***************
- *** 123,133 ****
- int addr;
-
- ch = one(GF_file); /* character code */
- - #if MAXCHARS < 256
- - if (ch >= MAXCHARS)
- - oops("Character code %d outside range, file %s", ch,
- - fontp->fontname);
- - #endif MAXCHARS
- g = &fontp->glyph[ch];
- switch (cmnd) {
- case CHAR_LOC:
- --- 122,127 ----
- diff -cr old/patchlevel.h new/patchlevel.h
- *** old/patchlevel.h Thu Jul 13 12:52:26 1989
- --- new/patchlevel.h Sat Jul 8 15:43:22 1989
- ***************
- *** 1 ****
- ! #define PATCHLEVEL 3
- --- 1 ----
- ! #define PATCHLEVEL 4
- diff -cr old/pk.c new/pk.c
- *** old/pk.c Thu Jul 13 12:52:29 1989
- --- new/pk.c Sat Jul 8 15:22:10 1989
- ***************
- *** 29,40 ****
-
- static int
- PK_get_nyb( fp )
- ! register struct font *fp;
- {
- unsigned temp;
- if( PK_bitpos < 0 )
- {
- ! PK_input_byte = one(fp->file);
- PK_bitpos = 4;
- }
- temp = PK_input_byte >> PK_bitpos;
- --- 29,40 ----
-
- static int
- PK_get_nyb( fp )
- ! register FILE *fp;
- {
- unsigned temp;
- if( PK_bitpos < 0 )
- {
- ! PK_input_byte = one(fp);
- PK_bitpos = 4;
- }
- temp = PK_input_byte >> PK_bitpos;
- ***************
- *** 45,51 ****
-
- static int
- PK_packed_num( fp )
- ! register struct font *fp;
- {
- int i,j;
- if( ( i = PK_get_nyb( fp ) ) == 0 )
- --- 45,51 ----
-
- static int
- PK_packed_num( fp )
- ! register FILE *fp;
- {
- int i,j;
- if( ( i = PK_get_nyb( fp ) ) == 0 )
- ***************
- *** 76,88 ****
-
-
- static void
- ! PK_skip_specials( fp )
- ! register struct font *fp;
- {
- int i,j;
- do
- {
- ! PK_flag_byte = one(fp->file);
- if( PK_flag_byte >= PK_CMD_START )
- {
- switch( PK_flag_byte )
- --- 76,89 ----
-
-
- static void
- ! PK_skip_specials(fontp)
- ! register struct font *fontp;
- {
- int i,j;
- + register FILE *fp = fontp->file;
- do
- {
- ! PK_flag_byte = one(fp);
- if( PK_flag_byte >= PK_CMD_START )
- {
- switch( PK_flag_byte )
- ***************
- *** 94,110 ****
- {
- i = 0;
- for (j = PK_CMD_START; j <= PK_flag_byte; j++)
- ! i = (i*256) + one(fp->file);
- ! while (i--) (void) one(fp->file);
- break;
- }
- case PK_Y :
- ! (void) four(fp->file);
- case PK_POST :
- case PK_NOOP :
- break;
- default :
- ! oops("Unexpected %d in PK file %s\n", PK_flag_byte, fp->fontname);
- break;
- }
- }
- --- 95,112 ----
- {
- i = 0;
- for (j = PK_CMD_START; j <= PK_flag_byte; j++)
- ! i = (i*256) + one(fp);
- ! while (i--) (void) one(fp);
- break;
- }
- case PK_Y :
- ! (void) four(fp);
- case PK_POST :
- case PK_NOOP :
- break;
- default :
- ! oops("Unexpected %d in PK file %s\n", PK_flag_byte,
- ! fontp->fontname);
- break;
- }
- }
- ***************
- *** 147,153 ****
- /*if (fontp->f_scale == 0) fontp->f_scale = 1000;*/
- {
- register struct glyph *g;
- ! for (g = fontp->glyph; g < &fontp->glyph[MAXCHARS]; ++g) {
- g->addr = 0;
- g->bitmap.bits = NULL;
- g->bitmap2.bits = NULL;
- --- 149,155 ----
- /*if (fontp->f_scale == 0) fontp->f_scale = 1000;*/
- {
- register struct glyph *g;
- ! for (g = fontp->glyph; g < fontp->glyph + 256; ++g) {
- g->addr = 0;
- g->bitmap.bits = NULL;
- g->bitmap2.bits = NULL;
- ***************
- *** 173,183 ****
- bytes_left = (flag_low_bits << 8) + one(fontp->file);
- cc = one(fontp->file);
- }
- - #if MAXCHARS < 256
- - if (cc >= MAXCHARS)
- - oops("Character code %d outside range, file %s\n", cc,
- - fontp->fontname);
- - #endif MAXCHARS
- fontp->glyph[cc].addr = ftell(fontp->file);
- fontp->glyph[cc].x2 = PK_flag_byte;
- Fseek(fontp->file, (long) bytes_left, 1);
- --- 175,180 ----
- ***************
- *** 185,192 ****
- }
-
- static void
- ! read_char(fp, ch)
- ! register struct font *fp;
- ubyte ch;
- {
- int i, j;
- --- 182,189 ----
- }
-
- static void
- ! read_char(fontp, ch)
- ! register struct font *fontp;
- ubyte ch;
- {
- int i, j;
- ***************
- *** 195,206 ****
- Boolean paint_switch;
- BMUNIT *cp;
- register struct glyph *g;
- long fpwidth;
- BMUNIT word;
- int word_weight, bytes_wide;
- int rows_left, h_bit, count;
-
- ! g = &fp->glyph[ch];
- PK_flag_byte = g->x2;
- PK_dyn_f = PK_flag_byte >> 4;
- paint_switch = ((PK_flag_byte & 8) != 0);
- --- 192,204 ----
- Boolean paint_switch;
- BMUNIT *cp;
- register struct glyph *g;
- + register FILE *fp = fontp->file;
- long fpwidth;
- BMUNIT word;
- int word_weight, bytes_wide;
- int rows_left, h_bit, count;
-
- ! g = &fontp->glyph[ch];
- PK_flag_byte = g->x2;
- PK_dyn_f = PK_flag_byte >> 4;
- paint_switch = ((PK_flag_byte & 8) != 0);
- ***************
- *** 214,238 ****
-
- /* now read rest of character preamble */
-
- ! if (n != 4) fpwidth = snum(fp->file, 3);
- else {
- ! fpwidth = sfour(fp->file);
- ! (void) four(fp->file); /* horizontal escapement */
- }
- ! (void) num(fp->file, n); /* vertical escapement */
- {
- unsigned long w, h;
- ! w = num(fp->file, n);
- ! h = num(fp->file, n);
- if (w > 0x7fff || h > 0x7fff)
- ! oops("Too large character (%d) in file %s\n", ch, fp->fontname);
- g->bitmap.w = w;
- g->bitmap.h = h;
- }
- ! g->x = snum(fp->file, n);
- ! g->y = snum(fp->file, n);
-
- ! g->dvi_adv = ((double) fp->scale * fpwidth) / (1 << 20);
-
- if (debug & DBG_PK) {
- if (g->bitmap.w != 0)
- --- 212,237 ----
-
- /* now read rest of character preamble */
-
- ! if (n != 4) fpwidth = snum(fp, 3);
- else {
- ! fpwidth = sfour(fp);
- ! (void) four(fp); /* horizontal escapement */
- }
- ! (void) num(fp, n); /* vertical escapement */
- {
- unsigned long w, h;
- !
- ! w = num(fp, n);
- ! h = num(fp, n);
- if (w > 0x7fff || h > 0x7fff)
- ! oops("Too large character (%d) in file %s\n", ch, fontp->fontname);
- g->bitmap.w = w;
- g->bitmap.h = h;
- }
- ! g->x = snum(fp, n);
- ! g->y = snum(fp, n);
-
- ! g->dvi_adv = ((double) fontp->scale * fpwidth) / (1 << 20);
-
- if (debug & DBG_PK) {
- if (g->bitmap.w != 0)
- ***************
- *** 242,248 ****
- }
-
- if (g->bitmap.w == 0) return;
- ! alloc_bitmap(&g->bitmap, fp->fontname, ch);
- cp = (BMUNIT *) g->bitmap.bits;
- /*
- * read character data into *cp
- --- 241,247 ----
- }
-
- if (g->bitmap.w == 0) return;
- ! alloc_bitmap(&g->bitmap, fontp->fontname, ch);
- cp = (BMUNIT *) g->bitmap.bits;
- /*
- * read character data into *cp
- ***************
- *** 264,270 ****
- {
- if (--PK_bitpos < 0)
- {
- ! word = one(fp->file);
- PK_bitpos = 7;
- }
- #ifndef MSBITFIRST
- --- 263,269 ----
- {
- if (--PK_bitpos < 0)
- {
- ! word = one(fp);
- PK_bitpos = 7;
- }
- #ifndef MSBITFIRST
- ***************
- *** 357,364 ****
- }
- if (cp != ((BMUNIT *) (g->bitmap.bits + bytes_wide * g->bitmap.h)))
- oops("Wrong number of bits stored: char. %d, font %s\n", ch,
- ! fp->fontname);
- if (rows_left != 0 || h_bit != g->bitmap.w)
- ! oops("Bad pk file (%s), too many bits\n", fp->fontname);
- }
- }
- --- 356,363 ----
- }
- if (cp != ((BMUNIT *) (g->bitmap.bits + bytes_wide * g->bitmap.h)))
- oops("Wrong number of bits stored: char. %d, font %s\n", ch,
- ! fontp->fontname);
- if (rows_left != 0 || h_bit != g->bitmap.w)
- ! oops("Bad pk file (%s), too many bits\n", fontp->fontname);
- }
- }
- diff -cr old/pxl.c new/pxl.c
- *** old/pxl.c Thu Jul 13 12:52:31 1989
- --- new/pxl.c Sat Jul 8 15:23:15 1989
- ***************
- *** 56,85 ****
- register struct font *fontp;
- {
- register struct glyph *g;
- long font_dir_ptr;
-
- if (debug & DBG_PK)
- Printf("Reading header for PXL file %s\n", fontp->filename);
- fontp->read_char = read_char;
- ! if (four(fontp->file) != 1001)
- oops("File %s has wrong PXL magic number.\n", fontp->filename);
- /* seek to trailer info */
- ! Fseek(fontp->file, (long) -5 * 4, 2);
- ! (void) four(fontp->file); /* checksum */
- ! (void) four(fontp->file); /* magnify */
- ! (void) four(fontp->file); /* design size */
- ! font_dir_ptr = sfour(fontp->file) * 4;
- ! (void) four(fontp->file); /* pxl id word */
- /* seek to font directory */
- ! Fseek(fontp->file, font_dir_ptr, 0);
- ! for (g = fontp->glyph; g < &fontp->glyph[128]; ++g) {
- g->bitmap.bits = NULL;
- g->bitmap2.bits = NULL;
- ! g->bitmap.w = two(fontp->file);
- ! g->bitmap.h = two(fontp->file);
- ! g->x = stwo(fontp->file);
- ! g->y = stwo(fontp->file);
- ! g->addr = four(fontp->file) * 4;
- /*
- ** The TFM-width word is kind of funny in the units
- ** it is expressed in. It works this way:
- --- 56,86 ----
- register struct font *fontp;
- {
- register struct glyph *g;
- + register FILE *fp;
- long font_dir_ptr;
-
- if (debug & DBG_PK)
- Printf("Reading header for PXL file %s\n", fontp->filename);
- fontp->read_char = read_char;
- ! if (four(fp = fontp->file) != 1001)
- oops("File %s has wrong PXL magic number.\n", fontp->filename);
- /* seek to trailer info */
- ! Fseek(fp, (long) -5 * 4, 2);
- ! (void) four(fp); /* checksum */
- ! (void) four(fp); /* magnify */
- ! (void) four(fp); /* design size */
- ! font_dir_ptr = sfour(fp) * 4;
- ! (void) four(fp); /* pxl id word */
- /* seek to font directory */
- ! Fseek(fp, font_dir_ptr, 0);
- ! for (g = fontp->glyph; g < fontp->glyph + 128; ++g) {
- g->bitmap.bits = NULL;
- g->bitmap2.bits = NULL;
- ! g->bitmap.w = two(fp);
- ! g->bitmap.h = two(fp);
- ! g->x = stwo(fp);
- ! g->y = stwo(fp);
- ! g->addr = four(fp) * 4;
- /*
- ** The TFM-width word is kind of funny in the units
- ** it is expressed in. It works this way:
- ***************
- *** 110,127 ****
- */
-
- g->dvi_adv =
- ! ((double) fontp->scale * four(fontp->file)) / (1 << 20);
- if (debug & DBG_PK)
- Printf("size=%dx%d, dvi_adv=%d\n", g->bitmap.w, g->bitmap.h,
- g->dvi_adv);
- }
- ! #if MAXCHARS > 128
- ! for ( ; g < &fontp->glyph[MAXCHARS]; ++g) {
- ! g->bitmap.bits = NULL;
- ! g->bitmap2.bits = NULL;
- ! g->addr = 0;
- ! }
- ! #endif MAXCHARS
- }
-
- static void
- --- 111,122 ----
- */
-
- g->dvi_adv =
- ! ((double) fontp->scale * four(fp)) / (1 << 20);
- if (debug & DBG_PK)
- Printf("size=%dx%d, dvi_adv=%d\n", g->bitmap.w, g->bitmap.h,
- g->dvi_adv);
- }
- ! maxchar = 127;
- }
-
- static void
- ***************
- *** 131,136 ****
- --- 126,132 ----
- {
- register struct bitmap *bitmap;
- register BMUNIT *ptr;
- + register FILE *fp = fontp->file;
- register int i, j;
- #ifndef BMLONG
- register int padding_length;
- ***************
- *** 146,174 ****
- for (i = bitmap->h; i > 0; --i) {
- for (j = bitmap->bytes_wide; j > 0; j -= BYTES_PER_BMUNIT) {
- #ifndef MSBITFIRST
- ! *ptr = _reverse_byte[one(fontp->file)];
- #if BYTES_PER_BMUNIT > 1
- ! *ptr |= _reverse_byte[one(fontp->file)] << 8;
- #endif
- #ifdef BMLONG
- ! *ptr |= _reverse_byte[one(fontp->file)] << 16;
- ! *ptr |= _reverse_byte[one(fontp->file)] << 24;
- #endif BMLONG
- #else MSBITFIRST
- *ptr = 0;
- #ifdef BMLONG
- ! *ptr |= one(fontp->file) << 24;
- ! *ptr |= one(fontp->file) << 16;
- #endif BMLONG
- #if BYTES_PER_BMUNIT > 1
- ! *ptr |= one(fontp->file) << 8;
- #endif
- ! *ptr |= one(fontp->file);
- #endif MSBITFIRST
- ++ptr;
- }
- #ifndef BMLONG
- ! for (j = padding_length; j > 0; --j) (void) one(fontp->file);
- #endif BMLONG
- }
- }
- --- 142,170 ----
- for (i = bitmap->h; i > 0; --i) {
- for (j = bitmap->bytes_wide; j > 0; j -= BYTES_PER_BMUNIT) {
- #ifndef MSBITFIRST
- ! *ptr = _reverse_byte[one(fp)];
- #if BYTES_PER_BMUNIT > 1
- ! *ptr |= _reverse_byte[one(fp)] << 8;
- #endif
- #ifdef BMLONG
- ! *ptr |= _reverse_byte[one(fp)] << 16;
- ! *ptr |= _reverse_byte[one(fp)] << 24;
- #endif BMLONG
- #else MSBITFIRST
- *ptr = 0;
- #ifdef BMLONG
- ! *ptr |= one(fp) << 24;
- ! *ptr |= one(fp) << 16;
- #endif BMLONG
- #if BYTES_PER_BMUNIT > 1
- ! *ptr |= one(fp) << 8;
- #endif
- ! *ptr |= one(fp);
- #endif MSBITFIRST
- ++ptr;
- }
- #ifndef BMLONG
- ! for (j = padding_length; j > 0; --j) (void) one(fp);
- #endif BMLONG
- }
- }
- diff -cr old/xdvi.c new/xdvi.c
- *** old/xdvi.c Thu Jul 13 12:52:43 1989
- --- new/xdvi.c Thu Jul 13 13:07:32 1989
- ***************
- *** 19,25 ****
- * MSBITFIRST store bitmaps internally in with significant bit first
- * BMSHORT store bitmaps in shorts instead of bytes
- * BMLONG store bitmaps in longs instead of bytes
- - * MAXCHARS set to 256 for 256 character fonts (default = 128)
- * ALTFONT default for -altfont option.
- */
- #ifndef lint
- --- 19,24 ----
- ***************
- *** 50,56 ****
- #endif not OLD_X11_TOOLKIT
- #include <X11/Shell.h> /* needed for def. of XtNiconX */
- #include <X11/Viewport.h>
- - #include <X11/Simple.h>
- #include <X11/cursorfont.h>
- #include "xdvi.icon"
-
- --- 49,54 ----
- ***************
- *** 72,80 ****
- static Screen *SCRN;
- static Cursor redraw_cursor, ready_cursor;
- #define SetCursor(x) XDefineCursor(DISP, mane.win, x)
- ! #define ClearPage() XClearWindow(DISP, mane.win);
- #define Flush() XFlush(DISP)
- ! static Boolean unmapped = True;
- #ifndef X11HEIGHT
- #define X11HEIGHT 8 /* Height of server default font */
- #endif X11HEIGHT
- --- 70,82 ----
- static Screen *SCRN;
- static Cursor redraw_cursor, ready_cursor;
- #define SetCursor(x) XDefineCursor(DISP, mane.win, x)
- ! #define ClearPage(wr) XClearWindow(DISP, (wr).win);
- ! #define ClearArea(win, x, y, w, h) XClearArea(DISP, win, x, y, w, h, False)
- ! #define CopyArea(win, x, y, w, h, x2, y2) \
- ! XCopyArea(DISP, win, win, DefaultGCOfScreen(SCRN), \
- ! x, y, w, h, x2, y2)
- #define Flush() XFlush(DISP)
- ! static Boolean resized = False;
- #ifndef X11HEIGHT
- #define X11HEIGHT 8 /* Height of server default font */
- #endif X11HEIGHT
- ***************
- *** 86,92 ****
- typedef int Position;
- typedef int Dimension;
- #define SetCursor(x)
- ! #define ClearPage() XClear(mane.win);
- #define XBell(a,b) XFeep(b/10-1)
- #define Flush() XFlush()
- #define ConnectionNumber(DISP) (_XlibCurrentDisplay->fd)
- --- 88,97 ----
- typedef int Position;
- typedef int Dimension;
- #define SetCursor(x)
- ! #define ClearPage(wr) XClear((wr).win);
- ! #define ClearArea(win, x, y, w, h) XPixSet(win, x, y, w, h, backpix)
- ! #define CopyArea(win, x, y, w, h, x2, y2) \
- ! XCopyArea(win, x, y, x2, y2, w, h, GXcopy);
- #define XBell(a,b) XFeep(b/10-1)
- #define Flush() XFlush()
- #define ConnectionNumber(DISP) (_XlibCurrentDisplay->fd)
- ***************
- *** 143,156 ****
-
- int page_w, page_h;
- static int screen_w, screen_h;
- static Dimension window_w, window_h;
- static int home_x, home_y;
- static int min_x, max_x, min_y, max_y;
-
- ! struct WindowRec mane = {NULL, 4, 0, 0, MAXINT, 0, MAXINT, 0};
- ! struct WindowRec alt = {NULL, 1, 0, 0, MAXINT, 0, MAXINT, 0};
- /* curr is temporary storage except for within redraw() */
- ! struct WindowRec curr = {NULL, 4, 0, 0, MAXINT, 0, MAXINT, 0};
-
- /*
- * Mechanism to keep track of the magnifier window. The problems are,
- --- 148,173 ----
-
- int page_w, page_h;
- static int screen_w, screen_h;
- + #define clip_w mane.width
- + #define clip_h mane.height
- + #ifndef X10
- static Dimension window_w, window_h;
- + static Position main_x, main_y;
- + #else X10
- + #define window_w clip_w
- + #define window_h clip_h
- + #define main_x 0
- + #define main_y 0
- + #endif X10
- + static Position mag_x, mag_y, new_mag_x, new_mag_y;
- + static Boolean mag_moved = False;
- static int home_x, home_y;
- static int min_x, max_x, min_y, max_y;
-
- ! struct WindowRec mane = {NULL, 3, 0, 0, 0, 0, MAXDIM, 0, MAXDIM, 0};
- ! struct WindowRec alt = {NULL, 1, 0, 0, 0, 0, MAXDIM, 0, MAXDIM, 0};
- /* curr is temporary storage except for within redraw() */
- ! struct WindowRec curr = {NULL, 3, 0, 0, 0, 0, MAXDIM, 0, MAXDIM, 0};
-
- /*
- * Mechanism to keep track of the magnifier window. The problems are,
- ***************
- *** 259,264 ****
- --- 276,282 ----
-
- #ifndef X10
- static Widget top_level, vport_widget, draw_widget, clip_widget;
- + static Widget x_bar, y_bar; /* horizontal and vertical scroll bars */
- static XImage *image;
-
- static Arg vport_args[] = {
- ***************
- *** 289,295 ****
-
- #ifdef lint
- #ifndef X10
- ! WidgetClass viewportWidgetClass, simpleWidgetClass;
- char xdvi_bits[288];
- #else X10
- short xdvi_bits[15], xdvi_mask_bits[15];
- --- 307,313 ----
-
- #ifdef lint
- #ifndef X10
- ! WidgetClass viewportWidgetClass, widgetClass;
- char xdvi_bits[288];
- #else X10
- short xdvi_bits[15], xdvi_mask_bits[15];
- ***************
- *** 323,329 ****
- {
-
- if (debug & DBG_BITMAP)
- ! Printf("X(%d,%d)\n", x-curr.base_x, y-curr.base_y);
- if (x < max_x && x + bitmap->w >= min_x &&
- y < max_y && y + bitmap->h >= min_y) {
- if (--event_counter == 0) read_events(False);
- --- 341,347 ----
- {
-
- if (debug & DBG_BITMAP)
- ! Printf("X(%d,%d)\n", x - curr.base_x, y - curr.base_y);
- if (x < max_x && x + bitmap->w >= min_x &&
- y < max_y && y + bitmap->h >= min_y) {
- if (--event_counter == 0) read_events(False);
- ***************
- *** 358,363 ****
- --- 376,461 ----
- put_rectangle(x + w - t, y, t, h, True);
- }
-
- + /*
- + * Event-handling routines
- + */
- +
- + static void
- + expose(windowrec, x, y, w, h)
- + register struct WindowRec *windowrec;
- + int x, y, w, h;
- + {
- + if (windowrec->min_x > x) windowrec->min_x = x;
- + if (windowrec->max_x < x + w)
- + windowrec->max_x = x + w;
- + if (windowrec->min_y > y) windowrec->min_y = y;
- + if (windowrec->max_y < y + h)
- + windowrec->max_y = y + h;
- + }
- +
- + static void
- + clearexpose(windowrec, x, y, w, h)
- + struct WindowRec *windowrec;
- + int x, y, w, h;
- + {
- + ClearArea(windowrec->win, x, y, w, h);
- + expose(windowrec, x, y, w, h);
- + }
- +
- + static void
- + scrollwindow(windowrec, x0, y0)
- + register struct WindowRec *windowrec;
- + int x0, y0;
- + {
- + int x, y;
- + int x2 = 0, y2 = 0;
- + int ww, hh;
- +
- + x = x0 - windowrec->base_x;
- + y = y0 - windowrec->base_y;
- + ww = windowrec->width - x;
- + hh = windowrec->height - y;
- + windowrec->base_x = x0;
- + windowrec->base_y = y0;
- + if (curr.win == windowrec->win) {
- + curr.base_x = x0;
- + curr.base_y = y0;
- + }
- + windowrec->min_x -= x;
- + if (windowrec->min_x < 0) windowrec->min_x = 0;
- + windowrec->max_x -= x;
- + if (windowrec->max_x > windowrec->width)
- + windowrec->max_x = windowrec->width;
- + windowrec->min_y -= y;
- + if (windowrec->min_y < 0) windowrec->min_y = 0;
- + windowrec->max_y -= y;
- + if (windowrec->max_y > windowrec->height)
- + windowrec->max_y = windowrec->height;
- + if (x < 0) {
- + x2 = -x;
- + x = 0;
- + ww = windowrec->width - x2;
- + }
- + if (y < 0) {
- + y2 = -y;
- + y = 0;
- + hh = windowrec->height - y2;
- + }
- + if (ww <= 0 || hh <= 0) {
- + ClearPage(*windowrec);
- + windowrec->min_x = windowrec->min_y = 0;
- + windowrec->max_x = windowrec->width;
- + windowrec->max_y = windowrec->height;
- + }
- + else {
- + CopyArea(windowrec->win, x, y, ww, hh, x2, y2);
- + if (x > 0) clearexpose(windowrec, ww, 0, x, windowrec->height);
- + if (x2 > 0) clearexpose(windowrec, 0, 0, x2, windowrec->height);
- + if (y > 0) clearexpose(windowrec, 0, hh, windowrec->width, y);
- + if (y2 > 0) clearexpose(windowrec, 0, 0, windowrec->width, y2);
- + }
- + }
- +
- #ifndef X10
- /*
- * routines for X11 toolkit
- ***************
- *** 368,374 ****
- {XtNheight, (XtArgVal) &window_h},
- };
-
- ! #define get_wh(widget) XtGetValues(widget, arg_wh, 2)
-
- static Position window_x, window_y;
- static Arg arg_xy[] = {
- --- 466,475 ----
- {XtNheight, (XtArgVal) &window_h},
- };
-
- ! static Arg arg_wh_clip[] = {
- ! {XtNwidth, (XtArgVal) &clip_w},
- ! {XtNheight, (XtArgVal) &clip_h},
- ! };
-
- static Position window_x, window_y;
- static Arg arg_xy[] = {
- ***************
- *** 381,461 ****
- #define mane_base_x 0
- #define mane_base_y 0
-
- ! static Boolean
- ! scroll(horizontal, percent)
- ! Boolean horizontal;
- ! float percent;
- ! {
- ! register Widget widget;
- !
- ! widget = XtNameToWidget(vport_widget,
- ! horizontal ? "horizontal" : "vertical");
- ! if (!widget) return False;
- ! XtGetValues(clip_widget, horizontal ? &arg_wh[0] : &arg_wh[1], 1);
- ! XtCallCallbacks(widget, XtNscrollProc,
- ! (int) (percent*(horizontal ? window_w : window_h)));
- ! return True;
- ! }
- !
- ! /*
- ! * We unmap the window so that it does not generate expose events when
- ! * moving things around. I have found that compress_exposure does not do
- ! * this.
- ! */
- !
- static
- ! unmap()
- {
- - if (unmapped) return;
- - XUnmapWindow(DISP, mane.win);
- - unmapped = True;
- - }
- -
- - static
- - home()
- - {
- - register Widget widget;
- register int coord;
-
- - unmap();
- get_xy();
- ! get_wh(clip_widget);
- ! widget = XtNameToWidget(vport_widget, "horizontal");
- ! if (widget) {
- coord = 0;
- ! if (page_w > window_w) {
- ! coord = (page_w - window_w) / 2;
- if (coord > home_x / mane.shrinkfactor)
- coord = home_x / mane.shrinkfactor;
- }
- ! XtCallCallbacks(widget, XtNscrollProc, window_x + coord);
- }
- ! widget = XtNameToWidget(vport_widget, "vertical");
- ! if (widget) {
- coord = 0;
- ! if (page_h > window_h) {
- ! coord = (page_h - window_h) / 2;
- if (coord > home_y / mane.shrinkfactor)
- coord = home_y / mane.shrinkfactor;
- }
- ! XtCallCallbacks(widget, XtNscrollProc, window_y + coord);
- }
- }
-
- static void
- center(x, y)
- int x, y;
- {
- - register Widget widget;
- -
- /* We use the clip widget here because it gives a more exact value. */
- ! get_wh(clip_widget);
- ! x -= window_w/2;
- ! y -= window_h/2;
- ! widget = XtNameToWidget(vport_widget, "horizontal");
- ! if (widget) XtCallCallbacks(widget, XtNscrollProc, x);
- ! widget = XtNameToWidget(vport_widget, "vertical");
- ! if (widget) XtCallCallbacks(widget, XtNscrollProc, y);
- XWarpPointer(DISP, None, None, 0, 0, 0, 0, -x, -y);
- }
-
- --- 482,536 ----
- #define mane_base_x 0
- #define mane_base_y 0
-
- ! #define home(x) Xtk_home()
- static
- ! Xtk_home()
- {
- register int coord;
-
- get_xy();
- ! if (x_bar) {
- coord = 0;
- ! if (page_w > clip_w) {
- ! coord = (page_w - clip_w) / 2;
- if (coord > home_x / mane.shrinkfactor)
- coord = home_x / mane.shrinkfactor;
- }
- ! XtCallCallbacks(x_bar, XtNscrollProc, window_x + coord);
- }
- ! if (y_bar) {
- coord = 0;
- ! if (page_h > clip_h) {
- ! coord = (page_h - clip_h) / 2;
- if (coord > home_y / mane.shrinkfactor)
- coord = home_y / mane.shrinkfactor;
- }
- ! XtCallCallbacks(y_bar, XtNscrollProc, window_y + coord);
- }
- }
-
- + static
- + get_geom()
- + {
- + register Dimension old_clip_w = clip_w;
- +
- + XtGetValues(vport_widget, arg_wh, 2);
- + XtGetValues(clip_widget, arg_wh_clip, 2);
- + x_bar = XtNameToWidget(vport_widget, "horizontal");
- + y_bar = XtNameToWidget(vport_widget, "vertical");
- + if (old_clip_w == 0) home(False);
- + resized = False;
- + }
- +
- static void
- center(x, y)
- int x, y;
- {
- /* We use the clip widget here because it gives a more exact value. */
- ! x -= clip_w/2;
- ! y -= clip_h/2;
- ! if (x_bar) XtCallCallbacks(x_bar, XtNscrollProc, x);
- ! if (y_bar) XtCallCallbacks(y_bar, XtNscrollProc, y);
- XWarpPointer(DISP, None, None, 0, 0, 0, 0, -x, -y);
- }
-
- ***************
- *** 473,498 ****
- {
- XBell(DISP, 20);
- }
- #else X10
- ! static
- ! home()
- {
- ! mane.base_x = 0;
- ! if (page_w > window_w) {
- ! mane.base_x = (page_w - window_w) / 2;
- ! if (mane.base_x > home_x / mane.shrinkfactor)
- ! mane.base_x = home_x / mane.shrinkfactor;
- }
- ! mane.base_y = 0;
- ! if (page_h > window_h) {
- ! mane.base_y = (page_h - window_h) / 2;
- ! if (mane.base_y > home_y / mane.shrinkfactor)
- ! mane.base_y = home_y / mane.shrinkfactor;
- }
- }
-
- - #define unmap()
- - #define get_wh(widget)
- #define get_xy()
- #define window_x 0
- #define window_y 0
- --- 548,593 ----
- {
- XBell(DISP, 20);
- }
- +
- + /*ARGSUSED*/
- + static void
- + handle_resize(widget, junk, event)
- + Widget widget;
- + caddr_t junk;
- + XEvent *event;
- + {
- + resized = True;
- + }
- +
- #else X10
- ! static void
- ! home(scrl)
- ! Boolean scrl;
- {
- ! int x = 0, y = 0;
- !
- ! if (page_w > clip_w) {
- ! x = (page_w - clip_w) / 2;
- ! if (x > home_x / mane.shrinkfactor)
- ! x = home_x / mane.shrinkfactor;
- }
- ! if (page_h > clip_h) {
- ! y = (page_h - clip_h) / 2;
- ! if (y > home_y / mane.shrinkfactor)
- ! y = home_y / mane.shrinkfactor;
- }
- + if (scrl)
- + scrollwindow(&mane, x, y);
- + else {
- + mane.base_x = x;
- + mane.base_y = y;
- + if (curr.win == mane.win) {
- + curr.base_x = x;
- + curr.base_y = y;
- + }
- + }
- }
-
- #define get_xy()
- #define window_x 0
- #define window_y 0
- ***************
- *** 500,506 ****
- --- 595,629 ----
- #define mane_base_y mane.base_y
- #endif X10
-
- + static void
- + compute_mag_pos(xp, yp)
- + int *xp, *yp;
- + {
- + register int t;
- +
- + t = mag_x + main_x - alt.width/2;
- #ifndef X10
- + if (t > WidthOfScreen(SCRN) - alt.width - 2*MAGBORD)
- + t = WidthOfScreen(SCRN) - alt.width - 2*MAGBORD;
- + #else X10
- + if (t > window_w - alt.width - 2*MAGBORD)
- + t = window_w - alt.width - 2*MAGBORD;
- + #endif X10
- + if (t < 0) t = 0;
- + *xp = t;
- + t = mag_y + main_y - alt.height/2;
- + #ifndef X10
- + if (t > HeightOfScreen(SCRN) - alt.height - 2*MAGBORD)
- + t = HeightOfScreen(SCRN) - alt.height - 2*MAGBORD;
- + #else X10
- + if (t > window_h - alt.height - 2*MAGBORD)
- + t = window_h - alt.height - 2*MAGBORD;
- + #endif X10
- + if (t < 0) t = 0;
- + *yp = t;
- + }
- +
- + #ifndef X10
- /*ARGSUSED*/
- static void
- handle_button(widget, junk, event)
- ***************
- *** 509,565 ****
- XButtonEvent *event;
- #else X10
- static void
- ! handle_button(event, mag_size)
- XButtonPressedEvent *event;
- - int mag_size;
- #endif X10
- {
- int x, y;
- #ifndef X10
- - int mag_size = mg_size[event->button - 1];
- XSetWindowAttributes attr;
- - #endif X10
-
- ! if (alt.win != NULL || mane.shrinkfactor == 1 || mag_size <= 0)
- XBell(DISP, 20);
- else {
- #ifndef X10
- ! x = event->x_root - mag_size/2;
- ! if (x > WidthOfScreen(SCRN) - mag_size - 2*MAGBORD)
- ! x = WidthOfScreen(SCRN) - mag_size - 2*MAGBORD;
- ! if (x < 0) x = 0;
- ! y = event->y_root - mag_size/2;
- ! if (y > HeightOfScreen(SCRN) - mag_size - 2*MAGBORD)
- ! y = HeightOfScreen(SCRN) - mag_size - 2*MAGBORD;
- ! if (y < 0) y = 0;
- ! #else X10
- ! x = event->x - mag_size/2;
- ! if (x > window_w - mag_size - 2*MAGBORD)
- ! x = window_w - mag_size - 2*MAGBORD;
- ! if (x < 0) x = 0;
- ! y = event->y - mag_size/2;
- ! if (y > window_h - mag_size - 2*MAGBORD)
- ! y = window_h - mag_size - 2*MAGBORD;
- ! if (y < 0) y = 0;
- #endif X10
- alt.base_x = (event->x + mane_base_x) * mane.shrinkfactor -
- ! mag_size/2;
- alt.base_y = (event->y + mane_base_y) * mane.shrinkfactor -
- ! mag_size/2;
- #ifndef X10
- attr.save_under = True;
- attr.border_pixel = fore_args.value;
- attr.background_pixel = back_args.value;
- alt.win = XCreateWindow(DISP, RootWindowOfScreen(SCRN),
- ! x, y, mag_size, mag_size, MAGBORD,
- 0, /* depth from parent */
- InputOutput, CopyFromParent,
- ! CWSaveUnder|CWBorderPixel|CWBackPixel, &attr);
- ! XSetTransientForHint(DISP, alt.win, XtWindow(top_level));
- XSelectInput(DISP, alt.win, ExposureMask);
- #else X10
- alt.win = XCreateWindow(mane.win,
- ! x, y, mag_size, mag_size, MAGBORD,
- bdrmap, backmap);
- XSelectInput(alt.win, ExposeRegion);
- #endif X10
- --- 632,676 ----
- XButtonEvent *event;
- #else X10
- static void
- ! handle_button(event)
- XButtonPressedEvent *event;
- #endif X10
- {
- int x, y;
- #ifndef X10
- XSetWindowAttributes attr;
-
- ! alt.width = alt.height = mg_size[event->button - 1];
- ! #endif X10
- ! if (alt.win != NULL || mane.shrinkfactor == 1 || alt.width <= 0)
- XBell(DISP, 20);
- else {
- + mag_x = event->x;
- + mag_y = event->y;
- #ifndef X10
- ! main_x = event->x_root - mag_x;
- ! main_y = event->y_root - mag_y;
- #endif X10
- + compute_mag_pos(&x, &y);
- alt.base_x = (event->x + mane_base_x) * mane.shrinkfactor -
- ! alt.width/2;
- alt.base_y = (event->y + mane_base_y) * mane.shrinkfactor -
- ! alt.height/2;
- #ifndef X10
- attr.save_under = True;
- attr.border_pixel = fore_args.value;
- attr.background_pixel = back_args.value;
- + attr.override_redirect = True;
- alt.win = XCreateWindow(DISP, RootWindowOfScreen(SCRN),
- ! x, y, alt.width, alt.height, MAGBORD,
- 0, /* depth from parent */
- InputOutput, CopyFromParent,
- ! CWSaveUnder | CWBorderPixel | CWBackPixel |
- ! CWOverrideRedirect, &attr);
- XSelectInput(DISP, alt.win, ExposureMask);
- #else X10
- alt.win = XCreateWindow(mane.win,
- ! x, y, alt.width, alt.height, MAGBORD,
- bdrmap, backmap);
- XSelectInput(alt.win, ExposeRegion);
- #endif X10
- ***************
- *** 571,576 ****
- --- 682,718 ----
- #ifndef X10
- /*ARGSUSED*/
- static void
- + handle_motion(widget, junk, event)
- + Widget widget;
- + caddr_t junk;
- + XMotionEvent *event;
- + {
- + new_mag_x = event->x;
- + main_x = event->x_root - new_mag_x;
- + new_mag_y = event->y;
- + main_y = event->y_root - new_mag_y;
- + mag_moved = (new_mag_x != mag_x || new_mag_y != mag_y);
- + }
- + #endif X10
- +
- + static void
- + movemag(x, y)
- + int x, y;
- + {
- + int xx, yy;
- +
- + mag_x = x;
- + mag_y = y;
- + if (mag_x == new_mag_x && mag_y == new_mag_y) mag_moved = False;
- + compute_mag_pos(&xx, &yy);
- + XMoveWindow(DPY alt.win, xx, yy);
- + scrollwindow(&alt, (x + mane_base_x) * mane.shrinkfactor - alt.width/2,
- + (y + mane_base_y) * mane.shrinkfactor - alt.height/2);
- + }
- +
- + #ifndef X10
- + /*ARGSUSED*/
- + static void
- handle_release(widget, junk, event)
- Widget widget;
- caddr_t junk;
- ***************
- *** 586,591 ****
- --- 728,734 ----
- XDestroyWindow(DPY alt.win);
- if (curr.win == alt.win) alt_canit = True;
- alt.win = NULL;
- + mag_moved = False;
- can_exposures(&alt);
- }
- }
- ***************
- *** 606,617 ****
- }
- else
- alt_stat = 0;
- ! if (windowrec->min_x > event->x) windowrec->min_x = event->x;
- ! if (windowrec->max_x < event->x + event->width)
- ! windowrec->max_x = event->x + event->width;
- ! if (windowrec->min_y > event->y) windowrec->min_y = event->y;
- ! if (windowrec->max_y < event->y + event->height)
- ! windowrec->max_y = event->y + event->height;
- }
- #endif X10
-
- --- 749,755 ----
- }
- else
- alt_stat = 0;
- ! expose(windowrec, event->x, event->y, event->width, event->height);
- }
- #endif X10
-
- ***************
- *** 643,654 ****
- * Also, watch out, if we destroy the magnifying glass while
- * writing it.
- */
- ! if (!XtPending() && (!wait || canit || mane.min_x < MAXINT ||
- ! alt.min_x < MAXINT))
- if (alt_canit) longjmp(canit_env, 1);
- else return;
- #ifndef X10
- XtNextEvent(&event);
- if (event.xany.window == alt.win &&
- event.type == Expose) {
- handle_exp((Widget) NULL, &alt, &event.xexpose);
- --- 781,793 ----
- * Also, watch out, if we destroy the magnifying glass while
- * writing it.
- */
- ! if (!XtPending() && (!wait || canit || mane.min_x < MAXDIM ||
- ! alt.min_x < MAXDIM || mag_moved))
- if (alt_canit) longjmp(canit_env, 1);
- else return;
- #ifndef X10
- XtNextEvent(&event);
- + if (resized) get_geom();
- if (event.xany.window == alt.win &&
- event.type == Expose) {
- handle_exp((Widget) NULL, &alt, &event.xexpose);
- ***************
- *** 667,685 ****
- switch (event.type) {
- case ExposeWindow:
- if (event.window == mane.win) {
- ! window_h = ((XExposeEvent *)(&event))->height;
- ! window_w = ((XExposeEvent *)(&event))->width;
- ! home();
- ! ch = '\f';
- ! break;
- ! }
- ! /* otherwise control passes through */
-
- case ExposeRegion:
- /* check in case we already destroyed the window */
- if (event.window == mane.win || alt.win != NULL) {
- struct WindowRec *wr =
- (event.window == mane.win ? &mane : &alt);
- if (wr == &alt)
- if (alt_stat < 0) { /* destroy upon exposure */
- alt_stat = 0;
- --- 806,824 ----
- switch (event.type) {
- case ExposeWindow:
- if (event.window == mane.win) {
- ! register Dimension old_clip_w = clip_w;
-
- + window_w = ((XExposeEvent *) &event)->width;
- + window_h = ((XExposeEvent *) &event)->height;
- + if (old_clip_w == 0) home(False);
- + }
- + /* control falls through */
- case ExposeRegion:
- /* check in case we already destroyed the window */
- if (event.window == mane.win || alt.win != NULL) {
- struct WindowRec *wr =
- (event.window == mane.win ? &mane : &alt);
- +
- if (wr == &alt)
- if (alt_stat < 0) { /* destroy upon exposure */
- alt_stat = 0;
- ***************
- *** 688,713 ****
- }
- else
- alt_stat = 0;
- ! #define ev ((XExposeEvent *)(&event))
- ! if (wr->min_x > ev->x) wr->min_x = ev->x;
- ! if (wr->max_x < ev->x + ev->width)
- ! wr->max_x = ev->x + ev->width;
- ! if (wr->min_y > ev->y) wr->min_y = ev->y;
- ! if (wr->max_y < ev->y + ev->height)
- ! wr->max_y = ev->y + ev->height;
- ! #undef ev
- }
- break;
-
- case ButtonPressed: {
- ! int n = 0;
- ! switch (((XButtonPressedEvent *) (&event))->detail &
- ValueMask) {
- - case LeftButton: n=0; break;
- case MiddleButton: n=1; break;
- case RightButton: n=2; break;
- }
- ! handle_button((XButtonPressedEvent *) (&event), mg_size[n]);
- }
- break;
- case ButtonReleased:
- --- 827,864 ----
- }
- else
- alt_stat = 0;
- ! if (((XExposeEvent *) &event)->detail & ExposeCopy)
- ! ClearArea(event.window,
- ! ((XExposeEvent *) &event)->x,
- ! ((XExposeEvent *) &event)->y,
- ! ((XExposeEvent *) &event)->width,
- ! ((XExposeEvent *) &event)->height);
- ! expose(wr, ((XExposeEvent *) &event)->x,
- ! ((XExposeEvent *) &event)->y,
- ! ((XExposeEvent *) &event)->width,
- ! ((XExposeEvent *) &event)->height);
- }
- + case ExposeCopy: /* throw away junk event */
- break;
-
- + case MouseMoved:
- + case LeftDownMotion:
- + case MiddleDownMotion:
- + case RightDownMotion:
- + new_mag_x = ((XMouseMovedEvent *) &event)->x;
- + new_mag_y = ((XMouseMovedEvent *) &event)->y;
- + mag_moved = (new_mag_x != mag_x || new_mag_y != mag_y);
- + break;
- +
- case ButtonPressed: {
- ! register int n = 0;
- ! switch (((XButtonPressedEvent *) &event)->detail &
- ValueMask) {
- case MiddleButton: n=1; break;
- case RightButton: n=2; break;
- }
- ! alt.width = alt.height = mg_size[n];
- ! handle_button((XButtonPressedEvent *) &event);
- }
- break;
- case ButtonReleased:
- ***************
- *** 718,723 ****
- --- 869,877 ----
- if (nbytes > 1) goto bad;
- if (nbytes != 0) ch = *string;
- break;
- + /*MouseMoved */
- + default:
- + Fprintf(stderr, "???: %x\n", event.type);
- }
- #endif X10
- if (ch == '\0') continue;
- ***************
- *** 771,791 ****
- /* redisplay current page */
- break;
- case '^':
- ! home();
- ! break;
- ! #ifndef X10
- ! case 'u':
- ! if (!scroll(False, -0.67)) goto bad;
- continue;
- ! case 'd':
- ! if (!scroll(False, 0.67)) goto bad;
- ! continue;
- case 'l':
- ! if (!scroll(True, -0.67)) goto bad;
- continue;
- case 'r':
- ! if (!scroll(True, 0.67)) goto bad;
- continue;
- case 'c':
- center(event.xkey.x, event.xkey.y);
- continue;
- --- 925,953 ----
- /* redisplay current page */
- break;
- case '^':
- ! home(True);
- continue;
- ! #ifndef X10
- case 'l':
- ! if (!x_bar) goto bad;
- ! XtCallCallbacks(x_bar, XtNscrollProc,
- ! -2 * (int) clip_w / 3);
- continue;
- case 'r':
- ! if (!x_bar) goto bad;
- ! XtCallCallbacks(x_bar, XtNscrollProc,
- ! 2 * (int) clip_w / 3);
- continue;
- + case 'u':
- + if (!y_bar) goto bad;
- + XtCallCallbacks(y_bar, XtNscrollProc,
- + -2 * (int) clip_h / 3);
- + continue;
- + case 'd':
- + if (!y_bar) goto bad;
- + XtCallCallbacks(y_bar, XtNscrollProc,
- + 2 * (int) clip_h / 3);
- + continue;
- case 'c':
- center(event.xkey.x, event.xkey.y);
- continue;
- ***************
- *** 802,837 ****
- ImageByteOrder(DISP));
- continue;
- #else X10
- - case 'u':
- - if (mane.base_y == 0) goto bad;
- - mane.base_y -= window_h;
- - if (mane.base_y < 0)
- - mane.base_y = 0;
- - break;
- - case 'd':
- - if (mane.base_y >= page_h - window_h) goto bad;
- - mane.base_y += window_h;
- - if (mane.base_y > page_h - window_h)
- - mane.base_y = page_h - window_h;
- - break;
- case 'l':
- if (mane.base_x == 0) goto bad;
- ! mane.base_x -= window_w;
- ! if (mane.base_x < 0)
- ! mane.base_x = 0;
- ! break;
- case 'r':
- ! if (mane.base_x >= page_w - window_w) goto bad;
- ! mane.base_x += window_w;
- ! if (mane.base_x > page_w - window_w)
- ! mane.base_x = page_w - window_w;
- ! break;
- case 'c':
- ! #define ev ((XKeyPressedEvent *) (&event))
- ! mane.base_x += ev->x - window_w/2;
- ! mane.base_y += ev->y - window_h/2;
- XWarpMouse(mane.win, window_w/2, window_h/2, 3);
- ! break;
- case 'M':
- home_x = (ev->x + mane.base_x) * mane.shrinkfactor;
- home_y = (ev->y + mane.base_y) * mane.shrinkfactor;
- --- 964,999 ----
- ImageByteOrder(DISP));
- continue;
- #else X10
- case 'l':
- if (mane.base_x == 0) goto bad;
- ! number0 = mane.base_x - 2 * clip_w / 3;
- ! if (number0 < 0) number0 = 0;
- ! scrollwindow(&mane, number0, mane.base_y);
- ! continue;
- case 'r':
- ! number0 = mane.base_x + 2 * clip_w / 3;
- ! if (number0 > page_w - clip_w) number0 = page_w - clip_w;
- ! if (number0 == mane.base_x) goto bad;
- ! scrollwindow(&mane, number0, mane.base_y);
- ! continue;
- ! case 'u':
- ! if (mane.base_y == 0) goto bad;
- ! number0 = mane.base_y - 2 * clip_h / 3;
- ! if (number0 < 0) number0 = 0;
- ! scrollwindow(&mane, mane.base_x, number0);
- ! continue;
- ! case 'd':
- ! number0 = mane.base_y + 2 * clip_h / 3;
- ! if (number0 > page_h - clip_h) number0 = page_h - clip_h;
- ! if (number0 == mane.base_y) goto bad;
- ! scrollwindow(&mane, mane.base_x, number0);
- ! continue;
- case 'c':
- ! #define ev ((XKeyPressedEvent *) &event)
- ! scrollwindow(&mane, mane.base_x + ev->x - window_w/2,
- ! mane.base_y + ev->y - window_h/2);
- XWarpMouse(mane.win, window_w/2, window_h/2, 3);
- ! continue;
- case 'M':
- home_x = (ev->x + mane.base_x) * mane.shrinkfactor;
- home_y = (ev->y + mane.base_y) * mane.shrinkfactor;
- ***************
- *** 842,848 ****
- if (!arg0) {
- long fac1, fac2;
- shrink_factor = 1;
- - get_wh(vport_widget);
- fac1 = ROUNDUP(PAPER_WIDTH, window_w);
- fac2 = ROUNDUP(PAPER_HEIGHT, window_h);
- if (fac1 < fac2)
- --- 1004,1009 ----
- ***************
- *** 853,859 ****
- if (number0 <= 0) goto bad;
- if (number0 == mane.shrinkfactor) continue;
- shrink_factor = mane.shrinkfactor = number0;
- - unmap();
- init_page();
- if (number0 != 1 && number0 != bak_shrink) {
- bak_shrink = number0;
- --- 1014,1019 ----
- ***************
- *** 860,870 ****
- reset_fonts();
- }
- #ifndef X10
- set_draw_args();
- XtSetValues(draw_widget, draw_args, 2);
- ! #endif X10
- ! home();
- break;
- case 'S':
- if (!arg0) goto bad;
- if (number0 < 0) goto bad;
- --- 1020,1036 ----
- reset_fonts();
- }
- #ifndef X10
- + XUnmapWindow(DISP, mane.win);
- set_draw_args();
- XtSetValues(draw_widget, draw_args, 2);
- ! get_geom();
- ! home(False);
- ! XMapWindow(DISP, mane.win);
- ! continue;
- ! #else X10
- ! home(False);
- break;
- + #endif X10
- case 'S':
- if (!arg0) goto bad;
- if (number0 < 0) goto bad;
- ***************
- *** 872,878 ****
- density = number0;
- reset_fonts();
- if (mane.shrinkfactor == 1) continue;
- - unmap();
- break;
- case 'R':
- /* reread DVI file */
- --- 1038,1043 ----
- ***************
- *** 885,891 ****
- if (current_page != next_page) {
- current_page = next_page;
- spec_warn = True;
- ! home();
- }
- canit = True;
- Flush();
- --- 1050,1056 ----
- if (current_page != next_page) {
- current_page = next_page;
- spec_warn = True;
- ! home(False);
- }
- canit = True;
- Flush();
- ***************
- *** 916,922 ****
- max_y - min_y, min_x, min_y, curr.base_x, curr.base_y);
- SetCursor(redraw_cursor);
- if (errtext = (char *) setjmp(dvi_env)) {
- ! ClearPage();
- #ifndef X10
- get_xy();
- XDrawString(DISP, mane.win, foreGC,
- --- 1081,1087 ----
- max_y - min_y, min_x, min_y, curr.base_x, curr.base_y);
- SetCursor(redraw_cursor);
- if (errtext = (char *) setjmp(dvi_env)) {
- ! ClearPage(mane);
- #ifndef X10
- get_xy();
- XDrawString(DISP, mane.win, foreGC,
- ***************
- *** 941,953 ****
- redraw_page()
- {
- if (debug & DBG_EVENT) fputs("Redraw page: ", stdout);
- - get_wh(clip_widget);
- get_xy();
- ! ClearPage();
- mane.min_x = -window_x;
- ! mane.max_x = -window_x + window_w;
- mane.min_y = -window_y;
- ! mane.max_y = -window_y + window_h;
- redraw(&mane);
- }
-
- --- 1106,1117 ----
- redraw_page()
- {
- if (debug & DBG_EVENT) fputs("Redraw page: ", stdout);
- get_xy();
- ! ClearPage(mane);
- mane.min_x = -window_x;
- ! mane.max_x = -window_x + clip_w;
- mane.min_y = -window_y;
- ! mane.max_y = -window_y + clip_h;
- redraw(&mane);
- }
-
- ***************
- *** 975,981 ****
- can_exposures(windowrec)
- struct WindowRec *windowrec;
- {
- ! windowrec->min_x = windowrec->min_y = MAXINT;
- windowrec->max_x = windowrec->max_y = 0;
- }
-
- --- 1139,1145 ----
- can_exposures(windowrec)
- struct WindowRec *windowrec;
- {
- ! windowrec->min_x = windowrec->min_y = MAXDIM;
- windowrec->max_x = windowrec->max_y = 0;
- }
-
- ***************
- *** 1005,1013 ****
- {
- if (debug & DBG_BATCH) {
- #ifndef X10
- ! while (mane.min_x == MAXINT) read_events(True);
- #else X10
- ! while (mane.min_x == MAXINT)
- if (setjmp(canit_env)) break;
- else read_events(True);
- #endif X10
- --- 1169,1177 ----
- {
- if (debug & DBG_BATCH) {
- #ifndef X10
- ! while (mane.min_x == MAXDIM) read_events(True);
- #else X10
- ! while (mane.min_x == MAXDIM)
- if (setjmp(canit_env)) break;
- else read_events(True);
- #endif X10
- ***************
- *** 1025,1042 ****
- canit = False;
- can_exposures(&mane);
- can_exposures(&alt);
- ! #ifndef X10
- ! if (unmapped) {
- ! /* this creates a redraw event */
- ! XMapWindow(DISP, mane.win);
- ! unmapped = False;
- ! }
- ! else
- ! #endif
- ! redraw_page();
- }
- ! else if (alt.min_x < MAXINT) redraw(&alt);
- ! else if (mane.min_x < MAXINT) redraw(&mane);
- Flush();
- }
- }
- --- 1189,1208 ----
- canit = False;
- can_exposures(&mane);
- can_exposures(&alt);
- ! redraw_page();
- }
- ! else if (mag_moved) {
- ! if (alt.win == NULL) mag_moved = False;
- ! else if (abs(new_mag_x - mag_x) >
- ! 2 * abs(new_mag_y - mag_y))
- ! movemag(new_mag_x, mag_y);
- ! else if (abs(new_mag_y - mag_y) >
- ! 2 * abs(new_mag_x - mag_x))
- ! movemag(mag_x, new_mag_y);
- ! else movemag(new_mag_x, new_mag_y);
- ! }
- ! else if (alt.min_x < MAXDIM) redraw(&alt);
- ! else if (mane.min_x < MAXDIM) redraw(&mane);
- Flush();
- }
- }
- ***************
- *** 1249,1269 ****
- top_level, vport_args, XtNumber(vport_args));
- clip_widget = XtNameToWidget(vport_widget, "clip");
- set_draw_args();
- ! draw_widget = XtCreateManagedWidget("drawing", simpleWidgetClass,
- vport_widget, draw_args, XtNumber(draw_args));
- ! XtAddEventHandler(vport_widget, KeyPressMask, 0, handle_key,
- (caddr_t) NULL);
- ! XtAddEventHandler(draw_widget, ExposureMask, GraphicsExpose, handle_exp,
- (caddr_t) &mane);
- ! XtAddEventHandler(draw_widget, ButtonPressMask, 0, handle_button,
- (caddr_t) NULL);
- ! XtAddEventHandler(draw_widget, ButtonReleaseMask, 0, handle_release,
- (caddr_t) NULL);
- XtRealizeWidget(top_level);
- curr.win = mane.win = XtWindow(draw_widget);
- - /* unmapped = True; (it was initialized this way) */
- - home(); /* no need to unmap at this stage */
- - unmapped = False;
-
- if (reverse) {
- if (!fore_color) fore_args.value = WhitePixelOfScreen(SCRN);
- --- 1415,1436 ----
- top_level, vport_args, XtNumber(vport_args));
- clip_widget = XtNameToWidget(vport_widget, "clip");
- set_draw_args();
- ! draw_widget = XtCreateManagedWidget("drawing", widgetClass,
- vport_widget, draw_args, XtNumber(draw_args));
- ! XtAddEventHandler(vport_widget, KeyPressMask, False, handle_key,
- (caddr_t) NULL);
- ! XtAddEventHandler(vport_widget, StructureNotifyMask, False,
- ! handle_resize, (caddr_t) NULL);
- ! XtAddEventHandler(draw_widget, ExposureMask, False, handle_exp,
- (caddr_t) &mane);
- ! XtAddEventHandler(draw_widget, ButtonPressMask, False, handle_button,
- (caddr_t) NULL);
- ! XtAddEventHandler(draw_widget, ButtonMotionMask, False, handle_motion,
- (caddr_t) NULL);
- + XtAddEventHandler(draw_widget, ButtonReleaseMask, False, handle_release,
- + (caddr_t) NULL);
- XtRealizeWidget(top_level);
- curr.win = mane.win = XtWindow(draw_widget);
-
- if (reverse) {
- if (!fore_color) fore_args.value = WhitePixelOfScreen(SCRN);
- ***************
- *** 1311,1317 ****
- cr_Pixel = high_color ? hl_Pixel : fore_args.value;
- {
- XColor bg_Color, cr_Color;
- !
- bg_Color.pixel = back_args.value;
- XQueryColor(DISP, DefaultColormapOfScreen(SCRN), &bg_Color);
- cr_Color.pixel = cr_Pixel;
- --- 1478,1484 ----
- cr_Pixel = high_color ? hl_Pixel : fore_args.value;
- {
- XColor bg_Color, cr_Color;
- !
- bg_Color.pixel = back_args.value;
- XQueryColor(DISP, DefaultColormapOfScreen(SCRN), &bg_Color);
- cr_Color.pixel = cr_Pixel;
- ***************
- *** 1550,1560 ****
- Sprintf(def, "=%dx%d+0+0", frame.width, frame.height);
- mane.win = XCreate("DVI Previewer", prog, geometry, def,
- &frame, 50, 50);
- - window_w = frame.width;
- - window_h = frame.height;
- XSelectInput(mane.win,
- KeyPressed|ButtonPressed|ButtonReleased|
- ! ExposeWindow|ExposeRegion);
- XMapWindow(mane.win);
- XDefineCursor(mane.win,
- XCreateCursor(xdvi_width, xdvi_height, xdvi_bits, xdvi_mask_bits,
- --- 1717,1726 ----
- Sprintf(def, "=%dx%d+0+0", frame.width, frame.height);
- mane.win = XCreate("DVI Previewer", prog, geometry, def,
- &frame, 50, 50);
- XSelectInput(mane.win,
- KeyPressed|ButtonPressed|ButtonReleased|
- ! ExposeWindow|ExposeRegion|ExposeCopy|
- ! LeftDownMotion|MiddleDownMotion|RightDownMotion);
- XMapWindow(mane.win);
- XDefineCursor(mane.win,
- XCreateCursor(xdvi_width, xdvi_height, xdvi_bits, xdvi_mask_bits,
- diff -cr old/xdvi.h new/xdvi.h
- *** old/xdvi.h Thu Jul 13 12:52:45 1989
- --- new/xdvi.h Sat Jul 8 15:05:11 1989
- ***************
- *** 34,40 ****
- #define True 1
- #define False 0
-
- ! #define MAXINT 32767
-
- #define pixel_conv(x) ((int) (((x) / shrink_factor) >> 16))
- #define pixel_round(x) ((int) (((x) / shrink_factor + (1<<15)) >> 16))
- --- 34,40 ----
- #define True 1
- #define False 0
-
- ! #define MAXDIM 32767
-
- #define pixel_conv(x) ((int) (((x) / shrink_factor) >> 16))
- #define pixel_round(x) ((int) (((x) / shrink_factor + (1<<15)) >> 16))
- ***************
- *** 123,132 ****
- char *bits; /* pointer to the bits */
- };
-
- - #ifndef MAXCHARS
- - #define MAXCHARS 128 /* make 256 for 8 bit characters */
- - #endif MAXCHARS
- -
- /*
- * Per-character information.
- * There is one of these for each character in a font.
- --- 123,128 ----
- ***************
- *** 173,183 ****
- short size; /* dots per 5 inches */
- FILE *file; /* open PXL file or NULL */
- char *filename; /* name of PXL file */
- read_char_proc read_char; /* function to read bitmap */
- ! struct glyph glyph[MAXCHARS];
- };
-
- extern struct font *current_font;
-
- /*
- * Command line flags.
- --- 169,181 ----
- short size; /* dots per 5 inches */
- FILE *file; /* open PXL file or NULL */
- char *filename; /* name of PXL file */
- + ubyte maxchar; /* largest character code */
- read_char_proc read_char; /* function to read bitmap */
- ! struct glyph glyph[256];
- };
-
- extern struct font *current_font;
- + extern ubyte maxchar;
-
- /*
- * Command line flags.
- ***************
- *** 205,210 ****
- --- 203,209 ----
- long win; /* type Window is not defined yet */
- int shrinkfactor;
- int base_x, base_y;
- + int width, height;
- int min_x, max_x, min_y, max_y; /* for pending expose events */
- } mane, alt, curr;
-
- diff -cr old/xdvi.man.sed new/xdvi.man.sed
- *** old/xdvi.man.sed Thu Jul 13 12:52:49 1989
- --- new/xdvi.man.sed Mon Jul 10 13:51:21 1989
- ***************
- *** 44,50 ****
- .TP
- .BI \-s " shrink"
- (.shrinkFactor)
- ! Defines the initial shrink factor. The default value is 4.
- .TP
- .BI \-S " density"
- (.densityPercent)
- --- 44,50 ----
- .TP
- .BI \-s " shrink"
- (.shrinkFactor)
- ! Defines the initial shrink factor. The default value is 3.
- .TP
- .BI \-S " density"
- (.densityPercent)
- diff -cr old/xdvi10.man.s new/xdvi10.man.s
- *** old/xdvi10.man.s Thu Jul 13 12:52:51 1989
- --- new/xdvi10.man.s Mon Jul 10 13:47:37 1989
- ***************
- *** 44,50 ****
- .TP
- .BI \-s " shrink"
- (shrinkFactor)
- ! Defines the initial shrink factor. The default value is 4.
- .TP
- .BI \-S " density"
- (densityPercent)
- --- 44,50 ----
- .TP
- .BI \-s " shrink"
- (shrinkFactor)
- ! Defines the initial shrink factor. The default value is 3.
- .TP
- .BI \-S " density"
- (densityPercent)
-