// Create a sequence description out of an array of profiles cmsSEQ* _cmsCompileProfileSequence(cmsContext ContextID, cmsUInt32Number nProfiles, cmsHPROFILE hProfiles[]) { cmsUInt32Number i; cmsSEQ* seq = cmsAllocProfileSequenceDescription(ContextID, nProfiles); if (seq == NULL) return NULL; for (i=0; i < nProfiles; i++) { cmsPSEQDESC* ps = &seq ->seq[i]; cmsHPROFILE h = hProfiles[i]; cmsTechnologySignature* techpt; cmsGetHeaderAttributes(h, &ps ->attributes); cmsGetHeaderProfileID(h, ps ->ProfileID.ID8); ps ->deviceMfg = cmsGetHeaderManufacturer(h); ps ->deviceModel = cmsGetHeaderModel(h); techpt = (cmsTechnologySignature*) cmsReadTag(h, cmsSigTechnologyTag); if (techpt == NULL) ps ->technology = (cmsTechnologySignature) 0; else ps ->technology = *techpt; ps ->Manufacturer = GetMLUFromProfile(h, cmsSigDeviceMfgDescTag); ps ->Model = GetMLUFromProfile(h, cmsSigDeviceModelDescTag); ps ->Description = GetMLUFromProfile(h, cmsSigProfileDescriptionTag); } return seq; }
QString ProfileUtils::getPrecookedMd5(cmsHPROFILE lcms_profile) { cmsUInt8Number profile_id[16]; bool md5_precooked = false; QByteArray md5; /* check to see if we have a pre-cooked MD5 */ cmsGetHeaderProfileID(lcms_profile, profile_id); for (int i = 0; i < 16; ++i) { if (profile_id[i] != 0) { md5_precooked = true; break; } } if (!md5_precooked) { return QString(); } /* convert to a hex string */ for (int i = 0; i < 16; ++i) { md5.append(profile_id[i]); } return md5.toHex(); }
gboolean gimp_lcms_profile_is_equal (GimpColorProfile profile1, GimpColorProfile profile2) { cmsUInt8Number digest1[GIMP_LCMS_MD5_DIGEST_LENGTH]; cmsUInt8Number digest2[GIMP_LCMS_MD5_DIGEST_LENGTH]; g_return_val_if_fail (profile1 != NULL, FALSE); g_return_val_if_fail (profile2 != NULL, FALSE); if (! cmsMD5computeID (profile1) || ! cmsMD5computeID (profile2)) { return FALSE; } cmsGetHeaderProfileID (profile1, digest1); cmsGetHeaderProfileID (profile2, digest2); return (memcmp (digest1, digest2, GIMP_LCMS_MD5_DIGEST_LENGTH) == 0); }
const BYTE* dkCmsTakeProfileID(cmsHPROFILE hProfile) { cmsUInt8Number* const ProfileID = new cmsUInt8Number[16]; cmsGetHeaderProfileID(hProfile, ProfileID); return static_cast<BYTE*>( ProfileID ); }