Bagikan melalui


Fungsi CreateMultiProfileTransform (icm.h)

Menerima array profil atau profil tautan perangkat tunggal dan membuat transformasi warna yang dapat digunakan aplikasi untuk melakukan pemetaan warna.

Sintaks

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

Parameter

pahProfiles

Penunjuk ke array handel ke profil yang akan digunakan. Fungsi ini menentukan apakah HPROFILEs berisi informasi profil International Color Consortium (ICC) atau Windows Color System (WCS) dan memprosesnya dengan tepat. Ketika profil WCS yang valid dikembalikan oleh OpenColorProfileW dan WcsOpenColorProfileW, handel profil ini berisi kombinasi profil DMP, CAMP, dan GMMP.

nProfiles

Menentukan jumlah profil dalam array. Maksimum adalah 10.

padwIntent

Arahkan ke array niat yang akan digunakan. Setiap niat adalah salah satu nilai berikut:

INTENT_PERCEPTUAL

INTENT_SATURATION

INTENT_RELATIVE_COLORIMETRIC

INTENT_ABSOLUTE_COLORIMETRIC

GMMP adalah generalisasi niat. Ada dua kemungkinan sumber niat: profil "tujuan" dan parameter daftar niat untuk CreateMultiProfileTransform. Istilah "tujuan" tidak digunakan karena semua kecuali dua profil dalam parameter daftar profil akan berfungsi sebagai tujuan pertama dan kemudian sumber.

Untuk informasi selengkapnya, lihat Niat Rendering.

nIntents

Menentukan jumlah elemen dalam array niat: bisa 1 atau nilai yang sama dengan nProfiles. Untuk array profil yang berisi profil WCS apa pun, niat penyajian pertama diabaikan dan hanya elemen nProfiles -1 yang digunakan untuk array profil ini. Jumlah maksimum nIntents adalah 10.

dwFlags

Menentukan bendera yang digunakan untuk mengontrol pembuatan transformasi. Lihat Keterangan.

indexPreferredCMM

Menentukan indeks berbasis satu profil warna yang menunjukkan modul manajemen warna (CMM) apa yang akan digunakan. Pengembang aplikasi dapat mengizinkan Windows untuk memilih CMM dengan mengatur parameter ini ke INDEX_DONT_CARE. Lihat Menggunakan Modul Manajemen Warna (CMM) CMM pihak ketiga hanya tersedia untuk alur kerja ICC. Array profil yang berisi profil WCS akan mengabaikan bendera ini. Ini juga diabaikan ketika hanya profil ICC yang digunakan dan ketika bendera WCS_ALWAYS digunakan.

Mengembalikan nilai

Jika fungsi ini berhasil, nilai yang dikembalikan adalah handel ke transformasi warna.

Jika fungsi ini gagal, nilai yang dikembalikan adalah NULL. Untuk informasi kesalahan yang diperluas, hubungi GetLastError.

Keterangan

Jika profil tautan perangkat sedang digunakan, fungsi akan gagal jika nProfiles tidak diatur ke 1.

Array niat menentukan bagaimana profil harus digabungkan. Niat ke-ndigunakan untuk menggabungkan profil ke-ndalam array. Jika hanya satu niat yang ditentukan, niat tersebut digunakan untuk profil pertama, dan semua profil lainnya digabungkan menggunakan niat Cocokkan.

Nilai dalam dwFlags dimaksudkan sebagai petunjuk saja. Modul manajemen warna harus menentukan cara terbaik untuk menggunakannya.

Windows Vista: Tiga bendera baru telah ditambahkan yang dapat digunakan dengan dwFlags:

Bendera Deskripsi
PRESERVEBLACK Jika bit ini diatur, mesin transformasi menyisipkan GMMP generasi hitam yang sesuai sebagai GMMP terakhir dalam urutan transformasi. Bendera ini hanya berfungsi dalam transformasi WCS murni.
SEQUENTIAL_TRANSFORM Jika bit ini diatur, setiap langkah dalam alur pemrosesan WCS dilakukan untuk setiap piksel dalam gambar dan tidak ada transformasi warna yang dioptimalkan yang dibangun. Bendera ini hanya berfungsi dalam transformasi WCS murni. Pembatasan: Transformasi yang dibuat dengan set bendera SEQUENTIAL_TRANSFORM hanya dapat digunakan dalam utas tempat transformasi dibuat dan hanya untuk satu panggilan terjemahan warna pada satu waktu. COM harus diinisialisasi sebelum membuat transformasi berurutan dan harus tetap diinisialisasi selama masa pakai objek transformasi.
WCS_ALWAYS Jika bit ini diatur, bahkan transformasi all-ICC akan menggunakan jalur kode WCS.

Catatan

SEQUENTIAL_TRANSFORM secara tidak sengaja dihilangkan dari header icm.h di Windows Vista SDK. Jika Anda ingin menggunakan bendera SEQUENTIAL_TRANSFORM, tentukan di aplikasi Anda sebagai berikut:

#define SEQUENTIAL_TRANSFORM 0x80800000

Untuk detailnya, lihat Bendera Pembuatan Transformasi CMM. Semua bendera yang disebutkan di sana didukung untuk semua jenis transformasi, kecuali untuk FAST_TRANSLATE dan USE_RELATIVE_COLORIMETRIC, yang hanya berfungsi dalam transformasi ICC-ke-ICC murni.

Fungsi CreateMultiProfileTransform digunakan di luar konteks perangkat. Warna dapat berubah saat mengubah dari profil warna ke profil warna yang sama. Hal ini disebabkan oleh kesalahan presisi. Oleh karena itu, transformasi warna tidak boleh dilakukan dalam keadaan ini.

Kami menyarankan agar hanya ada satu GMMP antara DMP sumber dan tujuan. Deskripsi batas Gamut (GBD) dibuat dari kombinasi DMP/CAMP. GMMP berikutnya menggunakan GDB sebelum di rantai pemrosesan sampai ada DMP/CAMP GBD berikutnya dalam urutan yang akan digunakan. Misalnya, asumsikan urutan DMP1, CAMP1, GMMP1, GMMP2, GMMP3, DMP2, CAMP2, GMMP4, GMMP5, CAMP3, DMP3. Kemudian GMMP1, GMMP2 menggunakan GBD1 sebagai sumber dan tujuannya. Kemudian GMMP3 menggunakan GBD1 sebagai sumber dan GBD2 sebagai tujuan. Kemudian GMMP4 menggunakan GBD2 sebagai sumber dan tujuan. Akhirnya GMMP5 menggunakan GBD2 sebagai sumber dan GBD3 sebagai tujuan. Ini mengasumsikan tidak ada GMMP yang identik dengan GMMP di sebelahnya.

Untuk profil WCS, sebaiknya niat penyajian diatur ke DWORD_MAX untuk menggunakan GMMP dalam handel profil WCS. Ini karena array niat penyajian lebih diutamakan daripada niat penyajian atau model pemetaan gamut yang ditentukan atau terkandung dalam profil yang ditentukan oleh HPROFILES. Array niat penyajian mereferensikan GMMP default untuk niat penyajian tersebut. Idealnya, hanya satu pemetaan gamut yang dilakukan antara perangkat sumber dan tujuan dengan mengatur satu atau GMMP lainnya ke NULL saat membuat HPROFILE dengan informasi profil WCS. Setiap aplikasi warisan yang menggunakan WCS DMP akan memanggil urutan GMMP. GDB dipilih berdasarkan DMP dan CAMP. Untuk batas gamut GMMP menengah, GBD sumber dan tujuan digunakan.

Singkatnya, jika nIntents == 1, maka GMM pertama diatur berdasarkan GMMP yang ditetapkan sebagai default* untuk nilai padwIntent , kecuali nilai tersebut DWORD_MAX, dalam hal ini informasi GMM yang disematkan dari profil kedua digunakan (Informasi GMM yang disematkan adalah GMMP atau, dalam kasus profil ICC, garis besar GMM yang sesuai dengan** niat dari header profil). Sisa GM ditetapkan berdasarkan GMMP yang ditetapkan sebagai default* untuk RelativeColorimetric.

Jika nIntents = nProfiles -1, maka setiap GMM diatur berdasarkan GMMP yang ditetapkan sebagai default* untuk nilai dalam array padwIntent pada indeks yang sesuai, kecuali di mana nilai padwIntent DWORD_MAX. Untuk nilai dalam array padwIntent yang DWORD_MAX, GM pada posisi yang sesuai diatur berdasarkan informasi GMM yang disematkan dari yang kedua dari dua profil yang gamutnya dipetakan oleh GMM. (Sekali lagi, informasi GMM yang disematkan adalah GMMP atau, dalam kasus profil ICC, GMM garis besar yang sesuai dengan** niat dari header profil).

Jika nIntents = nProfiles, maka niat pertama diabaikan dan fungsi berperilaku seperti dalam kasus ketika nIntents = nProfiles -1.

Kombinasi lain dari padwIntents dan nIntents akan mengembalikan kesalahan.

* "diatur sebagai default" berarti bahwa GMMP default dikueri menggunakan WcsGetDefaultColorProfile dengan parameter profileManagementScope yang diatur ke WCS_PROFILE_MANAGEMENT_SCOPE_CURRENT_USER. Ini dapat mengembalikan default pengguna saat ini atau seluruh sistem seperti yang dijelaskan dalam dokumentasi untuk WcsGetDefaultColorProfile.

** "GMM sesuai dengan" tidak berarti "GMM dari GMMP ditetapkan sebagai default untuk". Sebaliknya itu berarti "hubungan konstan antara niat profil ICC dan algoritma GMM dasar."

Dukungan transformasi WCS untuk profil ICC ColorSpace terbatas pada profil ruang warna RGB. Jenis profil ICC berikut tidak dapat digunakan dalam transformasi yang diproses CITE, baik transformasi WCS/ICC campuran atau transformasi all-ICC dengan set WCS_ALWAYS :

  • Profil ColorSpace Non-RGB
  • Profil NamedColor
  • profil n-channel (di mana n > 8)
  • Profil DeviceLink
  • Profil abstrak

Persyaratan

   
Klien minimum yang didukung Windows 2000 Professional [hanya aplikasi desktop]
Server minimum yang didukung Windows 2000 Server [hanya aplikasi desktop]
Header icm.h
Pustaka Mscms.lib
DLL Mscms.dll

Lihat juga