@@ -49,6 +49,7 @@ bool HasEncoding(const T & elt, const std::string & encoding)
4949
5050ColorSpaceVec GetColorSpaces (ConstConfigRcPtr config,
5151 bool includeColorSpaces,
52+ bool treatNoCategoryAsAny,
5253 SearchReferenceSpaceType colorSpaceType,
5354 const Categories & categories,
5455 const Encodings & encodings)
@@ -62,11 +63,13 @@ ColorSpaceVec GetColorSpaces(ConstConfigRcPtr config,
6263 auto cs = config->getColorSpace (config->getColorSpaceNameByIndex (colorSpaceType,
6364 COLORSPACE_ACTIVE,
6465 idx));
66+
67+ const bool ignoreCategory = treatNoCategoryAsAny && cs->getNumCategories () == 0 ;
6568 for (const auto & cat : categories)
6669 {
6770 for (const auto & enc : encodings)
6871 {
69- if (HasCategory (cs, cat) && HasEncoding (cs, enc))
72+ if ((ignoreCategory || HasCategory (cs, cat) ) && HasEncoding (cs, enc))
7073 {
7174 AddElement (css, cs.get ());
7275 }
@@ -79,6 +82,7 @@ ColorSpaceVec GetColorSpaces(ConstConfigRcPtr config,
7982
8083ColorSpaceVec GetColorSpaces (ConstConfigRcPtr config,
8184 bool includeColorSpaces,
85+ bool treatNoCategoryAsAny,
8286 SearchReferenceSpaceType colorSpaceType,
8387 const Categories & categories)
8488{
@@ -91,9 +95,11 @@ ColorSpaceVec GetColorSpaces(ConstConfigRcPtr config,
9195 auto cs = config->getColorSpace (config->getColorSpaceNameByIndex (colorSpaceType,
9296 COLORSPACE_ACTIVE,
9397 idx));
98+
99+ const bool ignoreCategory = treatNoCategoryAsAny && cs->getNumCategories () == 0 ;
94100 for (const auto & cat : categories)
95101 {
96- if (HasCategory (cs, cat))
102+ if (ignoreCategory || HasCategory (cs, cat))
97103 {
98104 AddElement (css, cs.get ());
99105 }
@@ -133,6 +139,7 @@ typedef std::vector<const NamedTransform *> NamedTransformVec;
133139
134140NamedTransformVec GetNamedTransforms (ConstConfigRcPtr config,
135141 bool includeNamedTransforms,
142+ bool treatNoCategoryAsAny,
136143 const Categories & categories,
137144 const Encodings & encodings)
138145{
@@ -142,11 +149,13 @@ NamedTransformVec GetNamedTransforms(ConstConfigRcPtr config,
142149 for (int idx = 0 ; idx < config->getNumNamedTransforms (); ++idx)
143150 {
144151 auto nt = config->getNamedTransform (config->getNamedTransformNameByIndex (idx));
152+
153+ const bool ignoreCategory = treatNoCategoryAsAny && nt->getNumCategories () == 0 ;
145154 for (const auto & cat : categories)
146155 {
147156 for (const auto & enc : encodings)
148157 {
149- if (HasCategory (nt, cat) && HasEncoding (nt, enc))
158+ if ((ignoreCategory || HasCategory (nt, cat) ) && HasEncoding (nt, enc))
150159 {
151160 AddElement (nts, nt.get ());
152161 }
@@ -159,6 +168,7 @@ NamedTransformVec GetNamedTransforms(ConstConfigRcPtr config,
159168
160169NamedTransformVec GetNamedTransforms (ConstConfigRcPtr config,
161170 bool includeNamedTransforms,
171+ bool treatNoCategoryAsAny,
162172 const Categories & categories)
163173{
164174 NamedTransformVec nts;
@@ -167,9 +177,11 @@ NamedTransformVec GetNamedTransforms(ConstConfigRcPtr config,
167177 for (int idx = 0 ; idx < config->getNumNamedTransforms (); ++idx)
168178 {
169179 auto nt = config->getNamedTransform (config->getNamedTransformNameByIndex (idx));
180+
181+ const bool ignoreCategory = treatNoCategoryAsAny && nt->getNumCategories () == 0 ;
170182 for (const auto & cat : categories)
171183 {
172- if (HasCategory (nt, cat))
184+ if (ignoreCategory || HasCategory (nt, cat))
173185 {
174186 AddElement (nts, nt.get ());
175187 }
@@ -267,7 +279,7 @@ StringUtils::StringVec ExtractItems(const char * strings)
267279
268280ColorSpaceNames FindColorSpaceNames (ConstConfigRcPtr config, const Categories & categories)
269281{
270- ColorSpaceVec allCS = GetColorSpaces (config, true , SEARCH_REFERENCE_SPACE_ALL, categories);
282+ ColorSpaceVec allCS = GetColorSpaces (config, true , false , SEARCH_REFERENCE_SPACE_ALL, categories);
271283 return GetNames (allCS);
272284}
273285
@@ -338,6 +350,7 @@ Infos FindColorSpaceInfos(ConstConfigRcPtr config,
338350 const Categories & userCategories,
339351 bool includeColorSpaces,
340352 bool includeNamedTransforms,
353+ bool treatNoCategoryAsAny,
341354 const Encodings & encodings,
342355 SearchReferenceSpaceType colorSpaceType)
343356{
@@ -369,10 +382,10 @@ Infos FindColorSpaceInfos(ConstConfigRcPtr config,
369382
370383 if (!encsIgnored)
371384 {
372- appCS = GetColorSpaces (config, includeColorSpaces, colorSpaceType,
385+ appCS = GetColorSpaces (config, includeColorSpaces, treatNoCategoryAsAny, colorSpaceType,
373386 appCategories, encodings);
374- appNT = GetNamedTransforms (config, includeNamedTransforms, appCategories ,
375- encodings);
387+ appNT = GetNamedTransforms (config, includeNamedTransforms, treatNoCategoryAsAny ,
388+ appCategories, encodings);
376389 appSize = appCS.size () + appNT.size ();
377390 }
378391
@@ -381,8 +394,11 @@ Infos FindColorSpaceInfos(ConstConfigRcPtr config,
381394 {
382395 encsIgnored = true ;
383396 log.m_ignoreEncodings = !encodings.empty ();
384- appCS = GetColorSpaces (config, includeColorSpaces, colorSpaceType, appCategories);
385- appNT = GetNamedTransforms (config, includeNamedTransforms, appCategories);
397+ appCS = GetColorSpaces (config, includeColorSpaces, treatNoCategoryAsAny, colorSpaceType,
398+ appCategories);
399+
400+ appNT = GetNamedTransforms (config, includeNamedTransforms, treatNoCategoryAsAny,
401+ appCategories);
386402 appSize = appCS.size () + appNT.size ();
387403
388404 // Keep these results in case we need them later.
@@ -424,8 +440,10 @@ Infos FindColorSpaceInfos(ConstConfigRcPtr config,
424440 {
425441 // 3b) Items using user categories.
426442
427- userCS = GetColorSpaces (config, includeColorSpaces, colorSpaceType, userCategories);
428- userNT = GetNamedTransforms (config, includeNamedTransforms, userCategories);
443+ userCS = GetColorSpaces (config, includeColorSpaces, treatNoCategoryAsAny, colorSpaceType,
444+ userCategories);
445+ userNT = GetNamedTransforms (config, includeNamedTransforms, treatNoCategoryAsAny,
446+ userCategories);
429447 userSize = userCS.size () + userNT.size ();
430448 if (userSize == 0 )
431449 {
@@ -464,10 +482,10 @@ Infos FindColorSpaceInfos(ConstConfigRcPtr config,
464482 {
465483 // If not already computed, compute list with app categories and no
466484 // encodings.
467- appCSNoEncodings = GetColorSpaces (config, includeColorSpaces,
485+ appCSNoEncodings = GetColorSpaces (config, includeColorSpaces, treatNoCategoryAsAny,
468486 colorSpaceType, appCategories);
469487 appNTNoEncodings = GetNamedTransforms (config, includeNamedTransforms,
470- appCategories);
488+ treatNoCategoryAsAny, appCategories);
471489 }
472490 appCSTest = &appCSNoEncodings;
473491 appNTTest = &appNTNoEncodings;
0 commit comments