Rev 1803 |
Blame |
Compare with Previous |
Last modification |
View Log
| RSS feed
/* $Id: colorwheelwidget.h 1804 2005-03-30 14:35:38Z subik $ */
#ifndef COLORWHEELWIDGET_H
#define COLORWHEELWIDGET_H
#include <qlabel.h>
#include <qvaluevector.h>
#include <cmykcolor.h>
#include <scribusstructs.h>
/**
\brief Widget ColorWheel graphicaly shows a color wheel for color theory.
Class ColorWheel is new widget inherited from the QLabel.
See e.g. http://en.wikipedia.org/wiki/Color_wheel for more info.
\author Petr Vanek; petr@yarpen.cz
\date April 2005
*/
class ColorWheel : public QLabel
{
Q_OBJECT
public:
ColorWheel(QWidget * parent, const char * name = 0);
~ColorWheel();
/** It can handle these color theory methods */
enum MethodType {
Monochromatic,
Analogous,
Complementary,
Split,
Triadic,
Tetradic
};
/** \brief Difference between selected value and counted ones.
Let's set angle = 15 and base point e.g. 60 (everything in grades).
Now you will have Analogous angles 60 (base) and 75 (+15) and 45 (-15).
Exact interpretation of the angle value depends on the MethodType value.
*/
int angle;
/** Coordinates of the leading point. */
QPoint actualPoint;
/** RGB interpretation of the leading point. */
QRgb actualRgb;
/** \brief List of the colors created in this widget.
Colors can be added into Scribus color list later. */
ColorList colorList;
/** \brief Draw a color wheel.
\param QValueVector<QPoint> points to be drawed.
*/
void paintWheel(QValueVector<QPoint>);
/** \brief Returns localized name of the type */
QString getTypeDescription(MethodType aType);
/** Draws a sample square filled with specified color. */
QPixmap sample(QColor);
/** \brief Counts the monochromatic colors.
The monochromatic color scheme uses variations in lightness
and saturation of a single color. It's clean and elegant color
schema. I like it's minimalism ;) */
void makeMonochromatic();
/** \brief Counts the analogous colors.
The analogous color scheme uses colors that are changed by an angle
in the color wheel. It looks richer than mono scheme. */
void makeAnalogous();
/** \brief Counts the complementary colors.
It takes two opposite colors (180 deg). It looks great when you choose a warm
color against a cool one. E.g. dark green vs. wine red. Hmmm wine... */
void makeComplementary();
/** \brief Counts the split-complementary colors.
It's enthanced complementary method. It takes base and opposite colors
with applied angle differences. */
void makeSplit();
/** \brief Counts the triadic colors.
It takes three colors balanced on the wheel (by 120 grades). */
void makeTriadic();
/** \brief Counts the tetradic colors.
It's two times complementary. */
void makeTetradic();
signals:
/** \brief Signal raised by mouse click on widget by user.
\param int Mouse button number. See Qt docs.
\param QPoint Coordinates of the mouse pointer. */
void clicked(int, const QPoint &);
protected:
/** \brief An event for mouse actions handling.
See \see clicked() for more info.
\param QMouseEvent Mouse properties. */
void mouseReleaseEvent(QMouseEvent *);
/** Finds the color of the point in this widget
\param QPoint Coordinates of the point.
\return QRgb value with color of the point. */
QRgb getPointColor(QPoint);
/** \brief Appends a color into \see colorList.
\param double an angle for transformation counting.
E.g. base angle is 30, param is 90 - transformation is 120.
\param QString name of the color. */
void sampleByAngle(double, QString);
/** \brief Counts an angle of the point in color wheel
\param QPoint coordinates of the point. */
double pointAngle(QPoint);
/** Appends the base color into color list. */
void baseColor();
/** Creates a Scribus CMYKColor from rgb value.
\param QRgb a rgb value of the color. */
CMYKColor cmykColor(QRgb rgb);
};
#endif