filters
aicolor.cc00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020 #include "aicolor.h"
00021 #include <stdlib.h>
00022
00023 AIColor::AIColor(){
00024 ctype = AIColor::CT_CMYK;
00025 cdata.cmykdata.cvalue = 0;
00026 cdata.cmykdata.mvalue = 0;
00027 cdata.cmykdata.yvalue = 0;
00028 cdata.cmykdata.kvalue = 0;
00029 }
00030
00031 AIColor::AIColor( const AIColor& value ){
00032 ctype = value.ctype;
00033 memcpy (&cdata, &value.cdata, sizeof (cdata));
00034 }
00035 AIColor::AIColor( double c, double m, double y, double k ){
00036 ctype = AIColor::CT_CMYK;
00037 cdata.cmykdata.cvalue = c;
00038 cdata.cmykdata.mvalue = m;
00039 cdata.cmykdata.yvalue = y;
00040 cdata.cmykdata.kvalue = k;
00041 }
00042 AIColor::AIColor( double c, double m, double y, double k, const char* colorname, double gray ){
00043 ctype = AIColor::CT_CMYK_Key;
00044 cdata.cmykdata.cvalue = c;
00045 cdata.cmykdata.mvalue = m;
00046 cdata.cmykdata.yvalue = y;
00047 cdata.cmykdata.kvalue = k;
00048 cdata.cmykdata.colorname = strdup (colorname);
00049 }
00050 AIColor::AIColor( double gray ){
00051 ctype = AIColor::CT_Gray;
00052 cdata.graydata = gray;
00053 }
00054
00055 AIColor::~AIColor(){
00056 }
00057
00058 void AIColor::toRGB (double &r, double &g, double &b)
00059 {
00060 switch (ctype)
00061 {
00062 case CT_CMYK :
00063 case CT_CMYK_Key :
00064 r = 1 - cdata.cmykdata.cvalue - cdata.cmykdata.kvalue;
00065 g = 1 - cdata.cmykdata.mvalue - cdata.cmykdata.kvalue;
00066 b = 1 - cdata.cmykdata.yvalue - cdata.cmykdata.kvalue;
00067 break;
00068 case CT_Gray :
00069 r = cdata.graydata;
00070 g = cdata.graydata;
00071 b = cdata.graydata;
00072 break;
00073 default :
00074 qDebug ("unknown colortype %d", ctype);
00075 }
00076 }
00077
00078 void AIColor::toCMYK (double &c, double &m, double &y, double &k)
00079 {
00080 switch (ctype)
00081 {
00082 case CT_CMYK :
00083 case CT_CMYK_Key :
00084 c = cdata.cmykdata.cvalue;
00085 m = cdata.cmykdata.mvalue;
00086 y = cdata.cmykdata.yvalue;
00087 k = cdata.cmykdata.kvalue;
00088 break;
00089 case CT_Gray :
00090 c = 0;
00091 m = 0;
00092 y = 0;
00093 k = cdata.graydata;
00094 break;
00095 default :
00096 qDebug ("unknown colortype %d", ctype);
00097 }
00098 }
00099
00100
|