⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ui_panel.c

📁 seismic software,very useful
💻 C
📖 第 1 页 / 共 3 页
字号:
/*user interface: permanent control panel plus various popup panels*/#include <Xm/DialogS.h>#include <Xm/Frame.h>#include <Xm/Label.h>#include <Xm/MainW.h>#include <Xm/PushB.h>#include <Xm/RowColumn.h>#include <Xm/Scale.h>#include <Xm/Separator.h>#include <Xm/TextF.h>#include <stdio.h>#include "main.h"#include "ui.h"#include "axis.h"#include "data.h"#include "map.h"#include "render.h"#include "view.h"#include "region.h"#include "pick.h"#include "movie.h"#include "color.h"#include "colorbar.h"extern UI ui;extern Message message;/********************************* CONTROL PANEL ******************************/#define	CS	XmStringCreateSimple/* label generator */#undef LABEL#define LABEL(name) \	 XtVaCreateManagedWidget (name,xmLabelWidgetClass,parent,NULL);/* button generator */#undef BUTTON#define	BUTTON(name,callback) {\	Widget widget;\	extern callback();\	widget = XtVaCreateManagedWidget (name,xmPushButtonWidgetClass,parent,NULL);\	XtAddCallback (widget,XmNactivateCallback,(XtCallbackProc)callback,NULL);\	}/* slider generator */#undef SLIDER#define	SLIDER(name,var,value,callback) {\	extern callback();\	if (name[0] != '\0') {\	XtVaCreateManagedWidget (name,xmLabelWidgetClass,parent,NULL);}\	ui->var = XtVaCreateManagedWidget (name,xmScaleWidgetClass,parent,\		XmNorientation, XmHORIZONTAL,\		XmNvalue, (int)(100*value),\		NULL);\	XtAddCallback (ui->var,XmNvalueChangedCallback,(XtCallbackProc)callback,NULL);\	}/* initialize controls */UIControlInit1 (parent)Widget parent;	{	Widget widget;	WidgetList list;	extern UIMovie(), UIDirection();	if (!ui) return;	/* control panel */	ui->control = XtVaCreateManagedWidget ("control1",xmRowColumnWidgetClass,parent,		XmNwidth, UI_WIDE,		/* controls laid out left to right */		XmNorientation, XmHORIZONTAL,		XmNpacking, XmPACK_TIGHT,		NULL);	parent = XtVaCreateManagedWidget ("frame",xmFrameWidgetClass,ui->control,NULL);       widget = XmVaCreateSimpleRadioBox (parent, "movie", 1,                (XtCallbackProc)UIMovie,		XmVaRADIOBUTTON, CS("GO"),NULL,NULL,NULL,		XmVaRADIOBUTTON, CS("NO"),NULL,NULL,NULL,		XmNorientation, XmHORIZONTAL,                NULL);	XtManageChild (widget);	XtManageChild (parent);	parent = XtVaCreateManagedWidget ("frame",xmFrameWidgetClass,ui->control,NULL);       widget = XmVaCreateSimpleRadioBox (parent, "dir", 0,                (XtCallbackProc)UIDirection,		XmVaRADIOBUTTON, CS("z"),NULL,NULL,NULL,		XmVaRADIOBUTTON, CS("Z"),NULL,NULL,NULL,		XmVaRADIOBUTTON, CS("<"),NULL,NULL,NULL,		XmVaRADIOBUTTON, CS(">"),NULL,NULL,NULL,		XmVaRADIOBUTTON, CS("^"),NULL,NULL,NULL,		XmVaRADIOBUTTON, CS("v"),NULL,NULL,NULL,		XmNorientation, XmHORIZONTAL,                NULL);	XtManageChild (widget);	XtManageChild (parent);	parent = ui->control;	SLIDER ("SPEED",speed,1.0,UISpeed);	}/* toggle movie */UIMovie (widget,item)Widget widget;int item;	{	static int toggle = 0;	toggle = 1 - toggle;	if (toggle) return;	switch (item) {	case 0: MovieOn(); break;	case 1: MovieOff(); break;		}	}/* toggle direction */UIDirection (widget,item)Widget widget;int item;	{	static int toggle = 0;	toggle = 1 - toggle;	if (toggle) return;	switch (item) {	case 4:		if (!View3D()) return;		ViewSetMovie (MOVIE_TOP);		MovieSetDir (MOVIE_REVERSE);		if (!MovieRun()) ViewDrawMovie ();		break;	case 5:		if (!View3D()) return;		ViewSetMovie (MOVIE_TOP);		MovieSetDir (MOVIE_FORWARD);		if (!MovieRun()) ViewDrawMovie ();		break;	case 2:		if (!View3D()) return;		ViewSetMovie (MOVIE_SIDE);		MovieSetDir (MOVIE_REVERSE);		if (!MovieRun()) ViewDrawMovie ();		break;	case 3:		if (!View3D()) return;		ViewSetMovie (MOVIE_SIDE);		MovieSetDir (MOVIE_FORWARD);		if (!MovieRun()) ViewDrawMovie ();		break;	case 0:		ViewSetMovie (MOVIE_FRONT);		MovieSetDir (MOVIE_REVERSE);		if (!MovieRun()) ViewDrawMovie ();		break;	case 1:		ViewSetMovie (MOVIE_FRONT);		MovieSetDir (MOVIE_FORWARD);		if (!MovieRun()) ViewDrawMovie ();		break;		}	}UIControlInit2 (parent)Widget parent;	{	if (!ui) return;	/* control panel */	ui->control = XtVaCreateManagedWidget ("control2",xmRowColumnWidgetClass,parent,		XmNwidth, UI_WIDE,		/* controls laid out left to right */		XmNorientation, XmHORIZONTAL,		XmNpacking, XmPACK_TIGHT,		NULL);	parent = ui->control;	SLIDER ("CONTRAST",contrast,0.5,UIContrast);	SLIDER ("CENTER",contrast0,0.5,UIContrast0);	BUTTON ("RESET",UIResetContrast);	}/* get toggle state */UIGetToggle (widget)Widget widget;	{	int state = 0;	XtVaGetValues (widget,XmNset,&state,NULL);	return (state);	}/* set toggle widget state */UIToggleSet (widget,state)Widget widget;int state;	{	XtVaSetValues (widget,XmNset,state,NULL);	}/* set slider widget value between 0 and 1 */UISetSlider (widget,value)Widget widget;float value;	{	XtVaSetValues (widget,XmNvalue,(int)(100*value),NULL);	}/* set slider widget value between 0 and 1 */UIGetSlider (widget)Widget widget;	{	int value = 0;	XtVaGetValues (widget,XmNvalue,&value,NULL);	return (value);	}/* speed slider callback */UISpeed (widget,client,data)Widget widget;XtPointer client;XmScaleCallbackStruct *data;	{	MovieSetSpeed (data->value);	}/* contrast slider callback */UIContrast (widget,client,data)Widget widget;XtPointer client;XmScaleCallbackStruct *data;	{	ColorSetContrast (data->value);	ColorSwitch ();	}UIContrast0 (widget,client,data)Widget widget;XtPointer client;XmScaleCallbackStruct *data;	{	ColorSetContrast0 (data->value);	ColorSwitch ();	}/* reset contrast */UIResetContrast ()	{	if (!ui) return;	ColorSetContrast (CONTRAST);	ColorSetContrast0 (CONTRAST0);	UISetSlider (ui->contrast,0.5);	UISetSlider (ui->contrast0,0.5);	ColorSwitch ();	}/********************************* SIZE PANEL ******************************//* bounds callback for array settings and sizing */UISizeRaise ()	{	UISizeInit ();	UISizeReset ();	XtPopup (ui->s_shell,XtGrabNone);	}/* initialize size control panel */UISizeInit ()	{	extern View view;	string svalue;	Widget widget, parent;	if (ui->s_shell) return;	ui->s_shell = XtVaCreatePopupShell ("size",xmDialogShellWidgetClass,ui->main,		XmNtitle, CS("SIZE PARAMETERS"),		NULL);	ui->s_base = XtVaCreateWidget ("s_base",xmRowColumnWidgetClass,ui->s_shell,		XmNnumColumns, 8,		XmNpacking, XmPACK_COLUMN,		XmNorientation, XmHORIZONTAL,		NULL);#undef LABEL#define	LABEL(name) XtVaCreateManagedWidget (name, xmLabelWidgetClass, parent,\		NULL);#undef LABEL1#define	LABEL1(name,var) ui->var = XtVaCreateManagedWidget (name, xmLabelWidgetClass, parent,\		NULL);#undef BUTTON#define BUTTON(name,callback) {\	Widget widget;\	extern callback();\	widget = XtVaCreateManagedWidget (name, xmPushButtonWidgetClass, parent, NULL);\	XtAddCallback (widget,XmNactivateCallback,(XtCallbackProc)callback,NULL);\	}#undef SLIDER#define	SLIDER(axis,var,var1) {\	Widget widget;\	extern UISizeSlider(), UISizeText();\	widget = XtVaCreateWidget ("slider", xmRowColumnWidgetClass, parent,\		XmNorientation, XmHORIZONTAL,\		NULL);\	ui->var = XtVaCreateManagedWidget ("var", xmScaleWidgetClass, widget,\		XmNshowValue, True,\		XmNorientation, XmHORIZONTAL,\		NULL);\	XtAddCallback (ui->var,XmNdragCallback,(XtCallbackProc)UISizeSlider,NULL);\	ui->var1 = XtVaCreateManagedWidget ("var1", xmTextFieldWidgetClass, widget,\		XmNcolumns, 6,\		NULL);\	XtAddCallback (ui->var1,XmNactivateCallback,(XtCallbackProc)UISizeText,NULL);\	XtManageChild (widget);\	ui->s_slist[ui->s_nslider] = ui->var;\	ui->s_vlist[ui->s_nslider] = ui->var1;\	ui->s_alist[ui->s_nslider] = axis;\	ui->s_nslider++;\		}	ui->s_nslider = 0;	parent = ui->s_base;	LABEL("SET SIZE:");	LABEL1("DOWN:n1",s_label[AXIS_DOWN]);	LABEL1("ACROSS:n2",s_label[AXIS_ACROSS]);	LABEL1("DEEP:n3",s_label[AXIS_DEEP]);	LABEL("MINIMUM");	SLIDER(AXIS_DOWN,s_mins[AXIS_DOWN],s_minv[AXIS_DOWN]);	SLIDER(AXIS_ACROSS,s_mins[AXIS_ACROSS],s_minv[AXIS_ACROSS]);	SLIDER(AXIS_DEEP,s_mins[AXIS_DEEP],s_minv[AXIS_DEEP]);	LABEL("MAXIMUM");	SLIDER(AXIS_DOWN,s_maxs[AXIS_DOWN],s_maxv[AXIS_DOWN]);	SLIDER(AXIS_ACROSS,s_maxs[AXIS_ACROSS],s_maxv[AXIS_ACROSS]);	SLIDER(AXIS_DEEP,s_maxs[AXIS_DEEP],s_maxv[AXIS_DEEP]);	LABEL("FRAME");	SLIDER(AXIS_DOWN,s_frames[AXIS_DOWN],s_framev[AXIS_DOWN]);	SLIDER(AXIS_ACROSS,s_frames[AXIS_ACROSS],s_framev[AXIS_ACROSS]);	SLIDER(AXIS_DEEP,s_frames[AXIS_DEEP],s_framev[AXIS_DEEP]);	LABEL("FRAME-INC");	SLIDER(AXIS_DOWN,s_dframes[AXIS_DOWN],s_dframev[AXIS_DOWN]);	SLIDER(AXIS_ACROSS,s_dframes[AXIS_ACROSS],s_dframev[AXIS_ACROSS]);	SLIDER(AXIS_DEEP,s_dframes[AXIS_DEEP],s_dframev[AXIS_DEEP]);	LABEL("PIXELS");	SLIDER(NO_INDEX,s_sizes[AXIS_DOWN],s_sizev[AXIS_DOWN]);	SLIDER(NO_INDEX,s_sizes[AXIS_ACROSS],s_sizev[AXIS_ACROSS]);	SLIDER(NO_INDEX,s_sizes[AXIS_DEEP],s_sizev[AXIS_DEEP]);	BUTTON("EXECUTE SETTINGS",UISizeDraw);	BUTTON("CURRENT SETTINGS",UISizeReset);	BUTTON("INITIAL SETTINGS",UISizeInitial);	BUTTON("CLOSE",UISizeClose);	XtManageChild (ui->s_base);	}/* size control panel draw callback */UISizeDraw ()	{	int imap, first, last, frame, dframe, size;	extern View view;	for (imap=1; imap<4; imap++) {		XtVaGetValues (ui->s_mins[imap],XmNvalue,&first,NULL);		XtVaGetValues (ui->s_maxs[imap],XmNvalue,&last,NULL);		XtVaGetValues (ui->s_frames[imap],XmNvalue,&frame,NULL);		XtVaGetValues (ui->s_dframes[imap],XmNvalue,&dframe,NULL);		XtVaGetValues (ui->s_sizes[imap],XmNvalue,&size,NULL);		MapSet (ViewMap(view,imap),MapAxis(ViewMap(view,imap)),size,first,last,first,last,dframe);		MapSetFrame (ViewMap(view,imap),frame);		}	ViewDrawAll();	}/* set size control panel to current image values */UISizeReset ()	{	int imap, islider;	extern View view;	string svalue;	if (!ui->s_shell) return;	for (imap=1; imap<4; imap++) {		sprintf (svalue,"%s:%s",MapName(ViewMap(view,imap)),AxisLabel(MapAxis(ViewMap(view,imap))));		XtVaSetValues (ui->s_label[imap],XmNlabelString,CS(svalue),			NULL);		XtVaSetValues (ui->s_mins[imap],XmNmaximum,AxisSize(MapAxis(ViewMap(view,imap)))-1,			XmNvalue, MapFirst(ViewMap(view,imap)),			NULL);		XtVaSetValues (ui->s_maxs[imap],XmNmaximum,AxisSize(MapAxis(ViewMap(view,imap)))-1,			XmNvalue, MapLast(ViewMap(view,imap)),			NULL);		XtVaSetValues (ui->s_frames[imap],XmNmaximum,AxisSize(MapAxis(ViewMap(view,imap)))-1,			XmNvalue, MapFrame(ViewMap(view,imap)),			NULL);		XtVaSetValues (ui->s_dframes[imap],XmNminimum,1,			XmNmaximum,100,			XmNvalue, MapDmovie(ViewMap(view,imap)),			NULL);		XtVaSetValues (ui->s_sizes[imap],XmNminimum,16,			XmNmaximum,1000,			XmNvalue,MapSize(ViewMap(view,imap)),			NULL);		}	for (islider=0; islider<ui->s_nslider; islider++) {		UISizeSlider (ui->s_slist[islider]);		}	}/* set size control panel to initial size values */UISizeInitial ()	{	int imap, islider;	extern View view;	if (!ui->s_shell) return;	for (imap=1; imap<4; imap++) {		XtVaSetValues (ui->s_mins[imap],XmNvalue,0,NULL);		XtVaSetValues (ui->s_maxs[imap],XmNvalue,AxisSize(MapAxis(ViewMap(view,imap)))-1,NULL);		XtVaSetValues (ui->s_frames[imap],XmNvalue,0,NULL);		}	for (islider=0; islider<ui->s_nslider; islider++) {		UISizeSlider (ui->s_slist[islider]);		}	}/* close size control panel */UISizeClose ()	{	XtPopdown (ui->s_shell);

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -