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