filters

aicolor.cc

00001 /* This file is part of the KDE project
00002    Copyright (C) 2002, Dirk Schönberger <dirk.schoenberger@sz-online.de>
00003 
00004    This library is free software; you can redistribute it and/or
00005    modify it under the terms of the GNU Library General Public
00006    License as published by the Free Software Foundation; either
00007    version 2 of the License, or (at your option) any later version.
00008 
00009    This library is distributed in the hope that it will be useful,
00010    but WITHOUT ANY WARRANTY; without even the implied warranty of
00011    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
00012    Library General Public License for more details.
00013 
00014    You should have received a copy of the GNU Library General Public License
00015    along with this library; see the file COPYING.LIB.  If not, write to
00016    the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
00017  * Boston, MA 02110-1301, USA.
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 
KDE Home | KDE Accessibility Home | Description of Access Keys