widelands-dev team mailing list archive
-
widelands-dev team
-
Mailing list archive
-
Message #00511
[Merge] lp:~borim/widelands/enhanceCharts into lp:widelands
Borim has proposed merging lp:~borim/widelands/enhanceCharts into lp:widelands.
Requested reviews:
Widelands Developers (widelands-dev)
For more details, see:
https://code.launchpad.net/~borim/widelands/enhanceCharts/+merge/83518
* dynamic color choosing for plots (ware statistics menu)
* draw a 2 pixel wide plot line
--
https://code.launchpad.net/~borim/widelands/enhanceCharts/+merge/83518
Your team Widelands Developers is requested to review the proposed merge of lp:~borim/widelands/enhanceCharts into lp:widelands.
=== modified file 'src/wui/plot_area.cc'
--- src/wui/plot_area.cc 2011-11-09 22:48:22 +0000
+++ src/wui/plot_area.cc 2011-11-27 17:05:28 +0000
@@ -285,7 +285,9 @@
cury -= static_cast<int32_t>(length_y);
}
+ //draw a 2 px wide line
dst.draw_line(lx, ly, curx, cury, color);
+ dst.draw_line(lx, ly + 1, curx, cury + 1, color);
posx -= sub;
@@ -440,6 +442,15 @@
get_game_time_id();
}
+/**
+ * Change the plot color of a registed data stream
+ */
+void WUIPlot_Area::set_plotcolor(uint32_t id, RGBColor color) {
+ if (id > m_plotdata.size()) return;
+
+ m_plotdata[id].plotcolor = color;
+}
+
/*
* Show this plot data?
*/
=== modified file 'src/wui/plot_area.h'
--- src/wui/plot_area.h 2011-11-21 17:35:01 +0000
+++ src/wui/plot_area.h 2011-11-27 17:05:28 +0000
@@ -89,6 +89,8 @@
void set_plotmode(int32_t id) {m_plotmode = id;}
+ void set_plotcolor(uint32_t id, RGBColor color);
+
std::vector<std::string> get_labels();
protected:
=== modified file 'src/wui/ware_statistics_menu.cc'
--- src/wui/ware_statistics_menu.cc 2011-11-21 21:28:38 +0000
+++ src/wui/ware_statistics_menu.cc 2011-11-27 17:05:28 +0000
@@ -36,6 +36,7 @@
#include "ui_basic/tabpanel.h"
#include "ui_basic/slider.h"
+#include <bitset>
#define MIN_WARES_PER_LINE 7
#define MAX_WARES_PER_LINE 11
@@ -48,250 +49,64 @@
static const char pic_tab_economy[] = "pics/menu_tab_wares.png";
static const RGBColor colors[] = {
- RGBColor (0, 210, 254),
- RGBColor(255, 157, 74),
- RGBColor(222, 97, 98),
- RGBColor(115, 82, 157),
- RGBColor(172, 113, 205),
- RGBColor(156, 117, 189),
- RGBColor(156, 165, 172),
- RGBColor (16, 56, 164),
- RGBColor(115, 68, 32),
- RGBColor(172, 0, 0),
- RGBColor (0, 85, 16),
- RGBColor (98, 36, 90),
- RGBColor (90, 64, 115),
+ RGBColor(115, 115, 115), //inactive
+ RGBColor(255, 0, 0),
+ RGBColor (0, 144, 12),
+ RGBColor (0, 0, 255),
+ RGBColor(249, 125, 6),
+ RGBColor(255, 204, 0),
+ RGBColor(101, 0, 33),
+ RGBColor (0, 143, 255),
+ RGBColor (0, 70, 31),
+ RGBColor(106, 44, 5),
+ RGBColor(143, 1, 1),
+ RGBColor (0, 255, 0),
+ RGBColor (85, 0, 111),
+ RGBColor (0, 243, 255),
RGBColor (32, 36, 32),
- RGBColor(153, 153, 153),
- RGBColor(102, 102, 102),
- RGBColor (51, 51, 51),
- RGBColor(255, 204, 0),
- RGBColor(255, 153, 0),
- RGBColor(255, 102, 0),
+ RGBColor(189, 118, 24),
+ RGBColor(255, 0, 51),
+ RGBColor(153, 204, 0),
+ RGBColor (0, 60, 77),
+ RGBColor (77, 15, 224),
+ RGBColor(255, 0, 208),
RGBColor(255, 51, 0),
- RGBColor (51, 51, 51),
- RGBColor(102, 102, 102),
- RGBColor(153, 153, 153),
- RGBColor(204, 204, 204),
+ RGBColor (43, 72, 183),
+ RGBColor(255, 93, 93),
+ RGBColor (15, 177, 18),
+ RGBColor(252, 89, 242),
RGBColor(255, 255, 255),
- RGBColor(153, 204, 0),
- RGBColor(204, 153, 0),
- RGBColor(255, 204, 51),
+ RGBColor (61, 214, 128),
+ RGBColor(102, 102, 0),
+ RGBColor(169, 118, 93),
RGBColor(255, 204, 102),
- RGBColor(255, 153, 102),
- RGBColor(255, 102, 51),
+ RGBColor (65, 50, 106),
+ RGBColor(220, 255, 0),
RGBColor(204, 51, 0),
- RGBColor(204, 0, 51),
- RGBColor(204, 255, 0),
+ RGBColor(192, 0, 67),
+ RGBColor(120, 203, 65),
RGBColor(204, 255, 51),
- RGBColor (51, 51, 0),
- RGBColor(102, 102, 0),
+ RGBColor (20, 104, 109),
+ RGBColor(129, 80, 21),
RGBColor(153, 153, 0),
- RGBColor(204, 204, 0),
- RGBColor(255, 255, 0),
- RGBColor(204, 153, 51),
+ RGBColor(221, 69, 77),
+ RGBColor (34, 136, 83),
+ RGBColor(106, 107, 207),
RGBColor(204, 102, 51),
- RGBColor (51, 0, 0),
- RGBColor(102, 0, 0),
- RGBColor(153, 0, 0),
- RGBColor(204, 0, 0),
- RGBColor(255, 0, 0),
- RGBColor(255, 51, 102),
- RGBColor(255, 0, 51),
- RGBColor(153, 255, 0),
- RGBColor(204, 255, 102),
- RGBColor(153, 204, 51),
- RGBColor(102, 102, 51),
- RGBColor(153, 153, 51),
- RGBColor(204, 204, 51),
- RGBColor(255, 255, 51),
- RGBColor(153, 102, 0),
- RGBColor(153, 51, 0),
- RGBColor(102, 51, 51),
- RGBColor(153, 51, 51),
- RGBColor(204, 51, 51),
- RGBColor(255, 51, 51),
- RGBColor(204, 51, 102),
- RGBColor(255, 102, 153),
- RGBColor(255, 0, 102),
- RGBColor(102, 255, 0),
- RGBColor(153, 255, 102),
- RGBColor(102, 204, 51),
- RGBColor(102, 153, 0),
- RGBColor(153, 153, 102),
- RGBColor(204, 204, 102),
- RGBColor(255, 255, 102),
- RGBColor(153, 102, 51),
- RGBColor(102, 51, 0),
- RGBColor(153, 102, 102),
- RGBColor(204, 102, 102),
- RGBColor(255, 102, 102),
- RGBColor(153, 0, 51),
- RGBColor(204, 51, 153),
- RGBColor(255, 102, 204),
- RGBColor(255, 0, 153),
- RGBColor (51, 255, 0),
- RGBColor(102, 255, 51),
- RGBColor (51, 153, 0),
- RGBColor(102, 204, 0),
- RGBColor(153, 255, 51),
- RGBColor(204, 204, 153),
- RGBColor(255, 255, 153),
- RGBColor(204, 153, 102),
- RGBColor(204, 102, 0),
- RGBColor(204, 153, 153),
- RGBColor(255, 153, 153),
- RGBColor(255, 51, 153),
- RGBColor(204, 0, 102),
- RGBColor(153, 0, 102),
- RGBColor(255, 51, 204),
- RGBColor(255, 0, 204),
- RGBColor (0, 204, 0),
- RGBColor (51, 204, 0),
- RGBColor (51, 102, 0),
- RGBColor(102, 153, 51),
- RGBColor(153, 204, 102),
- RGBColor(204, 255, 153),
- RGBColor(255, 255, 204),
- RGBColor(255, 204, 153),
- RGBColor(255, 153, 51),
- RGBColor(255, 204, 204),
- RGBColor(255, 153, 204),
- RGBColor(204, 102, 153),
- RGBColor(153, 51, 102),
- RGBColor(102, 0, 51),
- RGBColor(204, 0, 153),
- RGBColor (51, 0, 51),
- RGBColor (51, 204, 51),
- RGBColor(102, 204, 102),
- RGBColor (0, 255, 0),
- RGBColor (51, 255, 51),
- RGBColor(102, 255, 102),
- RGBColor(153, 255, 153),
- RGBColor(204, 255, 204),
- RGBColor(204, 153, 204),
- RGBColor(153, 102, 153),
- RGBColor(153, 51, 153),
- RGBColor(153, 0, 153),
- RGBColor(102, 51, 102),
- RGBColor(102, 0, 102),
- RGBColor (0, 102, 0),
- RGBColor (51, 102, 51),
- RGBColor (0, 153, 0),
- RGBColor (51, 153, 51),
- RGBColor(102, 153, 102),
- RGBColor(153, 204, 153),
- RGBColor(255, 204, 255),
- RGBColor(255, 153, 255),
- RGBColor(255, 102, 255),
- RGBColor(255, 51, 255),
- RGBColor(255, 0, 255),
- RGBColor(204, 102, 204),
- RGBColor(204, 51, 204),
- RGBColor (0, 51, 0),
- RGBColor (0, 204, 51),
- RGBColor (0, 102, 51),
- RGBColor (51, 153, 102),
- RGBColor(102, 204, 153),
- RGBColor(153, 255, 204),
- RGBColor(204, 255, 255),
- RGBColor (51, 153, 255),
- RGBColor(153, 204, 255),
- RGBColor(204, 204, 255),
- RGBColor(204, 153, 255),
- RGBColor(153, 102, 204),
- RGBColor(102, 51, 153),
- RGBColor (51, 0, 102),
- RGBColor(153, 0, 204),
- RGBColor(204, 0, 204),
- RGBColor (0, 255, 51),
- RGBColor (51, 255, 102),
- RGBColor (0, 153, 51),
- RGBColor (0, 204, 102),
- RGBColor (51, 255, 153),
- RGBColor(153, 255, 255),
- RGBColor(153, 204, 204),
- RGBColor (0, 102, 204),
- RGBColor(102, 153, 204),
- RGBColor(153, 153, 255),
- RGBColor(153, 153, 204),
- RGBColor(153, 51, 255),
- RGBColor(102, 0, 204),
- RGBColor(102, 0, 153),
- RGBColor(204, 51, 255),
- RGBColor(204, 0, 255),
- RGBColor (0, 255, 102),
- RGBColor(102, 255, 153),
- RGBColor (51, 204, 102),
- RGBColor (0, 153, 102),
- RGBColor(102, 255, 255),
- RGBColor(102, 204, 204),
- RGBColor(102, 153, 153),
- RGBColor (0, 51, 102),
- RGBColor (51, 102, 153),
- RGBColor(102, 102, 255),
- RGBColor(102, 102, 204),
- RGBColor(102, 102, 153),
- RGBColor (51, 0, 153),
- RGBColor(153, 51, 204),
- RGBColor(204, 102, 255),
- RGBColor(153, 0, 255),
- RGBColor (0, 255, 153),
- RGBColor(102, 255, 204),
- RGBColor (51, 204, 153),
- RGBColor (51, 255, 255),
- RGBColor (51, 204, 204),
- RGBColor (51, 153, 153),
- RGBColor (51, 102, 102),
- RGBColor (0, 102, 153),
- RGBColor (0, 51, 153),
- RGBColor (51, 51, 255),
- RGBColor (51, 51, 204),
- RGBColor (51, 51, 153),
- RGBColor (51, 51, 102),
- RGBColor(102, 51, 204),
- RGBColor(153, 102, 255),
- RGBColor(102, 0, 255),
- RGBColor (0, 255, 204),
- RGBColor (51, 255, 204),
- RGBColor (0, 255, 255),
- RGBColor (0, 204, 204),
- RGBColor (0, 153, 153),
- RGBColor (0, 102, 102),
- RGBColor (0, 51, 51),
- RGBColor (51, 153, 204),
- RGBColor (51, 102, 204),
- RGBColor (0, 0, 255),
- RGBColor (0, 0, 204),
- RGBColor (0, 0, 153),
- RGBColor (0, 0, 102),
- RGBColor (0, 0, 51),
- RGBColor(102, 51, 255),
- RGBColor (51, 0, 255),
- RGBColor (0, 204, 153),
- RGBColor (0, 153, 202),
- RGBColor (51, 204, 255),
- RGBColor(102, 204, 255),
- RGBColor(102, 153, 255),
- RGBColor (51, 102, 255),
- RGBColor (0, 51, 204),
- RGBColor (51, 0, 204),
- RGBColor(255, 255, 255),
- RGBColor(204, 204, 204),
- RGBColor(153, 153, 153),
- RGBColor(102, 102, 102),
- RGBColor (51, 51, 51),
- RGBColor (0, 204, 255),
- RGBColor (0, 153, 255),
- RGBColor (0, 102, 255),
- RGBColor (0, 51, 255),
- RGBColor (51, 51, 51),
- RGBColor(102, 102, 102),
- RGBColor(153, 153, 153),
- RGBColor(204, 204, 204),
- RGBColor(255, 255, 255),
+ RGBColor(127, 28, 75),
+ RGBColor(111, 142, 204),
+ RGBColor(174, 10, 0),
+ RGBColor (96, 143, 71),
+ RGBColor(163, 74, 128),
+ RGBColor(183, 142, 10),
+ RGBColor(105, 155, 160),//shark infested water, run!
};
+//maps ware index to index of colors
+static uint8_t color_map[sizeof(colors) - 1];
+#define INACTIVE 0
+
+static std::bitset<sizeof(color_map)> active_colors;
struct StatisticWaresDisplay : public AbstractWaresDisplay {
StatisticWaresDisplay
@@ -313,7 +128,9 @@
RGBColor info_color_for_ware(Widelands::Ware_Index const ware)
{
- return colors[static_cast<size_t>(ware)];
+ size_t index = static_cast<size_t>(ware);
+
+ return colors[color_map[index]];
}
};
@@ -326,6 +143,10 @@
{
set_cache(false);
+ //init color sets
+ memset(color_map, 0, sizeof(color_map));
+ active_colors.reset();
+
// First, we must decide about the size.
UI::Box * box = new UI::Box(this, 0, 0, UI::Box::Vertical, 0, 0, 5);
box->set_border(5, 5, 5, 5);
@@ -429,6 +250,32 @@
* simultaneously.
*/
void Ware_Statistics_Menu::cb_changed_to(Widelands::Ware_Index id, bool what) {
+ if (what) { //activate ware
+ //search lowest free color
+ uint8_t color_index = INACTIVE;
+
+ uint i;
+ for (i = 0; i < sizeof(active_colors); ++i) {
+ if (!active_colors[i]) {
+ color_index = i + 1;
+ active_colors[i] = 1;
+ break;
+ }
+ }
+
+ color_map[static_cast<size_t>(id)] = color_index;
+ m_plot_production->set_plotcolor(static_cast<size_t>(id), colors[color_index]);
+ m_plot_consumption->set_plotcolor(static_cast<size_t>(id), colors[color_index]);
+ m_plot_economy->set_plotcolor(static_cast<size_t>(id), colors[color_index]);
+
+ } else { //deactivate ware
+ uint8_t old_color = color_map[static_cast<size_t>(id)];
+ if (old_color != INACTIVE) {
+ active_colors[old_color - 1] = 0;
+ color_map[static_cast<size_t>(id)] = INACTIVE;
+ }
+ }
+
m_plot_production->show_plot(static_cast<size_t>(id), what);
m_plot_consumption->show_plot(static_cast<size_t>(id), what);
m_plot_economy->show_plot(static_cast<size_t>(id), what);