[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Wesnoth-cvs-commits] wesnoth/src Makefile.am multiplayer.cpp multipl...
From: |
Philippe Plantier |
Subject: |
[Wesnoth-cvs-commits] wesnoth/src Makefile.am multiplayer.cpp multipl... |
Date: |
Mon, 01 Nov 2004 13:12:35 -0500 |
CVSROOT: /cvsroot/wesnoth
Module name: wesnoth
Branch:
Changes by: Philippe Plantier <address@hidden> 04/11/01 18:06:37
Modified files:
src : Makefile.am multiplayer.cpp multiplayer.hpp
multiplayer_connect.cpp multiplayer_connect.hpp
multiplayer_lobby.cpp multiplayer_lobby.hpp
sdl_utils.hpp
src/widgets : button.cpp button.hpp file_chooser.cpp
file_chooser.hpp menu.cpp menu.hpp
progressbar.cpp progressbar.hpp scrollbar.cpp
scrollbar.hpp slider.cpp slider.hpp textbox.cpp
textbox.hpp widget.cpp widget.hpp
Added files:
src/widgets : label.cpp label.hpp scrollpane.cpp
scrollpane.hpp
Log message:
Fixed bug 10829 (multiplayer setup screen broken in low resolutions)
and bug
9868 (resizing in multiplayer lobby creates some glitches.
Added 2 new widgets:
* The scrollpane, which contains other widgets and makes them scroll
* The label, a basic text label
Added a "clip box" parameter to widgets.
Factored the hidden(), dirty() checks, and background restoration in
the widget
system. Now, draw() is implemented in widgets.cpp, and widgets implement
draw_contents();
CVSWeb URLs:
http://savannah.gnu.org/cgi-bin/viewcvs/wesnoth/wesnoth/src/Makefile.am.diff?tr1=1.57&tr2=1.58&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/wesnoth/wesnoth/src/multiplayer.cpp.diff?tr1=1.126&tr2=1.127&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/wesnoth/wesnoth/src/multiplayer.hpp.diff?tr1=1.23&tr2=1.24&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/wesnoth/wesnoth/src/multiplayer_connect.cpp.diff?tr1=1.84&tr2=1.85&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/wesnoth/wesnoth/src/multiplayer_connect.hpp.diff?tr1=1.19&tr2=1.20&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/wesnoth/wesnoth/src/multiplayer_lobby.cpp.diff?tr1=1.47&tr2=1.48&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/wesnoth/wesnoth/src/multiplayer_lobby.hpp.diff?tr1=1.7&tr2=1.8&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/wesnoth/wesnoth/src/sdl_utils.hpp.diff?tr1=1.48&tr2=1.49&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/wesnoth/wesnoth/src/widgets/label.cpp?rev=1.1
http://savannah.gnu.org/cgi-bin/viewcvs/wesnoth/wesnoth/src/widgets/label.hpp?rev=1.1
http://savannah.gnu.org/cgi-bin/viewcvs/wesnoth/wesnoth/src/widgets/scrollpane.cpp?rev=1.1
http://savannah.gnu.org/cgi-bin/viewcvs/wesnoth/wesnoth/src/widgets/scrollpane.hpp?rev=1.1
http://savannah.gnu.org/cgi-bin/viewcvs/wesnoth/wesnoth/src/widgets/button.cpp.diff?tr1=1.46&tr2=1.47&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/wesnoth/wesnoth/src/widgets/button.hpp.diff?tr1=1.27&tr2=1.28&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/wesnoth/wesnoth/src/widgets/file_chooser.cpp.diff?tr1=1.8&tr2=1.9&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/wesnoth/wesnoth/src/widgets/file_chooser.hpp.diff?tr1=1.2&tr2=1.3&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/wesnoth/wesnoth/src/widgets/menu.cpp.diff?tr1=1.66&tr2=1.67&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/wesnoth/wesnoth/src/widgets/menu.hpp.diff?tr1=1.25&tr2=1.26&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/wesnoth/wesnoth/src/widgets/progressbar.cpp.diff?tr1=1.3&tr2=1.4&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/wesnoth/wesnoth/src/widgets/progressbar.hpp.diff?tr1=1.2&tr2=1.3&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/wesnoth/wesnoth/src/widgets/scrollbar.cpp.diff?tr1=1.17&tr2=1.18&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/wesnoth/wesnoth/src/widgets/scrollbar.hpp.diff?tr1=1.7&tr2=1.8&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/wesnoth/wesnoth/src/widgets/slider.cpp.diff?tr1=1.31&tr2=1.32&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/wesnoth/wesnoth/src/widgets/slider.hpp.diff?tr1=1.19&tr2=1.20&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/wesnoth/wesnoth/src/widgets/textbox.cpp.diff?tr1=1.60&tr2=1.61&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/wesnoth/wesnoth/src/widgets/textbox.hpp.diff?tr1=1.33&tr2=1.34&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/wesnoth/wesnoth/src/widgets/widget.cpp.diff?tr1=1.21&tr2=1.22&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/wesnoth/wesnoth/src/widgets/widget.hpp.diff?tr1=1.18&tr2=1.19&r1=text&r2=text
Patches:
Index: wesnoth/src/Makefile.am
diff -u wesnoth/src/Makefile.am:1.57 wesnoth/src/Makefile.am:1.58
--- wesnoth/src/Makefile.am:1.57 Sun Oct 31 12:45:50 2004
+++ wesnoth/src/Makefile.am Mon Nov 1 18:06:36 2004
@@ -94,9 +94,11 @@
widgets/button.cpp \
widgets/file_chooser.cpp \
widgets/combo.cpp \
+ widgets/label.cpp \
widgets/menu.cpp \
widgets/progressbar.cpp \
widgets/scrollbar.cpp \
+ widgets/scrollpane.cpp \
widgets/slider.cpp \
widgets/textbox.cpp \
widgets/widget.cpp \
@@ -171,9 +173,11 @@
widgets/button.hpp \
widgets/file_chooser.hpp \
widgets/combo.hpp \
+ widgets/label.hpp \
widgets/menu.hpp \
widgets/progressbar.hpp \
widgets/scrollbar.hpp \
+ widgets/scrollpane.hpp \
widgets/slider.hpp \
widgets/textbox.hpp \
widgets/widget.hpp \
Index: wesnoth/src/multiplayer.cpp
diff -u wesnoth/src/multiplayer.cpp:1.126 wesnoth/src/multiplayer.cpp:1.127
--- wesnoth/src/multiplayer.cpp:1.126 Sun Oct 31 20:50:13 2004
+++ wesnoth/src/multiplayer.cpp Mon Nov 1 18:06:36 2004
@@ -1,4 +1,4 @@
-/* $Id: multiplayer.cpp,v 1.126 2004/10/31 20:50:13 silene Exp $ */
+/* $Id: multiplayer.cpp,v 1.127 2004/11/01 18:06:36 gruikya Exp $ */
/*
Copyright (C) 2003 by David White <address@hidden>
Part of the Battle for Wesnoth Project http://wesnoth.whitevine.net
@@ -287,9 +287,42 @@
SDL_Rect minimap_rect = {xpos,ypos,minimap_width,minimap_width};
minimap_restorer_ = surface_restorer(&disp_.video(),minimap_rect);
+ name_entry_->hide(false);
+ maps_menu_->hide(false);
+ turns_slider_->hide(false);
+ village_gold_slider_->hide(false);
+ xp_modifier_slider_->hide(false);
+ fog_game_->hide(false);
+ shroud_game_->hide(false);
+ observers_game_->hide(false);
+ vision_combo_->hide(false);
+ right_button->hide(false);
+ left_button->hide(false);
+ regenerate_map_->hide(false);
+ generator_settings_->hide(false);
+ era_combo_->hide(false);
+
std::cerr << "setup dialog end set_area\n";
}
+void multiplayer_game_setup_dialog::clear_area()
+{
+ name_entry_->hide();
+ maps_menu_->hide();
+ turns_slider_->hide();
+ village_gold_slider_->hide();
+ xp_modifier_slider_->hide();
+ fog_game_->hide();
+ shroud_game_->hide();
+ observers_game_->hide();
+ vision_combo_->hide();
+ launch_game_->hide();
+ cancel_game_->hide();
+ regenerate_map_->hide();
+ generator_settings_->hide();
+ era_combo_->hide();
+}
+
lobby::RESULT multiplayer_game_setup_dialog::process()
{
CKey key;
Index: wesnoth/src/multiplayer.hpp
diff -u wesnoth/src/multiplayer.hpp:1.23 wesnoth/src/multiplayer.hpp:1.24
--- wesnoth/src/multiplayer.hpp:1.23 Sat Oct 9 21:14:47 2004
+++ wesnoth/src/multiplayer.hpp Mon Nov 1 18:06:36 2004
@@ -1,4 +1,4 @@
-/* $Id: multiplayer.hpp,v 1.23 2004/10/09 21:14:47 Sirp Exp $ */
+/* $Id: multiplayer.hpp,v 1.24 2004/11/01 18:06:36 gruikya Exp $ */
/*
Copyright (C) 2003 by David White <address@hidden>
Part of the Battle for Wesnoth Project http://wesnoth.whitevine.net
@@ -42,7 +42,9 @@
multiplayer_game_setup_dialog(display& disp, game_data& units_data,
const config& cfg, game_state& state, bool server=false,
const std::string& controller="ai");
- void set_area(const SDL_Rect& area);
+ virtual void set_area(const SDL_Rect& area);
+ virtual void clear_area();
+
lobby::RESULT process();
void start_game();
Index: wesnoth/src/multiplayer_connect.cpp
diff -u wesnoth/src/multiplayer_connect.cpp:1.84
wesnoth/src/multiplayer_connect.cpp:1.85
--- wesnoth/src/multiplayer_connect.cpp:1.84 Sun Oct 31 20:50:13 2004
+++ wesnoth/src/multiplayer_connect.cpp Mon Nov 1 18:06:36 2004
@@ -1,4 +1,4 @@
-/* $Id: multiplayer_connect.cpp,v 1.84 2004/10/31 20:50:13 silene Exp $ */
+/* $Id: multiplayer_connect.cpp,v 1.85 2004/11/01 18:06:36 gruikya Exp $ */
/*
Copyright (C) 2003 by David White <address@hidden>
Part of the Battle for Wesnoth Project http://wesnoth.whitevine.net
@@ -43,12 +43,13 @@
disp_(&disp), cfg_(&cfg), data_(&data), state_(&state),
show_replay_(false), save_(false), join_(join),
player_types_(), player_races_(), player_teams_(),
- player_colors_(), combos_type_(), combos_race_(),
+ player_colors_(), scroll_pane_(disp), combos_type_(),
combos_race_(),
combos_leader_(), combos_team_(), combos_color_(), sliders_gold_(),
- ai_(gui::button(disp, _(" Computer vs Computer "))),
- launch_(gui::button(disp, _("I'm Ready"))),
- cancel_(gui::button(disp, _("Cancel"))),
- message_full_(true), default_controller_(default_controller)
+ ai_(disp, _(" Computer vs Computer ")),
+ launch_(disp, _("I'm Ready")),
+ cancel_(disp, _("Cancel")),
+ waiting_label_(disp, ""),
+ message_full_(true), default_controller_(default_controller)
{
// Send Initial information
config response;
@@ -359,7 +360,8 @@
right_button->set_location(right - right_button->width() -
gui::ButtonHPadding,bottom-right_button->height()-gui::ButtonVPadding);
left_button->set_location(right - right_button->width() -
left_button->width() -
gui::ButtonHPadding*2,bottom-left_button->height()-gui::ButtonVPadding);
- ai_.set_location(left+30,bottom-60);
+ ai_.set_location(left+30,
bottom-left_button->height()-gui::ButtonVPadding);
+ waiting_label_.set_location(ai_.location().x + ai_.location().w + 10,
bottom-left_button->height()-gui::ButtonVPadding);
//Title and labels
gui::draw_dialog_title(left,top,disp_,_("Game Lobby"));
@@ -395,44 +397,46 @@
return;
}
- combos_type_.clear();
- combos_race_.clear();
- combos_leader_.clear();
- combos_team_.clear();
- combos_color_.clear();
- sliders_gold_.clear();
+ //Show buttons
+ ai_.hide(false);
+ launch_.hide(false);
+ cancel_.hide(false);
+ waiting_label_.hide(false);
+ scroll_pane_.hide(false);
+
+ SDL_Rect scroll_pane_rect;
+ scroll_pane_rect.x = rect.x;
+ scroll_pane_rect.y = rect.y + 50;
+ scroll_pane_rect.w = rect.w;
+ scroll_pane_rect.h = launch_.location().y - scroll_pane_rect.y -
gui::ButtonVPadding;
+ scroll_pane_.set_location(scroll_pane_rect);
config::child_iterator sd;
for(sd = sides.first; sd != sides.second; ++sd) {
const int side_num = sd - sides.first;
//Player number
- font::draw_text(disp_,rect, font::SIZE_XLARGE,
font::GOOD_COLOUR,
- (*sd)->values["side"], left+10,
top+53+(60*side_num));
+ player_numbers_.push_back(gui::label(*disp_,
(*sd)->values["side"],
+ font::SIZE_XLARGE, font::GOOD_COLOUR));
//Player type
combos_type_.push_back(gui::combo(*disp_, player_types_));
- combos_type_.back().set_location(left+30,top+55+(60*side_num));
//Player race
combos_race_.push_back(gui::combo(*disp_, player_races_));
- combos_race_.back().set_location(left+145,top+55+(60*side_num));
//Player leader
std::vector<std::string> dummy_leaders;
dummy_leaders.push_back("-");
combos_leader_.push_back(gui::combo(*disp_, dummy_leaders));
-
combos_leader_.back().set_location(left+145,top+85+(60*side_num));
//Player team
combos_team_.push_back(gui::combo(*disp_, player_teams_));
- combos_team_.back().set_location(left+260,top+55+(60*side_num));
combos_team_.back().set_selected(side_num);
//Player color
combos_color_.push_back(gui::combo(*disp_, player_colors_));
-
combos_color_.back().set_location(left+375,top+55+(60*side_num));
combos_color_.back().set_selected(side_num);
SDL_Rect r;
@@ -442,15 +446,15 @@
r.y = top+55+(60*side_num);
r.w = launch_.width()-5;
r.h = launch_.height();
+
sliders_gold_.push_back(gui::slider(*disp_));
- sliders_gold_.back().set_location(r);
sliders_gold_.back().set_min(20);
sliders_gold_.back().set_max(1000);
sliders_gold_.back().set_increment(25);
sliders_gold_.back().set_value(lexical_cast_default<int>((**sd)["gold"],100));
- r.w = 30;
- r.x = left+603;
- gold_bg_.push_back(surface_restorer(&disp_->video(),r));
+ sliders_gold_.back().set_location(r);
+
+ labels_gold_.push_back(gui::label(*disp_, "100",
font::SIZE_NORMAL, font::GOOD_COLOUR));
combos_race_.back().enable(!save_);
combos_leader_.back().enable(!save_);
@@ -464,6 +468,17 @@
if (!save_) {
for(sd = sides.first; sd != sides.second; ++sd) {
const int side_num = sd - sides.first;
+ const int spos = 60 * side_num;
+
+ scroll_pane_.add_widget(&player_numbers_[side_num], 10,
3 + spos);
+ scroll_pane_.add_widget(&combos_type_[side_num], 30, 5
+ spos);
+ scroll_pane_.add_widget(&combos_race_[side_num], 145, 5
+ spos);
+ scroll_pane_.add_widget(&combos_leader_[side_num], 145,
35 + spos);
+ scroll_pane_.add_widget(&combos_team_[side_num], 260, 5
+ spos);
+ scroll_pane_.add_widget(&combos_color_[side_num], 375,
5 + spos);
+ scroll_pane_.add_widget(&sliders_gold_[side_num], 490,
5 + spos);
+ scroll_pane_.add_widget(&labels_gold_[side_num], 500 +
sliders_gold_[side_num].width(), 5 + spos);
+
player_leaders_[side_num].set_combo(&combos_leader_[side_num]);
}
}
@@ -473,6 +488,25 @@
update_whole_screen();
}
+void mp_connect::clear_area()
+{
+ scroll_pane_.clear();
+
+ combos_type_.clear();
+ combos_race_.clear();
+ combos_leader_.clear();
+ combos_team_.clear();
+ combos_color_.clear();
+ sliders_gold_.clear();
+ labels_gold_.clear();
+
+ ai_.hide();
+ launch_.hide();
+ cancel_.hide();
+ waiting_label_.hide();
+ scroll_pane_.hide();
+}
+
void mp_connect::gui_update()
{
//Update the GUI based on current config settings.
@@ -538,30 +572,16 @@
player_leaders_[n].set_leader(side["type"]);
//Player Gold
- rect.x = rect_.x + 603;
- rect.y = rect_.y + 55 + (60 * n);
- rect.w = 30;
- rect.h = launch_.height();
- gold_bg_[n].restore();
- font::draw_text(disp_, disp_->screen_area(), font::SIZE_SMALL,
- font::GOOD_COLOUR,
- side["gold"],
- rect.x, rect.y);
- update_rect(rect);
+ labels_gold_[n].set_text(side["gold"]);
}
const bool full = is_full();
if(full != message_full_) {
message_full_ = full;
if(full) {
- message_bg_.restore();
- message_bg_ = surface_restorer();
+ waiting_label_.set_text("");
} else {
- SDL_Rect rect =
font::draw_text(NULL,rect_,font::SIZE_SMALL,font::NORMAL_COLOUR,_("Waiting for
network players to join"),0,0);
- rect.x = ai_.location().x + ai_.location().w + 10;
- rect.y = ai_.location().y;
- message_bg_ = surface_restorer(&disp_->video(),rect);
-
font::draw_text(disp_,rect,font::SIZE_SMALL,font::NORMAL_COLOUR,_("Waiting for
network players to join"),rect.x,rect.y);
+ waiting_label_.set_text(_("Waiting for network players
to join"));
}
}
}
@@ -680,15 +700,8 @@
{
side["gold"] = playergold.str();
- SDL_Rect rect;
- rect.x = rect_.x + 603;
- rect.y = rect_.y + 55 + (60 * n);
- rect.w = 30;
- rect.h = launch_.height();
- gold_bg_[n].restore();
- font::draw_text(disp_, rect_,
font::SIZE_SMALL,font::GOOD_COLOUR,(*sides.first[n])["gold"],
- rect.x, rect.y);
- update_rect(rect);
+ //Player Gold
+ labels_gold_[n].set_text(side["gold"]);
level_changed = true;
}
}
@@ -794,18 +807,7 @@
void mp_connect::start_game()
{
- combos_type_.clear();
- combos_race_.clear();
- combos_leader_.clear();
- combos_team_.clear();
- combos_color_.clear();
- sliders_gold_.clear();
-
- ai_.hide();
- launch_.hide();
- cancel_.hide();
- gold_bg_.clear();
-
+ clear_area();
//Tell everyone to start
config cfg;
Index: wesnoth/src/multiplayer_connect.hpp
diff -u wesnoth/src/multiplayer_connect.hpp:1.19
wesnoth/src/multiplayer_connect.hpp:1.20
--- wesnoth/src/multiplayer_connect.hpp:1.19 Sat Oct 9 21:14:47 2004
+++ wesnoth/src/multiplayer_connect.hpp Mon Nov 1 18:06:36 2004
@@ -1,4 +1,4 @@
-/* $Id: multiplayer_connect.hpp,v 1.19 2004/10/09 21:14:47 Sirp Exp $ */
+/* $Id: multiplayer_connect.hpp,v 1.20 2004/11/01 18:06:36 gruikya Exp $ */
/*
Copyright (C) 2003 by David White <address@hidden>
Part of the Battle for Wesnoth Project http://wesnoth.whitevine.net
@@ -21,6 +21,8 @@
#include "widgets/combo.hpp"
#include "widgets/menu.hpp"
#include "widgets/slider.hpp"
+#include "widgets/scrollpane.hpp"
+#include "widgets/label.hpp"
#include <deque>
#include <iostream>
@@ -44,7 +46,9 @@
void start_game();
private:
- void set_area(const SDL_Rect& rect);
+ virtual void set_area(const SDL_Rect& rect);
+ virtual void clear_area();
+
lobby::RESULT process();
bool manages_network() const { return true; }
bool get_network_data(config& cfg);
@@ -86,20 +90,22 @@
//std::vector<std::vector<std::string> > player_leaders_;
std::vector<leader_list_manager> player_leaders_;
+ gui::scrollpane scroll_pane_;
+
+ std::vector<gui::label> player_numbers_;
std::vector<gui::combo> combos_type_;
std::vector<gui::combo> combos_race_;
std::vector<gui::combo> combos_leader_;
std::vector<gui::combo> combos_team_;
std::vector<gui::combo> combos_color_;
std::vector<gui::slider> sliders_gold_;
+ std::vector<gui::label> labels_gold_;
gui::button ai_;
gui::button launch_;
gui::button cancel_;
- std::vector<surface_restorer> gold_bg_;
-
- surface_restorer message_bg_;
+ gui::label waiting_label_;
bool message_full_;
std::deque<config> network_data_;
Index: wesnoth/src/multiplayer_lobby.cpp
diff -u wesnoth/src/multiplayer_lobby.cpp:1.47
wesnoth/src/multiplayer_lobby.cpp:1.48
--- wesnoth/src/multiplayer_lobby.cpp:1.47 Sun Oct 31 20:50:13 2004
+++ wesnoth/src/multiplayer_lobby.cpp Mon Nov 1 18:06:36 2004
@@ -387,6 +387,7 @@
}
if(disp.video().modeChanged()) {
+ dlg->clear_area();
return CONTINUE;
}
Index: wesnoth/src/multiplayer_lobby.hpp
diff -u wesnoth/src/multiplayer_lobby.hpp:1.7
wesnoth/src/multiplayer_lobby.hpp:1.8
--- wesnoth/src/multiplayer_lobby.hpp:1.7 Sun Aug 29 11:12:20 2004
+++ wesnoth/src/multiplayer_lobby.hpp Mon Nov 1 18:06:36 2004
@@ -16,6 +16,7 @@
{
public:
virtual void set_area(const SDL_Rect& area) = 0;
+ virtual void clear_area() {};
virtual RESULT process() = 0;
virtual bool manages_network() const { return false; }
virtual bool get_network_data(config& out) { return false; }
Index: wesnoth/src/sdl_utils.hpp
diff -u wesnoth/src/sdl_utils.hpp:1.48 wesnoth/src/sdl_utils.hpp:1.49
--- wesnoth/src/sdl_utils.hpp:1.48 Sun Oct 31 20:50:13 2004
+++ wesnoth/src/sdl_utils.hpp Mon Nov 1 18:06:36 2004
@@ -1,4 +1,4 @@
-/* $Id: sdl_utils.hpp,v 1.48 2004/10/31 20:50:13 silene Exp $ */
+/* $Id: sdl_utils.hpp,v 1.49 2004/11/01 18:06:36 gruikya Exp $ */
/*
Copyright (C) 2003 by David White <address@hidden>
Part of the Battle for Wesnoth Project http://wesnoth.whitevine.net
@@ -199,7 +199,7 @@
struct clip_rect_setter
{
- clip_rect_setter(surface surf, SDL_Rect& r) : surface_(surf)
+ clip_rect_setter(surface surf, const SDL_Rect& r) : surface_(surf)
{
SDL_GetClipRect(surface_,&rect);
SDL_SetClipRect(surface_,&r);
Index: wesnoth/src/widgets/button.cpp
diff -u wesnoth/src/widgets/button.cpp:1.46 wesnoth/src/widgets/button.cpp:1.47
--- wesnoth/src/widgets/button.cpp:1.46 Sun Oct 31 21:42:56 2004
+++ wesnoth/src/widgets/button.cpp Mon Nov 1 18:06:37 2004
@@ -1,4 +1,4 @@
-/* $Id: button.cpp,v 1.46 2004/10/31 21:42:56 silene Exp $ */
+/* $Id: button.cpp,v 1.47 2004/11/01 18:06:37 gruikya Exp $ */
/*
Copyright (C) 2003 by David White <address@hidden>
Part of the Battle for Wesnoth Project http://wesnoth.whitevine.net
@@ -136,14 +136,8 @@
return enabled_;
}
-void button::draw()
+void button::draw_contents()
{
- if (hidden() || !dirty())
- return;
-
- if (type_ == TYPE_CHECK)
- bg_restore();
-
surface image = image_;
const int image_w = image_->w;
@@ -182,8 +176,6 @@
font::draw_text(&disp(), clipArea, font_size, font::BUTTON_COLOUR,
etext, textx, texty);
update_rect(loc);
-
- set_dirty(false);
}
bool button::hit(int x, int y) const
Index: wesnoth/src/widgets/button.hpp
diff -u wesnoth/src/widgets/button.hpp:1.27 wesnoth/src/widgets/button.hpp:1.28
--- wesnoth/src/widgets/button.hpp:1.27 Sun Oct 31 20:50:13 2004
+++ wesnoth/src/widgets/button.hpp Mon Nov 1 18:06:37 2004
@@ -1,4 +1,4 @@
-/* $Id: button.hpp,v 1.27 2004/10/31 20:50:13 silene Exp $ */
+/* $Id: button.hpp,v 1.28 2004/11/01 18:06:37 gruikya Exp $ */
/*
Copyright (C) 2003 by David White <address@hidden>
Part of the Battle for Wesnoth Project http://wesnoth.whitevine.net
@@ -58,7 +58,7 @@
virtual void mouse_motion(const SDL_MouseMotionEvent& event);
virtual void mouse_down(const SDL_MouseButtonEvent& event);
virtual void mouse_up(const SDL_MouseButtonEvent& event);
- virtual void draw();
+ virtual void draw_contents();
private:
Index: wesnoth/src/widgets/file_chooser.cpp
diff -u wesnoth/src/widgets/file_chooser.cpp:1.8
wesnoth/src/widgets/file_chooser.cpp:1.9
--- wesnoth/src/widgets/file_chooser.cpp:1.8 Sun Oct 31 20:50:13 2004
+++ wesnoth/src/widgets/file_chooser.cpp Mon Nov 1 18:06:37 2004
@@ -72,7 +72,6 @@
}
void file_chooser::display_current_files() {
- bg_restore();
std::vector<std::string> to_show;
if (!is_root(current_dir_)) {
to_show.push_back("..");
@@ -116,16 +115,12 @@
}
}
-void file_chooser::draw() {
- if (!dirty()) {
- return;
- }
+void file_chooser::draw_contents() {
display_current_files();
display_chosen_file();
font::draw_text(&disp_, current_path_rect_, font::SIZE_NORMAL,
font::NORMAL_COLOUR,
current_dir_, current_path_rect_.x,
current_path_rect_.y,
disp_.video().getSurface());
- set_dirty(false);
}
void file_chooser::process() {
Index: wesnoth/src/widgets/file_chooser.hpp
diff -u wesnoth/src/widgets/file_chooser.hpp:1.2
wesnoth/src/widgets/file_chooser.hpp:1.3
--- wesnoth/src/widgets/file_chooser.hpp:1.2 Wed Jun 2 22:08:06 2004
+++ wesnoth/src/widgets/file_chooser.hpp Mon Nov 1 18:06:37 2004
@@ -32,7 +32,7 @@
/// the one the file is in.
file_chooser(display &disp, std::string start_file="");
- void draw();
+ void draw_contents();
void process();
void set_dirty(bool dirty=true);
Index: wesnoth/src/widgets/menu.cpp
diff -u wesnoth/src/widgets/menu.cpp:1.66 wesnoth/src/widgets/menu.cpp:1.67
--- wesnoth/src/widgets/menu.cpp:1.66 Sun Oct 31 20:50:13 2004
+++ wesnoth/src/widgets/menu.cpp Mon Nov 1 18:06:37 2004
@@ -125,7 +125,8 @@
void menu::change_item(int pos1, int pos2,std::string str)
{
items_[pos1][pos2] = str;
- undrawn_items_.insert(pos1);
+ //undrawn_items_.insert(pos1);
+ set_dirty();
}
void menu::erase_item(size_t index)
@@ -150,7 +151,8 @@
items_.clear();
itemRects_.clear();
column_widths_.clear();
- undrawn_items_.clear();
+ //undrawn_items_.clear();
+ set_dirty();
max_items_ = -1; // Force recalculation of the max items.
item_height_ = -1; // Force recalculation of the item height.
// Scrollbar will be reenabled if it is needed.
@@ -221,8 +223,9 @@
if (new_selected == selected_ || new_selected >= items_.size())
return;
- undrawn_items_.insert(selected_);
- undrawn_items_.insert(new_selected);
+ //undrawn_items_.insert(selected_);
+ //undrawn_items_.insert(new_selected);
+ set_dirty();
selected_ = new_selected;
adjust_viewport_to_selection();
}
@@ -452,9 +455,10 @@
}
}
-void menu::draw()
+void menu::draw_contents()
{
- if (hidden() || !dirty() && undrawn_items_.empty())
+#if 0
+ if (undrawn_items_.empty())
return;
if (!dirty()) {
@@ -470,7 +474,7 @@
}
undrawn_items_.clear();
- set_dirty(false);
+#endif
for(size_t i = 0; i != items_.size(); ++i)
draw_item(i);
Index: wesnoth/src/widgets/menu.hpp
diff -u wesnoth/src/widgets/menu.hpp:1.25 wesnoth/src/widgets/menu.hpp:1.26
--- wesnoth/src/widgets/menu.hpp:1.25 Sun Oct 31 20:50:13 2004
+++ wesnoth/src/widgets/menu.hpp Mon Nov 1 18:06:37 2004
@@ -84,7 +84,7 @@
size_t selected_;
bool click_selects_;
bool previous_button_;
- std::set<size_t> undrawn_items_;
+ //std::set<size_t> undrawn_items_;
bool show_result_;
@@ -93,7 +93,7 @@
const std::vector<int>& column_widths() const;
void draw_item(int item);
void clear_item(int item);
- void draw();
+ void draw_contents();
int hit(int x, int y) const;
std::pair<int,int> hit_cell(int x, int y) const;
Index: wesnoth/src/widgets/progressbar.cpp
diff -u wesnoth/src/widgets/progressbar.cpp:1.3
wesnoth/src/widgets/progressbar.cpp:1.4
--- wesnoth/src/widgets/progressbar.cpp:1.3 Fri Sep 24 23:25:09 2004
+++ wesnoth/src/widgets/progressbar.cpp Mon Nov 1 18:06:37 2004
@@ -15,7 +15,7 @@
set_dirty(true);
}
-void progress_bar::draw()
+void progress_bar::draw_contents()
{
surface const surf = disp().video().getSurface();
SDL_Rect area = location();
Index: wesnoth/src/widgets/progressbar.hpp
diff -u wesnoth/src/widgets/progressbar.hpp:1.2
wesnoth/src/widgets/progressbar.hpp:1.3
--- wesnoth/src/widgets/progressbar.hpp:1.2 Sun Jul 18 19:02:25 2004
+++ wesnoth/src/widgets/progressbar.hpp Mon Nov 1 18:06:37 2004
@@ -12,7 +12,7 @@
void set_progress_percent(int progress);
- void draw();
+ void draw_contents();
private:
int progress_;
Index: wesnoth/src/widgets/scrollbar.cpp
diff -u wesnoth/src/widgets/scrollbar.cpp:1.17
wesnoth/src/widgets/scrollbar.cpp:1.18
--- wesnoth/src/widgets/scrollbar.cpp:1.17 Sun Oct 31 20:50:13 2004
+++ wesnoth/src/widgets/scrollbar.cpp Mon Nov 1 18:06:37 2004
@@ -1,4 +1,4 @@
-/* $Id: scrollbar.cpp,v 1.17 2004/10/31 20:50:13 silene Exp $*/
+/* $Id: scrollbar.cpp,v 1.18 2004/11/01 18:06:37 gruikya Exp $*/
/*
Copyright (C) 2003 by David White <address@hidden>
Part of the Battle for Wesnoth Project http://wesnoth.whitevine.net
@@ -161,11 +161,8 @@
return res;
}
-void scrollbar::draw()
+void scrollbar::draw_contents()
{
- if (hidden() || !dirty())
- return;
-
const surface mid_img(image::get_image(state_ != NORMAL ?
scrollbar_mid_hl : scrollbar_mid,
image::UNSCALED));
const surface bottom_img(image::get_image(state_ != NORMAL ?
@@ -218,8 +215,6 @@
surface const screen = disp().video().getSurface();
- bg_restore();
-
// draw scrollbar "groove"
disp().blit_surface(groove.x, groove.y, top_grv);
disp().blit_surface(groove.x, groove.y + top_grv->h, groove_scaled_);
@@ -230,7 +225,6 @@
disp().blit_surface(grip.x, grip.y + top_img->h, mid_scaled_);
disp().blit_surface(grip.x, grip.y + top_img->h + mid_height,
bottom_img);
- set_dirty(false);
update_rect(groove);
}
Index: wesnoth/src/widgets/scrollbar.hpp
diff -u wesnoth/src/widgets/scrollbar.hpp:1.7
wesnoth/src/widgets/scrollbar.hpp:1.8
--- wesnoth/src/widgets/scrollbar.hpp:1.7 Sun Oct 31 20:50:13 2004
+++ wesnoth/src/widgets/scrollbar.hpp Mon Nov 1 18:06:37 2004
@@ -1,4 +1,4 @@
-/* $Id: scrollbar.hpp,v 1.7 2004/10/31 20:50:13 silene Exp $ */
+/* $Id: scrollbar.hpp,v 1.8 2004/11/01 18:06:37 gruikya Exp $ */
/*
Copyright (C) 2003 by David White <address@hidden>
Part of the Battle for Wesnoth Project http://wesnoth.whitevine.net
@@ -63,7 +63,7 @@
protected:
virtual void handle_event(const SDL_Event& event);
virtual void process_event();
- virtual void draw();
+ virtual void draw_contents();
private:
SDL_Rect grip_area() const;
Index: wesnoth/src/widgets/slider.cpp
diff -u wesnoth/src/widgets/slider.cpp:1.31 wesnoth/src/widgets/slider.cpp:1.32
--- wesnoth/src/widgets/slider.cpp:1.31 Sun Oct 31 20:50:13 2004
+++ wesnoth/src/widgets/slider.cpp Mon Nov 1 18:06:37 2004
@@ -1,4 +1,4 @@
-/* $Id: slider.cpp,v 1.31 2004/10/31 20:50:13 silene Exp $ */
+/* $Id: slider.cpp,v 1.32 2004/11/01 18:06:37 gruikya Exp $ */
/*
Copyright (C) 2003 by David White <address@hidden>
Part of the Battle for Wesnoth Project http://wesnoth.whitevine.net
@@ -108,11 +108,8 @@
return res;
}
-void slider::draw()
+void slider::draw_contents()
{
- if (!dirty() || hidden())
- return;
-
const surface image(state_ != NORMAL ? highlightedImage_ : image_);
if (image == NULL)
return;
@@ -123,16 +120,11 @@
surface const screen = disp().video().getSurface();
- bg_restore();
-
SDL_Rect line_rect = { loc.x + image->w / 2, loc.y + loc.h / 2, loc.w -
image->w, 1 };
SDL_FillRect(screen, &line_rect, SDL_MapRGB(screen->format, 255, 255,
255));
SDL_Rect const &slider = slider_area();
disp().blit_surface(slider.x, slider.y, image);
-
- set_dirty(false);
- update_rect(loc);
}
void slider::set_slider_position(int x)
Index: wesnoth/src/widgets/slider.hpp
diff -u wesnoth/src/widgets/slider.hpp:1.19 wesnoth/src/widgets/slider.hpp:1.20
--- wesnoth/src/widgets/slider.hpp:1.19 Sun Oct 31 20:50:13 2004
+++ wesnoth/src/widgets/slider.hpp Mon Nov 1 18:06:37 2004
@@ -1,4 +1,4 @@
-/* $Id: slider.hpp,v 1.19 2004/10/31 20:50:13 silene Exp $ */
+/* $Id: slider.hpp,v 1.20 2004/11/01 18:06:37 gruikya Exp $ */
/*
Copyright (C) 2003 by David White <address@hidden>
Part of the Battle for Wesnoth Project http://wesnoth.whitevine.net
@@ -41,7 +41,7 @@
protected:
virtual void handle_event(const SDL_Event& event);
- virtual void draw();
+ virtual void draw_contents();
private:
void mouse_motion(const SDL_MouseMotionEvent& event);
Index: wesnoth/src/widgets/textbox.cpp
diff -u wesnoth/src/widgets/textbox.cpp:1.60
wesnoth/src/widgets/textbox.cpp:1.61
--- wesnoth/src/widgets/textbox.cpp:1.60 Sun Oct 31 23:12:07 2004
+++ wesnoth/src/widgets/textbox.cpp Mon Nov 1 18:06:37 2004
@@ -1,4 +1,4 @@
-/* $Id: textbox.cpp,v 1.60 2004/10/31 23:12:07 silene Exp $ */
+/* $Id: textbox.cpp,v 1.61 2004/11/01 18:06:37 gruikya Exp $ */
/*
Copyright (C) 2003 by David White <address@hidden>
Part of the Battle for Wesnoth Project http://wesnoth.whitevine.net
@@ -115,13 +115,8 @@
}
}
-void textbox::draw()
+void textbox::draw_contents()
{
- if (hidden() || !dirty())
- return;
-
- bg_restore();
-
const bool has_scrollbar = show_scrollbar();
SDL_Rect loc = location();
if (has_scrollbar)
@@ -177,7 +172,6 @@
draw_cursor((cursor_pos_ == 0 ? 0 : cursor_pos_ - 1), disp());
- set_dirty(false);
update_rect(loc);
}
Index: wesnoth/src/widgets/textbox.hpp
diff -u wesnoth/src/widgets/textbox.hpp:1.33
wesnoth/src/widgets/textbox.hpp:1.34
--- wesnoth/src/widgets/textbox.hpp:1.33 Sun Oct 31 23:12:07 2004
+++ wesnoth/src/widgets/textbox.hpp Mon Nov 1 18:06:37 2004
@@ -1,4 +1,4 @@
-/* $Id: textbox.hpp,v 1.33 2004/10/31 23:12:07 silene Exp $ */
+/* $Id: textbox.hpp,v 1.34 2004/11/01 18:06:37 gruikya Exp $ */
/*
Copyright (C) 2003 by David White <address@hidden>
Part of the Battle for Wesnoth Project http://wesnoth.whitevine.net
@@ -45,7 +45,7 @@
void set_wrap(bool val);
- void draw();
+ void draw_contents();
virtual void set_location(SDL_Rect const &);
using widget::set_location;
Index: wesnoth/src/widgets/widget.cpp
diff -u wesnoth/src/widgets/widget.cpp:1.21 wesnoth/src/widgets/widget.cpp:1.22
--- wesnoth/src/widgets/widget.cpp:1.21 Sun Oct 31 20:50:13 2004
+++ wesnoth/src/widgets/widget.cpp Mon Nov 1 18:06:37 2004
@@ -9,7 +9,7 @@
widget::widget(const widget &o)
: events::handler(), disp_(o.disp_), restorer_(o.restorer_),
rect_(o.rect_),
- focus_(o.focus_), needs_restore_(o.needs_restore_),
+ clip_rect_(o.clip_rect_), focus_(o.focus_),
needs_restore_(o.needs_restore_),
state_(o.state_), volatile_(o.volatile_),
help_text_(o.help_text_), help_string_(o.help_string_)
{
@@ -19,6 +19,10 @@
: disp_(&disp), rect_(EmptyRect), focus_(true), needs_restore_(false),
state_(UNINIT), volatile_(false), help_string_(0)
{
+ clip_rect_.x = 0;
+ clip_rect_.y = 0;
+ clip_rect_.w = disp.screen_area().w;
+ clip_rect_.h = disp.screen_area().h;
}
widget::~widget()
@@ -110,6 +114,12 @@
}
}
+void widget::set_clip_rect(const SDL_Rect& rect)
+{
+ clip_rect_ = rect;
+ set_dirty(true);
+}
+
bool widget::hidden() const
{
return state_ == HIDDEN || state_ == UNINIT;
@@ -139,6 +149,8 @@
void widget::bg_restore() const
{
+ clip_rect_setter set_clip_rect(disp().video().getSurface(), clip_rect_);
+
if (needs_restore_) {
for(std::vector< surface_restorer >::const_iterator i =
restorer_.begin(),
i_end = restorer_.end(); i != i_end; ++i)
@@ -153,6 +165,8 @@
void widget::bg_restore(SDL_Rect const &rect) const
{
+ clip_rect_setter set_clip_rect(disp().video().getSurface(), clip_rect_);
+
for(std::vector< surface_restorer >::const_iterator i =
restorer_.begin(),
i_end = restorer_.end(); i != i_end; ++i)
i->restore(rect);
@@ -165,6 +179,20 @@
state_ = DRAWN;
}
+void widget::draw()
+{
+ if (hidden() || !dirty())
+ return;
+
+ bg_restore();
+
+ clip_rect_setter set_clip_rect(disp().video().getSurface(), clip_rect_);
+ draw_contents();
+
+ update_rect(rect_);
+ set_dirty(false);
+}
+
void widget::volatile_draw()
{
if (!volatile_ || state_ != DRAWN)
Index: wesnoth/src/widgets/widget.hpp
diff -u wesnoth/src/widgets/widget.hpp:1.18 wesnoth/src/widgets/widget.hpp:1.19
--- wesnoth/src/widgets/widget.hpp:1.18 Sun Oct 31 20:50:13 2004
+++ wesnoth/src/widgets/widget.hpp Mon Nov 1 18:06:37 2004
@@ -30,6 +30,8 @@
virtual void hide(bool value = true);
bool hidden() const;
+ void set_clip_rect(const SDL_Rect& rect);
+
//Function to set the widget to draw in 'volatile' mode.
//When in 'volatile' mode, instead of using the normal
//save-background-redraw-when-dirty procedure, redrawing is done
@@ -62,6 +64,9 @@
virtual void handle_event(SDL_Event const &event) {}
+ virtual void draw();
+ virtual void draw_contents() {};
+
private:
void volatile_draw();
void volatile_undraw();
@@ -76,6 +81,7 @@
mutable bool needs_restore_; // Have we drawn ourselves, so that if
moved, we need to restore the background?
enum { UNINIT, HIDDEN, DIRTY, DRAWN } state_;
+ SDL_Rect clip_rect_;
bool volatile_;
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Wesnoth-cvs-commits] wesnoth/src Makefile.am multiplayer.cpp multipl...,
Philippe Plantier <=