static Pixmap ConvertPixmap(char *file_name, int depth) #endif { XrmValue fg_from, fg_to, bg_from, bg_to; Pixel fg, bg; fg_from.size = strlen(XtDefaultForeground); fg_from.addr = XtDefaultForeground; fg_to.addr = (XPointer) & fg; bg_from.size = strlen(XtDefaultBackground); bg_from.addr = XtDefaultBackground; bg_to.addr = (XPointer) & bg; if (!XtConvertAndStore (UxTopLevel, XtRString, &bg_from, XtRPixel, &bg_to) || !XtConvertAndStore (UxTopLevel, XtRString, &fg_from, XtRPixel, &fg_to) || (fg == bg)) { fg = WhitePixelOfScreen(XtScreen(UxTopLevel)); bg = BlackPixelOfScreen(XtScreen(UxTopLevel)); } if (depth) return (XmGetPixmapByDepth (XtScreen(UxTopLevel), file_name, fg, bg, depth)); else return (XmGetPixmap(XtScreen(UxTopLevel), file_name, fg, bg)); }
/* * Get pixel from color `colorname'. We try to keep this as * high-level as possible, with simple black as fallback. */ void str_to_pixel(Widget w, const char *colorname, Pixel *ret) { XrmValue from, to; from.addr = (char *)colorname; from.size = strlen(from.addr) + 1; to.addr = (XtPointer)ret; to.size = sizeof(Pixel); if (!XtConvertAndStore(w, XtRString, &from, XtRPixel, &to)) { fprintf(stderr, "String to pixel conversion failed for %s!\n", colorname); from.addr = (char *)"black"; from.size = strlen(from.addr) + 1; to.addr = (XtPointer)ret; to.size = sizeof(Pixel); XtConvertAndStore(w, XtRString, &from, XtRPixel, &to); } }
// Convert NAME into a color, using PIX as default static Pixel color(Widget w, const _XtString name, Pixel pixel) { XrmValue from, to; from.size = strlen(name); from.addr = CONST_CAST(char *,name); to.size = sizeof(pixel); to.addr = (String)&pixel; XtConvertAndStore(w, XtRString, &from, XtRPixel, &to); return pixel; }
/* * Convert pixel value `pix' to color name passed as str, * of length len, or `black' if conversion failed. * -- FIXME: This is broken!!! */ void pixel_to_str(Widget w, Pixel pix, char *str, size_t len) { XrmValue from, to; from.addr = (XtPointer)&pix; from.size = sizeof(Pixel); to.addr = str; to.size = len; if (!XtConvertAndStore(w, XtRString, &from, XtRPixel, &to)) { fprintf(stderr, "Pixel to String conversion failed for %ld!\n", pix); sprintf(str, "white"); } }
/* ConvertStringToPixel() ** A utility function to convert a color name to a Pixel */ Pixel ConvertStringToPixel (Widget widget, char *name) { XrmValue from_value, to_value; /* For resource conversion */ from_value.addr = name; from_value.size = strlen( name ) + 1; to_value.addr = NULL; XtConvertAndStore (widget, XmRString, &from_value, XmRPixel, &to_value); if (to_value.addr) { return (*((Pixel*) to_value.addr)) ; } return XmUNSPECIFIED_PIXEL ; }
/****************************************************************************** NAME: UxConvertFontList( fontlist_str ) INPUT: char *fontlist_str - string form of fontlist RETURN: XmFontList - fontlist DESCRIPTION: Converts a fontlist from the resource-file string format to the XmFontList type expected in C code. The conversion is done by a call to the built-in Motif convertor and the return value points into Xt's resource cache and so the return value should NOT be XmFontListFree'd. CREATION: Visual Edge Software June 17 1992 -----------------------------------------------------------------------------*/ XmFontList UxConvertFontList( char *fontlist_str ) { XrmValue from, to; XmFontList fontlist = NULL; Boolean status; from.size = strlen( fontlist_str ) + 1; from.addr = fontlist_str; to.size = sizeof(XmFontList); to.addr = (caddr_t) &fontlist; status = XtConvertAndStore( UxTopLevel, XmRString, &from, XmRFontList, &to ); return ( fontlist ); }
/*ARGSUSED*/ void XmCvtStringToUnitType( XrmValuePtr args, /* unused */ Cardinal *num_args, /* unused */ XrmValue *from_val, XrmValue *to_val ) { Display * dpy = _XmGetDefaultDisplay(); /* we cannot call XmRUnitType directly, since it would loop if a program registers this function with to_type = XmRUnitType (which is very likely). So we use REAL_UNIT_TYPE_NAME, which has been registered with the same semantics as the original XmRUnitType in RepType.c */ XtConvertAndStore(XmGetXmDisplay(dpy), XmRString, from_val, REAL_UNIT_TYPE_NAME, to_val); }
Color::Color(std::string name) { XrmValue fromValue; XrmValue toValue; fromValue.addr = (char*)name.c_str(); fromValue.size = strlen(name.c_str()) + 1; toValue.addr = (char*)NULL; XtConvertAndStore(Application::getWidget(), XmRString, &fromValue, XmRPixel, &toValue); if(toValue.addr != (XtPointer)0) { pixel = (*(Pixel*)toValue.addr); } else { throw MotifException("Invalid color name"); } }
static Boolean SendSel(Widget w, Atom *sel, Atom *target, Atom *rtype, XtPointer *ans, unsigned long *anslen, int *ansfmt) { GwinWidget gw = (GwinWidget)w; static Atom targets = 0; XrmValue src, dst; char *s; if(*target == XA_STRING){ s = gw->gwin.selection; if(!s) s = ""; *rtype = XA_STRING; *ans = (XtPointer) XtNewString(s); *anslen = strlen(*ans); *ansfmt = 8; return TRUE; } #ifndef R3 if(targets == 0){ src.addr = "TARGETS"; src.size = strlen(src.addr)+1; dst.size = sizeof(Atom); dst.addr = (XtPointer) &targets; XtConvertAndStore(w, XtRString, &src, XtRAtom, &dst); } if(*target == targets){ *rtype = XA_ATOM; *ans = (XtPointer) XtNew(Atom); *(Atom*) *ans = XA_STRING; *anslen = 1; *ansfmt = 32; return TRUE; } #endif return FALSE; }
/* * Function: * ConvertCursor * * Parameters: * w - simple widget * * Description: * Converts a name to a new cursor. */ static void ConvertCursor(Widget w) { SimpleWidget simple = (SimpleWidget) w; XrmValue from, to; Cursor cursor = None; if (simple->simple.cursor_name == NULL) return; from.addr = (XPointer)simple->simple.cursor_name; from.size = strlen((char *)from.addr) + 1; to.size = sizeof(Cursor); to.addr = (XPointer)&cursor; if (XtConvertAndStore(w, XtRString, &from, XtRColorCursor, &to)) simple->simple.cursor = cursor; else XtAppErrorMsg(XtWidgetToApplicationContext(w), "convertFailed","ConvertCursor","XawError", "Simple: ConvertCursor failed.", NULL, NULL); }
int main (int argc, char **argv) { int n1,n2,nz,iz,verbose,looping,nTic1,nTic2,width,height,interp; float d1,f1,d2,f2,*z, clip,bclip,wclip,white,wfrac, perc,bperc,wperc,*temp, bhue,whue,sat,bright, x1beg,x2beg,x1end,x2end, x1min,x1max,x2min,x2max, fframe,dframe; char *label1="",*label2="",*format="",*windowtitle="", *labelFont="",*titleFont="", *axesColor="",*gridColor="",*titleColor="", *style="normal",*grid1="none",*grid2="none", *cmap; ClientData cd; XrmValue from,to; Widget toplevel,axes; XtAppContext ac; Display *dpy; Window win; Arg args[98]; int nargs; int scr; unsigned int depth; /* initialize getpar */ initargs(argc,argv); requestdoc(1); /* get parameters describing colormaps */ cmap = "gray"; getparstring("cmap",&cmap); if (STREQ("saturation",cmap)) cmap = "sat"; bhue = 0; getparfloat("bhue",&bhue); bhue /= 360.0; whue = 240; getparfloat("whue",&whue); whue /= 360.0; sat = 1.0; getparfloat("sat",&sat); if (sat<0.0 || sat>1.0) err("sat must be in range [0,1]!\n"); bright = 1.0; getparfloat("bright",&bright); if (bright<0.0 || bright>1.0) err("bright must be in range [0,1]!\n"); /* get parameters describing 1st dimension sampling */ if (!getparint("n1",&n1)) err("Must specify number of samples in 1st dimension!\n"); if (!getparfloat("d1",&d1)) d1 = 1.0; if (!getparfloat("f1",&f1)) f1 = 0.0; x1min = (d1>0.0)?f1:f1+(n1-1)*d1; x1max = (d1<0.0)?f1:f1+(n1-1)*d1; if (!getparfloat("x1beg",&x1beg)) x1beg = x1min; if (!getparfloat("x1end",&x1end)) x1end = x1max; /* get parameters describing 2nd dimension sampling */ if (!getparint("n2",&n2)) err("Must specify number of samples in 2nd dimension!\n"); if (!getparfloat("d2",&d2)) d2 = 1.0; if (!getparfloat("f2",&f2)) f2 = 0.0; x2min = (d2>0.0)?f2:f2+(n2-1)*d2; x2max = (d2<0.0)?f2:f2+(n2-1)*d2; if (!getparfloat("x2beg",&x2beg)) x2beg = x2min; if (!getparfloat("x2end",&x2end)) x2end = x2max; /* read first frame of float data */ nz = n1*n2; z = ealloc1float(nz); if (fread(z,sizeof(float),nz,stdin)!=nz) err("error reading input file"); /* if necessary, determine clips from percentiles */ if (getparfloat("clip",&clip)) { bclip = clip; wclip = -clip; } if ((!getparfloat("bclip",&bclip) || !getparfloat("wclip",&wclip)) && !getparfloat("clip",&clip)) { perc = 100.0; getparfloat("perc",&perc); temp = ealloc1float(nz); for (iz=0; iz<nz; iz++) temp[iz] = z[iz]; if (!getparfloat("bclip",&bclip)) { bperc = perc; getparfloat("bperc",&bperc); iz = (nz*bperc/100.0); if (iz<0) iz = 0; if (iz>nz-1) iz = nz-1; qkfind(iz,nz,temp); bclip = temp[iz]; } if (!getparfloat("wclip",&wclip)) { wperc = 100.0-perc; getparfloat("wperc",&wperc); iz = (nz*wperc/100.0); if (iz<0) iz = 0; if (iz>nz-1) iz = nz-1; qkfind(iz,nz,temp); wclip = temp[iz]; } free1float(temp); } if (!getparfloat("white",&white)) white = (bclip+wclip)/2.0; if (!getparint("verbose",&verbose)) verbose = 1; if (!getparint("sleep",&cd.sleep)) cd.sleep=0 ; if (!getparint("loop",&looping)) looping = 0; if (verbose) { if(STREQ(cmap,"sat") || STREQ(cmap,"customsat")) { warn("bclip=%g wclip=%g white=%g",bclip,wclip,white); } else { warn("bclip=%g wclip=%g",bclip,wclip); } } wfrac = (bclip!=wclip) ? (bclip-white)/(bclip-wclip) : 1.0; /* initialize toolkit and set toplevel parameters */ toplevel = XtAppInitialize(&ac,"XMovie_XAPP_DEF",NULL,0,&argc,argv,NULL,NULL,0); dpy = XtDisplay(toplevel); nargs = 0; if (getparstring("windowtitle",&windowtitle)) {XtSetArg(args[nargs],XtNtitle,windowtitle); nargs++;} if (getparstring("windowtitle",&windowtitle)) {XtSetArg(args[nargs],XtNiconName,windowtitle); nargs++;} if (getparint("width",&width)) {XtSetArg(args[nargs],XtNwidth,width); nargs++;} if (getparint("height",&height)) {XtSetArg(args[nargs],XtNheight,height); nargs++;} XtSetArg(args[nargs],XtNinput,TRUE);nargs++; XtSetValues(toplevel,args,nargs); /* if necessary, make private colormap */ win = XRootWindowOfScreen(XtScreen(toplevel)); nargs = 0; scr=DefaultScreen(dpy); depth=(unsigned int)DefaultDepth(dpy,scr); if (depth<=8) { if (STREQ(cmap,"gray")) { Colormap cm=XtcwpCreateGrayColormap(dpy,win); XtSetArg(args[nargs],XtNcolormap,cm); nargs++; } else if (STREQ(cmap,"hue")) { Colormap cm=XtcwpCreateHueColormap(dpy,win, bhue,whue,sat,bright); XtSetArg(args[nargs],XtNcolormap,cm); nargs++; } else if (STREQ(cmap,"sat")) { Colormap cm=XtcwpCreateSatColormap(dpy,win, bhue,whue,wfrac,bright); XtSetArg(args[nargs],XtNcolormap,cm); nargs++; } XtSetValues(toplevel,args,nargs); } /* create axes and set axes parameters */ axes = XtCreateManagedWidget("axes",xtcwpAxesWidgetClass, toplevel,NULL,0); nargs = 0; if (getparstring("grid1",&grid1)) { from.addr = (char *)grid1; XtConvertAndStore(axes,XtRString,&from,XtcwpRAxesGrid,&to); if (to.addr) XtSetArg(args[nargs],XtNgrid1,*((int*)to.addr)); nargs++; } if (getparstring("grid2",&grid2)) { from.addr = (char *)grid2; XtConvertAndStore(axes,XtRString,&from,XtcwpRAxesGrid,&to); if (to.addr) XtSetArg(args[nargs],XtNgrid2,*((int*)to.addr)); nargs++; } if (getparint("nTic1",&nTic1)) {XtSetArg(args[nargs],XtNnTic1,nTic1); nargs++;} if (getparint("nTic2",&nTic2)) {XtSetArg(args[nargs],XtNnTic2,nTic2); nargs++;} if (getparstring("label1",&label1)) {XtSetArg(args[nargs],XtNlabel1,label1); nargs++;} if (getparstring("label2",&label2)) {XtSetArg(args[nargs],XtNlabel2,label2); nargs++;} if (getparstring("title",&format)) {XtSetArg(args[nargs],XtNtitle,format); nargs++;} if (getparstring("style",&style)) { from.size = (unsigned int) strlen(style); from.addr = (char *)style; XtConvertAndStore(axes,XtRString,&from,XtcwpRAxesStyle,&to); if (to.addr) XtSetArg(args[nargs],XtNstyle,*((int*)to.addr)); nargs++; } if (getparstring("axesColor",&axesColor)) { from.addr = (char *)axesColor; XtConvertAndStore(axes,XtRString,&from,XtRPixel,&to); if (to.addr) XtSetArg(args[nargs],XtNaxesColor, *((unsigned long*)to.addr)); nargs++; } if (getparstring("gridColor",&gridColor)) { from.addr = (char *)gridColor; XtConvertAndStore(axes,XtRString,&from,XtRPixel,&to); if (to.addr) XtSetArg(args[nargs],XtNgridColor, *((unsigned long*)to.addr)); nargs++; } if (getparstring("titleColor",&titleColor)) { from.addr = (char *)titleColor; XtConvertAndStore(axes,XtRString,&from,XtRPixel,&to); if (to.addr) XtSetArg(args[nargs],XtNtitleColor, *((unsigned long*)to.addr)); nargs++; } if (getparstring("labelFont",&labelFont)) { from.addr = (char *)labelFont; XtConvertAndStore(axes,XtRString,&from,XtRFont,&to); if (to.addr) XtSetArg(args[nargs],XtNlabelFont, *((Font*)to.addr)); nargs++; } if (getparstring("titleFont",&titleFont)) { from.addr = (char *)titleFont; XtConvertAndStore(axes,XtRString,&from,XtRFont,&to); if (to.addr) XtSetArg(args[nargs],XtNtitleFont, *((Font*)to.addr)); nargs++; } XtSetValues(axes,args,nargs); x1beg = x1min; getparfloat("x1beg",&x1beg); x1end = x1max; getparfloat("x1end",&x1end); x2beg = x2min; getparfloat("x2beg",&x2beg); x2end = x2max; getparfloat("x2end",&x2end); adjustAxesValues(n1,d1,f1,n2,d2,f2,&x1beg,&x1end,&x2beg,&x2end); XtcwpSetAxesValues(axes,x1beg,x1end,x2beg,x2end); /* frame sampling */ if (!getparfloat("fframe",&fframe)) fframe = 1.0; if (!getparfloat("dframe",&dframe)) dframe = 1.0; /* interpolation */ if (!getparint("interp",&interp)) interp = 1; /* initial display mode: cont or step */ if (!getparint("idm", &displayMode)) displayMode = DM_CONT; checkpars(); /* initialize client data */ cd.n1 = n1; cd.d1 = d1; cd.f1 = f1; cd.n2 = n2; cd.d2 = d2; cd.f2 = f2; cd.floats = z; cd.fmin = bclip; cd.fmax = wclip; cd.bmin = (unsigned char) (XtcwpGetFirstPixel(dpy)); cd.bmax = (unsigned char) (XtcwpGetLastPixel(dpy)); if(cd.bmax==0)cd.bmax=255; warn("bmin=%d bmax=%d",cd.bmin,cd.bmax); cd.x1bega = x1beg; cd.x1enda = x1end; cd.x2bega = x2beg; cd.x2enda = x2end; cd.abytes = NULL; cd.bbytes = NULL; cd.image = NULL; cd.exposed = 0; cd.noframes = 1; cd.axes = axes; cd.looping = looping; cd.frame = NULL; cd.format = format; cd.iframe = 0; cd.fframe = fframe; cd.dframe = dframe; cd.interp = interp; cd.forward = 1; cd.ac = ac; /* adjust axes title if formatted */ if (strchr(cd.format,'%') && !strstr(cd.format,"%%")) { sprintf(cd.title,cd.format,cd.fframe+cd.iframe*cd.dframe); XtVaSetValues(cd.axes,XtNtitle,cd.title,NULL); } /* add work procedure */ cd.wpid = XtAppAddWorkProc(ac,(XtWorkProc) readFrame,&cd); /* add callbacks to axes widget */ XtAddCallback(axes,XtNresizeCallback,(XtCallbackProc) resizeCB,&cd); XtAddCallback(axes,XtNexposeCallback,(XtCallbackProc) exposeCB,&cd); XtAddCallback(axes,XtNinputCallback,(XtCallbackProc) inputCB,&cd); /* add Button2 translation for reversing the movie */ XtOverrideTranslations(axes, XtParseTranslationTable("<Btn2Up>: input()")); /* add Button3 translation for pausing the movie */ XtOverrideTranslations(axes, XtParseTranslationTable("<Btn3Up>: input()")); /* set up keypress */ XtAddEventHandler(axes, KeyPress, FALSE, (XtEventHandler) key_pressed, &cd); /* realize everything */ XtRealizeWidget(toplevel); /* go */ XtAppMainLoop(ac); return EXIT_SUCCESS; }
int main(int argc, char *argv[]) { Boolean exists; char *filename; FileAccess file_access; Widget source; XtAppContext appcon; Boolean show_dir; xedit_flist_item *first_item; unsigned int i, lineno; lineno = 0; show_dir = FALSE; first_item = NULL; topwindow = XtAppInitialize(&appcon, "Xedit", NULL, 0, &argc, argv, NULL, NULL, 0); XtAppAddActions(appcon, actions, XtNumber(actions)); XtOverrideTranslations(topwindow, XtParseTranslationTable("<Message>WM_PROTOCOLS: quit()")); XtGetApplicationResources(topwindow, (XtPointer) &app_resources, resources, XtNumber(resources), NULL, 0); CurDpy = XtDisplay(topwindow); XawSimpleMenuAddGlobalActions(appcon); XtRegisterGrabAction(PopupMenu, True, ButtonPressMask | ButtonReleaseMask, GrabModeAsync, GrabModeAsync); makeButtonsAndBoxes(topwindow); StartHints(); StartFormatPosition(); (void)StartHooks(appcon); if (position_format_mask == 0) { for (i = 0; i < 3; i++) XtRemoveCallback(texts[i], XtNpositionCallback, PositionChanged, NULL); } XtRealizeWidget(topwindow); #ifndef __UNIXOS2__ XeditLispInitialize(); #endif options_popup = XtCreatePopupShell("optionsMenu", simpleMenuWidgetClass, topwindow, NULL, 0); XtRealizeWidget(options_popup); XtAddCallback(XtCreateManagedWidget("ispell", smeBSBObjectClass, options_popup, NULL, 0), XtNcallback, IspellCallback, NULL); CreateEditPopup(); wm_delete_window = XInternAtom(XtDisplay(topwindow), "WM_DELETE_WINDOW", False); (void)XSetWMProtocols(XtDisplay(topwindow), XtWindow(topwindow), &wm_delete_window, 1); /* This first call is just to save the default font and colors */ UpdateTextProperties(0); if (argc > 1) { xedit_flist_item *item; Arg args[2]; unsigned int num_args; for (i = 1; i < argc; i++) { struct stat st; if (argv[i][0] == '+') { char *endptr; lineno = strtol(argv[i], &endptr, 10); /* Don't warn about incorrect input? */ if (*endptr) lineno = 0; continue; } filename = ResolveName(argv[i]); if (filename == NULL || FindTextSource(NULL, filename) != NULL) continue; num_args = 0; if (stat(filename, &st) == 0 && !S_ISREG(st.st_mode)) { if (S_ISDIR(st.st_mode)) { if (!first_item) { char path[BUFSIZ + 1]; strncpy(path, filename, sizeof(path) - 2); path[sizeof(path) - 2] = '\0'; if (*path) { if (path[strlen(path) - 1] != '/') strcat(path, "/"); } else strcpy(path, "./"); XtSetArg(args[0], XtNlabel, ""); XtSetValues(dirlabel, args, 1); SwitchDirWindow(True); DirWindowCB(dirwindow, path, NULL); show_dir = True; } continue; } } switch (file_access = CheckFilePermissions(filename, &exists)) { case NO_READ: if (exists) XeditPrintf("File %s exists, and could not be opened for " "reading.\n", argv[i]); else XeditPrintf("File %s does not exist, and the directory " "could not be opened for writing.\n", argv[i]); break; case READ_OK: XtSetArg(args[num_args], XtNeditType, XawtextRead); num_args++; XeditPrintf("File %s opened READ ONLY.\n", argv[i]); break; case WRITE_OK: XtSetArg(args[num_args], XtNeditType, XawtextEdit); num_args++; XeditPrintf("File %s opened read - write.\n", argv[i]); break; } if (file_access != NO_READ) { int flags; if (exists) { flags = EXISTS_BIT; XtSetArg(args[num_args], XtNstring, filename);num_args++; } else { flags = 0; XtSetArg(args[num_args], XtNstring, NULL); num_args++; } source = XtVaCreateWidget("textSource", international ? multiSrcObjectClass : asciiSrcObjectClass, topwindow, XtNtype, XawAsciiFile, XtNeditType, XawtextEdit, NULL, NULL); XtSetValues(source, args, num_args); item = AddTextSource(source, argv[i], filename, flags, file_access); XtAddCallback(item->source, XtNcallback, SourceChanged, (XtPointer)item); if (exists && file_access == WRITE_OK) { item->mode = st.st_mode & (S_IRWXU | S_IRWXG | S_IRWXO); item->mtime = st.st_mtime; } if (!first_item && !show_dir) first_item = item; ResetSourceChanged(item); } } } if (!flist.pixmap && strlen(app_resources.changed_pixmap_name)) { XrmValue from, to; from.size = strlen(app_resources.changed_pixmap_name); from.addr = app_resources.changed_pixmap_name; to.size = sizeof(Pixmap); to.addr = (XtPointer)&(flist.pixmap); XtConvertAndStore(flist.popup, XtRString, &from, XtRBitmap, &to); } if (first_item == NULL) { XtSetKeyboardFocus(topwindow, filenamewindow); XtVaSetValues(textwindow, XtNwrap, XawtextWrapLine, NULL); } else { SwitchTextSource(first_item); XtSetKeyboardFocus(topwindow, textwindow); if (lineno) { XawTextPosition position; source = XawTextGetSource(textwindow); position = RSCAN(XawTextGetInsertionPoint(textwindow), lineno, False); position = LSCAN(position, 1, False); XawTextSetInsertionPoint(textwindow, position); } } XtAppMainLoop(appcon); return EXIT_SUCCESS; }
static void restore_state_from_file( Widget topl, FILE *fp) { char buf[512]; String t_name = XtName( topl ); Boolean resize_topl=False; /* read and set resources */ while( fgets( buf, 512, fp ) != NULL ){ char w_name[128], r_name[64]; Widget widget; XtResourceList rsc_list; Cardinal num_rsc; int i; /* check for empty string or comment line */ if( strlen(buf) == 0 || buf[0] == '!' ) continue; /* extract widget name, resource name and value */ if( sscanf(buf, " %[^,:,\n]: %[^,\n]", w_name, buf) < 2 ) continue; if( (int) strlen(w_name) < 1 ) continue; for(i=(int)strlen(w_name)-1; i > 0 && w_name[i] != '.' && w_name[i] != '*'; i--){} w_name[i] = '\0'; strcpy( &r_name[0], &w_name[i+1] ); /* get the widget - check for topl widget name */ switch( w_name[0] ){ case '\0': widget = topl; break; case '.': case '*': if( strcmp(&(w_name[1]), t_name) == 0 ) widget = topl; else if( strncmp(&(w_name[1]), t_name, strlen(t_name)) == 0 ){ String str = (String) &(w_name[strlen(t_name)+1]); if( (widget = XtNameToWidget(topl, str)) == NULL ) continue; } else if( (widget = XtNameToWidget(topl, w_name)) == NULL ) continue; break; default: if( strcmp(&w_name[0], t_name) == 0 ) widget = topl; else if( strncmp(&w_name[0], t_name, strlen(t_name)) == 0 ){ String str = (String) &(w_name[strlen(t_name)]); if( (widget = XtNameToWidget(topl, str)) == NULL ) continue; } else if( (widget = XtNameToWidget(topl, w_name)) == NULL ) continue; break; } /* convert and set the value */ XtGetResourceList( XtClass(widget), &rsc_list, &num_rsc ); for(i=0; i < num_rsc; i++){ if( strcmp( r_name, rsc_list[i].resource_name ) == 0 ){ XrmValue from, to; from.size = (int) strlen( buf ); from.addr = (caddr_t) buf; to.addr = NULL; /* some string resources are not copied, eg geometry, therefore allocate space for each string. This is probably a small memory leak */ if( strcmp(rsc_list[i].resource_type, XtRString) == 0 ){ String str = (String) malloc(strlen(buf) + 4); strcpy(str, buf); XtVaSetValues( widget, r_name, str, NULL ); } else if( XtConvertAndStore( widget, XtRString, &from, rsc_list[i].resource_type, &to) ){ /* check for resize of top-level widget */ if( widget == topl && (!strcmp(r_name, XmNheight) || !strcmp(r_name, XmNwidth)) ) { resize_topl = True; } /* set the resource value */ switch( rsc_list[i].resource_size ){ case 1: XtVaSetValues( widget, r_name, *((unsigned char *) to.addr), NULL ); break; case 2: XtVaSetValues( widget, r_name, *((unsigned short *) to.addr), NULL ); break; case 4: XtVaSetValues( widget, r_name, *((unsigned int *) to.addr), NULL ); break; } } break; } } XtFree( (char *)rsc_list ); } /* check top-level */ if( resize_topl == True ){ WidgetList children; Cardinal numChildren; XtVaGetValues( topl, XmNchildren, &children, XmNnumChildren, &numChildren, NULL); XtUnmanageChildren(children, numChildren); XtManageChildren(children, numChildren); } return; }
int main(int argc, char **argv) { int target; int GlobalErrors = 0; XtAppContext app; Widget Shell; XmRepTypeId id; XrmValue from, to; XrmValue rev_from, rev_to; static String value_names[] = { "client", "server", }; static unsigned char values[] = { 100, 101, }; XtSetLanguageProc(NULL, NULL, NULL); Shell = XtVaAppInitialize(&app, "Shell", NULL, 0, &argc, argv, FallBack, NULL); XtRealizeWidget(Shell); id = XmRepTypeRegister(TestRepType, value_names, values, XtNumber(value_names)); XmRepTypeAddReverse(id); printf("XmRepTypeId %i\n", id); for (target = 0; target < XtNumber(value_names); target++) { from.size = sizeof(String); from.addr = value_names[target]; printf("Convert %s >%s< -> %s ", XmRString, from.addr, TestRepType); XtConvertAndStore(Shell, XmRString, &from, TestRepType, &to); if (to.size != sizeof(unsigned char) || *(to.addr) != values[target]) { printf("Convert error\n"); GlobalErrors++; } else { printf(">%d< (okay)\n", *(to.addr)); } rev_from.size = to.size; rev_from.addr = (XtPointer)&(values[target]); printf("Convert %s >%d< -> XmRString ", TestRepType, *(rev_from.addr)); rev_to.size = 0; rev_to.addr = NULL; XtConvertAndStore(Shell, TestRepType, &rev_from, XmRString, &rev_to); if (rev_to.size != sizeof(String) || strcmp(rev_to.addr, value_names[target]) != 0) { printf("Convert error\n"); GlobalErrors++; } else { printf(">%s< (okay)\n", rev_to.addr); } } exit(GlobalErrors); }
extern void load_app_font( Calendar *cal, Font_Weight weight, Cal_Font *userfont, Cal_Font *return_font) { unsigned long pixel_size; Display *dpy = XtDisplay(cal->frame); char font_name[128], *font_name_ptr = font_name, **font_names; int nnames; XrmValue in_font; XrmValue out_fontlist; XmFontList font_list; Atom pixel_atom = XmInternAtom(dpy, "PIXEL_SIZE", FALSE); /* First get the pixel size from the User Font */ if (userfont->cf_type == XmFONT_IS_FONT) { /* If we can't get the pixel size from the user font we * defaults to a 12 pixel font. */ if (!XGetFontProperty(userfont->f.cf_font, pixel_atom, &pixel_size)) pixel_size = 12; } else { XFontStruct **font_struct_list; char **font_name_list; int list_size; if (!(list_size = XFontsOfFontSet(userfont->f.cf_fontset, &font_struct_list, &font_name_list))) { pixel_size = 12; } else { int i; if (!XGetFontProperty(font_struct_list[0], pixel_atom, &pixel_size)) pixel_size = 12; } } /* If the font family is not ``application'' then it is probably * multibyte so we can't assume there is an add-style or a proportional * version available. */ if (!strcmp(cal->app_data->app_font_family, "application")) { sprintf (font_name, "-dt-%s-%s-r-normal-sans-%lu-*-*-*-p-*", cal->app_data->app_font_family, (weight == BOLD)?"bold":"medium", pixel_size); } else { sprintf (font_name, "-dt-%s-%s-r-normal--%lu-*-*-*-*-*", cal->app_data->app_font_family, (weight == BOLD)?"bold":"medium", pixel_size); } /* See if the font exists */ font_names = XListFonts(dpy, font_name, 1, &nnames); if (!nnames) { if (!ProbeForFont(cal, weight, pixel_size, TRUE, font_name_ptr)) { /* We didn't find anything */ *return_font = *userfont; return; } } else XFreeFontNames(font_names); strcat(font_name, ":"); in_font.size = strlen(font_name); in_font.addr = font_name; out_fontlist.size = sizeof(XmFontList); out_fontlist.addr = (XPointer)&font_list; /* Convert font string to a font list. */ if (!XtConvertAndStore(cal->frame, XtRString, &in_font, XmRFontList, &out_fontlist)) { *return_font = *userfont; } if (!fontlist_to_font(font_list, return_font)) { *return_font = *userfont; } }
int main (int argc, char **argv) { int nTic1,nTic2,width,height; float smin,smax,bclip,wclip,x1beg,x1end,x2beg,x2end; char *edgecolor="cyan",*tricolor="yellow",*cmap="gray", *label1="",*label2="",*title="", *labelFont="",*titleFont="", *axesColor="",*gridColor="",*titleColor="", *style="seismic",*grid1="none",*grid2="none"; Model *model; XrmValue from,to; ExposeCD exposeCD; Widget toplevel,axes; Display *dpy; Window win; Arg args[100]; int nargs; float bhue=0,whue=240,sat=1,bright=1; /* initialize getpar */ initargs(argc,argv); requestdoc(0); /* read model */ model = readModel(stdin); /* determine minimum and maximum s(x,y) */ minmax(model,&smin,&smax); /* get optional parameters */ getparstring("edgecolor",&edgecolor); getparstring("tricolor",&tricolor); bclip = smin; getparfloat("bclip",&bclip); wclip = smax; getparfloat("wclip",&wclip); getparstring("cmap",&cmap); /* initialize toolkit intrinsics and set toplevel parameters */ toplevel = XtInitialize(argv[0],"Sxplot",NULL,0,&argc,argv); nargs = 0; if (getparint("width",&width)) {XtSetArg(args[nargs],XtNwidth,width); nargs++;} if (getparint("height",&height)) {XtSetArg(args[nargs],XtNheight,height); nargs++;} XtSetValues(toplevel,args,nargs); /* create axes and set axes parameters */ axes = XtCreateManagedWidget("axes",xtcwpAxesWidgetClass, toplevel,NULL,0); nargs = 0; if (getparstring("grid1",&grid1)) { from.addr = (char *)grid1; XtConvertAndStore(axes,XtRString,&from,XtcwpRAxesGrid,&to); if (to.addr) XtSetArg(args[nargs],XtNgrid1,*((int*)to.addr)); nargs++; } if (getparstring("grid2",&grid2)) { from.addr = (char *)grid2; XtConvertAndStore(axes,XtRString,&from,XtcwpRAxesGrid,&to); if (to.addr) XtSetArg(args[nargs],XtNgrid2,*((int*)to.addr)); nargs++; } if (getparint("nTic1",&nTic1)) {XtSetArg(args[nargs],XtNnTic1,nTic1); nargs++;} if (getparint("nTic2",&nTic2)) {XtSetArg(args[nargs],XtNnTic2,nTic2); nargs++;} if (getparstring("label1",&label1)) {XtSetArg(args[nargs],XtNlabel1,label1); nargs++;} if (getparstring("label2",&label2)) {XtSetArg(args[nargs],XtNlabel2,label2); nargs++;} if (getparstring("title",&title)) {XtSetArg(args[nargs],XtNtitle,title); nargs++;} if (getparstring("style",&style)) { from.size = (unsigned int) strlen(style); from.addr = (char *)style; XtConvertAndStore(axes,XtRString,&from,XtcwpRAxesStyle,&to); if (to.addr) XtSetArg(args[nargs],XtNstyle,*((int*)to.addr)); nargs++; } if (getparstring("axesColor",&axesColor)) { from.addr = (char *)axesColor; XtConvertAndStore(axes,XtRString,&from,XtRPixel,&to); if (to.addr) XtSetArg(args[nargs],XtNaxesColor, *((unsigned long*)to.addr)); nargs++; } if (getparstring("gridColor",&gridColor)) { from.addr = (char *)gridColor; XtConvertAndStore(axes,XtRString,&from,XtRPixel,&to); if (to.addr) XtSetArg(args[nargs],XtNgridColor, *((unsigned long*)to.addr)); nargs++; } if (getparstring("titleColor",&titleColor)) { from.addr = (char *)titleColor; XtConvertAndStore(axes,XtRString,&from,XtRPixel,&to); if (to.addr) XtSetArg(args[nargs],XtNtitleColor, *((unsigned long*)to.addr)); nargs++; } if (getparstring("labelFont",&labelFont)) { from.addr = (char *)labelFont; XtConvertAndStore(axes,XtRString,&from,XtRFont,&to); if (to.addr) XtSetArg(args[nargs],XtNlabelFont, *((Font*)to.addr)); nargs++; } if (getparstring("titleFont",&titleFont)) { from.addr = (char *)titleFont; XtConvertAndStore(axes,XtRString,&from,XtRFont,&to); if (to.addr) XtSetArg(args[nargs],XtNtitleFont, *((Font*)to.addr)); nargs++; } XtSetValues(axes,args,nargs); x1beg = model->xmin; getparfloat("x1beg",&x1beg); x1end = model->xmax; getparfloat("x1end",&x1end); x2beg = model->ymin; getparfloat("x2beg",&x2beg); x2end = model->ymax; getparfloat("x2end",&x2end); XtcwpSetAxesValues(axes,x1beg,x1end,x2beg,x2end); /* add callbacks to axes widget */ XtAddCallback(axes,XtNresizeCallback,(XtCallbackProc) resizeCB,NULL); exposeCD.model = model; exposeCD.edgecolor = edgecolor; exposeCD.tricolor = tricolor; exposeCD.bclip = bclip; exposeCD.wclip = wclip; XtAddCallback(axes,XtNexposeCallback,(XtCallbackProc) exposeCB,&exposeCD); XtAddCallback(axes,XtNinputCallback,(XtCallbackProc) inputCB,NULL); /* realize widgets */ XtRealizeWidget(toplevel); /* if necessary, create private colormap */ dpy = XtDisplay(toplevel); win = XtWindow(toplevel); if (STREQ(cmap,"gray")) { XSetWindowColormap(dpy,win,XtcwpCreateGrayColormap(dpy,win)); } else if (STREQ(cmap,"hue")) { XSetWindowColormap(dpy,win,XtcwpCreateHueColormap(dpy,win, bhue,whue,sat,bright)); /* see Note below */ } /* go */ XtMainLoop(); return EXIT_SUCCESS; }
_XvicImageSetStringCursor( XvicImageWidget iw, char *name) #endif /* _NO_PROTO */ { Display *dpy; char source_name[xvicPATH_MAX], mask_name[xvicPATH_MAX]; int source_char, mask_char, fields; Font source_font, mask_font; XrmValue fromString, toFont; Boolean success; #ifndef NO_XMU int i; unsigned int shape; Pixmap source, mask; int xhot, yhot; int len; #endif dpy = XtDisplay((Widget)iw); /* Check for font name/glyph index form */ if (strncmp(FONTSPECIFIER, name, strlen(FONTSPECIFIER)) == 0) { fields = sscanf(name, "FONT %s %d %s %d", source_name, &source_char, mask_name, &mask_char); if (fields < 2 || fields > 4) { XtAppWarningMsg(XtWidgetToApplicationContext((Widget)iw), "BadCursorString", "XvicImage", "XvicImageWidgetError", "Invalid format for Cursor string resource, cursor ignored", (String *)NULL, (Cardinal *)NULL); return; } fromString.addr = source_name; fromString.size = strlen(source_name) + 1; #if XtSpecificationRelease <= 4 XtConvert((Widget)iw, XtRString, &fromString, XtRFont, &toFont); success = (toFont.addr != NULL); if (success) source_font = *(Font *)toFont.addr; #else toFont.addr = (XtPointer) &source_font; toFont.size = sizeof(Font); success = XtConvertAndStore((Widget)iw, XtRString, &fromString, XtRFont, &toFont); #endif if (!success) { XtAppWarningMsg(XtWidgetToApplicationContext((Widget)iw), "BadCursorFont", "XvicImage", "XvicImageWidgetError", "Invalid font for Cursor string resource, cursor ignored", (String *)NULL, (Cardinal *)NULL); return; } switch (fields) { case 2: /* defaulted mask font & char */ mask_font = None; /* thus there is no mask, really */ mask_char = 0; break; case 3: /* defaulted mask font */ mask_font = source_font; mask_char = atoi(mask_name); break; case 4: /* specified mask font & char */ fromString.addr = mask_name; fromString.size = strlen(mask_name) + 1; #if XtSpecificationRelease <= 4 XtConvert((Widget)iw, XtRString, &fromString, XtRFont, &toFont); success = (toFont.addr != NULL); if (success) mask_font = *(Font *)toFont.addr; #else toFont.addr = (XtPointer) &mask_font; toFont.size = sizeof(Font); success = XtConvertAndStore((Widget)iw, XtRString, &fromString, XtRFont, &toFont); #endif if (!success) { XtAppWarningMsg(XtWidgetToApplicationContext((Widget)iw), "BadCursorMaskFont", "XvicImage", "XvicImageWidgetError", "Invalid mask font for Cursor string resource, cursor ignored", (String *)NULL, (Cardinal *)NULL); return; } } _XvicImageSetGlyphCursor(iw, source_font, mask_font, source_char, mask_char); /*!!!! Do we need to free fonts here???? !!!!*/ return; } #ifdef NO_XMU if (strcmp(name, DEFAULT_CURSOR) == 0) { _XvicImageSetFontCursor(iw, DEFAULT_CURSOR_SHAPE); /* default value */ return; } XtAppWarningMsg(XtWidgetToApplicationContext((Widget)iw), "BadCursorString", "XvicImage", "XvicImageWidgetError", "Invalid format for Cursor string resource, cursor ignored", (String *)NULL, (Cardinal *)NULL); return; #else /* Xmu is available */ /* Check for cursor shape name */ shape = XmuCursorNameToIndex(name); if (shape != -1) { _XvicImageSetFontCursor(iw, shape); return; } /* Check for bitmap file name */ source = XmuLocateBitmapFile(XtScreen((Widget)iw), name, mask_name, (sizeof mask_name) - 4, NULL, NULL, &xhot, &yhot); if (source == None) { XtAppWarningMsg(XtWidgetToApplicationContext((Widget)iw), "BadCursorString", "XvicImage", "XvicImageWidgetError", "Invalid format for Cursor string resource, cursor ignored", (String *)NULL, (Cardinal *)NULL); return; } len = strlen (mask_name); for (i = 0; i < 2; i++) { strcpy (mask_name + len, i == 0 ? "Mask" : "msk"); mask = XmuLocateBitmapFile (XtScreen((Widget)iw), mask_name, NULL, 0, NULL, NULL, NULL, NULL); if (mask != None) break; } _XvicImageSetPixmapCursor(iw, source, mask, xhot, yhot); XFreePixmap(XtDisplay((Widget)iw), source); if (mask != None) XFreePixmap(XtDisplay((Widget)iw), mask); return; #endif }