|
|
1.1 ! root 1: /* ! 2: Hatari - dlgSound.c ! 3: ! 4: This file is distributed under the GNU Public License, version 2 or at ! 5: your option any later version. Read the file gpl.txt for details. ! 6: */ ! 7: char DlgSound_rcsid[] = "Hatari $Id: dlgSound.c,v 1.3 2003/12/25 14:19:39 thothy Exp $"; ! 8: ! 9: #include "main.h" ! 10: #include "configuration.h" ! 11: #include "dialog.h" ! 12: #include "memAlloc.h" ! 13: #include "sdlgui.h" ! 14: #include "file.h" ! 15: #include "sound.h" ! 16: ! 17: ! 18: #define DLGSOUND_ENABLE 3 ! 19: #define DLGSOUND_LOW 5 ! 20: #define DLGSOUND_MEDIUM 6 ! 21: #define DLGSOUND_HIGH 7 ! 22: #define DLGSOUND_RECNAME 11 ! 23: #define DLGSOUND_RECBROWSE 12 ! 24: #define DLGSOUND_RECORD 13 ! 25: #define DLGSOUND_EXIT 14 ! 26: ! 27: ! 28: static char dlgRecordName[35]; ! 29: ! 30: ! 31: /* The sound dialog: */ ! 32: SGOBJ sounddlg[] = ! 33: { ! 34: { SGBOX, 0, 0, 0,0, 38,24, NULL }, ! 35: { SGBOX, 0, 0, 1,1, 36,11, NULL }, ! 36: { SGTEXT, 0, 0, 13,2, 13,1, "Sound options" }, ! 37: { SGCHECKBOX, 0, 0, 12,4, 14,1, "Enable sound" }, ! 38: { SGTEXT, 0, 0, 11,6, 14,1, "Playback quality:" }, ! 39: { SGRADIOBUT, 0, 0, 12,8, 15,1, "Low (11kHz)" }, ! 40: { SGRADIOBUT, 0, 0, 12,9, 19,1, "Medium (22kHz)" }, ! 41: { SGRADIOBUT, 0, 0, 12,10, 14,1, "High (44kHz)" }, ! 42: { SGBOX, 0, 0, 1,13, 36,8, NULL }, ! 43: { SGTEXT, 0, 0, 13,14, 14,1, "Capture YM/WAV" }, ! 44: { SGTEXT, 0, 0, 2,16, 26,1, "File name (*.wav or *.ym):" }, ! 45: { SGTEXT, 0, 0, 2,17, 34,1, dlgRecordName }, ! 46: { SGBUTTON, 0, 0, 30,16, 6,1, "Browse" }, ! 47: { SGBUTTON, 0, 0, 12,19, 16,1, NULL }, ! 48: { SGBUTTON, 0, 0, 10,22, 20,1, "Back to main menu" }, ! 49: { -1, 0, 0, 0,0, 0,0, NULL } ! 50: }; ! 51: ! 52: ! 53: /*-----------------------------------------------------------------------*/ ! 54: /* ! 55: Show and process the sound dialog. ! 56: */ ! 57: void Dialog_SoundDlg(void) ! 58: { ! 59: int but; ! 60: char *tmpname; ! 61: ! 62: /* Allocate memory for tmpname: */ ! 63: tmpname = Memory_Alloc(FILENAME_MAX); ! 64: ! 65: SDLGui_CenterDlg(sounddlg); ! 66: ! 67: /* Set up dialog from actual values: */ ! 68: ! 69: if( DialogParams.Sound.bEnableSound ) ! 70: sounddlg[DLGSOUND_ENABLE].state |= SG_SELECTED; ! 71: else ! 72: sounddlg[DLGSOUND_ENABLE].state &= ~SG_SELECTED; ! 73: ! 74: sounddlg[DLGSOUND_LOW].state &= ~SG_SELECTED; ! 75: sounddlg[DLGSOUND_MEDIUM].state &= ~SG_SELECTED; ! 76: sounddlg[DLGSOUND_HIGH].state &= ~SG_SELECTED; ! 77: if(DialogParams.Sound.nPlaybackQuality == PLAYBACK_LOW) ! 78: sounddlg[DLGSOUND_LOW].state |= SG_SELECTED; ! 79: else if(DialogParams.Sound.nPlaybackQuality == PLAYBACK_MEDIUM) ! 80: sounddlg[DLGSOUND_MEDIUM].state |= SG_SELECTED; ! 81: else ! 82: sounddlg[DLGSOUND_HIGH].state |= SG_SELECTED; ! 83: ! 84: File_ShrinkName(dlgRecordName, DialogParams.Sound.szYMCaptureFileName, sounddlg[DLGSOUND_RECNAME].w); ! 85: ! 86: if( Sound_AreWeRecording() ) ! 87: sounddlg[DLGSOUND_RECORD].txt = "Stop recording"; ! 88: else ! 89: sounddlg[DLGSOUND_RECORD].txt = "Record sound"; ! 90: ! 91: /* The sound dialog main loop */ ! 92: do ! 93: { ! 94: but = SDLGui_DoDialog(sounddlg); ! 95: switch(but) ! 96: { ! 97: case DLGSOUND_RECBROWSE: /* Choose a new record file */ ! 98: strcpy(tmpname, DialogParams.Sound.szYMCaptureFileName); ! 99: if( SDLGui_FileSelect(tmpname, NULL, TRUE) ) ! 100: { ! 101: if( !File_DoesFileNameEndWithSlash(tmpname) ) ! 102: { ! 103: strcpy(DialogParams.Sound.szYMCaptureFileName, tmpname); ! 104: File_ShrinkName(dlgRecordName, tmpname, sounddlg[DLGSOUND_RECNAME].w); ! 105: } ! 106: } ! 107: break; ! 108: case DLGSOUND_RECORD: ! 109: if(Sound_AreWeRecording()) ! 110: { ! 111: sounddlg[DLGSOUND_RECORD].txt = "Record sound"; ! 112: Sound_EndRecording(); ! 113: } ! 114: else ! 115: { ! 116: /* make sure that we have a valid file name... */ ! 117: if(strlen(DialogParams.Sound.szYMCaptureFileName) < 4) ! 118: { ! 119: strcpy(DialogParams.Sound.szYMCaptureFileName, "./hatari.wav"); ! 120: } ! 121: sounddlg[DLGSOUND_RECORD].txt = "Stop recording"; ! 122: Sound_BeginRecording(DialogParams.Sound.szYMCaptureFileName); ! 123: } ! 124: break; ! 125: } ! 126: } ! 127: while( but!=DLGSOUND_EXIT && !bQuitProgram ); ! 128: ! 129: /* Read values from dialog */ ! 130: DialogParams.Sound.bEnableSound = (sounddlg[DLGSOUND_ENABLE].state & SG_SELECTED); ! 131: if( sounddlg[DLGSOUND_LOW].state & SG_SELECTED ) ! 132: DialogParams.Sound.nPlaybackQuality = PLAYBACK_LOW; ! 133: else if( sounddlg[DLGSOUND_MEDIUM].state & SG_SELECTED ) ! 134: DialogParams.Sound.nPlaybackQuality = PLAYBACK_MEDIUM; ! 135: else ! 136: DialogParams.Sound.nPlaybackQuality = PLAYBACK_HIGH; ! 137: ! 138: Memory_Free(tmpname); ! 139: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.