// 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; }
static cmsBool SetSeqDescTag(cmsHPROFILE hProfile, const char* Model) { cmsBool rc = FALSE; cmsContext ContextID = cmsGetProfileContextID(hProfile); cmsSEQ* Seq = cmsAllocProfileSequenceDescription(ContextID, 1); if (Seq == NULL) return FALSE; Seq->seq[0].deviceMfg = (cmsSignature) 0; Seq->seq[0].deviceModel = (cmsSignature) 0; #ifdef CMS_DONT_USE_INT64 Seq->seq[0].attributes[0] = 0; Seq->seq[0].attributes[1] = 0; #else Seq->seq[0].attributes = 0; #endif Seq->seq[0].technology = (cmsTechnologySignature) 0; cmsMLUsetASCII( Seq->seq[0].Manufacturer, cmsNoLanguage, cmsNoCountry, "Little CMS"); cmsMLUsetASCII( Seq->seq[0].Model, cmsNoLanguage, cmsNoCountry, Model); if (!_cmsWriteProfileSequence(hProfile, Seq)) goto Error; rc = TRUE; Error: if (Seq) cmsFreeProfileSequenceDescription(Seq); return rc; }