*** align.c.orig Sat Sep 21 00:54:59 1996 --- align.c Sat Sep 21 00:54:59 1996 *************** *** 30,34 **** #ifndef lint static char RCSid[] = ! "@(#)$Header: /u/halfmoon/home/william/src/tgif/v3/RCS/align.c,v 3.1 1996/05/12 05:17:25 william Exp $"; #endif --- 30,34 ---- #ifndef lint static char RCSid[] = ! "@(#)$Header: /u/halfmoon/home/william/src/tgif/v3/RCS/align.c,v 3.3 1996/09/19 05:20:55 william Exp $"; #endif *************** *** 246,250 **** if (horiAlign != ALIGN_N) { x = (double)(left_dv->x); ! h_dist = (right_dv->x-x)/(num_pts-1); for (ptr=left_dv; ptr->next!=right_dv; ptr=ptr->next) { obj_ptr = ptr->next->obj; --- 246,250 ---- if (horiAlign != ALIGN_N) { x = (double)(left_dv->x); ! h_dist = ((double)(right_dv->x-x))/((double)(num_pts-1)); for (ptr=left_dv; ptr->next!=right_dv; ptr=ptr->next) { obj_ptr = ptr->next->obj; *************** *** 268,272 **** if (vertAlign != ALIGN_N) { y = (double)(top_dv->y); ! v_dist = (bottom_dv->y-y)/(num_pts-1); for (ptr=top_dv; ptr->next!=bottom_dv; ptr=ptr->next) { obj_ptr = ptr->next->obj; --- 268,272 ---- if (vertAlign != ALIGN_N) { y = (double)(top_dv->y); ! v_dist = ((double)(bottom_dv->y-y))/((double)(num_pts-1)); for (ptr=top_dv; ptr->next!=bottom_dv; ptr=ptr->next) { obj_ptr = ptr->next->obj; *************** *** 491,509 **** case ALIGN_L: x = (double)(left_sel->obj->obbox.ltx); ! h_dist = (right_sel->obj->obbox.ltx-x)/(count-1); break; case ALIGN_C: x = (double)(left_sel->obj->obbox.rbx+left_sel->obj->obbox.ltx); ! h_dist = (right_sel->obj->obbox.rbx+right_sel->obj->obbox.ltx-x) / ! (count-1); break; case ALIGN_R: x = (double)(left_sel->obj->obbox.rbx); ! h_dist = (right_sel->obj->obbox.rbx-x)/(count-1); break; case ALIGN_S: x = (double)(left_sel->obj->obbox.rbx); ! h_dist = (right_sel->obj->obbox.rbx-left_sel->obj->obbox.ltx-w) / ! (count-1); break; } --- 491,509 ---- case ALIGN_L: x = (double)(left_sel->obj->obbox.ltx); ! h_dist = ((double)(right_sel->obj->obbox.ltx-x))/((double)(count-1)); break; case ALIGN_C: x = (double)(left_sel->obj->obbox.rbx+left_sel->obj->obbox.ltx); ! h_dist = ((double)(right_sel->obj->obbox.rbx + ! right_sel->obj->obbox.ltx - x)) / ((double)(count-1)); break; case ALIGN_R: x = (double)(left_sel->obj->obbox.rbx); ! h_dist = ((double)(right_sel->obj->obbox.rbx-x))/((double)(count-1)); break; case ALIGN_S: x = (double)(left_sel->obj->obbox.rbx); ! h_dist = ((double)(right_sel->obj->obbox.rbx - ! left_sel->obj->obbox.ltx - w)) / ((double)(count-1)); break; } *************** *** 512,530 **** case ALIGN_T: y = (double)(top_sel->obj->obbox.lty); ! v_dist = (bottom_sel->obj->obbox.lty-y)/(count-1); break; case ALIGN_M: y = (double)(top_sel->obj->obbox.rby+top_sel->obj->obbox.lty); ! v_dist = (bottom_sel->obj->obbox.rby + ! bottom_sel->obj->obbox.lty-y) / (count-1); break; case ALIGN_B: y = (double)(top_sel->obj->obbox.rby); ! v_dist = (bottom_sel->obj->obbox.rby-y)/(count-1); break; case ALIGN_S: y = (double)(top_sel->obj->obbox.rby); ! v_dist = (bottom_sel->obj->obbox.rby-top_sel->obj->obbox.lty-h) / ! (count-1); break; } --- 512,530 ---- case ALIGN_T: y = (double)(top_sel->obj->obbox.lty); ! v_dist = ((double)(bottom_sel->obj->obbox.lty-y))/((double)(count-1)); break; case ALIGN_M: y = (double)(top_sel->obj->obbox.rby+top_sel->obj->obbox.lty); ! v_dist = ((double)(bottom_sel->obj->obbox.rby + ! bottom_sel->obj->obbox.lty - y)) / ((double)(count-1)); break; case ALIGN_B: y = (double)(top_sel->obj->obbox.rby); ! v_dist = ((double)(bottom_sel->obj->obbox.rby-y))/((double)(count-1)); break; case ALIGN_S: y = (double)(top_sel->obj->obbox.rby); ! v_dist = ((double)(bottom_sel->obj->obbox.rby - ! top_sel->obj->obbox.lty - h)) / ((double)(count-1)); break; } *************** *** 537,541 **** case ALIGN_C: dx = round((x + h_dist - sel_ptr->next->obj->obbox.rbx - ! sel_ptr->next->obj->obbox.ltx) / 2.0); break; case ALIGN_R: --- 537,541 ---- case ALIGN_C: dx = round((x + h_dist - sel_ptr->next->obj->obbox.rbx - ! sel_ptr->next->obj->obbox.ltx) / ((double)2.0)); break; case ALIGN_R: *************** *** 556,563 **** } if (horiAlign == ALIGN_S) { ! x = sel_ptr->next->obj->obbox.rbx; ! } else { ! x += h_dist; } next_sel = sel_ptr->next; --- 556,562 ---- } + x += h_dist; if (horiAlign == ALIGN_S) { ! x += sel_ptr->next->obj->obbox.rbx - sel_ptr->next->obj->obbox.ltx; } next_sel = sel_ptr->next; *************** *** 575,579 **** case ALIGN_M: dy = round((y + v_dist - sel_ptr->next->obj->obbox.rby - ! sel_ptr->next->obj->obbox.lty) / 2.0); break; case ALIGN_B: --- 574,578 ---- case ALIGN_M: dy = round((y + v_dist - sel_ptr->next->obj->obbox.rby - ! sel_ptr->next->obj->obbox.lty) / ((double)2.0)); break; case ALIGN_B: *************** *** 594,601 **** } if (vertAlign == ALIGN_S) { ! y = sel_ptr->next->obj->obbox.rby; ! } else { ! y += v_dist; } next_sel = sel_ptr->next; --- 593,599 ---- } + y += v_dist; if (vertAlign == ALIGN_S) { ! y += sel_ptr->next->obj->obbox.rby - sel_ptr->next->obj->obbox.lty; } next_sel = sel_ptr->next; *************** *** 618,622 **** case ALIGN_C: sprintf(gszMsgBox, "Center of objects are %1d pixels apart.", ! round(h_dist/2.0)); Msg(gszMsgBox); break; --- 616,620 ---- case ALIGN_C: sprintf(gszMsgBox, "Center of objects are %1d pixels apart.", ! round(h_dist/((double)2.0))); Msg(gszMsgBox); break; *************** *** 640,644 **** case ALIGN_M: sprintf(gszMsgBox, "Middle of objects are %1d pixels apart.", ! round(v_dist/2.0)); Msg(gszMsgBox); break; --- 638,642 ---- case ALIGN_M: sprintf(gszMsgBox, "Middle of objects are %1d pixels apart.", ! round(v_dist/((double)2.0))); Msg(gszMsgBox); break; *************** *** 674,677 **** --- 672,676 ---- if (obj_ptr->type!=OBJ_TEXT || obj_ptr->detail.t->lines!=1) return FALSE; + if (obj_ptr->ctm != NULL) return FALSE; text_ptr=obj_ptr->detail.t; *** arc.c.orig Sat Sep 21 00:55:01 1996 --- arc.c Sat Sep 21 00:55:01 1996 *************** *** 30,34 **** #ifndef lint static char RCSid[] = ! "@(#)$Header: /u/halfmoon/home/william/src/tgif/v3/RCS/arc.c,v 3.1 1996/05/24 22:37:27 william Exp $"; #endif --- 30,34 ---- #ifndef lint static char RCSid[] = ! "@(#)$Header: /u/halfmoon/home/william/src/tgif/v3/RCS/arc.c,v 3.7 1996/09/14 20:43:03 william Exp $"; #endif *************** *** 72,77 **** #include "xpixmap.e" - extern int atoi ARGS_DECL((char *)); - #define EXPAND_BBOX(bbox,x,y) \ if ((x)<(bbox)->ltx) (bbox)->ltx=(x); if ((y)<(bbox)->lty) (bbox)->lty=(y); \ --- 72,75 ---- *************** *** 1152,1156 **** if (fill != NONEPAT) { ! values.foreground = (fill == NONEPAT) ? myBgPixel : pixel; values.function = GXcopy; values.fill_style = FillOpaqueStippled; --- 1150,1154 ---- if (fill != NONEPAT) { ! values.foreground = GetDrawingBgPixel(fill, pixel); values.function = GXcopy; values.fill_style = FillOpaqueStippled; *************** *** 1168,1172 **** if (pen == NONEPAT) return; ! values.foreground = (pen == NONEPAT) ? myBgPixel : pixel; values.function = GXcopy; values.fill_style = FillOpaqueStippled; --- 1166,1170 ---- if (pen == NONEPAT) return; ! values.foreground = GetDrawingBgPixel(pen, pixel); values.function = GXcopy; values.fill_style = FillOpaqueStippled; *************** *** 1348,1352 **** XDrawArc(mainDisplay, drawWindow, drawGC, ltx, lty, w, h, angle1, angle2); ! PixelToMeasurementUnit(r_buf, w>>1); sprintf(buf, "r=%s\ndegree=%1d", r_buf, abs(angle2>>6)); } else { --- 1346,1350 ---- XDrawArc(mainDisplay, drawWindow, drawGC, ltx, lty, w, h, angle1, angle2); ! PixelToMeasurementUnit(r_buf, ABS_SIZE(w>>1)); sprintf(buf, "r=%s\ndegree=%1d", r_buf, abs(angle2>>6)); } else { *************** *** 1358,1362 **** ((double)dy)*((double)dy)))); w = h = (radius<<1); ! PixelToMeasurementUnit(r_buf, radius); PixelToMeasurementUnit(x_buf, ABS_X(saved_x)); PixelToMeasurementUnit(y_buf, ABS_Y(saved_y)); --- 1356,1360 ---- ((double)dy)*((double)dy)))); w = h = (radius<<1); ! PixelToMeasurementUnit(r_buf, ABS_SIZE(radius)); PixelToMeasurementUnit(x_buf, ABS_X(saved_x)); PixelToMeasurementUnit(y_buf, ABS_Y(saved_y)); *************** *** 1372,1376 **** XDrawArc(mainDisplay, drawWindow, drawGC, ltx, lty, w, h, angle1, angle2); ! PixelToMeasurementUnit(r_buf, w>>1); sprintf(buf, "r=%s\ndegree=%1d", r_buf, abs(angle2>>6)); EndShowMeasureCursor(saved_x, saved_y, buf, TRUE); --- 1370,1374 ---- XDrawArc(mainDisplay, drawWindow, drawGC, ltx, lty, w, h, angle1, angle2); ! PixelToMeasurementUnit(r_buf, ABS_SIZE(w>>1)); sprintf(buf, "r=%s\ndegree=%1d", r_buf, abs(angle2>>6)); EndShowMeasureCursor(saved_x, saved_y, buf, TRUE); *************** *** 1383,1387 **** ((double)dy)*((double)dy)))); w = h = (radius<<1); ! PixelToMeasurementUnit(r_buf, radius); PixelToMeasurementUnit(x_buf, ABS_X(saved_x)); PixelToMeasurementUnit(y_buf, ABS_Y(saved_y)); --- 1381,1385 ---- ((double)dy)*((double)dy)))); w = h = (radius<<1); ! PixelToMeasurementUnit(r_buf, ABS_SIZE(radius)); PixelToMeasurementUnit(x_buf, ABS_X(saved_x)); PixelToMeasurementUnit(y_buf, ABS_Y(saved_y)); *************** *** 1402,1410 **** SetMouseStatus("Set end of arc", "Cancel", "Cancel"); Msg("Please specify the end of the arc."); ! PixelToMeasurementUnit(r_buf, radius); sprintf(buf, "r=%s\ndegree=0", r_buf); ShowMeasureCursor(saved_x, saved_y, buf, TRUE); if (done) { ! PixelToMeasurementUnit(r_buf, radius); sprintf(buf, "r=%s\ndegree=0", r_buf); EndShowMeasureCursor(saved_x, saved_y, buf, TRUE); --- 1400,1408 ---- SetMouseStatus("Set end of arc", "Cancel", "Cancel"); Msg("Please specify the end of the arc."); ! PixelToMeasurementUnit(r_buf, ABS_SIZE(radius)); sprintf(buf, "r=%s\ndegree=0", r_buf); ShowMeasureCursor(saved_x, saved_y, buf, TRUE); if (done) { ! PixelToMeasurementUnit(r_buf, ABS_SIZE(radius)); sprintf(buf, "r=%s\ndegree=0", r_buf); EndShowMeasureCursor(saved_x, saved_y, buf, TRUE); *************** *** 1414,1418 **** } else if (input.type == MotionNotify) { if (drawing_arc) { ! PixelToMeasurementUnit(r_buf, w>>1); sprintf(buf, "r=%s\ndegree=%1d", r_buf, abs(angle2>>6)); ShowMeasureCursor(saved_x, saved_y, buf, TRUE); --- 1412,1416 ---- } else if (input.type == MotionNotify) { if (drawing_arc) { ! PixelToMeasurementUnit(r_buf, ABS_SIZE(w>>1)); sprintf(buf, "r=%s\ndegree=%1d", r_buf, abs(angle2>>6)); ShowMeasureCursor(saved_x, saved_y, buf, TRUE); *************** *** 1422,1426 **** radius = (int)(sqrt((double)(((double)dx)*((double)dx) + ((double)dy)*((double)dy)))); ! PixelToMeasurementUnit(r_buf, radius); PixelToMeasurementUnit(x_buf, ABS_X(saved_x)); PixelToMeasurementUnit(y_buf, ABS_Y(saved_y)); --- 1420,1424 ---- radius = (int)(sqrt((double)(((double)dx)*((double)dx) + ((double)dy)*((double)dy)))); ! PixelToMeasurementUnit(r_buf, ABS_SIZE(radius)); PixelToMeasurementUnit(x_buf, ABS_X(saved_x)); PixelToMeasurementUnit(y_buf, ABS_Y(saved_y)); *************** *** 1469,1473 **** } if (drawing_arc) { ! PixelToMeasurementUnit(r_buf, w>>1); sprintf(buf, "r=%s\ndegree=%1d", r_buf, abs(angle2>>6)); ShowMeasureCursor(saved_x, saved_y, buf, TRUE); --- 1467,1471 ---- } if (drawing_arc) { ! PixelToMeasurementUnit(r_buf, ABS_SIZE(w>>1)); sprintf(buf, "r=%s\ndegree=%1d", r_buf, abs(angle2>>6)); ShowMeasureCursor(saved_x, saved_y, buf, TRUE); *************** *** 1477,1481 **** radius = (int)(sqrt((double)(((double)dx)*((double)dx) + ((double)dy)*((double)dy)))); ! PixelToMeasurementUnit(r_buf, radius); PixelToMeasurementUnit(x_buf, ABS_X(saved_x)); PixelToMeasurementUnit(y_buf, ABS_Y(saved_y)); --- 1475,1479 ---- radius = (int)(sqrt((double)(((double)dx)*((double)dx) + ((double)dy)*((double)dy)))); ! PixelToMeasurementUnit(r_buf, ABS_SIZE(radius)); PixelToMeasurementUnit(x_buf, ABS_X(saved_x)); PixelToMeasurementUnit(y_buf, ABS_Y(saved_y)); *************** *** 1488,1500 **** KeySym key_sym; char s[80]; ! XLookupString(&(input.xkey), s, 80-1, &key_sym, &c_stat); TranslateKeys(s, &key_sym); ! if (s[0] == '\033' && (key_sym & 0xff) == '\033') { XUngrabPointer(mainDisplay, CurrentTime); if (drawing_arc) { XDrawArc(mainDisplay, drawWindow, drawGC, ltx, lty, w, h, angle1, angle2); ! PixelToMeasurementUnit(r_buf, w>>1); sprintf(buf, "r=%s\ndegree=%1d", r_buf, abs(angle2>>6)); } else { --- 1486,1499 ---- KeySym key_sym; char s[80]; + int has_ch; ! has_ch = XLookupString(&(input.xkey), s, sizeof(s), &key_sym, &c_stat); TranslateKeys(s, &key_sym); ! if (CharIsESC(&(input.xkey), s, key_sym, &has_ch)) { XUngrabPointer(mainDisplay, CurrentTime); if (drawing_arc) { XDrawArc(mainDisplay, drawWindow, drawGC, ltx, lty, w, h, angle1, angle2); ! PixelToMeasurementUnit(r_buf, ABS_SIZE(w>>1)); sprintf(buf, "r=%s\ndegree=%1d", r_buf, abs(angle2>>6)); } else { *************** *** 1506,1510 **** ((double)dy)*((double)dy)))); w = h = (radius<<1); ! PixelToMeasurementUnit(r_buf, radius); PixelToMeasurementUnit(x_buf, ABS_X(saved_x)); PixelToMeasurementUnit(y_buf, ABS_Y(saved_y)); --- 1505,1509 ---- ((double)dy)*((double)dy)))); w = h = (radius<<1); ! PixelToMeasurementUnit(r_buf, ABS_SIZE(radius)); PixelToMeasurementUnit(x_buf, ABS_X(saved_x)); PixelToMeasurementUnit(y_buf, ABS_Y(saved_y)); *** auxtext.c.orig Sat Sep 21 00:55:03 1996 --- auxtext.c Sat Sep 21 00:55:03 1996 *************** *** 30,34 **** #ifndef lint static char RCSid[] = ! "@(#)$Header: /u/halfmoon/home/william/src/tgif/v3/RCS/auxtext.c,v 3.1 1996/05/31 19:59:59 william Exp $"; #endif --- 30,34 ---- #ifndef lint static char RCSid[] = ! "@(#)$Header: /u/halfmoon/home/william/src/tgif/v3/RCS/auxtext.c,v 3.4 1996/09/21 04:51:19 william Exp $"; #endif *************** *** 68,72 **** #define XK_KP_Right 0xFF98 #define XK_KP_Down 0xFF99 ! #endif /* ~XK_KP_LEFT */ GC rotateGC = NULL; --- 68,77 ---- #define XK_KP_Right 0xFF98 #define XK_KP_Down 0xFF99 ! #endif /* ~XK_KP_Left */ ! ! #ifndef XK_KP_Delete ! #define XK_KP_Insert 0xFF9E ! #define XK_KP_Delete 0xFF9F ! #endif /* ~XK_KP_Delete */ GC rotateGC = NULL; *************** *** 125,128 **** --- 130,217 ---- } + /* + * int has_ch=XLookupString(key_ev, buf, sizeof(buf), &key_sym, &c_stat); + * + * TranslateKeys(buf, &key_sym); + * + * if (CharIsESC(key_ev, buf, key_sym, &has_ch)) { + * } else if (CharIsCRorLF(key_ev, buf, key_sym, &has_ch)) { + * } else if (CharIsBSorDEL(key_ev, buf, key_sym, &has_ch)) { + * } else if (CharIsTAB(key_ev, buf, key_sym, &has_ch)) { + * } + */ + int CharIsESC(key_ev, psz_buf, key_sym, pn_has_ch) + XKeyEvent *key_ev; + char *psz_buf; + KeySym key_sym; + int *pn_has_ch; + { + if (key_sym == XK_Escape) return TRUE; + if (key_ev != NULL && (key_ev->state & ControlMask) && + key_sym == XK_bracketleft) { + return TRUE; + } + if (pn_has_ch != NULL) { + return ((*pn_has_ch) && *psz_buf == '\033'); + } + return (*psz_buf == '\033'); + } + + int CharIsCRorLF(key_ev, psz_buf, key_sym, pn_has_ch) + XKeyEvent *key_ev; + char *psz_buf; + KeySym key_sym; + int *pn_has_ch; + { + if (key_sym==XK_Return || key_sym==XK_KP_Enter || key_sym==XK_Linefeed) { + return TRUE; + } + if (key_ev != NULL && (key_ev->state & ControlMask) && + (key_sym == XK_m || key_sym == XK_j)) { + return TRUE; + } + if (pn_has_ch != NULL) { + return ((*pn_has_ch) && (*psz_buf == '\r' || *psz_buf == '\n')); + } + return (*psz_buf == '\r' || *psz_buf == '\n'); + } + + int CharIsBSorDEL(key_ev, psz_buf, key_sym, pn_has_ch) + XKeyEvent *key_ev; + char *psz_buf; + KeySym key_sym; + int *pn_has_ch; + { + if (key_sym==XK_Left || key_sym==XK_KP_Left || key_sym==XK_BackSpace || + key_sym==XK_Delete || key_sym==XK_KP_Delete) { + return TRUE; + } + if (key_ev != NULL && (key_ev->state & ControlMask) && (key_sym == XK_h)) { + return TRUE; + } + if (pn_has_ch != NULL) { + return ((*pn_has_ch) && (*psz_buf == '\b' || *psz_buf == '\177')); + } + return (*psz_buf == '\b' || *psz_buf == '\177'); + } + + int CharIsTAB(key_ev, psz_buf, key_sym, pn_has_ch) + XKeyEvent *key_ev; + char *psz_buf; + KeySym key_sym; + int *pn_has_ch; + { + if (key_sym==XK_Tab || key_sym==XK_KP_Tab) { + return TRUE; + } + if (key_ev != NULL && (key_ev->state & ControlMask) && (key_sym == XK_i)) { + return TRUE; + } + if (pn_has_ch != NULL) { + return ((*pn_has_ch) && (*psz_buf == '\t')); + } + return (*psz_buf == '\t'); + } + void TranslateKeys (s, key_sym) char * s; *************** *** 1579,1583 **** if (*s != '\0') { ! values.foreground = myBgPixel; values.function = GXcopy; values.fill_style = FillSolid; --- 1668,1672 ---- if (*s != '\0') { ! values.foreground = GetDrawingBgPixel(INVALID, INVALID); values.function = GXcopy; values.fill_style = FillSolid; *** box.c.orig Sat Sep 21 00:55:04 1996 --- box.c Sat Sep 21 00:55:04 1996 *************** *** 30,34 **** #ifndef lint static char RCSid[] = ! "@(#)$Header: /u/halfmoon/home/william/src/tgif/v3/RCS/box.c,v 3.1 1996/05/24 22:37:24 william Exp $"; #endif --- 30,34 ---- #ifndef lint static char RCSid[] = ! "@(#)$Header: /u/halfmoon/home/william/src/tgif/v3/RCS/box.c,v 3.3 1996/09/14 18:44:49 william Exp $"; #endif *************** *** 270,274 **** if (fill != 0) { ! values.foreground = (fill == 2) ? myBgPixel : pixel; values.function = GXcopy; values.fill_style = FillOpaqueStippled; --- 270,274 ---- if (fill != 0) { ! values.foreground = GetDrawingBgPixel(fill, pixel); values.function = GXcopy; values.fill_style = FillOpaqueStippled; *************** *** 285,289 **** if (pen != 0) { ! values.foreground = (pen == 2) ? myBgPixel : pixel; values.function = GXcopy; values.fill_style = FillOpaqueStippled; --- 285,289 ---- if (pen != 0) { ! values.foreground = GetDrawingBgPixel(pen, pixel); values.function = GXcopy; values.fill_style = FillOpaqueStippled; *************** *** 492,500 **** { KeySym key_sym; ! char s[80]; ! XLookupString (&(input.xkey), s, 80-1, &key_sym, &c_stat); ! TranslateKeys (s, &key_sym); ! if (s[0] == '\033' && (key_sym & 0xff) == '\033') { XUngrabPointer (mainDisplay, CurrentTime); --- 492,501 ---- { KeySym key_sym; ! char s[80]; ! int has_ch; ! has_ch = XLookupString(&(input.xkey), s, sizeof(s), &key_sym, &c_stat); ! TranslateKeys(s, &key_sym); ! if (CharIsESC(&(input.xkey), s, key_sym, &has_ch)) { XUngrabPointer (mainDisplay, CurrentTime); *** choose.c.orig Sat Sep 21 00:55:05 1996 --- choose.c Sat Sep 21 00:55:05 1996 *************** *** 30,34 **** #ifndef lint static char RCSid[] = ! "@(#)$Header: /u/halfmoon/home/william/src/tgif/v3/RCS/choose.c,v 3.0 1996/05/06 16:04:05 william Exp $"; #endif --- 30,34 ---- #ifndef lint static char RCSid[] = ! "@(#)$Header: /u/halfmoon/home/william/src/tgif/v3/RCS/choose.c,v 3.3 1996/09/14 19:42:47 william Exp $"; #endif *************** *** 1321,1330 **** char buf[80]; KeySym key_sym; ! XLookupString(key_ev, buf, sizeof(buf)-1, &key_sym, &c_stat); TranslateKeys(buf, &key_sym); ! if ((buf[0]=='\r' && (key_sym & 0xff)=='\r') || ! (buf[0]=='\n' && (key_sym & 0xff)=='\n')) { if (pni->edit_style == NAMES_SELECT_FILE) { if (!pni->tabbed_from_root) { --- 1321,1332 ---- char buf[80]; KeySym key_sym; + int has_ch; ! has_ch = XLookupString(key_ev, buf, sizeof(buf), &key_sym, &c_stat); TranslateKeys(buf, &key_sym); ! if ((key_ev->state & ControlMask) && key_sym == XK_j) { ! SpecialKeyInNames(key_ev, key_sym, pn_changing, pn_selected_btn_index); ! } else if (CharIsCRorLF(key_ev, buf, key_sym, &has_ch)) { if (pni->edit_style == NAMES_SELECT_FILE) { if (!pni->tabbed_from_root) { *************** *** 1339,1349 **** } } ! } else if (buf[0]=='\033' && (key_sym & 0xff)=='\033') { *pn_changing = FALSE; *pn_selected_btn_index = GetBtnIndexFromBtnId(BUTTON_CANCEL); ! } else if ((buf[0] == '\b' && (key_sym & 0xff)=='\b') || ! (buf[0] == '\b' && (key_sym & 0xff)=='h') || ! (buf[0] == '\177' && (key_sym & 0x7f)=='\177') || ! key_sym==XK_Left || key_sym==XK_KP_Left) { if (pni->edit_style == NAMES_SELECT_FILE && (pni->faking_dot_dot || pni->pop_from_root)) { --- 1341,1348 ---- } } ! } else if (CharIsESC(key_ev, buf, key_sym, &has_ch)) { *pn_changing = FALSE; *pn_selected_btn_index = GetBtnIndexFromBtnId(BUTTON_CANCEL); ! } else if (CharIsBSorDEL(key_ev, buf, key_sym, &has_ch)) { if (pni->edit_style == NAMES_SELECT_FILE && (pni->faking_dot_dot || pni->pop_from_root)) { *************** *** 1353,1357 **** BackSpaceInNames(pn_changing, pn_selected_btn_index); } ! } else if (buf[0] == '\t') { TabInNames(); *pn_changing = FALSE; --- 1352,1356 ---- BackSpaceInNames(pn_changing, pn_selected_btn_index); } ! } else if (CharIsTAB(key_ev, buf, key_sym, &has_ch)) { TabInNames(); *pn_changing = FALSE; *** color.c.orig Sat Sep 21 00:55:07 1996 --- color.c Sat Sep 21 00:55:07 1996 *************** *** 30,34 **** #ifndef lint static char RCSid[] = ! "@(#)$Header: /u/halfmoon/home/william/src/tgif/v3/RCS/color.c,v 3.0 1996/05/06 16:04:13 william Exp $"; #endif --- 30,34 ---- #ifndef lint static char RCSid[] = ! "@(#)$Header: /u/halfmoon/home/william/src/tgif/v3/RCS/color.c,v 3.5 1996/09/14 20:16:25 william Exp $"; #endif *************** *** 82,85 **** --- 82,86 ---- char myFgColorStr[COLORSTRLEN]; char myBgColorStr[COLORSTRLEN]; + char myRubberBandColorStr[COLORSTRLEN]; char * * colorMenuItems = NULL; XColor * tgifColors=NULL; *************** *** 137,140 **** --- 138,165 ---- } + int GetDrawingBgPixel(index, pixel) + int index, pixel; + { + if (index != INVALID && index != BACKPAT) { + return pixel; + } else if (myFileBgColorStr == NULL) { + return myBgPixel; + } else { + return myFileBgPixel; + } + } + + int GetDrawingFgPixel(index, pixel) + int index, pixel; + { + if (index != INVALID && index != BACKPAT) { + return pixel; + } else if (myFileBgColorStr == NULL || myFileFgColorStr == NULL) { + return myFgPixel; + } else { + return myFileFgPixel; + } + } + struct LocalColorRec { char *name, *spec; *************** *** 204,226 **** } ! static ! int MyStrCmp (s1, s2) ! register char * s1, * s2; { ! for ( ; *s1 != '\0' && *s2 != '\0'; s1++, s2++) ! if (*s1 != *s2) ! { ! if (*s1 >= 'A' && *s1 <= 'Z') ! { ! if (*s1-'A'+'a' != *s2) return (*s1 - *s2); ! } ! else if (*s2 >= 'A' && *s2 <= 'Z') ! { ! if (*s2-'A'+'a' != *s1) return (*s1 - *s2); ! } ! else ! return (*s1 - *s2); } ! return (0); } --- 229,242 ---- } ! void RecalcXorPixels() { ! int i, bg_pixel; ! ! bg_pixel = GetDrawingBgPixel(INVALID, INVALID); ! if (xorColorPixels != NULL) { ! for (i = 0; i < maxColors; i++) { ! xorColorPixels[i] = colorPixels[i] ^ bg_pixel; } ! } } *************** *** 531,535 **** for (i = 0; i < maxColors; i++) { ! if (MyStrCmp (fg_color, colorMenuItems[i]) == 0) { defaultColorIndex = i; --- 547,551 ---- for (i = 0; i < maxColors; i++) { ! if (UtilStrICmp(fg_color, colorMenuItems[i]) == 0) { defaultColorIndex = i; *************** *** 698,706 **** fprintf (stderr, "Warning: Unexpected maximum RGB intensity of 0."); ! if ((c_ptr = XGetDefault (mainDisplay,TOOL_NAME,"RubberBandColor"))!=NULL && ! ParseAndAllocColorByName (c_ptr, &color, NULL, NULL, NULL)) ! xorOne = color.pixel^myBgPixel; ! else xorOne = myFgPixel^myBgPixel; xorZero = myBgPixel; --- 714,727 ---- fprintf (stderr, "Warning: Unexpected maximum RGB intensity of 0."); ! *myRubberBandColorStr = '\0'; ! myRubberBandPixel = INVALID; ! if ((c_ptr=XGetDefault(mainDisplay,TOOL_NAME,"RubberBandColor")) != NULL && ! ParseAndAllocColorByName(c_ptr, &color, NULL, NULL, NULL)) { ! strcpy(myRubberBandColorStr, c_ptr); ! myRubberBandPixel = color.pixel; ! xorOne = myRubberBandPixel^myBgPixel; ! } else { xorOne = myFgPixel^myBgPixel; + } xorZero = myBgPixel; *************** *** 1278,1282 **** case SCROLL_UP: if (colorWindowFirstIndex > 0) { ! colorWindowFirstIndex--; RedrawColorWindow(); } --- 1299,1308 ---- case SCROLL_UP: if (colorWindowFirstIndex > 0) { ! if (button_ev->state & (ShiftMask | ControlMask)) { ! colorWindowFirstIndex -= 10; ! if (colorWindowFirstIndex < 0) colorWindowFirstIndex = 0; ! } else { ! colorWindowFirstIndex--; ! } RedrawColorWindow(); } *************** *** 1286,1290 **** case SCROLL_DOWN: if (colorWindowFirstIndex < maxColors-1) { ! colorWindowFirstIndex++; RedrawColorWindow(); } --- 1312,1323 ---- case SCROLL_DOWN: if (colorWindowFirstIndex < maxColors-1) { ! if (button_ev->state & (ShiftMask | ControlMask)) { ! colorWindowFirstIndex += 10; ! if (colorWindowFirstIndex > maxColors-1) { ! colorWindowFirstIndex = maxColors-1; ! } ! } else { ! colorWindowFirstIndex++; ! } RedrawColorWindow(); } *************** *** 1342,1346 **** } ! static struct MouseStatusStrRec colorMouseStatus[] = { { "Shift All Tabs Down", "(none)", "(none)" }, { "Shift Tabs Down", "(none)", "(none)" }, --- 1375,1379 ---- } ! static struct MouseStatusStrRec colorTabMouseStatus[] = { { "Shift All Tabs Down", "(none)", "(none)" }, { "Shift Tabs Down", "(none)", "(none)" }, *************** *** 1352,1355 **** --- 1385,1398 ---- }; + static struct MouseStatusStrRec shiftColorTabMouseStatus[] = { + { "Shift All Tabs Down", "(none)", "(none)" }, + { "Shift 10 Tabs Down", "(none)", "(none)" }, + { "Check All", "(none)", "(none)" }, + { "Uncheck All", "(none)", "(none)" }, + { "Shift 10 Tabs Up", "(none)", "(none)" }, + { "Shift All Tabs Up", "(none)", "(none)" }, + { NULL, NULL, NULL } + }; + static void HandleMotionInColorWindow(motion_ev) *************** *** 1368,1373 **** case SCROLL_DOWN: case SCROLL_DOWNEND: ! SetMouseStatus(colorMouseStatus[index].l, colorMouseStatus[index].m, ! colorMouseStatus[index].r); break; default: --- 1411,1423 ---- case SCROLL_DOWN: case SCROLL_DOWNEND: ! if (motion_ev->state & (ShiftMask | ControlMask)) { ! SetMouseStatus(shiftColorTabMouseStatus[index].l, ! shiftColorTabMouseStatus[index].m, ! shiftColorTabMouseStatus[index].r); ! } else { ! SetMouseStatus(colorTabMouseStatus[index].l, ! colorTabMouseStatus[index].m, ! colorTabMouseStatus[index].r); ! } break; default: *************** *** 1627,1630 **** --- 1677,1709 ---- ShowColor(TRUE); + if (myFileBgColorStr != NULL) { + int saved_my_file_bg_pixel=myFileBgPixel; + int saved_my_file_fg_pixel=myFileFgPixel; + int ok=TRUE; + + if (myFileFgColorStr != NULL && !SetFileFgColor()) { + if (SetFileFgColor()) { + if (saved_my_file_fg_pixel != myFileFgPixel) { + changed = TRUE; + } + } else { + ok = FALSE; + } + } + if (ok) { + if (SetFileBgColor()) { + if (saved_my_file_bg_pixel != myFileBgPixel) { + changed = TRUE; + } + } else { + ok = FALSE; + } + } + if (!ok) { + ClearBgColorInfo(FALSE); + changed = TRUE; + } + } + RecalcXorPixels(); SaveStatusStrings(); *** cutpaste.c.orig Sat Sep 21 00:55:08 1996 --- cutpaste.c Sat Sep 21 00:55:08 1996 *************** *** 30,34 **** #ifndef lint static char RCSid[] = ! "@(#)$Header: /u/halfmoon/home/william/src/tgif/v3/RCS/cutpaste.c,v 3.0 1996/05/06 16:04:23 william Exp $"; #endif --- 30,34 ---- #ifndef lint static char RCSid[] = ! "@(#)$Header: /u/halfmoon/home/william/src/tgif/v3/RCS/cutpaste.c,v 3.1 1996/09/14 20:48:43 william Exp $"; #endif *************** *** 71,77 **** #ifndef _NO_EXTERN extern int write ARGS_DECL((int fd, char *buf, int nbyte)); - extern int unlink ARGS_DECL((char *)); extern int read ARGS_DECL((int fd, char *buf, int nbyte)); ! #endif int copyingToCutBuffer=FALSE; --- 71,76 ---- #ifndef _NO_EXTERN extern int write ARGS_DECL((int fd, char *buf, int nbyte)); extern int read ARGS_DECL((int fd, char *buf, int nbyte)); ! #endif /* !_NO_EXTERN */ int copyingToCutBuffer=FALSE; *** dialog.c.orig Sat Sep 21 00:55:09 1996 --- dialog.c Sat Sep 21 00:55:09 1996 *************** *** 30,34 **** #ifndef lint static char RCSid[] = ! "@(#)$Header: /u/halfmoon/home/william/src/tgif/v3/RCS/dialog.c,v 3.0 1996/05/06 16:04:31 william Exp $"; #endif --- 30,34 ---- #ifndef lint static char RCSid[] = ! "@(#)$Header: /u/halfmoon/home/william/src/tgif/v3/RCS/dialog.c,v 3.2 1996/09/14 18:59:50 william Exp $"; #endif *************** *** 115,122 **** KeySym key_sym; char s[80]; ! int has_ch=XLookupString(key_ev, s, sizeof(s)-1, &key_sym, &c_stat); TranslateKeys(s, &key_sym); ! if (key_sym== XK_Escape || (has_ch && s[0]=='\033')) { XUngrabPointer(mainDisplay, CurrentTime); XSync(mainDisplay, False); --- 115,122 ---- KeySym key_sym; char s[80]; ! int has_ch=XLookupString(key_ev, s, sizeof(s), &key_sym, &c_stat); TranslateKeys(s, &key_sym); ! if (CharIsESC(key_ev, s, key_sym, &has_ch)) { XUngrabPointer(mainDisplay, CurrentTime); XSync(mainDisplay, False); *************** *** 160,167 **** KeySym key_sym; char s[80]; ! int has_ch=XLookupString(key_ev, s, sizeof(s)-1, &key_sym, &c_stat); TranslateKeys(s, &key_sym); ! if (key_sym== XK_Escape || (has_ch && s[0]=='\033')) { XUngrabPointer(mainDisplay, CurrentTime); XSync(mainDisplay, False); --- 160,167 ---- KeySym key_sym; char s[80]; ! int has_ch=XLookupString(key_ev, s, sizeof(s), &key_sym, &c_stat); TranslateKeys(s, &key_sym); ! if (CharIsESC(key_ev, s, key_sym, &has_ch)) { XUngrabPointer(mainDisplay, CurrentTime); XSync(mainDisplay, False); *************** *** 525,528 **** --- 525,545 ---- lead_index++; } + if (still_going && *lead_ptr == '\0') { + if (last_ptr == NULL) { + /* very long word */ + sprintf(dest_ptr, "%s\n", line); + dest_ptr = &dest_ptr[strlen(dest_ptr)]; + max_h += font_height+SPACING; + line = &line[lead_index]; + } else { + /* find a good space */ + *last_ptr = '\0'; + sprintf(dest_ptr, "%s\n", line); + *last_ptr = ' '; + dest_ptr = &dest_ptr[strlen(dest_ptr)]; + max_h += font_height+SPACING; + line = &line[last_index+1]; + } + } } else if (line_len > 0) { sprintf(dest_ptr, "%s\n", line); *************** *** 840,846 **** KeySym key_sym; char buf[80]; ! int i, j; ! XLookupString(key_ev, buf, 80-1, &key_sym, &c_stat); TranslateKeys(buf, &key_sym); if (MBInfoPtr->is_dialog) { --- 857,863 ---- KeySym key_sym; char buf[80]; ! int i, j, has_ch; ! has_ch = XLookupString(key_ev, buf, sizeof(buf), &key_sym, &c_stat); TranslateKeys(buf, &key_sym); if (MBInfoPtr->is_dialog) { *************** *** 853,896 **** myBgPixel); } ! if ((buf[0]=='\033' && (key_sym & 0xff)=='\033') || ! (buf[0]=='\r' && (key_sym & 0xff)=='\r') || ! (buf[0]=='\n' && (key_sym & 0xff)=='\n') || ! (buf[0]=='\b' && (key_sym & 0xff)=='\b') || ! (buf[0]=='\b' && (key_sym & 0xff)=='h' && ! (key_ev->state & ControlMask)) || ! (buf[0]=='\177' && (key_sym & 0x7f)=='\177') || ! ((key_ev->state & ControlMask)==0 && ! key_sym>='\040' && key_sym<='\177')) { if (MBInfoPtr->return_str == NULL) { return INVALID; } ! switch (buf[0]) { ! case '\033': ! if (MBInfoPtr->return_str != NULL) *MBInfoPtr->return_str = '\0'; return INVALID; ! case '\r': ! case '\n': ! return TRUE; ! break; ! case '\177': /* */ ! case '\b': /* */ ! if (MBInfoPtr->index > 0) { ! if (MBInfoPtr->exposed) { ! XClearWindow(mainDisplay, MBInfoPtr->btn_win); ! } ! MBInfoPtr->return_str[--MBInfoPtr->index] = '\0'; ! DisplayInput(MBInfoPtr); } ! break; ! default: ! if (buf[0] >= '\040' && MBInfoPtr->index < 80) { ! if (MBInfoPtr->exposed) { ! XClearWindow(mainDisplay, MBInfoPtr->btn_win); ! } ! MBInfoPtr->return_str[MBInfoPtr->index++] = buf[0]; ! MBInfoPtr->return_str[MBInfoPtr->index] = '\0'; ! DisplayInput(MBInfoPtr); } ! break; } } --- 870,904 ---- myBgPixel); } ! if (CharIsESC(key_ev, buf, key_sym, &has_ch)) { ! if (MBInfoPtr->return_str != NULL) *MBInfoPtr->return_str = '\0'; ! return INVALID; ! } else if (CharIsCRorLF(key_ev, buf, key_sym, &has_ch)) { if (MBInfoPtr->return_str == NULL) { return INVALID; } ! return TRUE; ! } else if (CharIsBSorDEL(key_ev, buf, key_sym, &has_ch)) { ! if (MBInfoPtr->return_str == NULL) { return INVALID; ! } ! if (MBInfoPtr->index > 0) { ! if (MBInfoPtr->exposed) { ! XClearWindow(mainDisplay, MBInfoPtr->btn_win); } ! MBInfoPtr->return_str[--MBInfoPtr->index] = '\0'; ! DisplayInput(MBInfoPtr); ! } ! } else if ((key_ev->state & ControlMask)==0 && ! key_sym>='\040' && key_sym<='\177') { ! if (MBInfoPtr->return_str == NULL) { ! return INVALID; ! } ! if (buf[0] >= '\040' && MBInfoPtr->index < 80) { ! if (MBInfoPtr->exposed) { ! XClearWindow(mainDisplay, MBInfoPtr->btn_win); } ! MBInfoPtr->return_str[MBInfoPtr->index++] = buf[0]; ! MBInfoPtr->return_str[MBInfoPtr->index] = '\0'; ! DisplayInput(MBInfoPtr); } } *************** *** 902,906 **** } else { /* for MsgBox(), return a button id */ ! if (buf[0]=='\033' && (key_sym & 0xff)=='\033') { return (MB_ID_CANCEL); } --- 910,914 ---- } else { /* for MsgBox(), return a button id */ ! if (CharIsESC(key_ev, buf, key_sym, &has_ch)) { return (MB_ID_CANCEL); } *** drawing.c.orig Sat Sep 21 00:55:11 1996 --- drawing.c Sat Sep 21 00:55:11 1996 *************** *** 30,34 **** #ifndef lint static char RCSid[] = ! "@(#)$Header: /u/halfmoon/home/william/src/tgif/v3/RCS/drawing.c,v 3.3 1996/05/30 14:26:48 william Exp $"; #endif --- 30,34 ---- #ifndef lint static char RCSid[] = ! "@(#)$Header: /u/halfmoon/home/william/src/tgif/v3/RCS/drawing.c,v 3.8 1996/09/15 04:45:04 william Exp $"; #endif *************** *** 392,400 **** XKeyEvent *key_ev=(&(p_ev->xkey)); KeySym key_sym; ! char s[80]; ! int has_ch=XLookupString(key_ev, s, sizeof(s)-1, &key_sym, &c_stat); ! TranslateKeys(s, &key_sym); ! if (key_sym== XK_Escape || (has_ch && s[0]=='\033')) { return True; } --- 392,400 ---- XKeyEvent *key_ev=(&(p_ev->xkey)); KeySym key_sym; ! char buf[80]; ! int has_ch=XLookupString(key_ev, buf, sizeof(buf), &key_sym, &c_stat); ! TranslateKeys(buf, &key_sym); ! if (CharIsESC(key_ev, buf, key_sym, &has_ch)) { return True; } *************** *** 725,729 **** } } ! values.foreground = myBgPixel; values.function = GXcopy; values.fill_style = FillSolid; --- 725,729 ---- } } ! values.foreground = GetDrawingBgPixel(INVALID, INVALID); values.function = GXcopy; values.fill_style = FillSolid; *************** *** 834,838 **** } } ! values.foreground = myBgPixel; values.function = GXcopy; values.fill_style = FillSolid; --- 834,838 ---- } } ! values.foreground = GetDrawingBgPixel(INVALID, INVALID); values.function = GXcopy; values.fill_style = FillSolid; *************** *** 1149,1153 **** XGCValues values; ! values.foreground = myBgPixel; values.function = GXcopy; values.fill_style = FillSolid; --- 1149,1153 ---- XGCValues values; ! values.foreground = GetDrawingBgPixel(INVALID, INVALID); values.function = GXcopy; values.fill_style = FillSolid; *************** *** 1188,1193 **** } ! Pixmap DrawAllOnPixmap(LtX, LtY, W, H) ! int *LtX, *LtY, *W, *H; { register struct ObjRec *obj_ptr; --- 1188,1193 ---- } ! Pixmap DrawAllOnPixmap(LtX, LtY, W, H, nRedraw) ! int *LtX, *LtY, *W, *H, nRedraw; { register struct ObjRec *obj_ptr; *************** *** 1233,1237 **** } ! values.foreground = myBgPixel; values.function = GXcopy; values.fill_style = FillSolid; --- 1233,1237 ---- } ! values.foreground = GetDrawingBgPixel(INVALID, INVALID); values.function = GXcopy; values.fill_style = FillSolid; *************** *** 1275,1279 **** skipCrossHair = TRUE; ! RedrawDrawWindow(botObj); skipCrossHair = FALSE; return (pixmap); --- 1275,1279 ---- skipCrossHair = TRUE; ! if (nRedraw) RedrawDrawWindow(botObj); skipCrossHair = FALSE; return (pixmap); *************** *** 1286,1290 **** XGCValues values; ! values.foreground = myBgPixel; values.function = GXcopy; values.fill_style = FillSolid; --- 1286,1290 ---- XGCValues values; ! values.foreground = GetDrawingBgPixel(INVALID, INVALID); values.function = GXcopy; values.fill_style = FillSolid; *************** *** 1310,1314 **** XGCValues values; ! values.foreground = myBgPixel; values.function = GXcopy; values.fill_style = FillSolid; --- 1310,1314 ---- XGCValues values; ! values.foreground = GetDrawingBgPixel(INVALID, INVALID); values.function = GXcopy; values.fill_style = FillSolid; *************** *** 1726,1729 **** --- 1726,1735 ---- } else if (strcmp(name, "SetShapeShadow()") == 0) { SetShapeShadow(); + } else if (strcmp(name, "NoTransform()") == 0) { + NoTransform(); + } else if (strcmp(name, "About()") == 0) { + About(); + } else if (strcmp(name, "Copyright()") == 0) { + Copyright(); } } *************** *** 1743,1760 **** XKeyEvent *key_ev; ! key_ev = &(input->xkey); ! have_ch = XLookupString (key_ev, buf, 80-1, &key_sym, &c_stat); ! TranslateKeys (buf, &key_sym); *args = '\0'; if (key_sym>='\040' && key_sym<='\177' && ! (key_ev->state & (ControlMask | Mod1Mask))) valid_shortcut = TRUE; ! else if (((key_sym>'\040' && key_sym<='\177') || (key_sym>0xa0 && key_sym<=0xff)) && !(key_ev->state & (ControlMask | Mod1Mask)) && ! curChoice != DRAWTEXT) ! { char code; unsigned int state; --- 1749,1765 ---- XKeyEvent *key_ev; ! key_ev = (&(input->xkey)); ! have_ch = XLookupString(key_ev, buf, sizeof(buf), &key_sym, &c_stat); ! TranslateKeys(buf, &key_sym); *args = '\0'; if (key_sym>='\040' && key_sym<='\177' && ! (key_ev->state & (ControlMask | Mod1Mask))) { valid_shortcut = TRUE; ! } else if (((key_sym>'\040' && key_sym<='\177') || (key_sym>0xa0 && key_sym<=0xff)) && !(key_ev->state & (ControlMask | Mod1Mask)) && ! curChoice != DRAWTEXT) { char code; unsigned int state; *************** *** 1776,1782 **** } ! if (valid_shortcut) ! { ! Msg (""); return DoShortCut(name, key_sym, key_ev->state, args); } --- 1781,1786 ---- } ! if (valid_shortcut) { ! Msg(""); return DoShortCut(name, key_sym, key_ev->state, args); } *** edit.c.orig Sat Sep 21 00:55:13 1996 --- edit.c Sat Sep 21 00:55:13 1996 *************** *** 30,34 **** #ifndef lint static char RCSid[] = ! "@(#)$Header: /u/halfmoon/home/william/src/tgif/v3/RCS/edit.c,v 3.3 1996/05/30 14:26:43 william Exp $"; #endif --- 30,34 ---- #ifndef lint static char RCSid[] = ! "@(#)$Header: /u/halfmoon/home/william/src/tgif/v3/RCS/edit.c,v 3.7 1996/09/19 05:29:00 william Exp $"; #endif *************** *** 122,125 **** --- 122,126 ---- "GetBoundingBox ", "SetShapeShadow ", + "NoTransform ", NULL }; *************** *** 161,164 **** --- 162,166 ---- "Get polygonal bounding boxes of selected objects", "Specify the shadow of shapes", + "Get rid of transformations on selected simple objects", NULL }; *************** *** 1605,1612 **** KeySym key_sym; char s[80]; ! XLookupString(&(input.xkey), s, 80-1, &key_sym, &c_stat); TranslateKeys(s, &key_sym); ! if (s[0] == '\033' && (key_sym & 0xff) == '\033') { done = TRUE; *LastMouseX = new_mouse_x; *LastMouseY = new_mouse_y; --- 1607,1615 ---- KeySym key_sym; char s[80]; + int has_ch; ! has_ch = XLookupString(&(input.xkey), s, sizeof(s), &key_sym, &c_stat); TranslateKeys(s, &key_sym); ! if (CharIsESC(&(input.xkey), s, key_sym, &has_ch)) { done = TRUE; *LastMouseX = new_mouse_x; *LastMouseY = new_mouse_y; *************** *** 2027,2034 **** KeySym key_sym; char s[80]; ! XLookupString(&(input.xkey), s, 80-1, &key_sym, &c_stat); TranslateKeys(s, &key_sym); ! if (s[0] == '\033' && (key_sym & 0xff) == '\033') { done = TRUE; *LastMouseX = new_mouse_x; *LastMouseY = new_mouse_y; --- 2030,2038 ---- KeySym key_sym; char s[80]; + int has_ch; ! has_ch = XLookupString(&(input.xkey), s, sizeof(s), &key_sym, &c_stat); TranslateKeys(s, &key_sym); ! if (CharIsESC(&(input.xkey), s, key_sym, &has_ch)) { done = TRUE; *LastMouseX = new_mouse_x; *LastMouseY = new_mouse_y; *************** *** 2956,2960 **** } sprintf(gszMsgBox, "Please specify an angle in degrees: (%s)", ! "positive angle is counter-clock-wise"); Dialog(gszMsgBox, NULL, spec); UtilTrimBlanks(spec); --- 2960,2964 ---- } sprintf(gszMsgBox, "Please specify an angle in degrees: (%s)", ! "positive angle is clock-wise"); Dialog(gszMsgBox, NULL, spec); UtilTrimBlanks(spec); *************** *** 3032,3039 **** --- 3036,3113 ---- selLtX-GRID_ABS_SIZE(1), selLtY-GRID_ABS_SIZE(1), selRbX+GRID_ABS_SIZE(1), selRbY+GRID_ABS_SIZE(1)); + HighLightForward(); SetFileModified(TRUE); justDupped = FALSE; } + void NoTransform() + { + struct SelRec *sel_ptr; + int changed=FALSE, grouped=FALSE; + int ltx=selLtX, lty=selLtY, rbx=selRbX, rby=selRbY; + + if (topSel == NULL) { + MsgBox("No object selected.", TOOL_NAME, INFO_MB); + return; + } + HighLightReverse(); + StartCompositeCmd(); + for (sel_ptr=topSel; sel_ptr != NULL; sel_ptr=sel_ptr->next) { + struct ObjRec *obj_ptr=sel_ptr->obj; + + if (obj_ptr->ctm != NULL) { + if (obj_ptr->type == OBJ_GROUP || obj_ptr->type == OBJ_SYM || + obj_ptr->type == OBJ_ICON) { + grouped = TRUE; + } else { + int cx=((obj_ptr->obbox.ltx+obj_ptr->obbox.rbx)>>1); + int cy=((obj_ptr->obbox.lty+obj_ptr->obbox.rby)>>1); + + changed = TRUE; + PrepareToReplaceAnObj(obj_ptr); + free(obj_ptr->ctm); + obj_ptr->ctm = NULL; + memcpy(&obj_ptr->obbox, &obj_ptr->orig_obbox, sizeof(struct BBRec)); + if (obj_ptr->type == OBJ_TEXT) { + memcpy(&obj_ptr->bbox, &obj_ptr->detail.t->orig_bbox, + sizeof(struct BBRec)); + } + AdjObjSplineVs(obj_ptr); + AdjObjCache(obj_ptr); + AdjObjBBox(obj_ptr); + MoveObj(obj_ptr, + cx-((obj_ptr->obbox.ltx+obj_ptr->obbox.rbx)>>1), + cy-((obj_ptr->obbox.lty+obj_ptr->obbox.rby)>>1)); + RecordReplaceAnObj(obj_ptr); + } + } else if (obj_ptr->type == OBJ_GROUP || obj_ptr->type == OBJ_SYM || + obj_ptr->type == OBJ_ICON) { + grouped = TRUE; + } + } + EndCompositeCmd(); + if (changed) { + UpdSelBBox(); + RedrawAreas(botObj, ltx-GRID_ABS_SIZE(1), lty-GRID_ABS_SIZE(1), + rbx+GRID_ABS_SIZE(1), rby+GRID_ABS_SIZE(1), + selLtX-GRID_ABS_SIZE(1), selLtY-GRID_ABS_SIZE(1), + selRbX+GRID_ABS_SIZE(1), selRbY+GRID_ABS_SIZE(1)); + HighLightForward(); + SetFileModified(TRUE); + justDupped = FALSE; + + if (grouped) { + Msg("Some group/symbol/icon objects are not modified."); + } + } else { + if (grouped) { + sprintf(gszMsgBox, + "Cannot remove transforms for group/symbol/icon objects"); + MsgBox(gszMsgBox, TOOL_NAME, INFO_MB); + } + HighLightForward(); + } + } + /* ----------------------- EditMenu ----------------------- */ *************** *** 3078,3081 **** --- 3152,3156 ---- case EDIT_GET_BBOX: GetBoundingBox (); break; case EDIT_SET_SHAPE_SHADOW: SetShapeShadow (); break; + case EDIT_NO_TRANSFORM: NoTransform (); break; } } *** eps.c.orig Sat Sep 21 00:55:15 1996 --- eps.c Sat Sep 21 00:55:15 1996 *************** *** 30,34 **** #ifndef lint static char RCSid[] = ! "@(#)$Header: /u/halfmoon/home/william/src/tgif/v3/RCS/eps.c,v 3.2 1996/05/24 22:33:56 william Exp $"; #endif --- 30,34 ---- #ifndef lint static char RCSid[] = ! "@(#)$Header: /u/halfmoon/home/william/src/tgif/v3/RCS/eps.c,v 3.3 1996/06/17 21:18:02 william Exp $"; #endif *************** *** 1024,1027 **** --- 1024,1028 ---- bbox_h_psu = ury_psu - lly_psu; + memset(&mtrx, 0, sizeof(struct MtrxRec)); mtrx.image_w = (float)bbox_w_psu; mtrx.image_h = (float)bbox_h_psu; mtrx.w = w_psu; mtrx.h = h_psu; *************** *** 1067,1072 **** int dx, dy, ltx, rby, x, y, tmp_x, tmp_y; ! tmp_dx = dx_psu / scale; ! tmp_dy = dy_psu / scale; dx = round(tmp_dx); dy = round(tmp_dy); --- 1068,1073 ---- int dx, dy, ltx, rby, x, y, tmp_x, tmp_y; ! tmp_dx = dx_psu / mtrx.dump_h_scale; /* tmp_dx = llx_psu */ ! tmp_dy = dy_psu / mtrx.dump_v_scale; /* tmp_dy = lly_psu */ dx = round(tmp_dx); dy = round(tmp_dy); *************** *** 1079,1085 **** tmp_x += ObjPtr->x; tmp_y += ObjPtr->y; ! x_psu = (float)(((float)tmp_x) * scale); y_psu = (float)(((float)psDotsPerInch)*psYOff[pageStyle] - ! (((float)tmp_y) * scale)); } --- 1080,1086 ---- tmp_x += ObjPtr->x; tmp_y += ObjPtr->y; ! x_psu = (float)(((float)tmp_x) * mtrx.dump_h_scale); y_psu = (float)(((float)psDotsPerInch)*psYOff[pageStyle] - ! (((float)tmp_y) * mtrx.dump_v_scale)); } *** exec.c.orig Sat Sep 21 00:55:17 1996 --- exec.c Sat Sep 21 00:55:17 1996 *************** *** 30,34 **** #ifndef lint static char RCSid[] = ! "@(#)$Header: /u/halfmoon/home/william/src/tgif/v3/RCS/exec.c,v 3.3 1996/05/15 19:26:51 william Exp $"; #endif --- 30,34 ---- #ifndef lint static char RCSid[] = ! "@(#)$Header: /u/halfmoon/home/william/src/tgif/v3/RCS/exec.c,v 3.6 1996/09/14 21:35:00 william Exp $"; #endif *************** *** 103,118 **** char *cmdToExecAfterHyperJump=NULL; ! extern char * mktemp ARGS_DECL((char *Template)); ! extern char * getenv ARGS_DECL((char *)); ! #ifndef _NO_EXTERN ! extern int fork ARGS_DECL((void)); ! #if defined(IRIX) || defined(linux) ! extern int system ARGS_DECL((const char *)); ! #else /* ~(defined(IRIX) || defined(linux)) */ ! extern int system ARGS_DECL((char *)); ! #endif /* defined(IRIX) || defined(linux) */ ! extern int unlink ARGS_DECL((char *)); ! #endif ! extern int atoi ARGS_DECL((char *)); #define TOK_INVALID (INVALID) --- 103,108 ---- char *cmdToExecAfterHyperJump=NULL; ! extern char * mktemp ARGS_DECL((const char *Template)); ! extern char * getenv ARGS_DECL((const char *)); #define TOK_INVALID (INVALID) *************** *** 1821,1824 **** --- 1811,1828 ---- if (*file_name == '|') { + if (inHyperSpace && !allowLaunchInHyperSpace) { + XFlush(mainDisplay); + XSync(mainDisplay, False); + sprintf(gszMsgBox, "%s. %s:\n\n %s\n\n(%s.)", + "Launching is not automatic in hyperspace", + "Do you want to execute to following command?", &file_name[1], + "If you are not sure about this, just click on \"NO\""); + if (MsgBox(gszMsgBox, TOOL_NAME, YN_MB) != MB_ID_YES) { + sprintf(gszMsgBox, "%s.", + "Launching in hyperspace aborted at user's request"); + MsgBox(gszMsgBox, TOOL_NAME, INFO_MB); + return FALSE; + } + } sprintf(gszMsgBox, "Executing '%s'...", &file_name[1]); SetStringStatus(gszMsgBox); *************** *** 4510,4514 **** char **argv, *orig_cmd; struct ObjRec *obj_ptr; ! /* call_one_arg_shortcut(shortcut_name); */ { char *shortcut_name=argv[0], *arg=argv[1], **ppsz_buf=NULL, code='\0'; --- 4514,4518 ---- char **argv, *orig_cmd; struct ObjRec *obj_ptr; ! /* call_one_arg_shortcut(shortcut_name,arg); */ { char *shortcut_name=argv[0], *arg=argv[1], **ppsz_buf=NULL, code='\0'; *** file.c.orig Sat Sep 21 00:55:19 1996 --- file.c Sat Sep 21 00:55:20 1996 *************** *** 30,34 **** #ifndef lint static char RCSid[] = ! "@(#)$Header: /u/halfmoon/home/william/src/tgif/v3/RCS/file.c,v 3.3 1996/05/30 14:26:45 william Exp $"; #endif --- 30,34 ---- #ifndef lint static char RCSid[] = ! "@(#)$Header: /u/halfmoon/home/william/src/tgif/v3/RCS/file.c,v 3.9 1996/09/15 14:51:51 william Exp $"; #endif *************** *** 139,143 **** #ifndef _NO_EXTERN extern time_t time ARGS_DECL((time_t *)); - extern int unlink ARGS_DECL((char *)); #ifdef SYSV extern unsigned sleep ARGS_DECL((unsigned)); --- 139,142 ---- *************** *** 199,202 **** --- 198,208 ---- int showPageInEPS=FALSE; + int myFileBgPixel=INVALID, myFileFgPixel=INVALID; + char *myFileBgColorStr=NULL, *myFileFgColorStr=NULL; + XColor myFileBgColor; + int myFileBgPixmapW=(-1), myFileBgPixmapH=(-1); + Pixmap myFileBgPixmap=None; + char *myFileBgGifURL=NULL; + static int importingPageNum=(-1); static char importingPageName[MAXSTRING+1]; *************** *** 1810,1821 **** curPageNum = loadedCurPageNum; ! if (PRTGIF) ! { if (forced_use_gray) useGray = TRUE; ! return (TRUE); } ! if (colorIndex >= maxColors) ! { ! fprintf (stderr, "%s #%1d, use '%s' %s.\n", "In reading state, can not find color", colorIndex, colorMenuItems[defaultColorIndex], "as the current color"); --- 1816,1835 ---- curPageNum = loadedCurPageNum; ! if (PRTGIF) { if (forced_use_gray) useGray = TRUE; ! return TRUE; } ! if (curRotate != 0) { ! switch (curRotate) { ! case ROTATE0: textRotation = 0; break; ! case ROTATE90: textRotation = (90<<6); break; ! case ROTATE180: textRotation = (180<<6); break; ! case ROTATE270: textRotation = (270<<6); break; ! } ! rotationIncrement = (90<<6); ! curRotate = ROTATE0; ! } ! if (colorIndex >= maxColors) { ! fprintf(stderr, "%s #%1d, use '%s' %s.\n", "In reading state, can not find color", colorIndex, colorMenuItems[defaultColorIndex], "as the current color"); *************** *** 2351,2354 **** --- 2365,2410 ---- } + int DownloadRemoteFile(file_name, ppsz_content_type, ppsz_page_spec, + pn_is_html, return_tmp_fname) + char *file_name, **ppsz_content_type, **ppsz_page_spec, *return_tmp_fname; + int *pn_is_html; + /* file_name is assumed to be remote */ + { + int ok=TRUE; + char remote_fname[MAXPATHLENGTH+1], *tmp_remote_fname=NULL; + + if (!FileIsRemote(file_name)) return FALSE; + + *remote_fname = '\0'; + if (ppsz_page_spec != NULL) *ppsz_page_spec = NULL; + if (pn_is_html != NULL) *pn_is_html = FALSE; + if (!FormNewFileName(curDir, file_name, NULL, remote_fname, + ppsz_page_spec)) { + sprintf(gszMsgBox, "Invalid remote file name '%s'.", file_name); + MsgBox(gszMsgBox, TOOL_NAME, INFO_MB); + ok = FALSE; + } else { + int remote_buf_sz=0; + char *remote_buf=NULL; + + SaveStatusStrings(); + ok = LoadRemoteFileInMem(remote_fname, &remote_buf, ppsz_content_type, + &remote_buf_sz, pn_is_html, navigateRefresh); + RestoreStatusStrings(); + if (ok && remote_buf != NULL) { + if ((tmp_remote_fname=WriteRemoteFileIntoTemp(remote_buf, + remote_buf_sz, NULL)) == NULL) { + ok = FALSE; + } + } + if (remote_buf != NULL) FreeRemoteBuf(remote_buf); + } + if (tmp_remote_fname != NULL) { + strcpy(return_tmp_fname, tmp_remote_fname); + FreeRemoteBuf(tmp_remote_fname); + } + return ok; + } + int ImportGivenFile(file_name) char *file_name; *************** *** 2402,2408 **** sprintf(gszMsgBox, "Cannot read tmp file '%s'.", tmp_remote_fname); MsgBox(gszMsgBox, TOOL_NAME, INFO_MB); FreeRemoteBuf(remote_buf); FreeRemoteBuf(tmp_remote_fname); - unlink(tmp_remote_fname); /* temporary problem */ return FALSE; --- 2458,2464 ---- sprintf(gszMsgBox, "Cannot read tmp file '%s'.", tmp_remote_fname); MsgBox(gszMsgBox, TOOL_NAME, INFO_MB); + unlink(tmp_remote_fname); FreeRemoteBuf(remote_buf); FreeRemoteBuf(tmp_remote_fname); /* temporary problem */ return FALSE; *************** *** 2551,2557 **** ShowCursor(); if (file_is_remote) { FreeRemoteBuf(remote_buf); FreeRemoteBuf(tmp_remote_fname); - unlink(tmp_remote_fname); } /* temporary problem -- may be the file will be fixed later */ --- 2607,2613 ---- ShowCursor(); if (file_is_remote) { + unlink(tmp_remote_fname); FreeRemoteBuf(remote_buf); FreeRemoteBuf(tmp_remote_fname); } /* temporary problem -- may be the file will be fixed later */ *************** *** 2561,2567 **** if (!foundGoodStateObject) PasteString(remote_buf); FreeRemoteBuf(remote_buf); FreeRemoteBuf(tmp_remote_fname); - unlink(tmp_remote_fname); } --- 2617,2623 ---- if (!foundGoodStateObject) PasteString(remote_buf); + unlink(tmp_remote_fname); FreeRemoteBuf(remote_buf); FreeRemoteBuf(tmp_remote_fname); } *************** *** 2633,2636 **** --- 2689,2931 ---- } + int ClearBgColorInfo(nRedraw) + int nRedraw; + { + myFileBgPixel = myFileFgPixel = INVALID; + if (myFileFgColorStr != NULL) { + cfree(myFileFgColorStr); + myFileFgColorStr = NULL; + } + if (myFileBgColorStr != NULL) { + cfree(myFileBgColorStr); + myFileBgColorStr = NULL; + XSetWindowBackground(mainDisplay, drawWindow, myBgPixel); + if (nRedraw) { + ClearAndRedrawDrawWindow(); + } + RecalcXorPixels(); + return TRUE; + } + return FALSE; + } + + int ClearBgPixmapInfo(nRedraw) + int nRedraw; + { + int changed=FALSE; + + if (myFileBgGifURL != NULL) { + cfree(myFileBgGifURL); + myFileBgGifURL = NULL; + changed = TRUE; + } + myFileBgPixmapW = myFileBgPixmapH = (-1); + if (myFileBgPixmap != None) { + XFreePixmap(mainDisplay, myFileBgPixmap); + myFileBgPixmap = None; + XSetWindowBackgroundPixmap(mainDisplay, drawWindow, None); + changed = TRUE; + } + if (changed && nRedraw) { + ClearAndRedrawDrawWindow(); + } + return changed; + } + + int SetFileBgColor() + /* assumes myFileBgColorStr is set */ + { + int new_alloc=FALSE; + int index=QuickFindColorIndex(NULL, myFileBgColorStr, &new_alloc, TRUE); + + if (index != INVALID) { + myFileBgPixel = colorPixels[index]; + myFileBgColor.pixel = colorPixels[index]; + myFileBgColor.red = tgifColors[index].red; + myFileBgColor.green = tgifColors[index].green; + myFileBgColor.blue = tgifColors[index].blue; + XSetWindowBackground(mainDisplay, drawWindow, colorPixels[index]); + RecalcXorPixels(); + return TRUE; + } + sprintf(gszMsgBox, + "Can not allocate bg_color '%s', default bgcolor used.", + myFileBgColorStr); + Msg(gszMsgBox); + } + + int SetFileFgColor() + /* assumes myFileFgColorStr is set */ + { + int new_alloc=FALSE; + int index=QuickFindColorIndex(NULL, myFileFgColorStr, &new_alloc, TRUE); + + if (index != INVALID) { + myFileFgPixel = colorPixels[index]; + return TRUE; + } + sprintf(gszMsgBox, + "Can not allocate fg_color '%s', default fgcolor used.", + myFileFgColorStr); + Msg(gszMsgBox); + } + + int SetFileBgPixmap() + { + int ok=TRUE; + char tmp_xpm_fname[MAXPATHLENGTH+1]; + + if (myFileBgGifURL == NULL) return FALSE; + + *tmp_xpm_fname = '\0'; + if (FileIsRemote(myFileBgGifURL)) { + char tmp_gif_fname[MAXPATHLENGTH+1], *content_type=NULL, *page_spec=NULL; + int is_html=FALSE; + + *tmp_gif_fname = '\0'; + if (DownloadRemoteFile(myFileBgGifURL, &content_type, &page_spec, + &is_html, tmp_gif_fname)) { + if (page_spec != NULL || is_html) { + sprintf(gszMsgBox, "Invalid remote file name '%s'.", + myFileBgGifURL); + MsgBox(gszMsgBox, TOOL_NAME, INFO_MB); + ok = FALSE; + } else { + SetWatchCursor(drawWindow); + SetWatchCursor(mainWindow); + SaveStatusStrings(); + ok = ConvertGifToXpm(tmp_gif_fname, tmp_xpm_fname); + RestoreStatusStrings(); + SetDefaultCursor(mainWindow); + ShowCursor(); + } + } else { + ok = FALSE; + } + if (content_type != NULL) FreeRemoteBuf(content_type); + if (page_spec != NULL) free(page_spec); + if (*tmp_gif_fname != '\0') unlink(tmp_gif_fname); + } else { + SetWatchCursor(drawWindow); + SetWatchCursor(mainWindow); + SaveStatusStrings(); + ok = ConvertGifToXpm(myFileBgGifURL, tmp_xpm_fname); + RestoreStatusStrings(); + SetDefaultCursor(mainWindow); + ShowCursor(); + } + if (ok) { + int image_w, image_h, w, h, ncolors=0; + int chars_per_pixel=0, first_pixel_is_bg=FALSE, *pixels=NULL; + char *color_char=NULL, **color_str=NULL, *xpm_data=NULL; + Pixmap pixmap=None, bitmap=None; + XImage *image=NULL, *bitmap_image=NULL; + + SetWatchCursor(drawWindow); + SetWatchCursor(mainWindow); + if (!MyReadPixmapFile(tmp_xpm_fname, &image_w, &image_h, &w, &h, &pixmap, + &image, &bitmap, &bitmap_image, &ncolors, &chars_per_pixel, + &first_pixel_is_bg, &color_char, &color_str, &pixels, + &xpm_data) == BitmapSuccess) { + ok = FALSE; + } + SetDefaultCursor(mainWindow); + ShowCursor(); + unlink(tmp_xpm_fname); + if (bitmap != None) XFreePixmap(mainDisplay, bitmap); + if (image != NULL) XDestroyImage(image); + if (bitmap_image != NULL) XDestroyImage(bitmap_image); + if (color_char != NULL) free(color_char); + if (color_str != NULL) { + int i; + + for (i=0; i < ncolors; i++) free(color_str[i]); + free(color_str); + } + if (ok) { + myFileBgPixmapW = image_w; + myFileBgPixmapH = image_h; + myFileBgPixmap = pixmap; + XSetWindowBackgroundPixmap(mainDisplay, drawWindow, myFileBgPixmap); + } + } + if (!ok) { + sprintf(gszMsgBox, "Can not set background pixmap to '%s'.", + myFileBgGifURL); + MsgBox(gszMsgBox, TOOL_NAME, INFO_MB); + } + return ok; + } + + void CheckFileAttrsInLoad() + { + struct AttrRec *attr_ptr; + int changed=FALSE; + + if ((attr_ptr=FindFileAttrWithName("bg_color=")) != NULL) { + struct AttrRec *fg_attr_ptr; + int ok=TRUE; + + if ((fg_attr_ptr=FindFileAttrWithName("fg_color=")) != NULL) { + if (myFileFgColorStr == NULL || + strcmp(fg_attr_ptr->attr_value.s, myFileFgColorStr) != 0) { + myFileFgColorStr = UtilStrDup(fg_attr_ptr->attr_value.s); + if (myFileFgColorStr == NULL) FailAllocMessage(); + if (!SetFileFgColor()) { + ClearBgColorInfo(TRUE); + ok = FALSE; + } + } + } + if (ok && (myFileBgColorStr == NULL || + strcmp(attr_ptr->attr_value.s, myFileBgColorStr) != 0)) { + myFileBgColorStr = UtilStrDup(attr_ptr->attr_value.s); + if (myFileBgColorStr == NULL) FailAllocMessage(); + if (SetFileBgColor()) { + ClearAndRedrawDrawWindow(); + } else { + ClearBgColorInfo(TRUE); + } + } + return; + } else { + changed = ClearBgColorInfo(FALSE); + } + /* + * Can't really get this to work because of scrolling and zooming. + */ + /* + if ((attr_ptr=FindFileAttrWithName("bg_gif=")) != NULL) { + if (myFileBgGifURL == NULL || + strcmp(attr_ptr->attr_value.s, myFileBgGifURL) != 0) { + if (myFileBgPixmap != None) XFreePixmap(mainDisplay, myFileBgPixmap); + myFileBgPixmap = None; + myFileBgPixmapW = myFileBgPixmapH = (-1); + if (myFileBgGifURL != NULL) cfree(myFileBgGifURL); + myFileBgGifURL = UtilStrDup(attr_ptr->attr_value.s); + if (myFileBgGifURL == NULL) FailAllocMessage(); + if (SetFileBgPixmap()) { + ClearAndRedrawDrawWindow(); + } else { + ClearBgPixmapInfo(TRUE); + } + } + return; + } else { + if (!changed) { + changed = ClearBgPixmapInfo(FALSE); + } else { + ClearBgPixmapInfo(FALSE); + } + } + */ + if (changed) { + if (myFileBgPixmap == None) { + XSetWindowBackground(mainDisplay, drawWindow, myBgPixel); + } + ClearAndRedrawDrawWindow(); + } + } + int LoadFile (FullName, ObjFile) char * FullName; *************** *** 2714,2717 **** --- 3009,3014 ---- } } + fclose(fp); + if (!PRTGIF && colorLayers && needToRedrawColorWindow) { RedrawColorWindow(); *************** *** 2742,2746 **** } - fclose (fp); if (ObjFile == TRUE) { --- 3039,3042 ---- *************** *** 2753,2756 **** --- 3049,3054 ---- curFileDefined = TRUE; + CheckFileAttrsInLoad(); + if (loadedCurPageNum <= 0 || curPage == NULL) { *************** *** 2765,2796 **** GotoPageNum (loadedCurPageNum); ! if (ObjFile != FALSE) ! { ! if (strcmp (saved_cur_dir, curDir) != 0 && DirInSymPath (".")) ! UpdateSymInfo (); ! } ! else ! { ! if (strcmp (saved_cur_dir, curSymDir) != 0 && DirInSymPath (".")) ! UpdateSymInfo (); } ! if (short_name) ! sprintf (gszMsgBox, "Current file is '%s'.", rest); ! else ! sprintf (gszMsgBox, "Current file is '%s'.", file_name); ! Msg (gszMsgBox); ! RedrawTitleWindow (); justDupped = FALSE; ! SetDefaultCursor (mainWindow); ! ShowCursor (); ! CleanUpCmds (); ! UpdateAllSubMenus (); ! if (foundGoodStateObject && !navigatingBackAndForth) CommitNavigate (); ! return (foundGoodStateObject); } --- 3063,3094 ---- GotoPageNum (loadedCurPageNum); ! if (ObjFile != FALSE) { ! if (strcmp(saved_cur_dir, curDir) != 0 && DirInSymPath (".")) { ! UpdateSymInfo(); ! } ! } else { ! if (strcmp(saved_cur_dir, curSymDir) != 0 && DirInSymPath (".")) { ! UpdateSymInfo(); ! } } ! if (short_name) { ! sprintf(gszMsgBox, "Current file is '%s'.", rest); ! } else { ! sprintf(gszMsgBox, "Current file is '%s'.", file_name); ! } ! Msg(gszMsgBox); ! RedrawTitleWindow(); justDupped = FALSE; ! SetDefaultCursor(mainWindow); ! ShowCursor(); ! CleanUpCmds(); ! UpdateAllSubMenus(); ! if (!navigatingBackAndForth) CommitNavigate(); ! return foundGoodStateObject; } *************** *** 3737,3741 **** colorDump = TRUE; } ! DumpXBitmapFile(); colorDump = saved_colordump; SetDefaultCursor(mainWindow); --- 4035,4040 ---- colorDump = TRUE; } ! DumpXBitmapFile(FALSE, dumpOneFilePerPage || ! (dumpOnePageInStackMode && numberFileInPrintOnePage)); colorDump = saved_colordump; SetDefaultCursor(mainWindow); *************** *** 4341,4345 **** colorDump = FALSE; ! DumpXBitmapFile(); colorDump = saved_colordump; --- 4640,4644 ---- colorDump = FALSE; ! DumpXBitmapFile(FALSE, FALSE); colorDump = saved_colordump; *************** *** 4771,4778 **** GotoPageNum(curPageNum); printingFirstPageNum = printingPageNum = printingLastPageNum = curPageNum; ! ResetPSInfo(); ! ok = GenDump (""); ! DoneResetPSInfo(); ! if (ok) GenDump (""); } dumpOnePageInStackMode = FALSE; --- 5070,5082 ---- GotoPageNum(curPageNum); printingFirstPageNum = printingPageNum = printingLastPageNum = curPageNum; ! if (whereToPrint == LATEX_FIG || whereToPrint == PS_FILE || ! whereToPrint == EPSI_FILE) { ! ResetPSInfo(); ! ok = GenDump (""); ! DoneResetPSInfo(); ! if (ok) ok = GenDump (""); ! } else { ! ok = GenDump (""); ! } } dumpOnePageInStackMode = FALSE; *************** *** 4984,4987 **** --- 5288,5294 ---- ClearFileInfo (); ClearAndRedrawDrawWindow (); + + CheckFileAttrsInLoad(); + Msg ("Editing no file."); objId = 0; *************** *** 5431,5434 **** --- 5738,5744 ---- void CleanUpFiles () { + ClearBgColorInfo(FALSE); + ClearBgPixmapInfo(FALSE); + CleanUpComments (); ClearFileInfo (); *** grid.c.orig Sat Sep 21 00:55:22 1996 --- grid.c Sat Sep 21 00:55:22 1996 *************** *** 30,34 **** #ifndef lint static char RCSid[] = ! "@(#)$Header: /u/halfmoon/home/william/src/tgif/v3/RCS/grid.c,v 3.3 1996/05/31 14:46:27 william Exp $"; #endif --- 30,34 ---- #ifndef lint static char RCSid[] = ! "@(#)$Header: /u/halfmoon/home/william/src/tgif/v3/RCS/grid.c,v 3.4 1996/07/08 14:53:16 william Exp $"; #endif *************** *** 1408,1434 **** int X, Y, TrackMenubar; { ! int index, * fore_colors, * valid, * init_rv; ! char * menu_strings[MAXLAYOUTMENUS]; ! char * menu_description[MAXLAYOUTMENUS]; ! ! SetUpLayoutMenuStr (menu_strings, menu_description); ! ! DefaultColorArrays (MAXLAYOUTMENUS, &fore_colors, &valid, &init_rv, NULL); ! ! switch (pageStyle) ! { ! case PORTRAIT: init_rv[LAYOUT_PORT] = TRUE; break; ! case LANDSCAPE: init_rv[LAYOUT_LAND] = TRUE; break; } activeMenu = MENU_LAYOUT; ! index = TextMenuLoop (X, Y, menu_strings, MAXLAYOUTMENUS, ! fore_colors, valid, init_rv, menu_description, SINGLECOLOR, ! TrackMenubar); free(menu_strings[0]); free(menu_description[0]); ! if (index >= 0) LayoutSubMenu (index); ! return (index); } --- 1408,1434 ---- int X, Y, TrackMenubar; { ! int index, *fore_colors, *valid, *init_rv; ! char *menu_strings[MAXLAYOUTMENUS]; ! char *menu_description[MAXLAYOUTMENUS]; ! ! SetUpLayoutMenuStr(menu_strings, menu_description); ! ! DefaultColorArrays(colorDisplay ? MAXLAYOUTMENUS : MAXLAYOUTMENUS-1, ! &fore_colors, &valid, &init_rv, NULL); ! ! switch (pageStyle) { ! case PORTRAIT: init_rv[LAYOUT_PORT] = TRUE; break; ! case LANDSCAPE: init_rv[LAYOUT_LAND] = TRUE; break; } activeMenu = MENU_LAYOUT; ! index = TextMenuLoop(X, Y, menu_strings, ! colorDisplay ? MAXLAYOUTMENUS : MAXLAYOUTMENUS-1, fore_colors, valid, ! init_rv, menu_description, SINGLECOLOR, TrackMenubar); free(menu_strings[0]); free(menu_description[0]); ! if (index >= 0) LayoutSubMenu(index); ! return index; } *** imgproc.c.orig Sat Sep 21 00:55:24 1996 --- imgproc.c Sat Sep 21 00:55:24 1996 *************** *** 30,34 **** #ifndef lint static char RCSid[] = ! "@(#)$Header: /u/halfmoon/home/william/src/tgif/v3/RCS/imgproc.c,v 3.1 1996/05/24 22:37:43 william Exp $"; #endif --- 30,34 ---- #ifndef lint static char RCSid[] = ! "@(#)$Header: /u/halfmoon/home/william/src/tgif/v3/RCS/imgproc.c,v 3.5 1996/09/16 05:31:38 william Exp $"; #endif *************** *** 3540,3544 **** if (PointInRect(x, y, &gBgCombineBBox)) inside_flag |= INSIDE_BG; switch (inside_flag) { ! case 0x0: return GetOrAllocHistogramIndex(&myBgColor); case 0x1: /* INSIDE_FG */ --- 3540,3549 ---- if (PointInRect(x, y, &gBgCombineBBox)) inside_flag |= INSIDE_BG; switch (inside_flag) { ! case 0x0: ! if (myFileBgColorStr == NULL) { ! return GetOrAllocHistogramIndex(&myBgColor); ! } else { ! return GetOrAllocHistogramIndex(&myFileBgColor); ! } case 0x1: /* INSIDE_FG */ *************** *** 3770,3774 **** if (PointInRect(x, y, &gBgCombineBBox)) inside_flag |= INSIDE_BG; switch (inside_flag) { ! case 0x0: return GetOrAllocHistogramIndex(&myBgColor); case 0x1: /* INSIDE_FG */ --- 3775,3784 ---- if (PointInRect(x, y, &gBgCombineBBox)) inside_flag |= INSIDE_BG; switch (inside_flag) { ! case 0x0: ! if (myFileBgColorStr == NULL) { ! return GetOrAllocHistogramIndex(&myBgColor); ! } else { ! return GetOrAllocHistogramIndex(&myFileBgColor); ! } case 0x1: /* INSIDE_FG */ *************** *** 4284,4288 **** SetWatchCursor(drawWindow); SetWatchCursor(mainWindow); ! DumpXBitmapFile(); SetDefaultCursor(mainWindow); ShowCursor(); --- 4294,4298 ---- SetWatchCursor(drawWindow); SetWatchCursor(mainWindow); ! DumpXBitmapFile(gnInImageProc, FALSE); SetDefaultCursor(mainWindow); ShowCursor(); *************** *** 4834,4841 **** KeySym key_sym; char s[80]; ! int has_ch=XLookupString(key_ev, s, sizeof(s)-1, &key_sym, &c_stat); TranslateKeys(s, &key_sym); ! if (key_sym== XK_Escape || (has_ch && s[0]=='\033')) { XUngrabPointer(mainDisplay, CurrentTime); XSync(mainDisplay, False); --- 4844,4851 ---- KeySym key_sym; char s[80]; ! int has_ch=XLookupString(key_ev, s, sizeof(s), &key_sym, &c_stat); TranslateKeys(s, &key_sym); ! if (CharIsESC(key_ev, s, key_sym, &has_ch)) { XUngrabPointer(mainDisplay, CurrentTime); XSync(mainDisplay, False); *************** *** 5724,5736 **** case PDCL_TOO_LARGE: fprintf(stderr, "Values too large in %s*%s: '%s', '%s' is used.\n", ! TOOL_NAME, "DefaultErrorDiffuseLevels", c_ptr, "2 3 2"); break; case PDCL_TOO_SMALL: fprintf(stderr, "Values too small in %s*%s: '%s', '%s' is used.\n", ! TOOL_NAME, "DefaultErrorDiffuseLevels", c_ptr, "2 3 2"); break; case PDCL_BAD_FORMAT: fprintf(stderr, "Invalid %s*%s: '%s', '%s' is used.\n", ! TOOL_NAME, "DefaultErrorDiffuseLevels", c_ptr, "2 3 2"); break; } --- 5734,5746 ---- case PDCL_TOO_LARGE: fprintf(stderr, "Values too large in %s*%s: '%s', '%s' is used.\n", ! TOOL_NAME, "DefaultErrorDiffuseLevels", c_ptr, "2 2 2"); break; case PDCL_TOO_SMALL: fprintf(stderr, "Values too small in %s*%s: '%s', '%s' is used.\n", ! TOOL_NAME, "DefaultErrorDiffuseLevels", c_ptr, "2 2 2"); break; case PDCL_BAD_FORMAT: fprintf(stderr, "Invalid %s*%s: '%s', '%s' is used.\n", ! TOOL_NAME, "DefaultErrorDiffuseLevels", c_ptr, "2 2 2"); break; } *** import.c.orig Sat Sep 21 00:55:26 1996 --- import.c Sat Sep 21 00:55:26 1996 *************** *** 30,34 **** #ifndef lint static char RCSid[] = ! "@(#)$Header: /u/halfmoon/home/william/src/tgif/v3/RCS/import.c,v 3.1 1996/05/12 05:17:23 william Exp $"; #endif --- 30,34 ---- #ifndef lint static char RCSid[] = ! "@(#)$Header: /u/halfmoon/home/william/src/tgif/v3/RCS/import.c,v 3.3 1996/09/14 21:00:38 william Exp $"; #endif *************** *** 101,111 **** #ifndef _NO_EXTERN - extern int unlink ARGS_DECL((char *)); #ifdef SYSV extern unsigned sleep ARGS_DECL((unsigned)); ! #else extern int sleep ARGS_DECL((unsigned)); ! #endif ! #endif typedef struct ImportInfoRec { --- 101,110 ---- #ifndef _NO_EXTERN #ifdef SYSV extern unsigned sleep ARGS_DECL((unsigned)); ! #else /* !SYSV */ extern int sleep ARGS_DECL((unsigned)); ! #endif /* SYSV */ ! #endif /* !_NO_EXTERN */ typedef struct ImportInfoRec { *************** *** 688,692 **** } - static int ConvertGifToXpm(pszGifPath, pszXpmPath) char *pszGifPath, *pszXpmPath; --- 687,690 ---- *** mainloop.c.orig Sat Sep 21 00:55:27 1996 --- mainloop.c Sat Sep 21 00:55:27 1996 *************** *** 30,34 **** #ifndef lint static char RCSid[] = ! "@(#)$Header: /u/halfmoon/home/william/src/tgif/v3/RCS/mainloop.c,v 3.0 1996/05/06 16:05:49 william Exp $"; #endif --- 30,34 ---- #ifndef lint static char RCSid[] = ! "@(#)$Header: /u/halfmoon/home/william/src/tgif/v3/RCS/mainloop.c,v 3.2 1996/09/14 21:00:32 william Exp $"; #endif *************** *** 95,104 **** #ifndef _NO_EXTERN extern int fork ARGS_DECL((void)); ! #if defined(IRIX) || defined(linux) ! extern int system ARGS_DECL((const char *)); ! #else /* ~(defined(IRIX) || defined(linux)) */ ! extern int system ARGS_DECL((char *)); ! #endif /* defined(IRIX) || defined(linux) */ ! #endif #ifdef USE_XAPPLRESDIR --- 95,99 ---- #ifndef _NO_EXTERN extern int fork ARGS_DECL((void)); ! #endif /* !_NO_EXTERN */ #ifdef USE_XAPPLRESDIR *************** *** 715,718 **** --- 710,715 ---- else { + CheckFileAttrsInLoad(); + curFileDefined = TRUE; if (file_is_remote) *** mainmenu.c.orig Sat Sep 21 00:55:28 1996 --- mainmenu.c Sat Sep 21 00:55:28 1996 *************** *** 30,34 **** #ifndef lint static char RCSid[] = ! "@(#)$Header: /u/halfmoon/home/william/src/tgif/v3/RCS/mainmenu.c,v 3.0 1996/05/06 16:05:53 william Exp $"; #endif --- 30,34 ---- #ifndef lint static char RCSid[] = ! "@(#)$Header: /u/halfmoon/home/william/src/tgif/v3/RCS/mainmenu.c,v 3.1 1996/07/08 14:53:17 william Exp $"; #endif *************** *** 612,617 **** case MENU_LAYOUT: SetUpLayoutMenuStr (layout_menu_strings, layout_menu_description); ! DefaultColorArrays (MAXLAYOUTMENUS, &fore_colors, &valid, &init_rv, ! NULL); switch (pageStyle) { --- 612,617 ---- case MENU_LAYOUT: SetUpLayoutMenuStr (layout_menu_strings, layout_menu_description); ! DefaultColorArrays (colorDisplay ? MAXLAYOUTMENUS : MAXLAYOUTMENUS-1, ! &fore_colors, &valid, &init_rv, NULL); switch (pageStyle) { *************** *** 620,624 **** } PaintTextSubMenu (win, subMenuInfo[menu_index].w, layout_menu_strings, ! MAXLAYOUTMENUS, fore_colors, valid, init_rv); free(layout_menu_strings[0]); free(layout_menu_description[0]); --- 620,625 ---- } PaintTextSubMenu (win, subMenuInfo[menu_index].w, layout_menu_strings, ! colorDisplay ? MAXLAYOUTMENUS : MAXLAYOUTMENUS-1, ! fore_colors, valid, init_rv); free(layout_menu_strings[0]); free(layout_menu_description[0]); *** menu.c.orig Sat Sep 21 00:55:30 1996 --- menu.c Sat Sep 21 00:55:30 1996 *************** *** 30,34 **** #ifndef lint static char RCSid[] = ! "@(#)$Header: /u/halfmoon/home/william/src/tgif/v3/RCS/menu.c,v 3.1 1996/05/24 22:37:51 william Exp $"; #endif --- 30,34 ---- #ifndef lint static char RCSid[] = ! "@(#)$Header: /u/halfmoon/home/william/src/tgif/v3/RCS/menu.c,v 3.2 1996/07/08 14:53:19 william Exp $"; #endif *************** *** 1192,1198 **** sprintf (&(s[len]), ".%s", OBJ_FILE_EXT); ! if ((fp = fopen (s, "r")) == NULL) ! { ! fprintf (stderr, "Warning: Can not open the tgif icon file '%s'\n.", s); return; } --- 1192,1197 ---- sprintf (&(s[len]), ".%s", OBJ_FILE_EXT); ! if ((fp=fopen(s, "r")) == NULL) { ! fprintf(stderr, "Warning: Can not open the tgif icon file '%s'.\n", s); return; } *** names.c.orig Sat Sep 21 00:55:32 1996 --- names.c Sat Sep 21 00:55:32 1996 *************** *** 30,34 **** #ifndef lint static char RCSid[] = ! "@(#)$Header: /u/halfmoon/home/william/src/tgif/v3/RCS/names.c,v 3.0 1996/05/06 16:06:13 william Exp $"; #endif --- 30,34 ---- #ifndef lint static char RCSid[] = ! "@(#)$Header: /u/halfmoon/home/william/src/tgif/v3/RCS/names.c,v 3.1 1996/06/17 21:18:18 william Exp $"; #endif *************** *** 1239,1243 **** *SelStr = '\0'; ! if ((dsp_ptr=SymDirListing(&num_entries, &marked_index)) == NULL) { return INVALID; } --- 1239,1243 ---- *SelStr = '\0'; ! if ((dsp_ptr=SymDirListing(&marked_index, &num_entries)) == NULL) { return INVALID; } *** navigate.c.orig Sat Sep 21 00:55:33 1996 --- navigate.c Sat Sep 21 00:55:33 1996 *************** *** 30,34 **** #ifndef lint static char RCSid[] = ! "@(#)$Header: /u/halfmoon/home/william/src/tgif/v3/RCS/navigate.c,v 3.0 1996/05/06 16:06:18 william Exp $"; #endif --- 30,34 ---- #ifndef lint static char RCSid[] = ! "@(#)$Header: /u/halfmoon/home/william/src/tgif/v3/RCS/navigate.c,v 3.1 1996/07/05 14:55:10 william Exp $"; #endif *************** *** 85,88 **** --- 85,89 ---- int autoHyperSpaceOnRemote=TRUE; int allowLaunchInHyperSpace=FALSE; + int navigateRefresh=FALSE; char * navigateMenuStr[] = { *************** *** 501,504 **** --- 502,507 ---- int do_not_save, force_load; { + if (force_load) navigateRefresh = TRUE; + if (FileIsRemote(full_fname)) { char *buf=NULL, *content_type=NULL; *************** *** 531,534 **** --- 534,538 ---- navigatingBackAndForth = FALSE; } + navigateRefresh = FALSE; } *** obj.c.orig Sat Sep 21 00:55:35 1996 --- obj.c Sat Sep 21 00:55:35 1996 *************** *** 30,34 **** #ifndef lint static char RCSid[] = ! "@(#)$Header: /u/halfmoon/home/william/src/tgif/v3/RCS/obj.c,v 3.1 1996/05/12 05:17:21 william Exp $"; #endif --- 30,34 ---- #ifndef lint static char RCSid[] = ! "@(#)$Header: /u/halfmoon/home/william/src/tgif/v3/RCS/obj.c,v 3.2 1996/09/14 17:22:44 william Exp $"; #endif *************** *** 558,562 **** if (!undoingOrRedoing && !dontAutoRetractArrow) { if (AutoRetractedArrowAttr(ObjPtr, FALSE)) { - struct PolyRec *poly_ptr=poly_ptr; int new_x=0, new_y=0; IntPoint *v=NULL; --- 558,561 ---- *** oval.c.orig Sat Sep 21 00:55:37 1996 --- oval.c Sat Sep 21 00:55:37 1996 *************** *** 30,34 **** #ifndef lint static char RCSid[] = ! "@(#)$Header: /u/halfmoon/home/william/src/tgif/v3/RCS/oval.c,v 3.1 1996/05/24 22:37:30 william Exp $"; #endif --- 30,34 ---- #ifndef lint static char RCSid[] = ! "@(#)$Header: /u/halfmoon/home/william/src/tgif/v3/RCS/oval.c,v 3.3 1996/09/14 19:05:28 william Exp $"; #endif *************** *** 379,383 **** if (fill != 0) { ! values.foreground = (fill == 2) ? myBgPixel : pixel; values.function = GXcopy; values.fill_style = FillOpaqueStippled; --- 379,383 ---- if (fill != 0) { ! values.foreground = GetDrawingBgPixel(fill, pixel); values.function = GXcopy; values.fill_style = FillOpaqueStippled; *************** *** 395,399 **** if (pen != 0) { ! values.foreground = (pen == 2) ? myBgPixel : pixel; values.function = GXcopy; values.fill_style = FillOpaqueStippled; --- 395,399 ---- if (pen != 0) { ! values.foreground = GetDrawingBgPixel(pen, pixel); values.function = GXcopy; values.fill_style = FillOpaqueStippled; *************** *** 597,605 **** { KeySym key_sym; ! char s[80]; ! XLookupString (&(input.xkey), s, 80-1, &key_sym, &c_stat); ! TranslateKeys (s, &key_sym); ! if (s[0] == '\033' && (key_sym & 0xff) == '\033') { XUngrabPointer (mainDisplay, CurrentTime); --- 597,606 ---- { KeySym key_sym; ! char s[80]; ! int has_ch; ! has_ch = XLookupString(&(input.xkey), s, sizeof(s), &key_sym, &c_stat); ! TranslateKeys(s, &key_sym); ! if (CharIsESC(&(input.xkey), s, key_sym, &has_ch)) { XUngrabPointer (mainDisplay, CurrentTime); *** page.c.orig Sat Sep 21 00:55:38 1996 --- page.c Sat Sep 21 00:55:38 1996 *************** *** 30,34 **** #ifndef lint static char RCSid[] = ! "@(#)$Header: /u/halfmoon/home/william/src/tgif/v3/RCS/page.c,v 3.0 1996/05/06 16:06:33 william Exp $"; #endif --- 30,34 ---- #ifndef lint static char RCSid[] = ! "@(#)$Header: /u/halfmoon/home/william/src/tgif/v3/RCS/page.c,v 3.3 1996/09/14 20:16:28 william Exp $"; #endif *************** *** 194,198 **** int w=0; ! if (page_ptr == curPage) { w = DrawAHorizontalTab(i, page_ptr, x, y, TRUE, TRUE); } else { --- 194,198 ---- int w=0; ! if (i == curPageNum) { w = DrawAHorizontalTab(i, page_ptr, x, y, TRUE, TRUE); } else { *************** *** 208,212 **** int w=0; ! if (page_ptr == curPage) { w = DrawAHorizontalTab(i, page_ptr, x, y, TRUE, FALSE); break; --- 208,212 ---- int w=0; ! if (i == curPageNum) { w = DrawAHorizontalTab(i, page_ptr, x, y, TRUE, FALSE); break; *************** *** 247,251 **** case SCROLL_LEFT: if (pageWindowFirstIndex > 1) { ! pageWindowFirstIndex--; RedrawPageWindow(); } --- 247,256 ---- case SCROLL_LEFT: if (pageWindowFirstIndex > 1) { ! if (button_ev->state & (ShiftMask | ControlMask)) { ! pageWindowFirstIndex -= 10; ! if (pageWindowFirstIndex < 1) pageWindowFirstIndex = 1; ! } else { ! pageWindowFirstIndex--; ! } RedrawPageWindow(); } *************** *** 253,257 **** case SCROLL_RIGHT: if (pageWindowFirstIndex < lastPageNum) { ! pageWindowFirstIndex++; RedrawPageWindow(); } --- 258,269 ---- case SCROLL_RIGHT: if (pageWindowFirstIndex < lastPageNum) { ! if (button_ev->state & (ShiftMask | ControlMask)) { ! pageWindowFirstIndex += 10; ! if (pageWindowFirstIndex > lastPageNum) { ! pageWindowFirstIndex = lastPageNum; ! } ! } else { ! pageWindowFirstIndex++; ! } RedrawPageWindow(); } *************** *** 295,299 **** } ! static struct MouseStatusStrRec pageMouseStatus[] = { { "Shift All Tabs Right", "Page menu", "(none)" }, { "Shift Tabs Right", "Page menu", "(none)" }, --- 307,311 ---- } ! static struct MouseStatusStrRec pageTabMouseStatus[] = { { "Shift All Tabs Right", "Page menu", "(none)" }, { "Shift Tabs Right", "Page menu", "(none)" }, *************** *** 303,306 **** --- 315,326 ---- }; + static struct MouseStatusStrRec shiftPageTabMouseStatus[] = { + { "Shift All Tabs Right", "Page menu", "(none)" }, + { "Shift 10 Tabs Right", "Page menu", "(none)" }, + { "Shift 10 Tabs Left", "Page menu", "(none)" }, + { "Shift All Tabs Left", "Page menu", "(none)" }, + { NULL, NULL, NULL } + }; + static void HandleMotionInPageWindow(motion_ev) *************** *** 320,325 **** case SCROLL_RIGHT: case SCROLL_RIGHTEND: ! SetMouseStatus(pageMouseStatus[index].l, pageMouseStatus[index].m, ! pageMouseStatus[index].r); break; default: --- 340,352 ---- case SCROLL_RIGHT: case SCROLL_RIGHTEND: ! if (motion_ev->state & (ShiftMask | ControlMask)) { ! SetMouseStatus(shiftPageTabMouseStatus[index].l, ! shiftPageTabMouseStatus[index].m, ! shiftPageTabMouseStatus[index].r); ! } else { ! SetMouseStatus(pageTabMouseStatus[index].l, ! pageTabMouseStatus[index].m, ! pageTabMouseStatus[index].r); ! } break; default: *** poly.c.orig Sat Sep 21 00:55:40 1996 --- poly.c Sat Sep 21 00:55:40 1996 *************** *** 30,34 **** #ifndef lint static char RCSid[] = ! "@(#)$Header: /u/halfmoon/home/william/src/tgif/v3/RCS/poly.c,v 3.2 1996/05/30 14:26:53 william Exp $"; #endif --- 30,34 ---- #ifndef lint static char RCSid[] = ! "@(#)$Header: /u/halfmoon/home/william/src/tgif/v3/RCS/poly.c,v 3.4 1996/09/14 19:09:29 william Exp $"; #endif *************** *** 935,943 **** { KeySym key_sym; ! char s[80]; ! XLookupString (&(input.xkey), s, 80-1, &key_sym, &c_stat); ! TranslateKeys (s, &key_sym); ! if (s[0] == '\033' && (key_sym & 0xff) == '\033') { if (curChoice == FREEHAND) --- 935,944 ---- { KeySym key_sym; ! char s[80]; ! int has_ch; ! has_ch = XLookupString(&(input.xkey), s, sizeof(s), &key_sym, &c_stat); ! TranslateKeys(s, &key_sym); ! if (CharIsESC(&(input.xkey), s, key_sym, &has_ch)) { if (curChoice == FREEHAND) *************** *** 2949,2953 **** if (fill != NONEPAT) { ! values.foreground = (fill == BACKPAT) ? myBgPixel : pixel; values.function = GXcopy; values.fill_style = FillOpaqueStippled; --- 2950,2954 ---- if (fill != NONEPAT) { ! values.foreground = GetDrawingBgPixel(fill, pixel); values.function = GXcopy; values.fill_style = FillOpaqueStippled; *************** *** 2974,2978 **** ah = ZOOMED_SIZE(ah); if (ah == 0) ah = 1; ! values.foreground = (pen == BACKPAT) ? myBgPixel : pixel; values.function = GXcopy; values.fill_style = FillOpaqueStippled; --- 2975,2979 ---- ah = ZOOMED_SIZE(ah); if (ah == 0) ah = 1; ! values.foreground = GetDrawingBgPixel(pen, pixel); values.function = GXcopy; values.fill_style = FillOpaqueStippled; *** polygon.c.orig Sat Sep 21 00:55:42 1996 --- polygon.c Sat Sep 21 00:55:42 1996 *************** *** 30,34 **** #ifndef lint static char RCSid[] = ! "@(#)$Header: /u/halfmoon/home/william/src/tgif/v3/RCS/polygon.c,v 3.1 1996/05/24 22:37:35 william Exp $"; #endif --- 30,34 ---- #ifndef lint static char RCSid[] = ! "@(#)$Header: /u/halfmoon/home/william/src/tgif/v3/RCS/polygon.c,v 3.4 1996/09/14 19:09:29 william Exp $"; #endif *************** *** 345,349 **** if (fill != 0) { ! values.foreground = (fill == BACKPAT) ? myBgPixel : pixel; values.function = GXcopy; values.fill_style = FillOpaqueStippled; --- 345,349 ---- if (fill != 0) { ! values.foreground = GetDrawingBgPixel(fill, pixel); values.function = GXcopy; values.fill_style = FillOpaqueStippled; *************** *** 361,365 **** if (pen == NONEPAT) return; ! values.foreground = (pen == BACKPAT) ? myBgPixel : pixel; values.function = GXcopy; values.fill_style = FillOpaqueStippled; --- 361,365 ---- if (pen == NONEPAT) return; ! values.foreground = GetDrawingBgPixel(pen, pixel); values.function = GXcopy; values.fill_style = FillOpaqueStippled; *************** *** 593,597 **** else if (input.type == KeyPress || input.type == KeyRelease) { ! XLookupString (&(input.xkey), s, 80-1, &key_sym, &c_stat); if (num_pts != 1 && !(curSpline != LT_STRAIGHT && splineRubberband) && (key_sym == XK_Shift_L || key_sym == XK_Shift_R || --- 593,599 ---- else if (input.type == KeyPress || input.type == KeyRelease) { ! int has_ch; ! ! has_ch = XLookupString(&(input.xkey), s, sizeof(s), &key_sym, &c_stat); if (num_pts != 1 && !(curSpline != LT_STRAIGHT && splineRubberband) && (key_sym == XK_Shift_L || key_sym == XK_Shift_R || *************** *** 602,607 **** closed = !closed; } ! else if (input.type == KeyPress && s[0] == '\033' && ! (key_sym & 0xff) == '\033') { PixelToMeasurementUnit(w_buf, ABS_SIZE(abs(grid_x-OrigX))); --- 604,608 ---- closed = !closed; } ! else if (CharIsESC(&(input.xkey), s, key_sym, &has_ch)) { PixelToMeasurementUnit(w_buf, ABS_SIZE(abs(grid_x-OrigX))); *************** *** 1086,1089 **** --- 1087,1091 ---- AddToLastPoint(p_obbox->rbx, p_obbox->lty); AddToLastPoint(p_obbox->ltx, p_obbox->lty); + CreatePolygonObj(5, CREATE_ABSOLUTE); } else { int i; *************** *** 1094,1099 **** obj_ptr->rotated_obbox[i].y); } } - CreatePolygonObj(5, CREATE_RELATIVE); new_sel_ptr = (struct SelRec *)malloc(sizeof(struct SelRec)); --- 1096,1101 ---- obj_ptr->rotated_obbox[i].y); } + CreatePolygonObj(5, CREATE_RELATIVE); } new_sel_ptr = (struct SelRec *)malloc(sizeof(struct SelRec)); *** rcbox.c.orig Sat Sep 21 00:55:44 1996 --- rcbox.c Sat Sep 21 00:55:44 1996 *************** *** 30,34 **** #ifndef lint static char RCSid[] = ! "@(#)$Header: /u/halfmoon/home/william/src/tgif/v3/RCS/rcbox.c,v 3.1 1996/05/24 22:37:39 william Exp $"; #endif --- 30,34 ---- #ifndef lint static char RCSid[] = ! "@(#)$Header: /u/halfmoon/home/william/src/tgif/v3/RCS/rcbox.c,v 3.3 1996/09/14 19:09:29 william Exp $"; #endif *************** *** 455,459 **** if (fill != 0) { ! values.foreground = (fill == 2) ? myBgPixel : pixel; values.function = GXcopy; values.fill_style = FillOpaqueStippled; --- 455,459 ---- if (fill != 0) { ! values.foreground = GetDrawingBgPixel(fill, pixel); values.function = GXcopy; values.fill_style = FillOpaqueStippled; *************** *** 469,473 **** } if (pen != 0) { ! values.foreground = (pen == 2) ? myBgPixel : pixel; values.function = GXcopy; values.fill_style = FillOpaqueStippled; --- 469,473 ---- } if (pen != 0) { ! values.foreground = GetDrawingBgPixel(pen, pixel); values.function = GXcopy; values.fill_style = FillOpaqueStippled; *************** *** 683,691 **** { KeySym key_sym; ! char s[80]; ! XLookupString (&(input.xkey), s, 80-1, &key_sym, &c_stat); TranslateKeys (s, &key_sym); ! if (s[0] == '\033' && (key_sym & 0xff) == '\033') { XUngrabPointer (mainDisplay, CurrentTime); --- 683,692 ---- { KeySym key_sym; ! char s[80]; ! int has_ch; ! has_ch = XLookupString(&(input.xkey), s, sizeof(s), &key_sym, &c_stat); TranslateKeys (s, &key_sym); ! if (CharIsESC(&(input.xkey), s, key_sym, &has_ch)) { XUngrabPointer (mainDisplay, CurrentTime); *** ruler.c.orig Sat Sep 21 00:55:45 1996 --- ruler.c Sat Sep 21 00:55:45 1996 *************** *** 30,34 **** #ifndef lint static char RCSid[] = ! "@(#)$Header: /u/halfmoon/home/william/src/tgif/v3/RCS/ruler.c,v 3.3 1996/05/31 12:45:00 william Exp $"; #endif --- 30,34 ---- #ifndef lint static char RCSid[] = ! "@(#)$Header: /u/halfmoon/home/william/src/tgif/v3/RCS/ruler.c,v 3.4 1996/09/14 21:38:42 william Exp $"; #endif *************** *** 295,298 **** --- 295,299 ---- pos = ZOOMED_SIZE(i); } + pos--; /* since drawWindow has no border */ for ( ; isaved_comments_len = savedCommentsLen; + stk_ptr->file_bg_pixel = myFileBgPixel; + stk_ptr->file_fg_pixel = myFileFgPixel; + stk_ptr->file_bg_color_str = myFileBgColorStr; + stk_ptr->file_fg_color_str = myFileFgColorStr; + stk_ptr->file_bg_gif_url = myFileBgGifURL; + stk_ptr->file_bg_pixmap_w = myFileBgPixmapW; + stk_ptr->file_bg_pixmap_h = myFileBgPixmapH; + stk_ptr->file_bg_pixmap = myFileBgPixmap; + myFileBgPixel = myFileFgPixel = INVALID; + myFileBgColorStr = myFileFgColorStr = myFileBgGifURL = NULL; + myFileBgPixmap = None; + return stk_ptr; } *************** *** 199,202 **** --- 211,217 ---- void ResetFileInfo() { + ClearBgColorInfo(FALSE); + ClearBgPixmapInfo(FALSE); + tgifObj->fattr = NULL; tgifObj->lattr = NULL; *************** *** 299,302 **** --- 314,319 ---- } } + fclose(fp); + if (!PRTGIF && colorLayers && needToRedrawColorWindow) { RedrawColorWindow(); *************** *** 308,312 **** scanLineNum = tmp_linenum; - fclose(fp); SetDefaultCursor(mainWindow); SetDefaultCursor(drawWindow); --- 325,328 ---- *************** *** 320,323 **** --- 336,340 ---- return FALSE; } + CheckFileAttrsInLoad(); strcpy(curFileName, sym_name); *************** *** 343,347 **** RedrawTitleWindow(); UpdateAllSubMenus(); ! if (foundGoodStateObject && !navigatingBackAndForth) CommitNavigate(); return foundGoodStateObject; } --- 360,364 ---- RedrawTitleWindow(); UpdateAllSubMenus(); ! if (!navigatingBackAndForth) CommitNavigate(); return foundGoodStateObject; } *************** *** 442,445 **** --- 459,483 ---- savedComments = StkPtr->saved_comments; savedCommentsLen = StkPtr->saved_comments_len; + + ClearBgColorInfo(FALSE); + ClearBgPixmapInfo(FALSE); + + myFileBgPixel = StkPtr->file_bg_pixel; + myFileFgPixel = StkPtr->file_fg_pixel; + myFileBgColorStr = StkPtr->file_bg_color_str; + myFileFgColorStr = StkPtr->file_fg_color_str; + myFileBgGifURL = StkPtr->file_bg_gif_url; + myFileBgPixmapW = StkPtr->file_bg_pixmap_w; + myFileBgPixmapH = StkPtr->file_bg_pixmap_h; + myFileBgPixmap = StkPtr->file_bg_pixmap; + if (myFileBgColorStr != NULL) { + if (!SetFileBgColor()) { + ClearBgColorInfo(FALSE); + } + } else if (myFileBgGifURL != NULL) { + if (!SetFileBgPixmap()) { + ClearBgColorInfo(FALSE); + } + } } *** text.c.orig Sat Sep 21 00:55:52 1996 --- text.c Sat Sep 21 00:55:52 1996 *************** *** 30,34 **** #ifndef lint static char RCSid[] = ! "@(#)$Header: /u/halfmoon/home/william/src/tgif/v3/RCS/text.c,v 3.3 1996/05/30 14:26:50 william Exp $"; #endif --- 30,34 ---- #ifndef lint static char RCSid[] = ! "@(#)$Header: /u/halfmoon/home/william/src/tgif/v3/RCS/text.c,v 3.9 1996/09/20 13:30:51 william Exp $"; #endif *************** *** 424,430 **** unsigned long xor_pixel; ! if (colorPixels[ColorIndex] == myBgPixel) { ! values.foreground = myFgPixel; xor_pixel = xorOne; } --- 424,430 ---- unsigned long xor_pixel; ! if (colorPixels[ColorIndex] == GetDrawingBgPixel(INVALID, INVALID)) { ! values.foreground = GetDrawingFgPixel(INVALID, INVALID); xor_pixel = xorOne; } *************** *** 475,479 **** else { ! values.foreground = myBgPixel; values.function = GXcopy; values.fill_style = FillSolid; --- 475,479 ---- else { ! values.foreground = GetDrawingBgPixel(INVALID, INVALID); values.function = GXcopy; values.fill_style = FillSolid; *************** *** 486,501 **** } ! void PutTextCursor () { ! XDrawLine (mainDisplay, drawWindow, defaultGC, textCurX, textCurY, textCurX, textCurY+textCursorH); } ! void EraseTextCursor () { ! XSetForeground (mainDisplay, revDefaultGC, myFgPixel^myBgPixel); ! XDrawLine (mainDisplay, drawWindow, revDefaultGC, textCurX, textCurY, textCurX, textCurY+textCursorH); ! XSetForeground (mainDisplay, revDefaultGC, xorOne); } --- 486,505 ---- } ! void PutTextCursor() { ! XSetForeground(mainDisplay, defaultGC, GetDrawingFgPixel(INVALID, INVALID)); ! XDrawLine(mainDisplay, drawWindow, defaultGC, textCurX, textCurY, textCurX, textCurY+textCursorH); + XSetForeground(mainDisplay, defaultGC, myFgPixel); } ! void EraseTextCursor() { ! XSetForeground(mainDisplay, revDefaultGC, ! GetDrawingFgPixel(INVALID, INVALID) ^ ! GetDrawingBgPixel(INVALID, INVALID)); ! XDrawLine(mainDisplay, drawWindow, revDefaultGC, textCurX, textCurY, textCurX, textCurY+textCursorH); ! XSetForeground(mainDisplay, revDefaultGC, xorOne); } *************** *** 970,973 **** --- 974,992 ---- ShowTextRelatedInfo(); editingText = FALSE; + } else if (textRotation != 0) { + int saved_rotation_increment=rotationIncrement; + int saved_ltx=topObj->bbox.ltx, saved_lty=topObj->bbox.lty; + int saved_rbx=topObj->bbox.rbx, saved_rby=topObj->bbox.rby; + + SetRotatePivotByObject(topObj); + rotationIncrement = textRotation; + RotateObjClockWise(topObj); + rotationIncrement = saved_rotation_increment; + RedrawAreas(botObj, saved_ltx-GRID_ABS_SIZE(1), saved_lty-GRID_ABS_SIZE(1), + saved_rbx+GRID_ABS_SIZE(1), saved_rby+GRID_ABS_SIZE(1), + topObj->bbox.ltx-GRID_ABS_SIZE(1), + topObj->bbox.lty-GRID_ABS_SIZE(1), + topObj->bbox.rbx+GRID_ABS_SIZE(1), + topObj->bbox.rby+GRID_ABS_SIZE(1)); } textHighlight = FALSE; *************** *** 1023,1030 **** return; ! if (colorPixels[colorIndex] == myBgPixel) xor_pixel = xorOne; ! else xor_pixel = xorColorPixels[colorIndex]; y = highlightStartY; --- 1042,1050 ---- return; ! if (colorPixels[colorIndex] == GetDrawingBgPixel(INVALID, INVALID)) { xor_pixel = xorOne; ! } else { xor_pixel = xorColorPixels[colorIndex]; + } y = highlightStartY; *************** *** 1966,2010 **** static ! void HandleBS (ColorIndex) ! int ColorIndex; ! { ! register int i, y; ! register char * s; ! struct StrRec * str_ptr; ! struct AttrRec * attr_ptr; ! int len1, len2, need_to_calc_extra_info=FALSE; ! char msg[80]; escPressed = FALSE; ! if (textHighlight) ! { curTextModified = TRUE; ! JustDeleteHighlightedText (&need_to_calc_extra_info); ! if (need_to_calc_extra_info) SetCurStrExtraInfo (); ! RedrawCurText (); ! ! if (curTextObj->detail.t->cached_bitmap != None) ! XFreePixmap (mainDisplay, curTextObj->detail.t->cached_bitmap); curTextObj->detail.t->cached_zoom = 0; curTextObj->detail.t->cached_bitmap = None; ! if (zoomScale != 0 || curTextObj->detail.t->rotate != ROTATE0) ! GetCurStrSizeInfo (); ! ! ScrollTo (textCurX, textCurY); return; } - attr_ptr = curTextObj->detail.t->attr; if (curStr == firstStr && attr_ptr != NULL && attr_ptr->inherited && ! attr_ptr->nameshown && textCurIndex == attr_ptr->attr_name.sz-1) return; ! curTextModified = TRUE; ! if (textCurIndex != 0) ! { ! PaintCurText (drawWindow, drawGC, curStr->dyn_str.s, textJust, textOrigX, textCurY, canvasFontPtr, ColorIndex, penPat, ERASE, INVALID, INVALID); --- 1986,2048 ---- static ! void HandleBS(key_ev, ColorIndex) ! XKeyEvent *key_ev; ! int ColorIndex; ! { ! register int i, y; ! register char *s; ! struct StrRec *str_ptr; ! struct AttrRec *attr_ptr; ! int len1, len2, need_to_calc_extra_info=FALSE; ! int nDeleteNextChar=(key_ev->state & (ControlMask | ShiftMask)); escPressed = FALSE; ! if (textHighlight) { curTextModified = TRUE; ! JustDeleteHighlightedText(&need_to_calc_extra_info); ! if (need_to_calc_extra_info) SetCurStrExtraInfo(); ! RedrawCurText(); + if (curTextObj->detail.t->cached_bitmap != None) { + XFreePixmap(mainDisplay, curTextObj->detail.t->cached_bitmap); + } curTextObj->detail.t->cached_zoom = 0; curTextObj->detail.t->cached_bitmap = None; ! if (zoomScale != 0 || curTextObj->detail.t->rotate != ROTATE0) { ! GetCurStrSizeInfo(); ! } ! ScrollTo(textCurX, textCurY); return; } attr_ptr = curTextObj->detail.t->attr; + if (nDeleteNextChar) { + /* This code should be the same as in HandleRight() */ + int len=curStr->dyn_str.sz-1; + + if (textCurIndex != len) { + textCurIndex++; + SetTextCurX(); + } else { + if (curStr->next != NULL) { + textCurIndex = 0; + curStr = curStr->next; + curStrW = XTextWidth(canvasFontPtr, curStr->dyn_str.s, + curStr->dyn_str.sz-1); + textCurY += textCursorH+textVSpace; + SetTextCurX(); + } else { + return; + } + } + } if (curStr == firstStr && attr_ptr != NULL && attr_ptr->inherited && ! attr_ptr->nameshown && textCurIndex == attr_ptr->attr_name.sz-1) { return; ! } curTextModified = TRUE; ! if (textCurIndex != 0) { ! PaintCurText(drawWindow, drawGC, curStr->dyn_str.s, textJust, textOrigX, textCurY, canvasFontPtr, ColorIndex, penPat, ERASE, INVALID, INVALID); *************** *** 2015,2036 **** curStr->dyn_str.sz--; ! curStrW = XTextWidth (canvasFontPtr, curStr->dyn_str.s, curStr->dyn_str.sz-1); ! PaintCurText (drawWindow, drawGC, curStr->dyn_str.s, textJust, textOrigX, textCurY, canvasFontPtr, ColorIndex, penPat, PAINT_NORM, INVALID, INVALID); ! SetTextCurX (); ! } ! else ! { ! if (curStr->prev != NULL) ! { ! struct StrRec * prev_str; ! char buf[MAXSTRING+1]; y = textCurY - textCursorH - textVSpace; ! for (str_ptr=curStr->prev; str_ptr!=NULL; str_ptr=str_ptr->next) ! { ! PaintCurText (drawWindow, drawGC, str_ptr->dyn_str.s, textJust, textOrigX, y, canvasFontPtr, ColorIndex, penPat, ERASE, INVALID, INVALID); --- 2053,2069 ---- curStr->dyn_str.sz--; ! curStrW = XTextWidth(canvasFontPtr, curStr->dyn_str.s, curStr->dyn_str.sz-1); ! PaintCurText(drawWindow, drawGC, curStr->dyn_str.s, textJust, textOrigX, textCurY, canvasFontPtr, ColorIndex, penPat, PAINT_NORM, INVALID, INVALID); ! SetTextCurX(); ! } else { ! if (curStr->prev != NULL) { ! struct StrRec *prev_str; y = textCurY - textCursorH - textVSpace; ! for (str_ptr=curStr->prev; str_ptr!=NULL; str_ptr=str_ptr->next) { ! PaintCurText(drawWindow, drawGC, str_ptr->dyn_str.s, textJust, textOrigX, y, canvasFontPtr, ColorIndex, penPat, ERASE, INVALID, INVALID); *************** *** 2038,2094 **** } ! if (curStr->next == NULL) lastStr = curStr->prev; ! else curStr->next->prev = curStr->prev; curStr->prev->next = curStr->next; textCurIndex = curStr->prev->dyn_str.sz-1; len1 = curStr->prev->dyn_str.sz-1; len2 = curStr->dyn_str.sz-1; ! if (len1+len2 >= MAXSTRING) ! { ! sprintf (msg, "String length exceeds %1d. %s.", MAXSTRING, "String truncated"); ! Msg (msg); curStr->dyn_str.s[MAXSTRING-len1] = '\0'; curStr->dyn_str.sz = MAXSTRING-len1+1; } ! sprintf (buf, "%s%s", curStr->prev->dyn_str.s, curStr->dyn_str.s); ! DynStrSet (&curStr->prev->dyn_str, buf); prev_str = curStr->prev; ! FreeStr (curStr); curStr = prev_str; ! curStrW = XTextWidth (canvasFontPtr, curStr->dyn_str.s, curStr->dyn_str.sz-1); textCurY -= textCursorH+textVSpace; ! SetTextCurX (); y = textCurY; ! for (str_ptr = curStr; str_ptr != NULL; str_ptr = str_ptr->next) ! { ! PaintCurText (drawWindow, drawGC, str_ptr->dyn_str.s, textJust, textOrigX, y, canvasFontPtr, ColorIndex, penPat, PAINT_NORM, INVALID, INVALID); y += textCursorH+textVSpace; } ! SetCurStrExtraInfo (); ! if (curStrW > textW) ! { textW = curStrW; ! RedrawCurText (); } } } ! if (curTextObj->detail.t->cached_bitmap != None) ! XFreePixmap (mainDisplay, curTextObj->detail.t->cached_bitmap); ! curTextObj->detail.t->cached_zoom = 0; curTextObj->detail.t->cached_bitmap = None; ! if (zoomScale != 0 || curTextObj->detail.t->rotate != ROTATE0) ! GetCurStrSizeInfo (); ! ! ScrollTo (textCurX, textCurY); } --- 2071,2125 ---- } ! if (curStr->next == NULL) { lastStr = curStr->prev; ! } else { curStr->next->prev = curStr->prev; + } curStr->prev->next = curStr->next; textCurIndex = curStr->prev->dyn_str.sz-1; len1 = curStr->prev->dyn_str.sz-1; len2 = curStr->dyn_str.sz-1; ! if (len1+len2 >= MAXSTRING) { ! sprintf(gszMsgBox, "String length exceeds %1d. %s.", MAXSTRING, "String truncated"); ! Msg(gszMsgBox); curStr->dyn_str.s[MAXSTRING-len1] = '\0'; curStr->dyn_str.sz = MAXSTRING-len1+1; } ! sprintf(gszMsgBox, "%s%s", curStr->prev->dyn_str.s, curStr->dyn_str.s); ! DynStrSet(&curStr->prev->dyn_str, gszMsgBox); prev_str = curStr->prev; ! FreeStr(curStr); curStr = prev_str; ! curStrW = XTextWidth(canvasFontPtr, curStr->dyn_str.s, curStr->dyn_str.sz-1); textCurY -= textCursorH+textVSpace; ! SetTextCurX(); y = textCurY; ! for (str_ptr = curStr; str_ptr != NULL; str_ptr = str_ptr->next) { ! PaintCurText(drawWindow, drawGC, str_ptr->dyn_str.s, textJust, textOrigX, y, canvasFontPtr, ColorIndex, penPat, PAINT_NORM, INVALID, INVALID); y += textCursorH+textVSpace; } ! SetCurStrExtraInfo(); ! if (curStrW > textW) { textW = curStrW; ! RedrawCurText(); } } } ! if (curTextObj->detail.t->cached_bitmap != None) { ! XFreePixmap(mainDisplay, curTextObj->detail.t->cached_bitmap); ! } curTextObj->detail.t->cached_zoom = 0; curTextObj->detail.t->cached_bitmap = None; ! if (zoomScale != 0 || curTextObj->detail.t->rotate != ROTATE0) { ! GetCurStrSizeInfo(); ! } ! ScrollTo(textCurX, textCurY); } *************** *** 2396,2428 **** static ! void HandleRight () { ! int len; escPressed = FALSE; ! len = curStr->dyn_str.sz-1; ! if (textCurIndex != len) ! { textCurIndex++; ! SetTextCurX (); ! } ! else ! { ! if (curStr->next != NULL) ! { textCurIndex = 0; curStr = curStr->next; ! curStrW = XTextWidth (canvasFontPtr, curStr->dyn_str.s, curStr->dyn_str.sz-1); textCurY += textCursorH+textVSpace; ! SetTextCurX (); ! } ! else if (!textHighlight) return; } textHighlight = FALSE; ! RedrawCurText (); ! ScrollTo (textCurX, textCurY); } --- 2427,2454 ---- static ! void HandleRight() { ! int len=curStr->dyn_str.sz-1; escPressed = FALSE; ! if (textCurIndex != len) { textCurIndex++; ! SetTextCurX(); ! } else { ! if (curStr->next != NULL) { textCurIndex = 0; curStr = curStr->next; ! curStrW = XTextWidth(canvasFontPtr, curStr->dyn_str.s, curStr->dyn_str.sz-1); textCurY += textCursorH+textVSpace; ! SetTextCurX(); ! } else if (!textHighlight) { return; + } } textHighlight = FALSE; ! RedrawCurText(); ! ScrollTo(textCurX, textCurY); } *************** *** 2481,2485 **** register char * c_ptr; char s[80], * cut_buffer=NULL; ! int xfree_cut_buffer=FALSE, have_ch; XKeyEvent * key_ev; KeySym key_sym; --- 2507,2511 ---- register char * c_ptr; char s[80], * cut_buffer=NULL; ! int xfree_cut_buffer=FALSE, has_ch; XKeyEvent * key_ev; KeySym key_sym; *************** *** 2680,2688 **** } ! key_ev = &(input->xkey); ! have_ch = XLookupString (key_ev, s, 80-1, &key_sym, &c_stat); ! TranslateKeys (s, &key_sym); ! ! if (!((s[0]=='\r' && (key_sym & 0xff)=='\r') || (s[0]=='\n' && (key_sym & 0xff)=='\n') || (s[0]=='\b' && (key_sym & 0xff)=='\b') || --- 2706,2718 ---- } ! key_ev = (&(input->xkey)); ! has_ch = XLookupString(key_ev, s, sizeof(s), &key_sym, &c_stat); ! TranslateKeys(s, &key_sym); ! ! if (CharIsESC(key_ev, s, key_sym, &has_ch) || ! CharIsCRorLF(key_ev, s, key_sym, &has_ch) || ! CharIsBSorDEL(key_ev, s, key_sym, &has_ch) || ! CharIsTAB(key_ev, s, key_sym, &has_ch)) { ! } else if (!((s[0]=='\r' && (key_sym & 0xff)=='\r') || (s[0]=='\n' && (key_sym & 0xff)=='\n') || (s[0]=='\b' && (key_sym & 0xff)=='\b') || *************** *** 2697,2745 **** (s[0]=='\177' && (key_sym & 0x7f)=='\177') || ((s[0]&0xff) && key_sym>='\040' && key_sym<='\177') || ! ((s[0]&0xff) && key_sym>0xa0 && key_sym<=0xff))) return; ! EraseTextCursor (); ! switch (key_sym) ! { ! case XK_Left: HandleLeft (); break; ! case XK_KP_Left: HandleLeft (); break; ! case XK_Up: HandleUp (); break; ! case XK_KP_Up: HandleUp (); break; ! case XK_Right: HandleRight (); break; ! case XK_KP_Right: HandleRight (); break; ! case XK_Down: HandleDown (); break; ! case XK_KP_Down: HandleDown (); break; ! default: ! s[1] = '\0'; ! switch (s[0]) ! { ! case '\r': ! case '\n': HandleCRLF (colorIndex); break; ! ! case '\177': /* */ ! if (escPressed) ! HandleChar (s, colorIndex); ! else ! HandleBS (colorIndex); ! break; ! ! case '\b': HandleBS (colorIndex); break; ! ! case '\033': /* */ ! if (!escPressed) escPressed = TRUE; ! break; ! ! case '\t': HandleTAB (key_ev, colorIndex); break; ! ! default: if (have_ch) HandleChar (s, colorIndex); break; } ! break; } ! if (textCursorShown) ! { ! PutTextCursor (); ! MarkRulers (textCurX, textCurY); ! SetFileModified (TRUE); } } --- 2727,2771 ---- (s[0]=='\177' && (key_sym & 0x7f)=='\177') || ((s[0]&0xff) && key_sym>='\040' && key_sym<='\177') || ! ((s[0]&0xff) && key_sym>0xa0 && key_sym<=0xff))) { return; + } ! EraseTextCursor(); ! switch (key_sym) { ! case XK_Left: HandleLeft(); break; ! case XK_KP_Left: HandleLeft(); break; ! case XK_Up: HandleUp(); break; ! case XK_KP_Up: HandleUp(); break; ! case XK_Right: HandleRight(); break; ! case XK_KP_Right: HandleRight(); break; ! case XK_Down: HandleDown(); break; ! case XK_KP_Down: HandleDown(); break; ! default: ! s[1] = '\0'; ! if (CharIsESC(key_ev, s, key_sym, &has_ch)) { ! if (!escPressed) escPressed = TRUE; ! } else if (CharIsCRorLF(key_ev, s, key_sym, &has_ch)) { ! HandleCRLF(colorIndex); ! } else if (CharIsBSorDEL(key_ev, s, key_sym, &has_ch)) { ! if (has_ch && s[0] == '\177') { ! if (escPressed) { ! HandleChar(s, colorIndex); ! } else { ! HandleBS(key_ev, colorIndex); ! } ! } else { ! HandleBS(key_ev, colorIndex); } ! } else if (CharIsTAB(key_ev, s, key_sym, &has_ch)) { ! HandleTAB(key_ev, colorIndex); ! } else if (has_ch) { ! HandleChar(s, colorIndex); ! } ! break; } ! if (textCursorShown) { ! PutTextCursor(); ! MarkRulers(textCurX, textCurY); ! SetFileModified(TRUE); } } *************** *** 2867,2881 **** } ! void DeleteHighLightedText () { if (!textCursorShown) return; ! EraseTextCursor (); ! HandleBS (colorIndex); ! if (textCursorShown) ! { ! PutTextCursor (); ! MarkRulers (textCurX, textCurY); ! SetFileModified (TRUE); } } --- 2893,2906 ---- } ! void DeleteHighLightedText() { if (!textCursorShown) return; ! EraseTextCursor(); ! HandleBS(NULL, colorIndex); ! if (textCursorShown) { ! PutTextCursor(); ! MarkRulers(textCurX, textCurY); ! SetFileModified(TRUE); } } *************** *** 2969,2974 **** rby = ZOOMED_SIZE(ObjPtr->bbox.rby - 1 - real_y_off); ! values.foreground = (fill == BACKPAT) ? myBgPixel : ! colorPixels[ObjPtr->color]; values.function = GXcopy; values.fill_style = FillOpaqueStippled; --- 2994,2998 ---- rby = ZOOMED_SIZE(ObjPtr->bbox.rby - 1 - real_y_off); ! values.foreground = GetDrawingBgPixel(fill, colorPixels[ObjPtr->color]); values.function = GXcopy; values.fill_style = FillOpaqueStippled; *************** *** 2995,3000 **** h = ZOOMED_SIZE(ObjPtr->bbox.rby-ObjPtr->bbox.lty-2); ! values.foreground = (pen == BACKPAT) ? myBgPixel : ! colorPixels[ObjPtr->color]; values.function = GXcopy; values.fill_style = FillOpaqueStippled; --- 3019,3023 ---- h = ZOOMED_SIZE(ObjPtr->bbox.rby-ObjPtr->bbox.lty-2); ! values.foreground = GetDrawingBgPixel(pen, colorPixels[ObjPtr->color]); values.function = GXcopy; values.fill_style = FillOpaqueStippled; *************** *** 3343,3346 **** --- 3366,3372 ---- } if (fileVersion >= 33 && transformed) { + int do_adjust=FALSE; + int dx=0; + fgets(inbuf, MAXSTRING, FP); scanLineNum++; *************** *** 3366,3369 **** --- 3392,3426 ---- GETVALUE(orig_bbox.rby, "orig_bbox.rby") == INVALID) { return; + } + if ((text_just == JUST_L && real_x != orig_obbox.ltx) || + (text_just == JUST_C && + real_x != ((orig_obbox.ltx+orig_obbox.rbx)>>1)) || + (text_just == JUST_R && real_x != orig_obbox.rbx)) { + } + switch (text_just) { + case JUST_L: + if (real_x != orig_obbox.ltx) { + dx = real_x - orig_obbox.ltx; + do_adjust = TRUE; + } + break; + case JUST_C: + if (real_x != ((orig_obbox.ltx+orig_obbox.rbx)>>1)) { + dx = real_x - ((orig_obbox.ltx+orig_obbox.rbx)>>1); + do_adjust = TRUE; + } + break; + case JUST_R: + if (real_x != orig_obbox.rbx) { + dx = real_x - orig_obbox.rbx; + do_adjust = TRUE; + } + break; + } + if (do_adjust) { + orig_obbox.ltx += dx; + orig_obbox.rbx += dx; + orig_bbox.ltx += dx; + orig_bbox.rbx += dx; } } *** version.c.orig Sat Sep 21 00:55:54 1996 --- version.c Sat Sep 21 00:55:54 1996 *************** *** 30,34 **** #ifndef lint static char RCSid[] = ! "@(#)$Header: /u/halfmoon/home/william/src/tgif/v3/RCS/version.c,v 3.0 1996/05/06 16:12:47 william Exp $"; #endif --- 30,34 ---- #ifndef lint static char RCSid[] = ! "@(#)$Header: /u/halfmoon/home/william/src/tgif/v3/RCS/version.c,v 3.1 1996/09/20 13:31:10 william Exp $"; #endif *************** *** 40,44 **** char *betaString=""; char *copyrightString="Copyright (C) 1990-1996, William Chia-Wei Cheng"; ! char *homePageURL="http://bourbon.cs.ucla.edu:8001/tgif/"; ! char *currentReleaseURL="http://bourbon.cs.ucla.edu:8001/tgif/current.html"; ! char *hyperGraphicsURL="http://bourbon.cs.ucla.edu:8001/tgif/index.obj"; --- 40,44 ---- char *betaString=""; char *copyrightString="Copyright (C) 1990-1996, William Chia-Wei Cheng"; ! char *homePageURL="http://bourbon.cs.columbia.edu:8001/tgif/"; ! char *currentReleaseURL="http://bourbon.cs.columbia.edu:8001/tgif/current.html"; ! char *hyperGraphicsURL="http://bourbon.cs.columbia.edu:8001/tgif/index.obj"; *** xbitmap.c.orig Sat Sep 21 00:55:56 1996 --- xbitmap.c Sat Sep 21 00:55:56 1996 *************** *** 30,34 **** #ifndef lint static char RCSid[] = ! "@(#)$Header: /u/halfmoon/home/william/src/tgif/v3/RCS/xbitmap.c,v 3.3 1996/05/31 14:47:12 william Exp $"; #endif --- 30,34 ---- #ifndef lint static char RCSid[] = ! "@(#)$Header: /u/halfmoon/home/william/src/tgif/v3/RCS/xbitmap.c,v 3.7 1996/09/16 06:25:24 william Exp $"; #endif *************** *** 76,98 **** #include "xpixmap.e" - #ifndef _NO_EXTERN - #ifdef _AIX - extern void srand ARGS_DECL((unsigned int)); - #else /* !_AIX */ - #ifdef __alpha - extern void srand ARGS_DECL((unsigned int)); - #else /* !__alpha */ - #ifdef sgi - extern void srand ARGS_DECL((unsigned int)); - #else - extern int srand ARGS_DECL((int)); - #endif /* sgi */ - #endif /* __alpha */ - #endif /* _AIX */ - extern int unlink ARGS_DECL((char *)); - #endif /* !_NO_EXTERN */ - - extern int rand ARGS_DECL((void)); - #ifdef __hpux extern double atof ARGS_DECL((const char *)); --- 76,79 ---- *************** *** 105,110 **** #endif /* __hpux */ - extern int atoi ARGS_DECL((char *)); - GC xbmGC = NULL; --- 86,89 ---- *************** *** 1330,1337 **** for (i = 0; i < maxColors; i++) colorIndexToDumpIndex[i] = INVALID; ! pixelValue[0] = myBgPixel; ! colorStr[0] = (char*)malloc((strlen(myBgColorStr)+1)*sizeof(char)); ! if (colorStr[0] == NULL) FailAllocMessage(); ! strcpy (colorStr[0], myBgColorStr); numColorsToDump = 1; --- 1309,1322 ---- for (i = 0; i < maxColors; i++) colorIndexToDumpIndex[i] = INVALID; ! pixelValue[0] = GetDrawingBgPixel(INVALID, INVALID); ! if (myFileBgColorStr == NULL) { ! colorStr[0] = (char*)malloc((strlen(myBgColorStr)+1)*sizeof(char)); ! if (colorStr[0] == NULL) FailAllocMessage(); ! strcpy (colorStr[0], myBgColorStr); ! } else { ! colorStr[0] = (char*)malloc((strlen(myFileBgColorStr)+1)*sizeof(char)); ! if (colorStr[0] == NULL) FailAllocMessage(); ! strcpy (colorStr[0], myFileBgColorStr); ! } numColorsToDump = 1; *************** *** 1520,1524 **** if (image_w == 0 || image_h == 0) return; ! if ((pixmap = DrawAllOnPixmap (<x, <y, &w, &h)) == None) return; image = XGetImage (mainDisplay, pixmap, 0, 0, w, h, AllPlanes, ZPixmap); --- 1505,1509 ---- if (image_w == 0 || image_h == 0) return; ! if ((pixmap=DrawAllOnPixmap(<x, <y, &w, &h, TRUE)) == None) return; image = XGetImage (mainDisplay, pixmap, 0, 0, w, h, AllPlanes, ZPixmap); *************** *** 1550,1560 **** fprintf (FP, "%%%%BeginPreview: %1d %1d 1 %1d\n", image_w, image_h, num_lines*image_h); ! for (row=0; row < image_h; row++) ! { ! for (col=0; col < image_w; col++) ! { MapEPSIToPix(col, row, image_w, image_h, w, h, &x, &y); ! if (XGetPixel (image, x, y) != myBgPixel) ! { data[row][col>>3] |= (1<<(7 - (col & 0x7))); } --- 1535,1544 ---- fprintf (FP, "%%%%BeginPreview: %1d %1d 1 %1d\n", image_w, image_h, num_lines*image_h); ! for (row=0; row < image_h; row++) { ! int bg_pixel=GetDrawingBgPixel(INVALID, INVALID); ! ! for (col=0; col < image_w; col++) { MapEPSIToPix(col, row, image_w, image_h, w, h, &x, &y); ! if (XGetPixel(image, x, y) != bg_pixel) { data[row][col>>3] |= (1<<(7 - (col & 0x7))); } *************** *** 1648,1652 **** } if ((c_ptr=XGetDefault(mainDisplay, TOOL_NAME, ! "HtmlFileExtension")) != NULL) { strcpy(htmlFileExtension, c_ptr); } else { --- 1632,1636 ---- } if ((c_ptr=XGetDefault(mainDisplay, TOOL_NAME, ! "HtmlFileExtension")) != NULL && (*c_ptr != '\0')) { strcpy(htmlFileExtension, c_ptr); } else { *************** *** 1662,1666 **** static ! char *ModifyToGenerateHtmlHRef(value_str) char *value_str; /* data in value_str is not supposed to be touched on return */ --- 1646,1650 ---- static ! char *ModifyToGenerateHtmlHref(value_str) char *value_str; /* data in value_str is not supposed to be touched on return */ *************** *** 1712,1716 **** if ((attr_ptr=FindAttrWithName(ObjPtr, "href=", NULL)) != NULL) { ! char *href=ModifyToGenerateHtmlHRef(attr_ptr->attr_value.s); switch (ObjPtr->type) { --- 1696,1700 ---- if ((attr_ptr=FindAttrWithName(ObjPtr, "href=", NULL)) != NULL) { ! char *href=ModifyToGenerateHtmlHref(attr_ptr->attr_value.s); switch (ObjPtr->type) { *************** *** 1914,1918 **** if (attr_ptr != NULL) { ! char *href=ModifyToGenerateHtmlHRef(attr_ptr->attr_value.s); fprintf(map_fp, "attr_value.s); fprintf(map_fp, "obj->type == OBJ_XPM) { /* if ((bitmap_image=XGetImage(mainDisplay, --- 2168,2172 ---- return; } ! if (nInImageProc && topSel != NULL && topSel == botSel && topSel->obj->type == OBJ_XPM) { /* if ((bitmap_image=XGetImage(mainDisplay, *************** *** 2188,2192 **** } writeFileFailed = FALSE; ! if (colorDump && gnInImageProc && gnConvolving) { if (!DoConvolution(fp, image, bitmap_image, w, h)) { fclose(fp); --- 2187,2191 ---- } writeFileFailed = FALSE; ! if (colorDump && nInImageProc && gnConvolving) { if (!DoConvolution(fp, image, bitmap_image, w, h)) { fclose(fp); *************** *** 2238,2242 **** } SaveStatusStrings(); ! if (colorDump && gnInImageProc && gnConvolving) { } else if (colorDump) { BuildXPmBuckets(numColorsToDump, pixelValue, INVALID, NULL); --- 2237,2241 ---- } SaveStatusStrings(); ! if (colorDump && nInImageProc && gnConvolving) { } else if (colorDump) { BuildXPmBuckets(numColorsToDump, pixelValue, INVALID, NULL); *************** *** 2255,2259 **** int transparent=FALSE; ! if (gnInImageProc && bitmap_image != NULL) { if (XGetPixel(bitmap_image,j-left,i-top) != 0) { data = XGetPixel(image,j-left,i-top); --- 2254,2258 ---- int transparent=FALSE; ! if (nInImageProc && bitmap_image != NULL) { if (XGetPixel(bitmap_image,j-left,i-top) != 0) { data = XGetPixel(image,j-left,i-top); *************** *** 2264,2268 **** data = XGetPixel(image,j-left,i-top); } ! if (!gnInImageProc && data == myBgPixel) { switch (charsPerPixel) { case 1: --- 2263,2267 ---- data = XGetPixel(image,j-left,i-top); } ! if (!nInImageProc && data == bg_pixel) { switch (charsPerPixel) { case 1: *************** *** 2367,2371 **** } if (found_index == INVALID) { ! if (pixel == myBgPixel) { gray = (float)1.0; } else { --- 2366,2370 ---- } if (found_index == INVALID) { ! if (pixel == bg_pixel) { gray = (float)1.0; } else { *************** *** 2487,2491 **** } if (found_index == INVALID) { ! if (pixel != myBgPixel) { sprintf(gszMsgBox, "Unrecognized pixel value %1d! 1 used.", pixel); --- 2486,2490 ---- } if (found_index == INVALID) { ! if (pixel != bg_pixel) { sprintf(gszMsgBox, "Unrecognized pixel value %1d! 1 used.", pixel); *************** *** 2501,2505 **** } } ! } else if (XGetPixel (image,j,i) != myBgPixel) { data |= (1<real_type==XBM_XBM && fill != NONEPAT) { ! values.foreground = (fill == 2) ? myBgPixel : colorPixels[ObjPtr->color]; values.function = GXcopy; values.fill_style = FillOpaqueStippled; --- 2929,2933 ---- if (xbm_ptr->real_type==XBM_XBM && fill != NONEPAT) { ! values.foreground = GetDrawingBgPixel(fill, colorPixels[ObjPtr->color]); values.function = GXcopy; values.fill_style = FillOpaqueStippled; *** xpixmap.c.orig Sat Sep 21 00:55:58 1996 --- xpixmap.c Sat Sep 21 00:55:58 1996 *************** *** 30,34 **** #ifndef lint static char RCSid[] = ! "@(#)$Header: /u/halfmoon/home/william/src/tgif/v3/RCS/xpixmap.c,v 3.0 1996/05/06 16:17:23 william Exp $"; #endif --- 30,34 ---- #ifndef lint static char RCSid[] = ! "@(#)$Header: /u/halfmoon/home/william/src/tgif/v3/RCS/xpixmap.c,v 3.2 1996/09/15 00:48:50 william Exp $"; #endif *************** *** 436,439 **** --- 436,440 ---- Pixmap clip_mask; XImage * clip_mask_image; + int bg_pixel=GetDrawingBgPixel(INVALID, INVALID); int abs_offset_x=ObjPtr->obbox.ltx-ObjPtr->x; int abs_offset_y=ObjPtr->obbox.lty-ObjPtr->y; *************** *** 474,478 **** } else { XPutPixel(clip_mask_image, c, r, 0); ! XPutPixel(dest_image, c, r, myBgPixel); } } else { --- 475,479 ---- } else { XPutPixel(clip_mask_image, c, r, 0); ! XPutPixel(dest_image, c, r, bg_pixel); } } else { *************** *** 1426,1430 **** XGCValues values; ! values.foreground = myBgPixel; values.function = GXcopy;; values.fill_style = FillSolid; --- 1427,1431 ---- XGCValues values; ! values.foreground = GetDrawingBgPixel(INVALID, INVALID); values.function = GXcopy;; values.fill_style = FillSolid; *************** *** 1445,1449 **** XFillRectangle (mainDisplay, win, drawGC, x, y, w, h); ! XSetForeground (mainDisplay, drawGC, myFgPixel); if (ctm != NULL) XDrawLines (mainDisplay, win, drawGC, vs, 5, CoordModeOrigin); --- 1446,1450 ---- XFillRectangle (mainDisplay, win, drawGC, x, y, w, h); ! XSetForeground (mainDisplay, drawGC, GetDrawingFgPixel(INVALID, INVALID)); if (ctm != NULL) XDrawLines (mainDisplay, win, drawGC, vs, 5, CoordModeOrigin); *************** *** 1773,1777 **** colorPixels[maxColors] = screen_def.pixel; ! xorColorPixels[maxColors] = screen_def.pixel ^ myBgPixel; colorLayerOn[maxColors] = TRUE; strcpy(colorMenuItems[maxColors], s); --- 1774,1779 ---- colorPixels[maxColors] = screen_def.pixel; ! xorColorPixels[maxColors] = ! screen_def.pixel ^ GetDrawingBgPixel(INVALID, INVALID); colorLayerOn[maxColors] = TRUE; strcpy(colorMenuItems[maxColors], s); *************** *** 2075,2079 **** int i, len, format, found=FALSE, index, saved_max_colors, xpm_version=1; int x, y, w, h, chars_per_pixel, new_alloc, image_w=0, image_h=0; ! int *pixels_used=NULL; float mag; --- 2077,2081 ---- int i, len, format, found=FALSE, index, saved_max_colors, xpm_version=1; int x, y, w, h, chars_per_pixel, new_alloc, image_w=0, image_h=0; ! int *pixels_used=NULL, bg_pixel; float mag; *************** *** 2197,2200 **** --- 2199,2203 ---- *first_pixel_is_bg_return = FALSE; + bg_pixel = GetDrawingBgPixel(INVALID, INVALID); if (xpm_version == 1) { for (i = 0; i < *ncolors_return; i++) { *************** *** 2213,2218 **** (chars_per_pixel == 2 && ((c_ptr[0]=='`' && c_ptr[1]=='`') || (c_ptr[0]==' ' && c_ptr[1]==' '))))) { ! strcpy(s, myBgColorStr); ! if (pixels != NULL) (*pixels)[0] = myBgPixel; *first_pixel_is_bg_return = TRUE; } else { --- 2216,2222 ---- (chars_per_pixel == 2 && ((c_ptr[0]=='`' && c_ptr[1]=='`') || (c_ptr[0]==' ' && c_ptr[1]==' '))))) { ! strcpy(s, (myFileBgColorStr==NULL ? myBgColorStr : ! myFileBgColorStr)); ! if (pixels != NULL) (*pixels)[0] = bg_pixel; *first_pixel_is_bg_return = TRUE; } else { *************** *** 2287,2292 **** (chars_per_pixel == 2 && ((c_ptr[0]=='`' && c_ptr[1]=='`') || (c_ptr[0]==' ' && c_ptr[1]==' '))))) { ! strcpy(s, myBgColorStr); ! if (pixels != NULL) (*pixels)[0] = myBgPixel; *first_pixel_is_bg_return = TRUE; } else { --- 2291,2297 ---- (chars_per_pixel == 2 && ((c_ptr[0]=='`' && c_ptr[1]=='`') || (c_ptr[0]==' ' && c_ptr[1]==' '))))) { ! strcpy(s, (myFileBgColorStr==NULL ? myBgColorStr : ! myFileBgColorStr)); ! if (pixels != NULL) (*pixels)[0] = bg_pixel; *first_pixel_is_bg_return = TRUE; } else { *************** *** 2592,2596 **** int id=0, rotate=ROTATE0, flip=NO_FLIP, locked=FALSE; int compressed=FALSE, real_x=0, real_y=0; ! int transformed=FALSE, invisible=FALSE; char * xpm_data=NULL, * color_char, * * color_str; Pixmap pixmap=None, bitmap=None; --- 2597,2601 ---- int id=0, rotate=ROTATE0, flip=NO_FLIP, locked=FALSE; int compressed=FALSE, real_x=0, real_y=0; ! int transformed=FALSE, invisible=FALSE, bg_pixel; char * xpm_data=NULL, * color_char, * * color_str; Pixmap pixmap=None, bitmap=None; *************** *** 2839,2842 **** --- 2844,2848 ---- xpm_ptr->blue = blue; + bg_pixel = GetDrawingBgPixel(INVALID, INVALID); for (i = 0; i < ncolors; i++) { *************** *** 2853,2858 **** if (i == 0 && (first_pixel_is_bg || (first_pixel_maybe_bg && (color_char[i]=='`' || color_char[i]==' ')))) { ! strcpy (color_s, myBgColorStr); ! pixels[i] = myBgPixel; xpm_ptr->first_pixel_is_bg = first_pixel_is_bg = TRUE; } else if (UtilStrICmp(color_s, "None") == 0) { --- 2859,2865 ---- if (i == 0 && (first_pixel_is_bg || (first_pixel_maybe_bg && (color_char[i]=='`' || color_char[i]==' ')))) { ! strcpy(color_s, (myFileBgColorStr==NULL ? myBgColorStr : ! myFileBgColorStr)); ! pixels[i] = bg_pixel; xpm_ptr->first_pixel_is_bg = first_pixel_is_bg = TRUE; } else if (UtilStrICmp(color_s, "None") == 0) { *** auxtext.e.orig Sat Sep 21 00:56:00 1996 --- auxtext.e Sat Sep 21 00:56:00 1996 *************** *** 28,32 **** * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. * ! * @(#)$Header: /u/halfmoon/home/william/src/tgif/v3/RCS/auxtext.e,v 3.0 1996/05/06 16:03:51 william Exp $ */ --- 28,32 ---- * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. * ! * @(#)$Header: /u/halfmoon/home/william/src/tgif/v3/RCS/auxtext.e,v 3.1 1996/09/14 19:19:34 william Exp $ */ *************** *** 48,51 **** --- 48,57 ---- int *max_w, int *min_lbearing, int *max_rbearing)); + extern int CharIsESC ARGS_DECL((XKeyEvent*, char*, KeySym, int *pnHasCh)); + extern int CharIsCRorLF ARGS_DECL((XKeyEvent*, char*, KeySym, + int *pnHasCh)); + extern int CharIsBSorDEL ARGS_DECL((XKeyEvent*, char*, KeySym, + int *pnHasCh)); + extern int CharIsTAB ARGS_DECL((XKeyEvent*, char*, KeySym, int *pnHasCh)); extern void TranslateKeys ARGS_DECL((char *, KeySym *)); extern void SetTextOBBox ARGS_DECL((struct ObjRec *, int Just, *** color.e.orig Sat Sep 21 00:56:01 1996 --- color.e Sat Sep 21 00:56:01 1996 *************** *** 28,32 **** * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. * ! * @(#)$Header: /u/halfmoon/home/william/src/tgif/v3/RCS/color.e,v 3.0 1996/05/06 16:04:15 william Exp $ */ --- 28,32 ---- * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. * ! * @(#)$Header: /u/halfmoon/home/william/src/tgif/v3/RCS/color.e,v 3.2 1996/07/08 22:12:43 william Exp $ */ *************** *** 39,42 **** --- 39,43 ---- extern char myFgColorStr[]; extern char myBgColorStr[]; + extern char myRubberBandColorStr[]; extern char * * colorMenuItems; extern int * colorPixels; *************** *** 58,62 **** --- 59,66 ---- int **Valid, int **InitRV, char ***StatusStr)); + extern int GetDrawingBgPixel ARGS_DECL((int index, int pixel)); + extern int GetDrawingFgPixel ARGS_DECL((int index, int pixel)); extern int TgifParseColor ARGS_DECL((char*, XColor*)); + extern void RecalcXorPixels ARGS_DECL((void)); extern void InitColor ARGS_DECL((void)); extern int OneColorObject ARGS_DECL((struct ObjRec *, int *ColorIndex)); *** drawing.e.orig Sat Sep 21 00:56:02 1996 --- drawing.e Sat Sep 21 00:56:02 1996 *************** *** 28,32 **** * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. * ! * @(#)$Header: /u/halfmoon/home/william/src/tgif/v3/RCS/drawing.e,v 3.2 1996/05/15 19:26:50 william Exp $ */ --- 28,32 ---- * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. * ! * @(#)$Header: /u/halfmoon/home/william/src/tgif/v3/RCS/drawing.e,v 3.3 1996/09/15 04:45:04 william Exp $ */ *************** *** 66,70 **** int LtX2, int LtY2, int RbX2, int RbY2)); ! extern Pixmap DrawAllOnPixmap ARGS_DECL((int *LtX, int *LtY, int *W, int *H)); extern void RedrawDrawWindow ARGS_DECL((struct ObjRec *BotObj)); extern void ClearAndRedrawDrawWindow ARGS_DECL((void)); --- 66,71 ---- int LtX2, int LtY2, int RbX2, int RbY2)); ! extern Pixmap DrawAllOnPixmap ARGS_DECL((int *LtX, int *LtY, int *W, int *H, ! int nRedraw)); extern void RedrawDrawWindow ARGS_DECL((struct ObjRec *BotObj)); extern void ClearAndRedrawDrawWindow ARGS_DECL((void)); *** edit.e.orig Sat Sep 21 00:56:03 1996 --- edit.e Sat Sep 21 00:56:03 1996 *************** *** 28,32 **** * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. * ! * @(#)$Header: /u/halfmoon/home/william/src/tgif/v3/RCS/edit.e,v 3.1 1996/05/12 05:17:30 william Exp $ */ --- 28,32 ---- * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. * ! * @(#)$Header: /u/halfmoon/home/william/src/tgif/v3/RCS/edit.e,v 3.2 1996/06/17 21:18:04 william Exp $ */ *************** *** 50,54 **** extern void PreciseRotate ARGS_DECL((void)); extern void RotateAllSelObj ARGS_DECL((double degrees)); ! extern void GetBoundingBox ARGS_DECL((void)); extern void EditSubMenu ARGS_DECL((int Index)); extern int EditMenu ARGS_DECL((int X, int Y, int TrackMenubar)); --- 50,54 ---- extern void PreciseRotate ARGS_DECL((void)); extern void RotateAllSelObj ARGS_DECL((double degrees)); ! extern void NoTransform ARGS_DECL((void)); extern void EditSubMenu ARGS_DECL((int Index)); extern int EditMenu ARGS_DECL((int X, int Y, int TrackMenubar)); *** file.e.orig Sat Sep 21 00:56:04 1996 --- file.e Sat Sep 21 00:56:04 1996 *************** *** 28,32 **** * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. * ! * @(#)$Header: /u/halfmoon/home/william/src/tgif/v3/RCS/file.e,v 3.1 1996/05/24 22:27:20 william Exp $ */ --- 28,32 ---- * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. * ! * @(#)$Header: /u/halfmoon/home/william/src/tgif/v3/RCS/file.e,v 3.4 1996/07/08 22:12:46 william Exp $ */ *************** *** 78,81 **** --- 78,91 ---- extern int showPageInEPS; + extern int myFileBgPixel; + extern int myFileFgPixel; + extern char *myFileBgColorStr; + extern char *myFileFgColorStr; + extern XColor myFileBgColor; + extern int myFileBgPixmapW; + extern int myFileBgPixmapH; + extern Pixmap myFileBgPixmap; + extern char *myFileBgGifURL; + extern void UpdateDocumentFonts ARGS_DECL((char*)); *************** *** 95,100 **** --- 105,121 ---- extern void ChangeDomain ARGS_DECL((void)); extern void AdjForOldVersion ARGS_DECL((struct ObjRec *)); + extern int DownloadRemoteFile ARGS_DECL((char *file_name, + char **ppsz_content_type, + char **ppsz_page_spec, + int *pn_is_html, + char *return_tmp_fname)); extern int ImportGivenFile ARGS_DECL((char*)); extern void ImportFile ARGS_DECL((void)); + extern int ClearBgColorInfo ARGS_DECL((int nRedraw)); + extern int ClearBgPixmapInfo ARGS_DECL((int nRedraw)); + extern int SetFileBgColor ARGS_DECL((void)); + extern int SetFileFgColor ARGS_DECL((void)); + extern int SetFileBgPixmap ARGS_DECL((void)); + extern void CheckFileAttrsInLoad ARGS_DECL((void)); extern int LoadFile ARGS_DECL((char *FileName, int ObjFile)); extern void DumpPatFill ARGS_DECL((FILE *, int Fill, int CellSize, *** import.e.orig Sat Sep 21 00:56:05 1996 --- import.e Sat Sep 21 00:56:05 1996 *************** *** 28,32 **** * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. * ! * @(#)$Header: /u/halfmoon/home/william/src/tgif/v3/RCS/import.e,v 3.0 1996/05/06 16:05:42 william Exp $ */ --- 28,32 ---- * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. * ! * @(#)$Header: /u/halfmoon/home/william/src/tgif/v3/RCS/import.e,v 3.1 1996/07/05 14:55:11 william Exp $ */ *************** *** 42,45 **** --- 42,46 ---- extern void ImportXPixmapFile ARGS_DECL((void)); extern void ImportEPSFile ARGS_DECL((int Embed)); + extern int ConvertGifToXpm ARGS_DECL((char *pszGifPath, char *pszXpmPath)); extern void ImportGIFFile ARGS_DECL((void)); extern void ImportOtherFile ARGS_DECL((void)); *** navigate.e.orig Sat Sep 21 00:56:07 1996 --- navigate.e Sat Sep 21 00:56:07 1996 *************** *** 28,32 **** * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. * ! * @(#)$Header: /u/halfmoon/home/william/src/tgif/v3/RCS/navigate.e,v 3.0 1996/05/06 16:06:20 william Exp $ */ --- 28,32 ---- * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. * ! * @(#)$Header: /u/halfmoon/home/william/src/tgif/v3/RCS/navigate.e,v 3.1 1996/07/05 14:55:10 william Exp $ */ *************** *** 38,41 **** --- 38,42 ---- extern int autoHyperSpaceOnRemote; extern int allowLaunchInHyperSpace; + extern int navigateRefresh; extern char * navigateMenuStr[]; extern char * navigateMenuStrInHyperSpace[]; *** setup.e.orig Sat Sep 21 00:56:08 1996 --- setup.e Sat Sep 21 00:56:08 1996 *************** *** 28,32 **** * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. * ! * @(#)$Header: /u/halfmoon/home/william/src/tgif/v3/RCS/setup.e,v 3.0 1996/05/06 16:07:34 william Exp $ */ --- 28,32 ---- * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. * ! * @(#)$Header: /u/halfmoon/home/william/src/tgif/v3/RCS/setup.e,v 3.1 1996/07/08 22:12:42 william Exp $ */ *************** *** 111,114 **** --- 111,115 ---- extern int myBgPixel; extern int myFgPixel; + extern int myRubberBandPixel; extern int myBorderPixel; extern int reverseVideo; *** xbitmap.e.orig Sat Sep 21 00:56:09 1996 --- xbitmap.e Sat Sep 21 00:56:09 1996 *************** *** 28,32 **** * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. * ! * @(#)$Header: /u/halfmoon/home/william/src/tgif/v3/RCS/xbitmap.e,v 3.0 1996/05/06 16:13:06 william Exp $ */ --- 28,32 ---- * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. * ! * @(#)$Header: /u/halfmoon/home/william/src/tgif/v3/RCS/xbitmap.e,v 3.1 1996/09/15 00:39:09 william Exp $ */ *************** *** 61,65 **** extern void GenPreviewBitmap ARGS_DECL((FILE *, int llxPage, int llyPage, int urxPage, int uryPage)); ! extern void DumpXBitmapFile ARGS_DECL((void)); extern void DumpXBmObj ARGS_DECL((FILE *, struct ObjRec *)); extern int NeedsToCacheXBmObj ARGS_DECL((struct ObjRec *)); --- 61,66 ---- extern void GenPreviewBitmap ARGS_DECL((FILE *, int llxPage, int llyPage, int urxPage, int uryPage)); ! extern void DumpXBitmapFile ARGS_DECL((int nInImageProc, ! int nPageNumInFileName)); extern void DumpXBmObj ARGS_DECL((FILE *, struct ObjRec *)); extern int NeedsToCacheXBmObj ARGS_DECL((struct ObjRec *)); *** const.h.orig Sat Sep 21 00:56:10 1996 --- const.h Sat Sep 21 00:56:10 1996 *************** *** 28,32 **** * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. * ! * @(#)$Header: /u/halfmoon/home/william/src/tgif/v3/RCS/const.h,v 3.1 1996/05/30 14:26:47 william Exp $ */ --- 28,32 ---- * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. * ! * @(#)$Header: /u/halfmoon/home/william/src/tgif/v3/RCS/const.h,v 3.3 1996/07/08 14:53:26 william Exp $ */ *************** *** 472,477 **** #define EDIT_GET_BBOX 33 #define EDIT_SET_SHAPE_SHADOW 34 ! #define MAXEDITMENUS 35 /* layout menu */ --- 472,478 ---- #define EDIT_GET_BBOX 33 #define EDIT_SET_SHAPE_SHADOW 34 + #define EDIT_NO_TRANSFORM 35 ! #define MAXEDITMENUS 36 /* layout menu */ *************** *** 501,504 **** --- 502,506 ---- #define LAYOUT_TOGGLE_SHOW_STATUS 22 #define LAYOUT_TOGGLE_ONEMOTION_SELMOVE 23 + /* make sure the LAYOUT_TOGGLE_COLOR_LAYERS is the last one */ #define LAYOUT_TOGGLE_COLOR_LAYERS 24 *** patchlvl.h.orig Sat Sep 21 00:56:11 1996 --- patchlvl.h Sat Sep 21 00:56:11 1996 *************** *** 28,32 **** * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. * ! * @(#)$Header: /u/halfmoon/home/william/src/tgif/v3/RCS/patchlvl.h,v 3.7 1996/05/30 14:26:43 william Exp $ */ --- 28,32 ---- * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. * ! * @(#)$Header: /u/halfmoon/home/william/src/tgif/v3/RCS/patchlvl.h,v 3.8 1996/06/17 21:18:00 william Exp $ */ *************** *** 34,38 **** #define _TGIF_PATCHLEVEL_H_ ! #define TGIF_PATCHLEVEL 7 #endif /*_TGIF_PATCHLEVEL_H_*/ --- 34,38 ---- #define _TGIF_PATCHLEVEL_H_ ! #define TGIF_PATCHLEVEL 8 #endif /*_TGIF_PATCHLEVEL_H_*/ *** types.h.orig Sat Sep 21 00:56:12 1996 --- types.h Sat Sep 21 00:56:12 1996 *************** *** 28,32 **** * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. * ! * @(#)$Header: /u/halfmoon/home/william/src/tgif/v3/RCS/types.h,v 3.2 1996/05/30 14:26:47 william Exp $ */ --- 28,32 ---- * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. * ! * @(#)$Header: /u/halfmoon/home/william/src/tgif/v3/RCS/types.h,v 3.3 1996/07/05 14:55:16 william Exp $ */ *************** *** 232,235 **** --- 232,240 ---- int page_layout_mode, color_dump; int one_page_width, one_page_height; + int file_bg_pixel, file_fg_pixel; + int file_bg_pixmap_w, file_bg_pixmap_h; + char *file_bg_color_str, *file_fg_color_str; + char *file_bg_gif_url; + Pixmap file_bg_pixmap; } * StkRecPtr; *** Makefile.noimake.orig Sat Sep 21 00:56:13 1996 --- Makefile.noimake Sat Sep 21 00:56:14 1996 *************** *** 24,28 **** # PERFORMANCE OF THIS SOFTWARE. # ! # @(#)$Header: /u/halfmoon/home/william/src/tgif/v3/RCS/Makefile.noimake,v 3.3 1996/06/17 21:18:16 william Exp $ # --- 24,28 ---- # PERFORMANCE OF THIS SOFTWARE. # ! # @(#)$Header: /u/halfmoon/home/william/src/tgif/v3/RCS/Makefile.noimake,v 3.4 1996/09/15 13:16:39 william Exp $ # *************** *** 82,86 **** #-D_TGIF_WB # Include the above line if you want to include the whiteboard feature ! # by Renato Santana . #-DBSD_COMP # Include the above line if you are compiling on a Solaris (or --- 82,87 ---- #-D_TGIF_WB # Include the above line if you want to include the whiteboard feature ! # by Renato Santana . This feature is under ! # development and highly experimental. #-DBSD_COMP # Include the above line if you are compiling on a Solaris (or *************** *** 295,299 **** cmd.o: const.h tgif_dbg.h types.h attr.e choice.e cmd.e color.e \ dialog.e drawing.e dup.e imgproc.e mark.e move.e msg.e obj.e \ ! page.e select.e setup.e stk.e xpixmap.e color.o: const.h tgif_dbg.h types.h choice.e cmd.e color.e dialog.e \ drawing.e file.e font.e imgproc.e mainloop.e mark.e menu.e \ --- 296,300 ---- cmd.o: const.h tgif_dbg.h types.h attr.e choice.e cmd.e color.e \ dialog.e drawing.e dup.e imgproc.e mark.e move.e msg.e obj.e \ ! page.e select.e setup.e stk.e xpixmap.e wb1.e color.o: const.h tgif_dbg.h types.h choice.e cmd.e color.e dialog.e \ drawing.e file.e font.e imgproc.e mainloop.e mark.e menu.e \ *************** *** 320,324 **** polygon.e raster.e rcbox.e rect.e remote.e ruler.e scroll.e \ select.e setup.e shape.e shortcut.e special.e stk.e stretch.e \ ! text.e xbitmap.e xpixmap.e xbm/intr.xbm xbm/trek.xbm dup.o: const.h tgif_dbg.h types.h attr.e auxtext.e choice.e cmd.e \ drawing.e dup.e grid.e mark.e move.e msg.e obj.e page.e \ --- 321,325 ---- polygon.e raster.e rcbox.e rect.e remote.e ruler.e scroll.e \ select.e setup.e shape.e shortcut.e special.e stk.e stretch.e \ ! text.e wb1.e xbitmap.e xpixmap.e xbm/intr.xbm xbm/trek.xbm dup.o: const.h tgif_dbg.h types.h attr.e auxtext.e choice.e cmd.e \ drawing.e dup.e grid.e mark.e move.e msg.e obj.e page.e \ *************** *** 353,356 **** --- 354,358 ---- mark.e menu.e msg.e obj.e pattern.e page.e ps.e raster.e \ select.e setup.e text.e util.e xpixmap.e + frontend.o: ftp.o: const.h tgif_dbg.h ftp.e remote.e tcp.e util.e grid.o: const.h tgif_dbg.h types.h choice.e color.e cursor.e dialog.e \ *************** *** 377,382 **** mainloop.e mainmenu.e menu.e msg.e names.e navigate.e obj.e \ page.e ps.e raster.e remote.e ruler.e scroll.e select.e \ ! setup.e shape.e shortcut.e stk.e text.e version.e xbitmap.e \ ! xpixmap.e mainmenu.o: const.h tgif_dbg.h types.h align.e choice.e color.e cursor.e \ edit.e file.e font.e grid.e help.e imgproc.e mainloop.e \ --- 379,384 ---- mainloop.e mainmenu.e menu.e msg.e names.e navigate.e obj.e \ page.e ps.e raster.e remote.e ruler.e scroll.e select.e \ ! setup.e shape.e shortcut.e stk.e text.e version.e wb1.e \ ! xbitmap.e xpixmap.e mainmenu.o: const.h tgif_dbg.h types.h align.e choice.e color.e cursor.e \ edit.e file.e font.e grid.e help.e imgproc.e mainloop.e \ *************** *** 507,514 **** stretch.e text.e xbitmap.e xpixmap.e tgificon.xbm \ xbm/btn1.xbm ! shape.o: const.h tgif_dbg.h types.h arc.e attr.e box.e cmd.e color.e \ ! cursor.e dialog.e drawing.e dup.e group.e menu.e msg.e obj.e \ ! page.e pattern.e poly.e polygon.e raster.e select.e setup.e \ ! shape.e spline.e text.e util.e shortcut.o: const.h tgif_dbg.h types.h msg.e setup.e shortcut.e special.o: const.h tgif_dbg.h types.h animate.e attr.e auxtext.e \ --- 509,516 ---- stretch.e text.e xbitmap.e xpixmap.e tgificon.xbm \ xbm/btn1.xbm ! shape.o: const.h tgif_dbg.h types.h arc.e attr.e auxtext.e box.e cmd.e \ ! color.e cursor.e dialog.e drawing.e dup.e group.e menu.e \ ! msg.e obj.e page.e pattern.e poly.e polygon.e raster.e \ ! select.e setup.e shape.e spline.e text.e util.e shortcut.o: const.h tgif_dbg.h types.h msg.e setup.e shortcut.e special.o: const.h tgif_dbg.h types.h animate.e attr.e auxtext.e \ *************** *** 517,521 **** menu.e msg.e move.e names.e obj.e page.e raster.e remote.e \ ruler.e scroll.e select.e setup.e special.e stk.e text.e \ ! util.e spline.o: const.h tgif_dbg.h types.h dialog.e poly.e polygon.e raster.e \ rect.e setup.e spline.e --- 519,523 ---- menu.e msg.e move.e names.e obj.e page.e raster.e remote.e \ ruler.e scroll.e select.e setup.e special.e stk.e text.e \ ! wb1.e util.e spline.o: const.h tgif_dbg.h types.h dialog.e poly.e polygon.e raster.e \ rect.e setup.e spline.e *************** *** 539,549 **** tgif.o: const.h tgif_dbg.h types.h color.e file.e mainloop.e msg.e \ obj.e page.e setup.e util.e util.o: const.h tgif_dbg.h remote.e util.e ! tgif_dbg.o: vms_comp.o: vms_comp.h - wb1.o: - wb2.o: - wb3.o: version.o: version.e xbitmap.o: const.h tgif_dbg.h types.h attr.e auxtext.e choice.e cmd.e \ color.e cursor.e dialog.e drawing.e dup.e eps.e file.e font.e \ --- 541,558 ---- tgif.o: const.h tgif_dbg.h types.h color.e file.e mainloop.e msg.e \ obj.e page.e setup.e util.e + tgif_dbg.o: util.o: const.h tgif_dbg.h remote.e util.e ! version.o: vms_comp.o: vms_comp.h version.o: version.e + vms_comp.o: + wb1.o: const.h tgif_dbg.h types.h choice.e cmd.e color.e drawing.e \ + file.e msg.e obj.e page.e select.e setup.e tcp.e wb1.e wb2.e \ + wb3.e + wb2.o: const.h tgif_dbg.h types.h attr.e auxtext.e color.e dup.e \ + file.e wb2.e wb3.e + wb3.o: const.h tgif_dbg.h types.h patchlvl.h align.e auxtext.e \ + color.e file.e font.e grid.e msg.e page.e pattern.e poly.e \ + prtgif.e setup.e stk.e text.e version.e wb2.e wb3.e xpixmap.e xbitmap.o: const.h tgif_dbg.h types.h attr.e auxtext.e choice.e cmd.e \ color.e cursor.e dialog.e drawing.e dup.e eps.e file.e font.e \ *** Imakefile.orig Sat Sep 21 00:56:15 1996 --- Imakefile Sat Sep 21 00:56:15 1996 *************** *** 36,40 **** XCOMM PERFORMANCE OF THIS SOFTWARE. XCOMM ! XCOMM @(#)$Header: /u/halfmoon/home/william/src/tgif/v3/RCS/Imakefile,v 3.10 1996/05/30 14:26:07 william Exp $ XCOMM --- 36,40 ---- XCOMM PERFORMANCE OF THIS SOFTWARE. XCOMM ! XCOMM @(#)$Header: /u/halfmoon/home/william/src/tgif/v3/RCS/Imakefile,v 3.13 1996/09/20 13:49:26 william Exp $ XCOMM *************** *** 45,56 **** XCOMM EXTRA_LDOPTIONS = ! TGIFVERSION = 3.0-p7 PROGRAMS = tgif prtgif XCOMM frontend11.o testdrive ! CDEBUGFLAGS= -g ! INSTPGMFLAGS= -s ! BINDIR = /u/halfmoon/$(MACHINE)/bin ! MANPATH = /u/halfmoon/man ! TGIFDIR = /u/halfmoon/lib/X11/tgif ! XCOMM TGIFDIR = $(LIBDIR)/tgif DEFINES = -DTGIF_PATH=\"$(TGIFDIR)\" -DPSFILE_MOD=0664 \@@\ -DEPSF_FILE_EXT=\"eps\" -DPS_FILE_EXT=\"ps\" \@@\ --- 45,56 ---- XCOMM EXTRA_LDOPTIONS = ! TGIFVERSION = 3.0-p8 PROGRAMS = tgif prtgif XCOMM frontend11.o testdrive ! XCOMM CDEBUGFLAGS= -g ! XCOMM INSTPGMFLAGS= -s ! XCOMM BINDIR = /u/halfmoon/$(MACHINE)/bin ! XCOMM MANPATH = /u/halfmoon/man ! XCOMM TGIFDIR = /u/halfmoon/lib/X11/tgif ! TGIFDIR = $(LIBDIR)/tgif DEFINES = -DTGIF_PATH=\"$(TGIFDIR)\" -DPSFILE_MOD=0664 \@@\ -DEPSF_FILE_EXT=\"eps\" -DPS_FILE_EXT=\"ps\" \@@\ *************** *** 60,66 **** -DTELEPORT_ATTR=\"warp_to=\" -DTMP_DIR=\"/tmp/\" \@@\ -DLAUNCH_ATTR=\"launch=\" -DEXEC_ATTR=\"exec=\" \@@\ ! -D_BACKGROUND_DONT_FORK -D_USE_XDRAWPOINT_TO_PUT_A_POINT \@@\ ! \@@\ ! -D_TGIF_DBG -D_TGIF_WB XCOMM Things to try to add to the DEFINES line above: --- 60,64 ---- -DTELEPORT_ATTR=\"warp_to=\" -DTMP_DIR=\"/tmp/\" \@@\ -DLAUNCH_ATTR=\"launch=\" -DEXEC_ATTR=\"exec=\" \@@\ ! -D_BACKGROUND_DONT_FORK -D_USE_XDRAWPOINT_TO_PUT_A_POINT XCOMM Things to try to add to the DEFINES line above: *************** *** 85,89 **** XCOMM -D_TGIF_WB XCOMM Include the above line if you want to include the whiteboard feature ! XCOMM by Renato Santana . XCOMM -DBSD_COMP XCOMM Include the above line if you are compiling on a Solaris (or --- 83,88 ---- XCOMM -D_TGIF_WB XCOMM Include the above line if you want to include the whiteboard feature ! XCOMM by Renato Santana . This feature is under ! XCOMM development and highly experimental. XCOMM -DBSD_COMP XCOMM Include the above line if you are compiling on a Solaris (or *** tgif.man.orig Sat Sep 21 00:56:16 1996 --- tgif.man Sat Sep 21 00:56:17 1996 *************** *** 1,4 **** ! .\"@(#)$Header: /u/halfmoon/home/william/src/tgif/v3/RCS/tgif.man,v 3.0 1996/05/06 16:12:23 william Exp $ ! .TH TGIF n "Version 2.16 Patchlevel 11 and Above" "Tgif" .\" .SH NAME --- 1,4 ---- ! .\"@(#)$Header: /u/halfmoon/home/william/src/tgif/v3/RCS/tgif.man,v 3.2 1996/09/16 06:25:37 william Exp $ ! .TH TGIF n "Version 3.0 Patchlevel 8 and Above" "Tgif" .\" .SH NAME *************** *** 6,11 **** \fItgif\fR \- Xlib based interactive 2-D drawing facility under X11. Supports hierarchical construction of drawings and easy navigation between ! sets of drawings. It can also be used to launch applications. It's also ! a hyper-graphics (or hyper-structured-graphics) browser on the World-Wide-Web. .\" .SH SYNOPSIS --- 6,11 ---- \fItgif\fR \- Xlib based interactive 2-D drawing facility under X11. Supports hierarchical construction of drawings and easy navigation between ! sets of drawings. It's also a hyper-graphics ! (or hyper-structured-graphics) browser on the World-Wide-Web. .\" .SH SYNOPSIS *************** *** 57,66 **** the foreground, background, and border colors, respectively. The command line argument \fIfile\fR ! specifies a file or an URL (only Uniform Resource Locator that specifies ! a file on a HTTP or FTP server are supported) of objects to be initially edited by tgif. ! (For a more detailed description of URL, the reader is referred to the ! World-Wide-Web page, titled "A Beginner's Guild to HTML", located at ! .) If \fI-rv\fR (or \fI-nv\fR) is specified, tgif will come up in reverse-video (or normal-video) mode. --- 57,65 ---- the foreground, background, and border colors, respectively. The command line argument \fIfile\fR ! specifies a file or an Uniform Resource Locator (URL) of objects to be initially edited by tgif. ! Only HTTP or FTP URL's are supported. ! (For a more detailed description of URL and the World-Wide-Web, ! the reader is referred to [1].) If \fI-rv\fR (or \fI-nv\fR) is specified, tgif will come up in reverse-video (or normal-video) mode. *************** *** 68,75 **** If \fI-cwo\fR is specified, only the canvas window (see TGIF SUBWINDOWS section below) will be displayed. If \fI-hyper\fR is specified tgif will be started in the \fIhyperspace\fR mode (see HYPERSPACE section below). - This has the same effect as setting the Tgif*CanvasWindowOnly X default to true. - The default is false. Tgif is purely based on \fIXlib\fR. It is tested under X11R6, and --- 67,73 ---- If \fI-cwo\fR is specified, only the canvas window (see TGIF SUBWINDOWS section below) will be displayed. + This has the same effect as setting the Tgif.CanvasWindowOnly X default to true. If \fI-hyper\fR is specified tgif will be started in the \fIhyperspace\fR mode (see HYPERSPACE section below). Tgif is purely based on \fIXlib\fR. It is tested under X11R6, and *************** *** 79,86 **** etc. (generated by \fItgif\fR) into PostScript(TM) page description files ! and pipes them to \fIlpr\fR if none of the \fB-eps\fR, \fB-p\fR, \fB-ps\fR, \fB-f\fR, or \fB-text\fR options ! are not specified; ! in this case, any other command line options are sent to \fIlpr\fR. A symbol file (see descriptions below) can also be printed by specifying the \fI.sym\fR extension explicitly. --- 77,84 ---- etc. (generated by \fItgif\fR) into PostScript(TM) page description files ! and pipes them to lpr(1) if none of the \fB-eps\fR, \fB-p\fR, \fB-ps\fR, \fB-f\fR, or \fB-text\fR options ! are specified. In this case, ! any other unrecognized command line options are sent to lpr(1). A symbol file (see descriptions below) can also be printed by specifying the \fI.sym\fR extension explicitly. *************** *** 89,93 **** In the second form, if the \fB-eps\fR or the \fB-p\fR option is specified, ! tgif generates an Encapsulated PostScript file in \fIfile.eps\fR; this file is supposed to be included in a LaTeX file through the \\psfig, \\epsf, or \\psfile construct (see the LATEX FIGURE FORMATS section --- 87,91 ---- In the second form, if the \fB-eps\fR or the \fB-p\fR option is specified, ! tgif generates an Encapsulated PostScript(TM) file in \fIfile.eps\fR; this file is supposed to be included in a LaTeX file through the \\psfig, \\epsf, or \\psfile construct (see the LATEX FIGURE FORMATS section *************** *** 95,119 **** If the \fB-ps\fR or the \fB-f\fR option is specified, it generates a PostScript file in \fIfile.ps\fR; ! this file can be printed to a PostScript printer with lpr. If the \fB-text\fR option is specified, it generates a text file in \fIfile.txt\fR; the text file contains all visible text and can be fed to a spell checker. (Note that if any of the \fB-eps\fR, \fB-p\fR, \fB-ps\fR, ! \fB-f\fR, or \fB-ftext\fR options are specified, any other command line options are ignored.) Using the \fI-gray\fR option has the same effect as setting the ! Tgif*UseGrayScale X default to true (see the X DEFAULTS section below). Using the \fI-adobe\fR or the \fI-adobe=/\fR option has the same effect as specifying the ! Tgif*UsePsAdobeString X default. Using the \fI-page\fR option causes a specified page to be printed. Using the \fI-print_cmd\fR option has the same effect as specifying the ! Tgif*PrintCommand X default. Using the \fI-one_file_per_page\fR option causes each page to be printed into a separate file. Using the \fI-pepsc\fR (PreserveEPSComment) option has the same effect as ! setting the Tgif*StripEPSComment X default to false. Using the \fI-bop_hook\fR and -fI-eop_hook\fR options have the same effect ! as specifying the Tgif*PSBopHook and Tgif*PSEpsHook X defaults. If the \fI-o\fR option is not specified, the output file (eps, ps, or txt) goes into the same directory as the input file. If \fI-o\fRdir --- 93,117 ---- If the \fB-ps\fR or the \fB-f\fR option is specified, it generates a PostScript file in \fIfile.ps\fR; ! this file can be printed to a PostScript printer with lpr(1). If the \fB-text\fR option is specified, it generates a text file in \fIfile.txt\fR; the text file contains all visible text and can be fed to a spell checker. (Note that if any of the \fB-eps\fR, \fB-p\fR, \fB-ps\fR, ! \fB-f\fR, or \fB-text\fR options are specified, any other command line options are ignored.) Using the \fI-gray\fR option has the same effect as setting the ! Tgif.UseGrayScale X default to true (see the X DEFAULTS section below). Using the \fI-adobe\fR or the \fI-adobe=/\fR option has the same effect as specifying the ! Tgif.UsePsAdobeString X default. Using the \fI-page\fR option causes a specified page to be printed. Using the \fI-print_cmd\fR option has the same effect as specifying the ! Tgif.PrintCommand X default. Using the \fI-one_file_per_page\fR option causes each page to be printed into a separate file. Using the \fI-pepsc\fR (PreserveEPSComment) option has the same effect as ! setting the Tgif.StripEPSComment X default to false. Using the \fI-bop_hook\fR and -fI-eop_hook\fR options have the same effect ! as specifying the Tgif.PSBopHook and Tgif.PSEpsHook X defaults. If the \fI-o\fR option is not specified, the output file (eps, ps, or txt) goes into the same directory as the input file. If \fI-o\fRdir *************** *** 121,126 **** by \fIdir\fR. .PP ! Please note that only running tgif interactively can generate X11 bitmap, ! X11 pixmap, GIF, or color PostScript files. .\" .SH BASIC FUNCTIONALITIES --- 119,125 ---- by \fIdir\fR. .PP ! Please note that only running tgif interactively can generate X11 bitmap ! (XBM), ! X11 pixmap (XPM), GIF, HTML, or color PostScript/EPS files. .\" .SH BASIC FUNCTIONALITIES *************** *** 129,133 **** are rectangles, ovals, rounded-corner rectangles, arcs, polylines, polygons, open-splines, closed-splines, text, X11 bitmaps, ! some specific forms of X11 pixmaps, and Encapsulated PostScript(TM). Objects can be grouped together to form a \fIgrouped\fR object. A primitive or a grouped object can be made into an \fIicon\fR object or a --- 128,132 ---- are rectangles, ovals, rounded-corner rectangles, arcs, polylines, polygons, open-splines, closed-splines, text, X11 bitmaps, ! some specific forms of X11 pixmaps, and Encapsulated PostScript. Objects can be grouped together to form a \fIgrouped\fR object. A primitive or a grouped object can be made into an \fIicon\fR object or a *************** *** 141,145 **** extension (referred to as a \fIsymbol\fR file) specifies a ``building-block'' object. ! A \fIteleport\fR mechanism is provided to \fItravel\fR among the .obj files. A building-block object consists of the \fIrepresentation\fR part and the \fIdefinition\fR --- 140,145 ---- extension (referred to as a \fIsymbol\fR file) specifies a ``building-block'' object. ! A \fIteleport\fR mechanism is provided to \fItravel\fR (or \fIhyperjump\fR) ! among the .obj files. A building-block object consists of the \fIrepresentation\fR part and the \fIdefinition\fR *************** *** 155,159 **** the drawings! (It is left to the user to produce the code. See the PROLOG/C TESTDRIVE section for more details.) ! Prolog engines will be referred to as \fIdrivers\fR in the sections to follow. (Other types of drivers are also allowed, e.g., written in C.) --- 155,159 ---- the drawings! (It is left to the user to produce the code. See the PROLOG/C TESTDRIVE section for more details.) ! Prolog engines are referred to as \fIdrivers\fR in the sections to follow. (Other types of drivers are also allowed, e.g., written in C.) *************** *** 162,179 **** Attributes specified in the representation part of a building-block object are non-detachable when such an object is instantiated. ! See ATTRIBUTES section for details. .PP Tgif can generate output in four different formats. ! By default, the output is in the PostScript(TM) format (color PostScript is supported), and it is generated into a file named /tmp/Tgifa* (produced by mktemp() calls) where * is a number; ! this file is piped to lpr. This takes place when the ! laser-printer icon is displayed in the Choice Window (see below ! for the naming of tgif windows). This output can be redirected to a file with a .I \.ps ! extension. This takes place when the \fIPS\fR icon is displayed. ! When the \fILaTeX\fR (or \fIEPSI\fR) icon is displayed, the output ! is generated into a file with a .I \.eps extension. This file is in the Encapsulated PostScript (or Encapsulated --- 162,180 ---- Attributes specified in the representation part of a building-block object are non-detachable when such an object is instantiated. ! See the ATTRIBUTES section for details. .PP Tgif can generate output in four different formats. ! By default, the output is in the PostScript format (color PostScript is supported), and it is generated into a file named /tmp/Tgifa* (produced by mktemp() calls) where * is a number; ! this file is piped to lpr(1). This takes place when the ! laser-printer icon is displayed in the Choice Window ! (see the TGIF SUBWINDOWS section for the naming of tgif windows). This output can be redirected to a file with a .I \.ps ! extension. This takes place when the \fIPS\fR icon is displayed ! in the Choice Window. ! When the \fILaTeX\fR (or \fIEPSI\fR) icon is displayed in the ! Choice Window, the output is generated into a file with a .I \.eps extension. This file is in the Encapsulated PostScript (or Encapsulated *************** *** 186,190 **** tool that does not know how to use the preview bitmap, time can be saved by not using the EPSI format. ! When the \fIT\fR icon is displayed, the output generated into a file with a .I \.txt extension. This is a text file containing all visible text; --- 187,192 ---- tool that does not know how to use the preview bitmap, time can be saved by not using the EPSI format. ! When the \fIT\fR icon is displayed in the Choice Window, ! the output generated into a file with a .I \.txt extension. This is a text file containing all visible text; *************** *** 202,211 **** extension, and the output is in the X11 pixmap format (the version of this XPM format depends on the settings of the ! XPmOutputVersion X default). X11 bitmap files, certain forms of X11 pixmap files (such as the one generated by tgif; see the section on X11 PIXMAP for details), GIF files, and Encapsulated PostScript (EPS) files can be \fIimported\fR into tgif and be represented ! as tgif primitive objects. .PP Tgif drawings are supposed to be printed on letter size paper (8.5in by 11in). --- 204,217 ---- extension, and the output is in the X11 pixmap format (the version of this XPM format depends on the settings of the ! Tgif.XPmOutputVersion X default). ! .PP X11 bitmap files, certain forms of X11 pixmap files (such as the one generated by tgif; see the section on X11 PIXMAP for details), GIF files, and Encapsulated PostScript (EPS) files can be \fIimported\fR into tgif and be represented ! as tgif primitive objects. Files in other raster formats (e.g, ! JPEG, TIFF, etc.) can also be imported into tgif if external tools ! can be used to convert them into X11 pixmap files. Please see the ! IMPORT RASTER GRAPHICS section for details. .PP Tgif drawings are supposed to be printed on letter size paper (8.5in by 11in). *************** *** 233,243 **** becomes the icon for the building-block object. .PP ! All objects in tgif can be moved, duplicated, deleted, rotated, ! and flipped. (However, flipping text objects horizontally will ! cause the text justification to change, and flipping text objects ! vertically will usually cause the text object to move.) ! All objects, except text and rigid icon objects, can be stretched ! (scaled). (See the TGIF SUBWINDOWS section for the definition of rigid ! icon objects.) .PP Tgif supports 32 fill patterns, 32 pen patterns, 7 default line widths, 4 line --- 239,249 ---- becomes the icon for the building-block object. .PP ! All objects in tgif can be moved, duplicated, deleted, rotated, flipped, ! rotated, and sheared. ! However, in the non-stretchable text mode, text objects can not be stretched. ! For an text object, if it has not been stretched, ! rotated, or sheared, flipping it horizontally will ! cause the text justification to change and flipping it ! vertically has not effect. .PP Tgif supports 32 fill patterns, 32 pen patterns, 7 default line widths, 4 line *************** *** 245,255 **** polylines and open-splines, 9 dash patterns, 3 types of text justifications, 4 text ! styles (roman, italic, bold, bold-italic), 11 text sizes (8, 10, 12, 14, 18, and 24 for the 75dpi fonts and ! 11, 14, 17, 20, 25, and 34 for the 100dpi fonts), 5 fonts (Times, Courier, Helvetica, New-Century-Schoolbook, Symbol), and 11 default colors (magenta, red, green, blue, yellow, pink, cyan, cadet-blue, white, black, dark-slate-gray). ! Only right-angle rotations are supported. .PP Most commands in tgif can either be activated by a --- 251,273 ---- polylines and open-splines, 9 dash patterns, 3 types of text justifications, 4 text ! styles (roman, italic, bold, bold-italic), 11 default text sizes (8, 10, 12, 14, 18, and 24 for the 75dpi fonts and ! 11, 14, 17, 20, 25, and 34 for the 100dpi fonts), 5 default fonts ! (Times, Courier, Helvetica, New-Century-Schoolbook, Symbol), and 11 default colors (magenta, red, green, blue, yellow, pink, cyan, cadet-blue, white, black, dark-slate-gray). ! Additional line widths can be added through the use of ! Tgif.MaxLineWidths, Tgif.LineWidth#, Tgif.ArrowWidth#, and ! Tgif.ArrowHeight# X defaults. ! Additional text sizes can be added through the use of ! Tgif.FontSizes X default. ! Additional fonts can be added through the use of ! Tgif.AdditionalFonts X default. If the defaults fonts are not ! available, their replacement fonts can be specified by ! Tgif.HasAlternateDefaultFonts and related X defaults. ! Additional colors can be added through the use of ! Tgif.MaxColors, and Tgif.Color# X defaults. One can also select ! AddColor() from the Edit Menu to add a color. .PP Most commands in tgif can either be activated by a *************** *** 258,266 **** and the redone. Commands such as zoom, scroll, change fonts while no text objects are selected, etc. are not undoable. The undo/redo ! history buffer size can be set using the Tgif*HistoryDepth X default. .\" .SH TGIF SUBWINDOWS .\" ! The tgif windows are described below. .TP .I Top Window --- 276,284 ---- and the redone. Commands such as zoom, scroll, change fonts while no text objects are selected, etc. are not undoable. The undo/redo ! history buffer size can be set using the Tgif.HistoryDepth X default. .\" .SH TGIF SUBWINDOWS .\" ! The tgif windows are described in this section. .TP .I Top Window *************** *** 284,288 **** .TP .I Message Window ! This is right under the Menubar Window on the left. It displays tgif messages. Clicking the left mouse button --- 302,306 ---- .TP .I Message Window ! This is right under the Menubar Window and to the left. It displays tgif messages. Clicking the left mouse button *************** *** 302,307 **** In top/bottom, left/right order, it displays the current drawing mode, the ! page style (portrait/landscape), edit (see below), ! print mode, zoom factor, constrained/unconstrained move (and stretch) mode, radius for rounded-corner rectangles, text rotation, page number or row/column, page layout mode --- 320,326 ---- In top/bottom, left/right order, it displays the current drawing mode, the ! page style (portrait or landscape), edit (see below), ! print/export mode, zoom factor, ! move and stretch mode (constrained or unconstrained), radius for rounded-corner rectangles, text rotation, page number or row/column, page layout mode *************** *** 309,314 **** vertical alignment (T M B S -), font, text size, vertical spacing between lines of text within ! the same text object, text justification, dash pattern, ! line style, polyline or spline, line width, fill pattern, pen pattern, color, and special (see below). Key presses have no effect in this window. --- 328,335 ---- vertical alignment (T M B S -), font, text size, vertical spacing between lines of text within ! the same text object, text justification, ! shape (see below), stretchable or non-stretchable text mode, dash pattern, ! line style, polyline, spline, or interpolated spline, ! line width, fill pattern, pen pattern, color, and special (see below). Key presses have no effect in this window. *************** *** 323,328 **** on top of an icon usually generates a popup menu which corresponds to an entry in the Main Menu for the Canvas Window below. ! (The ``edit'' and ``special'' icons mentioned above are dummy icons ! that allow the ``edit'' and ``special'' menus to be accessed in the Choice Window. They do not respond to left and right mouse clicks.) --- 344,349 ---- on top of an icon usually generates a popup menu which corresponds to an entry in the Main Menu for the Canvas Window below. ! (The ``edit'', ``shape'', and ``special'' icons mentioned above are ! dummy icons that allow the ``edit'', ``shape'', and ``special'' menus to be accessed in the Choice Window. They do not respond to left and right mouse clicks.) *************** *** 338,342 **** objects to change to the newly selected mode; note that in this case, the current choice won't change if the middle mouse button ! is used. .RE .PP --- 359,363 ---- objects to change to the newly selected mode; note that in this case, the current choice won't change if the middle mouse button ! is used (unless the Tgif.StickyMenuSelection X default is set to true). .RE .PP *************** *** 377,381 **** oval, polyline (open-spline), polygon (closed-spline), arc, rounded-corner rectangle, freehand polyline (open-spline), ! and select vertices. When drawing a rectangle, an oval, or a rounded-corner rectangle, if the key is held down, a square, a circle, or a rounded-corner square is drawn. --- 398,403 ---- oval, polyline (open-spline), polygon (closed-spline), arc, rounded-corner rectangle, freehand polyline (open-spline), ! select vertices, and rotate/shear. ! When drawing a rectangle, an oval, or a rounded-corner rectangle, if the key is held down, a square, a circle, or a rounded-corner square is drawn. *************** *** 386,398 **** and reshapes objects (double-click will ``de-select'' all selected objects in vertex mode). When an object is selected, it is highlighted by ! little squares at the corners/vertices (using the Tgif*HandleSize X default, ! the sizes of the handles can be customized). Dragging one of the little squares ! stretches/reshapes the selected object. If one wants to move the selected ! object, one should not drag the little squares. Instead, one should drag other parts of the object. For example, if the object is a hollow rectangle (the fill is NONE and the pen is not NONE), in order to select ! the rectangle, one would need to click on the outline of the rectangle with the left mouse button. If one would like to move the rectangle, one ! would need to drag the outline of the rectangle with the left mouse button. If the object is a filled rectangle (fill is not NONE), the one can click inside the rectangle to select it and --- 408,421 ---- and reshapes objects (double-click will ``de-select'' all selected objects in vertex mode). When an object is selected, it is highlighted by ! little squares (referred as handles here) at the corners/vertices ! (using the Tgif.HandleSize X default, ! the sizes of the handles can be customized). Dragging one of the handles ! stretches/reshapes the selected object. If one wants to move a selected ! object, one should not drag the handles. Instead, one should drag other parts of the object. For example, if the object is a hollow rectangle (the fill is NONE and the pen is not NONE), in order to select ! the rectangle, one should to click on the outline of the rectangle with the left mouse button. If one would like to move the rectangle, one ! should drag the outline of the rectangle with the left mouse button. If the object is a filled rectangle (fill is not NONE), the one can click inside the rectangle to select it and *************** *** 407,422 **** it to be de-selected. When stretching objects (not reshaping poly-type objects), ! holding down the key \fIafter\fR stretching is initiated results in ! proportional stretching being activated (basically, a scale operation is being performed). ! Text and rigid icon objects can not be stretched or scaled. ! (Rigid icon objects are icons that do not have an inherited ! attribute whose name is empty and whose value is the string "not_rigid". ! Rigid icon objects inside a non-rigid icon object are considered non-rigid.) Clicking the middle mouse button while the key is held down will activate the \fIteleport\fR (or \fItravel\fR), the \fIlaunch\fR, or the \fIexecute internal command\fR mechanism. See the sections on ! TELEPORT, LAUNCH APPLICATIONS, and INTERNAL COMMANDS for details. Teleporting has precedence over launching, which has precedence over executing an internal command. --- 430,442 ---- it to be de-selected. When stretching objects (not reshaping poly-type objects), ! holding down the key \fIafter\fR stretching is initiated activates ! proportional stretching (basically, a scale operation is being performed). ! In non-stretchable text mode, text objects can not be stretched or scaled. Clicking the middle mouse button while the key is held down will activate the \fIteleport\fR (or \fItravel\fR), the \fIlaunch\fR, or the \fIexecute internal command\fR mechanism. See the sections on ! TELEPORT/HYPERJUMP, LAUNCH APPLICATIONS, and INTERNAL COMMANDS for details. Teleporting has precedence over launching, which has precedence over executing an internal command. *************** *** 442,448 **** .PP .RS ! Objects can be locked (through the #< command). Locked object are shown ! with gray handles, and they can not be moved, stretched, flipped, ! or rotated. When objects are grouped, the resulting grouped object will also be locked if any one of it's constituents is locked. Locked objects can have their properties, such as color, font, pen, etc., --- 462,470 ---- .PP .RS ! Objects can be locked (through the #< keyboard command). ! Locked object are shown ! with gray handles, and they can not be moved, stretched, flipped, rotated, ! or sheared. ! When objects are grouped, the resulting grouped object will also be locked if any one of it's constituents is locked. Locked objects can have their properties, such as color, font, pen, etc., *************** *** 452,456 **** .RS If the current move/stretch mode is of the constrained type (activated ! and deactivated by the #@ command), top-level polylines will have the following behavior. In a move operation, if both endpoints of a polyline lie inside the objects being moved, then the whole polyline --- 474,478 ---- .RS If the current move/stretch mode is of the constrained type (activated ! and deactivated by the #@ keyboard command), top-level polylines will have the following behavior. In a move operation, if both endpoints of a polyline lie inside the objects being moved, then the whole polyline *************** *** 471,475 **** text (a vertical-bar cursor is shown), clicking the left mouse button causes selected text to go into edit mode. ! Clicking the left mouse button while the key is held down highlights substrings of the text. Double-clicking causes a word to be selected. In edit mode, --- 493,498 ---- text (a vertical-bar cursor is shown), clicking the left mouse button causes selected text to go into edit mode. ! Dragging the left mouse button or ! clicking the left mouse button while the key is held down highlights substrings of the text. Double-clicking causes a word to be selected. In edit mode, *************** *** 504,508 **** .RS In all drawing modes (other than the text mode), pressing the ! key cancels the drawing of the current object. .RE .PP --- 527,531 ---- .RS In all drawing modes (other than the text mode), pressing the ! key cancels the drawing (creation) of the current object. .RE .PP *************** *** 542,551 **** grid system is used. When the page reduction/magnification is not set at 100%, the markings do not correspond to the above mentioned ! units any more. .TP .I Interrupt/Hyperspace Window .br This window is right below the Message Window and to the left of the ! horizontal ruler. When the Tgif*IntrCheckInterval X default has a positive value, an interrupt icon is visible when the Canvas Window is being redrawn. If the user clicks on this window when the --- 565,574 ---- grid system is used. When the page reduction/magnification is not set at 100%, the markings do not correspond to the above mentioned ! units any more (this is considered as a known bug). .TP .I Interrupt/Hyperspace Window .br This window is right below the Message Window and to the left of the ! horizontal ruler. When the Tgif.IntrCheckInterval X default has a positive value, an interrupt icon is visible when the Canvas Window is being redrawn. If the user clicks on this window when the *************** *** 562,565 **** --- 585,607 ---- .RE .TP + .I Page Control Window + .br + The Page Control Window is to the left of the horizontal scrollbar. + This window is empty is the current page mode is set to the \fItijled\fR + page mode. + If the current page mode is set to the \fIstacked\fR page mode, + each page has a tab in tabs subwindow of this window. Clicking + the left mouse button + on a tab goes to the corresponding page. Clicking the middle mouse + button brings up the Page Menu. When there are too many pages in + a drawing so that one can not see the tabs for all the pages, one + can use the icons to the left side of the Page Control Window to + scroll the tabs subwindow. Clicking on the first icon scrolls the + tabs subwindow such that the first tab is visible. Clicking on + the 4th icon scrolls the tabs subwindow such that the last tab is + visible. Clicking on the 2nd icon scrolls the tabs subwindow towards + the first tab by one tab and clicking on the 3rd icon scrolls the tabs + subwindow towards the last tab by one tab. + .TP .I Status Window This window is below the horizontal scrollbar. It shows what action *************** *** 574,578 **** .RS By default, when this window is displaying mouse button status, ! right-handed mouse is assumed. Setting the Tgif*ReverseMouseStatusButtons X default to true will reverse the status (as if a left-handed mouse is used). .RE --- 616,620 ---- .RS By default, when this window is displaying mouse button status, ! right-handed mouse is assumed. Setting the Tgif.ReverseMouseStatusButtons X default to true will reverse the status (as if a left-handed mouse is used). .RE *************** *** 583,596 **** if it is dragged far enough horizontally (the distance is determined by the ! setting of the Tgif*MainMenuPinDistance X default). Clicking the right mouse button in a pinned menu will cause it to disappear. Dragging the left mouse button in a pinned menu will reposition the menu. ! Clicking the middle mouse button in it will activate the clicked item. .\" .SH NON-ALPHANUMERIC KEY BINDINGS .\" Most operations that can be performed in tgif can be activated ! through non-alphanumeric keys (a few operations can only be activated through popup menus or shortcut keys). This section summarizes the operations that can be activated --- 625,639 ---- if it is dragged far enough horizontally (the distance is determined by the ! setting of the Tgif.MainMenuPinDistance X default). Clicking the right mouse button in a pinned menu will cause it to disappear. Dragging the left mouse button in a pinned menu will reposition the menu. ! Clicking the middle mouse button in it will activate the item right ! below the mouse. .\" .SH NON-ALPHANUMERIC KEY BINDINGS .\" Most operations that can be performed in tgif can be activated ! through non-alphanumeric keys (some operations can only be activated through popup menus or shortcut keys). This section summarizes the operations that can be activated *************** *** 616,620 **** ^n open a new un-named object file ^o open an object file to edit ! ^p print the current page (or export in xbm, xpm, eps, or ps formats) ^q quit tgif ^r redraw the page --- 659,664 ---- ^n open a new un-named object file ^o open an object file to edit ! ^p print the current page (or export in XBM, XPM, GIF, HTML, EPS, or PS ! formats) ^q quit tgif ^r redraw the page *************** *** 725,732 **** the function of the non-alphanumeric key presses to activate commands. ! This is done through the use of the Tgif*ShortCuts X default. (Please note that these shortcut keys are only active when the drawing mode is \fInot\fR set to the text mode.) ! The Tgif*ShortCuts consists of a list of items, each of which specifies the bindings between a key (may be case sensitive) and a command. The items are --- 769,776 ---- the function of the non-alphanumeric key presses to activate commands. ! This is done through the use of the Tgif.ShortCuts X default. (Please note that these shortcut keys are only active when the drawing mode is \fInot\fR set to the text mode.) ! The Tgif.ShortCuts consists of a list of items, each of which specifies the bindings between a key (may be case sensitive) and a command. The items are *************** *** 756,760 **** Delete() and 'a' or 'A' to SelectAll(): .PP ! Tgif*ShortCuts: !x:Delete() \\n\\ .br a:SelectAll() --- 800,804 ---- Delete() and 'a' or 'A' to SelectAll(): .PP ! Tgif.ShortCuts: !x:Delete() \\n\\ .br a:SelectAll() *************** *** 791,794 **** --- 835,840 ---- ToggleOneMotionSelMove() OneMotionSelMove, ClickSelClickMove ToggleHyperSpace() GoHyperSpace, LeaveHyperSpace + ImportOtherFileType() (import using a filter named ) + BrowseOtherType() (browse using a filter named ) .br .PP *************** *** 799,802 **** --- 845,992 ---- DrawPolygon(), DrawRCBox(), DrawArc(), and SelectVertexMode(). .\" + .SH COLORS AND COLORMAPS + .\" + In most X environments, only 256 colors can be displayed at once. + In these environment, if an application needs 128 colors and + another application needs a totally different 129 colors, both + applications can not be displayed at once with all the colors + they want. X solves the problem by allowing applications to + use their own colormaps (known as private colormaps). Each + private colormap can have at most 256 colors. There is also a + shared colormap available for applications that do not wish to + use private colormaps. The main problem with using private + colormaps is that a user will see the the well-known + \fIcolormap flashing\fR phenomenon when he/she + switchs in and out of applications that use private colormaps. + .PP + Tgif uses the shared colormap initially. When it needs more + color than what is available in the shared colormap, it will use a + private colormap automatically. When tgif no longer needs the + extra colors, it does \fInot\fR automatically revert to using + the shared colormap because it needs to be able to undo + operations that use the extra colors. If one does no longer needs + the objects in the undo buffer, one can select FlushUndoBuffer() + from the Edit Menu to flush the undo buffer. At this point, + tgif will attempt to use the shared colormap to avoid the + colormap flashing problem. If one often uses XPM and GIF objects, + one can bind the f key to the FlushUndoBuffer() operation + by setting the following X default and uses the f key + to regain entries in the colormap when an XPM/GIF object is deleted: + .PP + .RS + Tgif.ShortCuts: !F:FlushUndoBuffer() + .br + .RE + .br + .PP + Even when a private colormap is used, only 256 colors can be used + at once. Therefore, it is not possible to import two 256-colors GIF files + into the same drawing unless the colors are somehow reduced to fit in + the 256-colors colormap. This can be done through \fIdithering\fR + which is described in the IMPORT RASTER GRAPHICS section below. + .\" + .SH IMPORT RASTER GRAPHICS + .\" + The native raster graphics formats that tgif supports are the XBM and + XPM formats. In order to import color raster graphics file of another + format, tgif can work with external tools that can + convert non-XPM format files to an XPM files. A popular raster + format conversion toolkit is the \fIpbmplus\fR(1) (also known as the + \fInetpbm\fR(1)) toolkit. It can convert a GIF file (e.g., "foo.gif") + to an XPM file (e.g., "foo.xpm") with the following command + (\fIgiftopnm\fR is in netpbm; an earlier version of it called + \fIgiftoppm\fR exists in pbmplus): + .PP + .RS + giftopnm foo.gif | ppmtoxpm > foo.xpm + .br + .RE + .br + .PP + When working with tgif, a GIF file name will be supplied by + tgif and the output of ppmtoxpm will be directly read by tgif + through a pipe; + therefore, the previous sequence is replaced by an X default + containing the following form (which happens to be the + default setting for the Tgif.GifToXpm X default): + .PP + .RS + giftopnm %s | ppmtoxpm + .br + .RE + .br + .PP + The "%s" is to be replaced by a GIF file name. The above is + referred to as a \fIfilter\fR. + .PP + To be able to import other types of raster graphics files, one can + use Tgif.MaxImportFilters and Tgif.ImportFilter# X resources to + specify additional filters. + The following example adds a JPEG filter: + .PP + .RS + Tgif.MaxImportFilters: 1 + .br + Tgif.ImportFilter0: \\n\\ + .br + JPEG-222 jpg;jpeg \\n\\ + .br + djpeg -gif -colors 222 %s | \\n\\ + .br + giftopnm | ppmtoxpm + .br + .RE + .br + .PP + The "JPEG-222" above is the name given to the filter + (must not contain any space character). + The "jpg;jpeg" are possible file extensions separated + by semicolons. The rest is the filter specification. The + djpeg(1) program is part of the libjpeg distribution. It can convert + a JPEG file to a GIF file. The above filter also restrict the + output to have a maximum of 222 colors. (The 222 is chosen arbitrarily. + Many XPM files use some ``standard'' 32 colors, so one may want to + leave room form them.) + .PP + To invoke a filter, one can select ImportOtherFile() or BrowseOther() + commands from the File Menu. This will bring up a dialogbox listing the + available filters by their names (e.g., "JPEG-222"). After selecting + a filter, tgif continues in a similar manner as with invoking + ImportXPixmap() or BrowseXPixmap() commands from the File Menu. + .PP + The above example is not suitable for the BrowseOther() command because + only 256 colors can be used in a drawing (as explained in the COLORS + AND COLORMAPS section above). In order for BrowseOther() to work well, + one can use \fIdithering\fR to represent an image with a \fIdithered\fR + image that only uses a set of standard colors. The example below uses + ppmdither from the pbmplus/netpbm toolkit: + .PP + .RS + Tgif.MaxImportFilters: 2 + .br + Tgif.ImportFilter0: \\n\\ + .br + JPEG-222 jpg;jpeg \\n\\ + .br + djpeg -gif -colors 222 %s | \\n\\ + .br + giftopnm | ppmtoxpm + .br + Tgif.ImportFilter1: \\n\\ + .br + JPEG-dithered jpg;jpeg \\n\\ + .br + djpeg -gif %s | \\n\\ + .br + giftopnm | ppmdither | ppmtoxpm + .br + .RE + .br + .PP + If one is working with one JPEG image, one can select ImportOtherFile() + then select "JPEG-222" to get as many as 222 colors. If one is + browsing for JPEG images, one can select BrowseOther() then select + "JPEG-dithered". + .\" .SH OBJECT NAMES .\" *************** *** 806,813 **** of the attribute is the \fIname\fR of the object. Subobject of a composite object can be named using a \fIpath\fR, e.g., ! \fI!!\fR, where \fI\fR is the name of a top-level object ! which directly contains \fI\fR which directly contains \fI\fR. .PP ! The following is \fInot fully\fR support, yet (only the \fI#\fR form is supported at this time). Every object in a tgif file can be uniquely named using the notation --- 996,1003 ---- of the attribute is the \fIname\fR of the object. Subobject of a composite object can be named using a \fIpath\fR, e.g., ! \fI!!!...\fR, where \fI\fR is the name of a top-level object ! which directly contains \fI\fR which directly contains \fI\fR, etc. .PP ! The following is \fInot fully\fR supported, yet (only the \fI#\fR form is supported at this time). Every object in a tgif file can be uniquely named using the notation *************** *** 846,850 **** special menu, such as #m, #n, #j, #-, and ^#h). .\" ! .SH TELEPORT .\" Tgif provides the mechanism to travel between .obj and .sym files. --- 1036,1040 ---- special menu, such as #m, #n, #j, #-, and ^#h). .\" ! .SH TELEPORT/HYPERJUMP .\" Tgif provides the mechanism to travel between .obj and .sym files. *************** *** 867,873 **** If the current file is modified, the user is prompted to save the file before traveling to the next file. - If there are multiple \fIhref\fR attributes on the object, - but are in different colors, tgif will use the one that has - the same color as the color appearing in the Choice Window. If the value part of the \fIhref\fR attribute starts with the '/' character, the value is treated as an absolute file name; --- 1057,1060 ---- *************** *** 878,885 **** Tgif provides a \fIhyperspace\fR mode to facilitate traveling between .obj files. The hyperspace mode is entered when ! GoHyperSpace() is selected from the Navigate Menu. When in ! hyperspace, the little window below the Message Window will show a little space ship. The hyperspace mode is also automatically ! entered when a remote URL is opened (unless the Tgif*AutoHyperSpaceOnRemote X default is set to false). .PP --- 1065,1072 ---- Tgif provides a \fIhyperspace\fR mode to facilitate traveling between .obj files. The hyperspace mode is entered when ! GoHyperSpace() is selected from the Navigate Menu. In ! hyperspace mode, the little window below the Message Window will show a little space ship. The hyperspace mode is also automatically ! entered when a remote URL is opened (unless the Tgif.AutoHyperSpaceOnRemote X default is set to false). .PP *************** *** 889,895 **** will invoke some actions. An object is a hot-link if it contains an attribute described in either ! the TELEPORT, LAUNCH APPLICATIONS, or INTERNAL COMMANDS section. .PP ! The hyperspace mode is exited when the drawing mode is changes. .\" .SH LAUNCH APPLICATIONS --- 1076,1083 ---- will invoke some actions. An object is a hot-link if it contains an attribute described in either ! the TELEPORT/HYPERJUMP, LAUNCH APPLICATIONS, or INTERNAL COMMANDS section. .PP ! The hyperspace mode is exited when the drawing mode is changed or ! the LeaveHyperSpace() is selected from the Navigate Menu. .\" .SH LAUNCH APPLICATIONS *************** *** 901,905 **** that object. If such an attribute is found, the value part of the attribute is interpreted as a sh(1) command to execute. ! Same color rule applies as described in the TELEPORT section above. If the command ends with the '&' character, tgif forks itself (what actual happens depends on whether the _BACKGROUND_DONT_FORK --- 1089,1093 ---- that object. If such an attribute is found, the value part of the attribute is interpreted as a sh(1) command to execute. ! Same color rule applies as described in the TELEPORT/HYPERJUMP section above. If the command ends with the '&' character, tgif forks itself (what actual happens depends on whether the _BACKGROUND_DONT_FORK *************** *** 924,930 **** keyboard command. ! By default, launching of an application is disabled in \fIhyperspace\fR mode. ! However, this can be overridden by the Tgif*AllowLaunchInHyperSpace X default ! setting. .\" .SH INTERNAL COMMANDS --- 1112,1122 ---- keyboard command. ! By default, launching of an application is by default disabled in the ! \fIhyperspace\fR mode for security considerations ! (this can be overridden by the Tgif.AllowLaunchInHyperSpace X default ! setting). ! If a lunch command is encountered in the \fIhyperspace\fR mode, ! the command is displayed and the user is prompted to see if ! he/she wants to execute the command. .\" .SH INTERNAL COMMANDS *************** *** 936,940 **** attribute is found, the value part of the attribute is interpreted as a list of internal commands (separated by semicolor) to execute. ! Same color rule applies as described in the TELEPORT section above. A command usually takes the form: .PP --- 1128,1132 ---- attribute is found, the value part of the attribute is interpreted as a list of internal commands (separated by semicolor) to execute. ! Same color rule applies as described in the TELEPORT/HYPERJUMP section above. A command usually takes the form: .PP *************** *** 1090,1096 **** "test-cgi" CGI server script with the last_name and first_name arguments. .PP ! For a detailed description of CGI scripts, the reader is referred to the ! World-Wide-Web page , ! titled "The Common Gateway Interface". .RE .TP --- 1282,1286 ---- "test-cgi" CGI server script with the last_name and first_name arguments. .PP ! For a detailed description of CGI scripts, the reader is referred to [2]. .RE .TP *************** *** 1261,1296 **** attribute then executes the internal command specified by the attribute in the new file. - .\" - .SH ARITHMETIC EXPRESSIONS - .\" - Certain internal commands allow arithmetic expressions as arguments. - Infix notation is used. Supported operators (and their precedences) - are listed below. - .PP - ? 1 if-then-else, e.g. ? : - : 2 if-then-else, e.g. ? : - || 3 logical OR - && 4 logical AND - | 5 bit-wise OR - ^ 5 bit-wise XOR - & 5 bit-wise AND - == 6 equal - != 6 not-equal - > 7 greater than - < 7 less than - >= 7 greater than or equal to - <= 7 less than or equal to - << 8 shift left - >> 8 shift right - + 9 add - - 9 subtract - * 10 multiple - / 10 divide - // 10 integer divide - % 10 mod - ! 11 logical NOT - ~ 11 bit-wise invert/NOT - ) 12 closed parenthesis - ( 13 open parenthesis .TP .I show_attr() --- 1451,1454 ---- *************** *** 1306,1309 **** --- 1464,1475 ---- This command makes the name part of the attribute invisible. .TP + .I show_value() + This command makes the attribute whose name is empty and whose + value is visible. + .TP + .I hide_value() + This command makes the attribute whose name is empty and whose + value is invisible. + .TP .I get_attr_bbox(,,,,) This command stores the absolute coordinate of the bounding box *************** *** 1377,1381 **** .TP .I post_attr_and_get_cgi_result(,,) ! This command makes a HTTP request using the \fIPOST\fR method. names the attribute that contains the URL (which usually names a CGI server script). names --- 1543,1547 ---- .TP .I post_attr_and_get_cgi_result(,,) ! This command makes an HTTP request using the \fIPOST\fR method. names the attribute that contains the URL (which usually names a CGI server script). names *************** *** 1394,1401 **** --- 1560,1570 ---- exec=post_attr_and_get_cgi_result(url,query,result) .RE + .RE .PP + .RS Executing this object will post "Hello World!" to the specified CGI script. In this case, the result of executing the script just echoes "Hello World!" back (along with some other bookkeeping information). + .RE .TP .I navigate_back() *************** *** 1438,1443 **** --- 1607,1615 ---- while($() <= ,\fIloop\fR) .RE + .RE .PP + .RS where \fIloop\fR has the following value: + .RE .PP .RS *************** *** 1449,1472 **** Please note that , , and are only evaluated once prior the execution of this command. .\" ! .SH GENERATING NCSA IMAGEMAP AND CERN CLICKABLE IMAGE FILES .\" This section describes how to generate NCSA imagemap and CERN clickable image files. ! The Tgif*ImageMapFileFormat X default decides whether to generate a NCSA imagemap or a CERN clickable image file. Since the two formats are very similar, we will only discuss how to generate NCSA imagemap files. ! For more information about NCSA imagemap, please see ! . ! For more information about CERN clickable image, please see ! . .PP ! The Tgif*GenerateImageMap X default should be set to ``true'' to enable the imagemap generation. When printing in the GIF format (see the BASIC FUNCTIONALITIES section about printing), an XPM file (which will be removed at the end of this process) is generated first. ! (The value specified by the Tgif*InitExportPixelTrim X default is used to trim extra pixels. Using these values forms an escape mechanism to fix an idiosyncrasy that tgif can not figure out exactly --- 1621,1694 ---- Please note that , , and are only evaluated once prior the execution of this command. + .TP + .I set_file_not_modified() + This command sets the file modified flag to false. + .TP + .I new_id() + This command generates an object ID, which is (unique in + the current drawing, and stores it in . + .TP + .I rotate_selected_obj() + This command rotates the selected object by degrees. + Positive angle is clockwise. + .TP + .I call_simple_shortcut() + This command calls a shortcut named which takes no arguments. + Please see the SHORTCUTS section for a description of shortcuts. + .TP + .I call_one_arg_shortcut(,) + This command calls a shortcut named that takes one argument + and pass to it. + Please see the SHORTCUTS section for a description of shortcuts. + .\" + .SH ARITHMETIC EXPRESSIONS + .\" + Certain internal commands allow arithmetic expressions as arguments. + Infix notation is used. Supported operators (and their precedences) + are listed below. + .PP + ? 1 if-then-else, e.g. ? : + : 2 if-then-else, e.g. ? : + || 3 logical OR + && 4 logical AND + | 5 bit-wise OR + ^ 5 bit-wise XOR + & 5 bit-wise AND + == 6 equal + != 6 not-equal + > 7 greater than + < 7 less than + >= 7 greater than or equal to + <= 7 less than or equal to + << 8 shift left + >> 8 shift right + + 9 add + - 9 subtract + * 10 multiple + / 10 divide + // 10 integer divide + % 10 mod + ! 11 logical NOT + ~ 11 bit-wise invert/NOT + ) 12 closed parenthesis + ( 13 open parenthesis .\" ! .SH GENERATING IMAGEMAP FILES .\" This section describes how to generate NCSA imagemap and CERN clickable image files. ! The Tgif.ImageMapFileFormat X default decides whether to generate a NCSA imagemap or a CERN clickable image file. Since the two formats are very similar, we will only discuss how to generate NCSA imagemap files. ! For more information about NCSA imagemap, please see [3]. ! For more information about CERN clickable image, please see [4]. .PP ! The Tgif.GenerateImageMap X default should be set to ``true'' to enable the imagemap generation. When printing in the GIF format (see the BASIC FUNCTIONALITIES section about printing), an XPM file (which will be removed at the end of this process) is generated first. ! (The value specified by the Tgif.InitExportPixelTrim X default is used to trim extra pixels. Using these values forms an escape mechanism to fix an idiosyncrasy that tgif can not figure out exactly *************** *** 1474,1485 **** .PP The XPM version is specified by ! the Tgif*XPmOutputVersion X default unless the Tgif*UseXPmVersion1ForImageMap X default is set to ``true'', which forces the XPM1 format. Then the command ! specified by the Tgif*XpmToGif X default is executed to convert the XPM file into a GIF (Generic Interchange Format) file which can be used by software such as NCSA's Mosaic(1). The file extension for the GIF file is ! specified by the Tgif*GifFileExtension X default. Together with the GIF file, an imagemap file with file extension specified by the ! Tgif*ImageMapFileExtension X default is generated. The content of the imagemap is generated as follows. .PP --- 1696,1707 ---- .PP The XPM version is specified by ! the Tgif.XPmOutputVersion X default unless the Tgif.UseXPmVersion1ForImageMap X default is set to ``true'', which forces the XPM1 format. Then the command ! specified by the Tgif.XpmToGif X default is executed to convert the XPM file into a GIF (Generic Interchange Format) file which can be used by software such as NCSA's Mosaic(1). The file extension for the GIF file is ! specified by the Tgif.GifFileExtension X default. Together with the GIF file, an imagemap file with file extension specified by the ! Tgif.ImageMapFileExtension X default is generated. The content of the imagemap is generated as follows. .PP *************** *** 1494,1503 **** method is used. .\" ! .SH GENERATING EPSI FILE FOR SOME MICROSOFT WINDOWS APPLICATIONS .\" Some Microsoft Windows (TM) applications do not understand standard PostScript %%BeginPreview, %%EndImage, and %%EndPreview comments. This section describes how to generate an EPSI file which is understood ! by them. If the Tgif*TiffEPSI X default is set to ``true'' and one prints in the EPSI format, this feature will be invoked. In this case, the generated EPSI file will contain 30 bytes of binary information in --- 1716,1725 ---- method is used. .\" ! .SH GENERATING MICROSOFT WINDOWS EPSI FILES .\" Some Microsoft Windows (TM) applications do not understand standard PostScript %%BeginPreview, %%EndImage, and %%EndPreview comments. This section describes how to generate an EPSI file which is understood ! by them. If the Tgif.TiffEPSI X default is set to ``true'' and one prints in the EPSI format, this feature will be invoked. In this case, the generated EPSI file will contain 30 bytes of binary information in *************** *** 1510,1514 **** When this feature is enabled, tgif generates a normal EPSI file first, then dump the current content of the file ! into an X11 bitmap file. The command specified in Tgif*XbmToTiff is executed to generate a TIFF image which is then append at the end of the EPSI file. --- 1732,1736 ---- When this feature is enabled, tgif generates a normal EPSI file first, then dump the current content of the file ! into an X11 bitmap file. The command specified in Tgif.XbmToTiff is executed to generate a TIFF image which is then append at the end of the EPSI file. *************** *** 1529,1533 **** .SH UNDO/REDO .\" ! Most operations can be undone and redone. The Tgif*HistoryDepth X default controls the size of the undo buffer. If it is set to -1, then the undo buffer's size is infinite. The undo buffer --- 1751,1755 ---- .SH UNDO/REDO .\" ! Most operations can be undone and redone. The Tgif.HistoryDepth X default controls the size of the undo buffer. If it is set to -1, then the undo buffer's size is infinite. The undo buffer *************** *** 1606,1612 **** .\" In addition to the Times, Courier, Helvetica, NewCentury, and Symbol fonts, ! additional fonts can be specified using the Tgif*AdditionalFonts X default. (The default screen fonts can also be replaced, please see ! Tgif*HasAlternateDefaultFonts in the X DEFAULTS section for more details.) Each additional font requires \fI4\fR parts, one for each font style (in the order of Roman, Bold, Italic, and BoldItalic). --- 1828,1834 ---- .\" In addition to the Times, Courier, Helvetica, NewCentury, and Symbol fonts, ! additional fonts can be specified using the Tgif.AdditionalFonts X default. (The default screen fonts can also be replaced, please see ! Tgif.HasAlternateDefaultFonts in the X DEFAULTS section for more details.) Each additional font requires \fI4\fR parts, one for each font style (in the order of Roman, Bold, Italic, and BoldItalic). *************** *** 1621,1628 **** .PP For example, if one wants to use the X Lucida font to represent the ! PostScript ZapfChancery-MediumItalic font, one can set Tgif*AdditionalFonts as follows: .PP ! Tgif*AdditionalFonts: \\n\\ .br lucida-medium-r-normal \\n\\ --- 1843,1850 ---- .PP For example, if one wants to use the X Lucida font to represent the ! PostScript ZapfChancery-MediumItalic font, one can set Tgif.AdditionalFonts as follows: .PP ! Tgif.AdditionalFonts: \\n\\ .br lucida-medium-r-normal \\n\\ *************** *** 1665,1669 **** actual X font used will be the specified string with "%d" replaced by the font size. The encoding string (second string) is ignored (but ! must be present). The font name prefix (please see Tgif*FontNamePrefix entry in the X DEFAULTS section) is also ignored. .\" --- 1887,1891 ---- actual X font used will be the specified string with "%d" replaced by the font size. The encoding string (second string) is ignored (but ! must be present). The font name prefix (please see Tgif.FontNamePrefix entry in the X DEFAULTS section) is also ignored. .\" *************** *** 1702,1712 **** This specifies the page numbers in a multipage drawing. Please see the MULTIPAGE DRAWING section for details. - .IP not_rigid - If an attribute's name is empty and the value is \fInot_rigid\fR, then - the object (referred to as the owner object) to which that attribute belongs - is stretchable. By default, - all objects are stretchable, except icon objects; therefore, this attribute - is only useful if the owner object is an icon object. - (Rigid icon objects inside a non-rigid icon object are considered non-rigid.) .IP auto_center_attr If an attribute's name is empty and the value is \fIauto_center_attr\fR, then --- 1924,1927 ---- *************** *** 1733,1737 **** forced to have 3 vertices and the middle vertex of the spline object is automatically adjusted when an endpoint is moved. ! .IP auto_exec= If such a file attribute exists, the value is executed when the file is opened (unless the file is opened as a result of executing the --- 1948,1952 ---- forced to have 3 vertices and the middle vertex of the spline object is automatically adjusted when an endpoint is moved. ! .IP auto_exec= If such a file attribute exists, the value is executed when the file is opened (unless the file is opened as a result of executing the *************** *** 1834,1842 **** .PP First, the X defaults are looked up to see if there is an external ! viewer specified for the file. Please see Tgif*@@@Viewer in the X DEFAULTS section below for details. If there's no match, the type/subtype is matched against entries in the MIME-types file. The default MIME-types file is \fI.mime.types\fR in user's home directory. ! Please see Tgif*MimeTypesFile in the X DEFAULTS section on how to override the default MIME-types file. The first field in each line of the MIME-types file specifies type/subtype information. --- 2049,2057 ---- .PP First, the X defaults are looked up to see if there is an external ! viewer specified for the file. Please see Tgif.@@@Viewer in the X DEFAULTS section below for details. If there's no match, the type/subtype is matched against entries in the MIME-types file. The default MIME-types file is \fI.mime.types\fR in user's home directory. ! Please see Tgif.MimeTypesFile in the X DEFAULTS section on how to override the default MIME-types file. The first field in each line of the MIME-types file specifies type/subtype information. *************** *** 1902,1906 **** color visuals). Tools that generate XPM1 format files are ! (they might have been upgraded to support XPM3), \fIpbmplus\fR, which is a set of bitmap and pixmap conversion freeware (together with \fIxv\fR, the colors for pixmap objects can be manipulated), --- 2117,2122 ---- color visuals). Tools that generate XPM1 format files are ! (they might have been upgraded to support XPM3), \fIpbmplus\fR ! (or \fInetpbm\fR), which is a set of bitmap and pixmap conversion freeware (together with \fIxv\fR, the colors for pixmap objects can be manipulated), *************** *** 1908,1912 **** can display XPM1 files. Tools that can generate XPM3 format files are, for example, ! \fIxsnap\fR and \fIsxpm\fR. For each color specified in the color string, a color cell is allocated. If the allocation fails, --- 2124,2128 ---- can display XPM1 files. Tools that can generate XPM3 format files are, for example, ! \fIxsnap\fR(1) and \fIsxpm\fR(1). For each color specified in the color string, a color cell is allocated. If the allocation fails, *************** *** 1914,1918 **** If the first color character is a back-quote (`) or a space, then the corresponding color is substituted with the \fIbackground\fR ! color of the tgif window if the Tgif*GuessXPmBgColor X default is set to ``true''. (This design choice is made because the pixmap will then look ``right'' on both regular and reverse video.) --- 2130,2134 ---- If the first color character is a back-quote (`) or a space, then the corresponding color is substituted with the \fIbackground\fR ! color of the tgif window if the Tgif.GuessXPmBgColor X default is set to ``true''. (This design choice is made because the pixmap will then look ``right'' on both regular and reverse video.) *************** *** 2042,2111 **** .\" .TP ! .I Tgif*Geometry: WIDTHxHEIGHT+X+Y .TP ! .I Tgif*IconGeometry: +X+Y .TP ! .I Tgif*Foreground: COLORSTRING The default foreground color is Black. .TP ! .I Tgif*Background: COLORSTRING The default background color is White. .TP ! .I Tgif*BorderColor: COLORSTRING If not specified, the foreground color will be used. .TP ! .I Tgif*ReverseVideo: [on,off] For black and white terminal, reverse video ``on'' means the background is black. For color terminal, reverse video ``on'' means the background ! is specified by the Tgif*Foreground color. The default is off. .TP ! .I Tgif*InitialFont: [Times,Courier,Helvetica,NewCentury,Symbol] This specifies the initial font. The default is Courier. .TP ! .I Tgif*InitialFontStyle: [Roman,Bold,Italic,BoldItalic] This specifies the initial font style. The default is Roman. .TP ! .I Tgif*InitialFontJust: [Left,Center,Right] This specifies the initial font justification. The default is Left. .TP ! .I Tgif*InitialFontDPI: [75,100] \fIObsoleted\fR. .TP ! .I Tgif*InitialFontSizeIndex: [0,1,2,3,4,5] \fIObsoleted\fR. .TP ! .I Tgif*InitialFontSize: NUMBER This specifies the size of the start-up font. The default is 17. .TP ! .I Tgif*MsgFontSizeIndex: [0,1,2,3,4,5] \fIObsoleted\fR. .TP ! .I Tgif*MsgFontSize: NUMBER This specifies the size of the font used for messages, menues, and popup windows. The default is 17. .TP ! .I Tgif*RulerFontSize: NUMBER This specifies the size of the font used for ruler windows. The default is 10. .TP ! .I Tgif*DefaultFontSize: NUMBER This specifies the size of the font to be used when a requested for a font size can not satisfied. This size \fImust\fR exist for \fIall\fR fonts used in tgif. The default is 14. .TP ! .I Tgif*FontSizes: NUMBER1 NUMBER2, ... This specified the font sizes. The default is \fI8 10 11 12 14 17 18 20 24 25 34\fR. .TP ! .I Tgif*AdditionalFonts: FONT_SPEC1 FONT_SPEC2 ... In addition to the Times, Courier, Helvetica, NewCentury, and Symbol fonts, additional fonts can be specified here. Please see the ADDITIONAL FONTS section for details. .TP ! .I Tgif*FontNamePrefix: [\fI-*\fR, \fI*\fR] This specified the prefix to be used when tgif makes a request to the X server. The default is \fI-*\fR. Certain fonts have obscure font names (e.g., does --- 2258,2327 ---- .\" .TP ! .I Tgif.Geometry: WIDTHxHEIGHT+X+Y .TP ! .I Tgif.IconGeometry: +X+Y .TP ! .I Tgif.Foreground: COLORSTRING The default foreground color is Black. .TP ! .I Tgif.Background: COLORSTRING The default background color is White. .TP ! .I Tgif.BorderColor: COLORSTRING If not specified, the foreground color will be used. .TP ! .I Tgif.ReverseVideo: [on,off] For black and white terminal, reverse video ``on'' means the background is black. For color terminal, reverse video ``on'' means the background ! is specified by the Tgif.Foreground color. The default is off. .TP ! .I Tgif.InitialFont: [Times,Courier,Helvetica,NewCentury,Symbol] This specifies the initial font. The default is Courier. .TP ! .I Tgif.InitialFontStyle: [Roman,Bold,Italic,BoldItalic] This specifies the initial font style. The default is Roman. .TP ! .I Tgif.InitialFontJust: [Left,Center,Right] This specifies the initial font justification. The default is Left. .TP ! .I Tgif.InitialFontDPI: [75,100] \fIObsoleted\fR. .TP ! .I Tgif.InitialFontSizeIndex: [0,1,2,3,4,5] \fIObsoleted\fR. .TP ! .I Tgif.InitialFontSize: NUMBER This specifies the size of the start-up font. The default is 17. .TP ! .I Tgif.MsgFontSizeIndex: [0,1,2,3,4,5] \fIObsoleted\fR. .TP ! .I Tgif.MsgFontSize: NUMBER This specifies the size of the font used for messages, menues, and popup windows. The default is 17. .TP ! .I Tgif.RulerFontSize: NUMBER This specifies the size of the font used for ruler windows. The default is 10. .TP ! .I Tgif.DefaultFontSize: NUMBER This specifies the size of the font to be used when a requested for a font size can not satisfied. This size \fImust\fR exist for \fIall\fR fonts used in tgif. The default is 14. .TP ! .I Tgif.FontSizes: NUMBER1 NUMBER2, ... This specified the font sizes. The default is \fI8 10 11 12 14 17 18 20 24 25 34\fR. .TP ! .I Tgif.AdditionalFonts: FONT_SPEC1 FONT_SPEC2 ... In addition to the Times, Courier, Helvetica, NewCentury, and Symbol fonts, additional fonts can be specified here. Please see the ADDITIONAL FONTS section for details. .TP ! .I Tgif.FontNamePrefix: [\fI-*\fR, \fI*\fR] This specified the prefix to be used when tgif makes a request to the X server. The default is \fI-*\fR. Certain fonts have obscure font names (e.g., does *************** *** 2113,2117 **** X default can be set to \fI*\fR. .TP ! .I Tgif*HasAlternateDefaultFonts: [true,false] The default value of this X default is false. If it set to ``false'', tgif uses the iso8859 registry --- 2329,2333 ---- X default can be set to \fI*\fR. .TP ! .I Tgif.HasAlternateDefaultFonts: [true,false] The default value of this X default is false. If it set to ``false'', tgif uses the iso8859 registry *************** *** 2122,2126 **** user specified fonts. (Please note that the PostScript output will not be affected.) If this X default is set to ``true'', tgif will look for additional ! X defaults of the form \fITgif*\fR, where \fI\fR can be one of the following strings: .PP --- 2338,2342 ---- user specified fonts. (Please note that the PostScript output will not be affected.) If this X default is set to ``true'', tgif will look for additional ! X defaults of the form \fITgif.\fR, where \fI\fR can be one of the following strings: .PP *************** *** 2170,2184 **** the font is requested. For example, The following lines will use the Times New Roman screen font instead of the Times screen font, if ! Tgif*HasAlternateDefaultFonts is ``true'': .RE .PP .RS ! Tgif*Times-Roman: *-times new roman-medium-r-*--%d-* .br ! Tgif*Times-Bold: *-times new roman-bold-r-*--%d-* .br ! Tgif*Times-Italic: *-times new roman-medium-i-*--%d-* .br ! Tgif*Times-BoldItalic: *-times new roman-bold-i-*--%d-* .br .RE --- 2386,2400 ---- the font is requested. For example, The following lines will use the Times New Roman screen font instead of the Times screen font, if ! Tgif.HasAlternateDefaultFonts is ``true'': .RE .PP .RS ! Tgif.Times-Roman: *-times new roman-medium-r-*--%d-* .br ! Tgif.Times-Bold: *-times new roman-bold-r-*--%d-* .br ! Tgif.Times-Italic: *-times new roman-medium-i-*--%d-* .br ! Tgif.Times-BoldItalic: *-times new roman-bold-i-*--%d-* .br .RE *************** *** 2190,2205 **** .RE .TP ! .I Tgif*DefaultCursor: [x_cursor,arrow,...] This specifies the select cursor. Entries in (without the XC_ prefix) are valid names of the cursor. The default is arrow. .TP ! .I Tgif*DrawCursor: [x_cursor,arrow,...] This specifies the cursor used when drawing objects. Entries in (without the XC_ prefix) are valid names of the cursor. ! The default is the same as Tgif*DefaultCursor. .TP ! .I Tgif*DragCursor: [x_cursor,arrow,...] This specifies the cursor used when dragging. Entries in --- 2406,2421 ---- .RE .TP ! .I Tgif.DefaultCursor: [x_cursor,arrow,...] This specifies the select cursor. Entries in (without the XC_ prefix) are valid names of the cursor. The default is arrow. .TP ! .I Tgif.DrawCursor: [x_cursor,arrow,...] This specifies the cursor used when drawing objects. Entries in (without the XC_ prefix) are valid names of the cursor. ! The default is the same as Tgif.DefaultCursor. .TP ! .I Tgif.DragCursor: [x_cursor,arrow,...] This specifies the cursor used when dragging. Entries in *************** *** 2207,2211 **** The default is hand2. .TP ! .I Tgif*VertexCursor: [x_cursor,arrow,...] This specifies the cursor used in the select vertices mode. Entries in --- 2423,2427 ---- The default is hand2. .TP ! .I Tgif.VertexCursor: [x_cursor,arrow,...] This specifies the cursor used in the select vertices mode. Entries in *************** *** 2213,2223 **** The default is plus. .TP ! .I Tgif*RubberBandColor: COLORSTRING This specifies color used for rubber-banding (XORing). The default color is the same as the foreground color. .TP ! .I Tgif*PrintCommand: COMMAND This specifies the print command used for printing the PostScript file. ! The default is \fIlpr\fR. An example would be \fIlpr -h -Pprintername\fR. If COMMAND contains a \fI%s\fR substring, the \fI%s\fR will be replaced --- 2429,2518 ---- The default is plus. .TP ! .I Tgif.RubberBandColor: COLORSTRING This specifies color used for rubber-banding (XORing). The default color is the same as the foreground color. .TP ! .I Tgif.MaxColors: NUMBER ! This specifies the maximum number of colors. Color0 through ColorMax, ! where Max is NUMBER-1, in X defaults are queried. If NUMBER is greater ! than the default of 11, Color11 through ColorMax \fImust\fR all exist ! in X defaults. Please see the GRAPHICAL OBJECTS section for a list of ! the default colors. ! .TP ! .I Tgif.Color#: COLORSTRING ! This specifies the correspondence between a color number and a color. ! .TP ! .I Tgif.DefaultColorIndex: NUMBER ! This specifies the default color index if a certain color can not be found. ! The default is 0. ! .TP ! .I Tgif.ShortCuts: ITEM1 ITEM2 ... ! The ITEM specifies the correspondence between a key (may be case ! sensitive) and a non-alphanumeric key command. Please see ! the SHORTCUTS section for details. ! .TP ! .I Tgif.MaxLineWidths: NUMBER ! This specifies the maximum number of line widths. LineWidth0 through ! LineWidthMax, ArrowWidth0 through ArrowWidthMax, and ArrowHeight0 ! through ArrowHeightMax, where Max is NUMBER-1, in X defaults are ! queried. If NUMBER is greater than the default value of 7, ! LineWidth7 through LineWidthMax, ArrowWidth7 through ArrowWidthMax, ! and ArrowHeight7 through ArrowHeightMax ! \fImust\fR all exist in X defaults. ! Some default values will be used for those that are ! not specified in the X defaults. ! .TP ! .I Tgif.DefaultLineWidth: NUMBER ! This specifies the initial line width \fIindex\fR. ! The default is 0. ! .TP ! .I Tgif.LineWidth#: NUMBER ! This specifies a line width. ! The default line widths are 1, 2, 3, 4, 5, 6, and 7. ! .TP ! .I Tgif.ArrowWidth#: NUMBER ! This specifies the width (when the arrow is pointing horizontally) ! of the arrow head for arc and open-spline objects. ! The default arrow widths are 8, 10, 12, 14, 18, 20, and 22. ! .TP ! .I Tgif.ArrowHeight#: NUMBER ! This specifies \fIhalf\fR the height (when the arrow is also pointing ! horizontally) of the arrow head for arc and open-spline objects. ! The default arrow heights are 3, 4, 5, 6, 7, 8, and 9. ! .TP ! .I Tgif.MaxDomains: NUMBER ! This specifies the maximum number of domains. DomainPath0 through ! DomainPathMax, where Max is NUMBER-1, all must exist in X defaults. ! .TP ! .I Tgif.DomainPath#: DOMAINSTRING ! This specifies the correspondence between a domain number, a domain name, ! and the path associated with a domain. DOMAINSTRING contains strings which are ! separated by the ':' symbol. The first string is the name of the domain. ! Each of the rest of the strings specifies a directory where symbol files are to ! be searched when the Instantiate command is executed (please see the ! HOW TO MAKE A BUILDING-BLOCK OBJECT section for details). Another way to ! look at the DOMAINSTRING specification is that removing the first ! string (which specifies the domain name) and the first ':' symbol, a ! DOMAINSTRING has the form of the \fIPATH\fR csh(1) environment variable. ! For example, to specify the symbol path for domain \fIDEFAULT\fR ! to look for symbol files, first in the library directory /tmp/tgif/symbols, ! then in the current directory, ! DOMAINSTRING should be set to the following value: ! .PP ! .RS ! .RS ! DEFAULT:/tmp/tgif/symbols:. ! .br ! .RE ! .RE ! .br ! .TP ! .I Tgif.DefaultDomain: NUMBER ! This specifies the default domain when tgif starts up. ! The default is 0. ! .TP ! .I Tgif.PrintCommand: COMMAND This specifies the print command used for printing the PostScript file. ! The default is lpr(1). An example would be \fIlpr -h -Pprintername\fR. If COMMAND contains a \fI%s\fR substring, the \fI%s\fR will be replaced *************** *** 2237,2245 **** .PP .TP ! .I Tgif*WhereToPrint: [Printer,EPS,PS,Bitmap,Text,EPSI,GIF] ! This specifies the initial print destination/format. The default is EPS. .TP ! .I Tgif*PrintDirectory: PATH This specifies the print directory when the output destination is not the printer. --- 2532,2540 ---- .PP .TP ! .I Tgif.WhereToPrint: [Printer,EPS,PS,Bitmap,Text,EPSI,GIF,HTML] ! This specifies the initial print/export destination/format. The default is EPS. .TP ! .I Tgif.PrintDirectory: PATH This specifies the print directory when the output destination is not the printer. *************** *** 2247,2273 **** into the directory in which the current file resides. .TP ! .I Tgif*NoTgifIcon: [true,false] If set to ``true'', tgif will not use its own icon window. In this case, ! one should also set Tgif*UseWMIconPixmap described below to true. The default is false. .TP ! .I Tgif*UseWMIconPixmap: [true,false] If set to ``true'', tgif will use the standard icon pixmap. Also, ! Tgif*NoTgifIcon will be forced to be true. The default is false. .TP ! .I Tgif*DontShowVersion: [true,false] If set to ``true'', the tgif version will not be displayed on top of the tgif window. The default is false. .TP ! .I Tgif*XBmReverseVideo: [true,false] If set to ``true'', an invert bitmap operation will be performed ! when importing an X Bitmap file. The default is false. .TP ! .I Tgif*AskForXBmSpec: [true,false] If set to ``true'', the user will be asked to specify ! magnification and geometry for an X Bitmap file being imported. Format of the specification is \fIMAG=WxH+X+Y\fR, where MAG is the magnification, W and H specifies the width and height, --- 2542,2568 ---- into the directory in which the current file resides. .TP ! .I Tgif.NoTgifIcon: [true,false] If set to ``true'', tgif will not use its own icon window. In this case, ! one should also set Tgif.UseWMIconPixmap described below to true. The default is false. .TP ! .I Tgif.UseWMIconPixmap: [true,false] If set to ``true'', tgif will use the standard icon pixmap. Also, ! Tgif.NoTgifIcon will be forced to be true. The default is false. .TP ! .I Tgif.DontShowVersion: [true,false] If set to ``true'', the tgif version will not be displayed on top of the tgif window. The default is false. .TP ! .I Tgif.XBmReverseVideo: [true,false] If set to ``true'', an invert bitmap operation will be performed ! when importing an X11 bitmap file. The default is false. .TP ! .I Tgif.AskForXBmSpec: [true,false] If set to ``true'', the user will be asked to specify ! magnification and geometry for an X11 bitmap file being imported. Format of the specification is \fIMAG=WxH+X+Y\fR, where MAG is the magnification, W and H specifies the width and height, *************** *** 2277,2287 **** The default is false. .TP ! .I Tgif*AskForXPmSpec: [true,false] If set to ``true'', the user will be asked to specify ! magnification and geometry for an X Pixmap file being imported. The format of the specification is the same as for AskForXBmSpec. The default is false. .TP ! .I Tgif*StripEPSComments: [true,false] If set to ``true'', lines that start with '%' in an Encapsulated PostScript file will be stripped when the file is imported (except --- 2572,2582 ---- The default is false. .TP ! .I Tgif.AskForXPmSpec: [true,false] If set to ``true'', the user will be asked to specify ! magnification and geometry for an X11 pixmap file being imported. The format of the specification is the same as for AskForXBmSpec. The default is false. .TP ! .I Tgif.StripEPSComments: [true,false] If set to ``true'', lines that start with '%' in an Encapsulated PostScript file will be stripped when the file is imported (except *************** *** 2289,2298 **** The default is true. .TP ! .I Tgif*GuessXPmBgColor: [true,false] ! If set to ``true'', then when tgif imports an X Pixmap file with the first color string being ' ' (the space character) or '`' (the back quote character), it will treat the first color as a \fIbackground\fR color. This means that ! the specified color in the X Pixmap file will be changed to the current background color. The default is false. (Please note that this default was \fItrue\fR --- 2584,2593 ---- The default is true. .TP ! .I Tgif.GuessXPmBgColor: [true,false] ! If set to ``true'', then when tgif imports an X11 pixmap file with the first color string being ' ' (the space character) or '`' (the back quote character), it will treat the first color as a \fIbackground\fR color. This means that ! the specified color in the X11 pixmap file will be changed to the current background color. The default is false. (Please note that this default was \fItrue\fR *************** *** 2300,2318 **** reasons; it should be considered obsolete.) .TP ! .I Tgif*XPmOutputVersion: NUMBER This specifies the XPM version number when outputting in the X11 pixmap format. NUMBER can take on values 1 or 3. The default is 1. .TP ! .I Tgif*XPmInXGrabSCFormat: [true,false] ! If Tgif*XpmOutputVersion is set to 1, setting this to ``true'' will force the X11 pixmap output to resemble what xgrabsc generates. The default is false. .TP ! .I Tgif*UseGrayScale: [true,false] If set to ``true'', gray scales will be used for tiling patterns to speed up printing. The default is false. .TP ! .I Tgif*AutoPanInEditText: [true,false] If set to ``true'', auto panning will be used such that the text cursor is always visible in text edit mode (except when the cursor is to the --- 2595,2613 ---- reasons; it should be considered obsolete.) .TP ! .I Tgif.XPmOutputVersion: NUMBER This specifies the XPM version number when outputting in the X11 pixmap format. NUMBER can take on values 1 or 3. The default is 1. .TP ! .I Tgif.XPmInXGrabSCFormat: [true,false] ! If Tgif.XpmOutputVersion is set to 1, setting this to ``true'' will force the X11 pixmap output to resemble what xgrabsc generates. The default is false. .TP ! .I Tgif.UseGrayScale: [true,false] If set to ``true'', gray scales will be used for tiling patterns to speed up printing. The default is false. .TP ! .I Tgif.AutoPanInEditText: [true,false] If set to ``true'', auto panning will be used such that the text cursor is always visible in text edit mode (except when the cursor is to the *************** *** 2321,2329 **** The default is true. .TP ! .I Tgif*PercentPrintReduction: NUMBER The specifies the initial percent print reduction/magnification. The default is 100. .TP ! .I Tgif*ConstrainedMove: [true,false] This specifies the initial move mode. When set to ``true'', moving or stretching an object will cause the --- 2616,2624 ---- The default is true. .TP ! .I Tgif.PercentPrintReduction: NUMBER The specifies the initial percent print reduction/magnification. The default is 100. .TP ! .I Tgif.ConstrainedMove: [true,false] This specifies the initial move mode. When set to ``true'', moving or stretching an object will cause the *************** *** 2334,2338 **** The default value is false. .TP ! .I Tgif*DoubleQuoteDoubleQuote: [true,false] When set to ``true'', output of the double-quote character will be preceded by a double-quote character; when set to false, output of the double-quote --- 2629,2633 ---- The default value is false. .TP ! .I Tgif.DoubleQuoteDoubleQuote: [true,false] When set to ``true'', output of the double-quote character will be preceded by a double-quote character; when set to false, output of the double-quote *************** *** 2340,2347 **** The default value is false. .TP ! .I Tgif*GridSystem: [English,Metric] This sets the initial grid system. The default is English. .TP ! .I Tgif*InitialGrid: NUMBER This specifies the initial grid size. For the English grid system, NUMBER can be -2, -1, 0, +1, or +2 for grid --- 2635,2642 ---- The default value is false. .TP ! .I Tgif.GridSystem: [English,Metric] This sets the initial grid system. The default is English. .TP ! .I Tgif.InitialGrid: NUMBER This specifies the initial grid size. For the English grid system, NUMBER can be -2, -1, 0, +1, or +2 for grid *************** *** 2351,2355 **** The default value is 0. .TP ! .I Tgif*DropObsIconAttrWhenUpdate: [true,false] If set to ``true'', obsolete icon attributes will be dropped without confirmation when the UpdateSymbols command is executed. If set to ``false'', --- 2646,2650 ---- The default value is 0. .TP ! .I Tgif.DropObsIconAttrWhenUpdate: [true,false] If set to ``true'', obsolete icon attributes will be dropped without confirmation when the UpdateSymbols command is executed. If set to ``false'', *************** *** 2358,2362 **** The default is false. .TP ! .I Tgif*UseRecentDupDistance: [true,false] If set to ``true'', the most recent change in position produced by a combination of a duplicate and a move command will be used for the new duplicate command. --- 2653,2657 ---- The default is false. .TP ! .I Tgif.UseRecentDupDistance: [true,false] If set to ``true'', the most recent change in position produced by a combination of a duplicate and a move command will be used for the new duplicate command. *************** *** 2364,2373 **** The default is true. .TP ! .I Tgif*SplineTolerance: NUMBER This specifies the tolerance of spline drawing. The smaller the number, the smoother the spline. The default is 9 (min is 3 and max is 13). .TP ! .I Tgif*SplineRubberband: [true,false] If set to ``true'', spline rubber-bands will be used in drawing, moving, and stretching open and closed splines. --- 2659,2668 ---- The default is true. .TP ! .I Tgif.SplineTolerance: NUMBER This specifies the tolerance of spline drawing. The smaller the number, the smoother the spline. The default is 9 (min is 3 and max is 13). .TP ! .I Tgif.SplineRubberband: [true,false] If set to ``true'', spline rubber-bands will be used in drawing, moving, and stretching open and closed splines. *************** *** 2375,2382 **** The default is true. .TP ! .I Tgif*Synchronize: [on,off] XSynchronize is called if this default is set to ``on''. The default is off. .TP ! .I Tgif*DoubleClickUnIconify: [true,false] If set to ``true'', double mouse clicks are used to de-iconify the icon window (in this mode, the icon window ignores single --- 2670,2677 ---- The default is true. .TP ! .I Tgif.Synchronize: [on,off] XSynchronize is called if this default is set to ``on''. The default is off. .TP ! .I Tgif.DoubleClickUnIconify: [true,false] If set to ``true'', double mouse clicks are used to de-iconify the icon window (in this mode, the icon window ignores single *************** *** 2384,2388 **** The default is false. .TP ! .I Tgif*MainMenuPinDistance: NUMBER This specifies the horizontal distance (in pixels) the user needs to drag a popup menu before the popup menu is to be pinned down. --- 2679,2683 ---- The default is false. .TP ! .I Tgif.MainMenuPinDistance: NUMBER This specifies the horizontal distance (in pixels) the user needs to drag a popup menu before the popup menu is to be pinned down. *************** *** 2392,2411 **** clicking the right button in the popup menu will remove it. .TP ! .I Tgif*DoubleClickInterval: NUMBER This specifies the maximum interval (in milliseconds) between two mouse clicked to be recognized as one double-click. The default is 300. .TP ! .I Tgif*HandleSize: NUMBER This specifies (half) the size of the handle used to highlight objects. Its allowable value is between 2 and 6. The default is 3. .TP ! .I Tgif*HistoryDepth: NUMBER This specifies the size of the undo/redo buffer; negative values mean that the buffer is unbounded. The default is -1. .TP ! .I Tgif*SaveTmpOnReturn: [true,false] If set to ``true'', a tmpmodel file will be saved automatically before returning to the driver. Otherwise, no files will be --- 2687,2706 ---- clicking the right button in the popup menu will remove it. .TP ! .I Tgif.DoubleClickInterval: NUMBER This specifies the maximum interval (in milliseconds) between two mouse clicked to be recognized as one double-click. The default is 300. .TP ! .I Tgif.HandleSize: NUMBER This specifies (half) the size of the handle used to highlight objects. Its allowable value is between 2 and 6. The default is 3. .TP ! .I Tgif.HistoryDepth: NUMBER This specifies the size of the undo/redo buffer; negative values mean that the buffer is unbounded. The default is -1. .TP ! .I Tgif.SaveTmpOnReturn: [true,false] If set to ``true'', a tmpmodel file will be saved automatically before returning to the driver. Otherwise, no files will be *************** *** 2413,2417 **** The default is true. .TP ! .I Tgif*ImportFromLibrary: [true,false] If set to ``true'', the library directories specified by the current domain are searched for .obj, .sym, xbitmap/xpixmap, and EPS files to --- 2708,2712 ---- The default is true. .TP ! .I Tgif.ImportFromLibrary: [true,false] If set to ``true'', the library directories specified by the current domain are searched for .obj, .sym, xbitmap/xpixmap, and EPS files to *************** *** 2419,2438 **** The default is false. .TP ! .I Tgif*WarpToWinCenter: [true,false] If set to ``true'', the mouse is warped to the center of popup windows. Otherwise, the mouse is not warped. The default is true. .TP ! .I Tgif*SaveCommentsInSaveNew: [true,false] If set to ``true'', "%%" type comments in the file will be stored in the newly created file. The default is true. .TP ! .I Tgif*CanvasWindowOnly: [true,false] If set to ``true'', only the canvas window will be displayed (this is kind of the ``demo'' mode). The default is false. .TP ! .I Tgif*UsePsAdobeString: [true,false,NUMBER_1/NUMBER_2] If set to ``true'', the first line in the PS or EPS file will be "%!PS-Adobe-2.0 EPSF-1.2". If set to ``false'', it is just "%!". --- 2714,2733 ---- The default is false. .TP ! .I Tgif.WarpToWinCenter: [true,false] If set to ``true'', the mouse is warped to the center of popup windows. Otherwise, the mouse is not warped. The default is true. .TP ! .I Tgif.SaveCommentsInSaveNew: [true,false] If set to ``true'', "%%" type comments in the file will be stored in the newly created file. The default is true. .TP ! .I Tgif.CanvasWindowOnly: [true,false] If set to ``true'', only the canvas window will be displayed (this is kind of the ``demo'' mode). The default is false. .TP ! .I Tgif.UsePsAdobeString: [true,false,NUMBER_1/NUMBER_2] If set to ``true'', the first line in the PS or EPS file will be "%!PS-Adobe-2.0 EPSF-1.2". If set to ``false'', it is just "%!". *************** *** 2442,2468 **** but it is needed to work with groff. .TP ! .I Tgif*HalfToneBitmap: [true,false] If set to ``true'', the Floyd-Steinberg half-tone method will be used ! when printing in X11 bitmap format. This is useful when the drawing contains X11 pixmap objects. The default is false. .TP ! .I Tgif*ThresholdBitmap: [true,false] If set to ``true'', a simple thresholding method will be used to decide whether ! a bit is turned on or off when printing in X11 bitmap format. ! If Tgif*HalfToneBitmap is set to true, this X default is ignored. The default is false. .TP ! .I Tgif*BitmapThreshold: NUMBER This specifies the threshold value used in either the Floyd-Steinberg half-tone algorithm or the simple thresholding algorithm. NUMBER must be between 0 and 1. This X default is only active ! when either the Tgif*HalfToneBitmap or the Tgif*ThresholdBitmap X default is set to true. ! The default value is 0.5 if Tgif*HalfToneBitmap is true, and is 1.0 ! if Tgif*ThresholdBitmap is true (basically, anything that is not white will be black). .TP ! .I Tgif*GroupedTextEditable: [true,false] If set to ``false'', only top level text objects and attributes of top level objects can be edited when the drawing mode is set to the text mode. --- 2737,2763 ---- but it is needed to work with groff. .TP ! .I Tgif.HalfToneBitmap: [true,false] If set to ``true'', the Floyd-Steinberg half-tone method will be used ! when printing in the X11 bitmap format. This is useful when the drawing contains X11 pixmap objects. The default is false. .TP ! .I Tgif.ThresholdBitmap: [true,false] If set to ``true'', a simple thresholding method will be used to decide whether ! a bit is turned on or off when printing in the X11 bitmap format. ! If Tgif.HalfToneBitmap is set to true, this X default is ignored. The default is false. .TP ! .I Tgif.BitmapThreshold: NUMBER This specifies the threshold value used in either the Floyd-Steinberg half-tone algorithm or the simple thresholding algorithm. NUMBER must be between 0 and 1. This X default is only active ! when either the Tgif.HalfToneBitmap or the Tgif.ThresholdBitmap X default is set to true. ! The default value is 0.5 if Tgif.HalfToneBitmap is true, and is 1.0 ! if Tgif.ThresholdBitmap is true (basically, anything that is not white will be black). .TP ! .I Tgif.GroupedTextEditable: [true,false] If set to ``false'', only top level text objects and attributes of top level objects can be edited when the drawing mode is set to the text mode. *************** *** 2470,2474 **** The default is false. .TP ! .I Tgif*DefaultEPSScaling: NUMBER This specifies the scaling factor applied to an imported PS or EPS image. As mentioned in the IDIOSYNCRASIES section below, tgif treats 128 pixels --- 2765,2769 ---- The default is false. .TP ! .I Tgif.DefaultEPSScaling: NUMBER This specifies the scaling factor applied to an imported PS or EPS image. As mentioned in the IDIOSYNCRASIES section below, tgif treats 128 pixels *************** *** 2478,2487 **** The default value is 1. .TP ! .I Tgif*IntrCheckInterval: NUMBER This specifies the number of objects drawn before tgif checks for interrupts. If this is set to be 0 or less, interrupt is not allowed. The default value is 10. .TP ! .I Tgif*TiledPageScaling: NUMBER This specifies the scaling value used when a multipage drawing in tiled page mode is printed. Since most PostScript printers do not --- 2773,2782 ---- The default value is 1. .TP ! .I Tgif.IntrCheckInterval: NUMBER This specifies the number of objects drawn before tgif checks for interrupts. If this is set to be 0 or less, interrupt is not allowed. The default value is 10. .TP ! .I Tgif.TiledPageScaling: NUMBER This specifies the scaling value used when a multipage drawing in tiled page mode is printed. Since most PostScript printers do not *************** *** 2490,2494 **** The default value is 0.9. .TP ! .I Tgif*TGIFPATH: STRING This specifies the directory where the files, mentioned in the FILES section below, can be found. The TGIFPATH environment variable may --- 2785,2789 ---- The default value is 0.9. .TP ! .I Tgif.TGIFPATH: STRING This specifies the directory where the files, mentioned in the FILES section below, can be found. The TGIFPATH environment variable may *************** *** 2496,2500 **** The default value is specified by the compiler option TGIF_PATH. .TP ! .I Tgif*TGIFICON: STRING This specifies the name of the object file to be displayed when tgif is iconified. If it starts with a / character, absolute path is used; --- 2791,2795 ---- The default value is specified by the compiler option TGIF_PATH. .TP ! .I Tgif.TGIFICON: STRING This specifies the name of the object file to be displayed when tgif is iconified. If it starts with a / character, absolute path is used; *************** *** 2503,2586 **** The default value is ``tgificon.obj''. .TP ! .I Tgif*MaxColors: NUMBER ! This specifies the maximum number of colors. Color0 through ColorMax, ! where Max is NUMBER-1, in X defaults are queried. If NUMBER is greater ! than the default of 11, Color11 through ColorMax \fImust\fR all exist ! in X defaults. Please see the GRAPHICAL OBJECTS section for a list of ! the default colors. ! .TP ! .I Tgif*Color#: COLORSTRING ! This specifies the correspondence between a color number and a color. ! .TP ! .I Tgif*DefaultColorIndex: NUMBER ! This specifies the default color index if a certain color can not be found. ! The default is 0. ! .TP ! .I Tgif*ShortCuts: ITEM1 ITEM2 ... ! The ITEM specifies the correspondence between a key (may be case ! sensitive) and a non-alphanumeric key command. Please see ! the SHORTCUTS section for details. ! .TP ! .I Tgif*MaxLineWidths: NUMBER ! This specifies the maximum number of line widths. LineWidth0 through ! LineWidthMax, ArrowWidth0 through ArrowWidthMax, and ArrowHeight0 ! through ArrowHeightMax, where Max is NUMBER-1, in X defaults are ! queried. If NUMBER is greater than the default value of 7, ! LineWidth7 through LineWidthMax, ArrowWidth7 through ArrowWidthMax, ! and ArrowHeight7 through ArrowHeightMax ! \fImust\fR all exist in X defaults. ! Some default values will be used for those that are ! not specified in the X defaults. ! .TP ! .I Tgif*DefaultLineWidth: NUMBER ! This specifies the initial line width \fIindex\fR. ! The default is 0. ! .TP ! .I Tgif*LineWidth#: NUMBER ! This specifies a line width. ! The default line widths are 1, 2, 3, 4, 5, 6, and 7. ! .TP ! .I Tgif*ArrowWidth#: NUMBER ! This specifies the width (when the arrow is pointing horizontally) ! of the arrow head for arc and open-spline objects. ! The default arrow widths are 8, 10, 12, 14, 18, 20, and 22. ! .TP ! .I Tgif*ArrowHeight#: NUMBER ! This specifies \fIhalf\fR the height (when the arrow is also pointing ! horizontally) of the arrow head for arc and open-spline objects. ! The default arrow heights are 3, 4, 5, 6, 7, 8, and 9. ! .TP ! .I Tgif*MaxDomains: NUMBER ! This specifies the maximum number of domains. DomainPath0 through ! DomainPathMax, where Max is NUMBER-1, all must exist in X defaults. ! .TP ! .I Tgif*DomainPath#: DOMAINSTRING ! This specifies the correspondence between a domain number, a domain name, ! and the path associated with a domain. DOMAINSTRING contains strings which are ! separated by the ':' symbol. The first string is the name of the domain. ! Each of the rest of the strings specifies a directory where symbol files are to ! be searched when the Instantiate command is executed (please see the ! HOW TO MAKE A BUILDING-BLOCK OBJECT section for details). Another way to ! look at the DOMAINSTRING specification is that removing the first ! string (which specifies the domain name) and the first ':' symbol, a ! DOMAINSTRING has the form of the \fIPATH\fR csh(1) environment variable. ! For example, to specify the symbol path for domain \fIDEFAULT\fR ! to look for symbol files, first in the library directory /tmp/tgif/symbols, ! then in the current directory, ! DOMAINSTRING should be set to the following value: ! .PP ! .RS ! .RS ! DEFAULT:/tmp/tgif/symbols:. ! .br ! .RE ! .RE ! .br ! .TP ! .I Tgif*DefaultDomain: NUMBER ! This specifies the default domain when tgif starts up. ! The default is 0. ! .TP ! .I Tgif*StickyMenuSelection: [true,false] If set to ``true'', when patterns/linewidths/linestyles/... of objects are changed using a menu action, the corresponding --- 2798,2802 ---- The default value is ``tgificon.obj''. .TP ! .I Tgif.StickyMenuSelection: [true,false] If set to ``true'', when patterns/linewidths/linestyles/... of objects are changed using a menu action, the corresponding *************** *** 2588,2592 **** The default is false. .TP ! .I Tgif*PSBopHook: STRING If specified, the following PostScript line is added at the beginning of each page when printing to the printer or to a PS file, --- 2804,2808 ---- The default is false. .TP ! .I Tgif.PSBopHook: STRING If specified, the following PostScript line is added at the beginning of each page when printing to the printer or to a PS file, *************** *** 2605,2609 **** .RE .TP ! .I Tgif*PSEopHook: STRING If specified, the following PostScript line is added at the end of each page when printing to the printer or to a PS file, --- 2821,2825 ---- .RE .TP ! .I Tgif.PSEopHook: STRING If specified, the following PostScript line is added at the end of each page when printing to the printer or to a PS file, *************** *** 2622,2665 **** .RE .TP ! .I Tgif*ShowMeasurement: [true,false] ! If set to 'true', the location of the cursor and the width and height ! of the object begin drawn/dragged/stretched will be shown. ! The default is false. ! .TP ! .I Tgif*MinimalEPS: [true,false] ! If set to 'false', comments such as %%Pages, %%DocumentFonts, %%EndComments, %%BeginProlog, %%EndProlog, %%Page, %%Trailer, and %%EOF will be generated in an EPS output. These comments may confuse certain ``document managers''. Therefore, the default is true. .TP ! .I Tgif*InitialPrintInColor: [true,false] ! If set to 'true', color output (printing) mode is enabled on startup. The default is false. .TP ! .I Tgif*InitialShowGrid: [true,false] ! If set to 'false', showing grid is disabled on startup. The default is true. .TP ! .I Tgif*InitialSnapOn: [true,false] ! If set to 'false', snapping to the grid points is disabled on startup. The default is true. .TP ! .I Tgif*NoMenubar: [true,false] ! If set to 'true', no menubar will be shown initially. The default is false. .TP ! .I Tgif*NoStatusWindow: [true,false] ! If set to 'true', no status window will be shown initially. The default is false. .TP ! .I Tgif*ReverseMouseStatusButtons: [true,false] ! If set to 'true', the left mouse status and the right mouse status are swapped. This should be used when a ``left-handed mouse'' is used. The default is false. .TP ! .I Tgif*MinimalMenubar: [true,false] ! If set to 'false', the menu items in the Menubar Window will be the same as the main popup menu. This would take up much more space. ! If set to 'true', the Page, PageLayout, HoriAlign, VertAlign, and MoveMode menus are collapsed into the View cascading menu; the Font, TextStyle, and TextSize menus are collapsed into the Text cascading menu; and the LineDash, --- 2838,2876 ---- .RE .TP ! .I Tgif.MinimalEPS: [true,false] ! If set to ``false'', comments such as %%Pages, %%DocumentFonts, %%EndComments, %%BeginProlog, %%EndProlog, %%Page, %%Trailer, and %%EOF will be generated in an EPS output. These comments may confuse certain ``document managers''. Therefore, the default is true. .TP ! .I Tgif.InitialPrintInColor: [true,false] ! If set to ``true'', color output (printing) mode is enabled on startup. The default is false. .TP ! .I Tgif.InitialShowGrid: [true,false] ! If set to ``false'', showing grid is disabled on startup. The default is true. .TP ! .I Tgif.InitialSnapOn: [true,false] ! If set to ``false'', snapping to the grid points is disabled on startup. The default is true. .TP ! .I Tgif.NoMenubar: [true,false] ! If set to ``true'', no menubar will be shown initially. The default is false. .TP ! .I Tgif.NoStatusWindow: [true,false] ! If set to ``true'', no Status Window will be shown initially. The default is false. .TP ! .I Tgif.ReverseMouseStatusButtons: [true,false] ! If set to ``true'', the left mouse status and the right mouse status are swapped. This should be used when a ``left-handed mouse'' is used. The default is false. .TP ! .I Tgif.MinimalMenubar: [true,false] ! If set to ``false'', the menu items in the Menubar Window will be the same as the main popup menu. This would take up much more space. ! If set to ``true'', the Page, PageLayout, HoriAlign, VertAlign, and MoveMode menus are collapsed into the View cascading menu; the Font, TextStyle, and TextSize menus are collapsed into the Text cascading menu; and the LineDash, *************** *** 2668,2682 **** The default is true. .TP ! .I Tgif*ColorBgInPrintingColorPS: [true,false] ! If set to 'true', the window background color is used as the background ! color when generating color PostScript output. If set to 'false', no background color is used. The default is false. .TP ! .I Tgif*ScrollBarWidth: NUMBER This specifies the width of a scroll bar. NUMBER must be between 2 and 16. The default is 16. .TP ! .I Tgif*InitialPaperSize: STRING The STRING specifies the initial width and height of the paper. STRING is in the " x " form. and is a --- 2879,2893 ---- The default is true. .TP ! .I Tgif.ColorBgInPrintingColorPS: [true,false] ! If set to ``true'', the window background color is used as the background ! color when generating color PostScript output. If set to ``false'', no background color is used. The default is false. .TP ! .I Tgif.ScrollBarWidth: NUMBER This specifies the width of a scroll bar. NUMBER must be between 2 and 16. The default is 16. .TP ! .I Tgif.InitialPaperSize: STRING The STRING specifies the initial width and height of the paper. STRING is in the " x " form. and is a *************** *** 2686,2691 **** If A4PAPER is not defined in the Makefile, the default value is "8.5in x 11in". .TP ! .I Tgif*UpdateChildUsingAlignment: [true,false,no_overlap] ! If set to 'true' or 'no_overlap', when update_eps_child(), update_xbm_child(), or update_xpm_child() internal command is executed, the current horizontal and vertical alignments are used to place the EPS/XBM/XPM --- 2897,2902 ---- If A4PAPER is not defined in the Makefile, the default value is "8.5in x 11in". .TP ! .I Tgif.UpdateChildUsingAlignment: [true,false,no_overlap] ! If set to ``true'' or 'no_overlap', when update_eps_child(), update_xbm_child(), or update_xpm_child() internal command is executed, the current horizontal and vertical alignments are used to place the EPS/XBM/XPM *************** *** 2697,2716 **** parent object if this X default is set to 'no_overlap'; the subobject is aligned to the top, middle, bottom, middle, or below the ! parent object if this X default is set to 'true'. ! If this X default is set to 'false', the subobject is placed left aligned and below the parent object. The default is false. .TP ! .I Tgif*GenerateImageMap: [true,false] ! If set to 'true', NCSA \fIimagemap\fR or CERN \fIClickable Image\fR files will be generated when print in GIF format. In this case, ! Tgif*XpmToGif, Tgif*ImageMapFileExtension, Tgif*GifFileExtension, ! Tgif*ImageMapFileFormat, and Tgif*UseXPmVersion1ForImageMap X defaults, described below, will be interpreted; otherwise, they are ignored. Please see the section on ! GENERATING NCSA IMAGEMAP AND CERN CLICKABLE IMAGE FILES for details. The default is false. .TP ! .I Tgif*XpmToGif: STRING The STRING specifies a command used to convert an XPM file to a GIF file. The STRING \fImust\fR contain a \fI%s\fR substring to be replaced by the --- 2908,2927 ---- parent object if this X default is set to 'no_overlap'; the subobject is aligned to the top, middle, bottom, middle, or below the ! parent object if this X default is set to ``true''. ! If this X default is set to ``false'', the subobject is placed left aligned and below the parent object. The default is false. .TP ! .I Tgif.GenerateImageMap: [true,false] ! If set to ``true'', NCSA \fIimagemap\fR or CERN \fIClickable Image\fR files will be generated when print in GIF format. In this case, ! Tgif.XpmToGif, Tgif.ImageMapFileExtension, Tgif.GifFileExtension, ! Tgif.ImageMapFileFormat, and Tgif.UseXPmVersion1ForImageMap X defaults, described below, will be interpreted; otherwise, they are ignored. Please see the section on ! GENERATING IMAGEMAP FILES for details. The default is false. .TP ! .I Tgif.XpmToGif: STRING The STRING specifies a command used to convert an XPM file to a GIF file. The STRING \fImust\fR contain a \fI%s\fR substring to be replaced by the *************** *** 2718,2757 **** The default is "xpmtoppm %s | ppmtogif". .TP ! .I Tgif*ImageMapFileExtension: STRING The STRING specifies the file extension for a imagemap file. The default is "map". .TP ! .I Tgif*GifFileExtension: STRING The STRING specifies the file extension for a gif file. The default is "gif" (lower case). .TP ! .I Tgif*ImageMapFileFormat: [NCSA,CERN] The STRING specifies either the NCSA imagemap or the CERN clickable image format. The default is NCSA for the NCSA imagemap format. .TP ! .I Tgif*UseXPmVersion1ForImageMap: [true,false] The setting of this X default should depend on the setting of the ! Tgif*XpmToGif X default above. ! If set to 'true', XPM1 file is generated disregarding the setting of the ! Tgif*XPmOutputVersion X default. The default is true. .TP ! .I Tgif*UsePaperSizeStoredInFile: [true,false] If set to ``true'', the paper size information stored in a just opened file is used. The default is false. .TP ! .I Tgif*OneMotionSelMove: [true,false] If set to ``true'', one can select and move an object in one motion. The default is false. .TP ! .I Tgif*TiffEPSI: [true,false] If set to ``true'', a TIFF image will be appended to a generated EPSI file. ! Please see the GENERATING EPSI FILE FOR SOME MICROSOFT WINDOWS APPLICATIONS section for details. The default is false. .TP ! .I Tgif*XbmToTiff: STRING The STRING specifies a command used to convert an XBM file to a TIFF file. The STRING \fImust\fR contain either one of two \fI%s\fR substring. The --- 2929,2968 ---- The default is "xpmtoppm %s | ppmtogif". .TP ! .I Tgif.ImageMapFileExtension: STRING The STRING specifies the file extension for a imagemap file. The default is "map". .TP ! .I Tgif.GifFileExtension: STRING The STRING specifies the file extension for a gif file. The default is "gif" (lower case). .TP ! .I Tgif.ImageMapFileFormat: [NCSA,CERN] The STRING specifies either the NCSA imagemap or the CERN clickable image format. The default is NCSA for the NCSA imagemap format. .TP ! .I Tgif.UseXPmVersion1ForImageMap: [true,false] The setting of this X default should depend on the setting of the ! Tgif.XpmToGif X default above. ! If set to ``true'', XPM1 file is generated disregarding the setting of the ! Tgif.XPmOutputVersion X default. The default is true. .TP ! .I Tgif.UsePaperSizeStoredInFile: [true,false] If set to ``true'', the paper size information stored in a just opened file is used. The default is false. .TP ! .I Tgif.OneMotionSelMove: [true,false] If set to ``true'', one can select and move an object in one motion. The default is false. .TP ! .I Tgif.TiffEPSI: [true,false] If set to ``true'', a TIFF image will be appended to a generated EPSI file. ! Please see the GENERATING MICROSOFT WINDOWS EPSI FILES section for details. The default is false. .TP ! .I Tgif.XbmToTiff: STRING The STRING specifies a command used to convert an XBM file to a TIFF file. The STRING \fImust\fR contain either one of two \fI%s\fR substring. The *************** *** 2761,2773 **** The default is "xbmtopbm %s | pnmtotiff -none > %s". .TP ! .I Tgif*EPSIExportExtension: STRING STRING specifies the file extension used for exporting \fIEPSI\fR files. The default is "eps". .TP ! .I Tgif*HotListFileName: STRING STRING specifies a full path name of a file used to store the hot file list. By default, this file is .Tgif_hotlist in the user's home directory. .TP ! .I Tgif*@@@Viewer: STRING STRING specifies an external viewer for an remote URL with a file extension of @@@. STRING can be in 3 forms. It can be the string "NONE" --- 2972,2984 ---- The default is "xbmtopbm %s | pnmtotiff -none > %s". .TP ! .I Tgif.EPSIExportExtension: STRING STRING specifies the file extension used for exporting \fIEPSI\fR files. The default is "eps". .TP ! .I Tgif.HotListFileName: STRING STRING specifies a full path name of a file used to store the hot file list. By default, this file is .Tgif_hotlist in the user's home directory. .TP ! .I Tgif.@@@Viewer: STRING STRING specifies an external viewer for an remote URL with a file extension of @@@. STRING can be in 3 forms. It can be the string "NONE" *************** *** 2778,2782 **** .RS .RS ! Tgif*gzViewer: NONE .br .RE --- 2989,2993 ---- .RS .RS ! Tgif.gzViewer: NONE .br .RE *************** *** 2791,2795 **** .RS .RS ! Tgif*htmlViewer: xmosaic %S .br .RE --- 3002,3006 ---- .RS .RS ! Tgif.htmlViewer: xmosaic %S .br .RE *************** *** 2806,2810 **** .RS .RS ! Tgif*gifViewer: xv %s .br .RE --- 3017,3021 ---- .RS .RS ! Tgif.gifViewer: xv %s .br .RE *************** *** 2816,2825 **** .RE .TP ! .I Tgif*AutoHyperSpaceOnRemote: [true,false] If set to ``false'', tgif will not go into the \fIhyperspace\fR mode when a remote URL is visited. The default is true. .TP ! .I Tgif*AllowLaunchInHyperSpace: [true,false] If set to ``true'', launching of applications is enabled in the \fIhyperspace\fR mode when a remote URL is visited. This is --- 3027,3036 ---- .RE .TP ! .I Tgif.AutoHyperSpaceOnRemote: [true,false] If set to ``false'', tgif will not go into the \fIhyperspace\fR mode when a remote URL is visited. The default is true. .TP ! .I Tgif.AllowLaunchInHyperSpace: [true,false] If set to ``true'', launching of applications is enabled in the \fIhyperspace\fR mode when a remote URL is visited. This is *************** *** 2829,2838 **** The default is false. .TP ! .I Tgif*CanChangeAttrColor: [true,false] If set to ``true'', color of an attribute can be changed when it is attached to an object. The default is false. .TP ! .I Tgif*MimeTypesFile: STRING STRING specifies a full path name of the MIME-types file. Tgif only uses the type/subtype field in the MIME-types file and ignores all other --- 3040,3049 ---- The default is false. .TP ! .I Tgif.CanChangeAttrColor: [true,false] If set to ``true'', color of an attribute can be changed when it is attached to an object. The default is false. .TP ! .I Tgif.MimeTypesFile: STRING STRING specifies a full path name of the MIME-types file. Tgif only uses the type/subtype field in the MIME-types file and ignores all other *************** *** 2840,2844 **** The default MIME-types file is \fI.mime.types\fR in user's home directory. .TP ! .I Tgif*LocalRGBTxt: STRING If one would like to override certain system colors, one can use STRING to specify a full path name of a file to be consulted first before --- 3051,3055 ---- The default MIME-types file is \fI.mime.types\fR in user's home directory. .TP ! .I Tgif.LocalRGBTxt: STRING If one would like to override certain system colors, one can use STRING to specify a full path name of a file to be consulted first before *************** *** 2849,2866 **** must have a value between 0 and 255 (inclusive). .TP ! .I Tgif*PrintUsingRequestedColor: [true,false] If set to ``true'', the color PostScript file being printed will use the \fIrequested\fR color instead of the color returned by the X server. The default is false. .TP ! .I Tgif*ShowMeasurementUnit: [pixel,inch,cm] The STRING specifies the unit used to display the measurement cursor. The default is pixel. .TP ! .I Tgif*PageStyleLandscape: [true,false] If set to ``true'', tgif comes up in landscape mode. The default is false. .TP ! .I Tgif*QueryZoomInPoint: [true,false] or [always,no_select,no_query,never] If set to ``true'' (or ``always''), the user will be asked to select a center point when zooming in. If set to ``no_select'', the user will --- 3060,3082 ---- must have a value between 0 and 255 (inclusive). .TP ! .I Tgif.PrintUsingRequestedColor: [true,false] If set to ``true'', the color PostScript file being printed will use the \fIrequested\fR color instead of the color returned by the X server. The default is false. .TP ! .I Tgif.ShowMeasurement: [true,false] ! If set to ``true'', the location of the cursor and the width and height ! of the object begin drawn/dragged/stretched will be shown. ! The default is false. ! .TP ! .I Tgif.ShowMeasurementUnit: [pixel,inch,cm] The STRING specifies the unit used to display the measurement cursor. The default is pixel. .TP ! .I Tgif.PageStyleLandscape: [true,false] If set to ``true'', tgif comes up in landscape mode. The default is false. .TP ! .I Tgif.QueryZoomInPoint: [true,false] or [always,no_select,no_query,never] If set to ``true'' (or ``always''), the user will be asked to select a center point when zooming in. If set to ``no_select'', the user will *************** *** 2870,2874 **** The default is false (or never). .TP ! .I Tgif*GUnZipCmd: STRING The STRING specifies a command used to unzip a zipped \fIremote\fR tgif file (with extension .obj.gz or .sym.gz) into a tgif file. The command \fImust\fR --- 3086,3090 ---- The default is false (or never). .TP ! .I Tgif.GUnZipCmd: STRING The STRING specifies a command used to unzip a zipped \fIremote\fR tgif file (with extension .obj.gz or .sym.gz) into a tgif file. The command \fImust\fR *************** *** 2878,2910 **** The default is "gunzip -c". .TP ! .I Tgif*HttpProxy: STRING ! The STRING specifies a host name and a port number of a HTTP proxy server. Format of the specification is \fI:\fR. If \fI:\fR is omitted, 80 is used as the default port number. The environment variable \fIhttp_proxy\fR has precedence over this X default. ! The default is not to use a HTTP proxy server. .TP ! .I Tgif*FtpProxy: STRING ! The STRING specifies a host name and a port number of a FTP proxy server. Format of the specification is \fI:\fR. If \fI:\fR is omitted, 21 is used as the default port number. The environment variable \fIftp_proxy\fR has precedence over this X default. ! The default is not to use a FTP proxy server. .TP ! .I Tgif*InitialArrowStyle: [NONE,RIGHT,LEFT,DOUBLE] This specifies the initial arrow style for polyline/open-splines/arcs. The default is RIGHT. .TP ! .I Tgif*ShowPageInEPS: [true,false] If set to ``true'', a \fIshowpage\fR PostScript command will be generated for an EPS or EPSI file. The default is false. .TP ! .I Tgif*MaxNavigateCacheBuffers: NUMBER This specifies the number of cache buffers allocated to cache remote files (to minimize communication). NUMBER must be non-negative. The default is 40. .TP ! .I Tgif*NumberFileInPrintOnePage: [true,false] If set to ``true'', when PrintOnePage from the Print Menu is selected for a stacked multipage drawing (e.g., file.obj), file_\fIN\fR --- 3094,3126 ---- The default is "gunzip -c". .TP ! .I Tgif.HttpProxy: STRING ! The STRING specifies a host name and a port number of an HTTP proxy server. Format of the specification is \fI:\fR. If \fI:\fR is omitted, 80 is used as the default port number. The environment variable \fIhttp_proxy\fR has precedence over this X default. ! The default is not to use an HTTP proxy server. .TP ! .I Tgif.FtpProxy: STRING ! The STRING specifies a host name and a port number of an FTP proxy server. Format of the specification is \fI:\fR. If \fI:\fR is omitted, 21 is used as the default port number. The environment variable \fIftp_proxy\fR has precedence over this X default. ! The default is not to use an FTP proxy server. .TP ! .I Tgif.InitialArrowStyle: [NONE,RIGHT,LEFT,DOUBLE] This specifies the initial arrow style for polyline/open-splines/arcs. The default is RIGHT. .TP ! .I Tgif.ShowPageInEPS: [true,false] If set to ``true'', a \fIshowpage\fR PostScript command will be generated for an EPS or EPSI file. The default is false. .TP ! .I Tgif.MaxNavigateCacheBuffers: NUMBER This specifies the number of cache buffers allocated to cache remote files (to minimize communication). NUMBER must be non-negative. The default is 40. .TP ! .I Tgif.NumberFileInPrintOnePage: [true,false] If set to ``true'', when PrintOnePage from the Print Menu is selected for a stacked multipage drawing (e.g., file.obj), file_\fIN\fR *************** *** 2913,2929 **** The default is false. .TP ! .I Tgif*OneMotionTimeout: NUMBER ! When Tgif*OneMotionSelMove is set to true, moving an object is considered to be making a selection if the elapse time between mouse-down and mouse-up is smaller than the timeout value specified by this X default (in milliseconds). The default is 200. .TP ! .I Tgif*MinMoveInterval: NUMBER ! When Tgif*OneMotionSelMove is set to false, moving an object is considered to be making a selection if the elapse time between mouse-down and mouse-up is smaller than the interval specified by this X default (in milliseconds). The default is 0. .TP ! .I Tgif*GifToXpm: STRING The STRING specifies a command used to convert a GIF file to an XPM file. The STRING \fImust\fR contain a \fI%s\fR substring to be replaced by the --- 3129,3145 ---- The default is false. .TP ! .I Tgif.OneMotionTimeout: NUMBER ! When Tgif.OneMotionSelMove is set to true, moving an object is considered to be making a selection if the elapse time between mouse-down and mouse-up is smaller than the timeout value specified by this X default (in milliseconds). The default is 200. .TP ! .I Tgif.MinMoveInterval: NUMBER ! When Tgif.OneMotionSelMove is set to false, moving an object is considered to be making a selection if the elapse time between mouse-down and mouse-up is smaller than the interval specified by this X default (in milliseconds). The default is 0. .TP ! .I Tgif.GifToXpm: STRING The STRING specifies a command used to convert a GIF file to an XPM file. The STRING \fImust\fR contain a \fI%s\fR substring to be replaced by the *************** *** 2931,2935 **** The default is "giftopnm %s | ppmtoxpm". .TP ! .I Tgif*InitExportPixelTrim: LEFT_NUMBER,TOP_NUMBER,RIGHT_NUMBER,BOTTOM_NUMBER The numbers specify the number of pixels to trim when printing or exporting in the XBM, XPM, or GIF format. The use of these values forms an escape --- 3147,3151 ---- The default is "giftopnm %s | ppmtoxpm". .TP ! .I Tgif.InitExportPixelTrim: LEFT_NUMBER,TOP_NUMBER,RIGHT_NUMBER,BOTTOM_NUMBER The numbers specify the number of pixels to trim when printing or exporting in the XBM, XPM, or GIF format. The use of these values forms an escape *************** *** 2937,2940 **** --- 3153,3286 ---- how big the whole image is. The default values are all 0's. + .TP + .I Tgif.QuantizingLevels: NUMBER + Some image functions such as Sharpen() uses convolution + and may generate an image that uses more than 256 colors + which tgif can not handle. + The NUMBER specifies the number of colors to quantize + down to when such a situation occurs. The default is 222. + .TP + .I Tgif.RotateCursor: [x_cursor,arrow,...] + This specifies the cursor used in the rotate mode. + Entries in + (without the XC_ prefix) are valid names of the cursor. + The default is crosshair. + .TP + .I Tgif.ColorLayers: [true,false] + If set to ``true'', each color is considered to be + a different layer which can be individually turned + on and off. If a color layer is turned off, primitive objects in that layer + will not be visible. A grouped object only becomes invisible + when all its constituent objects are invisible. + The default is false. + .TP + .I Tgif.TiffToXbmCmd: STRING + The STRING specifies a command used to convert a TIFF file to an XBM file. + This command is used when importing an EPSI file generated by a Windows + application. + The STRING \fImust\fR contain a \fI%s\fR substring to be replaced by the + full path name of the TIFF file. + The default is "tifftopnm %s | pgmtopbm | pbmtoxbm" + .TP + .I Tgif.DefFixedWidthFont: STRING + The STRING specifies a font to be used as the default font for the + Status Window, menus, dialogboxes, etc. + The default is "-*-courier-medium-r-normal-*-17-*-*-*-*-*-iso8859-1". + .TP + .I Tgif.DefFixedWidthRulerFont: STRING + The STRING specifies a font to be used in the horizontal and vertical + ruler windows. + The default is "-*-courier-medium-r-normal-*-10-*-*-*-*-*-iso8859-1". + .TP + .I Tgif.MenuFont: STRING + This is not implemented, yet. + .TP + .I Tgif.BoldMsgFont: STRING + The STRING specifies a bold font to be used in buttons and dialogboxes. + If this resource is not specified, the default font is used. + .TP + .I Tgif.MsgFont: STRING + The STRING specifies a thin font to be used in the Status Window and + dialogboxes. + If this resource is not specified, the default font is used. + .TP + .I Tgif.BggenToXpm: STRING + The STRING specifies a command for generating an X11 pixmap file + to be executed when RunBggen() is selected from the ImageProc Menu. + The STRING \fImust\fR contain two \fI%s\fR substrings. The first \fI%s\fR + is to be replaced by a user specified string. The second \fI%s\fR is to + be replaced by the geometry of the image. + The default is "bggen %s -g %s | ppmquant 64 | ppmtoxpm". + .TP + .I Tgif.DefaultErrorDiffuseLevels: R_NUMBER G_NUMBER B_NUMBER + The NUMBERs specify the number of bits of red, green, and blue to + be used when ReduceToDefaultColors() or DefaultErrorDiffuse() are + selected from the ImageProc Menu. These values determine a set of + default colors to be used for color quantization for the + ReduceToDefaultColors() and DefaultErrorDiffuse() methods. + R_NUMBER+G_NUMBER+B_NUMBER must be less than or equal to 8, and + each number must be greater than 0. + The default is 2 2 2. + .TP + .I Tgif.MaxImportFilters: NUMBER + This specifies the maximum number of import filters. + ImportFilter0 through ImportFilterMax, + where Max is NUMBER-1, in X defaults are queried. + The default is 0. + .TP + .I Tgif.ImportFilter#: FILTERSTRING + This specifies an import filter. FILTERSTRING has 3 parts (separated by + space characters). The first part is the name of the filter. It must + not contain a space character. The second part contains semicolon-separated + file extensions. The third part is the actual filter command for converting + the named external file type to an X11 pixmap file. + Please see the IMPORT RASTER GRAPHICS section for details. + .TP + .I Tgif.ShowFileNameOnBrowse: [true,false] + If set to ``true'', file names will be shown when BrowseXBitmap(), + BrowseXPixmap(), or BrowseOther() are selected from the File Menu. + The default is true. + .TP + .I Tgif.HtmlFileExtension: STRING + The STRING specifies the file extension used when printing in the HTML format. + The default is "html". + .TP + .I Tgif.GenerateHtmlHref: [true,false] + If set to ``true'' and when printing in the HTML format, + the value of an \fIhref\fR attribute is parsed. If the value references + a .obj file, it's changed to have a HTML file extension. + If it is set to ``false'', no conversion will be performed. + The default is true. + .TP + .I Tgif.RotationIncrement: NUMBER + This specifies the initial rotation increment in degrees. + The default is 45. + .TP + .I Tgif.PSA4PaperSize: [true,false] + If set to ``true'' and A4 size paper is specified, the following line + is added to a PS/EPS/EPSI file (before "%%EndComments"): + .PP + .RS + .RS + %%DocumentPaperSizes: a4 + .br + .RE + .RE + .PP + .RS + The default is false. + .RE + .TP + .I Tgif.ShapeShadowSpec: STRING + The STRING specifies the initial + horizontal and vertical offsets of a shape shadow. If both values are zeroes, + a shape is created without a shadow. When creating a shape with a shadow, + background fill pattern (3rd pattern in the first column of the Fill Menu) + usually gives the best result. + The default is "0,0". + .TP + .I Tgif.StretchableText: [true,false] + If set to ``true'', stretchable text mode is the initial mode. + The default is false. .\" .SH ENVIRONMENT VARIABLE *************** *** 2989,2996 **** .\" \fBlatex\fR(1L), \fBlpr\fR(1), \fBenv\fR(1), \fBX\fR(1), ! \fBdvips\fR(1), \fBcsh\fR(1), \fBpbmplus\fR(1), \fBbitmap\fR(1), \fBXPM\fR(1), \fBxfontsel\fR(1), \fBxlsfonts\fR(1), \fBxgrabsc\fR(1), \fBxloadimage\fR(1), \fBxsnap\fR(1), \fBsxpm\fR(1), \fBxv\fR(1), \fBpstoepsi\fR(1), ! \fBMosaic\fR(1), \fBrand\fR(3C) .\" .SH IDIOSYNCRASIES --- 3335,3343 ---- .\" \fBlatex\fR(1L), \fBlpr\fR(1), \fBenv\fR(1), \fBX\fR(1), ! \fBdvips\fR(1), \fBcsh\fR(1), \fBpbmplus\fR(1), \fBnetpbm\fR(1), ! \fBdjpeg\fR(1), \fBbitmap\fR(1), \fBXPM\fR(1), \fBxfontsel\fR(1), \fBxlsfonts\fR(1), \fBxgrabsc\fR(1), \fBxloadimage\fR(1), \fBxsnap\fR(1), \fBsxpm\fR(1), \fBxv\fR(1), \fBpstoepsi\fR(1), ! \fBMosaic\fR(1), \fBbggen\fR(1), \fBrand\fR(3C) .\" .SH IDIOSYNCRASIES *************** *** 3079,3083 **** Since tgif is using its own icon window, it may confuse certain window managers. If the effect is undesirable, one can set both the ! Tgif*NoTgifIcon and the Tgif*UseWMIconPixmap X defaults to true. .\" .SH BUGS --- 3426,3430 ---- Since tgif is using its own icon window, it may confuse certain window managers. If the effect is undesirable, one can set both the ! Tgif.NoTgifIcon and the Tgif.UseWMIconPixmap X defaults to true. .\" .SH BUGS *************** *** 3100,3103 **** --- 3447,3454 ---- behavior due to round off errors. .PP + When page reduction/magnification is not set at 100%, the markings in + the Ruler Windows do not correspond to real measurements. + behavior due to round off errors. + .PP Copying/pasting large objects might not work because tgif does not use the ``selection'' mechanism (yet). *************** *** 3117,3121 **** one wants to save the content of tgif in ``EmergencySave.obj''. .PP ! The file \fIexec.c\fR may not compile properly on AIX machines. You might have to add -D_BSD to the DEFINES in either the Imakefile or Makefile.noimake. .\" --- 3468,3472 ---- one wants to save the content of tgif in ``EmergencySave.obj''. .PP ! The file \fIexec.c\fR may not compile properly on AIX machines. One might have to add -D_BSD to the DEFINES in either the Imakefile or Makefile.noimake. .\" *************** *** 3136,3137 **** --- 3487,3501 ---- .br + .SH REFERENCES + .IP [1] + ``\fIA Beginner's Guild to HTML\fR'', + . + .IP [2] + ``\fIThe Common Gateway Interface\fR'', + . + .IP [3] + ``\fINCSA Imagemap\fR'', + . + .IP [4] + ``\fICERN Clickable Image\fR'', + . *** HISTORY.orig Sat Sep 21 00:56:19 1996 --- HISTORY Sat Sep 21 00:56:19 1996 *************** *** 1,2 **** --- 1,25 ---- + -----------------------> tgif-3.0-p7 => tgif-3.0-p8 <----------------------- + Here's a short list of added features/bug fixes. + + 1) Bring man pages up-to-date. + 2) Add NoTransform() to the Edit Menu to remove any transformation from a + simple (non-composite) object. + 3) Supports bg_color and fg_color file attributes. + 4) Supports PrintOneFilePerPage() when exporting (printing) to HTML and GIF. + 5) In text mode, holding down or while typing or + remove the next character. + 6) Add a new X default, Tgif.StretchableText to set the initial text stretch + mode. + 7) Fix a bug with showing the wrong page number in the page tag. Thanks to + Kit-ying Hui for pointing out the problems. + 8) Fix a bug in SaveSymInLibrary() from the File Menu. Thanks to Takashi + Nishida for pointing out the + problems. + 9) Fix an infinite-loop bug in showing a message when Tgif.BoldMsgFont is + used. Thanks to Klaus Elsbernd for + pointing out the problem. + 10) Fix a bug with auto-justifying text objects where printed text looks + justified differently from the corresponding screen text. + -----------------------> tgif-3.0-p6 => tgif-3.0-p7 <----------------------- Here's a short list of added features/bug fixes. *************** *** 146,149 **** /* ! * @(#)$Header: /u/halfmoon/home/william/src/tgif/v3/RCS/HISTORY,v 3.10 1996/06/01 04:05:25 william Exp $ */ --- 169,172 ---- /* ! * @(#)$Header: /u/halfmoon/home/william/src/tgif/v3/RCS/HISTORY,v 3.11 1996/09/20 13:40:36 william Exp $ */ *** descrip.mms.orig Sat Sep 21 00:56:20 1996 --- descrip.mms Sat Sep 21 00:56:20 1996 *************** *** 6,10 **** ! $ DEFINE SYS SYS$LIBRARY ! ! ! @(#)$Header: /u/halfmoon/home/william/src/tgif/v3/RCS/descrip.mms,v 3.2 1996/05/30 14:31:02 william Exp $ ! --- 6,10 ---- ! $ DEFINE SYS SYS$LIBRARY ! ! ! @(#)$Header: /u/halfmoon/home/william/src/tgif/v3/RCS/descrip.mms,v 3.3 1996/09/15 13:17:35 william Exp $ ! *************** *** 188,192 **** cmd.obj depends_on cmd.c,const.h,tgif_dbg.h,types.h,attr.e,choice.e,cmd.e,- color.e,dialog.e,drawing.e,dup.e,imgproc.e,mark.e,move.e,msg.e,- ! obj.e,page.e,select.e,setup.e,stk.e,xpixmap.e color.obj depends_on color.c,const.h,tgif_dbg.h,types.h,choice.e,cmd.e,color.e,- dialog.e,drawing.e,file.e,font.e,imgproc.e,mainloop.e,mark.e,- --- 188,192 ---- cmd.obj depends_on cmd.c,const.h,tgif_dbg.h,types.h,attr.e,choice.e,cmd.e,- color.e,dialog.e,drawing.e,dup.e,imgproc.e,mark.e,move.e,msg.e,- ! obj.e,page.e,select.e,setup.e,stk.e,xpixmap.e,wb1.e color.obj depends_on color.c,const.h,tgif_dbg.h,types.h,choice.e,cmd.e,color.e,- dialog.e,drawing.e,file.e,font.e,imgproc.e,mainloop.e,mark.e,- *************** *** 213,217 **** poly.e,polygon.e,raster.e,rcbox.e,rect.e,remote.e,ruler.e,- scroll.e,select.e,setup.e,shape.e,shortcut.e,special.e,stk.e,- ! stretch.e,text.e,xbitmap.e,xpixmap.e,xbm/intr.xbm,xbm/trek.xbm dup.obj depends_on dup.c,const.h,tgif_dbg.h,types.h,attr.e,auxtext.e,choice.e,- cmd.e,drawing.e,dup.e,grid.e,mark.e,move.e,msg.e,obj.e,page.e,- --- 213,218 ---- poly.e,polygon.e,raster.e,rcbox.e,rect.e,remote.e,ruler.e,- scroll.e,select.e,setup.e,shape.e,shortcut.e,special.e,stk.e,- ! stretch.e,text.e,wb1.e,xbitmap.e,xpixmap.e,xbm/intr.xbm,- ! xbm/trek.xbm dup.obj depends_on dup.c,const.h,tgif_dbg.h,types.h,attr.e,auxtext.e,choice.e,- cmd.e,drawing.e,dup.e,grid.e,mark.e,move.e,msg.e,obj.e,page.e,- *************** *** 247,250 **** --- 248,252 ---- mainmenu.e,mark.e,menu.e,msg.e,obj.e,pattern.e,page.e,ps.e,- raster.e,select.e,setup.e,text.e,util.e,xpixmap.e + frontend.obj depends_on frontend.c ftp.obj depends_on ftp.c,const.h,tgif_dbg.h,ftp.e,remote.e,tcp.e,util.e grid.obj depends_on grid.c,const.h,tgif_dbg.h,types.h,choice.e,color.e,- *************** *** 273,277 **** navigate.e,obj.e,page.e,ps.e,raster.e,remote.e,ruler.e,- scroll.e,select.e,setup.e,shape.e,shortcut.e,stk.e,text.e,- ! version.e,xbitmap.e,xpixmap.e mainmenu.obj depends_on mainmenu.c,const.h,tgif_dbg.h,types.h,align.e,choice.e,- color.e,cursor.e,edit.e,file.e,font.e,grid.e,help.e,imgproc.e,- --- 275,279 ---- navigate.e,obj.e,page.e,ps.e,raster.e,remote.e,ruler.e,- scroll.e,select.e,setup.e,shape.e,shortcut.e,stk.e,text.e,- ! version.e,wb1.e,xbitmap.e,xpixmap.e mainmenu.obj depends_on mainmenu.c,const.h,tgif_dbg.h,types.h,align.e,choice.e,- color.e,cursor.e,edit.e,file.e,font.e,grid.e,help.e,imgproc.e,- *************** *** 404,410 **** spline.e,stk.e,stretch.e,text.e,xbitmap.e,xpixmap.e,- tgificon.xbm,xbm/btn1.xbm ! shape.obj depends_on shape.c,const.h,tgif_dbg.h,types.h,arc.e,attr.e,box.e,- ! cmd.e,color.e,cursor.e,dialog.e,drawing.e,dup.e,group.e,menu.e,- ! msg.e,obj.e,page.e,pattern.e,poly.e,polygon.e,raster.e,- select.e,setup.e,shape.e,spline.e,text.e,util.e shortcut.obj depends_on shortcut.c,const.h,tgif_dbg.h,types.h,msg.e,setup.e,- --- 406,412 ---- spline.e,stk.e,stretch.e,text.e,xbitmap.e,xpixmap.e,- tgificon.xbm,xbm/btn1.xbm ! shape.obj depends_on shape.c,const.h,tgif_dbg.h,types.h,arc.e,attr.e,auxtext.e,- ! box.e,cmd.e,color.e,cursor.e,dialog.e,drawing.e,dup.e,group.e,- ! menu.e,msg.e,obj.e,page.e,pattern.e,poly.e,polygon.e,raster.e,- select.e,setup.e,shape.e,spline.e,text.e,util.e shortcut.obj depends_on shortcut.c,const.h,tgif_dbg.h,types.h,msg.e,setup.e,- *************** *** 415,419 **** mark.e,menu.e,msg.e,move.e,names.e,obj.e,page.e,raster.e,- remote.e,ruler.e,scroll.e,select.e,setup.e,special.e,stk.e,- ! text.e,util.e spline.obj depends_on spline.c,const.h,tgif_dbg.h,types.h,dialog.e,poly.e,- polygon.e,raster.e,rect.e,setup.e,spline.e --- 417,421 ---- mark.e,menu.e,msg.e,move.e,names.e,obj.e,page.e,raster.e,- remote.e,ruler.e,scroll.e,select.e,setup.e,special.e,stk.e,- ! text.e,wb1.e,util.e spline.obj depends_on spline.c,const.h,tgif_dbg.h,types.h,dialog.e,poly.e,- polygon.e,raster.e,rect.e,setup.e,spline.e *************** *** 438,448 **** tgif.obj depends_on tgif.c,const.h,tgif_dbg.h,types.h,color.e,file.e,- mainloop.e,msg.e,obj.e,page.e,setup.e,util.e - util.obj depends_on util.c,const.h,tgif_dbg.h,remote.e,util.e tgif_dbg.obj depends_on tgif_dbg.c vms_comp.obj depends_on vms_comp.c, vms_comp.h - wb1.obj depends_on wb1.c - wb2.obj depends_on wb2.c - wb3.obj depends_on wb3.c version.obj depends_on version.c,version.e xbitmap.obj depends_on xbitmap.c,const.h,tgif_dbg.h,types.h,attr.e,auxtext.e,- choice.e,cmd.e,color.e,cursor.e,dialog.e,drawing.e,dup.e,eps.e,- --- 440,458 ---- tgif.obj depends_on tgif.c,const.h,tgif_dbg.h,types.h,color.e,file.e,- mainloop.e,msg.e,obj.e,page.e,setup.e,util.e tgif_dbg.obj depends_on tgif_dbg.c + util.obj depends_on util.c,const.h,tgif_dbg.h,remote.e,util.e + version.obj depends_on version.c vms_comp.obj depends_on vms_comp.c, vms_comp.h version.obj depends_on version.c,version.e + vms_comp.obj depends_on vms_comp.c + wb1.obj depends_on wb1.c,const.h,tgif_dbg.h,types.h,choice.e,cmd.e,color.e,- + drawing.e,file.e,msg.e,obj.e,page.e,select.e,setup.e,tcp.e,- + wb1.e,wb2.e,wb3.e + wb2.obj depends_on wb2.c,const.h,tgif_dbg.h,types.h,attr.e,auxtext.e,color.e,- + dup.e,file.e,wb2.e,wb3.e + wb3.obj depends_on wb3.c,const.h,tgif_dbg.h,types.h,patchlvl.h,align.e,- + auxtext.e,color.e,file.e,font.e,grid.e,msg.e,page.e,pattern.e,- + poly.e,prtgif.e,setup.e,stk.e,text.e,version.e,wb2.e,wb3.e,- + xpixmap.e xbitmap.obj depends_on xbitmap.c,const.h,tgif_dbg.h,types.h,attr.e,auxtext.e,- choice.e,cmd.e,color.e,cursor.e,dialog.e,drawing.e,dup.e,eps.e,- *** tgif.Xdefaults.orig Sat Sep 21 00:56:21 1996 --- tgif.Xdefaults Sat Sep 21 00:56:21 1996 *************** *** 7,105 **** ! identical to the default values used in tgif. ! ! ! @(#)$Header: /u/halfmoon/home/william/src/tgif/v3/RCS/tgif.Xdefaults,v 3.1 1996/05/30 14:26:43 william Exp $ ! ! Tgif*Geometry: 640x512-40+20 ! Tgif*IconGeometry: -224+82 ! Tgif*Foreground: Black ! Tgif*Background: Aquamarine ! Tgif*BorderColor: Aquamarine ! Tgif*ReverseVideo: on ! ! ! Tgif*InitialFont: Times ! !Tgif*InitialFont: Courier ! !Tgif*InitialFont: Helvetica ! !Tgif*InitialFont: NewCentury ! !Tgif*InitialFont: Symbol ! ! ! Tgif*InitialFontStyle: Roman ! !Tgif*InitialFontStyle: Bold ! !Tgif*InitialFontStyle: Italic ! !Tgif*InitialFontStyle: BoldItalic ! ! ! !Tgif*InitialFontJust: Left ! Tgif*InitialFontJust: Center ! !Tgif*InitialFontJust: Right ! ! ! Tgif*MaxColors: 11 ! Tgif*Color0: magenta ! Tgif*Color1: red ! Tgif*Color2: green ! Tgif*Color3: blue ! Tgif*Color4: yellow ! Tgif*Color5: pink ! Tgif*Color6: cyan ! Tgif*Color7: CadetBlue ! Tgif*Color8: white ! Tgif*Color9: black ! Tgif*Color10: DarkSlateGray ! Tgif*DefaultColorIndex: 0 ! Tgif*ShortCuts: !A:SelectAll() \n\ ! !U:Undo() \n\ ! !R:Redo() \n\ ! !X:Delete() \n\ ! !T:ToggleNamedAttrShown(eq=) \n\ ! !Q:Quit() ! Tgif*MaxLineWidths: 7 ! Tgif*DefaultLineWidth: 0 ! Tgif*LineWidth0: 1 ! Tgif*LineWidth1: 2 ! Tgif*LineWidth2: 3 ! Tgif*LineWidth3: 4 ! Tgif*LineWidth4: 5 ! Tgif*LineWidth5: 6 ! Tgif*LineWidth6: 7 ! Tgif*ArrowWidth0: 8 ! Tgif*ArrowWidth1: 10 ! Tgif*ArrowWidth2: 12 ! Tgif*ArrowWidth3: 14 ! Tgif*ArrowWidth4: 18 ! Tgif*ArrowWidth5: 20 ! Tgif*ArrowWidth6: 22 ! Tgif*ArrowHeight0: 3 ! Tgif*ArrowHeight1: 4 ! Tgif*ArrowHeight2: 5 ! Tgif*ArrowHeight3: 6 ! Tgif*ArrowHeight4: 7 ! Tgif*ArrowHeight5: 8 ! Tgif*ArrowHeight6: 9 ! !Tgif*MaxDomains: 1 ! !Tgif*DomainPath0: DRAWING:\n\ ! ! /usr/local/lib/tgif/drawing:\n\ ! ! /usr/local/lib/tgif/msic ! !Tgif*DefaultDomain: 0 ! ! Don't need to set the TGIF_DRAWING environment variable any more. ! ! The next 3 are obsoleted ! ! !Tgif*InitialFontDPI: 75 ! !Tgif*InitialFontSizeIndex: 3 ! !Tgif*MsgFontSizeIndex: 3 ! Tgif*InitialFontSize: 20 ! Tgif*MsgFontSize: 14 ! Tgif*RulerFontSize: 10 ! Tgif*DefaultFontSize: 14 ! ! Tgif*FontSizes: 8 10 11 12 14 17 18 20 24 25 34 ! Tgif*AdditionalFonts: \n\ lucidabright-medium-r-normal,iso8859-1,ZapfChancery-MediumItalic\n\ lucidabright-demibold-r-normal,iso8859-1,ZapfChancery-MediumItalic\n\ lucidabright-medium-i-normal,iso8859-1,ZapfChancery-MediumItalic\n\ lucidabright-demibold-i-normal,iso8859-1,ZapfChancery-MediumItalic ! !Tgif*AdditionalFonts: \n\ ! lucidasans-%d,iso8859-1,ZapfChancery-MediumItalic\n\ ! lucidasans-bold-%d,iso8859-1,ZapfChancery-MediumItalic\n\ ! lucidasans-italic-%d,iso8859-1,ZapfChancery-MediumItalic\n\ ! lucidasans-bolditalic-%d,iso8859-1,ZapfChancery-MediumItalic ! Tgif*FontNamePrefix: -* ! ! To get around font problems... If all you have are --- 7,56 ---- ! identical to the default values used in tgif. ! ! ! @(#)$Header: /u/halfmoon/home/william/src/tgif/v3/RCS/tgif.Xdefaults,v 3.3 1996/09/15 05:04:51 william Exp $ ! ! Tgif.Geometry: 640x512-40+20 ! Tgif.IconGeometry: -224+82 ! Tgif.Foreground: Black ! Tgif.Background: Aquamarine ! Tgif.BorderColor: Aquamarine ! Tgif.ReverseVideo: on ! ! ! Tgif.InitialFont: Times ! !Tgif.InitialFont: Courier ! !Tgif.InitialFont: Helvetica ! !Tgif.InitialFont: NewCentury ! !Tgif.InitialFont: Symbol ! ! ! Tgif.InitialFontStyle: Roman ! !Tgif.InitialFontStyle: Bold ! !Tgif.InitialFontStyle: Italic ! !Tgif.InitialFontStyle: BoldItalic ! ! ! !Tgif.InitialFontJust: Left ! Tgif.InitialFontJust: Center ! !Tgif.InitialFontJust: Right ! ! The next 3 are obsoleted ! ! !Tgif.InitialFontDPI: 75 ! !Tgif.InitialFontSizeIndex: 3 ! !Tgif.MsgFontSizeIndex: 3 ! Tgif.InitialFontSize: 20 ! Tgif.MsgFontSize: 14 ! Tgif.RulerFontSize: 10 ! Tgif.DefaultFontSize: 14 ! ! Tgif.FontSizes: 8 10 11 12 14 17 18 20 24 25 34 ! Tgif.AdditionalFonts: \n\ lucidabright-medium-r-normal,iso8859-1,ZapfChancery-MediumItalic\n\ lucidabright-demibold-r-normal,iso8859-1,ZapfChancery-MediumItalic\n\ lucidabright-medium-i-normal,iso8859-1,ZapfChancery-MediumItalic\n\ lucidabright-demibold-i-normal,iso8859-1,ZapfChancery-MediumItalic ! !Tgif.AdditionalFonts: \n\ ! lucidasans-%d,iso8859-1,ZapfChancery-MediumItalic\n\ ! lucidasans-bold-%d,iso8859-1,ZapfChancery-MediumItalic\n\ ! lucidasans-italic-%d,iso8859-1,ZapfChancery-MediumItalic\n\ ! lucidasans-bolditalic-%d,iso8859-1,ZapfChancery-MediumItalic ! Tgif.FontNamePrefix: -* ! ! To get around font problems... If all you have are *************** *** 129,262 **** Tgif.Symbol: -*-fixed-medium-r-normal--%d-* ! ! Tgif*ShowMeasurement: false ! ! Tgif*DefaultCursor: arrow ! Tgif*DrawCursor: arrow ! Tgif*DragCursor: hand2 ! Tgif*VertexCursor: dotbox ! Tgif*RubberBandColor: Aquamarine ! Tgif*PrintCommand: lpr ! ! For Epson Stylux 800 ! ! !Tgif*PrintCommand: gs -q -sDEVICE=escp2 -sOutputFile=- -dNOPAUSE -- %s | lpr ! ! !Tgif*WhereToPrint: Printer ! Tgif*WhereToPrint: EPS ! !Tgif*WhereToPrint: PS ! !Tgif*WhereToPrint: Bitmap ! ! ! !Tgif*PrintDirectory: /tmp ! Tgif*NoTgifIcon: false ! Tgif*UseWMIconPixmap: false ! Tgif*DontShowVersion: true ! Tgif*XBmReverseVideo: false ! Tgif*AskForXBmSpec: false ! Tgif*AskForXPmSpec: false ! Tgif*StripEPSComments: true ! Tgif*GuessXPmBgColor: false ! Tgif*XPmOutputVersion: 1 ! Tgif*XPmInXGrabSCFormat: false ! Tgif*UseGrayScale: false ! Tgif*AutoPanInEditText: true ! Tgif*PercentPrintReduction: 100 ! Tgif*ConstrainedMove: false ! Tgif*DoubleQuoteDoubleQuote: false ! ! ! Tgif*GridSystem: English ! !Tgif*GridSystem: Metric ! ! ! Tgif*InitialGrid: -1 ! Tgif*DropObsIconAttrWhenUpdate: false ! Tgif*UseRecentDupDistance: true ! Tgif*SplineTolerance: 7 ! Tgif*SplineRubberband: true ! Tgif*Synchronize: off ! Tgif*DoubleClickUnIconify: true ! Tgif*MainMenuPinDistance: 80 ! Tgif*DoubleClickInterval: 300 ! Tgif*HandleSize: 2 ! Tgif*HistoryDepth: 10 ! Tgif*SaveTmpOnReturn: false ! Tgif*ImportFromLibrary: false ! Tgif*WarpToWinCenter: false ! Tgif*SaveCommentsInSaveNew: true ! Tgif*CanvasWindowOnly: false ! Tgif*UsePsAdobeString: false ! !Tgif*UsePsAdobeString: 2.0/1.2 ! Tgif*HalfToneBitmap: false ! Tgif*ThresholdBitmap: false ! Tgif*BitmapThreshold: 0.5 ! Tgif*GroupedTextEditable: true ! !Tgif*ForceClearAfterEPS: false <-- obsolete!!! ! Tgif*DefaultEPSScaling: 1 ! !Tgif*DefaultEPSScaling: 1.7778 ! Tgif*IntrCheckInterval: 10 ! Tgif*TiledPageScaling: 0.95 ! !Tgif*TGIFPATH: ! !Tgif*TGIFICON: ! Tgif*StickyMenuSelection: true ! !Tgif*PSBopHook: tgif-bop-hook ! !Tgif*PSEopHook: tgif-eop-hook ! !Tgif*InitialPrintInColor: true ! !Tgif*MinimalEPS: true ! !Tgif*InitialShowGrid: false ! !Tgif*InitialSnapOn: false ! Tgif*NoMenuBar: false ! Tgif*NoStatusWindow: false ! Tgif*ReverseMouseStatusButtons: false ! Tgif*MinimalMenubar: false ! Tgif*ColorBgInPrintingColorPS: false ! Tgif*ScrollBarWidth: 16 ! Tgif*InitialPaperSize: 8.5in x 11in ! !Tgif*InitialPaperSize: 21cm x 29.7cm ! Tgif*UpdateChildUsingAlignment: false ! !Tgif*UpdateChildUsingAlignment: true ! !Tgif*UpdateChildUsingAlignment: no_overlap ! Tgif*GenerateImageMap: false ! Tgif*XpmToGif: xpmtoppm %s | ppmtogif ! Tgif*ImageMapFileExtension: map ! Tgif*GifFileExtension: gif ! Tgif*ImageMapFileFormat: NCSA ! !Tgif*ImageMapFileFormat: CERN ! Tgif*UseXPmVersion1ForImageMap: true ! Tgif*UsePaperSizeStoredInFile: false ! Tgif*OneMotionSelMove: false ! Tgif*TiffEPSI: false ! Tgif*XbmToTiff: xbmtopbm %s | pnmtotiff -none > %s ! !Tgif*EPSIExportExtension: epsi ! !Tgif*HotListFileName: /.Tgif_hotlist ! ! Fot the viewers below, use %S if the tool can accept URL; otherwise, use %s. ! If NONE is used, tgif will prompt for a local file name to save into. ! ! !Tgif*htmlViewer: xmosaic %S ! !Tgif*gifViewer: xv %s ! !Tgif*tiffViewer: NONE ! ! ! Tgif*AutoHyperSpaceOnRemote: true ! Tgif*AllowLaunchInHyperSpace: false ! Tgif*CanChangeAttrColor: false ! !Tgif*MimeTypesFile: /u/guest/william/.mime.types ! !Tgif*LocalRGBTxt: /usr/local/lib/X11/rgb.txt ! Tgif*PrintUsingRequestedColor: false ! Tgif*ShowMeasurementUnit: pixel ! !Tgif*ShowMeasurementUnit: inch ! !Tgif*ShowMeasurementUnit: cm ! Tgif*PageStyleLandscape: false ! Tgif*QueryZoomInPoint: true ! !Tgif*QueryZoomInPoint: always ! !Tgif*QueryZoomInPoint: no_select ! Tgif*GUnZipCmd: gunzip -c ! !Tgif*HttpProxy: : ! !Tgif*FtpProxy: : ! Tgif*InitialArrowStyle: RIGHT ! Tgif*ShowPageInEPS: false ! Tgif*MaxNavigateCacheBuffers: 40 ! Tgif*NumberFileInPrintOnePage: false ! Tgif*OneMotionTimeout: 200 ! Tgif*MinMoveInterval: 0 ! Tgif*GifToXpm: giftopnm %s | ppmtoxpm ! Tgif*InitExportPixelTrim: 0,0,0,0 ! ! Version 3.0 and above --- 80,280 ---- Tgif.Symbol: -*-fixed-medium-r-normal--%d-* ! ! Tgif.DefaultCursor: arrow ! Tgif.DrawCursor: arrow ! Tgif.DragCursor: hand2 ! Tgif.VertexCursor: dotbox ! Tgif.RubberBandColor: Aquamarine ! ! ! Tgif.MaxColors: 11 ! Tgif.Color0: magenta ! Tgif.Color1: red ! Tgif.Color2: green ! Tgif.Color3: blue ! Tgif.Color4: yellow ! Tgif.Color5: pink ! Tgif.Color6: cyan ! Tgif.Color7: CadetBlue ! Tgif.Color8: white ! Tgif.Color9: black ! Tgif.Color10: DarkSlateGray ! Tgif.DefaultColorIndex: 0 ! ! ! Tgif.ShortCuts: !A:SelectAll() \n\ ! !U:Undo() \n\ ! !R:Redo() \n\ ! !X:Delete() \n\ ! !F:FlushUndoBuffer() \n\ ! !T:ToggleNamedAttrShown(eq=) \n\ ! !Q:Quit() ! ! ! Tgif.MaxLineWidths: 7 ! Tgif.DefaultLineWidth: 0 ! Tgif.LineWidth0: 1 ! Tgif.LineWidth1: 2 ! Tgif.LineWidth2: 3 ! Tgif.LineWidth3: 4 ! Tgif.LineWidth4: 5 ! Tgif.LineWidth5: 6 ! Tgif.LineWidth6: 7 ! Tgif.ArrowWidth0: 8 ! Tgif.ArrowWidth1: 10 ! Tgif.ArrowWidth2: 12 ! Tgif.ArrowWidth3: 14 ! Tgif.ArrowWidth4: 18 ! Tgif.ArrowWidth5: 20 ! Tgif.ArrowWidth6: 22 ! Tgif.ArrowHeight0: 3 ! Tgif.ArrowHeight1: 4 ! Tgif.ArrowHeight2: 5 ! Tgif.ArrowHeight3: 6 ! Tgif.ArrowHeight4: 7 ! Tgif.ArrowHeight5: 8 ! Tgif.ArrowHeight6: 9 ! !Tgif.MaxDomains: 1 ! !Tgif.DomainPath0: DRAWING:\n\ ! ! /usr/local/lib/tgif/drawing:\n\ ! ! /usr/local/lib/tgif/msic ! !Tgif.DefaultDomain: 0 ! ! Don't need to set the TGIF_DRAWING environment variable any more. ! ! Tgif.PrintCommand: lpr ! ! For Epson Stylux 800 ! ! !Tgif.PrintCommand: gs -q -sDEVICE=escp2 -sOutputFile=- -dNOPAUSE -- %s | lpr ! ! !Tgif.WhereToPrint: Printer ! Tgif.WhereToPrint: EPS ! !Tgif.WhereToPrint: PS ! !Tgif.WhereToPrint: Bitmap ! !Tgif.WhereToPrint: Text ! !Tgif.WhereToPrint: EPSI ! !Tgif.WhereToPrint: GIF ! !Tgif.WhereToPrint: HTML ! ! ! !Tgif.PrintDirectory: /tmp ! Tgif.NoTgifIcon: false ! Tgif.UseWMIconPixmap: false ! Tgif.DontShowVersion: true ! Tgif.XBmReverseVideo: false ! Tgif.AskForXBmSpec: false ! Tgif.AskForXPmSpec: false ! Tgif.StripEPSComments: true ! Tgif.GuessXPmBgColor: false ! Tgif.XPmOutputVersion: 1 ! Tgif.XPmInXGrabSCFormat: false ! Tgif.UseGrayScale: false ! Tgif.AutoPanInEditText: true ! Tgif.PercentPrintReduction: 100 ! Tgif.ConstrainedMove: false ! Tgif.DoubleQuoteDoubleQuote: false ! ! ! Tgif.GridSystem: English ! !Tgif.GridSystem: Metric ! ! ! Tgif.InitialGrid: -1 ! Tgif.DropObsIconAttrWhenUpdate: false ! Tgif.UseRecentDupDistance: true ! Tgif.SplineTolerance: 7 ! Tgif.SplineRubberband: true ! Tgif.Synchronize: off ! Tgif.DoubleClickUnIconify: true ! Tgif.MainMenuPinDistance: 80 ! Tgif.DoubleClickInterval: 300 ! Tgif.HandleSize: 2 ! Tgif.HistoryDepth: 10 ! Tgif.SaveTmpOnReturn: false ! Tgif.ImportFromLibrary: false ! Tgif.WarpToWinCenter: false ! Tgif.SaveCommentsInSaveNew: true ! Tgif.CanvasWindowOnly: false ! ! ! Tgif.UsePsAdobeString: false ! ! The following will generate "%!PS-Adobe-2.0 EPSF-1.2" in EPS files ! ! which may be needed for some Windows applications. ! !Tgif.UsePsAdobeString: 2.0/1.2 ! ! ! Tgif.HalfToneBitmap: false ! Tgif.ThresholdBitmap: false ! Tgif.BitmapThreshold: 0.5 ! Tgif.GroupedTextEditable: true ! !Tgif.ForceClearAfterEPS: false <-- obsolete!!! ! Tgif.DefaultEPSScaling: 1 ! !Tgif.DefaultEPSScaling: 1.7778 ! Tgif.IntrCheckInterval: 10 ! Tgif.TiledPageScaling: 0.95 ! !Tgif.TGIFPATH: ! !Tgif.TGIFICON: ! Tgif.StickyMenuSelection: true ! !Tgif.PSBopHook: tgif-bop-hook ! !Tgif.PSEopHook: tgif-eop-hook ! !Tgif.MinimalEPS: true ! !Tgif.InitialPrintInColor: true ! !Tgif.InitialShowGrid: false ! !Tgif.InitialSnapOn: false ! Tgif.NoMenubar: false ! Tgif.NoStatusWindow: false ! Tgif.ReverseMouseStatusButtons: false ! Tgif.MinimalMenubar: false ! Tgif.ColorBgInPrintingColorPS: false ! Tgif.ScrollBarWidth: 16 ! ! ! Tgif.InitialPaperSize: 8.5in x 11in ! !Tgif.InitialPaperSize: 21cm x 29.7cm ! ! ! Tgif.UpdateChildUsingAlignment: false ! !Tgif.UpdateChildUsingAlignment: true ! !Tgif.UpdateChildUsingAlignment: no_overlap ! ! ! Tgif.GenerateImageMap: false ! Tgif.XpmToGif: xpmtoppm %s | ppmtogif ! Tgif.ImageMapFileExtension: map ! Tgif.GifFileExtension: gif ! Tgif.ImageMapFileFormat: NCSA ! !Tgif.ImageMapFileFormat: CERN ! Tgif.UseXPmVersion1ForImageMap: true ! Tgif.UsePaperSizeStoredInFile: false ! Tgif.OneMotionSelMove: false ! Tgif.TiffEPSI: false ! Tgif.XbmToTiff: xbmtopbm %s | pnmtotiff -none > %s ! !Tgif.EPSIExportExtension: epsi ! !Tgif.HotListFileName: /.Tgif_hotlist ! ! Fot the viewers below, use %S if the tool can accept URL; otherwise, use %s. ! If NONE is used, tgif will prompt for a local file name to save into. ! ! !Tgif.htmlViewer: xmosaic %S ! !Tgif.gifViewer: xv %s ! !Tgif.tiffViewer: NONE ! ! ! Tgif.AutoHyperSpaceOnRemote: true ! Tgif.AllowLaunchInHyperSpace: false ! Tgif.CanChangeAttrColor: false ! !Tgif.MimeTypesFile: /u/guest/william/.mime.types ! !Tgif.LocalRGBTxt: /usr/local/lib/X11/rgb.txt ! Tgif.PrintUsingRequestedColor: false ! ! ! Tgif.ShowMeasurement: false ! Tgif.ShowMeasurementUnit: pixel ! !Tgif.ShowMeasurementUnit: inch ! !Tgif.ShowMeasurementUnit: cm ! ! ! Tgif.PageStyleLandscape: false ! ! ! Tgif.QueryZoomInPoint: true ! !Tgif.QueryZoomInPoint: always ! !Tgif.QueryZoomInPoint: no_select ! ! ! Tgif.GUnZipCmd: gunzip -c ! !Tgif.HttpProxy: : ! !Tgif.FtpProxy: : ! Tgif.InitialArrowStyle: RIGHT ! Tgif.ShowPageInEPS: false ! Tgif.MaxNavigateCacheBuffers: 40 ! Tgif.NumberFileInPrintOnePage: false ! Tgif.OneMotionTimeout: 200 ! Tgif.MinMoveInterval: 0 ! Tgif.GifToXpm: giftopnm %s | ppmtoxpm ! Tgif.InitExportPixelTrim: 0,0,0,0 ! ! Version 3.0 and above *************** *** 286,287 **** --- 304,306 ---- Tgif.PSA4PaperSize: false Tgif.ShapeShadowSpec: 2,2 + Tgif.StretchableText: false