CreateMultiProfileTransform 함수(icm.h)
프로필 배열 또는 단일 디바이스 링크 프로필을 허용하고 애플리케이션이 색 매핑을 수행하는 데 사용할 수 있는 색 변환을 만듭니다.
구문
HTRANSFORM CreateMultiProfileTransform(
PHPROFILE pahProfiles,
DWORD nProfiles,
PDWORD padwIntent,
DWORD nIntents,
DWORD dwFlags,
DWORD indexPreferredCMM
);
매개 변수
pahProfiles
사용할 프로필에 대한 핸들 배열에 대한 포인터입니다. 함수는 HPROFILE에 ICC(International Color Consortium) 또는 WCS(Windows Color System) 프로필 정보가 포함되어 있는지 여부를 확인하고 적절하게 처리합니다. OpenColorProfileW 및 WcsOpenColorProfileW에서 유효한 WCS 프로필을 반환하는 경우 이러한 프로필 핸들에는 DMP, CAMP 및 GMMP 프로필의 조합이 포함됩니다.
nProfiles
배열의 프로필 수를 지정합니다. 최대값은 10입니다.
padwIntent
사용할 의도 배열에 대한 포인터입니다. 각 의도는 다음 값 중 하나입니다.
-
INTENT_PERCEPTUAL
-
INTENT_SATURATION
-
INTENT_RELATIVE_COLORIMETRIC
-
INTENT_ABSOLUTE_COLORIMETRIC
GMMP는 의도의 일반화입니다. 의도에는 "대상" 프로필과 CreateMultiProfileTransform에 대한 의도 목록 매개 변수의 두 가지 가능한 원본이 있습니다. 프로필 목록 매개 변수의 두 프로필을 제외한 모든 프로필이 첫 번째 대상 및 원본으로 사용되므로 "대상"이라는 용어는 사용되지 않습니다.
자세한 내용은 렌더링 의도를 참조하세요.
nIntents
의도 배열의 요소 수를 지정합니다. 1이거나 nProfiles와 같은 값일 수 있습니다. WCS 프로필이 포함된 프로필 배열의 경우 첫 번째 렌더링 의도는 무시되며 이러한 프로필 배열에는 nProfiles -1 요소만 사용됩니다. nIntents의 최대 수는 10개입니다.
dwFlags
변환 만들기를 제어하는 데 사용되는 플래그를 지정합니다. 설명 부분을 참조하세요.
indexPreferredCMM
사용할 CMM(색 관리 모듈)을 나타내는 색 프로필의 1 기반 인덱스를 지정합니다. 애플리케이션 개발자는 이 매개 변수를 INDEX_DONT_CARE 설정하여 Windows에서 CMM을 선택할 수 있도록 허용할 수 있습니다. CMM(색 관리 모듈) 타사 CMM은 ICC 워크플로에만 사용할 수 있음을 참조하세요. WCS 프로필을 포함하는 프로필 배열은 이 플래그를 무시합니다. ICC 프로필만 사용되고 WCS_ALWAYS 플래그가 사용되는 경우에도 무시됩니다.
반환 값
이 함수가 성공하면 반환 값은 색 변환에 대한 핸들입니다.
이 함수가 실패하면 반환 값은 NULL입니다. 확장 오류 정보는 GetLastError를 호출합니다.
설명
디바이스 링크 프로필을 사용하는 경우 nProfiles 를 1로 설정하지 않으면 함수가 실패합니다.
의도 배열은 프로필을 결합하는 방법을 지정합니다. n번째 의도는 배열에서 n번째 프로필을 결합하는 데 사용됩니다. 의도를 하나만 지정하면 첫 번째 프로필에 사용되고 다른 모든 프로필은 일치 의도를 사용하여 결합됩니다.
dwFlags의 값은 힌트로만 사용됩니다. 색 관리 모듈은 이를 사용하는 가장 좋은 방법을 결정해야 합니다.
Windows Vista: dwFlags와 함께 사용할 수 있는 세 개의 새 플래그가 추가되었습니다.
플래그 | 설명 |
---|---|
PRESERVEBLACK | 이 비트를 설정하면 변환 엔진은 적절한 검은색 세대 GMMP를 변환 시퀀스의 마지막 GMMP로 삽입합니다. 이 플래그는 순수 WCS 변환에서만 작동합니다. |
SEQUENTIAL_TRANSFORM | 이 비트를 설정하면 WCS 처리 파이프라인의 각 단계가 이미지의 모든 픽셀에 대해 수행되며 최적화된 색 변환이 빌드되지 않습니다. 이 플래그는 순수 WCS 변환에서만 작동합니다. 제한 사항: SEQUENTIAL_TRANSFORM 플래그 집합을 사용하여 만든 변환은 생성된 스레드에서만 사용할 수 있으며 한 번에 하나의 색 변환 호출에만 사용할 수 있습니다. 순차 변환을 만들기 전에 COM을 초기화해야 하며 변환 개체의 수명 동안 초기화된 상태를 유지해야 합니다. |
WCS_ALWAYS | 이 비트가 설정되면 모든 ICC 변환에서도 WCS 코드 경로를 사용합니다. |
참고
SEQUENTIAL_TRANSFORM 실수로 Windows Vista SDK의 icm.h 헤더에서 생략되었습니다. SEQUENTIAL_TRANSFORM 플래그를 사용하려면 다음과 같이 애플리케이션에서 정의합니다.
#define SEQUENTIAL_TRANSFORM 0x80800000
자세한 내용은 CMM 변환 만들기 플래그를 참조하세요. 언급된 모든 플래그는 순수 ICC-ICC 변환에서만 작동하는 FAST_TRANSLATE 및 USE_RELATIVE_COLORIMETRIC 제외하고 모든 유형의 변환에 대해 지원됩니다.
CreateMultiProfileTransform 함수는 디바이스 컨텍스트 외부에서 사용됩니다. 색 프로필에서 동일한 색 프로필로 변환할 때 색이 바뀔 수 있습니다. 정밀도 오류 때문입니다. 따라서 이러한 상황에서는 색 변환을 수행해서는 안 됩니다.
원본 DMP와 대상 DMP 사이에는 GMMP가 하나만 있는 것이 좋습니다. GBD(영역 경계 설명)는 DMP/CAMP 조합에서 만들어집니다. 후속 GMMP는 사용할 시퀀스에 DMP/CAMP GBD가 있을 때까지 처리 체인에서 GDB를 사용합니다. 예를 들어 시퀀스 DMP1, CAMP1, GMMP1, GMMP2, GMMP3, DMP2, CAMP2, GMMP4, GMMP5, CAMP3, DMP3을 가정합니다. 그런 다음 GMMP1, GMMP2는 GBD1을 원본 및 대상으로 사용합니다. 그런 다음 GMMP3는 GBD1을 원본으로 사용하고 GBD2를 대상으로 사용합니다. 그런 다음 GMMP4는 GBD2를 원본 및 대상으로 사용합니다. 마지막으로 GMMP5는 GBD2를 원본으로 사용하고 GBD3을 대상으로 사용합니다. 이는 GMMP가 옆에 있는 것과 동일하지 않은 것으로 가정합니다.
WCS 프로필의 경우 WCS 프로필 핸들 내에서 GMMP를 사용하기 위해 렌더링 의도를 DWORD_MAX 설정하는 것이 좋습니다. 렌더링 의도의 배열이 HPROFILE에서 지정한 프로필에 지정되거나 포함된 렌더링 의도 또는 영역 매핑 모델보다 우선하기 때문입니다. 렌더링 의도의 배열은 렌더링 의도에 대한 기본 GMMP를 참조합니다. 이상적으로는 WCS 프로필 정보를 사용하여 HPROFILE을 만들 때 하나 또는 다른 GMMP를 NULL 로 설정하여 원본 디바이스와 대상 디바이스 간에 하나의 영역 매핑만 수행됩니다. WCS DMP를 사용하는 모든 레거시 애플리케이션은 GMMP 시퀀스를 호출합니다. GDB는 DMP 및 CAMP에 따라 선택됩니다. 중간 GMMP 영역 경계의 경우 원본 및 대상 GBD가 사용됩니다.
요약하자면, nIntents == 1이면 해당 값이 DWORD_MAX 않는 한 padwIntent 값에 대해 기본*으로 설정된 GMMP를 기반으로 첫 번째 GMM이 설정됩니다. 이 경우 두 번째 프로필의 포함된 GMM 정보가 사용됩니다(포함된 GMM 정보는 GMMP이거나 ICC 프로필의 경우). 프로필 헤더의 의도에 해당하는 기준 GMM). GMM의 나머지 는 RelativeColorimetric에 대해 기본*으로 설정된 GMMP를 기반으로 설정됩니다.
nIntents = nProfiles -1이면 각 GMM은 padwIntent 값이 DWORD_MAX 경우를 제외하고 해당 인덱스의 padwIntent 배열 값에 대해 default*로 설정된 GMMP를 기반으로 설정됩니다. DWORD_MAX padwIntent 배열의 값에 대해 해당 위치의 GMM은 해당 영역이 GMM에 의해 매핑되는 두 프로필 중 두 번째 프로필의 포함된 GMM 정보를 기반으로 설정됩니다. (다시 말하지만 포함된 GMM 정보는 GMMP이거나 ICC 프로필의 경우 프로필 헤더의 의도**에 해당하는 기준 GMM)입니다.
nIntents = nProfiles인 경우 첫 번째 의도는 무시되고 nIntentsnProfiles -1인 경우와 마찬가지로 함수가 동작합니다 = .
padwIntents와 nIntents의 다른 조합은 오류를 반환합니다.
* "기본값으로 설정"은 기본 GMMP가 profileManagementScope 매개 변수가 WCS_PROFILE_MANAGEMENT_SCOPE_CURRENT_USER 설정된 WcsGetDefaultColorProfile을 사용하여 쿼리됨을 의미합니다. WcsGetDefaultColorProfile 설명서에 설명된 대로 현재 사용자 또는 시스템 전체 기본값을 반환할 수 있습니다.
** "에 해당하는 GMM"이 "기본값으로 설정된 GMMP의 GMM"을 의미하지는 않습니다. 대신 "ICC 프로필 의도와 기준 GMM 알고리즘 간의 지속적인 연결"을 의미합니다.
ICC ColorSpace 프로필에 대한 WCS 변환 지원은 RGB 색 영역 프로필로 제한됩니다. 다음 ICC 프로필 형식은 CITE 처리 변환( 혼합 WCS/ICC 변환 또는 WCS_ALWAYS 집합이 있는 모든 ICC 변환)에서 사용할 수 없습니다.
- RGB가 아닌 ColorSpace 프로필
- NamedColor 프로필
- n 채널 프로필(여기서 n > 8)
- DeviceLink 프로필
- 추상 프로필
요구 사항
지원되는 최소 클라이언트 | Windows 2000 Professional[데스크톱 앱만] |
지원되는 최소 서버 | Windows 2000 Server[데스크톱 앱만] |
머리글 | icm.h |
라이브러리 | Mscms.lib |
DLL | Mscms.dll |