Widget MakeDrawArea(int width, int height, RedisplayCB redisplay, void *data) { int n = 0; Arg wargs[5]; /* Used to set widget resources */ Widget draw_widget; DrawInfo *di; if (lsx_curwin->toplevel == NULL && OpenDisplay(0, NULL) == 0) return NULL; di = (DrawInfo *)calloc(sizeof(DrawInfo), 1); if (di == NULL) return NULL; n = 0; XtSetArg(wargs[n], XtNwidth, width); n++; XtSetArg(wargs[n], XtNheight,height); n++; draw_widget = XtCreateManagedWidget("drawing_area", drawingAreaWidgetClass, lsx_curwin->form_widget,wargs,n); if (draw_widget == NULL) { free(di); return NULL; } di->drawgc = setup_gc(draw_widget); di->foreground = BlackPixel(lsx_curwin->display, lsx_curwin->screen); di->background = WhitePixel(lsx_curwin->display, lsx_curwin->screen); di->mask = 0xffffffff; di->user_data = data; di->redisplay = redisplay; XtAddCallback(draw_widget, XtNexposeCallback, (XtCallbackProc)_redisplay,di); XtAddCallback(draw_widget, XtNresizeCallback, (XtCallbackProc)_resize, di); XtAddCallback(draw_widget, XtNinputCallback, (XtCallbackProc)_do_input, di); XtAddCallback(draw_widget, XtNmotionCallback, (XtCallbackProc)_do_motion,di); lsx_curwin->last_draw_widget = draw_widget; di->widget = draw_widget; di->next = draw_info_head; draw_info_head = di; cur_di = di; /* * Make sure the font is set to something sane. */ if (lsx_curwin->font == NULL) lsx_curwin->font = GetFont("fixed"); SetWidgetFont(draw_widget, lsx_curwin->font); return draw_widget; }
int init_display(int argc, char **argv, MyProgram *me) { Widget w[25]; argc = OpenDisplay(argc, argv); if (argc == FALSE) return argc; w[0] = MakeMenu("File"); w[1] = MakeMenuItem(w[0], "Load...", load, me); w[2] = MakeMenuItem(w[0], "Save...", save, me); w[3] = MakeMenuItem(w[0], "Quit", quit, me); w[4] = MakeMenu("Edit"); w[5] = MakeMenuItem(w[4], "Check me", check_me, me); w[6] = MakeMenuItem(w[4], "Copy", NULL, NULL); w[7] = MakeMenuItem(w[4], "Paste", NULL, NULL); w[8] = MakeButton("Color Stuff", do_stuff, me); w[9] = MakeButton("More Stuff", more_stuff, me); w[10] = MakeButton("Quit!", quit, me); w[11] = MakeDrawArea(X_SIZE, Y_SIZE, redisplay, me); w[12] = MakeScrollList(string_table, 125, 275, list_callback, NULL); w[13] = MakeHorizScrollbar(X_SIZE, scroll_func, me); w[14] = MakeHorizScrollbar(X_SIZE, scroll_func, me); w[15] = MakeVertScrollbar(Y_SIZE, scroll_func, me); w[16] = MakeToggle("Slow", TRUE, NULL, toggle1, me); w[17] = MakeToggle("Fast", FALSE, w[16], toggle2, me); w[18] = MakeToggle("Faster", FALSE, w[16], toggle3, me); w[19] = MakeToggle("Fastest", FALSE, w[16], toggle4, me); w[20] = MakeToggle("Toggle me", FALSE, NULL, other_toggle, me); w[21] = MakeStringEntry("button.c", 435, string_func, me); w[22] = MakeTextWidget("button.c", TRUE, TRUE, 435, 200); w[23] = MakeLabel(" A Sample Libsx Demo Program (cool huh?)"); SetWidgetPos(w[4], PLACE_RIGHT, w[0], NO_CARE, NULL); SetWidgetPos(w[8], PLACE_UNDER, w[0], NO_CARE, NULL); SetWidgetPos(w[9], PLACE_UNDER, w[0], PLACE_RIGHT, w[8]); SetWidgetPos(w[10], PLACE_UNDER, w[0], PLACE_RIGHT, w[9]); SetWidgetPos(w[11], PLACE_UNDER, w[8], NO_CARE, NULL); SetWidgetPos(w[13], PLACE_UNDER, w[11], NO_CARE, NULL); SetWidgetPos(w[14], PLACE_UNDER, w[13], NO_CARE, NULL); SetWidgetPos(w[15], PLACE_RIGHT, w[11], PLACE_UNDER, w[8]); SetWidgetPos(w[12], PLACE_RIGHT, w[15], PLACE_UNDER, w[8]); SetWidgetPos(w[16], PLACE_RIGHT, w[13], PLACE_UNDER, w[15]); SetWidgetPos(w[17], PLACE_RIGHT, w[16], PLACE_UNDER, w[15]); SetWidgetPos(w[18], PLACE_RIGHT, w[13], PLACE_UNDER, w[16]); SetWidgetPos(w[19], PLACE_RIGHT, w[18], PLACE_UNDER, w[16]); SetWidgetPos(w[20], PLACE_RIGHT, w[10], PLACE_UNDER, w[0]); SetWidgetPos(w[21], PLACE_UNDER, w[18], NO_CARE, NULL); SetWidgetPos(w[22], PLACE_UNDER, w[21], NO_CARE, NULL); SetWidgetPos(w[23], PLACE_RIGHT, w[4], NO_CARE, NULL); /* * initialize the state of the toggle variables. */ me->toggle1 = TRUE; me->toggle2 = me->toggle3 = me->toggle4 = me->other_toggle = FALSE; me->list = w[12]; /* save these widget values for later */ me->str_entry = w[21]; me->text_widget = w[22]; me->draw_widget = w[11]; me->quit = w[10]; me->color_widget = w[8]; me->draw_font = GetFont("10x20"); if (me->draw_font == NULL) me->draw_font = GetFont("fixed"); SetWidgetFont(me->draw_widget, me->draw_font); SetButtonDownCB(w[11], button_down); SetButtonUpCB(w[11], button_up); SetKeypressCB(w[11], keypress); SetScrollbar(w[13], 3.0, 14.0, 14.0); SetScrollbar(w[14], 250.0, 255.0, 1.0); SetScrollbar(w[15], 30.0, 100.0, 25.0); /* * Now actually put the display on the screen. */ ShowDisplay(); /* * Get some colors for drawing with. */ GetStandardColors(); me->col1 = GetNamedColor("peachpuff2"); if (me->col1 == -1) fprintf(stderr, "Error getting color peachpuff\n"); me->col2 = GetRGBColor(255, 0, 255); if (me->col2 == -1) fprintf(stderr, "Error getting RGB color 0 255 255\n"); return argc; }