// Duplicates an existing dictionary cmsHANDLE CMSEXPORT cmsDictDup(cmsHANDLE hDict) { _cmsDICT* old_dict = (_cmsDICT*) hDict; cmsHANDLE hNew; cmsDICTentry *entry; _cmsAssert(old_dict != NULL); hNew = cmsDictAlloc(old_dict ->ContextID); if (hNew == NULL) return NULL; // Walk the list freeing all nodes entry = old_dict ->head; while (entry != NULL) { if (!cmsDictAddEntry(hNew, entry ->Name, entry ->Value, entry ->DisplayName, entry ->DisplayValue)) { cmsDictFree(hNew); return NULL; } entry = entry -> Next; } return hNew; }
cmsBool ProfileUtils::cmsDictAddEntryAscii(cmsHANDLE dict, const QString &key, const QString &value) { qCDebug(COLORD) << key << value; cmsBool ret; wchar_t *mb_key = new wchar_t[key.length() + 1]; if (key.toWCharArray(mb_key) != key.length()) { delete [] mb_key; return false; } mb_key[key.length()] = 0; wchar_t *mb_value = new wchar_t[value.length() + 1]; if (value.toWCharArray(mb_value) != value.length()) { delete [] mb_key; delete [] mb_value; return false; } mb_value[value.length()] = 0; ret = cmsDictAddEntry(dict, mb_key, mb_value, NULL, NULL); delete [] mb_key; delete [] mb_value; return ret; }