[NtUser]
[reactos.git] / reactos / base / applications / sndrec32 / sndrec32.h
1 /* PROJECT: ReactOS sndrec32
2 * LICENSE: GPL - See COPYING in the top level directory
3 * FILE: base/applications/sndrec32/sndrec32.h
4 * PURPOSE: Sound recording
5 * PROGRAMMERS: Marco Pagliaricci (irc: rendar)
6 */
7
8 #pragma once
9
10 #include "resource.h"
11 #include "audio_api.hpp"
12
13 #define MAX_LOADSTRING 100
14
15 #define MAINWINDOW_W 350
16 #define MAINWINDOW_H 190
17
18 #define CONTROLS_CX 10
19
20 #define INITIAL_BUFREC_SECONDS 30.0f
21
22 #define BUTSTART_ID 0
23 #define BUTEND_ID 1
24 #define BUTPLAY_ID 2
25 #define BUTSTOP_ID 3
26 #define BUTREC_ID 4
27 #define SLIDER_ID 5
28 #define WAVEBAR_ID 6
29
30 #define BUTTONS_H 30
31 #define BUTTONS_W 60
32 #define BUTTONS_CY 100
33 #define BUTTONS_CX (CONTROLS_CX)
34 #define BUTTONS_SPACE 5
35
36 #define SLIDER_CX CONTROLS_CX
37 #define SLIDER_CY 65
38 #define SLIDER_H 30
39 #define SLIDER_W 320
40
41 #define STRPOS_X 240
42 #define STRPOS_Y 5
43
44 #define STRDUR_X (STRPOS_X)
45 #define STRDUR_Y (STRPOS_Y + 13)
46
47 #define STRBUF_X (STRDUR_X)
48 #define STRBUF_Y (STRDUR_Y + 13)
49
50 #define STRFMT_X 10
51 #define STRFMT_Y (STRPOS_Y)
52
53 #define STRCHAN_X (STRFMT_X)
54 #define STRCHAN_Y (STRFMT_Y + 13)
55
56 #define WAVEBAR_X (CONTROLS_CX + 90)
57 #define WAVEBAR_Y (STRPOS_Y)
58 #define WAVEBAR_CX 130
59 #define WAVEBAR_CY 50
60
61 #define WAVEBAR_TIMERID 2
62 #define WAVEBAR_TIMERTIME 80
63
64 #define WAVEBAR_COLOR (RGB(0, 0, 255))
65
66 #define REFRESHA_X (STRPOS_X)
67 #define REFRESHA_Y (STRPOS_Y)
68 #define REFRESHA_CX (REFRESHA_X + 100)
69 #define REFRESHA_CY (REFRESHA_Y + 55)
70
71 #define REFRESHB_X (STRFMT_X)
72 #define REFRESHB_Y (STRFMT_Y)
73 #define REFRESHB_CX (REFRESHB_X + 85)
74 #define REFRESHB_CY (REFRESHB_Y + 55)
75
76 struct riff_hdr
77 {
78 DWORD magic;
79 DWORD chunksize;
80 DWORD format;
81 };
82
83 struct wave_hdr
84 {
85 DWORD Subchunkid;
86 DWORD Subchunk1Size;
87 WORD AudioFormat;
88 WORD NumChannels;
89 DWORD SampleRate;
90 DWORD ByteRate;
91 WORD BlockAlign;
92 WORD BitsPerSample;
93 };
94
95 struct data_chunk
96 {
97 DWORD subc;
98 DWORD subc_size;
99 //unsigned char data[];
100 };
101
102 /* Functions prototypes */
103
104 LRESULT CALLBACK Buttons_proc(HWND, UINT, WPARAM, LPARAM);
105
106 BOOL write_wav(TCHAR *);
107 BOOL open_wav(TCHAR *);
108 VOID enable_but(DWORD);
109 VOID disable_but(DWORD);
110
111 void l_play_finished(void);
112 void l_audio_arrival(unsigned int);
113 void l_buffer_resized(unsigned int);