/*************************************************************************** colorselector.h - description ------------------- begin : Sun Jul 9 2000 copyright : (C) 2000 by Artur Rataj email : art@zeus.polsl.gliwice.pl ***************************************************************************/ /*************************************************************************** * * * 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. * * * ***************************************************************************/ #ifndef COLORSELECTOR_H #define COLORSELECTOR_H #include #include #include #include #include "color.h" #include "gradientselection.h" /** Color selector widget * @author Artur Rataj */ class ColorSelector : public TQWidget { Q_OBJECT TQ_OBJECT public: /** constructs a color selector widget */ ColorSelector(TQWidget *parent=0, const char *name=0); ~ColorSelector(); /** @return the selected color */ const Color& color(); signals: /** A signal that a color value has changed */ void valueChanged(Color*); public slots: /** Called if a color changed */ void slotSetColor(Color color); /** Called if a color changed */ void slotSetColor(Color* color); /** called if a color changed in the color patch */ void slotSetColor(const TQColor& color); /** Called by the gradient selection, to replace or modify a color */ void slotGradientSelectionChangeColor(Color* gradientSelectionColor); /** Called by the gradient selection, to synchronize its color */ void slotGradientSelectionSynchronizeColor(); /** Called if color replace mode is chosen */ void slotColorReplace(); /** called if color change mode is chosen */ void slotColorChange(); /** Called if a color change value changed */ void slotColorChangeValueChanged(int value); private: /** Color change mode constants */ enum { MODE_REPLACE = 0, MODE_CHANGE = 1, /** Maximum color change value */ MAX_COLOR_CHANGE_VALUE = 16 }; /** A color change slider widget */ TQWidget* colorChangeSliderWidget; /** Color change buttons button group widget */ TQButtonGroup colorChangeButtons; /** A color patch widget */ KColorPatch* colorPatch; /** A gradient selection widget */ GradientSelection* gradientSelection; /** The current color */ Color m_color; /** Color change mode */ int colorChangeMode; /** Current color change value */ int colorChangeValue; /** Floating--point precision RGB components, for color change mode */ double fRComponent; double fGComponent; double fBComponent; /** Whether in the floating-point precision components mode */ bool fComponentsMode; /** Scales a component according to componentDiff and colorChangeValue */ void scaledComponent(double* const component, const double componentDiff); }; #endif