1 /*
2  Copyright (C) 2010-2014 Kristian Duske
3 
4  This file is part of TrenchBroom.
5 
6  TrenchBroom is free software: you can redistribute it and/or modify
7  it under the terms of the GNU General Public License as published by
8  the Free Software Foundation, either version 3 of the License, or
9  (at your option) any later version.
10 
11  TrenchBroom is distributed in the hope that it will be useful,
12  but WITHOUT ANY WARRANTY; without even the implied warranty of
13  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14  GNU General Public License for more details.
15 
16  You should have received a copy of the GNU General Public License
17  along with TrenchBroom. If not, see <http://www.gnu.org/licenses/>.
18  */
19 
20 #ifndef TrenchBroom_ColorTable
21 #define TrenchBroom_ColorTable
22 
23 #include <wx/scrolwin.h>
24 
25 #include <vector>
26 
27 namespace TrenchBroom {
28     namespace View {
29         class ColorTable : public wxScrolledWindow {
30         public:
31             typedef std::vector<wxColour> ColorList;
32         private:
33             int m_cellSize;
34             int m_margin;
35             ColorList m_colors;
36             ColorList m_selectedColors;
37         public:
38             ColorTable(wxWindow* parent, wxWindowID winId, int cellSize, const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize, long style = wxTAB_TRAVERSAL | wxBORDER_NONE);
39 
40             void setColors(const ColorList& colors);
41             void setSelection(const ColorList& colors);
42 
43             void OnSize(wxSizeEvent& event);
44             void OnPaint(wxPaintEvent& event);
45             void OnMouseUp(wxMouseEvent& event);
46         private:
47             void updateVirtualSize();
48             int computeCols(int width) const;
49             int computeRows(int cols) const;
50             int computeHeight(int rows) const;
51         };
52     }
53 }
54 
55 #endif /* defined(TrenchBroom_ColorTable) */
56