diff options
Diffstat (limited to 'tdecore/kpalette.h')
-rw-r--r-- | tdecore/kpalette.h | 228 |
1 files changed, 228 insertions, 0 deletions
diff --git a/tdecore/kpalette.h b/tdecore/kpalette.h new file mode 100644 index 000000000..4f9c74029 --- /dev/null +++ b/tdecore/kpalette.h @@ -0,0 +1,228 @@ +/* This file is part of the KDE libraries + Copyright (C) 1999 Waldo Bastian (bastian@kde.org) + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Library General Public + License as published by the Free Software Foundation; version + 2 of the License. + + This library 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 + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public License + along with this library; see the file COPYING.LIB. If not, write to + the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301, USA. +*/ +//----------------------------------------------------------------------------- +// KDE color palette. + +#ifndef KDELIBS_KPALETTE_H +#define KDELIBS_KPALETTE_H + +#include <tqcolor.h> +#include <tqptrlist.h> +#include <tqstring.h> +#include <tqstringlist.h> +#include "kdelibs_export.h" + +class KPalettePrivate; + +/** + * Class for handling Palettes. + * + * This class makes it easy to handle palettes. + * A palette is a set of colors. This class can read + * and write palettes from and to a file. + * + * This class uses the "GIMP" palette file format. + * + * This class is totally unrelated to TQPalette. + * + * @author Waldo Bastian (bastian@kde.org) + **/ +class KDECORE_EXPORT KPalette +{ +public: + /** + * Query which KDE palettes are installed. + * + * @return A list with a palette names. + */ + static TQStringList getPaletteList(); + + /** + * KPalette constructor. Creates a KPalette from a file + * the filename is derived from the name. + * @param name The name of palette as returned by getPaletteList() + **/ + KPalette(const TQString &name=TQString::null); + + /** + * KPalette copy constructor. + **/ + KPalette(const KPalette &); + + /** + * KPalette destructor. + **/ + virtual ~KPalette(); + + /** + * KPalette assignment operator + **/ + KPalette& operator=( const KPalette &); + + /** + * Save the palette + * + * @return 'true' if successful + **/ + bool save(); + + /** + * Get the description of the palette. + * @return the description of the palette. + **/ + TQString description() const + { return mDesc; } + + /** + * Set the description of the palette. + * @param desc the new description + **/ + void setDescription(const TQString &desc) + { mDesc = desc; } + + /** + * Get the name of the palette. + * @return the name of the palette + **/ + TQString name() const + { return mName; } + + /** + * Set the name of the palette. + * @param name the name of the palette + **/ + void setName(const TQString &name) + { mName = name; } + + /** + * Used to specify whether a palette may be edited. + * @see editable() + * @see setEditable() + */ + enum Editable { Yes, ///< Palette may be edited + No, ///< Palette may not be edited + Ask ///< Ask user before editing + }; + + /** + * Returns whether the palette may be edited. + * @return the state of the palette + **/ + Editable editable() const + { return mEditable; } + + /** + * Change whether the palette may be edited. + * @param editable the state of the palette + **/ + void setEditable(Editable editable) + { mEditable = editable; } + + /** + * Return the number of colors in the palette. + * @return the number of colors + **/ + int nrColors() const + { return (int) mKolorList.count(); } + + /** + * Find color by index. + * @param index the index of the desired color + * @return The @p index -th color of the palette, null if not found. + **/ + TQColor color(int index); + + /** + * Find index by @p color. + * @param color the color to find + * @return The index of the color in the palette or -1 if the + * color is not found. + **/ + int findColor(const TQColor &color) const; + + /** + * Find color name by @p index. + * @param index the index of the color + * @return The name of the @p index -th color. + * Note that not all palettes have named the colors. Null is + * returned if the color does not exist or has no name. + **/ + TQString colorName(int index); + + /** + * Find color name by @p color. + * @return The name of color according to this palette. + * Note that not all palettes have named the colors. + * Note also that each palette can give the same color + * a different name. + **/ + TQString colorName(const TQColor &color) + { return colorName( findColor(color)); } + + /** + * Add a color. + * @param newColor The color to add. + * @param newColorName The name of the color, null to remove + * the name. + * @return The index of the added color. + **/ + int addColor(const TQColor &newColor, + const TQString &newColorName = TQString::null); + + /** + * Change a color. + * @param index Index of the color to change + * @param newColor The new color. + * @param newColorName The new color name, null to remove + * the name. + * @return The index of the new color or -1 if the color couldn't + * be changed. + **/ + int changeColor(int index, + const TQColor &newColor, + const TQString &newColorName = TQString::null); + + /** + * Change a color. + * @param oldColor The original color + * @param newColor The new color. + * @param newColorName The new color name, null to remove + * the name. + * @return The index of the new color or -1 if the color couldn't + * be changed. + **/ + int changeColor(const TQColor &oldColor, + const TQColor &newColor, + const TQString &newColorName = TQString::null) + { return changeColor( findColor(oldColor), newColor, newColorName); } + +private: + typedef struct { TQColor color; TQString name; } kolor; + TQPtrList<kolor> mKolorList; + + TQString mName; + TQString mDesc; + Editable mEditable; + + KPalettePrivate *d; +}; + + +#endif // KDELIBS_KPALETTE_H + |