7#ifndef KOCOLORCONVERSIONSYSTEM_P_H
8#define KOCOLORCONVERSIONSYSTEM_P_H
16#include <boost/operators.hpp>
34 : isInitialized(false)
37 , colorSpaceFactory(0)
42 dbgPigment <<
"Initialise " << modelId <<
" " << depthId <<
" " << profileName;
45 dbgPigment <<
"Re-initializing node. Old factory" << colorSpaceFactory <<
"new factory" << _colorSpaceFactory;
49 if (_colorSpaceFactory) {
56 if (_colorSpaceFactory->
isHdr()) {
60 if (!isGray && !isAlpha) {
69 colorSpaceFactory = _colorSpaceFactory;
76 Q_ASSERT(!isInitialized);
84 return modelId +
" " + depthId +
" " + profileName;
96 return m_capabilities;
109 NodeCapabilities m_capabilities =
None;
162 :
public boost::equality_comparable<NodeKey>
165 NodeKey(
const QString &_modelId,
const QString &_depthId,
const QString &_profileName)
243 cost +=
v->dstNode->crossingCost;
247 NodeCapabilities minimalCaps =
249 vertexes.first()->srcNode->capabilities() &
250 vertexes.last()->dstNode->capabilities() :
257 typedef QPair<Node*, const KoColorConversionTransformationAbstractFactory* >
node2factory;
265 previousFactory = n->
engine;
269 previousFactory ? previousFactory : vertex->
factory()));
282 if (
v->srcNode == n ||
v->dstNode == n) {
301 bool havePrintedFirst =
false;
304 if (!havePrintedFirst) {
305 dbg.nospace() <<
v->srcNode->id();
306 havePrintedFirst =
true;
309 dbg.nospace() <<
"->" <<
v->dstNode->id();
316typedef QHash<KoColorConversionSystem::Node*, KoColorConversionSystem::Path >
Node2PathHash;
336 : referenceDepth(_referenceDepth)
341 return path.unsupportedCapabilities() ==
None &&
342 path.referenceDepth >= referenceDepth;
354 if (!unsupported1.testFlag(
HasHdr) && unsupported2.testFlag(
HasHdr)) {
374#undef CHECK_ONE_AND_NOT_THE_OTHER
Q_DECLARE_FLAGS(KisUpdaterContextSnapshotEx, KisUpdaterContextSnapshotExTag)
QHash< KoColorConversionSystem::Node *, KoColorConversionSystem::Path > Node2PathHash
QDebug operator<<(QDebug dbg, const KoColorConversionSystem::Node &node)
Q_DECLARE_TYPEINFO(KoColorConversionSystem::Node, Q_MOVABLE_TYPE)
const KoID GrayAColorModelID("GRAYA", ki18n("Grayscale/Alpha"))
const KoID AlphaColorModelID("A", ki18n("Alpha mask"))
const KoID GrayColorModelID("GRAY", ki18n("Grayscale (without transparency)"))
QList< Vertex * > vertexes
Private(RegistryInterface *_registryInterface)
QHash< NodeKey, Node * > graph
RegistryInterface * registryInterface
friend uint qHash(const KoColorConversionSystem::NodeKey &key)
Q_DECLARE_OPERATORS_FOR_FLAGS(KisBaseRectsWalker::SubtreeVisitFlags)
bool operator==(const KoColorConversionSystem::NodeKey &rhs) const
NodeKey(const QString &_modelId, const QString &_depthId, const QString &_profileName)
const KoColorSpaceEngine * engine
NodeCapabilities capabilities() const
void init(const KoColorSpaceFactory *_colorSpaceFactory)
friend bool operator==(const Node &lhs, const Node &rhs)
QList< Vertex * > outputVertexes
void init(const KoColorSpaceEngine *_engine)
const KoColorSpaceFactory * colorSpaceFactory
NodeCapabilities unsupportedCapabilities() const
const Node * endNode() const
const Node * startNode() const
QList< Vertex * > vertexes
QPair< Node *, const KoColorConversionTransformationAbstractFactory * > node2factory
void appendVertex(Vertex *v)
bool operator==(const Path &other) const
bool contains(Node *n) const
QList< node2factory > compressedPath() const
NodeCapabilities commonNodeCapabilities
KoColorConversionTransformationFactory * factoryFromDst
KoColorConversionTransformationFactory * factory()
KoColorConversionTransformationFactory * factoryFromSrc
void setFactoryFromSrc(KoColorConversionTransformationFactory *factory)
void setFactoryFromDst(KoColorConversionTransformationFactory *factory)
Vertex(Node *_srcNode, Node *_dstNode)
virtual int referenceDepth() const =0
virtual int crossingCost() const =0
virtual bool isHdr() const =0
PathQualityChecker(int _referenceDepth)
bool lessWorseThan(const KoColorConversionSystem::Path &path1, const KoColorConversionSystem::Path &path2) const
bool isGoodPath(const KoColorConversionSystem::Path &path) const