summaryrefslogtreecommitdiffstats
path: root/tdecore/kpalette.h
diff options
context:
space:
mode:
Diffstat (limited to 'tdecore/kpalette.h')
-rw-r--r--tdecore/kpalette.h228
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
+