Chris@277: /* -*- c-basic-offset: 4 indent-tabs-mode: nil -*- vi:set ts=8 sts=4 sw=4: */ Chris@277: Chris@277: /* Chris@277: Sonic Visualiser Chris@277: An audio file viewer and annotation editor. Chris@277: Centre for Digital Music, Queen Mary, University of London. Chris@277: This file copyright 2007 QMUL. Chris@277: Chris@277: This program is free software; you can redistribute it and/or Chris@277: modify it under the terms of the GNU General Public License as Chris@277: published by the Free Software Foundation; either version 2 of the Chris@277: License, or (at your option) any later version. See the file Chris@277: COPYING included with this distribution for more information. Chris@277: */ Chris@277: Chris@277: #ifndef _COLOUR_DATABASE_H_ Chris@277: #define _COLOUR_DATABASE_H_ Chris@277: Chris@277: #include Chris@277: #include Chris@277: #include Chris@278: #include Chris@278: #include Chris@277: #include Chris@277: Chris@277: class ColourDatabase : public QObject Chris@277: { Chris@277: Q_OBJECT Chris@277: Chris@277: public: Chris@277: static ColourDatabase *getInstance(); Chris@277: Chris@277: int getColourCount() const; Chris@277: QString getColourName(int c) const; Chris@277: QColor getColour(int c) const; Chris@277: QColor getColour(QString name) const; Chris@277: int getColourIndex(QString name) const; // -1 -> not found Chris@277: int getColourIndex(QColor c) const; // returns first index of possibly many Chris@277: bool haveColour(QColor c) const; Chris@277: Chris@277: bool useDarkBackground(int c) const; Chris@277: void setUseDarkBackground(int c, bool dark); Chris@277: Chris@277: int addColour(QColor, QString); // returns index Chris@277: void removeColour(QString); Chris@277: Chris@277: // returned colour is not necessarily in database Chris@277: QColor getContrastingColour(int c) const; Chris@277: Chris@277: // for use in XML export Chris@277: void getStringValues(int index, Chris@277: QString &colourName, Chris@277: QString &colourSpec, Chris@277: QString &darkbg) const; Chris@277: Chris@277: // for use in XML import Chris@277: int putStringValues(QString colourName, Chris@277: QString colourSpec, Chris@277: QString darkbg); Chris@277: Chris@277: // for use by PropertyContainer getPropertyRangeAndValue methods Chris@277: void getColourPropertyRange(int *min, int *max) const; Chris@278: Chris@278: QPixmap getExamplePixmap(int index, QSize size) const; Chris@277: Chris@277: signals: Chris@277: void colourDatabaseChanged(); Chris@277: Chris@277: protected: Chris@277: ColourDatabase(); Chris@277: Chris@277: struct ColourRec { Chris@277: QColor colour; Chris@277: QString name; Chris@277: bool darkbg; Chris@277: }; Chris@277: Chris@277: typedef std::vector ColourList; Chris@277: ColourList m_colours; Chris@277: Chris@277: static ColourDatabase m_instance; Chris@277: }; Chris@277: Chris@277: #endif