1 // Copyright (C) 2007, 2008, 2012, 2014 Ben Asselstine 2 // 3 // This program is free software; you can redistribute it and/or modify 4 // it under the terms of the GNU General Public License as published by 5 // the Free Software Foundation; either version 3 of the License, or 6 // (at your option) any later version. 7 // 8 // This program is distributed in the hope that it will be useful, 9 // but WITHOUT ANY WARRANTY; without even the implied warranty of 10 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 11 // GNU Library General Public License for more details. 12 // 13 // You should have received a copy of the GNU General Public License 14 // along with this program; if not, write to the Free Software 15 // Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 16 // 02110-1301, USA. 17 18 #pragma once 19 #ifndef LINE_CHART_H 20 #define LINE_CHART_H 21 22 #include <gtkmm.h> 23 #include <list> 24 25 //the first parameter to the construct might seem a bit weird. 26 //the outer list contains a list of numbers belonging to a player 27 //the inner list is just a list of numbers forming the y component of the graph. 28 //the x component is taken from the turn number, which is just that number's position in the list. 29 class LineChart: public Gtk::Image 30 { 31 public: 32 LineChart(std::list<std::list<unsigned int> > lines, std::list<Gdk::RGBA> colours, unsigned int max_height_value, Glib::ustring x_axis_description, Glib::ustring y_axis_description); ~LineChart()33 virtual ~LineChart() {}; 34 35 void set_x_indicator(int x); 36 37 protected: 38 //Override default signal handler: 39 virtual bool on_draw (const Cairo::RefPtr<Cairo::Context> &cr); 40 private: 41 std::list<std::list<unsigned int> > d_lines; 42 std::list<Gdk::RGBA> d_colours; 43 unsigned int d_max_height_value; 44 int d_x_indicator; 45 Glib::ustring d_x_axis_description; 46 Glib::ustring d_y_axis_description; 47 }; 48 49 #endif 50