15 #include "win_scroll.h"
27 index_pad_=PAD_DEFAULT;
29 set_auto_scrollbar(
false);
31 set_auto_refresh(
false);
36 bool win_scroll::down()
39 if( max_amplitude_ == 0 )
return false;
41 if( cur_amplitude_ + index_pad_ > max_amplitude_ ) cur_amplitude_ = max_amplitude_;
42 else cur_amplitude_ += index_pad_;
59 win_scrollbar::update_back();
61 win_scrollbar::update_bar();
67 if( max_amplitude_==0 )
return false ;
69 if( cur_amplitude_-index_pad_ < 0) cur_amplitude_ = 0;
70 else cur_amplitude_ -= index_pad_;
79 void win_scroll::set_pos (
const u_int8 pos)
81 cur_amplitude_ = (max_amplitude_ * pos) / 255;
82 if (max_amplitude_ != 0) update_amplitude ();
85 void win_scroll::update_amplitude()
87 for(lwb::iterator i=list_wb_.begin() ; i!=list_wb_.end() ; i++)
89 (*i)->pad_y() = -cur_amplitude_ ;
90 (*i)->update_position();
93 cursor_y_= ((
height() - win_scrollbar::height_bar()) * cur_amplitude_) / max_amplitude_;
97 void win_scroll::set_space_between_border(
u_int16 tmp)
100 win_container::set_space_with_border(tmp);
104 win_scrollbar::update_bar();
109 void win_scroll::set_space_between_object(
u_int16 tmp)
111 win_container::set_space_with_object(tmp);
115 win_scrollbar::update_bar();
121 win_container::add(wb);
125 win_scrollbar::update_bar();
129 void win_scroll::remove(
win_base *wb)
131 win_container::remove(wb);
135 win_scrollbar::update_bar();
139 void win_scroll::remove_all()
141 win_container::remove_all();
147 win_scrollbar::update_bar();
151 void win_scroll::destroy()
153 win_container::destroy();
159 win_scrollbar::update_bar();
169 win_background::draw(
this);
171 for(lwb::iterator i=list_wb_.begin();i!=list_wb_.end();i++)
174 win_scrollbar::draw(wb_father_);
176 win_border::draw(wb_father_);
194 if(old != amplitude())
196 win_scrollbar::set_visible_scrollbar(amplitude()!=0);
197 win_scrollbar::update_bar();
200 else if(auto_refresh_)
202 u_int16 old = amplitude(); find_amplitude();
203 if(old != amplitude())
204 win_scrollbar::update_bar();
216 if(focus_object_)
return true;
225 void win_scroll::find_amplitude()
228 max_amplitude_ = cursor_y_ = cur_amplitude_ = 0;
232 for(lwb::iterator i=list_wb_.begin() ; i!=list_wb_.end() ; i++)
233 if((*i)->y() + (*i)->height() >
height() - space_with_border() && (*i)->y() + (*i)->height() -
height() + space_with_border() > max_amplitude_ )
234 max_amplitude_ = (*i)->y() + (*i)->height() -
height() + space_with_border();