static Select_Info *initialize_Graph_Select_Reg(void){
    Panel panel;
    Frame	gsr_frame =  NULL;
    Canvas gsr_cvs =  NULL;
    Window gsr_win;
    Xv_Window window;
    Select_Info *ret_val = (Select_Info*)Malloc(sizeof(Select_Info));

    gsr_frame = xv_create(tracesFrame, FRAME,
			XV_HEIGHT, gsrwin_h+40, XV_WIDTH, gsrwin_w,
			NULL);		  
    gsr_cvs =  xv_create(gsr_frame, CANVAS,
		       XV_X, 0, XV_Y, 40,		  
		       CANVAS_REPAINT_PROC, redraw_gsrwin,
		       CANVAS_RESIZE_PROC, resize_gsrwin,
		       NULL);		  
    gsr_win =  xv_get(canvas_paint_window(gsr_cvs), XV_XID);

    handle_colours(gsr_win);

    window = (Xv_Window)xv_get(gsr_cvs,CANVAS_NTH_PAINT_WINDOW,0);
    xv_set(window,WIN_EVENT_PROC,gsr_event_handle,
	   WIN_CONSUME_EVENTS,WIN_MOUSE_BUTTONS,NULL,
	   NULL);
    panel =  (Panel)xv_create(gsr_frame, PANEL,
			    XV_X, 0, XV_Y, 0, XV_HEIGHT, 40,
			    NULL);
    (void)xv_create(panel, PANEL_BUTTON,
		    PANEL_LABEL_STRING, "Quit",
		    PANEL_NOTIFY_PROC, close_gsr_win,
		    PANEL_CLIENT_DATA,gsr_frame,
		    NULL);
    (void)xv_create(panel, PANEL_BUTTON,
		    PANEL_LABEL_STRING, "Select All",
		    PANEL_NOTIFY_PROC, gsr_select_all,
		    XV_KEY_DATA, PANEL_SEL_REG,ret_val,
		    NULL);
    (void)xv_create(panel, PANEL_BUTTON,
		    PANEL_LABEL_STRING, "Deselect All",
		    PANEL_NOTIFY_PROC, gsr_deselect_all,
		    XV_KEY_DATA, PANEL_SEL_REG,ret_val,
		    NULL);
    (void)xv_create(panel, PANEL_BUTTON,
		    PANEL_LABEL_STRING, "Default Selection",
		    PANEL_NOTIFY_PROC, gsr_default,
		    XV_KEY_DATA, PANEL_SEL_REG,ret_val,
		    NULL);

    init_selection_values(ret_val);
    ret_val->can = gsr_cvs;
    ret_val->board = gsr_frame;
    ret_val->wind = gsr_win;
    createGC(gsr_win, &ret_val->txtgc);
    fil_sel_reg(ret_val);
    return ret_val;
}
static void InitFpltFrame()
{
    Panel panel;
    Menu menu;
    
    fplt_frame= xv_create(tracesFrame, FRAME,
			  XV_HEIGHT, fpltwin_h+40, XV_WIDTH, fpltwin_w,
			  NULL);		  
    fplt_cvs= xv_create(fplt_frame, CANVAS,
			XV_X, 0, XV_Y, 40,		  
			CANVAS_REPAINT_PROC, redrawFplt,		  
			NULL);		  
    fplt_win= xv_get(canvas_paint_window(fplt_cvs), XV_XID);
    createGC( fplt_win, &fplt_gc);
    panel= (Panel)xv_create(fplt_frame, PANEL,
			    XV_X, 0, XV_Y, 0, XV_HEIGHT, 40,
			    NULL);
    (void)xv_create(panel, PANEL_BUTTON,
		    PANEL_LABEL_STRING, "Quit",
		    PANEL_NOTIFY_PROC, close_fplt_win,
		    NULL);
    menu= (Menu)xv_create(NULL,MENU,
			  MENU_STRINGS,
			  "taper etc.", "no taper", "shades", "no shades",
			  NULL,
			  MENU_NOTIFY_PROC,   options_menu_proc,
			  NULL);
    (void)xv_create(panel, PANEL_BUTTON,
		    PANEL_LABEL_STRING, "Options",
		    PANEL_ITEM_MENU, menu,
		    NULL);
    len_txt= (Panel_item)xv_create(panel, PANEL_TEXT,
				   PANEL_LABEL_STRING, "Length",
				   PANEL_VALUE_DISPLAY_WIDTH, 60,			  
				   NULL);
    step_txt= (Panel_item)xv_create(panel, PANEL_TEXT,
				    PANEL_LABEL_STRING, "Step",
				    PANEL_VALUE_DISPLAY_WIDTH, 60,			  
				    NULL);
    scale_txt= (Panel_item)xv_create(panel, PANEL_TEXT,
				     PANEL_LABEL_STRING, "Scale",
				     PANEL_VALUE_DISPLAY_WIDTH, 60,			  
				     NULL);
    itrc_txt= (Panel_item)xv_create(panel, PANEL_NUMERIC_TEXT,
				    PANEL_LABEL_STRING, "Trc No.",
				    PANEL_VALUE_DISPLAY_WIDTH, 60,			  
				    NULL);
    (void)xv_create(panel, PANEL_BUTTON,
		    PANEL_LABEL_STRING, "Go",
		    PANEL_NOTIFY_PROC, go_fplt,
		    NULL);
    InitStipples();
}
/*
 * Create object `canvas1' in the specified instance.
 */
Xv_opaque
SoundingChart_GUI_window1_canvas1_create(SoundingChart_GUI_window1_objects *ip, Xv_opaque owner)
{
	extern Notify_value	canvas_event_func(Xv_window, Event *, Notify_arg, Notify_event_type);
	extern void	canvas_repaint(Canvas, Xv_window, Rectlist *);
	Xv_opaque	obj;
	
	obj = xv_create(owner, CANVAS,
		XV_KEY_DATA, INSTANCE, ip,
		XV_X, 0,
		XV_Y, (int)xv_get(ip->controls1, XV_Y) +
		      (int)xv_get(ip->controls1, XV_HEIGHT),
		XV_WIDTH, WIN_EXTEND_TO_EDGE,
		XV_HEIGHT, WIN_EXTEND_TO_EDGE,
		CANVAS_REPAINT_PROC, canvas_repaint,
		NULL);
	xv_set(canvas_paint_window(obj), WIN_CONSUME_EVENTS,
		WIN_MOUSE_BUTTONS,
		LOC_MOVE,
		LOC_DRAG,
		LOC_WINENTER,
		LOC_WINEXIT,
		WIN_ASCII_EVENTS,
		WIN_LEFT_KEYS,
		WIN_RIGHT_KEYS,
		WIN_TOP_KEYS,
		NULL, NULL);
	notify_interpose_event_func(canvas_paint_window(obj),
		(Notify_func) canvas_event_func, NOTIFY_SAFE);
	/*
	 * This line is here for backwards compatibility. It will be
	 * removed for the next release.
	 */
	xv_set(canvas_paint_window(obj), XV_KEY_DATA, INSTANCE, ip, NULL);
	return obj;
}
int initZTScale(Frame frame)
{
    ztscl_top_canvas= (Canvas)xv_create(frame, CANVAS,
					XV_X, 0, XV_Y, 0,
					XV_WIDTH, ZCvsWidth+ZTrkLabWidth+4, XV_HEIGHT, ZTSHEIGHT+1,
					XV_KEY_DATA, WHICH_TS, TOP_TS,
					CANVAS_REPAINT_PROC, RedrawZTScale,
					NULL);
    ztscl_bot_canvas= (Canvas)xv_create(frame, CANVAS,
					XV_X, 0, XV_Y, ZCvsHeight+ZTSHEIGHT-1,
					XV_WIDTH, ZCvsWidth+ZTrkLabWidth+4, XV_HEIGHT, ZTSHEIGHT+1,
					XV_KEY_DATA, WHICH_TS, BOTTOM_TS,
					CANVAS_REPAINT_PROC, RedrawZTScale,
					NULL);
    ztscl_top_win= (Window)xv_get(canvas_paint_window(ztscl_top_canvas),
				  XV_XID);
    ztscl_bot_win= (Window)xv_get(canvas_paint_window(ztscl_bot_canvas),
				  XV_XID);
    createGC(ztscl_top_win, &ztscl_gc);
    if(!Mode_ZDisplayTScale || !Mode_align) {
	xv_set(ztscl_top_canvas, XV_SHOW, FALSE, NULL);
	xv_set(ztscl_bot_canvas, XV_SHOW, FALSE, NULL);
    }
}
Example #5
0
main(int argc, char **argv)
{
	XColor    rgb_def;
	XColor    rgb_exact;
	XGCValues gcvalues;

	/*
	 * Initialize XView.
	 */
	xv_init(XV_INIT_ARGC_PTR_ARGV, &argc, argv, NULL);
	INSTANCE = xv_unique_key();
	
	/*
	 * Initialize user interface components.
	 * Do NOT edit the object initializations by hand.
	 */
	Cclock_window1 = cclock_window1_objects_initialize(NULL, 0);

	dpy = (Display *) xv_get(Cclock_window1->window1, XV_DISPLAY);
    cmap = DefaultColormap(dpy,DefaultScreen(dpy));

	can_xid = xv_get(canvas_paint_window(Cclock_window1->canvas1),XV_XID);

	XAllocNamedColor(dpy,cmap,"White",&rgb_def,&rgb_exact);
	gcvalues.foreground = rgb_exact.pixel;
	XAllocNamedColor(dpy,cmap,"Black",&rgb_def,&rgb_exact);
	gcvalues.background = rgb_exact.pixel;
	
	w_gc = XCreateGC(dpy,can_xid,(GCForeground | GCBackground),&gcvalues);

	gcvalues.foreground = rgb_exact.pixel;
	b_gc = XCreateGC(dpy,can_xid,(GCForeground | GCBackground),&gcvalues);


	XSetLineAttributes(dpy, w_gc, 3, LineSolid, CapButt, JoinRound);
	

	
	/*
	 * Turn control over to XView.
	 */
	xv_main_loop(Cclock_window1->window1);
	exit(0);
}
static void InitPmotionFrame()
{
    Panel panel;
    Menu menu;
    
    pm_frame= xv_create(tracesFrame, FRAME,
			XV_HEIGHT, pmwin_h+40, XV_WIDTH, pmwin_w,
			NULL);		  
    pm_cvs= xv_create(pm_frame, CANVAS,
		      XV_X, 0, XV_Y, 40,		  
		      CANVAS_REPAINT_PROC, redrawPmotion,
		      NULL);		  
    pm_win= xv_get(canvas_paint_window(pm_cvs), XV_XID);
    createGC(pm_win, &pm_gc);
    panel= (Panel)xv_create(pm_frame, PANEL,
			    XV_X, 0, XV_Y, 0, XV_HEIGHT, 40,
			    NULL);
    (void)xv_create(panel, PANEL_BUTTON,
		    PANEL_LABEL_STRING, "Quit",
		    PANEL_NOTIFY_PROC, close_pmotion_win,
		    NULL);
    (void)xv_create(panel, PANEL_BUTTON,
		    PANEL_LABEL_STRING, "redo",
		    PANEL_NOTIFY_PROC, handle_particle_motion,
		    NULL);
    (void)xv_create(panel, PANEL_BUTTON,
		    PANEL_LABEL_STRING, "next selection",
		    PANEL_NOTIFY_PROC, next_motion,
		    NULL);
    (void)xv_create(panel, PANEL_BUTTON,
		    PANEL_LABEL_STRING, "Z-X",
		    PANEL_NOTIFY_PROC, changeZX,
		    NULL);
    (void)xv_create(panel, PANEL_BUTTON,
		    PANEL_LABEL_STRING, "Z-Y",
		    PANEL_NOTIFY_PROC, changeZY,
		    NULL);
    (void)xv_create(panel, PANEL_BUTTON,
		    PANEL_LABEL_STRING, "X-Y",
		    PANEL_NOTIFY_PROC, changeXY,
		    NULL);
}
void InitZTrkLab(Frame frame)
{
    Server_image raise, lower, compress, expand, center, zero;
    int i, y;
    int show= ZTrkHeight>=105;

    ZLab_win= (Window *)Malloc(sizeof(Window)*NumZTracks);
    ZLab_canvas= (Canvas *)Malloc(sizeof(Canvas)*NumZTracks);
    ZLab_canvas2= (Canvas *)Malloc(sizeof(Canvas)*NumZTracks);
    ZLab_panel= (Panel *)Malloc(sizeof(Panel)*NumZTracks);

    if (ZLab_win==NULL || ZLab_canvas==NULL || ZLab_panel==NULL ||
	ZLab_canvas2==NULL )
	return;	    /* not enuff memory */
    /* creates button images */
    raise = (Server_image)xv_create(NULL, SERVER_IMAGE,
				    XV_WIDTH, raise_width,
				    XV_HEIGHT, raise_height,
				    SERVER_IMAGE_DEPTH, 1,
				    SERVER_IMAGE_X_BITS, raise_bits,
				    NULL);
    lower = (Server_image)xv_create(NULL, SERVER_IMAGE,
				    XV_WIDTH, lower_width,
				    XV_HEIGHT, lower_height,
				    SERVER_IMAGE_DEPTH, 1,
				    SERVER_IMAGE_X_BITS, lower_bits,
				    NULL);
    center = (Server_image)xv_create(NULL, SERVER_IMAGE,
				     XV_WIDTH, center_width,
				     XV_HEIGHT, center_height,
				     SERVER_IMAGE_DEPTH, 1,
				     SERVER_IMAGE_X_BITS, center_bits,
				     NULL);
    zero = (Server_image)xv_create(NULL, SERVER_IMAGE,
				   XV_WIDTH, zero_width,
				   XV_HEIGHT, zero_height,
				   SERVER_IMAGE_DEPTH, 1,
				   SERVER_IMAGE_X_BITS, zero_bits,
				   NULL);
    expand = (Server_image)xv_create(NULL, SERVER_IMAGE,
				     XV_WIDTH, expand_width,
				     XV_HEIGHT, expand_height,
				     SERVER_IMAGE_DEPTH, 1,
				     SERVER_IMAGE_X_BITS, expand_bits,
				     NULL);
    compress = (Server_image)xv_create(NULL, SERVER_IMAGE,
				       XV_WIDTH, compress_width,
				       XV_HEIGHT, compress_height,
				       SERVER_IMAGE_DEPTH, 1,
				       SERVER_IMAGE_X_BITS, compress_bits,
				       NULL);

    /* set up the label canvas */
    y= (Mode_align && Mode_ZDisplayTScale)? ZTSHEIGHT : 0;
    for(i=0; i < NumZTracks; i++) {
	Panel panel;
	Canvas canvas;
	Panel_item item0, item1, item2;
	int ht;

	ht= (i!=NumZTracks-1)? ZTrkHeight :
	    ZCvsHeight-ZTrkHeight*(NumZTracks-1);
	canvas = (Canvas)xv_create(frame, CANVAS,
				   XV_X, 0, XV_Y, y,		   
				   XV_WIDTH, ZTrkLabWidth,
				   XV_HEIGHT, ht,
				   /* CANVAS_WIDTH, ZTrkLabWidth,
				      CANVAS_HEIGHT, ZTrkHeight,
				      CANVAS_AUTO_EXPAND, FALSE,
				      CANVAS_AUTO_SHRINK, FALSE, */
				   CANVAS_X_PAINT_WINDOW, TRUE,
				   CANVAS_REPAINT_PROC, Zlab_repaint_proc,
				   XV_KEY_DATA, TRACK_INDEX, i,	/* for identification */
				   NULL);
	ZLab_canvas[i]= canvas;       

	panel = (Panel)xv_create(canvas, PANEL,
				 XV_X, 1,		 
				 XV_HEIGHT, ht-1,
				 XV_WIDTH, ZTrkLabWidth,
				 /* PANEL_LAYOUT, PANEL_HORIZONTAL,
				 PANEL_ITEM_X_GAP, 3,
				 PANEL_ITEM_Y_GAP, 3, */
				 NULL);
	ZLab_panel[i]= panel;

	/* raise trace */
	item0= (Panel_item)xv_create(panel, PANEL_BUTTON,
				     XV_X, 5, XV_Y, ZTrkHeight - 60,
				     PANEL_LABEL_IMAGE,	raise,
				     PANEL_NOTIFY_PROC,	Zlab_notify_raise,
				     XV_SHOW, (show? TRUE:FALSE),
				     XV_KEY_DATA, TRACK_INDEX, i,
				     NULL);

	/* lower trace */
	item1= (Panel_item)xv_create(panel, PANEL_BUTTON,
				     XV_X, 45, XV_Y, ZTrkHeight - 60,
				     PANEL_LABEL_IMAGE,	lower,
				     PANEL_NOTIFY_PROC,	Zlab_notify_lower,
				     XV_SHOW, (show? TRUE:FALSE),
				     XV_KEY_DATA, TRACK_INDEX, i,
				     NULL);

	/* center trace */
	item2= (Panel_item)xv_create(panel, PANEL_BUTTON,
				     XV_X, 65, XV_Y, ZTrkHeight - 60,
				     PANEL_LABEL_IMAGE,	center,
				     PANEL_NOTIFY_PROC,	Zlab_notify_center,
				     XV_SHOW, (show? TRUE:FALSE),
				     XV_KEY_DATA, TRACK_INDEX, i,
				     NULL);

	/* expand vertically */
	(void)xv_create(panel, PANEL_BUTTON,
			XV_X, 5, XV_Y, ZTrkHeight - 30,
			PANEL_LABEL_IMAGE,	expand,
			PANEL_NOTIFY_PROC,	Zlab_notify_expand,
			PANEL_NEXT_ROW, -1,
			XV_SHOW, (show? TRUE:FALSE),
			XV_KEY_DATA, TRACK_INDEX, i,
			NULL);

	/* compress vertically */
	(void)xv_create(panel, PANEL_BUTTON,
			XV_X, 35, XV_Y, ZTrkHeight - 30,
			PANEL_LABEL_IMAGE,	compress,
			PANEL_NOTIFY_PROC,	Zlab_notify_compress,
			XV_SHOW, (show? TRUE:FALSE),
			XV_KEY_DATA, TRACK_INDEX, i,
			NULL);

	/* zero bias and unity gain for trace */
	(void)xv_create(panel, PANEL_BUTTON,
			XV_X, 65, XV_Y, ZTrkHeight - 30,
			PANEL_LABEL_IMAGE,	zero,
			PANEL_NOTIFY_PROC,	Zlab_notify_zero,
			XV_SHOW, (show? TRUE:FALSE),
			XV_KEY_DATA, TRACK_INDEX, i,
			NULL);

	canvas = (Canvas)xv_create(canvas, CANVAS,
				   XV_X, 5, XV_Y, 10,		   
				   XV_WIDTH, ZTrkLabWidth-10,
				   XV_HEIGHT, 30, /* ZTrkHeight,*/
				   CANVAS_X_PAINT_WINDOW, TRUE,
				   CANVAS_REPAINT_PROC, Zlab_repaint_proc,
				   OPENWIN_SHOW_BORDERS, FALSE,
				   XV_KEY_DATA, TRACK_INDEX, i,	/* for identification */
				   NULL);
	xv_set(canvas_paint_window(canvas),
	       WIN_EVENT_PROC, Zlab_event_proc,
	       WIN_CONSUME_EVENTS,
	       LOC_DRAG, LOC_MOVE, WIN_ASCII_EVENTS, WIN_MOUSE_BUTTONS,
	       LOC_WINENTER, LOC_WINEXIT,
	       NULL,
	       XV_KEY_DATA, TRACK_INDEX, i,	/* for identification */
	       NULL);
	ZLab_canvas2[i]= canvas;       
	ZLab_win[i]= (Window)xv_get(canvas_paint_window(canvas),XV_XID);

	y+=ZTrkHeight;
    }
}
Example #8
0
/* initialized to the variables indicated by the user. */
void
vs_win_create(Frame owner,	/* owner frame handle */
	      int x,		/* x location of window */
	      int y,		/* y location of window */
	      int wd,		/* width of canvas */
	      int ht,		/* height of canvas */
	      Siscms *siscms,	/* SIS color map */
	      int gs_start,	/* start index of greyscale map */
	      int gs_size)	/* size of greyscale map */
{
    Menu color_menu;

    /* Initialize variables */
    vsi.cm = siscms;
    vsi.gs_start = gs_start;
    vsi.gs_num = gs_size;

    if (wd == 0){
	vsi.canvas_width = 350;
    }else{
    	vsi.canvas_width = wd;
    }
    if (ht == 0){
	vsi.canvas_height = 350;
    }else{
    	vsi.canvas_height = ht;
    }

    vsi.curve_pts = (Gpoint *)malloc(sizeof(Gpoint) *  65536 * 2);
    vsi.n_curve_pts = 0;/*CMP*/
    if (!vsi.curve_pts){
	perror("vs_win_create(): Out of memory for curve_pts");
	exit(1);
    }

    vsi.popup =
    xv_create(owner, FRAME_CMD,
	      XV_X, x,
	      XV_Y, y,
	      WIN_SHOW, FALSE,
	      FRAME_LABEL, "Vertical Scaling",
	      FRAME_CMD_PUSHPIN_IN, TRUE,
	      FRAME_SHOW_RESIZE_CORNER, TRUE,
	      FRAME_SHOW_FOOTER, TRUE,
	      NULL);

    vsi.panel = (Panel) xv_get(vsi.popup, FRAME_CMD_PANEL);
    xv_set(vsi.panel, PANEL_LAYOUT, PANEL_VERTICAL, NULL);

    vsi.func_choice =
    xv_create(vsi.panel, PANEL_CHOICE,
	      PANEL_LAYOUT, PANEL_VERTICAL,
	      PANEL_CHOICE_STRINGS, "Curve", "Linear", "Spline", NULL,
	      PANEL_NOTIFY_PROC, update_callback,
	      NULL);

    vsi.negative =
    xv_create(vsi.panel, PANEL_TOGGLE,
	      /*PANEL_NEXT_COL, -1,*/
	      PANEL_CHOICE_STRINGS, "Negative", NULL,
	      PANEL_NOTIFY_PROC, update_callback,
	      NULL);

    /*Rect *rect = (Rect*)xv_get(vsi.func_choice, PANEL_CHOICE_RECT, 2);
    vsi.exponent =
    xv_create(vsi.panel, PANEL_TEXT,
	      XV_X, rect->r_left + rect->r_width + 5,
	      XV_Y, rect->r_top + 5,
	      PANEL_VALUE, "0",
	      PANEL_VALUE_DISPLAY_LENGTH, 7,
	      PANEL_VALUE_STORED_LENGTH, 7,
	      PANEL_NOTIFY_PROC, update_callback,
	      NULL);

    rect = (Rect*)xv_get(vsi.func_choice, PANEL_CHOICE_RECT, 3);
    vsi.power =
    xv_create(vsi.panel, PANEL_TEXT,
	      XV_X, rect->r_left + rect->r_width + 5,
	      XV_Y, rect->r_top + 5,
	      PANEL_VALUE, "1",
	      PANEL_VALUE_DISPLAY_LENGTH, 7,
	      PANEL_VALUE_STORED_LENGTH, 7,
	      PANEL_NOTIFY_PROC, update_callback,
	      NULL);
	      */

    // Dummy menu--the real one is created and attached below
    color_menu = (Menu)xv_create(NULL, MENU,
				 NULL);
    vsi.oflow_color =
    xv_create(vsi.panel, PANEL_BUTTON,
	      PANEL_NEXT_COL, -1,
	      PANEL_ITEM_MENU, color_menu,
	      PANEL_LABEL_STRING, "Overflow",
	      NULL);

    vsi.uflow_color =
    xv_create(vsi.panel, PANEL_BUTTON,
	      PANEL_ITEM_MENU, color_menu,
	      PANEL_LABEL_STRING, "Underflow",
	      NULL);

    vsi.min_data =
    xv_create(vsi.panel, PANEL_TEXT,
	      XV_X, 0,
	      XV_Y, ((int)xv_get(vsi.negative, XV_Y)
		     + (int)xv_get(vsi.negative, XV_HEIGHT) + 10),
	      PANEL_VALUE, "0",
	      PANEL_VALUE_DISPLAY_LENGTH, 10,
	      PANEL_VALUE_STORED_LENGTH, 10,
	      PANEL_NOTIFY_PROC, update_callback,
	      NULL);

    vsi.range_label =
    xv_create(vsi.panel, PANEL_MESSAGE,
	      XV_Y, (int)xv_get(vsi.min_data, XV_Y),
	      PANEL_LABEL_STRING, "<- Data Range ->",
	      PANEL_LABEL_BOLD, FALSE,
	      NULL);
    xv_set(vsi.range_label,
	   XV_X, (vsi.canvas_width - (int)xv_get(vsi.range_label, XV_WIDTH))/2,
	   NULL);

    vsi.max_data =
    xv_create(vsi.panel, PANEL_TEXT,
	      XV_Y, (int)xv_get(vsi.min_data, XV_Y),
	      PANEL_VALUE, "0.03",
	      PANEL_VALUE_DISPLAY_LENGTH, 10,
	      PANEL_VALUE_STORED_LENGTH, 10,
	      PANEL_NOTIFY_PROC, update_callback,
	      NULL);
    xv_set(vsi.max_data,
	   XV_X, vsi.canvas_width - (int)xv_get(vsi.max_data, XV_WIDTH),
	   NULL);

    window_fit_height(vsi.panel);

    vsi.canvas =
    xv_create(vsi.popup, 	CANVAS,
	      CANVAS_AUTO_EXPAND,	TRUE,
	      CANVAS_AUTO_SHRINK,	TRUE,
	      CANVAS_FIXED_IMAGE,	FALSE,
	      WIN_BELOW,		vsi.panel,
	      XV_HEIGHT,		vsi.canvas_height,
	      XV_WIDTH,			vsi.canvas_width,
	      CANVAS_HEIGHT,		vsi.canvas_height,
	      CANVAS_WIDTH,		vsi.canvas_width,
	      OPENWIN_SHOW_BORDERS,	FALSE,
	      CANVAS_REPAINT_PROC,	canvas_repaint_proc,
	      CANVAS_RESIZE_PROC,	canvas_resize_proc,
	      NULL);

    vsi.gdev = g_device_create(vsi.canvas, vsi.cm);
    G_Set_Op(vsi.gdev, GXcopy);

    color_menu = make_color_menu(oflow_callback);
    xv_set(vsi.oflow_color, PANEL_ITEM_MENU, color_menu, NULL);
    color_menu = make_color_menu(uflow_callback);
    xv_set(vsi.uflow_color, PANEL_ITEM_MENU, color_menu, NULL);

    xv_set(canvas_paint_window(vsi.canvas),
	   WIN_EVENT_PROC, canvas_event_proc,
	   WIN_CONSUME_EVENTS,
	     LOC_DRAG,
	     ACTION_SELECT,
	     NULL,
	   NULL);

    window_fit(vsi.canvas);
    xv_set(vsi.panel, XV_WIDTH, (int)xv_get(vsi.canvas, XV_WIDTH), NULL);
    window_fit(vsi.popup);

    vsi.uflow_cmi = vsi.gs_start;
    vsi.oflow_cmi = vsi.gs_start + vsi.gs_num - 1;

    // Note that LIN_KNOTS are same as SPL_KNOTS
    vsi.knotlists[LIN_KNOTS] = (Fpoint *)malloc(4 * sizeof(Fpoint));
    vsi.knotlists[LOG_KNOTS] = (Fpoint *)malloc(3 * sizeof(Fpoint));
    vsi.knotlists[PWR_KNOTS] = (Fpoint *)malloc(3 * sizeof(Fpoint));
    vsi.knotlists[CRV_KNOTS] = (Fpoint *)malloc(3 * sizeof(Fpoint));
    if (!vsi.knotlists[LIN_KNOTS]
	|| !vsi.knotlists[LOG_KNOTS]
	|| !vsi.knotlists[PWR_KNOTS]
	|| !vsi.knotlists[CRV_KNOTS] )
    {
	perror("vs_win_create(): Out of memory for knotlists");
	exit(1);
    }
    vsi.nknots[LIN_KNOTS] = 4;
    vsi.knotlists[LIN_KNOTS][0].x = vsi.knotlists[LIN_KNOTS][0].y = 0;
    vsi.knotlists[LIN_KNOTS][1].x = vsi.knotlists[LIN_KNOTS][1].y = 0.33;
    vsi.knotlists[LIN_KNOTS][2].x = vsi.knotlists[LIN_KNOTS][2].y = 0.67;
    vsi.knotlists[LIN_KNOTS][3].x = vsi.knotlists[LIN_KNOTS][3].y = 1;

    vsi.nknots[LOG_KNOTS] = 3;
    vsi.knotlists[LOG_KNOTS][0].x = vsi.knotlists[LOG_KNOTS][0].y = 0;
    vsi.knotlists[LOG_KNOTS][1].x = vsi.knotlists[LOG_KNOTS][1].y = 0.5;
    vsi.knotlists[LOG_KNOTS][2].x = vsi.knotlists[LOG_KNOTS][2].y = 1;

    vsi.nknots[PWR_KNOTS] = 3;
    vsi.knotlists[PWR_KNOTS][0].x = vsi.knotlists[PWR_KNOTS][0].y = 0;
    vsi.knotlists[PWR_KNOTS][1].x = vsi.knotlists[PWR_KNOTS][1].y = 0.5;
    vsi.knotlists[PWR_KNOTS][2].x = vsi.knotlists[PWR_KNOTS][2].y = 1;

    vsi.nknots[CRV_KNOTS] = 3;
    vsi.knotlists[CRV_KNOTS][0].x = vsi.knotlists[CRV_KNOTS][0].y = 0;
    vsi.knotlists[CRV_KNOTS][1].x = vsi.knotlists[CRV_KNOTS][1].y = 0.5;
    vsi.knotlists[CRV_KNOTS][2].x = vsi.knotlists[CRV_KNOTS][2].y = 1;


    func_update();
}	/* end of vs_win_create() */
Example #9
0
static void CreateTrk(Frame frame, int i, int height, int width, int y)
{
    Canvas canvas, txtcanvas;
    Track *trk;
    extern Display *theDisp;
    int theScrn;

    trk= tracks[i]= (Track *)Malloc(sizeof(Track));
    if (trk==NULL) return;  /* not enuff mem */
    if (Mode_noBorder) {
	txtcanvas= (Canvas)xv_create(frame, CANVAS,
				     XV_X, 0, XV_Y, y,
				     XV_WIDTH, TXTCANV_WIDTH-2,
				     XV_HEIGHT, height,
				     /*	     CANVAS_AUTO_EXPAND, FALSE,	    -- allow for resize
					     CANVAS_AUTO_SHRINK, FALSE, */
				     OPENWIN_SHOW_BORDERS, FALSE,
				     CANVAS_X_PAINT_WINDOW, TRUE,
				     CANVAS_RETAINED, FALSE,
				     CANVAS_REPAINT_PROC, repaintTrackLabs,
				     XV_KEY_DATA, TRACK_INDEX, i,  /* for identification */
				     NULL);
	canvas= (Canvas)xv_create(frame, CANVAS,
				  XV_X, TXTCANV_WIDTH, XV_Y, y,
				  XV_WIDTH, FrmWidth-TXTCANV_WIDTH-19,
				  XV_HEIGHT, height,
				  CANVAS_X_PAINT_WINDOW, TRUE,
				  OPENWIN_SHOW_BORDERS, FALSE,
				  /*	     CANVAS_AUTO_EXPAND, FALSE,
					     CANVAS_AUTO_SHRINK, FALSE,*/
				  CANVAS_RETAINED, FALSE,
				  CANVAS_REPAINT_PROC, repaintTracks,
				  XV_KEY_DATA, TRACK_INDEX, i,  /* for identification */
				  NULL);
    }else {
	/* well, guess what? OPENWIN_SHOW_BORDERS can only be used in
	   xv_create! */
	txtcanvas= (Canvas)xv_create(frame, CANVAS,
				     XV_X, 0, XV_Y, y,
				     XV_WIDTH, TXTCANV_WIDTH,
				     XV_HEIGHT, height,
				     /*	     CANVAS_AUTO_EXPAND, FALSE,	    -- allow for resize
					     CANVAS_AUTO_SHRINK, FALSE, */
				     CANVAS_X_PAINT_WINDOW, TRUE,
				     CANVAS_RETAINED, FALSE,
				     CANVAS_REPAINT_PROC, repaintTrackLabs,
				     XV_KEY_DATA, TRACK_INDEX, i,  /* for identification */
				     NULL);
	canvas= (Canvas)xv_create(frame, CANVAS,
				  XV_X, TXTCANV_WIDTH, XV_Y, y,
				  XV_WIDTH, FrmWidth-TXTCANV_WIDTH-19,
				  XV_HEIGHT, height,
				  CANVAS_X_PAINT_WINDOW, TRUE,
				  /*	     CANVAS_AUTO_EXPAND, FALSE,
					     CANVAS_AUTO_SHRINK, FALSE,*/
				  CANVAS_RETAINED, FALSE,
				  CANVAS_REPAINT_PROC, repaintTracks,
				  XV_KEY_DATA, TRACK_INDEX, i,  /* for identification */
				  NULL);

    }
    trk->height= height;
    trk->width= width-TXTCANV_WIDTH-19;
    trk->canvas= canvas;
    trk->TxtCanvas= txtcanvas;
    trk->xwin=(Window)xv_get(canvas_paint_window(canvas),XV_XID);
    trk->txtwin=(Window)xv_get(canvas_paint_window(txtcanvas),XV_XID);

    /* standard GC */
    createGC( trk->xwin, &trk->gc);
    /* xor GC */
    createGC( trk->xwin, &trk->ovrGC);
    XSetFunction(theDisp, trk->ovrGC, GXxor);
    theScrn = DefaultScreen(theDisp);
    XSetForeground(theDisp, trk->ovrGC,
		   WhitePixel(theDisp, theScrn)^BlackPixel(theDisp, theScrn));
    /* text font for track labels */
    createGC(trk->txtwin, &trk->txtgc);
    /*    XSetFunction(theDisp, trk->txtgc, GXxor); */

    xv_set(canvas_paint_window(canvas),
	   WIN_EVENT_PROC, Cvs_event_proc,
	   WIN_CONSUME_EVENTS, KBD_DONE, KBD_USE, LOC_WINENTER,
	   LOC_WINEXIT, WIN_ASCII_EVENTS, WIN_MOUSE_BUTTONS, LOC_DRAG,
	   NULL,
	   NULL);
    xv_set(canvas_paint_window(txtcanvas),
	   WIN_EVENT_PROC, TxtCvs_event_proc,
	   WIN_CONSUME_EVENTS, WIN_MOUSE_BUTTONS,
	   NULL,
	   NULL);
}
static void InitXSpctrmFrame()
{
    Panel panel;
    Menu menu;
    char dash_list[2];
    
    xspctrm_frame= xv_create(tracesFrame, FRAME,
	XV_HEIGHT, xspctrmwin_h+40, XV_WIDTH, xspctrmwin_w,
	NULL);		  
    xspctrm_cvs= xv_create(xspctrm_frame, CANVAS,
	XV_X, 0, XV_Y, 40,
	CANVAS_RETAINED, TRUE,
	CANVAS_REPAINT_PROC, redrawXSpctrm,		  
	CANVAS_RESIZE_PROC, resizeXSpctrm,		  
	NULL);		  
    xspc_win= xv_get(canvas_paint_window(xspctrm_cvs), XV_XID);
    createGC( xspc_win, &xspc_gc);
    createGC( xspc_win, &xspc_dot_gc);
    dash_list[0]= 1;
    dash_list[1]= 5;
    XSetLineAttributes(theDisp, xspc_dot_gc, 1, LineOnOffDash,
		       CapRound, JoinRound);
    createGC( xspc_win, &xspc_smdot_gc);
    XSetLineAttributes(theDisp, xspc_smdot_gc, 1, LineOnOffDash,
		       CapRound, JoinRound);
    XSetDashes(theDisp, xspc_smdot_gc,2,dash_list,2);
    panel= (Panel)xv_create(xspctrm_frame, PANEL,
	XV_X, 0, XV_Y, 0, XV_HEIGHT, 40,
	NULL);
    (void)xv_create(panel, PANEL_BUTTON,
	PANEL_LABEL_STRING, "Quit",
	PANEL_NOTIFY_PROC, close_xspctrm_win,
	NULL);
    (void)xv_create(panel, PANEL_BUTTON,
	PANEL_LABEL_STRING, "Redo",
	PANEL_NOTIFY_PROC, redo_xspctrm,
	NULL);
    (void)xv_create(panel, PANEL_BUTTON,
	PANEL_LABEL_STRING, "Next",
	PANEL_NOTIFY_PROC, next_xspctrm,
	NULL);
    menu= (Menu)xv_create(NULL,MENU,
	MENU_STRINGS,
		"Linear Scale", "Log-Linear Sc", "Log Scale",
		NULL,
	MENU_NOTIFY_PROC,   scale_menu_proc,
	NULL);
    (void)xv_create(panel, PANEL_BUTTON,
	PANEL_LABEL_STRING, "Scale",
	PANEL_ITEM_MENU, menu,
	NULL);
    menu= (Menu)xv_create(NULL,MENU,
	MENU_STRINGS,
		"trace portion", "no trace",
		"taper etc.", "no taper", "grid on", "grid off",
		NULL,
	MENU_NOTIFY_PROC,   options_menu_proc,
	NULL);
    (void)xv_create(panel, PANEL_BUTTON,
	PANEL_LABEL_STRING, "Options",
	PANEL_ITEM_MENU, menu,
	NULL);
    itrc_txt= (Panel_item)xv_create(panel, PANEL_NUMERIC_TEXT,
	PANEL_LABEL_STRING, "Trc No.",
	PANEL_VALUE_DISPLAY_WIDTH, 60,			  
	NULL);
    itrc2_txt= (Panel_item)xv_create(panel, PANEL_NUMERIC_TEXT,
	PANEL_LABEL_STRING, "Trc No.",
	PANEL_VALUE_DISPLAY_WIDTH, 60,			  
	NULL);
}