/* 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 #include #include #include #include "tdelibs_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 TDECORE_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 mKolorList; TQString mName; TQString mDesc; Editable mEditable; KPalettePrivate *d; }; #endif // KDELIBS_KPALETTE_H