예제 #1
0
파일: cmsio1.c 프로젝트: AndresPozo/PCL
// 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;
}
예제 #2
0
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();
}
예제 #3
0
파일: gimplcms.c 프로젝트: STRNG/gimp
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);
}
예제 #4
0
const BYTE* dkCmsTakeProfileID(cmsHPROFILE hProfile)
{
    cmsUInt8Number* const ProfileID = new cmsUInt8Number[16];
    cmsGetHeaderProfileID(hProfile, ProfileID);
    return static_cast<BYTE*>( ProfileID );
}