philipt@cvaxa.sussex.ac.uk (Philip Taylor) (03/01/89)
Has anyone experience of using the texx (X-windows TeX previewer) on an HP 9000? I am running X11R3 on an HP 9000/320 running HP-UX 6.2B. I can build and start texx OK, but it always falls over almost immediately with the messages:- X Error: BadMatch, invalid parameter attributes Request Major code 70 () Request Minor code ResourceID 0x0 Error Serial #32 Current Serial #386 Can anyone throw any light on this? Philip Taylor *=============================================================================* * Philip Taylor | Systems Programmer * * COGS, | Tel: (+44)- (0)273 606755 Ext 4284 * * Arts Building E, | * * University Of Sussex, | JANET: philipt@uk.ac.sussex.cogs * * Falmer, | UUCP: ...mcvax!ukc!cvaxa!philipt * * Brighton, BN1 9QN | ARPA: * * UNITED KINGDOM. | philipt%uk.ac.sussex.cogs@nss.cs.ucl.ac.uk * * | * *=============================================================================*
grunwald@flute.cs.uiuc.edu (03/22/89)
I post yet again the current texx patches, and ask those using texx to
consider FTPing a copy of texx2.8 from either expo.lcs.mit.edu:contrib
or a.cs.uiuc.edu:pub/TeX.
Also, although texx2 uses the X fonts for speed in repolotting, several
people have noted that it's a royal pain to provide all those fonts. As
far as I see, there's no problem in having texx2 also display bitmapped
fonts, as xdvi or texx did. However, I won't be doing much in this line
until I'm done interviewing & deposit my thesis, so I'd heartily
welcome the fixes for this (or any other part of texx2) if someone does it.
*** texx.c Mon Aug 29 13:22:08 1988
--- /usr/src/local/X11R3/contrib/clients/texx/previewers/texx.c Fri Feb 26 01:05:37 1988
***************
*** 18,24 ****
#include <ctype.h>
#include "dvistuff.h"
! static char *rcsid="$Header: texx.c,v 1.20 88/08/29 13:20:48 grunwald Exp $" ;
/*
* These constants may need to be changed on your implementation
*/
--- 18,24 ----
#include <ctype.h>
#include "dvistuff.h"
! static char *rcsid="$Header: texx.c,v 1.2 88/02/11 16:55:22 jim Exp $" ;
/*
* These constants may need to be changed on your implementation
*/
***************
*** 30,37 ****
#define BitsPerByteMask 0x7
#define BitsPerByteShift 3
! #define GCallbits ((1L<<(GCLastBit+1))-1)
!
/*
* Note that ROUNDUP evaluates Y twice.
*/
--- 30,36 ----
#define BitsPerByteMask 0x7
#define BitsPerByteShift 3
! #define BytesPerShot 2
/*
* Note that ROUNDUP evaluates Y twice.
*/
***************
*** 104,114 ****
/*
* I don't know why this is needed, but our sun seems to thing
! * and is or & vice versa. This is true even running X11R2
*/
! /*
! #if defined(sun) || defined(USE_SUN)
#define GXAND GXand
#define GXOR GXor
#else
--- 103,112 ----
/*
* I don't know why this is needed, but our sun seems to thing
! * and is or & vice versa
*/
! #ifdef mc68000
#define GXAND GXand
#define GXOR GXor
#else
***************
*** 115,124 ****
#define GXAND GXor
#define GXOR GXand
#endif
- */
- int Black_Pixel = 0;
-
main(argc, argv)
int argc;
char **argv;
--- 113,119 ----
***************
*** 159,165 ****
ProgName, XDisplayName(display));
exit(1);
}
- Black_Pixel = XBlackPixel(DISP, 0);
if ((option = XGetDefault(DISP, ProgName, "ReverseVideo")) &&
strcmp(option, "on") == 0)
--- 154,159 ----
***************
*** 348,366 ****
* Based on the shrink factor, choose a shrink factor for the enlarged
* display
*/
if (shrinkFactor[SHRINK_LARGE] == 0) {
shrinkFactor[SHRINK_LARGE] = shrinkFactor[SHRINK_NORMAL] / 2;
}
shrinkFactor[SHRINK_LARGE] = MIN(shrinkFactor[SHRINK_LARGE],
shrinkFactor[SHRINK_NORMAL]-1);
shrinkFactor[SHRINK_LARGE] = MAX(shrinkFactor[SHRINK_LARGE], 1);
page_h[SHRINK_LARGE]=(rawDviHeight + shrinkFactor[SHRINK_LARGE] - 1)
/ shrinkFactor[SHRINK_LARGE];
leaf_w[SHRINK_LARGE]=(rawDviWidth + shrinkFactor[SHRINK_LARGE] - 1)
/ shrinkFactor[SHRINK_LARGE];
/*
* Compute the page size given the number of leaves. We may have
! * to scale back if everything cant fit.
*/
if (leaf_w[SHRINK_NORMAL] * Leaves <= maxWidth) {
--- 342,364 ----
* Based on the shrink factor, choose a shrink factor for the enlarged
* display
*/
+
if (shrinkFactor[SHRINK_LARGE] == 0) {
shrinkFactor[SHRINK_LARGE] = shrinkFactor[SHRINK_NORMAL] / 2;
}
+
shrinkFactor[SHRINK_LARGE] = MIN(shrinkFactor[SHRINK_LARGE],
shrinkFactor[SHRINK_NORMAL]-1);
shrinkFactor[SHRINK_LARGE] = MAX(shrinkFactor[SHRINK_LARGE], 1);
+
page_h[SHRINK_LARGE]=(rawDviHeight + shrinkFactor[SHRINK_LARGE] - 1)
/ shrinkFactor[SHRINK_LARGE];
leaf_w[SHRINK_LARGE]=(rawDviWidth + shrinkFactor[SHRINK_LARGE] - 1)
/ shrinkFactor[SHRINK_LARGE];
+
/*
* Compute the page size given the number of leaves. We may have
! * to scale back if everything can't fit.
*/
if (leaf_w[SHRINK_NORMAL] * Leaves <= maxWidth) {
***************
*** 378,385 ****
highpix = XCreateGC(DISP, RootWindow(DISP, defaultScreen), 0, NULL);
forepix = XCreateGC(DISP, RootWindow(DISP, defaultScreen), 0, NULL);
! XCopyGC(DISP, DefaultGC(DISP, 0), GCallbits, highpix);
! XCopyGC(DISP, highpix, GCallbits, forepix);
if (reverse) {
--- 376,383 ----
highpix = XCreateGC(DISP, RootWindow(DISP, defaultScreen), 0, NULL);
forepix = XCreateGC(DISP, RootWindow(DISP, defaultScreen), 0, NULL);
! XCopyGC(DISP, DefaultGC(DISP, 0), (1L<<(GCLastBit+1))-1, highpix);
! XCopyGC(DISP, highpix, (1L<<(GCLastBit+1))-1, forepix);
if (reverse) {
***************
*** 388,400 ****
backpix = BlackPixel(DISP, defaultScreen);
bdrpix = WhitePixel(DISP, defaultScreen);
mouspix = WhitePixel(DISP, defaultScreen);
! if (Black_Pixel) {
! XSetFunction(DISP, forepix, GXand); /* or */
! XSetFunction(DISP, highpix, GXand);
! } else {
! XSetFunction(DISP, forepix, GXor); /* or */
! XSetFunction(DISP, highpix, GXor);
! }
} else {
XSetForeground(DISP, forepix, BlackPixel(DISP, defaultScreen));
--- 386,394 ----
backpix = BlackPixel(DISP, defaultScreen);
bdrpix = WhitePixel(DISP, defaultScreen);
mouspix = WhitePixel(DISP, defaultScreen);
! XSetFunction(DISP, forepix, GXAND); /* or */
! XSetFunction(DISP, highpix, GXAND);
!
} else {
XSetForeground(DISP, forepix, BlackPixel(DISP, defaultScreen));
***************
*** 402,414 ****
backpix = WhitePixel(DISP, defaultScreen);
bdrpix = BlackPixel(DISP, defaultScreen);
mouspix = BlackPixel(DISP, defaultScreen);
! if (Black_Pixel) {
! XSetFunction(DISP, forepix, GXor); /* and */
! XSetFunction(DISP, highpix, GXor);
! } else {
! XSetFunction(DISP, forepix, GXand); /* and */
! XSetFunction(DISP, highpix, GXand);
! }
}
if (DisplayCells(DISP, 0) > 2) {
--- 396,403 ----
backpix = WhitePixel(DISP, defaultScreen);
bdrpix = BlackPixel(DISP, defaultScreen);
mouspix = BlackPixel(DISP, defaultScreen);
! XSetFunction(DISP, forepix, GXOR); /* and */
! XSetFunction(DISP, highpix, GXOR);
}
if (DisplayCells(DISP, 0) > 2) {
***************
*** 486,492 ****
XFlush(DISP);
specialGC = XCreateGC(DISP, RootWindow(DISP, defaultScreen), 0, NULL);
! XCopyGC(DISP, forepix, GCallbits, specialGC);
mainLoop();
stop_output(0);
--- 475,481 ----
XFlush(DISP);
specialGC = XCreateGC(DISP, RootWindow(DISP, defaultScreen), 0, NULL);
! XCopyGC(DISP, forepix, (1L<<(GCLastBit+1))-1, specialGC);
mainLoop();
stop_output(0);
***************
*** 533,541 ****
ProgName, shrinkSize);
exit(1);
}
XFillRectangle(DISP, pasteUpPixmap[shrinkSize][leaf], pasteFillGC, 0, 0,
leaf_w[shrinkSize], page_h[shrinkSize]);
- XSync(DISP, 0);
}
static void
--- 522,530 ----
ProgName, shrinkSize);
exit(1);
}
+
XFillRectangle(DISP, pasteUpPixmap[shrinkSize][leaf], pasteFillGC, 0, 0,
leaf_w[shrinkSize], page_h[shrinkSize]);
}
static void
***************
*** 550,562 ****
allocatePixmaps()
{
int i;
- XWindowAttributes wa;
- XGetWindowAttributes(DISP, RootWindow(DISP,0), &wa);
for (i = 0; i < Leaves; i++ ) {
pasteUpPixmap[SHRINK_NORMAL][i] =
XCreatePixmap(DISP, win, leaf_w[SHRINK_NORMAL],
! page_h[SHRINK_NORMAL], wa.depth);
if (pasteUpPixmap[SHRINK_NORMAL][i] == 0) {
fprintf(stderr,"[%s] erp! out of PIXMAP memory!\n",
ProgName);
--- 539,550 ----
allocatePixmaps()
{
int i;
for (i = 0; i < Leaves; i++ ) {
pasteUpPixmap[SHRINK_NORMAL][i] =
XCreatePixmap(DISP, win, leaf_w[SHRINK_NORMAL],
! page_h[SHRINK_NORMAL], 1);
!
if (pasteUpPixmap[SHRINK_NORMAL][i] == 0) {
fprintf(stderr,"[%s] erp! out of PIXMAP memory!\n",
ProgName);
***************
*** 569,576 ****
if (pasteFillGC == 0) {
pasteFillGC = XCreateGC(DISP, RootWindow(DISP, defaultScreen),0,NULL);
pasteCopyGC = XCreateGC(DISP, RootWindow(DISP, defaultScreen),0,NULL);
! XCopyGC(DISP, forepix, GCallbits, pasteFillGC);
! XCopyGC(DISP, forepix, GCallbits, pasteCopyGC);
if (reverse) {
XSetForeground(DISP, pasteFillGC, BlackPixel(DISP, defaultScreen));
} else {
--- 557,564 ----
if (pasteFillGC == 0) {
pasteFillGC = XCreateGC(DISP, RootWindow(DISP, defaultScreen),0,NULL);
pasteCopyGC = XCreateGC(DISP, RootWindow(DISP, defaultScreen),0,NULL);
! XCopyGC(DISP, forepix, (1L<<(GCLastBit+1))-1, pasteFillGC);
! XCopyGC(DISP, forepix, (1L<<(GCLastBit+1))-1, pasteCopyGC);
if (reverse) {
XSetForeground(DISP, pasteFillGC, BlackPixel(DISP, defaultScreen));
} else {
***************
*** 591,603 ****
allocateLargePixmaps()
{
int i;
- XWindowAttributes wa;
-
- XGetWindowAttributes(DISP, RootWindow(DISP,0), &wa);
for (i = 0; i < Leaves; i++) {
pasteUpPixmap[SHRINK_LARGE][i] =
XCreatePixmap(DISP, win, leaf_w[SHRINK_LARGE],
! page_h[SHRINK_LARGE], wa.depth);
clearPixmap(i, SHRINK_LARGE);
}
--- 579,588 ----
allocateLargePixmaps()
{
int i;
for (i = 0; i < Leaves; i++) {
pasteUpPixmap[SHRINK_LARGE][i] =
XCreatePixmap(DISP, win, leaf_w[SHRINK_LARGE],
! page_h[SHRINK_LARGE], 1);
clearPixmap(i, SHRINK_LARGE);
}
***************
*** 675,681 ****
displayLeaves()
{
int leaf;
-
XClearWindow(DISP,win);
for (leaf = 0; leaf < Leaves; leaf++) {
XCopyArea(DISP, pasteUpPixmap[SHRINK_NORMAL][leaf], win, forepix,
--- 660,665 ----
***************
*** 683,689 ****
leaf_w[SHRINK_NORMAL], page_h[SHRINK_NORMAL],
leaf_w[SHRINK_NORMAL] * leaf, 0);
}
-
}
static void displayLeaf(leaf)
--- 667,672 ----
***************
*** 958,966 ****
g->g_width, g->g_height,
16, 0);
- image -> bitmap_unit = 8;
- image -> bitmap_bit_order = MSBFirst;
-
shrunkenImages[currentShrink][key][charCode] = image;
}
--- 941,946 ----
***************
*** 976,982 ****
0, 0,
x + currentLeaf * leaf_w[currentShrink], y,
g->g_width, g->g_height);
- XSync(DISP, 0);
}
}
--- 956,961 ----
***************
*** 1056,1069 ****
XDrawLine(DISP, pasteUpPixmap[currentShrink][currentLeaf],
specialGC, xconv(fx), yconv(fy), xconv(tx), yconv(ty));
} else {
- int offset = currentLeaf * leaf_w[currentShrink];
XDrawLine(DISP, win,
! specialGC,
! xconv(fx) + offset, yconv(fy),
! xconv(tx) + offset, yconv(ty));
}
}
/*
* Draw a dot at (x,y)
*/
--- 1035,1046 ----
XDrawLine(DISP, pasteUpPixmap[currentShrink][currentLeaf],
specialGC, xconv(fx), yconv(fy), xconv(tx), yconv(ty));
} else {
XDrawLine(DISP, win,
! specialGC, xconv(fx), yconv(fy), xconv(tx), yconv(ty));
}
}
+
/*
* Draw a dot at (x,y)
*/
***************
*** 1082,1088 ****
#ifdef UNDEF
/*
! * This is the code as it appears in TeXsun. I dont have the time to
* make this do the shading in X-11. If someone does this, please post
* diffs to the net.
*
--- 1059,1065 ----
#ifdef UNDEF
/*
! * This is the code as it appears in TeXsun. I don't have the time to
* make this do the shading in X-11. If someone does this, please post
* diffs to the net.
*
***************
*** 1119,1129 ****
PIX_SRC, shade_pr, 0, 0);
}
else {
- int offset = currentLeaf*leaf_w[currentShrink]
pw_replrop(ptube,
! xconv(last_min_x) + pen_size + offset,
yconv(last_min_y) + pen_size,
! xconv(last_max_x) - xconv(last_min_x) - pen_size + offset,
yconv(last_max_y) - yconv(last_min_y) - pen_size,
PIX_SRC, shade_pr, 0, 0);
}
--- 1096,1106 ----
PIX_SRC, shade_pr, 0, 0);
}
else {
pw_replrop(ptube,
! xconv(last_min_x) + currentLeaf*leaf_w[currentShrink]
! + pen_size,
yconv(last_min_y) + pen_size,
! xconv(last_max_x) - xconv(last_min_x) - pen_size,
yconv(last_max_y) - yconv(last_min_y) - pen_size,
PIX_SRC, shade_pr, 0, 0);
}
***************
*** 1207,1215 ****
continue;
case Expose:
- if ( event.xexpose.count > 0 ) break; /* no more flicker!
- * [eichin:19880328.1332EST]
- */
string = "\f";
nbytes = 1;
break;
--- 1184,1189 ----
--
Dirk Grunwald
Univ. of Illinois
grunwald@flute.cs.uiuc.edu