Bagikan melalui


Metode IPrintOemUni::ImageProcessing (prcomoem.h)

Metode IPrintOemUni::ImageProcessing ini dapat digunakan dengan printer yang didukung Unidrv untuk memodifikasi data bitmap gambar, untuk melakukan pemformatan warna atau halftoning. Metode ini dapat mengembalikan bitmap yang dimodifikasi ke Unidrv atau mengirimkannya langsung ke penampung cetak.

Sintaks

HRESULT ImageProcessing(
        PDEVOBJ           pdevobj,
        PBYTE             pSrcBitmap,
        PBITMAPINFOHEADER pBitmapInfoHeader,
        PBYTE             pColorTable,
        DWORD             dwCallbackID,
        PIPPARAMS         pIPParams,
  [out] OUT PBYTE         *ppbResult
);

Parameter

pdevobj

Penunjuk yang disediakan penelepon ke struktur DEVOBJ .

pSrcBitmap

Penunjuk yang disediakan penelepon ke INPUT DIB.

pBitmapInfoHeader

Penunjuk yang disediakan penelepon ke struktur BITMAPINFOHEADER yang menjelaskan bitmap yang ditujukkan oleh pSrcBitmap. Struktur BITMAPINFOHEADER dijelaskan dalam dokumentasi Microsoft Windows SDK.

pColorTable

Penunjuk yang disediakan penelepon ke tabel warna. Parameter ini hanya digunakan jika format output adalah delapan bit per piksel. Untuk informasi selengkapnya, lihat bagian Keterangan berikut ini.

Saat menginterpretasikan bitmap, Anda harus memeriksa tabel warna. Unidrv dapat memodifikasi warna dalam bitmap, tetapi juga akan membuat penyesuaian yang sesuai dalam tabel warna, sehingga tidak ada perubahan bersih. Namun, jika Anda mengabaikan perubahan tabel warna, dan hanya memeriksa bitmap, gambar mungkin tidak dicetak dengan benar. Misalnya, lihat diskusi parameter pPaletteEntry di HT_Get8BPPMaskPalette.

dwCallbackID

Nilai yang disediakan penelepon yang ditetapkan ke atribut *IPCallbackID dari opsi yang saat ini dipilih untuk fitur ColorMode. Untuk informasi selengkapnya, lihat bagian Keterangan berikut ini.

pIPParams

Penunjuk yang disediakan penelepon ke struktur IPPARAMS .

[out] ppbResult

Penunjuk ke lokasi memori yang berisi alamat buffer. Konten buffer bergantung pada di mana DIB yang dikonversi harus dikirim.

Jika metode ini berniat untuk mengirim DIB yang dikonversi kembali ke Unidrv dan berhasil dalam konversi, metode ini harus mengatur *ppbResult ke alamat buffer yang berisi DIB yang dikonversi, dan harus mengembalikan S_OK. Jika konversi gagal, metode harus mengatur *ppbResult ke NULL, dan harus mengembalikan E_FAIL.

Jika metode ini berniat untuk mengirim DIB yang dikonversi ke penampung dan berhasil dalam konversi, metode harus mengatur *ppbResult ke TRUE, dan harus mengembalikan S_OK. Jika konversi gagal, metode harus mengatur *ppbResult ke FALSE dan harus mengembalikan E_FAIL. Untuk informasi selengkapnya, lihat diskusi atribut *DevBPP dan *DevNumOfPlanes di bagian Keterangan.

Menampilkan nilai

Metode harus mengembalikan salah satu nilai berikut.

Menampilkan kode Deskripsi
S_OK
Operasi berhasil.
E_FAIL
Operasi gagal.
E_NOTIMPL
Metode ini tidak diterapkan.
 

Karakteristik Bitmap Sumber

Karakteristik Bitmap Tujuan

Keterangan

Metode IPrintOemUni::ImageProcessing ini digunakan untuk memodifikasi bitmap gambar sebelum dikirim ke penampung cetak. Tujuannya adalah untuk memberikan dukungan yang disesuaikan untuk mode warna dan metode halftoning yang tidak didukung oleh Unidrv. Driver printer yang mengirim bitmap ke penampung cetak (dibandingkan dengan mengirimnya kembali ke Unidrv) harus mengatur atribut *DevBPP dan *DevNumOfPlanes ke nol dalam file GPD printer.

Jika metode diimplementasikan, dan jika entri file GPD untuk format warna saat ini berisi atribut *IPCallbackID , Unidrv memanggil metode setiap kali bitmap tersedia. Panggilan dilakukan setelah GDI merender bitmap, yang kemudian dikirim ke penampung. (Untuk informasi tentang atribut *IPCallbackID , lihat Atribut Opsi untuk Fitur ColorMode.)

Jika mode warna saat ini, seperti yang ditentukan oleh dwCallbackID, adalah salah satu yang didukung Unidrv, maka IPrintOemUni::ImageProcessing metode harus melakukan operasi halftoning pada bitmap yang diterima dan mengembalikannya ke Unidrv untuk penampungan. Jika mode warna saat ini adalah mode yang tidak didukung Unidrv, metode harus melakukan operasi halftoning dan kemudian menampung bitmap.

Jika metode hanya melakukan operasi halftoning, metode harus melakukan hal berikut:

  • Lakukan operasi halftoning pada data, seperti yang ditunjukkan oleh anggota pHalftoneOption dari struktur IPPARAMS .
  • Kembalikan data gambar yang dimodifikasi ke Unidrv dengan menempatkannya di buffer dan menyediakan alamat buffer sebagai nilai pengembalian metode. Buffer yang dikembalikan dapat menjadi buffer yang dialokasikan oleh pSrcBitmap, atau dapat berupa buffer yang dialokasikan secara lokal.
Untuk informasi selengkapnya tentang menyesuaikan operasi halftoning di Unidrv, lihat Halftoning yang Disesuaikan.

Untuk menangani pemformatan warna yang IPrintOemUni::ImageProcessing dikustomisasi, metode harus melakukan hal berikut:

Untuk informasi selengkapnya tentang menyesuaikan operasi pemformatan warna di Unidrv, lihat Format Warna yang Dikustomisasi.

Parameter dwCallbackID menunjukkan jenis pemformatan warna, jika ada, yang harus dilakukan. Dalam file GPD printer, setiap entri *Opsi untuk fitur ColorMode menjelaskan format warna. Jika format memerlukan pemrosesan dengan IPrintOemUni::ImageProcessing metode , entri *Opsi harus berisi atribut *IPCallbackID . Ketika Unidrv memanggil IPrintOemUni::ImageProcessing metode , Unidrv menyediakan nilai atribut yang terkait dengan opsi yang saat ini dipilih untuk fitur ColorMode. Nilai ini adalah nilai parameter dwCallbackID .

IPrintOemUni::ImageProcessing Apakah metode melakukan operasi pemformatan warna dan menampung data gambar, atau hanya melakukan operasi halftoning dan mengembalikan bitmap yang diproses ke Unidrv, metode tersebut harus mengekspor metode IPrintOemUni::MemoryUsage jika mengalokasikan sejumlah besar memori untuk bitmap tujuan atau tujuan lainnya. Jika tidak, performa sistem mungkin terdegradasi.

Jika metode diimplementasikan, metode ini dipanggil untuk setiap wilayah raster di halaman. Namun, jika wilayah kosong, anggota bBlankBand dari struktur IPPARAMS diatur ke TRUE, yang menunjukkan blok kosong dan data tidak valid. Karena pita dapat dipecah menjadi blok alternatif wilayah kosong dan tidak kosong untuk mengoptimalkan performa, ukuran blok tidak selalu sesuai dengan ukuran pita.

Bitmap sumber yang dijelaskan oleh pSrcBitmap dan pBitmapInfoHeader memiliki karakteristik berikut:

  • Konten DIB diurutkan ke atas dan tidak dikompresi.
  • Format data adalah format yang tercantum dalam Menangani Format Warna.
  • Jika format memerlukan tabel warna, tabel ditujukkan oleh pColorTable.
  • Data warna dalam format PRIMARY_ORDER_CBA, seperti yang dijelaskan dalam deskripsi anggota ulPrimaryOrder dari struktur GDIINFO . Dengan kata lain, jika format warna adalah RGB atau CMY, n bit yang paling tidak signifikan harus berisi nilai biru atau kuning, bit n berikutnya harus berisi nilai hijau atau magenta, dan bit n berikutnya harus berisi nilai merah atau sian. Bit yang tidak digunakan berada di posisi yang paling signifikan. Jika format menggunakan 4 bit per piksel, maka n adalah 1. Untuk 24 bit per piksel, n adalah 8, seperti yang ditunjukkan pada gambar berikut. Untuk CMYK, kelompok keempat n bit berisi hitam.

PRIMARY_ORDER_CBA Format
Gambar sebelumnya menggambarkan data warna dalam format PRIMARY_ORDER_CBA untuk dua piksel, dengan 24 bit data warna per piksel. Berpindah dari alamat memori rendah ke alamat memori tinggi, ada delapan bit data biru, lalu delapan bit data hijau, dan kemudian delapan bit data merah, setelah itu pola diulang. Ini juga dikenal sebagai urutan output perangkat BGR.
Untuk operasi halftoning, di mana bitmap yang diproses dikembalikan ke Unidrv, bitmap yang dikembalikan harus memiliki karakteristik berikut:
  • Konten DIB harus diurutkan ke atas dan tidak dikompresi.
  • Format data harus berupa format yang tercantum dalam Menangani Format Warna, dan harus kompatibel dengan atribut *DevBPP dan *DevNumOfPlanes dari format warna yang diidentifikasi oleh dwCallbackID. (Untuk informasi tentang atribut ini, lihat Atribut Opsi untuk Fitur ColorMode.)
  • Jika format memerlukan tabel warna, tabel harus dibuat dan alamatnya harus dikembalikan dalam pColorTable.
  • Data warna harus dikembalikan dalam format PRIMARY_ORDER_CBA, seperti yang dijelaskan untuk bitmap sumber.
  • Struktur BITMAPINFOHEADER yang ditentukan oleh pBitmapInfoHeader harus menjelaskan bitmap input dan output. Metode IPrintOemUni::ImageProcessing tidak boleh mengubah konten struktur.
Metode IPrintOemUni::ImageProcessing ini bersifat opsional. Jika plug-in penyajian mengimplementasikan metode ini, metode IPrintOemUni::GetImplementedMethod plug-in harus mengembalikan S_OK ketika menerima "ImageProcessing" sebagai input.

Persyaratan

Persyaratan Nilai
Target Platform Desktop
Header prcomoem.h (termasuk Prcomoem.h)

Lihat juga

HT_Get8BPPMaskPalette

IPrintOemUni

IPrintOemUni::FilterGraphics