diff options
author | Taybin Rutkin <taybin@taybin.com> | 2005-09-25 18:42:24 +0000 |
---|---|---|
committer | Taybin Rutkin <taybin@taybin.com> | 2005-09-25 18:42:24 +0000 |
commit | 209d967b1bb80a9735d690d8f4f0455ecb9970ca (patch) | |
tree | 9d76ddcd7c1ac9d91bb2b1a33d31b66ce4ded5de /gtk2_ardour/axis_view.cc | |
parent | e4b9aed743fc765219ac775905a221c017c88fba (diff) |
Initial import of gtk2_ardour.
git-svn-id: svn://localhost/trunk/ardour2@24 d708f5d6-7413-0410-9779-e7cbd77b26cf
Diffstat (limited to 'gtk2_ardour/axis_view.cc')
-rw-r--r-- | gtk2_ardour/axis_view.cc | 96 |
1 files changed, 96 insertions, 0 deletions
diff --git a/gtk2_ardour/axis_view.cc b/gtk2_ardour/axis_view.cc new file mode 100644 index 0000000000..419877e75a --- /dev/null +++ b/gtk2_ardour/axis_view.cc @@ -0,0 +1,96 @@ +/* + Copyright (C) 2003 Paul Davis + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + + $Id$ +*/ + +#include <cstdlib> +#include <cmath> + +#include <algorithm> +#include <string> + +#include <list> + +#include <pbd/error.h> + +#include <gtkmmext/utils.h> +#include <gtkmmext/selector.h> +#include <gtkmmext/gtk_ui.h> + +#include <ardour/session.h> +#include <ardour/utils.h> + +#include "public_editor.h" +#include "axis_view.h" +#include "i18n.h" + +using namespace Gtk; +using namespace Gtkmmext; + + +list<GdkColor> AxisView::used_colors; + +AxisView::AxisView (ARDOUR::Session& sess) : _session(sess) +{ + _selected = false; +} + +AxisView::~AxisView() +{ + +} + +GdkColor +AxisView::unique_random_color() +{ + GdkColor newcolor; + + while (1) { + + /* avoid neon/glowing tones by limiting them to the + "inner section" (paler) of a color wheel/circle. + */ + + const int32_t max_saturation = 48000; // 65535 would open up the whole color wheel + + newcolor.red = random() % max_saturation; + newcolor.blue = random() % max_saturation; + newcolor.green = random() % max_saturation; + + if (used_colors.size() == 0) { + used_colors.push_back (newcolor); + return newcolor; + } + + for (list<GdkColor>::iterator i = used_colors.begin(); i != used_colors.end(); ++i) { + GdkColor c = *i; + float rdelta, bdelta, gdelta; + + rdelta = newcolor.red - c.red; + bdelta = newcolor.blue - c.blue; + gdelta = newcolor.green - c.green; + + if (sqrt (rdelta*rdelta + bdelta*bdelta + gdelta*gdelta) > 25.0) { + used_colors.push_back (newcolor); + return newcolor; + } + } + + /* XXX need throttle here to make sure we don't spin for ever */ + } +} |