📄 meter.c
字号:
/* * This material contains unpublished, proprietary software of * Entropic Research Laboratory, Inc. Any reproduction, distribution, * or publication of this work must be authorized in writing by Entropic * Research Laboratory, Inc., and must bear the notice: * * "Copyright (c) 1990-1993 Entropic Research Laboratory, Inc. * All rights reserved" * * The copyright notice above does not evidence any actual or intended * publication of this source code. * * Written by: Derek Lin * Checked by: * Revised by: * * Brief description: A front-end record control panel for ESPS record programs * */static char *sccs_id = "@(#)meter.c 1.4 1/7/94 ERL";#include <stdio.h>#include <math.h>#include <sys/types.h>#include <X11/IntrinsicP.h>#include <X11/StringDefs.h>#include <Xm/Label.h>#include <Xm/Form.h>#include <Xm/RowColumn.h>#include <Xm/PushB.h>#include <Xm/ToggleB.h>#include "Bar.h"#include <esps/esps.h>#include <esps/feasd.h>#include <esps/fea.h>#define SYNTAX USAGE("meter [-i update_time] [-c RC_const] [-s] [-m] [-r] [-z] [-] outfile")#define TIMEOUT 0.1 /* time out inverval in seconds */#define TIME_DC 20 /* DC level is computed from TIME_DC * TIMEOUT sec *//* tag messages */#define MRecording "Recording...."#define MNot_Recording " "#define MPause "pause"#define MResume "resume"#define MRestart "Re-start"#define MStart "Start"#define MQuit "Stop/Quit"int debug_level = 0;void get_input();static float *find_max();static void do_dc_offset();double log10();/* callback list */static void start_record();static void pause_resume();static void quit();static void dc_offset_onoff();static void meter_onoff();static void dc_read_onoff();/* global variables */static int START = False;static int RESTART = False;static int PAUSE = True;static int DC_OFFSET = False;static int METER = True;static int METER_READOUT = True;static int QUIT = False;static float INTERVAL = 0.1;static Widget Bar[2];Widget dbval_label[2];Widget startB, pauseB, quitB, rc_label;XmFontList myfontlist; /*need be accessed in other */XmFontList myfontlist2;char *outfilename;int magic = 0;main(argc, argv) int argc; char *argv[];{ Widget toplevel; Widget backdrop, formM, rcpush, rctog, formB, formR; Widget ch_label[2]; Widget chanT, chTb1, chTb2, dc_offB, meterB, dc_readB; Arg wargs[10]; int n; XmString mystring; Dimension label_w, label_h; /* label */ Dimension met_w, met_h; Dimension tmpd; XFontStruct *font1, *font2; char c; float RC = -0.1; extern int optind; extern char *optarg; while((c=getopt(argc,argv,"i:c:smrz"))!= EOF){ switch(c){ case 'i': INTERVAL = atof(optarg); break; case 'c': RC = -1 * (float) atof(optarg); if(RC > 0) { fprintf(stderr,"meter: -c argument must be positive - exiting\n"); exit(1); } break; case 's': DC_OFFSET = True; break; case 'm': METER = False; break; case 'r': METER_READOUT = False; break; case 'z': magic = 1; break; default: SYNTAX; } } if( argc <= 1) SYNTAX; outfilename = argv[argc - 1]; if( 0==strcmp(argv[argc-2], "-")) argv[argc-2] = "a"; toplevel = XtInitialize( argv[0], "Meter", NULL, 0, &argc, argv); font1 = XLoadQueryFont(XtDisplay(toplevel), "-adobe-helvetica-medium-r-normal--14-140-75-75-p-77-iso8859-1"); myfontlist = XmFontListCreate(font1, "chset1"); font2 = XLoadQueryFont(XtDisplay(toplevel), "-adobe-utopia-bold-i-normal--15-140-75-75-p-82-iso8859-1"); myfontlist2 = XmFontListCreate(font2, "chset2"); n = 0; XtSetArg( wargs[n], XmNx, 100); n++; XtSetArg( wargs[n], XmNy, 100); n++; XtSetArg( wargs[n], XmNresizable, False); n++; backdrop = XtCreateManagedWidget("backdrop", xmFormWidgetClass, toplevel, wargs, n); n = 0; XtSetArg( wargs[n], XmNtopAttachment, XmATTACH_FORM); n++; XtSetArg( wargs[n], XmNleftAttachment, XmATTACH_FORM); n++; XtSetArg( wargs[n], XmNbottomAttachment, XmATTACH_FORM); n++; formB = XtCreateManagedWidget("formB", xmFormWidgetClass, backdrop, wargs, n); n = 0; XtSetArg( wargs[n], XmNorientation, XmVERTICAL); n++; XtSetArg( wargs[n], XmNnumColumns, 1); n++; XtSetArg( wargs[n], XmNspacing, 5); n++; rcpush = XtCreateManagedWidget("rcpush", xmRowColumnWidgetClass, formB, wargs, n); n = 0; mystring = XmStringCreateLtoR(MStart, "chset1"); XtSetArg( wargs[n], XmNshadowThickness, 5); n++; XtSetArg( wargs[n], XmNfontList, myfontlist); n++; XtSetArg( wargs[n], XmNlabelString, mystring); n++; startB = XtCreateManagedWidget("startB", xmPushButtonWidgetClass, rcpush, wargs, n); XmStringFree(mystring); XtAddCallback(startB, XmNactivateCallback, start_record, NULL); n = 0; mystring = XmStringCreateLtoR(MPause, "chset1"); XtSetArg( wargs[n], XmNshadowThickness, 5); n++; XtSetArg( wargs[n], XmNfontList, myfontlist); n++; XtSetArg( wargs[n], XmNlabelString, mystring); n++; XtSetArg( wargs[n], XmNsensitive, False); n++; pauseB = XtCreateManagedWidget("pauseB", xmPushButtonWidgetClass, rcpush, wargs, n); XmStringFree(mystring); XtAddCallback(pauseB, XmNactivateCallback, pause_resume, NULL); mystring = XmStringCreateLtoR("dc-offset", "chset1"); n = 0; XtSetArg( wargs[n], XmNfontList, myfontlist); n++; XtSetArg( wargs[n], XmNlabelString, mystring); n++; XtSetArg( wargs[n], XmNshadowThickness, 0); n++; XtSetArg( wargs[n], XmNset, DC_OFFSET); n++; dc_offB = XmCreateToggleButton(rcpush, "dc_offB", wargs, n); XtAddCallback(dc_offB, XmNarmCallback, dc_offset_onoff, NULL); XtManageChild(dc_offB); XmStringFree(mystring); mystring = XmStringCreateLtoR("Meter", "chset1"); n = 0; XtSetArg( wargs[n], XmNfontList, myfontlist); n++; XtSetArg( wargs[n], XmNlabelString, mystring); n++; XtSetArg( wargs[n], XmNshadowThickness, 0); n++; XtSetArg( wargs[n], XmNset, METER); n++; meterB = XmCreateToggleButton(rcpush, "meterB", wargs, n); XtAddCallback(meterB, XmNarmCallback, meter_onoff, NULL); XtManageChild(meterB); XmStringFree(mystring); mystring = XmStringCreateLtoR("Meter dB readout", "chset1"); n = 0; XtSetArg( wargs[n], XmNfontList, myfontlist); n++; XtSetArg( wargs[n], XmNlabelString, mystring); n++; XtSetArg( wargs[n], XmNshadowThickness, 0); n++; XtSetArg( wargs[n], XmNset, METER_READOUT); n++; dc_readB = XmCreateToggleButton(rcpush, "dc_readB", wargs, n); XtAddCallback(dc_readB, XmNarmCallback, dc_read_onoff, NULL); XtManageChild(dc_readB); XmStringFree(mystring); n = 0; mystring = XmStringCreateLtoR(MQuit, "chset1"); XtSetArg( wargs[n], XmNshadowThickness, 5); n++; XtSetArg( wargs[n], XmNfontList, myfontlist); n++; XtSetArg( wargs[n], XmNlabelString, mystring); n++; quitB = XtCreateManagedWidget("quitB", xmPushButtonWidgetClass, rcpush, wargs, n); XmStringFree(mystring); XtAddCallback(quitB, XmNactivateCallback, quit, NULL); n = 0; XtSetArg( wargs[n], XmNtopAttachment, XmATTACH_FORM); n++; XtSetArg( wargs[n], XmNtopPosition, 10); n++; XtSetArg( wargs[n], XmNleftAttachment, XmATTACH_WIDGET); n++; XtSetArg( wargs[n], XmNleftWidget, formB); n++; XtSetArg( wargs[n], XmNleftOffset, 20); n++; formM = XtCreateManagedWidget("formM", xmFormWidgetClass, backdrop, wargs, n); mystring = XmStringCreateLtoR("Chan. 1", "chset1"); n = 0; XtSetArg( wargs[n], XmNfontList, myfontlist); n++; XtSetArg( wargs[n], XmNlabelString, mystring); n++; XtSetArg( wargs[n], XmNmarginBottom, 6); n++; XtSetArg( wargs[n], XmNtopAttachment, XmATTACH_FORM); n++; XtSetArg( wargs[n], XmNleftAttachment, XmATTACH_FORM); n++; ch_label[0] = XtCreateManagedWidget("label", xmLabelWidgetClass, formM, wargs,n); XmStringFree(mystring); mystring = XmStringCreateLtoR("Chan. 2", "chset1"); n = 0; XtSetArg( wargs[n], XmNfontList, myfontlist); n++; XtSetArg( wargs[n], XmNlabelString, mystring); n++; XtSetArg( wargs[n], XmNmarginBottom, 6); n++; XtSetArg( wargs[n], XmNleftAttachment, XmATTACH_WIDGET); n++; XtSetArg( wargs[n], XmNleftOffset, 10); n++; XtSetArg( wargs[n], XmNleftWidget, ch_label[0]); n++; ch_label[1] = XtCreateManagedWidget("label", xmLabelWidgetClass, formM, wargs,n); XmStringFree(mystring); n = 0; XtSetArg( wargs[n], XtNwidth, &label_w); n++; XtSetArg( wargs[n], XtNheight, &label_h); n++; XtGetValues(ch_label[0], wargs, n); met_w = 15; met_h = 150; n = 0; XtSetArg( wargs[n], XmNheight, met_h); n++; XtSetArg( wargs[n], XmNwidth, met_w); n++; XtSetArg( wargs[n], XmNtopAttachment, XmATTACH_WIDGET); n++; XtSetArg( wargs[n], XmNtopWidget, ch_label[0]); n++; tmpd = (Dimension ) (label_w/2) - (met_w/2); XtSetArg( wargs[n], XmNleftOffset, tmpd); n++; XtSetArg( wargs[n], XmNleftAttachment, XmATTACH_FORM); n++; XtSetArg( wargs[n], XtNconstRC, &RC); n++; XtSetArg( wargs[n], XtNintv, &INTERVAL); n++; Bar[0] = XtCreateManagedWidget("bar", XebarWidgetClass, formM, wargs, n); n = 0; XtSetArg( wargs[n], XmNheight, met_h); n++; XtSetArg( wargs[n], XmNwidth, met_w); n++; XtSetArg( wargs[n], XmNtopAttachment, XmATTACH_WIDGET); n++; XtSetArg( wargs[n], XmNtopWidget, ch_label[1]); n++; tmpd = (Dimension ) (label_w/2) - (met_w/2); XtSetArg( wargs[n], XmNrightOffset, tmpd); n++; XtSetArg( wargs[n], XmNrightAttachment, XmATTACH_FORM); n++; XtSetArg( wargs[n], XtNconstRC, &RC); n++; XtSetArg( wargs[n], XtNintv, &INTERVAL); n++; Bar[1] = XtCreateManagedWidget("bar", XebarWidgetClass, formM, wargs, n); mystring = XmStringCreateLtoR("0", "chset1"); n = 0; XtSetArg( wargs[n], XmNfontList, myfontlist); n++; XtSetArg( wargs[n], XmNlabelString, mystring); n++; XtSetArg( wargs[n], XmNmarginBottom, 6); n++; XtSetArg( wargs[n], XmNmarginTop, 6); n++; XtSetArg( wargs[n], XmNalignment, XmALIGNMENT_END); n++; XtSetArg( wargs[n], XmNrightAttachment, XmATTACH_OPPOSITE_WIDGET); n++; XtSetArg( wargs[n], XmNrightWidget, Bar[0]); n++; XtSetArg( wargs[n], XmNtopAttachment, XmATTACH_WIDGET); n++; XtSetArg( wargs[n], XmNtopWidget, Bar[0]); n++; dbval_label[0] = XtCreateManagedWidget("label", xmLabelWidgetClass, formM, wargs,n); XmStringFree(mystring); mystring = XmStringCreateLtoR("0", "chset1"); n = 0; XtSetArg( wargs[n], XmNfontList, myfontlist); n++; XtSetArg( wargs[n], XmNlabelString, mystring); n++; XtSetArg( wargs[n], XmNmarginBottom, 6); n++; XtSetArg( wargs[n], XmNmarginTop, 6); n++; XtSetArg( wargs[n], XmNalignment, XmALIGNMENT_END); n++; XtSetArg( wargs[n], XmNrightAttachment, XmATTACH_OPPOSITE_WIDGET); n++; XtSetArg( wargs[n], XmNrightWidget, Bar[1]); n++; XtSetArg( wargs[n], XmNtopAttachment, XmATTACH_WIDGET); n++; XtSetArg( wargs[n], XmNtopWidget, Bar[1]); n++; dbval_label[1] = XtCreateManagedWidget("label", xmLabelWidgetClass, formM, wargs,n); XmStringFree(mystring); mystring = XmStringCreateLtoR(MNot_Recording, "chset2"); n = 0; XtSetArg( wargs[n], XmNfontList, myfontlist2); n++; XtSetArg( wargs[n], XmNlabelString, mystring); n++; XtSetArg( wargs[n], XmNmarginBottom, 6); n++; XtSetArg( wargs[n], XmNtopAttachment, XmATTACH_WIDGET); n++; XtSetArg( wargs[n], XmNtopOffset, 5); n++; XtSetArg( wargs[n], XmNtopWidget, dbval_label[0]); n++; XtSetArg( wargs[n], XmNbottomAttachment, XmATTACH_FORM); n++; XtSetArg( wargs[n], XmNbottomOffset, 10); n++; rc_label = XtCreateManagedWidget("rc_label", xmLabelWidgetClass, formM, wargs,n); XmStringFree(mystring);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -