19 #include "win_scroll.h"
31 index_pad_=PAD_DEFAULT;
33 set_auto_scrollbar(
false);
35 set_auto_refresh(
false);
40 bool win_scroll::down()
43 if( max_amplitude_ == 0 )
return false;
45 if( cur_amplitude_ + index_pad_ > max_amplitude_ ) cur_amplitude_ = max_amplitude_;
46 else cur_amplitude_ += index_pad_;
63 win_scrollbar::update_back();
65 win_scrollbar::update_bar();
71 if( max_amplitude_==0 )
return false ;
73 if( cur_amplitude_-index_pad_ < 0) cur_amplitude_ = 0;
74 else cur_amplitude_ -= index_pad_;
83 void win_scroll::set_pos (
const u_int8 pos)
85 cur_amplitude_ = (max_amplitude_ * pos) / 255;
86 if (max_amplitude_ != 0) update_amplitude ();
89 void win_scroll::update_amplitude()
91 for(lwb::iterator i=list_wb_.begin() ; i!=list_wb_.end() ; i++)
93 (*i)->pad_y() = -cur_amplitude_ ;
94 (*i)->update_position();
97 cursor_y_= ((
height() - win_scrollbar::height_bar()) * cur_amplitude_) / max_amplitude_;
101 void win_scroll::set_space_between_border(
u_int16 tmp)
104 win_container::set_space_with_border(tmp);
108 win_scrollbar::update_bar();
113 void win_scroll::set_space_between_object(
u_int16 tmp)
115 win_container::set_space_with_object(tmp);
119 win_scrollbar::update_bar();
125 win_container::add(wb);
129 win_scrollbar::update_bar();
133 void win_scroll::remove(
win_base *wb)
135 win_container::remove(wb);
139 win_scrollbar::update_bar();
143 void win_scroll::remove_all()
145 win_container::remove_all();
151 win_scrollbar::update_bar();
155 void win_scroll::destroy()
157 win_container::destroy();
163 win_scrollbar::update_bar();
173 win_background::draw(
this);
175 for(lwb::iterator i=list_wb_.begin();i!=list_wb_.end();i++)
178 win_scrollbar::draw(wb_father_);
180 win_border::draw(wb_father_);
198 if(old != amplitude())
200 win_scrollbar::set_visible_scrollbar(amplitude()!=0);
201 win_scrollbar::update_bar();
204 else if(auto_refresh_)
206 u_int16 old = amplitude(); find_amplitude();
207 if(old != amplitude())
208 win_scrollbar::update_bar();
220 if(focus_object_)
return true;
229 void win_scroll::find_amplitude()
232 max_amplitude_ = cursor_y_ = cur_amplitude_ = 0;
236 for(lwb::iterator i=list_wb_.begin() ; i!=list_wb_.end() ; i++)
237 if((*i)->y() + (*i)->height() >
height() - space_with_border() && (*i)->y() + (*i)->height() -
height() + space_with_border() > max_amplitude_ )
238 max_amplitude_ = (*i)->y() + (*i)->height() -
height() + space_with_border();