Condividi tramite


Funzione CreateMultiProfileTransform (icm.h)

Accetta una matrice di profili o un singolo profilo di collegamento del dispositivo e crea una trasformazione del colore che le applicazioni possono usare per eseguire il mapping dei colori.

Sintassi

HTRANSFORM CreateMultiProfileTransform(
  PHPROFILE pahProfiles,
  DWORD     nProfiles,
  PDWORD    padwIntent,
  DWORD     nIntents,
  DWORD     dwFlags,
  DWORD     indexPreferredCMM
);

Parametri

pahProfiles

Puntatore a una matrice di handle per i profili da usare. La funzione determina se le HPROFILEs contengono informazioni sul profilo international Color Consortium (ICC) o Windows Color System (WCS) e li elaborano in modo appropriato. Quando i profili WCS validi vengono restituiti da OpenColorProfileW e WcsOpenColorProfileW, questi handle di profilo contengono la combinazione di profili DMP, CAMP e GMMP.

nProfiles

Specifica il numero di profili nella matrice. Il massimo è 10.

padwIntent

Puntatore a una matrice di finalità da usare. Ogni finalità è uno dei valori seguenti:

INTENT_PERCEPTUAL

INTENT_SATURATION

INTENT_RELATIVE_COLORIMETRIC

INTENT_ABSOLUTE_COLORIMETRIC

I GMMP sono una generalizzazione delle finalità. Esistono due possibili origini di finalità: il profilo "destinazione" e il parametro elenco finalità per CreateMultiProfileTransform. Il termine "destinazione" non viene usato poiché tutti i due profili nel parametro dell'elenco dei profili funzioneranno come prima destinazione e quindi origine.

Per altre informazioni, vedere Finalità di rendering.

nIntents

Specifica il numero di elementi nella matrice finalità: può essere 1 o lo stesso valore di nProfiles. Per le matrici di profili che contengono profili WCS, la prima finalità di rendering viene ignorata e solo gli elementi nProfiles -1 vengono usati per queste matrici di profili. Il numero massimo di nIntents è 10.

dwFlags

Specifica i flag usati per controllare la creazione della trasformazione. Vedere la sezione Osservazioni.

indexPreferredCMM

Specifica l'indice one-based del profilo di colore che indica quale modulo di gestione dei colori (CMM) usare. Lo sviluppatore di applicazioni può consentire a Windows di scegliere CMM impostando questo parametro su INDEX_DONT_CARE. Vedere Uso di moduli di gestione colori (CMM) Di terze parti sono disponibili solo per i flussi di lavoro ICC. Le matrici di profili contenenti profili WCS ignorano questo flag. Viene ignorato anche quando vengono usati solo profili ICC e quando viene usato il flag di WCS_ALWAYS.

Valore restituito

Se questa funzione ha esito positivo, il valore restituito è un handle per la trasformazione del colore.

Se questa funzione ha esito negativo, il valore restituito è NULL. Per informazioni sull'errore estese, chiamare GetLastError.

Commenti

Se viene usato un profilo di collegamento del dispositivo, la funzione avrà esito negativo se nProfiles non è impostato su 1.

La matrice di finalità specifica il modo in cui i profili devono essere combinati. La finalità nviene usata per combinare il nprofilo nella matrice. Se viene specificata una sola finalità, viene usata per il primo profilo e tutti gli altri profili vengono combinati usando la finalità Match.

I valori in dwFlags sono destinati solo agli hint. Il modulo di gestione dei colori deve determinare il modo migliore per usarli.

Windows Vista: sono stati aggiunti tre nuovi flag che possono essere usati con dwFlags:

Flag Descrizione
PRESERVEBLACK Se questo bit è impostato, il motore di trasformazione inserisce il GMMP di generazione nera appropriato come ultimo GMMP nella sequenza di trasformazione. Questo flag funziona solo in una trasformazione WCS pura.
SEQUENTIAL_TRANSFORM Se questo bit è impostato, ogni passaggio della pipeline di elaborazione WCS viene eseguito per ogni pixel nell'immagine e non viene compilata alcuna trasformazione di colore ottimizzata. Questo flag funziona solo in una trasformazione WCS pura. Restrizioni: una trasformazione creata con il set di flag di SEQUENTIAL_TRANSFORM può essere usata solo nel thread in cui è stata creata e solo per una chiamata di conversione dei colori alla volta. COM deve essere inizializzato prima di creare la trasformazione sequenziale e deve rimanere inizializzato per la durata dell'oggetto transform.
WCS_ALWAYS Se questo bit è impostato, anche tutte le trasformazioni ICC useranno il percorso del codice WCS.

Nota

SEQUENTIAL_TRANSFORM è stato omesso inavvertitamente dall'intestazione icm.h in Windows Vista SDK. Se si vuole usare il flag di SEQUENTIAL_TRANSFORM, definirlo nell'applicazione come indicato di seguito:

#define SEQUENTIAL_TRANSFORM 0x80800000

Per informazioni dettagliate, vedere Flag di creazione di trasformazioni CMM. Tutti i flag menzionati sono supportati per tutti i tipi di trasformazioni, ad eccezione di FAST_TRANSLATE e USE_RELATIVE_COLORIMETRIC, che funzionano solo in una pura trasformazione ICC-to-ICC.

La funzione CreateMultiProfileTransform viene usata all'esterno di un contesto del dispositivo. I colori possono essere spostati quando si trasforma da un profilo di colore allo stesso profilo di colore. Questo è dovuto a errori di precisione. Pertanto, una trasformazione del colore non deve essere eseguita in queste circostanze.

È consigliabile che sia presente un solo GMMP tra un DMP di origine e destinazione. Le descrizioni dei limiti di gamma (GBD) vengono create dalle combinazioni DMP/CAMP. I GMMP successivi usano i gruppi di distribuzione prima che siano presenti nella catena di elaborazione fino a quando non esiste un DMP/CAMP GBD successivo nella sequenza da usare. Si supponga, ad esempio, una sequenza DMP1, CAMP1, GMMP1, GMMP2, GMMP3, DMP2, CAMP2, GMMP4, GMMP5, CAMP3, DMP3. GMMP1, GMMP2 usa GBD1 come origine e destinazione. GMMP3 usa quindi GBD1 come origine e GBD2 come destinazione. GMMP4 usa quindi GBD2 come origine e destinazione. Infine GMMP5 usa GBD2 come origine e GBD3 come destinazione. Ciò presuppone che nessun GMMP sia identico a quello accanto.

Per i profili WCS, è consigliabile impostare le finalità di rendering su DWORD_MAX per usare GMMP all'interno dell'handle del profilo WCS. Ciò avviene perché la matrice di finalità di rendering ha la precedenza sulle finalità di rendering o sui modelli di mapping di gamut specificati o contenuti nei profili specificati dagli HPROFILEs. La matrice di finalità di rendering fa riferimento al GMMP predefinito per tali finalità di rendering. Idealmente, viene eseguito un solo mapping di gamut tra un dispositivo di origine e di destinazione impostando uno o l'altro GMMP su NULL quando si creano le informazioni sul profilo HPROFILE con le informazioni del profilo WCS. Qualsiasi applicazione legacy che usa un DMP WCS richiama una sequenza di GMMP. I GDB vengono scelti in base a DMP e CAMP. Per i limiti di gamma GMMP intermedi, vengono usati i GBD di origine e di destinazione.

In riepilogo, se nIntents == 1, il primo GMM viene impostato in base al gmMP impostato come predefinito* per il valore padwIntent , a meno che tale valore non sia DWORD_MAX, nel qual caso vengono usate le informazioni GMM incorporate dal secondo profilo (le informazioni GMM incorporate sono un GMMP o, nel caso di un profilo ICC, la linea di base GMM corrispondente a** la finalità dall'intestazione del profilo. La parte restante delle MACCHINE VIRTUALI viene impostata in base al GMMP impostato come predefinito* per RelativeColorimetric.

Se nIntents nProfiles = -1, ogni GMM viene impostato in base al gmMP impostato come predefinito* per il valore nella matrice padwIntent all'indice corrispondente, ad eccezione del caso in cui i valori padwIntent siano DWORD_MAX. Per i valori nella matrice padwIntent che sono DWORD_MAX, gli GMM in corrispondenza delle posizioni corrispondenti vengono impostati in base alle informazioni GMM incorporate dal secondo dei due profili i cui gamut vengono mappati da GMM. Di nuovo, le informazioni GMM incorporate sono un GMMP o, nel caso di un profilo ICC, la linea di base GMM corrispondente a** la finalità dall'intestazione del profilo.

Se nIntents nProfiles, la prima finalità viene ignorata e la funzione si comporta come avviene nel caso in cui nIntents = nProfiles = -1.

Qualsiasi altra combinazione di padwIntents e nIntents restituirà un errore.

* "set as default" indica che il GMMP predefinito viene eseguito una query usando WcsGetDefaultColorProfile con il parametro profileManagementScope impostato su WCS_PROFILE_MANAGEMENT_SCOPE_CURRENT_USER. Questo può restituire valori predefiniti correnti a livello di utente o di sistema, come descritto nella documentazione di WcsGetDefaultColorProfile.

** "GMM corrispondente a" non significa "GMM dal set GMMP come impostazione predefinita". Significa invece "un'associazione costante tra finalità del profilo ICC e algoritmi GMM di base".

Il supporto per la trasformazione WCS per i profili ColorSpace ICC è limitato ai profili di spazi di colore RGB. I tipi di profilo ICC seguenti non possono essere usati in una trasformazione CITE-processata, una trasformazione WCS/ICC mista o una trasformazione all-ICC con WCS_ALWAYS set:

  • Profili ColorSpace non RGB
  • Profili NamedColor
  • Profili n-channel (dove n > 8)
  • Profili DeviceLink
  • Profili astratti

Requisiti

   
Client minimo supportato Windows 2000 Professional [solo app desktop]
Server minimo supportato Windows 2000 Server [solo app desktop]
Intestazione icm.h
Libreria Mscms.lib
DLL Mscms.dll

Vedi anche