📄 ui_panel.c
字号:
double atof(); int i, daxis, dtics; XtVaGetValues (ui->l_title,XmNvalue,&svalue,NULL); strcpy (data->title,svalue); for (i=0; i<4; i++) { daxis = 0; dtics = 0; XtVaGetValues (ui->l_label[i],XmNvalue,&svalue,NULL); strcpy (view->map[i]->axis->label,svalue); XtVaGetValues (ui->l_first[i],XmNvalue,&svalue,NULL); if (view->map[i]->axis->first != atof(svalue)) { view->map[i]->axis->first = atof(svalue); daxis = 1; } XtVaGetValues (ui->l_delta[i],XmNvalue,&svalue,NULL); if (view->map[i]->axis->delta != atof(svalue)) { view->map[i]->axis->delta = atof(svalue); daxis = 1; } XtVaGetValues (ui->l_tic0[i],XmNvalue,&svalue,NULL); if (view->map[i]->tic0 != atof(svalue)) { view->map[i]->tic0 = atof(svalue); dtics = 1; } XtVaGetValues (ui->l_dtic[i],XmNvalue,&svalue,NULL); if (view->map[i]->dtic != atof(svalue)) { view->map[i]->dtic = atof(svalue); dtics = 1; } XtVaGetValues (ui->l_tic2[i],XmNvalue,&svalue,NULL); if (view->map[i]->tic2 != atof(svalue)) { view->map[i]->tic2 = atof(svalue); dtics = 1; } if (daxis) { AxisSetValues (view->map[i]->axis); MapSetTics (view->map[i]); } } ViewDrawAll (); ColorbarDraw (); UILabelReset (); }UILabelClose () { XtPopdown (ui->l_shell); }/********************************* TRANSPARENT PANEL ******************************//* initialize transparency control panel */UITranspInit () { Widget widget, parent; extern UITranspLow(), UITranspHigh(), UITranspGradient(); extern UITranspRate(), ViewDrawAll(), UITranspClose(); if (ui->t_shell) return; ui->t_shell = XtVaCreatePopupShell ("transparent",xmDialogShellWidgetClass,ui->main, XmNtitle, CS("TRANSPARANCY PARAMETERS"), NULL); ui->t_base = XtVaCreateWidget ("base",xmRowColumnWidgetClass,ui->t_shell, XmNorientation, XmVERTICAL, NULL); XtVaCreateManagedWidget ("TRANSP PARAMETERS:",xmLabelWidgetClass,ui->t_base,NULL); widget = XtVaCreateManagedWidget ("low_transp",xmScaleWidgetClass,ui->t_base, XmNvalue, RENDER_LOW_TRANSP, XmNshowValue, True, XmNtitleString, CS("MIN TRANSPARENCY"), XmNorientation, XmHORIZONTAL, NULL); XtAddCallback (widget,XmNvalueChangedCallback,(XtCallbackProc)UITranspLow,NULL); widget = XtVaCreateManagedWidget ("high_transp",xmScaleWidgetClass,ui->t_base, XmNvalue, RENDER_HIGH_TRANSP, XmNshowValue, True, XmNtitleString, CS("MAX TRANSPARENCY"), XmNorientation, XmHORIZONTAL, NULL); XtAddCallback (widget,XmNvalueChangedCallback,(XtCallbackProc)UITranspHigh,NULL); widget = XtVaCreateManagedWidget ("vol_transp",xmScaleWidgetClass,ui->t_base, XmNvalue, RENDER_VOL_TRANSP, XmNshowValue, True, XmNtitleString, CS("TRANSPARENCY"), XmNorientation, XmHORIZONTAL, NULL); XtAddCallback (widget,XmNvalueChangedCallback,(XtCallbackProc)UITranspGradient,NULL); widget = XmVaCreateSimpleRadioBox (ui->t_base, "rate",1,(XtCallbackProc)UITranspRate, XmVaRADIOBUTTON, CS("Draw Altogether"), NULL, NULL, NULL, XmVaRADIOBUTTON, CS("Draw Tenth Chunks"), NULL, NULL, NULL, XmVaRADIOBUTTON, CS("Draw Each Plane"), NULL, NULL, NULL, NULL); XtManageChild (widget); XtVaCreateManagedWidget ("line",xmSeparatorWidgetClass, ui->t_base, NULL); widget = XtVaCreateManagedWidget ("DRAW", xmPushButtonWidgetClass, ui->t_base, NULL); XtAddCallback (widget,XmNactivateCallback,(XtCallbackProc)ViewDrawAll,NULL); widget = XtVaCreateManagedWidget ("CLOSE", xmPushButtonWidgetClass, ui->t_base, NULL); XtAddCallback (widget,XmNactivateCallback,(XtCallbackProc)UITranspClose,NULL); XtManageChild (ui->t_base); XtManageChild (ui->t_shell); }UITranspRaise () { UITranspInit (); ui->shell = ui->t_shell; XtPopup (ui->t_shell,XtGrabNone); }UITranspClose () { XtPopdown (ui->t_shell); ui->shell = 0; }UITranspLow (widget,client,data)Widget widget;XtPointer client;XmScaleCallbackStruct *data; { RenderSetLow (data->value); }UITranspHigh (widget,client,data)Widget widget;XtPointer client;XmScaleCallbackStruct *data; { RenderSetHigh (data->value); }UITranspGradient (widget,client,data)Widget widget;XtPointer client;XmScaleCallbackStruct *data; { RenderSetGradient (data->value); }UITranspRate (widget,item)Widget widget;int item; { ViewSetTranspRate (item); }UIFenceInit () { Widget widget; extern UIFenceOpacity(), UIFenceFront(), UIFenceSide(), UIFenceTop(); extern ViewDrawAll(), UIFenceClose(); if (ui->f_shell) return; ui->f_shell = XtVaCreatePopupShell ("fence",xmDialogShellWidgetClass,ui->main, XmNtitle, CS("FENCE PARAMETERS"), NULL); ui->f_base = XtVaCreateWidget ("base",xmRowColumnWidgetClass,ui->f_shell, XmNorientation, XmVERTICAL, NULL); XtVaCreateManagedWidget ("FENCE PARAMETERS:",xmLabelWidgetClass,ui->f_base,NULL); widget = XtVaCreateManagedWidget ("TOGGLE FRONT", xmPushButtonWidgetClass, ui->f_base, NULL); XtAddCallback (widget,XmNactivateCallback,(XtCallbackProc)UIFenceFront,NULL); widget = XtVaCreateManagedWidget ("TOGGLE SIDE", xmPushButtonWidgetClass, ui->f_base, NULL); XtAddCallback (widget,XmNactivateCallback,(XtCallbackProc)UIFenceSide,NULL); widget = XtVaCreateManagedWidget ("TOGGLE TOP", xmPushButtonWidgetClass, ui->f_base, NULL); XtAddCallback (widget,XmNactivateCallback,(XtCallbackProc)UIFenceTop,NULL); widget = XtVaCreateManagedWidget ("transp",xmScaleWidgetClass,ui->f_base, XmNorientation, XmHORIZONTAL, XmNvalue, 0, XmNtitleString, CS("TRANSPARENCY"), XmNshowValue, True, NULL); XtAddCallback (widget,XmNvalueChangedCallback,(XtCallbackProc)UIFenceOpacity,NULL); XtVaCreateManagedWidget ("line",xmSeparatorWidgetClass, ui->f_base, NULL); widget = XtVaCreateManagedWidget ("DRAW", xmPushButtonWidgetClass, ui->f_base, NULL); XtAddCallback (widget,XmNactivateCallback,(XtCallbackProc)ViewDrawAll,NULL); widget = XtVaCreateManagedWidget ("CLOSE", xmPushButtonWidgetClass, ui->f_base, NULL); XtAddCallback (widget,XmNactivateCallback,(XtCallbackProc)UIFenceClose,NULL); XtManageChild (ui->f_base); XtManageChild (ui->f_shell); }UIFenceRaise () { UIFenceInit (); ui->shell = ui->f_shell; XtPopup (ui->f_shell,XtGrabNone); }UIFenceClose () { XtPopdown (ui->f_shell); ui->shell = 0; }UIFenceFront () { ViewToggleFence(DRAW_FRONT); }UIFenceSide () { ViewToggleFence(DRAW_SIDE); }UIFenceTop () { ViewToggleFence(DRAW_TOP); }UIFenceOpacity (widget,client,data)Widget widget;XtPointer client;XmScaleCallbackStruct *data; { RenderSetFenceTransp (data->value); }UIInfoInit () { Widget widget; extern int UIInfoClose(); extern char *help; ui->i_shell = XtVaCreatePopupShell ("text",xmDialogShellWidgetClass,ui->main, XmNtitle, CS("HELP INFOMATION"), NULL); ui->i_base = XtVaCreateWidget ("base", xmRowColumnWidgetClass,ui->i_shell, XmNorientation, XmVERTICAL, NULL); XtVaCreateManagedWidget ("HELP INFORMATION:",xmLabelWidgetClass,ui->i_base,NULL); ui->i_text = XmCreateScrolledText (ui->i_base, "textw", NULL, NULL); XtVaSetValues (ui->i_text, XmNvalue, help, XmNcolumns, 80, XmNrows, 30, XmNeditMode, XmMULTI_LINE_EDIT, XmNeditable, False, NULL); XtManageChild (ui->i_text); XtVaCreateManagedWidget ("line", xmSeparatorWidgetClass, ui->i_base,NULL); widget = XtVaCreateManagedWidget ("CLOSE", xmPushButtonWidgetClass, ui->i_base, NULL); XtAddCallback (widget,XmNactivateCallback,(XtCallbackProc)UIInfoClose,NULL); XtManageChild (ui->i_base); XtManageChild (ui->i_shell); }UIInfo (text)char *text; { extern char *help; if (ui->i_shell == 0) UIInfoInit (); DrawWatch (1); XtVaSetValues (ui->i_text,XmNtopCharacter,(int)(text-help),NULL); XtPopup (ui->i_shell,XtGrabNone); DrawWatch (0); }UIInfoClose () { XtPopdown (ui->i_shell); }UISyzeRaise () { UISyzeInit (); UISyzeReset (); XtPopup (ui->z_shell,XtGrabNone); }UISyzeInit () { Widget parent; if (ui->z_shell) return; ui->z_shell = XtVaCreatePopupShell ("syze",xmDialogShellWidgetClass,ui->main, XmNtitle, CS("SIZE PARAMETERS"), NULL); ui->z_base = XtVaCreateWidget ("z_base",xmRowColumnWidgetClass,ui->z_shell, XmNorientation, XmVERTICAL, NULL);#undef LABEL#define LABEL(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(name,var) \ ui->var = XtVaCreateManagedWidget (name, xmScaleWidgetClass, parent,\ XmNtitleString, CS(name),\ XmNwidth, 250,\ XmNshowValue, True,\ XmNorientation, XmHORIZONTAL,\ NULL); parent = ui->z_base; SLIDER("DOWN: min",z_min[AXIS_DOWN]); SLIDER("DOWN: max",z_max[AXIS_DOWN]); SLIDER("DOWN: frame",z_frame[AXIS_DOWN]); SLIDER("DOWN: pixels",z_pixels[AXIS_DOWN]); XtVaCreateManagedWidget ("line", xmSeparatorWidgetClass, ui->z_base,NULL); SLIDER("ACROSS: min",z_min[AXIS_ACROSS]); SLIDER("ACROSS: max",z_max[AXIS_ACROSS]); SLIDER("ACROSS: frame",z_frame[AXIS_ACROSS]); SLIDER("ACROSS: pixels",z_pixels[AXIS_ACROSS]); XtVaCreateManagedWidget ("line", xmSeparatorWidgetClass, ui->z_base,NULL); SLIDER("DEEP: min",z_min[AXIS_DEEP]); SLIDER("DEEP: max",z_max[AXIS_DEEP]); SLIDER("DEEP: frame",z_frame[AXIS_DEEP]); SLIDER("DEEP: pixels",z_pixels[AXIS_DEEP]); XtVaCreateManagedWidget ("line", xmSeparatorWidgetClass, ui->z_base,NULL); BUTTON("DRAW",UISyzeDraw); BUTTON("RESTORE",UISyzeReset); BUTTON("INITIAL",UISyzeInitial); BUTTON("CLOSE",UISyzeClose); XtManageChild (ui->z_base); }UISyzeReset () { int imap; extern View view; Map map; Axis axis; string svalue; if (!ui->z_shell) return; for (imap=1; imap<4; imap++) { map = ViewMap(view,imap); axis = MapAxis(map); sprintf (svalue,"%s:%s:MINIMUM",MapName(map),AxisLabel(axis)); XtVaSetValues (ui->z_min[imap],/* XmNtitleString, CS(svalue),*/ XmNdecimalPoints, AxisPrec(axis), XmNminimum, AxisScaledValue(axis,0), XmNmaximum, AxisScaledValue(axis,AxisSize(axis)-1), XmNvalue, AxisScaledValue(axis,map->first), NULL); sprintf (svalue,"%s:%s:MAXIMUM",MapName(map),AxisLabel(axis)); XtVaSetValues (ui->z_max[imap],/* XmNtitleString, CS(svalue),*/ XmNdecimalPoints, AxisPrec(axis), XmNminimum, AxisScaledValue(axis,0), XmNmaximum, AxisScaledValue(axis,AxisSize(axis)-1), XmNvalue, AxisScaledValue(axis,map->last), NULL); sprintf (svalue,"%s:%s:FRAME",MapName(map),AxisLabel(axis)); XtVaSetValues (ui->z_frame[imap],/* XmNtitleString, CS(svalue),*/ XmNdecimalPoints, AxisPrec(axis), XmNminimum, AxisScaledValue(axis,0), XmNmaximum, AxisScaledValue(axis,AxisSize(axis)-1), XmNvalue, AxisScaledValue(axis,map->frame), NULL); sprintf (svalue,"%s:%s:PIXELS",MapName(map),AxisLabel(axis)); XtVaSetValues (ui->z_pixels[imap],/* XmNtitleString, CS(svalue),*/ XmNminimum, 1, XmNmaximum, 1000, XmNvalue, MapSize(map), NULL); } }UISyzeClose () { XtPopdown (ui->z_shell); }UISyzeInitial () { int imap; extern View view; Axis axis; if (!ui->z_shell) return; for (imap=1; imap<4; imap++) { axis = MapAxis(ViewMap(view,imap)); XtVaSetValues (ui->z_min[imap],XmNvalue,AxisScaledValue(axis,0),NULL); XtVaSetValues (ui->z_max[imap],XmNvalue,AxisScaledValue(axis,AxisSize(axis)-1),NULL); XtVaSetValues (ui->z_frame[imap],XmNvalue,AxisScaledValue(axis,0),NULL); } } UISyzeDraw () { int imap, min, max, frame, pixels; extern View view; Map map; Axis axis; for (imap=1; imap<4; imap++) { XtVaGetValues (ui->z_min[imap],XmNvalue,&min,NULL); XtVaGetValues (ui->z_max[imap],XmNvalue,&max,NULL); XtVaGetValues (ui->z_frame[imap],XmNvalue,&frame,NULL); XtVaGetValues (ui->z_pixels[imap],XmNvalue,&pixels,NULL); map = ViewMap (view,imap); axis = MapAxis (map); MapSet (map, axis, pixels, AxisScaledIndex (axis,min), AxisScaledIndex (axis,max), AxisScaledIndex (axis,min), AxisScaledIndex (axis,max), map->dframe); MapSetFrame (map,AxisScaledIndex (axis,frame)); } ViewDrawAll (); }
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -