Files
rtorrent/src/display/manager.cc
T
rakshasa b994517819 rtorrent: Initial key handler implemented.
git-svn-id: svn://rakshasa.no/libtorrent/trunk/rtorrent@239 e378c898-3ddf-0310-93e7-cc216c733640
2005-01-28 18:43:39 +00:00

50 lines
1020 B
C++

#include "config.h"
#include <stdexcept>
#include <algorithm>
#include <functional>
#include "canvas.h"
#include "manager.h"
#include "window.h"
namespace display {
void
Manager::adjust_layout() {
adjust_row(begin(), end(), 0, 0, display::Canvas::get_screen_width(), display::Canvas::get_screen_height());
}
void
Manager::adjust_row(iterator bItr, iterator eItr, int x, int y, int w, int h) {
int t;
int dist = std::distance(bItr, eItr);
switch (dist) {
case 1:
bItr->get_window()->resize(x, y, w, h);
break;
case 2:
t = w / 2 + w % 2;
bItr->get_window()->resize(x, y, t, h);
++bItr;
bItr->get_window()->resize(x + t, y, w - t, h);
break;
default:
throw std::logic_error("Manager::adjust_row(...) got a range with invalid number of elements");
}
}
void
Manager::do_update() {
std::for_each(begin(), end(), std::mem_fun_ref(&ManagerElement::redraw));
std::for_each(begin(), end(), std::mem_fun_ref(&ManagerElement::refresh));
Canvas::do_update();
}
}