mirror of
https://gitee.com/idea4good/GuiLite.git
synced 2025-06-07 15:47:18 +08:00
refactor wave ctrl
This commit is contained in:
parent
6213bdb1e8
commit
f6fbf66e58
@ -7,14 +7,6 @@ typedef enum
|
||||
SCAN_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_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_speed(unsigned int speed);
|
||||
|
||||
void set_max_min_base(short max_data, short min_data, short data_base);
|
||||
void set_wave_gain(E_WAVE_GAIN gain);
|
||||
void set_max_min(short max_data, short min_data);
|
||||
void set_wave(c_wave_buffer* wave){m_wave = wave;}
|
||||
c_wave_buffer* get_wave(){return m_wave;}
|
||||
void clear_data();
|
||||
@ -69,8 +60,6 @@ protected:
|
||||
|
||||
short m_max_data;
|
||||
short m_min_data;
|
||||
short m_pivot_data; //for wave gain and fill mode
|
||||
E_WAVE_GAIN m_gain; //wave gain
|
||||
|
||||
private:
|
||||
c_wave_buffer* m_wave;
|
||||
|
@ -27,11 +27,9 @@ c_wave_ctrl::c_wave_ctrl()
|
||||
m_wave_name = m_wave_unit = 0;
|
||||
m_max_data = 500;
|
||||
m_min_data = 0;
|
||||
m_pivot_data = 250;
|
||||
m_wave_speed = 4;
|
||||
m_wave_data_rate = 0;
|
||||
m_wave_refresh_rate = 1000;
|
||||
m_gain = ZOOM_100;
|
||||
m_frame_len_map_index = 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);
|
||||
}
|
||||
|
||||
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_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)
|
||||
@ -132,36 +124,15 @@ void c_wave_ctrl::refresh_wave(unsigned char frame)
|
||||
m_frame_len_map[m_frame_len_map_index++],
|
||||
(frame | (offset << 8)));
|
||||
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
|
||||
int y_min,y_max;
|
||||
if(m_max_data == m_min_data)
|
||||
{
|
||||
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_min = (-WAVE_LINE_WIDTH) + m_wave_bottom - (m_wave_bottom - m_wave_top)*(max - 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 = 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);
|
||||
|
||||
CORRECT(y_min, m_wave_bottom, m_wave_top);
|
||||
|
Loading…
Reference in New Issue
Block a user