ScrollView::ScrollView(int w_, int h_, View *display_view_) :View(w_,h_), scroll_bar(SCROLL_BAR_W, h_ * h_/display_view_->get_h(), this), scroll_bar_bg(SCROLL_BAR_W, h_, this), arrow_up(true, GUIImage("GUIImages/scroll_bar_vert2.bmp")), arrow_down(false, GUIImage("GUIImages/scroll_bar_vert3.bmp")), display_view(display_view_), w_init(w_), h_init(h_), scroll_y(0), scroll_y_vel(0), scrolling(false) { SDL_Color clear = {0xff, 0, 0xff}; GUIImage bg = GUIImage::create_filled(w_, h_, clear); draw_onto_self(bg, VGPoint()); set_clear_color(clear); attach_subview(display_view_, VGPoint()); if (display_view->get_h() <= get_h()) { scrollable = false; resize(min(display_view->get_w(), w_), min(display_view->get_h(), h_)); return; // todo Remove to so you can resize later. } scrollable = true; scroll_bar_bg.display(); scroll_bar.display(); scroll_bar_x = get_w()-scroll_bar_bg.get_w(); attach_subview(&scroll_bar_bg, VGPoint(scroll_bar_x, 0)); attach_subview(&arrow_up, VGPoint(scroll_bar_x, scroll_bar_bottom-7)); // HACK!! attach_subview(&arrow_down, VGPoint(scroll_bar_x, scroll_bar_bottom-7+arrow_up.get_h())); // HACK!! attach_subview(&scroll_bar, VGPoint(scroll_bar_x, scroll_bar_top)); }
MsgNew::MsgNew(int w_, int h_, const std::string& msg_, Button_ctrs_t buttons_) :View(w_,h_), msg_text(new TextView(w_-10, h_-10)), buttons(buttons_) { attach_subview(msg_text, VGPoint(get_w()/2 - msg_text->get_w()/2, 5)); fill_with_color(color); set_msg(msg_); msg_text->set_text_size(20); for (size_t i = 0; i < buttons_.size(); i++) { add_button(buttons_[i]); } }
void DropDownMenu::init_menu_view(int text_size_) { // Init main view resize(get_w(), text_size_ + vertical_padding*2); text_size = text_size_; selected_entry_idx = 0; menu = 0; clicked = false; set_clear_color(green_color_c); fill_with_color(get_clear_color()); // Init menu view int row_size = (text_size + vertical_padding*2); menu = new View(get_w(), (int)(entries.size() ? entries.size() : 1) * row_size); // always display at least one entry menu->draw_onto_self(GUIImage("GUIImages/dropdown_row.bmp"), DispPoint()); // display full menu int i = 0; for (list<string>::iterator it = entries.begin(); it != entries.end(); ++it, ++i) { // menu->attach_subview(new MenuEntry(*it, text_size, *this, i), // DispPoint(0, i * row_size)); menu->draw_onto_self(GUIImage("GUIImages/dropdown_row.bmp"), DispPoint(0, i * row_size)); menu->attach_subview(createTextView(*it, text_size), DispPoint(0, i * row_size)); } attach_subview(menu, DispPoint()); }
void MsgNew::add_button(Button* button) { attach_subview(button, VGPoint(get_w() - 180 - (int)buttons.size()*180, get_h()- 30)); buttons.push_back(button); }