File indexing completed on 2024-05-12 15:59:33

0001 /*
0002  *  SPDX-FileCopyrightText: 2007 Cyrille Berger <cberger@cberger.net>
0003  *
0004  * SPDX-License-Identifier: LGPL-2.1-or-later
0005 */
0006 
0007 #include "KoColorConversionTransformationFactory.h"
0008 
0009 #include <QString>
0010 
0011 #include "KoColorProfile.h"
0012 #include "KoColorSpace.h"
0013 #include "DebugPigment.h"
0014 #include "KoColorSpaceRegistry.h"
0015 
0016 struct Q_DECL_HIDDEN KoColorConversionTransformationFactory::Private {
0017     QString srcModelId;
0018     QString srcDepthId;
0019     QString dstModelId;
0020     QString dstDepthId;
0021     QString srcProfile;
0022     QString dstProfile;
0023 };
0024 
0025 KoColorConversionTransformationFactory::KoColorConversionTransformationFactory(const QString &_srcModelId, const QString &_srcDepthId, const QString &_srcProfile, const QString &_dstModelId, const QString &_dstDepthId, const QString &_dstProfile) : d(new Private)
0026 {
0027     d->srcModelId = _srcModelId;
0028     d->srcDepthId = _srcDepthId;
0029     d->dstModelId = _dstModelId;
0030     d->dstDepthId = _dstDepthId;
0031     d->srcProfile = KoColorSpaceRegistry::instance()->profileAlias(_srcProfile);
0032     d->dstProfile = KoColorSpaceRegistry::instance()->profileAlias(_dstProfile);
0033 }
0034 
0035 KoColorConversionTransformationFactory::~KoColorConversionTransformationFactory()
0036 {
0037     delete d;
0038 }
0039 
0040 bool KoColorConversionTransformationFactory::canBeSource(const KoColorSpace* srcCS) const
0041 {
0042     return ((srcCS->colorModelId().id() == d->srcModelId)
0043             && (srcCS->colorDepthId().id() == d->srcDepthId)
0044             && (d->srcProfile == "" || srcCS->profile()->name() == d->srcProfile));
0045 }
0046 
0047 bool KoColorConversionTransformationFactory::canBeDestination(const KoColorSpace* dstCS) const
0048 {
0049     dbgPigment << dstCS->colorModelId().id() << " " << d->dstModelId << " " << dstCS->colorDepthId().id() << " " <<  d->dstDepthId << " " << d->dstProfile << " " << (dstCS->profile() ? dstCS->profile()->name() : "noprofile")  << " " << d->dstProfile;
0050     return ((dstCS->colorModelId().id() == d->dstModelId)
0051             && (dstCS->colorDepthId().id() == d->dstDepthId)
0052             && (d->dstProfile == "" || dstCS->profile()->name() == d->dstProfile));
0053 }
0054 
0055 QString KoColorConversionTransformationFactory::srcColorModelId() const
0056 {
0057     return d->srcModelId;
0058 }
0059 QString KoColorConversionTransformationFactory::srcColorDepthId() const
0060 {
0061     return d->srcDepthId;
0062 }
0063 
0064 QString KoColorConversionTransformationFactory::srcProfile() const
0065 {
0066     return d->srcProfile;
0067 }
0068 
0069 QString KoColorConversionTransformationFactory::dstColorModelId() const
0070 {
0071     return d->dstModelId;
0072 }
0073 QString KoColorConversionTransformationFactory::dstColorDepthId() const
0074 {
0075     return d->dstDepthId;
0076 }
0077 
0078 QString KoColorConversionTransformationFactory::dstProfile() const
0079 {
0080     return d->dstProfile;
0081 }
0082