Files
sibo-playground/code/SIBOSDK/record/record.cat
T

245 lines
7.2 KiB
Plaintext
Raw Normal View History

2026-07-06 18:01:36 +01:00
IMAGE record
EXTERNAL olib
EXTERNAL hwim
INCLUDE p_std.h
INCLUDE p_gen.h
INCLUDE p_que.h
INCLUDE p_object.h
INCLUDE p_file.h
INCLUDE epoc.h
INCLUDE wlib.h
INCLUDE olib.g
INCLUDE varray.g
INCLUDE appman.g
INCLUDE timer.g
INCLUDE bwin.g
INCLUDE matcher.g
INCLUDE listbox.g
INCLUDE pulldown.g
INCLUDE hwimman.g
CLASS waveao active
Sound file record and play
{
REPLACE ao_init Queue into appman and init callback
REPLACE ao_run Call back
REPLACE ao_cancel Cancel sound
ADD wv_record Start recording a file
ADD wv_play Start playing a file
ADD wv_stop Start playing/recording a file
PROPERTY
{
WORD request; Request type
PR_ROOT *hdone; Callback handle on completion
UWORD done_record; Callback method on record completion
UWORD done_play; Callback method on playback completion
}
}
CLASS wvefile root
Sound file
{
ADD wve_new Create a new file
ADD wve_open Open an existing file
ADD wve_sense_fname Sense the file name (for reading)
ADD wve_sense_info Fill in a WVEFILE_INFO struct
ADD wve_set_repeats Set the repeat and silence
TYPES
{
typedef struct
{
TEXT *device; address of device character
TEXT *name; file name component
WORD ret; possible error return
WORD nmlen; length of file name
UWORD duration; duration in 10ths of a sec
UWORD silence; silence in 10ths of a second
UWORD repeats; number of repeats
ULONG total; total time in seconds (with repeats & silence)
ULONG samples; number of samples
ULONG flen; file length
} WVEFILE_INFO;
}
PROPERTY
{
VOID *fcb;
WORD ret;
P_FPARSE crk;
TEXT fname[P_FNAMESIZE];
P_INFO info;
SndFile head;
}
}
CLASS receng root
{
ADD eng_init
ADD eng_new_file Start a new file
ADD eng_open_file Open an existing file (close any current file)
ADD eng_sense_file Get the current file name
ADD eng_file_info Get information on the current file
ADD eng_default_disk Return default device for new file
ADD eng_view_update Call back view to update itself
ADD eng_done_record Callback from active object on record completion
ADD eng_done_play Callback from active object on play completion
ADD eng_sound_play Play the current file
ADD eng_sound_record Record to the current file
ADD eng_sound_stop Stop the current record or playback
ADD eng_set_repeats Set the number of repeats and trailing silence
ADD eng_set_prefs Set the persistent preferences
ADD eng_sense_prefs Sense the persistent preferences
TYPES
{
typedef struct
{
WORD volume; volume for playback
WORD duration; maximum duration in 10ths of a sec
WORD disk; preferred disk for new files
} RECENG_PREFS;
}
PROPERTY 2
{
PR_WVEFILE *wvefile; digital sound file
PR_WAVEAO *waveao; record/play active object
PR_ROOT *hview; callback view handle
UWORD mupdate; callback view method for update
UWORD msound; callback view method for begin sound
RECENG_PREFS prefs; persistent preferences
}
}
CLASS reccom comman
{
REPLACE com_file_change from System application
ADD com_set_repeat Set repeat menu command
ADD com_rep_alarm Repeat for alarm menu command
ADD com_preferences Set preferences menu command
ADD com_new_file New file menu command
ADD com_open_file Open file menu command
ADD com_record_new Record new (Tab) button
ADD com_re_record Record over (Space) button
TYPES
{
typedef struct
{
WORD duration;
TEXT fname[P_FNAMESIZE];
} RECRBUF;
}
}
CLASS recman hwimman
{
REPLACE am_clean_up
}
CLASS recwserv wserv
{
REPLACE ws_dyn_init
}
CLASS timebar active
{
REPLACE ao_init Queue into appman and set priority
REPLACE ao_queue Queue next read
REPLACE ao_run Update on tick
ADD tb_start Start time bar
ADD tb_stop Stop time bar
ADD tb_draw For redraw
PROPERTY
{
WORD visible; Visible if TRUE
WORD wid; Window id of landlord
LONG tenths0; Initial value of timer
LONG tenths; Counted down value of timer
WORD x; Bar value in pixels
P_RECT rect; Bar rectangle
}
}
CLASS recbut root
{
REPLACE destroy
ADD rb_init
ADD rb_draw
ADD rb_depress
ADD rb_hide
PROPERTY
{
WORD hide; Hide button if TRUE
WORD wid; Window id of landlord
P_RECT rect; Button rectangle
VOID *buttxt; As loaded from resource file
TEXT *inlabel; Button label
TEXT *caption; Caption above button
WORD caplen; Caption length
}
}
CLASS reccli bwin
{
REPLACE destroy
REPLACE wn_connect
REPLACE wn_draw
REPLACE wn_key
ADD cl_update Viewed data has changed
ADD cl_sound_filter To catch keys while recording or playing
ADD cl_pause_filter To catch keys while waiting to record
ADD cl_begin_sound
ADD cl_pause
PROPERTY 6
{
PR_TIMEBAR *timebar;
PR_RECBUT *recbut[5];
UINT duration; Stored for pause to record
WORD running; TRUE if sound record/play running
WORD width; Window width
VOID *clitxt; Allocated resource
TEXT *secs; Seconds suffix
TEXT *title; Title format string
TEXT *sub; Subtitle format string
TEXT tsep; Time separator
UBYTE spare;
}
}
CLASS setrep dlgbox
{
REPLACE dl_dyn_init
REPLACE dl_key
}
CLASS setpref dlgbox
{
REPLACE dl_dyn_init
REPLACE dl_key
}
CLASS recnew dlgbox
Record to new file dialog
{
REPLACE dl_dyn_init
REPLACE dl_key
}
CLASS recnewdef recnew
Record to new file dialog with a default name
{
REPLACE dl_set_size
}
CLASS recexist recnew
Record to existing file dialog
{
REPLACE dl_dyn_init
REPLACE dl_set_size
}
CLASS recopen dlgbox
Open file dialog
{
REPLACE dl_key
}