refactor wave ctrl

This commit is contained in:
idea4good 2019-01-17 10:55:12 +08:00
parent 6213bdb1e8
commit f6fbf66e58
2 changed files with 5 additions and 45 deletions

View File

@ -7,14 +7,6 @@ typedef enum
SCAN_MODE SCAN_MODE
}E_WAVE_DRAW_MODE; }E_WAVE_DRAW_MODE;
typedef enum
{
ZOOM_025,
ZOOM_050,
ZOOM_100,
ZOOM_200
}E_WAVE_GAIN;
class c_wave_buffer; class c_wave_buffer;
class c_wave_ctrl : public c_wnd class c_wave_ctrl : public c_wnd
{ {
@ -36,8 +28,7 @@ public:
void set_wave_in_out_rate(unsigned int data_rate, unsigned int refresh_rate); void set_wave_in_out_rate(unsigned int data_rate, unsigned int refresh_rate);
void set_wave_speed(unsigned int speed); void set_wave_speed(unsigned int speed);
void set_max_min_base(short max_data, short min_data, short data_base); void set_max_min(short max_data, short min_data);
void set_wave_gain(E_WAVE_GAIN gain);
void set_wave(c_wave_buffer* wave){m_wave = wave;} void set_wave(c_wave_buffer* wave){m_wave = wave;}
c_wave_buffer* get_wave(){return m_wave;} c_wave_buffer* get_wave(){return m_wave;}
void clear_data(); void clear_data();
@ -69,8 +60,6 @@ protected:
short m_max_data; short m_max_data;
short m_min_data; short m_min_data;
short m_pivot_data; //for wave gain and fill mode
E_WAVE_GAIN m_gain; //wave gain
private: private:
c_wave_buffer* m_wave; c_wave_buffer* m_wave;

View File

@ -27,11 +27,9 @@ c_wave_ctrl::c_wave_ctrl()
m_wave_name = m_wave_unit = 0; m_wave_name = m_wave_unit = 0;
m_max_data = 500; m_max_data = 500;
m_min_data = 0; m_min_data = 0;
m_pivot_data = 250;
m_wave_speed = 4; m_wave_speed = 4;
m_wave_data_rate = 0; m_wave_data_rate = 0;
m_wave_refresh_rate = 1000; m_wave_refresh_rate = 1000;
m_gain = ZOOM_100;
m_frame_len_map_index = 0; m_frame_len_map_index = 0;
m_wave_name_color = m_wave_unit_color = m_wave_color = GL_RGB(255,0,0); m_wave_name_color = m_wave_unit_color = m_wave_color = GL_RGB(255,0,0);
@ -52,16 +50,10 @@ void c_wave_ctrl::on_init_children()
m_bg_fb = (unsigned int*)calloc(rect.Width() * rect.Height(), 4); m_bg_fb = (unsigned int*)calloc(rect.Width() * rect.Height(), 4);
} }
void c_wave_ctrl::set_max_min_base(short max_data, short min_data, short data_base) void c_wave_ctrl::set_max_min(short max_data, short min_data)
{ {
m_max_data = max_data; m_max_data = max_data;
m_min_data = min_data; m_min_data = min_data;
m_pivot_data = data_base;
}
void c_wave_ctrl::set_wave_gain(E_WAVE_GAIN gain)
{
m_gain = gain;
} }
void c_wave_ctrl::set_wave_in_out_rate(unsigned int data_rate, unsigned int refresh_rate) void c_wave_ctrl::set_wave_in_out_rate(unsigned int data_rate, unsigned int refresh_rate)
@ -132,36 +124,15 @@ void c_wave_ctrl::refresh_wave(unsigned char frame)
m_frame_len_map[m_frame_len_map_index++], m_frame_len_map[m_frame_len_map_index++],
(frame | (offset << 8))); (frame | (offset << 8)));
m_frame_len_map_index %= sizeof(m_frame_len_map); m_frame_len_map_index %= sizeof(m_frame_len_map);
//gain
switch(m_gain)
{
case ZOOM_025:
mid = ((mid - m_pivot_data) >> 2) + m_pivot_data;
max = ((max - m_pivot_data) >> 2) + m_pivot_data;
min = ((min - m_pivot_data) >> 2) + m_pivot_data;
break;
case ZOOM_050:
mid = ((mid - m_pivot_data) >> 1) + m_pivot_data;
max = ((max - m_pivot_data) >> 1) + m_pivot_data;
min = ((min - m_pivot_data) >> 1) + m_pivot_data;
break;
case ZOOM_200:
mid = ((mid - m_pivot_data) << 1) + m_pivot_data;
max = ((max - m_pivot_data) << 1) + m_pivot_data;
min = ((min - m_pivot_data) << 1) + m_pivot_data;
break;
case ZOOM_100:
default:
break;
}
//map to wave ctrl //map to wave ctrl
int y_min,y_max; int y_min,y_max;
if(m_max_data == m_min_data) if(m_max_data == m_min_data)
{ {
ASSERT(FALSE); ASSERT(FALSE);
} }
y_max = WAVE_LINE_WIDTH + m_wave_bottom - (m_wave_bottom - m_wave_top)*(min - m_min_data)/(m_max_data - m_min_data); y_max = m_wave_bottom + WAVE_LINE_WIDTH - (m_wave_bottom - m_wave_top)*(min - m_min_data)/(m_max_data - m_min_data);
y_min = (-WAVE_LINE_WIDTH) + m_wave_bottom - (m_wave_bottom - m_wave_top)*(max - m_min_data)/(m_max_data - m_min_data); y_min = m_wave_bottom - WAVE_LINE_WIDTH - (m_wave_bottom - m_wave_top)*(max - m_min_data)/(m_max_data - m_min_data);
mid = m_wave_bottom - (m_wave_bottom - m_wave_top)*(mid - m_min_data)/(m_max_data - m_min_data); mid = m_wave_bottom - (m_wave_bottom - m_wave_top)*(mid - m_min_data)/(m_max_data - m_min_data);
CORRECT(y_min, m_wave_bottom, m_wave_top); CORRECT(y_min, m_wave_bottom, m_wave_top);