File indexing completed on 2024-05-12 15:59:36
0001 /* 0002 * SPDX-FileCopyrightText: 2005 Bart Coppens <kde@bartcoppens.be> 0003 * 0004 * SPDX-License-Identifier: LGPL-2.1-or-later 0005 */ 0006 0007 #include "KoHistogramProducer.h" 0008 0009 #include <QList> 0010 #include <QGlobalStatic> 0011 0012 #include <KoID.h> 0013 0014 #include "KoBasicHistogramProducers.h" 0015 0016 #include "KoColorSpace.h" 0017 0018 Q_GLOBAL_STATIC(KoHistogramProducerFactoryRegistry, s_instance) 0019 0020 KoHistogramProducerFactoryRegistry::KoHistogramProducerFactoryRegistry() 0021 { 0022 } 0023 0024 KoHistogramProducerFactoryRegistry::~KoHistogramProducerFactoryRegistry() 0025 { 0026 qDeleteAll(values()); 0027 } 0028 0029 KoHistogramProducerFactoryRegistry* KoHistogramProducerFactoryRegistry::instance() 0030 { 0031 return s_instance; 0032 0033 } 0034 0035 QList<QString> KoHistogramProducerFactoryRegistry::keysCompatibleWith(const KoColorSpace* colorSpace, bool isStrict) const 0036 { 0037 QList<QString> list; 0038 QList<float> preferredList; 0039 Q_FOREACH (const QString &id, keys()) { 0040 KoHistogramProducerFactory *f = value(id); 0041 0042 if (f->isCompatibleWith(colorSpace, isStrict)) { 0043 float preferred = f->preferrednessLevelWith(colorSpace); 0044 QList<float>::iterator pit = preferredList.begin(); 0045 QList<float>::iterator pend = preferredList.end(); 0046 QList<QString>::iterator lit = list.begin(); 0047 0048 while (pit != pend && preferred <= *pit) { 0049 ++pit; 0050 ++lit; 0051 } 0052 0053 list.insert(lit, id); 0054 preferredList.insert(pit, preferred); 0055 } 0056 } 0057 return list; 0058 }