1 // Copyright 2004 "Gilles Degottex"
3 // This file is part of "fmit"
5 // "fmit" is free software; you can redistribute it and/or modify
6 // it under the terms of the GNU General Public License as published by
7 // the Free Software Foundation; either version 2 of the License, or
8 // (at your option) any later version.
10 // "fmit" is distributed in the hope that it will be useful,
11 // but WITHOUT ANY WARRANTY; without even the implied warranty of
12 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 // GNU General Public License for more details.
15 // You should have received a copy of the GNU General Public License
16 // along with this program; if not, write to the Free Software
17 // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
21 static const unsigned char g_icon_sample[] = {
22 0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a, 0x00, 0x00, 0x00, 0x0d,
23 0x49, 0x48, 0x44, 0x52, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x20,
24 0x08, 0x06, 0x00, 0x00, 0x00, 0x73, 0x7a, 0x7a, 0xf4, 0x00, 0x00, 0x05,
25 0xf4, 0x49, 0x44, 0x41, 0x54, 0x78, 0x9c, 0xbd, 0x97, 0x7b, 0x4c, 0x53,
26 0x57, 0x1c, 0xc7, 0x3f, 0xf7, 0xb6, 0x45, 0x28, 0x30, 0x9e, 0xad, 0x83,
27 0x20, 0x54, 0x59, 0x7c, 0x4d, 0x2a, 0xc4, 0x81, 0x32, 0x61, 0xd9, 0xa6,
28 0x53, 0xa7, 0x7f, 0xcc, 0x39, 0x97, 0xa9, 0xd9, 0xe2, 0x96, 0xe8, 0x5e,
29 0xd9, 0xcc, 0x92, 0x6d, 0x71, 0x4b, 0x36, 0x71, 0x89, 0x71, 0x5b, 0xf6,
30 0x7e, 0xc5, 0x25, 0x2e, 0x3e, 0x92, 0xc5, 0xa9, 0x51, 0x36, 0x63, 0x34,
31 0x46, 0x74, 0xce, 0x21, 0x8f, 0x39, 0x03, 0x14, 0xd4, 0x55, 0x44, 0x10,
32 0x54, 0x1e, 0xe5, 0xd5, 0x16, 0xda, 0x52, 0x68, 0xef, 0xd9, 0x1f, 0xb7,
33 0x76, 0x20, 0x05, 0x04, 0x93, 0x7d, 0x93, 0x9b, 0x7b, 0xee, 0x39, 0xbf,
34 0x7b, 0xbe, 0xdf, 0x73, 0xee, 0xef, 0xfc, 0x7e, 0xbf, 0x2b, 0x71, 0xf7,
35 0xd0, 0x03, 0xd3, 0x81, 0x24, 0x20, 0x05, 0xf0, 0x02, 0x95, 0x80, 0x15,
36 0x18, 0x18, 0xc7, 0x3c, 0x43, 0x20, 0x8d, 0x31, 0x1e, 0x0d, 0x3c, 0x0f,
37 0xac, 0x07, 0xa6, 0x00, 0x3a, 0x20, 0x02, 0x88, 0x04, 0x7c, 0x40, 0x77,
38 0x80, 0xdc, 0x0d, 0x5c, 0x07, 0x8e, 0x01, 0x3f, 0x06, 0xc4, 0xdd, 0x93,
39 0x00, 0x09, 0x78, 0x19, 0xf8, 0x10, 0x48, 0x04, 0x26, 0x85, 0x87, 0x6b,
40 0x31, 0x3f, 0x98, 0x48, 0x96, 0xd9, 0x48, 0x96, 0xd9, 0x88, 0xdb, 0xe3,
41 0xa3, 0xaa, 0xda, 0x46, 0x85, 0xc5, 0x86, 0xf5, 0x6a, 0x17, 0x3e, 0x9f,
42 0x42, 0x80, 0xb8, 0x0d, 0xd8, 0x01, 0x7c, 0x06, 0xf8, 0x27, 0x22, 0x20,
43 0x0a, 0x28, 0x02, 0x1e, 0x04, 0xa2, 0x17, 0x2e, 0x48, 0x66, 0xdb, 0x07,
44 0x79, 0x64, 0xcc, 0x4e, 0x44, 0xa3, 0x51, 0xcd, 0xbd, 0x52, 0x02, 0x92,
45 0x18, 0x20, 0x0c, 0x27, 0x00, 0x7d, 0x7d, 0x3e, 0x8a, 0xcb, 0x6e, 0xb1,
46 0xb9, 0xa0, 0x98, 0x86, 0x46, 0x07, 0x80, 0x0b, 0xb8, 0x0c, 0xac, 0x00,
47 0xda, 0xc7, 0x23, 0x20, 0x01, 0x38, 0x0b, 0xcc, 0xd0, 0xeb, 0x75, 0xda,
48 0x82, 0xcd, 0x0b, 0xd8, 0xb8, 0xde, 0x4c, 0x9f, 0x34, 0x99, 0x4e, 0x39,
49 0x07, 0x97, 0x94, 0x8a, 0x4b, 0x4e, 0xc3, 0x8f, 0x1e, 0x00, 0x9d, 0xb0,
50 0x13, 0x29, 0x9a, 0xd0, 0x8b, 0x46, 0x8c, 0x4a, 0x09, 0x03, 0xee, 0x6e,
51 0x3e, 0xfa, 0xb4, 0x9c, 0x9d, 0x7b, 0xab, 0x11, 0x02, 0x01, 0x34, 0x02,
52 0x4b, 0x81, 0xda, 0xbb, 0x11, 0x20, 0x03, 0x17, 0x80, 0xb9, 0xf3, 0x32,
53 0x27, 0xcb, 0x3b, 0xbf, 0x7d, 0x02, 0x53, 0x5a, 0x2c, 0xad, 0xf2, 0x62,
54 0x6e, 0x69, 0x96, 0x23, 0xd0, 0x8d, 0xb6, 0x10, 0x34, 0xa2, 0x17, 0x93,
55 0x72, 0x80, 0x78, 0xa5, 0x92, 0x92, 0xf2, 0x66, 0x36, 0x6c, 0x3a, 0x49,
56 0x6b, 0x9b, 0x0b, 0xa0, 0x1e, 0xc8, 0x06, 0xba, 0xc6, 0x12, 0xb0, 0x05,
57 0x78, 0x27, 0xe6, 0xbe, 0x49, 0xd1, 0x65, 0x45, 0x6b, 0x89, 0xbb, 0xdf,
58 0x44, 0xbd, 0x66, 0x3d, 0x2e, 0xd9, 0x34, 0x2a, 0xf1, 0x9d, 0x88, 0xf3,
59 0x57, 0x60, 0x52, 0xf6, 0x51, 0x5a, 0x5a, 0xc7, 0xca, 0x75, 0x47, 0x10,
60 0x02, 0x05, 0x28, 0x05, 0xf2, 0x43, 0x0a, 0x0f, 0xdc, 0x8d, 0xc0, 0x4f,
61 0x40, 0xc2, 0x57, 0xdb, 0x1f, 0x65, 0x7e, 0xf6, 0x14, 0xae, 0x68, 0x37,
62 0xe1, 0x96, 0xa7, 0x8c, 0x8b, 0x1c, 0xe0, 0x96, 0x23, 0x8a, 0xe3, 0x95,
63 0xe1, 0x3c, 0x97, 0xdb, 0x42, 0x47, 0x67, 0x1f, 0x15, 0x16, 0x9b, 0x84,
64 0x7a, 0x6a, 0xfe, 0x42, 0xfd, 0x24, 0x43, 0x20, 0x07, 0xee, 0x6f, 0x03,
65 0xc6, 0x25, 0x8f, 0xa7, 0xb1, 0x76, 0xf5, 0x4c, 0x9a, 0x35, 0xcb, 0xf1,
66 0xc8, 0xc9, 0xe3, 0x26, 0x07, 0xf0, 0x78, 0xfa, 0x39, 0x57, 0xed, 0xe6,
67 0x7c, 0xeb, 0x3c, 0x3e, 0x7a, 0x3f, 0x97, 0xa9, 0x69, 0x31, 0xa0, 0xfa,
68 0xd6, 0xf7, 0xa1, 0xec, 0xe5, 0xc0, 0xb5, 0x4e, 0x92, 0xd0, 0x7c, 0xb5,
69 0xfd, 0x51, 0x5c, 0x52, 0x2a, 0x2d, 0xf2, 0xe2, 0x09, 0x91, 0x03, 0x38,
70 0x7b, 0x3d, 0x80, 0x60, 0xe7, 0xd9, 0x64, 0x44, 0x58, 0x3c, 0x9f, 0x6c,
71 0x0d, 0xee, 0x7c, 0x02, 0x30, 0x6c, 0x55, 0x32, 0xea, 0x71, 0x0b, 0x9b,
72 0x66, 0x8a, 0x25, 0x39, 0x29, 0x8a, 0x56, 0xf9, 0x71, 0x90, 0x34, 0x77,
73 0xda, 0x8d, 0x53, 0x00, 0x74, 0x3b, 0x3d, 0x14, 0x5e, 0xce, 0xe1, 0xe1,
74 0xf9, 0xc9, 0x48, 0x52, 0x50, 0xc0, 0xb0, 0x95, 0xc9, 0x40, 0x1e, 0x10,
75 0x9f, 0x65, 0x36, 0x02, 0xe0, 0x92, 0x52, 0x27, 0x4c, 0x0e, 0xe0, 0xec,
76 0x71, 0x07, 0xdb, 0x75, 0xb6, 0x08, 0xa2, 0x22, 0x75, 0xa4, 0x4f, 0x8d,
77 0x05, 0x08, 0x03, 0x56, 0x85, 0x12, 0xf0, 0x30, 0xa0, 0xcd, 0x32, 0x1b,
78 0xf1, 0x11, 0x4e, 0x1f, 0x86, 0x7b, 0x12, 0xd0, 0xde, 0xe5, 0x0c, 0xb6,
79 0x9b, 0xda, 0x15, 0x00, 0xe6, 0x66, 0x04, 0xe7, 0x4c, 0x09, 0x25, 0x20,
80 0x02, 0x20, 0xcb, 0x6c, 0xc0, 0x2d, 0xa5, 0x22, 0x49, 0x63, 0xa5, 0x87,
81 0x91, 0xd1, 0x6a, 0xb3, 0x73, 0xb3, 0xa5, 0x33, 0xf8, 0xdc, 0xd3, 0xdb,
82 0x4f, 0x87, 0x3b, 0x8a, 0xb9, 0x73, 0x82, 0x02, 0x86, 0x05, 0x13, 0x19,
83 0x98, 0x04, 0xa0, 0xd3, 0x69, 0x50, 0xd0, 0x4e, 0x98, 0x1c, 0xa0, 0xbc,
84 0xf2, 0xea, 0xb0, 0x3e, 0xbb, 0x3b, 0x9c, 0x30, 0x5d, 0xd0, 0xa7, 0x86,
85 0x11, 0xc8, 0x04, 0x22, 0x54, 0x55, 0x8d, 0x8d, 0x48, 0xd1, 0x34, 0x61,
86 0x72, 0xeb, 0xb5, 0x66, 0xae, 0x5c, 0x6b, 0x1e, 0x3a, 0xb9, 0x2c, 0x61,
87 0x8a, 0xeb, 0xa4, 0xaa, 0xc6, 0x76, 0xbb, 0xab, 0x35, 0x94, 0x80, 0x52,
88 0xc0, 0x5f, 0x61, 0xb1, 0xa1, 0xa3, 0x97, 0x30, 0x11, 0x32, 0x62, 0x8e,
89 0x8a, 0xfa, 0xa6, 0x36, 0x8e, 0x16, 0x5d, 0x00, 0xc4, 0x90, 0xfe, 0xa4,
90 0x78, 0x1d, 0x5a, 0x8d, 0xc0, 0x72, 0x31, 0x98, 0x8f, 0xfe, 0x0c, 0x25,
91 0xc0, 0x02, 0xd8, 0x2b, 0xab, 0x55, 0x95, 0xfa, 0x71, 0xee, 0x42, 0x43,
92 0x93, 0x8d, 0x5f, 0x4f, 0x9c, 0x47, 0x51, 0x94, 0x61, 0x63, 0x69, 0x86,
93 0x7e, 0x3c, 0x1e, 0x1f, 0xb5, 0x75, 0xdd, 0x00, 0x4e, 0xa0, 0xf8, 0x4e,
94 0x1b, 0x2d, 0x50, 0x0d, 0x78, 0x6b, 0xeb, 0xba, 0xe9, 0xec, 0xea, 0xc3,
95 0x98, 0x70, 0x0e, 0xbb, 0x9c, 0x39, 0x26, 0xb1, 0xdd, 0xe9, 0xe2, 0x4c,
96 0xe9, 0x25, 0x6a, 0xeb, 0x9b, 0x47, 0xb4, 0xc9, 0x37, 0x5d, 0xa5, 0xc2,
97 0x62, 0xc3, 0xef, 0x17, 0xa0, 0x16, 0x2d, 0x95, 0x77, 0xda, 0xc8, 0x81,
98 0x81, 0x72, 0x45, 0x11, 0xbc, 0xb7, 0xb5, 0x98, 0x18, 0x61, 0xc5, 0xe0,
99 0x3f, 0x37, 0xe2, 0xa4, 0x5e, 0xef, 0x00, 0x67, 0x4a, 0x2f, 0xb1, 0x73,
100 0xdf, 0xe9, 0x51, 0xc9, 0x73, 0xa7, 0xfb, 0xc8, 0x4e, 0x69, 0xe4, 0x8b,
101 0xef, 0x2f, 0x04, 0x5f, 0x45, 0xad, 0xa0, 0x86, 0xe0, 0xb6, 0x57, 0x6e,
102 0x07, 0xf2, 0x0f, 0x1d, 0xa9, 0x35, 0xac, 0x5c, 0x91, 0xce, 0xb2, 0xa5,
103 0x85, 0x38, 0xe4, 0x59, 0xf4, 0x4b, 0x09, 0x08, 0x01, 0x6d, 0xed, 0x76,
104 0xae, 0xdf, 0xb0, 0xd1, 0x70, 0xc3, 0xc6, 0xcd, 0xd6, 0xae, 0x90, 0xdb,
105 0x3d, 0x18, 0xd1, 0x7a, 0x0d, 0xaf, 0x2e, 0xf8, 0x83, 0xae, 0xdd, 0x15,
106 0x9c, 0x2b, 0xbe, 0x71, 0xbb, 0xbb, 0x25, 0x94, 0xed, 0xe0, 0x43, 0x7f,
107 0x12, 0x58, 0x64, 0x34, 0xe8, 0xe5, 0xf2, 0x53, 0x6b, 0x11, 0x51, 0xd3,
108 0xd9, 0x51, 0x96, 0x87, 0xf5, 0xba, 0x1d, 0x4f, 0x5f, 0xff, 0xa8, 0x84,
109 0x83, 0x11, 0xa6, 0x93, 0x28, 0x48, 0xff, 0x9d, 0x9c, 0x6d, 0x7b, 0x91,
110 0xac, 0x0e, 0x6c, 0x0f, 0xc5, 0x73, 0xff, 0x85, 0x2e, 0x84, 0x2a, 0xe0,
111 0x11, 0xa0, 0x6e, 0xb0, 0xbd, 0x3c, 0xa8, 0xbd, 0x06, 0x68, 0xb6, 0xb5,
112 0xbb, 0xd9, 0xf0, 0xe6, 0x49, 0x84, 0xb3, 0x96, 0x97, 0x32, 0x8f, 0x92,
113 0x14, 0x37, 0x66, 0x59, 0x17, 0xc4, 0xac, 0x14, 0xc1, 0x37, 0xcf, 0x9c,
114 0x25, 0xe7, 0xb3, 0xc3, 0x48, 0x56, 0x07, 0x00, 0xc6, 0xba, 0x5e, 0xf6,
115 0xbf, 0x38, 0x15, 0xd4, 0x6a, 0xba, 0x08, 0xb5, 0xc6, 0x0c, 0x62, 0x70,
116 0xd6, 0xf1, 0x00, 0x7f, 0x03, 0xcb, 0x1b, 0x1a, 0x9d, 0x51, 0xbf, 0x1c,
117 0xb2, 0x62, 0x9e, 0x11, 0xc1, 0xeb, 0x4f, 0x76, 0xa1, 0x9d, 0x14, 0x4b,
118 0x8b, 0x33, 0x0a, 0x8f, 0x57, 0x61, 0x78, 0x15, 0x27, 0x30, 0xc4, 0x68,
119 0x58, 0x93, 0x7d, 0x83, 0x57, 0x72, 0xff, 0x26, 0xfa, 0x54, 0x35, 0xe1,
120 0x6f, 0xec, 0x85, 0xb2, 0x32, 0x98, 0xea, 0x83, 0x57, 0xcd, 0xcc, 0x4e,
121 0x8f, 0xa1, 0x27, 0x42, 0xa1, 0xec, 0xb2, 0x33, 0x06, 0x58, 0x0e, 0xec,
122 0x41, 0xad, 0xaa, 0x43, 0x16, 0xa5, 0x0f, 0x01, 0xbf, 0xa1, 0xa6, 0x4e,
123 0xe9, 0xd9, 0x95, 0xd3, 0xd9, 0xbe, 0x25, 0x8f, 0xc4, 0x84, 0x08, 0x5c,
124 0x5e, 0x2d, 0x57, 0x3b, 0xe2, 0xb1, 0x76, 0xa4, 0xa0, 0xc1, 0xcf, 0xcc,
125 0xc4, 0x9b, 0xa4, 0x1b, 0x1c, 0xe8, 0xc3, 0x7c, 0xd4, 0xd5, 0xdb, 0xf9,
126 0xf8, 0xcb, 0xf3, 0x94, 0x9c, 0xa9, 0xa7, 0x7e, 0x59, 0x0e, 0xfa, 0x5a,
127 0x07, 0x14, 0xbe, 0x0b, 0x15, 0xbb, 0xa0, 0x0d, 0x44, 0x38, 0x3c, 0xbd,
128 0xe7, 0x1f, 0x8e, 0x94, 0x74, 0x0c, 0x00, 0x25, 0xc0, 0x22, 0x40, 0x19,
129 0x29, 0xf0, 0x27, 0xa1, 0x96, 0xd5, 0x8b, 0x80, 0xc9, 0x92, 0x84, 0x64,
130 0x4a, 0x8d, 0x21, 0x33, 0xc3, 0x80, 0x79, 0x8e, 0x81, 0xcc, 0x0c, 0x03,
131 0x1e, 0x8f, 0x8f, 0xaa, 0x9a, 0x76, 0x2c, 0x17, 0xdb, 0xa9, 0xaa, 0xb1,
132 0xd1, 0x66, 0xfb, 0x2f, 0x0b, 0x6a, 0x25, 0x38, 0xb6, 0x6d, 0x01, 0x4b,
133 0x36, 0xed, 0x86, 0x1e, 0x0b, 0x9c, 0xfd, 0x01, 0x3a, 0x40, 0x89, 0x14,
134 0x2c, 0xfc, 0xdc, 0x42, 0xf9, 0xe5, 0x1e, 0x37, 0x50, 0x08, 0xbc, 0x30,
135 0xe2, 0xf7, 0x0c, 0x20, 0x05, 0x38, 0x84, 0xea, 0x40, 0x3e, 0xd4, 0x50,
136 0x17, 0xea, 0xf2, 0xa2, 0x86, 0xd9, 0x7a, 0x60, 0x17, 0x70, 0x0b, 0x10,
137 0x05, 0xaf, 0xcd, 0x16, 0x8a, 0xbd, 0x42, 0x88, 0xe6, 0x83, 0x42, 0xfc,
138 0x9c, 0x2f, 0xc4, 0x77, 0xf9, 0xc2, 0xbb, 0x3b, 0x4f, 0x3c, 0x90, 0x12,
139 0x2e, 0x00, 0x07, 0x50, 0x70, 0xb7, 0xa9, 0x2f, 0x35, 0xb0, 0x1b, 0x79,
140 0xc0, 0x5c, 0x54, 0x47, 0x92, 0x81, 0x0e, 0xd4, 0x5a, 0xef, 0x34, 0xaa,
141 0xff, 0xdc, 0xae, 0xf9, 0xd2, 0x81, 0x13, 0xc0, 0xb4, 0xd5, 0x8b, 0x93,
142 0xe5, 0x03, 0xfb, 0x0f, 0x20, 0xf7, 0xb7, 0x41, 0xd1, 0xd7, 0xe0, 0x94,
143 0x70, 0xea, 0xfd, 0x98, 0xde, 0x3a, 0x4f, 0x77, 0x8f, 0x6f, 0xd4, 0x7f,
144 0x86, 0x7b, 0x45, 0x0c, 0x50, 0x06, 0xb8, 0x73, 0x33, 0x62, 0x45, 0x5f,
145 0xf3, 0x71, 0x21, 0x5a, 0x0e, 0x0b, 0xb1, 0x27, 0x4f, 0x88, 0xe3, 0xf9,
146 0x62, 0xe3, 0x53, 0x93, 0x05, 0xd0, 0x21, 0x8f, 0x31, 0xc9, 0xbd, 0xc0,
147 0x81, 0xba, 0x63, 0x85, 0x65, 0x35, 0x76, 0xfb, 0xec, 0xec, 0x55, 0x74,
148 0xf7, 0x0c, 0xc0, 0xbc, 0x59, 0x88, 0x38, 0x68, 0x53, 0x4f, 0xe9, 0x84,
149 0x7f, 0x6a, 0xc7, 0x8b, 0x77, 0x81, 0xf6, 0xd8, 0x68, 0xad, 0x58, 0xf5,
150 0x58, 0xa2, 0x58, 0xba, 0xd0, 0x20, 0x00, 0x05, 0x38, 0xf8, 0x7f, 0x09,
151 0x00, 0xd5, 0x87, 0x4e, 0x01, 0x0d, 0xc0, 0x25, 0xe0, 0x73, 0xc0, 0xf0,
152 0x2f, 0xf1, 0xc1, 0x43, 0x84, 0x70, 0x5c, 0x14, 0x05, 0x00, 0x00, 0x00,
153 0x00, 0x49, 0x45, 0x4e, 0x44, 0xae, 0x42, 0x60, 0x82
162 #include <qtooltip.h>
165 GLSample::GLSample(QWidget* parent)
166 : QGLWidget(parent, "GLSample")
167 , View("Wave form", this)
172 img.loadFromData(g_icon_sample, sizeof(g_icon_sample), "PNG");
173 setting_show->setIconSet(QIconSet(QImage(img)));
174 setting_show->setOn(false);
177 setting_hasFading = new QAction(this);
178 setting_hasFading->setMenuText(tr("Show fading"));
179 setting_hasFading->setToggleAction(true);
180 connect(setting_hasFading, SIGNAL(toggled(bool)), this, SLOT(updateGL()));
181 setting_hasFading->addTo(&m_popup_menu);
183 m_popup_menu.insertItem(new Title(tr("Number of fading"), &m_popup_menu));
184 setting_spinNumFading = new QSpinBox(1, 10000, 1, &m_popup_menu);
185 setting_spinNumFading->setValue(20);
186 QToolTip::add(setting_spinNumFading, tr("Number of fading"));
187 connect(setting_spinNumFading, SIGNAL(valueChanged(int)), this, SLOT(updateGL()));
188 m_popup_menu.insertItem(setting_spinNumFading);
191 void GLSample::save()
193 s_settings->writeEntry("hasFading", setting_hasFading->isOn());
194 s_settings->writeEntry("spinNumFading", setting_spinNumFading->value());
196 void GLSample::load()
198 setting_hasFading->setOn(s_settings->readBoolEntry("hasFading", setting_hasFading->isOn()));
199 setting_spinNumFading->setValue(s_settings->readNumEntry("spinNumFading", setting_spinNumFading->value()));
201 void GLSample::clearSettings()
203 s_settings->removeEntry("hasFading");
204 s_settings->removeEntry("spinNumFading");
207 GLSample::Sample::Sample(double t, const deque<double>& d)
212 for(size_t i=0; i<data.size(); i++)
213 max_value = max(max_value, abs(data[i]));
216 void GLSample::add(double time, const deque<double>& data)
218 m_samples.push_front(Sample(time, data));
220 if(setting_hasFading->isOn())
221 while(!m_samples.empty() && int(m_samples.size())>setting_spinNumFading->value())
222 m_samples.pop_back();
224 while(!m_samples.empty() && m_samples.size()>1)
225 m_samples.pop_back();
228 void GLSample::initializeGL()
230 // Set the clear color to black
231 glClearColor(1.0, 1.0, 1.0, 0.0);
233 // glShadeModel( GL_FLAT );
234 glShadeModel( GL_SMOOTH );
239 void GLSample::paintGL()
241 glClear(GL_COLOR_BUFFER_BIT);
244 string str = tr("Wave form");
245 glColor3f(0.75,0.75,0.75);
246 glRasterPos2i(2, height()-20);
247 for(size_t i = 0; i < str.size(); i++)
248 glutBitmapCharacter(GLUT_BITMAP_HELVETICA_18, str[i]);
253 glColor3f(gray, gray, gray);
254 glVertex2i(0, height()/2);
255 glVertex2i(width(), height()/2);
258 if(m_max_value==0.0) m_max_value = 1.0;
261 if(!m_samples.empty())
264 for(int j=m_samples.size()-1; j>=0; j--)
266 m_max_value = max(m_max_value, abs(m_samples[j].max_value));
267 if(!setting_hasFading->isOn()) j=-1;
270 for(int j=m_samples.size()-1; j>=0; j--)
274 glBegin(GL_LINE_STRIP);
275 float grey = float(j)/m_samples.size();
276 glColor3f(grey, grey, grey);
277 int size = m_samples[j].data.size();
278 float step = float(width())/size;
279 for(int i=size-1; i>0; i--)
280 glVertex2i(int((size-i-1)*step), int((m_samples[j].data[i]/m_max_value)*height()/2 + height()/2));
281 glVertex2i(width(), int((m_samples[j].data[0]/m_max_value)*height()/2 + height()/2));
285 if(!setting_hasFading->isOn()) j=-1;
292 void GLSample::resizeGL( int w, int h )
294 // Set the new viewport size
295 glViewport(0, 0, (GLint)w, (GLint)h);
297 // Choose the projection matrix to be the matrix
298 // manipulated by the following calls
299 glMatrixMode(GL_PROJECTION);
301 // Set the projection matrix to be the identity matrix
304 // Define the dimensions of the Orthographic Viewing Volume
305 glOrtho(0.0, w, 0.0, h, 0.0, 1.0);
307 // Choose the modelview matrix to be the matrix
308 // manipulated by further calls
309 glMatrixMode(GL_MODELVIEW);