You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
218 lines
5.4 KiB
218 lines
5.4 KiB
/* This file is part of the KDE project
|
|
Copyright (c) 1999 Matthias Elter (me@kde.org)
|
|
Copyright (c) 2001-2002 Igor Jansen (rm@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; either
|
|
version 2 of the License, or (at your option) any later version.
|
|
|
|
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.
|
|
*/
|
|
|
|
#ifndef __ko_color_h__
|
|
#define __ko_color_h__
|
|
|
|
#include <tqcolor.h>
|
|
#include <koffice_export.h>
|
|
class KOPAINTER_EXPORT KoColor
|
|
{
|
|
public:
|
|
enum cSpace{ csIndexed, csRGB, csHSV, csCMYK, csLab };
|
|
|
|
KoColor();
|
|
KoColor(int a, int b, int c, cSpace m = csRGB);
|
|
KoColor(int c, int m, int y, int k);
|
|
KoColor(const TQString &name);
|
|
KoColor(const TQColor &c);
|
|
|
|
cSpace native() const {return mNative; }
|
|
|
|
int R() const;
|
|
int G() const;
|
|
int B() const;
|
|
int H() const;
|
|
int S() const;
|
|
int V() const;
|
|
int L() const;
|
|
int a() const;
|
|
int b() const;
|
|
int C() const;
|
|
int M() const;
|
|
int Y() const;
|
|
int K() const;
|
|
|
|
void rgb(int *R, int *G, int *B) const;
|
|
void hsv(int *H, int *S, int *V) const;
|
|
void lab(int *L, int *a, int *b) const;
|
|
void cmyk(int *C, int *M, int *Y, int *K) const;
|
|
TQString name() const;
|
|
TQColor color() const;
|
|
|
|
void setRGB(int R, int G, int B);
|
|
void setHSV(int H, int S, int V);
|
|
void setLab(int L, int a, int b);
|
|
void setCMYK(int C, int M, int Y, int K);
|
|
void setNamedColor(const TQString &name);
|
|
void setColor(const TQColor &c);
|
|
|
|
static void RGBtoHSV(int R, int G, int B, int *H, int *S, int *V);
|
|
static void RGBtoLAB(int R, int G, int B, int *L, int *a, int *b);
|
|
static void RGBtoCMYK(int R, int G, int B, int *C, int *M, int *Y, int *K);
|
|
|
|
static void HSVtoRGB(int H, int S, int V, int *R, int *G, int *B);
|
|
static void HSVtoLAB(int H, int S, int V, int *L, int *a, int *b);
|
|
static void HSVtoCMYK(int H, int S, int V, int *C, int *M, int *Y, int*K);
|
|
|
|
static void LABtoRGB(int L, int a, int b, int *R, int *G, int *B);
|
|
static void LABtoHSV(int L, int a, int b, int *H, int *S, int *V);
|
|
static void LABtoCMYK(int L, int a, int b, int *C, int *M, int *Y, int*K);
|
|
|
|
static void CMYKtoRGB(int C, int M, int Y, int K, int *R, int *G, int *B);
|
|
static void CMYKtoHSV(int C, int M, int Y, int K, int *H, int *S, int *V);
|
|
static void CMYKtoLAB(int C, int M, int Y, int K, int *L, int *a, int *b);
|
|
|
|
static const KoColor black();
|
|
static const KoColor white();
|
|
static const KoColor gray();
|
|
static const KoColor lightGray();
|
|
static const KoColor darkGray();
|
|
static const KoColor red();
|
|
static const KoColor darkRed();
|
|
static const KoColor green();
|
|
static const KoColor darkGreen();
|
|
static const KoColor blue();
|
|
static const KoColor darkBlue();
|
|
static const KoColor cyan();
|
|
static const KoColor darkCyan();
|
|
static const KoColor magenta();
|
|
static const KoColor darkMagenta();
|
|
static const KoColor yellow();
|
|
static const KoColor darkYellow();
|
|
|
|
protected:
|
|
int hex2int(TQChar c);
|
|
|
|
void calcRGB() const;
|
|
void calcHSV() const;
|
|
void calcCMYK() const;
|
|
void calcLAB() const;
|
|
|
|
void rgbChanged() const;
|
|
void hsvChanged() const;
|
|
void cmykChanged() const;
|
|
void labChanged() const;
|
|
|
|
private:
|
|
/*
|
|
* Mutable to make it possible for const objects to transform the native cModel
|
|
* in functions like KoColor::rgb(...) to the requested.
|
|
*/
|
|
mutable int mR, mG, mB; // RGB
|
|
mutable int mC, mM, mY, mK; // CMYK
|
|
mutable int mH, mS, mV; // HSV
|
|
mutable int mL, ma, mb; // LAB
|
|
|
|
mutable bool mRGBvalid;
|
|
mutable bool mHSVvalid;
|
|
mutable bool mCMYKvalid;
|
|
mutable bool mLABvalid;
|
|
|
|
cSpace mNative;
|
|
};
|
|
|
|
inline const KoColor KoColor::white()
|
|
{
|
|
return KoColor(255, 255, 255, csRGB);
|
|
}
|
|
|
|
inline const KoColor KoColor::black()
|
|
{
|
|
return KoColor(0, 0, 0, csRGB);
|
|
}
|
|
|
|
inline const KoColor KoColor::gray()
|
|
{
|
|
return KoColor(160, 160, 164, csRGB);
|
|
}
|
|
|
|
inline const KoColor KoColor::lightGray()
|
|
{
|
|
return KoColor(192, 192, 192, csRGB);
|
|
}
|
|
|
|
inline const KoColor KoColor::darkGray()
|
|
{
|
|
return KoColor(128, 128, 128, csRGB);
|
|
}
|
|
|
|
inline const KoColor KoColor::red()
|
|
{
|
|
return KoColor(255, 0, 0, csRGB);
|
|
}
|
|
|
|
inline const KoColor KoColor::darkRed()
|
|
{
|
|
return KoColor(128, 0, 0, csRGB);
|
|
}
|
|
|
|
inline const KoColor KoColor::green()
|
|
{
|
|
return KoColor(0, 255, 0, csRGB);
|
|
}
|
|
|
|
inline const KoColor KoColor::darkGreen()
|
|
{
|
|
return KoColor(0, 128, 0, csRGB);
|
|
}
|
|
|
|
inline const KoColor KoColor::blue()
|
|
{
|
|
return KoColor(0, 0, 255, csRGB);
|
|
}
|
|
|
|
inline const KoColor KoColor::darkBlue()
|
|
{
|
|
return KoColor(0, 0, 128, csRGB);
|
|
}
|
|
|
|
inline const KoColor KoColor::cyan()
|
|
{
|
|
return KoColor(0, 255, 255, csRGB);
|
|
}
|
|
|
|
inline const KoColor KoColor::darkCyan()
|
|
{
|
|
return KoColor(0, 128, 128, csRGB);
|
|
}
|
|
|
|
inline const KoColor KoColor::magenta()
|
|
{
|
|
return KoColor(255, 0, 255, csRGB);
|
|
}
|
|
|
|
inline const KoColor KoColor::darkMagenta()
|
|
{
|
|
return KoColor(128, 0, 128, csRGB);
|
|
}
|
|
|
|
inline const KoColor KoColor::yellow()
|
|
{
|
|
return KoColor(255, 255, 0, csRGB);
|
|
}
|
|
|
|
inline const KoColor KoColor::darkYellow()
|
|
{
|
|
return KoColor(128, 128, 0, csRGB);
|
|
}
|
|
|
|
#endif
|