diff options
Diffstat (limited to 'chalk/chalkcolor/kis_profile.cc')
-rw-r--r-- | chalk/chalkcolor/kis_profile.cc | 208 |
1 files changed, 0 insertions, 208 deletions
diff --git a/chalk/chalkcolor/kis_profile.cc b/chalk/chalkcolor/kis_profile.cc deleted file mode 100644 index 61b2ad32..00000000 --- a/chalk/chalkcolor/kis_profile.cc +++ /dev/null @@ -1,208 +0,0 @@ -/* - * kis_profile.cc - part of Krayon - * - * Copyright (c) 2000 Matthias Elter <elter@kde.org> - * 2001 John Califf - * 2004 Boudewijn Rempt <boud@valdyas.org> - * - * 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. - * - * This program 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 General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - */ -#include <cfloat> -#include <cmath> -#include <config.h> -#include LCMS_HEADER - -#include <tqimage.h> -#include <tqtextstream.h> -#include <tqfile.h> - -#include <kdebug.h> - -#include "kis_profile.h" -#include "kis_global.h" - -#include "ksharedptr.h" - -#include <X11/Xlib.h> -#include <X11/Xatom.h> -#include <fixx11h.h> - -KisProfile::KisProfile(TQByteArray rawData) - : m_rawData(rawData), - m_filename( TQString() ), - m_valid( false ), - m_suitableForOutput(false) -{ - m_profile = cmsOpenProfileFromMem(rawData.data(), (DWORD)rawData.size()); - init(); -} - -KisProfile::KisProfile(const TQString& file) - : m_filename(file), - m_valid( false ), - m_suitableForOutput( false ) -{ -} - -KisProfile::KisProfile(const cmsHPROFILE profile) - : m_profile(profile), - m_filename( TQString() ), - m_valid( true ) -{ - size_t bytesNeeded=0; - - // Make a raw data image ready for saving - _cmsSaveProfileToMem(m_profile, 0, &bytesNeeded); // calc size - if(m_rawData.resize(bytesNeeded)) - { - _cmsSaveProfileToMem(m_profile, m_rawData.data(), &bytesNeeded); // fill buffer - cmsHPROFILE newprofile = cmsOpenProfileFromMem(m_rawData.data(), (DWORD) bytesNeeded); - cmsCloseProfile(m_profile); - m_profile = newprofile; - } - else - m_rawData.resize(0); - - init(); -} - -KisProfile::~KisProfile() -{ - cmsCloseProfile(m_profile); -} - - -bool KisProfile::load() -{ - TQFile file(m_filename); - file.open(IO_ReadOnly); - m_rawData = file.readAll(); - m_profile = cmsOpenProfileFromMem(m_rawData.data(), (DWORD)m_rawData.size()); - file.close(); - - if (m_profile == 0) { - kdWarning() << "Failed to load profile from " << m_filename << endl; - } - - return init(); - -} - -bool KisProfile::init() -{ - if (m_profile) { - m_colorSpaceSignature = cmsGetColorSpace(m_profile); - m_deviceClass = cmsGetDeviceClass(m_profile); - m_productName = cmsTakeProductName(m_profile); - m_productDescription = cmsTakeProductDesc(m_profile); - m_productInfo = cmsTakeProductInfo(m_profile); - m_valid = true; - - // Check if the profile can convert (something->this) -// LPMATSHAPER OutMatShaper = cmsBuildOutputMatrixShaper(m_profile); -// if( OutMatShaper ) -// { -// m_suitableForOutput = true; -// } - cmsCIEXYZTRIPLE Primaries; - - if (cmsTakeColorants(&Primaries, m_profile)) - { - m_suitableForOutput = true; - } - -#if 0 - // XXX: It wasn't that easy to save a little memory: thsi gives an lcms error - // Okay, we know enough. Free the memory; we'll load it again if needed. - - cmsCloseProfile(m_profile); - m_profile = 0; - -#endif - return true; - } - return false; -} - -cmsHPROFILE KisProfile::profile() -{ -#if 0 - if (m_profile = 0) { - TQFile file(m_filename); - file.open(IO_ReadOnly); - m_rawData = file.readAll(); - m_profile = cmsOpenProfileFromMem(m_rawData.data(), (DWORD)m_rawData.size()); - file.close(); - } -#endif - return m_profile; -} - -bool KisProfile::save() -{ - return false; -} - -KisAnnotationSP KisProfile::annotation() const -{ - // XXX we hardcode icc, this is correct for lcms? - // XXX productName(), or just "ICC Profile"? - if (!m_rawData.isEmpty()) - return new KisAnnotation("icc", productName(), m_rawData); - else - return 0; -} - -KisProfile * KisProfile::getScreenProfile (int screen) -{ - -#ifdef Q_WS_X11 - - Atom type; - int format; - unsigned long nitems; - unsigned long bytes_after; - TQ_UINT8 * str; - - static Atom icc_atom = XInternAtom( tqt_xdisplay(), "_ICC_PROFILE", False ); - - if ( XGetWindowProperty ( tqt_xdisplay(), - tqt_xrootwin( screen ), - icc_atom, - 0, - INT_MAX, - False, - XA_CARDINAL, - &type, - &format, - &nitems, - &bytes_after, - (unsigned char **) &str) - ) { - - TQByteArray bytes (nitems); - bytes.assign((char*)str, (TQ_UINT32)nitems); - - return new KisProfile(bytes); - } else { - return NULL; - } -#else - return NULL; - -#endif -} - - |