pkg://xltmix-1.1.tar.gz:26246/
xltmix-1.1/xltmix.h
downloads
/* $Header: /wwg/motif/xltmix/RCS/xltmix.h,v 1.1 1997/03/16 04:52:35 wwg Exp $
* Warren W. Gay VE3WWG Wed Mar 5 22:19:37 1997
*
* X LessTif Mix :
*
* Copyright (C) 1997 Warren W. Gay VE3WWG
*
* This program is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License as published by the
* Free Software Foundation version 2 of the License.
*
* This program is distributed in the hope that it will be useful, but
* WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General
* Public License for more details (see enclosed file COPYING).
*
* You should have received a copy of the GNU General Public License along
* with this program; if not, write to the Free Software Foundation, Inc.,
* 675 Mass Ave, Cambridge, MA 02139, USA.
*
* Send correspondance to:
*
* Warren W. Gay VE3WWG
* 5536 Montevideo Road #17
* Mississauga, Ontario L5N 2P4
*
* Email:
* wwg@ica.net (current ISP of the month :-) )
* bx249@freenet.toronto.on.ca (backup)
*
* $Log: xltmix.h,v $
* Revision 1.1 1997/03/16 04:52:35 wwg
* Initial revision
*
*/
#ifndef _xltmix_h_
#define _xltmix_h_ "@(#)xltmix.h $Revision: 1.1 $"
#ifndef DEV_BASE
#define DEV_BASE 0x220U /* Base port address */
#endif
#define DEV_INDX (DEV_BASE+4U) /* Mixer "index" port */
#define DEV_DATA (DEV_BASE+5U) /* Mixer "data" port */
/*
* This structure describes a single, or pair of scrollbars used as sliding
* mixer controls.
*/
typedef struct {
Widget Frame; /* Enclosing Frame */
Widget RC; /* Row/Column for label and scroll bar */
Widget Lbl; /* Label widget */
Widget RC2; /* Left + Right RowColumn */
Widget Left; /* Left scroll bar */
Widget Right; /* Right scroll bar */
int vLeft; /* Current value of the left slider */
int vRight; /* Current value of the right slider */
int max; /* Maximum value for these slider(s) */
unsigned xL; /* Left logical register index */
unsigned xR; /* Right logical register index */
} DevSliders;
/*
* This structure describes one toggle, its current value and
* associated mixer register if any.
*/
typedef struct {
Widget Toggle; /* The Toggle itself */
Boolean bSet; /* Its current setting */
short mixreg; /* -1, or logical mixer register */
char bits; /* Bit pattern if reg != -1 */
Boolean bOpposite; /* When True, use opposite logic sense */
} Tgl;
/*
* This toggle description structure is used by initialization
* and creation of the toggles only.
*/
typedef struct {
int mixreg; /* Mixer register (logical) */
char bits; /* Bit pattern */
Boolean bOpposite; /* When True, use opposite logic sense */
} TglDesc;
/*
* This structure describes a group of toggles.
*/
typedef struct {
Widget Frame; /* Toggle group's frame */
Widget RC1; /* Toggle group's outter Row/Col */
Widget RC2; /* Toggle group's inner Row/Col */
Widget Lbl; /* Group label */
int n; /* Number of toggles */
Tgl tgl[8]; /* Max 8 toggles */
} TglGroup;
/*
* External Callbacks:
*/
extern void AboutDlgOkCB(Widget w,XtPointer client_data,XtPointer call_data);
extern void AboutCB(Widget w,XtPointer client_data,XtPointer call_data);
extern void ExitCB(Widget w,XtPointer client_data,XtPointer call_data);
extern void ExitDlgCB(Widget w,XtPointer client_data,XtPointer call_data);
/*
* External routines:
*/
extern int MixInit(void);
extern void MixerClose(void);
extern unsigned MixGetReg(unsigned reg);
extern void MixPutReg(unsigned reg,unsigned b);
extern void EditVersionInit(void);
extern char *EditVersion(char *pString,char *pBuffer);
extern void CreateMenu(Widget wMenuBar,Widget *wPulldown,char *namePulldown,Widget *wCascade,char *nameCascade,...);
extern Widget CreateToggle(Widget wParent,char *class_name,Tgl *tgl,TglDesc *tdesc);
extern void CreateToggleGroup(Widget wParent,char *class_name,TglGroup *pTGrp,unsigned n,TglDesc *tdesc);
extern Widget CreateSliders(Widget parent,char *class,DevSliders *pSliders,short bStereo,int max,unsigned xL,unsigned xR);
extern void ReportError(const char *file,unsigned lno,const char *format,...);
/*
* These are the definitions of the _LOGICAL_ mixer registers. The physical
* groups of mixer registers are considerably fewer.
*/
#define MIXREG_RESET 0
#define MIXREG_NONE (MIXREG_RESET)
/*
* This group of compatibility registers are not used by this program
* because of their lower resolution (4 bits)
*/
#define MIXREG_VOICE_L4 1
#define MIXREG_VOICE_R4 2
#define MIXREG_MIC_4 3
#define MIXREG_MSTR_L4 4
#define MIXREG_MSTR_R4 5
#define MIXREG_MIDI_L4 6
#define MIXREG_MIDI_R4 7
#define MIXREG_CD_L4 8
#define MIXREG_CD_R4 9
#define MIXREG_LINE_L4 10
#define MIXREG_LINE_R4 11
/*
* These are the preferred registers for SB16 and SB32, since the volume
* settings have 5 bits.
*/
#define MIXREG_MSTR_L5 12
#define MIXREG_MSTR_R5 13
#define MIXREG_VOICE_L5 14
#define MIXREG_VOICE_R5 15
#define MIXREG_MIDI_L5 16
#define MIXREG_MIDI_R5 17
#define MIXREG_CD_L5 18
#define MIXREG_CD_R5 19
#define MIXREG_LINE_L5 20
#define MIXREG_LINE_R5 21
#define MIXREG_MIC_5 22
#define MIXREG_SPKR_2 23
#define MIXREG_OUTMIX_SW 24
#define MIXREG_INMIX_SW_L 25
#define MIXREG_INMIX_SW_R 26
#define MIXREG_IGAIN_L2 27
#define MIXREG_IGAIN_R2 28
#define MIXREG_OGAIN_L2 29
#define MIXREG_OGAIN_R2 30
#define MIXREG_AGC 31
#define MIXREG_TREBLE_L4 32
#define MIXREG_TREBLE_R4 33
#define MIXREG_BASS_L4 34
#define MIXREG_BASS_R4 35
/*
* xltmix.c externals
*/
extern char vers[];
extern int frame_margin;
extern Boolean bFatal;
extern Boolean bPortAccessFailed;
extern Boolean bPortInvalid;
extern char fatalMsg[];
extern Widget wParent;
extern XtAppContext aContext;
extern Widget wMain;
extern Widget wMain_RC1;
extern Widget wMain_RC2;
extern Widget wMenuBar;
extern Widget wFileMenuCascade;
extern Widget wFileMenu;
extern Widget wExit;
extern Widget wHelpMenuCascade;
extern Widget wHelpMenu;
extern Widget wAbout;
extern Widget wErrDlg;
extern XmString sErrDlgTitle;
extern Widget wAboutDlg;
extern XmString sAboutDlgTitle;
extern XmString sAboutDlgMessage;
extern Widget wDevFrame;
extern Widget wDevFrame_Lbl;
extern Widget wDevFrame_RC0;
extern Widget wDevFrame_RC1;
extern DevSliders devVoice;
extern DevSliders devMIDI;
extern DevSliders devCD;
extern DevSliders devLine;
extern Widget wMicSpk_RC;
extern DevSliders devMic;
extern DevSliders devSpk;
extern Widget wGainFrame;
extern Widget wGainFrame_Lbl;
extern Widget wGainFrame_RC0;
extern Widget wGainFrame_RC1;
extern DevSliders inpGain;
extern DevSliders outGain;
extern Widget wMctlFrame;
extern Widget wMctlFrame_Lbl;
extern Widget wMctlFrame_RC0;
extern Widget wMctlFrame_RC1;
extern DevSliders mctlVol;
extern DevSliders mctlTreble;
extern DevSliders mctlBass;
extern Widget wTgl_RC;
extern TglGroup gInpLeft;
extern TglGroup gInpRight;
extern TglGroup gControls;
extern TglGroup gOutput;
extern Widget *pwMUTE;
#endif /* _xltmix_h_ */
/* $Source: /wwg/motif/xltmix/RCS/xltmix.h,v $ */