1efbcb2bfSmrg#include <stdlib.h> 2efbcb2bfSmrg#include <X11/StringDefs.h> 3efbcb2bfSmrg#include <Xaw/Box.h> 4efbcb2bfSmrg#include <Xaw/Simple.h> 5efbcb2bfSmrg#include <Xaw/Command.h> 6efbcb2bfSmrg#include <X11/Xmu/Drawing.h> 7efbcb2bfSmrg 8efbcb2bfSmrg/* 9efbcb2bfSmrg this is the draw function. it uses two pencils (GC) with 10efbcb2bfSmrg different colors. one pencil is used to draw the logo, 11efbcb2bfSmrg the other is used to fill the background. 12efbcb2bfSmrg*/ 13efbcb2bfSmrg 14efbcb2bfSmrgstatic void ac_set ( Widget w, XEvent *event, String *params, Cardinal *num_params ) 15efbcb2bfSmrg{ 16efbcb2bfSmrg GC gc1,gc2; 17efbcb2bfSmrg XGCValues values; 18efbcb2bfSmrg Dimension wi,hi; 19efbcb2bfSmrg 20efbcb2bfSmrg if (!XtIsRealized(w)) 21efbcb2bfSmrg return ; 22efbcb2bfSmrg 23efbcb2bfSmrg if (strcmp(XtName(w),"draw") != 0) 24efbcb2bfSmrg return ; 25efbcb2bfSmrg 26efbcb2bfSmrg XtVaGetValues(w,XtNheight,&hi,XtNwidth,&wi,NULL); 27efbcb2bfSmrg values.foreground = 0xcf00fe; //purple 28efbcb2bfSmrg gc1 = XtGetGC(w, GCForeground, &values); 29efbcb2bfSmrg values.foreground = 0x00ff00; //green 30efbcb2bfSmrg gc2 = XtGetGC(w, GCForeground, &values); 31efbcb2bfSmrg XmuDrawLogo(XtDisplay(w), XtWindow(w), gc1, gc2, 0,0, wi, hi ); 32efbcb2bfSmrg XtReleaseGC(w,gc1); 33efbcb2bfSmrg XtReleaseGC(w,gc2); 34efbcb2bfSmrg} 35efbcb2bfSmrg 36efbcb2bfSmrg 37efbcb2bfSmrgstatic void 38efbcb2bfSmrgquit_cb(Widget w, XtPointer data, XtPointer call_data) 39efbcb2bfSmrg{ 40efbcb2bfSmrg XtAppSetExitFlag( XtWidgetToApplicationContext(w) ); 41efbcb2bfSmrg}; 42efbcb2bfSmrg 43efbcb2bfSmrgint main(int argc, char **argv) 44efbcb2bfSmrg{ 45efbcb2bfSmrg Widget toplevel,box,command,simple; 46efbcb2bfSmrg XtAppContext app; 47efbcb2bfSmrg static char translation[] = 48efbcb2bfSmrg "<Expose>:set()\n"; 49efbcb2bfSmrg static XtActionsRec actionTable[] = { 50efbcb2bfSmrg {"set",ac_set } 51efbcb2bfSmrg }; 52efbcb2bfSmrg 53efbcb2bfSmrg toplevel = XtAppInitialize(&app, "demo", NULL, 0, 54efbcb2bfSmrg &argc, argv, NULL, 55efbcb2bfSmrg NULL, 0); 56efbcb2bfSmrg 57efbcb2bfSmrg XtAppAddActions(app, actionTable, XtNumber(actionTable) ); 58efbcb2bfSmrg 59efbcb2bfSmrg box = XtCreateManagedWidget("box", boxWidgetClass, toplevel, NULL, 0); 60efbcb2bfSmrg 61efbcb2bfSmrg command = XtVaCreateManagedWidget("cmd", 62efbcb2bfSmrg commandWidgetClass, box, 63efbcb2bfSmrg XtNlabel, "EXIT", 64efbcb2bfSmrg NULL); 65efbcb2bfSmrg 66efbcb2bfSmrg simple=XtVaCreateManagedWidget("draw", 67efbcb2bfSmrg simpleWidgetClass, box, 68efbcb2bfSmrg XtNheight,250, 69efbcb2bfSmrg XtNwidth,250, 70efbcb2bfSmrg XtNbackground, 0xff0000, 71efbcb2bfSmrg XtNtranslations,XtParseTranslationTable(translation), 72efbcb2bfSmrg NULL); 73efbcb2bfSmrg 74efbcb2bfSmrg XtAddCallback(command, XtNcallback, quit_cb, simple ); 75efbcb2bfSmrg 76efbcb2bfSmrg XtRealizeWidget(toplevel); 77efbcb2bfSmrg XtAppMainLoop(app); 78efbcb2bfSmrg exit(0); 79efbcb2bfSmrg} 80