23d22 < /* a def and instantiation. data. the worst possible name for data. */ 35,56c34,54 < /* < ##if 0 < #static data_t ** < #widgetEvent(Widget w, data_t * look) < #{ < # static data_t *d[10]; < # data_t *cur = list; < # int n = 0; < # < # while (cur != NULL) { < # if (cur->mask == look->mask && < # cur->flag == look->flag && < # cur->func == look->func && < # cur->w == w) < # d[n++] = cur; < # cur = cur->next; < # } < # < # < # d[n] = NULL; < # < # return n == 0 ? NULL : d; --- > > #if 0 > static data_t ** > widgetEvent(Widget w, data_t * look) > { > static data_t *d[10]; > data_t *cur = list; > int n = 0; > > while (cur != NULL) { > if (cur->mask == look->mask && > cur->flag == look->flag && > cur->func == look->func && > cur->w == w) > d[n++] = cur; > cur = cur->next; > } > > d[n] = NULL; > > return n == 0 ? NULL : d; 59d56 < */ 68d64 < /* I think the above is what gets passed to individual ops */ 76d71 < /* 78,81c73,76 < # XEvent myEvent; < # < # memcpy(&myEvent, event, sizeof(XEvent)); < # event = &myEvent; --- > XEvent myEvent; > > memcpy(&myEvent, event, sizeof(XEvent)); > event = &myEvent; 83d77 < */ 186d185 < printf("arc line tool active\n"); 217c217 < printf("outline closing freehand shape tool is active\n"); --- > 220d219 < 256c255 < printf("filled freehand closing shape tool is active\n"); --- > 191c191 < printf("open BOX tool. Uses line width. Hold shift for squares.\n"); --- > 194d193 < 225c224 < printf("filled BOX tool. secondary palette selection is fill pattern\n"); --- > 498c498 < gc = XCreateGC(dpy, mask, 1, 0); /* ## ### ## */ --- > gc = XCreateGC(dpy, mask, 0, 0); 575c575 < printf("BRUSH tool active\n"); --- > 611c611 < printf("ERASE to background is active tool\n"); --- > 650c650 < printf("SMEAR tool\n"); --- > 207d206 < printf("ovals tool is active. Hold shift for cirles\n"); 237d235 < printf("filled ovals tool. Note 'pull from center' option\n"); 267d264 < printf("oval tool. hold shift for circles\n"); 298d294 < printf("filled oval. primary palette selection is outline\n"); 347c347 < printf("the sling pencil ( bungee brush?) tool is active\n"); --- > 461d460 < printf("plain fill tool is active. See range selection widget\n"); 497d495 < printf("gradient FILL\n"); 542d539 < printf("fractal FILL\n"); 251c251 < printf("The TEXT tool is active.\n"); --- > 254d253 < 59,63c59 < #include "xartIcon.xpm" < < < < /* Global data, filter menu defaults. */ --- > /* Global data */ 143a140,143 > /* ## moved > #define SELECT_ALL_ITEM 5 > MI_SIMPLE("all"), > */ 229d228 < /* ## "size" menu */ 293c292 < MI_SIMPLECB("canvas help", HelpDialog, "canvas"), --- > MI_SIMPLECB("help", HelpDialog, "canvas"), 306,307c305,306 < {None, "un", XtNumber(unMenu), unMenu}, < {None, "??", XtNumber(helpMenu), helpMenu}, --- > {None, "UN", XtNumber(unMenu), unMenu}, > {None, "help", XtNumber(helpMenu), helpMenu}, 396,401d394 < /* ## called by tool window line and font menu callbacks (in operation.c), < seems to be for setting all GC's. Does some function passing cleverness. < e.g. fontSet() has GraphicAll(fontSetCallback, (void *) info) < where info is an FontStruct. fontSetCallback does an XtVaSetValues with it. < SOOO, Xt seems to change GCs in some cases. */ < 414,430d406 < GraphicAll2(GraphicAllProc func, void *data) < { < struct paintWindows *cur; < < for (cur = head; cur != NULL; cur = cur->next) { < if (!cur->done) < continue; < func(cur->paint, data); < printf("(int) cur->paint in graphicall2 is %d\n", (int)cur->paint); < printf(" data is %d\n",(int) data); < } < } < < < < < void 762d737 < int splitwidth, splitheight; 785a761 > 788,789c764 < info->li = tpi->li; /* ## was tpi->li or something */ < --- > info->li = tpi->li; 793c768 < printf(" group = coltoggle \n"); --- > 798d772 < 853,868c827,828 < < /* set the width of overlap for dualToggle toggles */ < splitwidth = info->width; < if ( splitwidth < 12 ) splitwidth = 12; < if ( splitwidth > 128 ) splitwidth = 12 ; < splitheight = info->height; < if ( splitheight < 12 ) splitheight = 12; < if ( splitheight > 128 ) splitheight = 12; < /* the > 128 catches a bug when pot is a solid and < the given dimension is ridiculous, but there must be a < better way */ < < < /* ## new with quill, the wrapper for a 2-toggle toggle, < instead of two whole patternRacks. */ < pot = XtVaCreateManagedWidget("dualToggle", formWidgetClass, --- > /* ## new with quill, the wrapper for a 2-toggle toggle */ > pot = XtVaCreateManagedWidget("dualToggle", boxWidgetClass, 873,874d832 < XtNwidth, 8, < XtNheight, 8, 875a834,835 > XtNvSpace, 0, > XtNhSpace, 0, 877a838,839 > /* ## I'd like to get iconAR to overlap iconA by 4 pixels, but I can't > get it to happen */ 879c841 < iconAR = XtVaCreateManagedWidget(nm, toggleWidgetClass, --- > iconA = XtVaCreateManagedWidget(nm, toggleWidgetClass, 882,883c844 < XtNradioGroup, info->li->primaryList, < XtNwidth, splitwidth + 4, --- > XtNradioGroup, info->li->primaryList, 884a846 > XtNpointerColor, pxl, 885a848 > XtNdefaultDistance, 0, 890c853 < iconA = XtVaCreateManagedWidget(nm, toggleWidgetClass, --- > iconAR = XtVaCreateManagedWidget(nm, toggleWidgetClass, 893c856 < XtNradioGroup, info->li->secondaryList, --- > XtNradioGroup, info->li->secondaryList, 895d857 < XtNheight, splitheight + 2, 896a859,862 > XtNpointerColor, pxl, > XtNwidth, 4, > XtNdefaultDistance, 0, > XtNx, 0, 901c867 < info->li->primaryList = iconAR; --- > info->li->primaryList = iconA; 903c869 < info->li->secondaryList = iconA; --- > info->li->secondaryList = iconAR; 910,916c876 < paletteMenu[1].data = (void *) iconAR; /* ## ## should this be a pot? not 1 ? */ < paletteMenu[2].data = (void *) iconAR; < paletteMenu[3].data = (void *) iconAR; < paletteMenu[4].data = (void *) iconAR; < MenuPopupCreate(iconAR,XtNumber(paletteMenu) , paletteMenu); < < paletteMenu[1].data = (void *) iconA; --- > paletteMenu[1].data = (void *) iconA; /* ## ## should this be a pot? not 1 ? */ 918,920c878,886 < paletteMenu[3].data = (void *) iconA; < paletteMenu[4].data = (void *) iconA; < MenuPopupCreate(iconA, XtNumber(paletteMenu), paletteMenu); --- > paletteMenu[3].data = (void *) iconA; > paletteMenu[4].data = (void *) iconA; > MenuPopupCreate(iconA,XtNumber(paletteMenu) , paletteMenu); > > paletteMenu[1].data = (void *) iconAR; > paletteMenu[2].data = (void *) iconAR; > paletteMenu[3].data = (void *) iconAR; > paletteMenu[4].data = (void *) iconAR; > MenuPopupCreate(iconAR, XtNumber(paletteMenu), paletteMenu); 923d888 < info->widget2 = iconAR; 924a890 > info->widget2 = iconAR; 943a910 > 2209c2176 < /* label = XtVaCreateManagedWidget(name, labelWidgetClass, form, --- > label = XtVaCreateManagedWidget(name, labelWidgetClass, form, 2212c2179 < */ --- > 2215c2182 < XtNfromHoriz, NULL, --- > XtNfromHoriz, label, 2226c2193 < XtNdefaultDistance, 6, --- > XtNdefaultDistance, 0, 2265c2232 < Widget xartI, form, viewport, pattern, bar; --- > Widget form, viewport, pattern, bar; 2523,2539d2489 < < < /* doesn't work. attempt to hang xart Icon under command buttons. < xartI = XtVaCreateManagedWidget(NULL, < toggleWidgetClass, form, < XtNpixmap, (Pixmap)xartIcon_xpm, < XtNfromVert, edit, < XtNleft, XtChainLeft, < XtNright, XtChainLeft, < XtNtop, XtChainTop, < XtNbottom, XtChainTop, < NULL); < < bitmap converter looks for files in /usr/include/X11/bitmaps, supposedly < see iconA for toggle with pixmap < */ < 244d243 < printf("basic LINE tool is active.\n"); 277d275 < printf("RAYS tool. button 2 to end a cluster.\n"); 40c40 < #include "xartIcon.xpm" --- > #include "XPaintIcon.xpm" 46c46 < #include "xart.ad.h" --- > #include "XPaint.ad.h" 139c139 < xartIcon_xpm, &icon, NULL, &myattributes)) { --- > XPaintIcon_xpm, &icon, NULL, &myattributes)) { 160c160 < fprintf(stderr, "Usage for %s (xart %s):\n", prog, XPAINT_VERSION); --- > fprintf(stderr, "Usage for %s (quill %s):\n", prog, XPAINT_VERSION); 215a216,220 > Colormap colormap; > Window window; > XSetWindowAttributes attributes; > unsigned long valuemask; > int screen_num = 0; 293a299 > Colormap colormap; 296a303,304 > XtAppContext app_context; > Display *display; 16,17c16 < /* $Id: misc.c,v 1.12 1997/09/03 19:31:07 torsten Exp $ < ## stuff to cache XOR GCs and pix, set cursor, traverse UP a widget tree.....*/ --- > /* $Id: misc.c,v 1.12 1997/09/03 19:31:07 torsten Exp $ */ 42c41 < Widget /* ## get the patriarch of a widget */ --- > Widget 82,89d80 < /* < void < SetQuillCursor(Widget w) < { < XtVaSetValues(w, XtVaTypedArg, < XtNcursor, XtRString, "quill", sizeof(Cursor), NULL); < } < */ 16,18c16 < /* $Id: operation.c,v 1.18 1997/08/13 19:45:28 torsten Exp $ < ## operation = tool . setOperation sets the current tool. < This file is all about the tool ( main ) window. */ --- > /* $Id: operation.c,v 1.18 1997/08/13 19:45:28 torsten Exp $ */ 115,216d112 < < /* ## "GC" Graphic Context set function stuff, < by the dumbest means possible. These guys imitate the above, < and are wrapped by a CB using GraphicAll, Like the above is. < < These get called via GraphicAll, which passes them (cur->paint, data) */ < < static void < setFunctionBlack(Widget w, void *funcVal) < { XtVaSetValues(w, XtNfunction, funcVal, NULL); } < < static void < setFunctionAnd(Widget w, void *funcVal) < { XtVaSetValues(w, XtNfunction, 1, NULL); } < < /* < static void < setFunctionAndReverse(Widget w, void *funcVal) < { XtVaSetValues(w, XtNfunction, 2, NULL); } < */ < < static void < setFunctionCopy(Widget w, void *funcVal) < { XtVaSetValues(w, XtNfunction, 3, NULL); } < < /* < static void < setFunctionAndInverted(Widget w, void *funcVal) < { XtVaSetValues(w, XtNfunction, 4, NULL); } < < static void < setFunctionXor(Widget w, void *funcVal) < { XtVaSetValues(w, XtNfunction, 6, NULL); } < < static void < setFunctionOr(Widget w, void *funcVal) < { XtVaSetValues(w, XtNfunction, 7, NULL); } < < static void < setFunctionNor(Widget w, void *funcVal) < { XtVaSetValues(w, XtNfunction, 8, NULL); } < < static void < setFunctionEquiv(Widget w, void *funcVal) < { XtVaSetValues(w, XtNfunction, 9, NULL); } < < static void < setFunctionInvert(Widget w, void *funcVal) < { XtVaSetValues(w, XtNfunction, 10, NULL); } < < static void < setFunctionOrReverse(Widget w, void *funcVal) < { XtVaSetValues(w, XtNfunction, 11, NULL); } < < static void < setFunctionCopyInverted(Widget w, void *funcVal) < { XtVaSetValues(w, XtNfunction, 12, NULL); } < < static void < setFunctionOrInverted(Widget w, void *funcVal) < { XtVaSetValues(w, XtNfunction, 13, NULL); } < < static void < setFunctionNand(Widget w, void *funcVal) < { XtVaSetValues(w, XtNfunction, 14, NULL); } < < static void < setFunctionWhite(Widget w, void *funcVal) < { XtVaSetValues(w, XtNfunction, 15, NULL); } < */ < < static void < setFunctionCopyCB(Widget w, XtPointer junk, XtPointer junk2) { < Arg arg; < int three = 3; < GraphicAll2(setFunctionCopy,(void *) three); < printf("global graphics function change to NORMAL COPY function\n"); < XtSetArg(arg, XtNfunction, three); < OperationAddArg(arg); < } < < static void < setFunctionBlackCB(Widget w, XtPointer junk, XtPointer junk2) { < Arg arg; < int zero = 0; < GraphicAll2(setFunctionBlack,(void *) zero); < printf("global graphics function change to BLACK function\n"); < XtSetArg(arg, XtNfunction, zero); < OperationAddArg(arg); < } < < static void < setFunctionAndCB(Widget w, XtPointer junk, XtPointer junk2) { < Arg arg; < int one = 1; < printf("global graphics function change to AND function\n"); < GraphicAll2(setFunctionAnd, (void *) one); < XtSetArg(arg, XtNfunction, one); < OperationAddArg(arg); < } < < 218c114,115 < okLineCallback(Widget w, XtPointer junk, XtPointer infoArg) { --- > okLineCallback(Widget w, XtPointer junk, XtPointer infoArg) > { 266c163 < printf("width of pencil family tools is now %d pixels\n", width); --- > /* ## printf("pencil family tool line width\n"); */ 701c598 < MI_FLAGCB("all", MF_CHECKON | MF_GROUP1, selectPopupCB, 0), --- > MI_FLAGCB("shape", MF_CHECKON | MF_GROUP1, selectPopupCB, 0), 740c637 < MI_FLAGCB("horiz",MF_CHECKON | MF_GROUP1,quillPopupCB,5), --- > MI_FLAGCB("hor",MF_CHECKON | MF_GROUP1,quillPopupCB,5), 744c641 < MI_FLAGCB("one pixel",MF_CHECKON | MF_GROUP2,quillPopupCB,8), --- > MI_FLAGCB("pixel",MF_CHECKON | MF_GROUP2,quillPopupCB,8), 746,749c643,646 < MI_FLAGCB(" 4",MF_CHECKON | MF_GROUP2,quillPopupCB,10), < MI_FLAGCB(" 8",MF_CHECKON | MF_GROUP2,quillPopupCB,11), < MI_FLAGCB(" 16",MF_CHECKON | MF_GROUP2,quillPopupCB,12), < MI_FLAGCB(" 32",MF_CHECKON | MF_GROUP2,quillPopupCB,13), --- > MI_FLAGCB("nib size 4",MF_CHECKON | MF_GROUP2,quillPopupCB,10), > MI_FLAGCB("nib size 8",MF_CHECKON | MF_GROUP2,quillPopupCB,11), > MI_FLAGCB("nib size 16",MF_CHECKON | MF_GROUP2,quillPopupCB,12), > MI_FLAGCB("nib size 32",MF_CHECKON | MF_GROUP2,quillPopupCB,13), 796c693 < static void /* ## TODO make the ovals default to pull-from-center */ --- > static void 894,896c791 < ** ## the following preprozzzezzor crap creates OperationPair items < of the add and remove functions for each tool. This gets put into < iconlistitems for each tool and then put in the iconlist to follow. --- > ** Done with operation popup menus 946,947d840 < < /* ## this array determines the order of the tool icons in the tool box */ 953,956d845 < {"erase", XPMMAP(erase), &EraseOp, < "(2): changeBrush()", MENU(erase), None}, < {"smear", XPMMAP(smear), &SmearOp, < "(2): changeBrush()", MENU(smear), None}, 958a848,853 > {"quill", XPMMAP(quill), &QuillOp, > NULL, MENU(quill), None}, /* ## change a NULL to menu(quill)*/ > {"selectBox", XPMMAP(select), &SelectBoxOp, > NULL, MENU(selectB), None}, > {"lasso", XPMMAP(lasso), &LassoOp, > NULL, MENU(lasso), None}, 960c855,859 < NULL, MENU(line), None}, --- > NULL, MENU(line), None}, > {"spray", XPMMAP(spray), &SprayOp, > "(2): changeSpray()", MENU(spray), None}, > {"fill", XPMMAP(fill), &FillOp, > NULL, MENU(fill), None}, 962c861,871 < NULL, MENU(dotPencil), None}, --- > NULL, MENU(dotPencil), None}, > {"tfill", XPMMAP(tfill), &TFillOp, > "(2): changeTFillParms()", MENU(tfill), None}, > #ifdef FEATURE_FRACTAL > {"ffill", XPMMAP(ffill), &FFillOp, > NULL, MENU(ffill), None}, > #endif > {"smear", XPMMAP(smear), &SmearOp, > "(2): changeBrush()", MENU(smear), None}, > {"text", XPMMAP(text), &FontOp, > "(2): changeFont()", MENU(text), None}, 966a876,878 > {"erase", XPMMAP(erase), &EraseOp, > "(2): changeBrush()", MENU(erase), None}, > 982a895,896 > {"selectPoly", XPMMAP(selpoly), &SelectPolyOp, > NULL, MENU(selectA), None}, 986,992d899 < {"quill", XPMMAP(quill), &QuillOp, < NULL, MENU(quill), None}, /* ## change a NULL to menu(quill)*/ < {"selectBox", XPMMAP(select), &SelectBoxOp, < NULL, MENU(selectB), None}, < {"lasso", XPMMAP(lasso), &LassoOp, < NULL, MENU(poly), None}, < {"selectPoly", XPMMAP(selpoly), &SelectPolyOp, 994,1006c901 < NULL, MENU(lasso), None}, < {"spray", XPMMAP(spray), &SprayOp, < "(2): changeSpray()", MENU(spray), None}, < {"fill", XPMMAP(fill), &FillOp, < NULL, MENU(fill), None}, < {"tfill", XPMMAP(tfill), &TFillOp, < "(2): changeTFillParms()", MENU(tfill), None}, < #ifdef FEATURE_FRACTAL < {"ffill", XPMMAP(ffill), &FFillOp, < NULL, MENU(ffill), None}, < #endif < {"text", XPMMAP(text), &FontOp, < "(2): changeFont()", MENU(text), None}, --- > 1011c906 < void /* ## this walks the above list and sets the matching item */ --- > void 1047,1054d941 < MI_FLAGCB("fixed 12", MF_CHECK | MF_GROUP1, < fontSet, "*-misc-fixed-medium-r-normal-*-*-120-*-*-c-*-iso8859-*"), < MI_FLAGCB("Greek 18", MF_CHECK | MF_GROUP1, < fontSet, "*-adobe-symbol-medium-r-normal-*-*-180-*-*-p-*-adobe-*"), < MI_FLAGCB("Open Look Glyph", MF_CHECK | MF_GROUP1, < fontSet, "*-sun-open look glyph----*-*-140-*-*-p-*-sunolglyph-*"), < MI_FLAGCB("N.C.S. 24", MF_CHECK | MF_GROUP1, < fontSet, "*-adobe-new century schoolbook-bold-r-normal-*-*-240-*-*-p-*-*"), 1056a944,945 > MI_FLAGCB("Times 12", MF_CHECK | MF_GROUP1, > fontSet, "-*-times-medium-r-normal-*-*-120-*-*-p-*-*-*"), 1067,1070c956,959 < MI_FLAGCB("X cursors", MF_CHECK | MF_GROUP1, < fontSet, "cursor"), < MI_FLAGCB("xhextris", MF_CHECK | MF_GROUP1, < fontSet, "xhextris"), --- > MI_FLAGCB("Helvetica Bold 12", MF_CHECK | MF_GROUP1, > fontSet, "-*-helvetica-bold-r-normal-*-*-120-*-*-p-*-*-*"), > MI_FLAGCB("Fixed 12", MF_CHECK | MF_GROUP1, > fontSet, "-*-fixed-medium-r-normal-*-*-120-*-*-m-*-*-*"), 1078,1079c967,968 < /* ## was commented-out OTHER menu */ < static PaintMenuItem FnMenu[] = --- > #if 0 > static PaintMenuItem otherMenu[] = 1081,1096c970,972 < MI_SIMPLECB("NORMAL COPY", setFunctionCopyCB, NULL), < MI_SIMPLECB("black", setFunctionBlackCB, NULL), < MI_SIMPLECB("and", setFunctionAndCB, NULL), < /* MI_SIMPLECB("and Reverse", setFunctionAndReverseCB, NULL), < MI_SIMPLECB("and Inverted", setFunctionAndInvertedCB, NULL), < MI_SIMPLECB("Excl. Or", setFunctionXorCB, NULL), < MI_SIMPLECB("Or", setFunctionOrCB, NULL), < MI_SIMPLECB("Not Or", setFunctionNorCB, NULL), < MI_SIMPLECB("Equivalent", setFunctionEquivCB, NULL), < MI_SIMPLECB("Invert", setFunctionInvertCB, NULL), < MI_SIMPLECB("Reverse Or", setFunctionOrReverseCB, NULL), < MI_SIMPLECB("Invert Source", setFunctionCopyInvertedCB, NULL), < MI_SIMPLECB("Or Inverted", setFunctionOrInvertedCB, NULL), < MI_SIMPLECB("Not And", setFunctionNandCB, NULL), < MI_SIMPLECB("White", setFunctionWhiteCB, NULL), < */ --- > MI_SIMPLECB("brushSelect", BrushSelect, NULL), > #define SP_SELECT 1 > MI_SIMPLECB("sprayEdit", sprayMenuCallback, NULL), 1098c974 < --- > #endif 1112c988 < MI_SIMPLECB("Whence xart", HelpDialog, "about"), --- > MI_SIMPLECB("Whence XPaint", HelpDialog, "about"), 1120,1122c996,998 < < {None, "Fn", XtNumber(FnMenu), FnMenu}, < --- > #if 0 > {None, "other", XtNumber(otherMenu), otherMenu}, > #endif 1141d1016 < /* appears to append an arg to argList */ 100d99 < 154c153 < printf("basic PENCIL tool is active\n"); --- > 157d155 < 186c184 < printf("dot PENCIL tool\n"); --- > 196c196 < printf("outline POLYGON tool. button 2 to close.\n"); --- > 235c235 < printf("filled POLYGON tool. button 2 to close.\n"); --- > 273c273 < printf("connected LINE segments tool. button 2 to finish.\n"); --- > 130,131c130,131 < int dxf, dxb, dyb, dxfi, dxbi, dybi, dyfi; < int dyf; --- > int dxf, dxb, dyb, dxi ,dyi, dxfi, dxbi, dxbq, dybq, dxfq, dyfq, dybi, dyfi; > int dyf, midx, midy; 132a133 > int cdx, cdy; 134,135c135,136 < int xplusy, loopsteps; < int fx, fy, xi, yi, apex, j; --- > int xplusy, foresteps, loopsteps; > int mx, my, fx, fy, xi, yi, cx, cy, apex, j; 275c276 < nibsize=c*2; --- > nibsize=c; 293c294 < printf("quill tool selected\n"); --- > 686c686 < printf("regular shape SELECT is the active tool.\n"); --- > 734c734 < printf("closing freehand SELECT is the active tool\n"); --- > 786c786 < printf("closing polygon SELECT is the active tool\n"); --- > 315d314 < printf("The SPRAY tool is active\n"); Colormap.c Paint.c PaintEvent.c 23d22 < /* a def and instantiation. data. the worst possible name for data. */ 35,56c34,54 < /* < ##if 0 < #static data_t ** < #widgetEvent(Widget w, data_t * look) < #{ < # static data_t *d[10]; < # data_t *cur = list; < # int n = 0; < # < # while (cur != NULL) { < # if (cur->mask == look->mask && < # cur->flag == look->flag && < # cur->func == look->func && < # cur->w == w) < # d[n++] = cur; < # cur = cur->next; < # } < # < # < # d[n] = NULL; < # < # return n == 0 ? NULL : d; --- > > #if 0 > static data_t ** > widgetEvent(Widget w, data_t * look) > { > static data_t *d[10]; > data_t *cur = list; > int n = 0; > > while (cur != NULL) { > if (cur->mask == look->mask && > cur->flag == look->flag && > cur->func == look->func && > cur->w == w) > d[n++] = cur; > cur = cur->next; > } > > d[n] = NULL; > > return n == 0 ? NULL : d; 59d56 < */ 68d64 < /* I think the above is what gets passed to individual ops */ 76d71 < /* 78,81c73,76 < # XEvent myEvent; < # < # memcpy(&myEvent, event, sizeof(XEvent)); < # event = &myEvent; --- > XEvent myEvent; > > memcpy(&myEvent, event, sizeof(XEvent)); > event = &myEvent; 83d77 < */ PaintRegion.c PaintUndo.c arcOp.c 186d185 < printf("arc line tool active\n"); blobOp.c 217c217 < printf("outline closing freehand shape tool is active\n"); --- > 220d219 < 256c255 < printf("filled freehand closing shape tool is active\n"); --- > boxOp.c 191c191 < printf("open BOX tool. Uses line width. Hold shift for squares.\n"); --- > 194d193 < 225c224 < printf("filled BOX tool. secondary palette selection is fill pattern\n"); --- > brushOp.c 498c498 < gc = XCreateGC(dpy, mask, 1, 0); /* ## ### ## */ --- > gc = XCreateGC(dpy, mask, 0, 0); 575c575 < printf("BRUSH tool active\n"); --- > 611c611 < printf("ERASE to background is active tool\n"); --- > 650c650 < printf("SMEAR tool\n"); --- > chroma.c circleOp.c 207d206 < printf("ovals tool is active. Hold shift for cirles\n"); 237d235 < printf("filled ovals tool. Note 'pull from center' option\n"); 267d264 < printf("oval tool. hold shift for circles\n"); 298d294 < printf("filled oval. primary palette selection is outline\n"); color.c colorEdit.c cutCopyPaste.c dialog.c dynPenOp.c 347c347 < printf("the sling pencil ( bungee brush?) tool is active\n"); --- > fatBitsEdit.c fileName.c fillOp.c 461d460 < printf("plain fill tool is active. See range selection widget\n"); 497d495 < printf("gradient FILL\n"); 542d539 < printf("fractal FILL\n"); fontOp.c 251c251 < printf("The TEXT tool is active.\n"); --- > 254d253 < fontSelect.c grab.c graphic.c 59,63c59 < #include "xartIcon.xpm" < < < < /* Global data, filter menu defaults. */ --- > /* Global data */ 143a140,143 > /* ## moved > #define SELECT_ALL_ITEM 5 > MI_SIMPLE("all"), > */ 229d228 < /* ## "size" menu */ 293c292 < MI_SIMPLECB("canvas help", HelpDialog, "canvas"), --- > MI_SIMPLECB("help", HelpDialog, "canvas"), 306,307c305,306 < {None, "un", XtNumber(unMenu), unMenu}, < {None, "??", XtNumber(helpMenu), helpMenu}, --- > {None, "UN", XtNumber(unMenu), unMenu}, > {None, "help", XtNumber(helpMenu), helpMenu}, 396,401d394 < /* ## called by tool window line and font menu callbacks (in operation.c), < seems to be for setting all GC's. Does some function passing cleverness. < e.g. fontSet() has GraphicAll(fontSetCallback, (void *) info) < where info is an FontStruct. fontSetCallback does an XtVaSetValues with it. < SOOO, Xt seems to change GCs in some cases. */ < 414,430d406 < GraphicAll2(GraphicAllProc func, void *data) < { < struct paintWindows *cur; < < for (cur = head; cur != NULL; cur = cur->next) { < if (!cur->done) < continue; < func(cur->paint, data); < printf("(int) cur->paint in graphicall2 is %d\n", (int)cur->paint); < printf(" data is %d\n",(int) data); < } < } < < < < < void 762d737 < int splitwidth, splitheight; 785a761 > 788,789c764 < info->li = tpi->li; /* ## was tpi->li or something */ < --- > info->li = tpi->li; 793c768 < printf(" group = coltoggle \n"); --- > 798d772 < 853,868c827,828 < < /* set the width of overlap for dualToggle toggles */ < splitwidth = info->width; < if ( splitwidth < 12 ) splitwidth = 12; < if ( splitwidth > 128 ) splitwidth = 12 ; < splitheight = info->height; < if ( splitheight < 12 ) splitheight = 12; < if ( splitheight > 128 ) splitheight = 12; < /* the > 128 catches a bug when pot is a solid and < the given dimension is ridiculous, but there must be a < better way */ < < < /* ## new with quill, the wrapper for a 2-toggle toggle, < instead of two whole patternRacks. */ < pot = XtVaCreateManagedWidget("dualToggle", formWidgetClass, --- > /* ## new with quill, the wrapper for a 2-toggle toggle */ > pot = XtVaCreateManagedWidget("dualToggle", boxWidgetClass, 873,874d832 < XtNwidth, 8, < XtNheight, 8, 875a834,835 > XtNvSpace, 0, > XtNhSpace, 0, 877a838,839 > /* ## I'd like to get iconAR to overlap iconA by 4 pixels, but I can't > get it to happen */ 879c841 < iconAR = XtVaCreateManagedWidget(nm, toggleWidgetClass, --- > iconA = XtVaCreateManagedWidget(nm, toggleWidgetClass, 882,883c844 < XtNradioGroup, info->li->primaryList, < XtNwidth, splitwidth + 4, --- > XtNradioGroup, info->li->primaryList, 884a846 > XtNpointerColor, pxl, 885a848 > XtNdefaultDistance, 0, 890c853 < iconA = XtVaCreateManagedWidget(nm, toggleWidgetClass, --- > iconAR = XtVaCreateManagedWidget(nm, toggleWidgetClass, 893c856 < XtNradioGroup, info->li->secondaryList, --- > XtNradioGroup, info->li->secondaryList, 895d857 < XtNheight, splitheight + 2, 896a859,862 > XtNpointerColor, pxl, > XtNwidth, 4, > XtNdefaultDistance, 0, > XtNx, 0, 901c867 < info->li->primaryList = iconAR; --- > info->li->primaryList = iconA; 903c869 < info->li->secondaryList = iconA; --- > info->li->secondaryList = iconAR; 910,916c876 < paletteMenu[1].data = (void *) iconAR; /* ## ## should this be a pot? not 1 ? */ < paletteMenu[2].data = (void *) iconAR; < paletteMenu[3].data = (void *) iconAR; < paletteMenu[4].data = (void *) iconAR; < MenuPopupCreate(iconAR,XtNumber(paletteMenu) , paletteMenu); < < paletteMenu[1].data = (void *) iconA; --- > paletteMenu[1].data = (void *) iconA; /* ## ## should this be a pot? not 1 ? */ 918,920c878,886 < paletteMenu[3].data = (void *) iconA; < paletteMenu[4].data = (void *) iconA; < MenuPopupCreate(iconA, XtNumber(paletteMenu), paletteMenu); --- > paletteMenu[3].data = (void *) iconA; > paletteMenu[4].data = (void *) iconA; > MenuPopupCreate(iconA,XtNumber(paletteMenu) , paletteMenu); > > paletteMenu[1].data = (void *) iconAR; > paletteMenu[2].data = (void *) iconAR; > paletteMenu[3].data = (void *) iconAR; > paletteMenu[4].data = (void *) iconAR; > MenuPopupCreate(iconAR, XtNumber(paletteMenu), paletteMenu); 923d888 < info->widget2 = iconAR; 924a890 > info->widget2 = iconAR; 943a910 > 2209c2176 < /* label = XtVaCreateManagedWidget(name, labelWidgetClass, form, --- > label = XtVaCreateManagedWidget(name, labelWidgetClass, form, 2212c2179 < */ --- > 2215c2182 < XtNfromHoriz, NULL, --- > XtNfromHoriz, label, 2226c2193 < XtNdefaultDistance, 6, --- > XtNdefaultDistance, 0, 2265c2232 < Widget xartI, form, viewport, pattern, bar; --- > Widget form, viewport, pattern, bar; 2523,2539d2489 < < < /* doesn't work. attempt to hang xart Icon under command buttons. < xartI = XtVaCreateManagedWidget(NULL, < toggleWidgetClass, form, < XtNpixmap, (Pixmap)xartIcon_xpm, < XtNfromVert, edit, < XtNleft, XtChainLeft, < XtNright, XtChainLeft, < XtNtop, XtChainTop, < XtNbottom, XtChainTop, < NULL); < < bitmap converter looks for files in /usr/include/X11/bitmaps, supposedly < see iconA for toggle with pixmap < */ < hash.c help.c image.c imageComp.c iprocess.c lineOp.c 244d243 < printf("basic LINE tool is active.\n"); 277d275 < printf("RAYS tool. button 2 to end a cluster.\n"); main.c 40c40 < #include "xartIcon.xpm" --- > #include "XPaintIcon.xpm" 46c46 < #include "xart.ad.h" --- > #include "XPaint.ad.h" 139c139 < xartIcon_xpm, &icon, NULL, &myattributes)) { --- > XPaintIcon_xpm, &icon, NULL, &myattributes)) { 160c160 < fprintf(stderr, "Usage for %s (xart %s):\n", prog, XPAINT_VERSION); --- > fprintf(stderr, "Usage for %s (quill %s):\n", prog, XPAINT_VERSION); 215a216,220 > Colormap colormap; > Window window; > XSetWindowAttributes attributes; > unsigned long valuemask; > int screen_num = 0; 293a299 > Colormap colormap; 296a303,304 > XtAppContext app_context; > Display *display; menu.c misc.c 16,17c16 < /* $Id: misc.c,v 1.12 1997/09/03 19:31:07 torsten Exp $ < ## stuff to cache XOR GCs and pix, set cursor, traverse UP a widget tree.....*/ --- > /* $Id: misc.c,v 1.12 1997/09/03 19:31:07 torsten Exp $ */ 42c41 < Widget /* ## get the patriarch of a widget */ --- > Widget 82,89d80 < /* < void < SetQuillCursor(Widget w) < { < XtVaSetValues(w, XtVaTypedArg, < XtNcursor, XtRString, "quill", sizeof(Cursor), NULL); < } < */ operation.c 16,18c16 < /* $Id: operation.c,v 1.18 1997/08/13 19:45:28 torsten Exp $ < ## operation = tool . setOperation sets the current tool. < This file is all about the tool ( main ) window. */ --- > /* $Id: operation.c,v 1.18 1997/08/13 19:45:28 torsten Exp $ */ 115,216d112 < < /* ## "GC" Graphic Context set function stuff, < by the dumbest means possible. These guys imitate the above, < and are wrapped by a CB using GraphicAll, Like the above is. < < These get called via GraphicAll, which passes them (cur->paint, data) */ < < static void < setFunctionBlack(Widget w, void *funcVal) < { XtVaSetValues(w, XtNfunction, funcVal, NULL); } < < static void < setFunctionAnd(Widget w, void *funcVal) < { XtVaSetValues(w, XtNfunction, 1, NULL); } < < /* < static void < setFunctionAndReverse(Widget w, void *funcVal) < { XtVaSetValues(w, XtNfunction, 2, NULL); } < */ < < static void < setFunctionCopy(Widget w, void *funcVal) < { XtVaSetValues(w, XtNfunction, 3, NULL); } < < /* < static void < setFunctionAndInverted(Widget w, void *funcVal) < { XtVaSetValues(w, XtNfunction, 4, NULL); } < < static void < setFunctionXor(Widget w, void *funcVal) < { XtVaSetValues(w, XtNfunction, 6, NULL); } < < static void < setFunctionOr(Widget w, void *funcVal) < { XtVaSetValues(w, XtNfunction, 7, NULL); } < < static void < setFunctionNor(Widget w, void *funcVal) < { XtVaSetValues(w, XtNfunction, 8, NULL); } < < static void < setFunctionEquiv(Widget w, void *funcVal) < { XtVaSetValues(w, XtNfunction, 9, NULL); } < < static void < setFunctionInvert(Widget w, void *funcVal) < { XtVaSetValues(w, XtNfunction, 10, NULL); } < < static void < setFunctionOrReverse(Widget w, void *funcVal) < { XtVaSetValues(w, XtNfunction, 11, NULL); } < < static void < setFunctionCopyInverted(Widget w, void *funcVal) < { XtVaSetValues(w, XtNfunction, 12, NULL); } < < static void < setFunctionOrInverted(Widget w, void *funcVal) < { XtVaSetValues(w, XtNfunction, 13, NULL); } < < static void < setFunctionNand(Widget w, void *funcVal) < { XtVaSetValues(w, XtNfunction, 14, NULL); } < < static void < setFunctionWhite(Widget w, void *funcVal) < { XtVaSetValues(w, XtNfunction, 15, NULL); } < */ < < static void < setFunctionCopyCB(Widget w, XtPointer junk, XtPointer junk2) { < Arg arg; < int three = 3; < GraphicAll2(setFunctionCopy,(void *) three); < printf("global graphics function change to NORMAL COPY function\n"); < XtSetArg(arg, XtNfunction, three); < OperationAddArg(arg); < } < < static void < setFunctionBlackCB(Widget w, XtPointer junk, XtPointer junk2) { < Arg arg; < int zero = 0; < GraphicAll2(setFunctionBlack,(void *) zero); < printf("global graphics function change to BLACK function\n"); < XtSetArg(arg, XtNfunction, zero); < OperationAddArg(arg); < } < < static void < setFunctionAndCB(Widget w, XtPointer junk, XtPointer junk2) { < Arg arg; < int one = 1; < printf("global graphics function change to AND function\n"); < GraphicAll2(setFunctionAnd, (void *) one); < XtSetArg(arg, XtNfunction, one); < OperationAddArg(arg); < } < < 218c114,115 < okLineCallback(Widget w, XtPointer junk, XtPointer infoArg) { --- > okLineCallback(Widget w, XtPointer junk, XtPointer infoArg) > { 266c163 < printf("width of pencil family tools is now %d pixels\n", width); --- > /* ## printf("pencil family tool line width\n"); */ 701c598 < MI_FLAGCB("all", MF_CHECKON | MF_GROUP1, selectPopupCB, 0), --- > MI_FLAGCB("shape", MF_CHECKON | MF_GROUP1, selectPopupCB, 0), 740c637 < MI_FLAGCB("horiz",MF_CHECKON | MF_GROUP1,quillPopupCB,5), --- > MI_FLAGCB("hor",MF_CHECKON | MF_GROUP1,quillPopupCB,5), 744c641 < MI_FLAGCB("one pixel",MF_CHECKON | MF_GROUP2,quillPopupCB,8), --- > MI_FLAGCB("pixel",MF_CHECKON | MF_GROUP2,quillPopupCB,8), 746,749c643,646 < MI_FLAGCB(" 4",MF_CHECKON | MF_GROUP2,quillPopupCB,10), < MI_FLAGCB(" 8",MF_CHECKON | MF_GROUP2,quillPopupCB,11), < MI_FLAGCB(" 16",MF_CHECKON | MF_GROUP2,quillPopupCB,12), < MI_FLAGCB(" 32",MF_CHECKON | MF_GROUP2,quillPopupCB,13), --- > MI_FLAGCB("nib size 4",MF_CHECKON | MF_GROUP2,quillPopupCB,10), > MI_FLAGCB("nib size 8",MF_CHECKON | MF_GROUP2,quillPopupCB,11), > MI_FLAGCB("nib size 16",MF_CHECKON | MF_GROUP2,quillPopupCB,12), > MI_FLAGCB("nib size 32",MF_CHECKON | MF_GROUP2,quillPopupCB,13), 796c693 < static void /* ## TODO make the ovals default to pull-from-center */ --- > static void 894,896c791 < ** ## the following preprozzzezzor crap creates OperationPair items < of the add and remove functions for each tool. This gets put into < iconlistitems for each tool and then put in the iconlist to follow. --- > ** Done with operation popup menus 946,947d840 < < /* ## this array determines the order of the tool icons in the tool box */ 953,956d845 < {"erase", XPMMAP(erase), &EraseOp, < "(2): changeBrush()", MENU(erase), None}, < {"smear", XPMMAP(smear), &SmearOp, < "(2): changeBrush()", MENU(smear), None}, 958a848,853 > {"quill", XPMMAP(quill), &QuillOp, > NULL, MENU(quill), None}, /* ## change a NULL to menu(quill)*/ > {"selectBox", XPMMAP(select), &SelectBoxOp, > NULL, MENU(selectB), None}, > {"lasso", XPMMAP(lasso), &LassoOp, > NULL, MENU(lasso), None}, 960c855,859 < NULL, MENU(line), None}, --- > NULL, MENU(line), None}, > {"spray", XPMMAP(spray), &SprayOp, > "(2): changeSpray()", MENU(spray), None}, > {"fill", XPMMAP(fill), &FillOp, > NULL, MENU(fill), None}, 962c861,871 < NULL, MENU(dotPencil), None}, --- > NULL, MENU(dotPencil), None}, > {"tfill", XPMMAP(tfill), &TFillOp, > "(2): changeTFillParms()", MENU(tfill), None}, > #ifdef FEATURE_FRACTAL > {"ffill", XPMMAP(ffill), &FFillOp, > NULL, MENU(ffill), None}, > #endif > {"smear", XPMMAP(smear), &SmearOp, > "(2): changeBrush()", MENU(smear), None}, > {"text", XPMMAP(text), &FontOp, > "(2): changeFont()", MENU(text), None}, 966a876,878 > {"erase", XPMMAP(erase), &EraseOp, > "(2): changeBrush()", MENU(erase), None}, > 982a895,896 > {"selectPoly", XPMMAP(selpoly), &SelectPolyOp, > NULL, MENU(selectA), None}, 986,992d899 < {"quill", XPMMAP(quill), &QuillOp, < NULL, MENU(quill), None}, /* ## change a NULL to menu(quill)*/ < {"selectBox", XPMMAP(select), &SelectBoxOp, < NULL, MENU(selectB), None}, < {"lasso", XPMMAP(lasso), &LassoOp, < NULL, MENU(poly), None}, < {"selectPoly", XPMMAP(selpoly), &SelectPolyOp, 994,1006c901 < NULL, MENU(lasso), None}, < {"spray", XPMMAP(spray), &SprayOp, < "(2): changeSpray()", MENU(spray), None}, < {"fill", XPMMAP(fill), &FillOp, < NULL, MENU(fill), None}, < {"tfill", XPMMAP(tfill), &TFillOp, < "(2): changeTFillParms()", MENU(tfill), None}, < #ifdef FEATURE_FRACTAL < {"ffill", XPMMAP(ffill), &FFillOp, < NULL, MENU(ffill), None}, < #endif < {"text", XPMMAP(text), &FontOp, < "(2): changeFont()", MENU(text), None}, --- > 1011c906 < void /* ## this walks the above list and sets the matching item */ --- > void 1047,1054d941 < MI_FLAGCB("fixed 12", MF_CHECK | MF_GROUP1, < fontSet, "*-misc-fixed-medium-r-normal-*-*-120-*-*-c-*-iso8859-*"), < MI_FLAGCB("Greek 18", MF_CHECK | MF_GROUP1, < fontSet, "*-adobe-symbol-medium-r-normal-*-*-180-*-*-p-*-adobe-*"), < MI_FLAGCB("Open Look Glyph", MF_CHECK | MF_GROUP1, < fontSet, "*-sun-open look glyph----*-*-140-*-*-p-*-sunolglyph-*"), < MI_FLAGCB("N.C.S. 24", MF_CHECK | MF_GROUP1, < fontSet, "*-adobe-new century schoolbook-bold-r-normal-*-*-240-*-*-p-*-*"), 1056a944,945 > MI_FLAGCB("Times 12", MF_CHECK | MF_GROUP1, > fontSet, "-*-times-medium-r-normal-*-*-120-*-*-p-*-*-*"), 1067,1070c956,959 < MI_FLAGCB("X cursors", MF_CHECK | MF_GROUP1, < fontSet, "cursor"), < MI_FLAGCB("xhextris", MF_CHECK | MF_GROUP1, < fontSet, "xhextris"), --- > MI_FLAGCB("Helvetica Bold 12", MF_CHECK | MF_GROUP1, > fontSet, "-*-helvetica-bold-r-normal-*-*-120-*-*-p-*-*-*"), > MI_FLAGCB("Fixed 12", MF_CHECK | MF_GROUP1, > fontSet, "-*-fixed-medium-r-normal-*-*-120-*-*-m-*-*-*"), 1078,1079c967,968 < /* ## was commented-out OTHER menu */ < static PaintMenuItem FnMenu[] = --- > #if 0 > static PaintMenuItem otherMenu[] = 1081,1096c970,972 < MI_SIMPLECB("NORMAL COPY", setFunctionCopyCB, NULL), < MI_SIMPLECB("black", setFunctionBlackCB, NULL), < MI_SIMPLECB("and", setFunctionAndCB, NULL), < /* MI_SIMPLECB("and Reverse", setFunctionAndReverseCB, NULL), < MI_SIMPLECB("and Inverted", setFunctionAndInvertedCB, NULL), < MI_SIMPLECB("Excl. Or", setFunctionXorCB, NULL), < MI_SIMPLECB("Or", setFunctionOrCB, NULL), < MI_SIMPLECB("Not Or", setFunctionNorCB, NULL), < MI_SIMPLECB("Equivalent", setFunctionEquivCB, NULL), < MI_SIMPLECB("Invert", setFunctionInvertCB, NULL), < MI_SIMPLECB("Reverse Or", setFunctionOrReverseCB, NULL), < MI_SIMPLECB("Invert Source", setFunctionCopyInvertedCB, NULL), < MI_SIMPLECB("Or Inverted", setFunctionOrInvertedCB, NULL), < MI_SIMPLECB("Not And", setFunctionNandCB, NULL), < MI_SIMPLECB("White", setFunctionWhiteCB, NULL), < */ --- > MI_SIMPLECB("brushSelect", BrushSelect, NULL), > #define SP_SELECT 1 > MI_SIMPLECB("sprayEdit", sprayMenuCallback, NULL), 1098c974 < --- > #endif 1112c988 < MI_SIMPLECB("Whence xart", HelpDialog, "about"), --- > MI_SIMPLECB("Whence XPaint", HelpDialog, "about"), 1120,1122c996,998 < < {None, "Fn", XtNumber(FnMenu), FnMenu}, < --- > #if 0 > {None, "other", XtNumber(otherMenu), otherMenu}, > #endif 1141d1016 < /* appears to append an arg to argList */ palette.c pattern.c pencilOp.c 100d99 < 154c153 < printf("basic PENCIL tool is active\n"); --- > 157d155 < 186c184 < printf("dot PENCIL tool\n"); --- > polyOp.c 196c196 < printf("outline POLYGON tool. button 2 to close.\n"); --- > 235c235 < printf("filled POLYGON tool. button 2 to close.\n"); --- > 273c273 < printf("connected LINE segments tool. button 2 to finish.\n"); --- > protocol.c quillOp.c 130,131c130,131 < int dxf, dxb, dyb, dxfi, dxbi, dybi, dyfi; < int dyf; --- > int dxf, dxb, dyb, dxi ,dyi, dxfi, dxbi, dxbq, dybq, dxfq, dyfq, dybi, dyfi; > int dyf, midx, midy; 132a133 > int cdx, cdy; 134,135c135,136 < int xplusy, loopsteps; < int fx, fy, xi, yi, apex, j; --- > int xplusy, foresteps, loopsteps; > int mx, my, fx, fy, xi, yi, cx, cy, apex, j; 275c276 < nibsize=c*2; --- > nibsize=c; 293c294 < printf("quill tool selected\n"); --- > readRC.c selectOp.c 686c686 < printf("regular shape SELECT is the active tool.\n"); --- > 734c734 < printf("closing freehand SELECT is the active tool\n"); --- > 786c786 < printf("closing polygon SELECT is the active tool\n"); --- > size.c sprayOp.c 315d314 < printf("The SPRAY tool is active\n"); text.c texture.c typeConvert.c