Bagikan melalui


Metode IPrintOemUni::FilterGraphics (prcomoem.h)

Metode IPrintOemUni::FilterGraphics dapat digunakan dengan printer yang didukung Unidrv untuk memodifikasi data baris pemindaian dan mengirimkannya ke penampung.

Sintaks

HRESULT FilterGraphics(
  PDEVOBJ pdevobj,
  PBYTE   pBuf,
  DWORD   dwLen
);

Parameter

pdevobj

Penunjuk yang disediakan penelepon ke struktur DEVOBJ .

pBuf

Penunjuk yang disediakan penelepon ke buffer yang berisi data baris pemindaian yang akan dicetak.

dwLen

Nilai yang disediakan penelepon yang mewakili panjang, dalam byte, dari data yang ditunjukkan oleh pBuf.

Nilai kembali

Metode harus mengembalikan salah satu nilai berikut:

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

Keterangan

Metode IPrintOemUni::FilterGraphics digunakan untuk memodifikasi data baris pemindaian sebelum dikirim ke penampung cetak. Metode ini bertanggung jawab untuk mengirim data yang diterimanya ke penampung.

Metode IPrintOemUni::FilterGraphics bersifat opsional. Jika plug-in penyajian mengimplementasikan metode ini, metode IPrintOemUni::GetImplementedMethod plug-in harus mengembalikan S_OK saat menerima "FilterGraphics" sebagai input.

Jika metode IPrintOemUni::FilterGraphics diimplementasikan, Unidrv tidak menampung data printer. Sebaliknya, Unidrv memanggil metode ini setiap kali buffer data gambar siap ditampung.

Perhatikan bahwa ketika metode ini diterapkan, Unidrv juga tidak memadatkan data printer, seperti biasanya. Jika Anda berniat untuk menggunakan kompresi Unidrv, Anda tidak boleh menerapkan metode ini. Selain itu, Anda harus memodifikasi IPrintOemUni::GetImplementedMethod sehingga mengembalikan S_FALSE ketika diteruskan string "FilterGraphics".

Metode ini dapat melakukan pemrosesan akhir data gambar, seperti menghapus titik yang berdekatan atau operasi pemfilteran aliran data lainnya yang tidak disediakan Unidrv. Kemudian harus menampung data dengan memanggil metode IPrintOemDriverUni::D rvWriteSpoolBuf .

Metode IPrintOemUni::FilterGraphics dipanggil oleh fungsi DrvSendPage Unidrv. Jika Anda ingin menerapkan IPrintOemUni::FilterGraphics, Anda tidak boleh sepenuhnya mengambil alih fungsi DrvSendPage atau DrvNextBand Unidrv.

Sebelum fungsi DrvSendPage Unidrv memanggil implementasi IPrintOemUni::FilterGraphics plug-in, DrvSendPage.

  1. Jika perlu, mengubah urutan bitmap yang akan dirender.

  2. Mengubah output pass yang terdiri dari data warna menjadi satu array data yang berdampingan.

  3. Memproses sekelompok baris pemindaian dan mengubah data ini menjadi perintah untuk pencetak.

  4. Mengatur posisi X/Y dan meneruskan garis data grafik ke printer.

Jika plug-in telah menerapkan IPrintOemUni::FilterGraphics, Unidrv akan memanggil plug-in dengan data baris pemindaian alih-alih mengirimkannya ke printer.

Metode IPrintOemUni::FilterGraphics memungkinkan plug-in penyajian untuk memodifikasi data baris pemindaian dan mengirimkannya ke penampung. Jika Anda menerapkan fungsi ini, Unidrv tidak akan menampung data Anda. Sebaliknya, IPrintOemUni::FilterGraphics akan dipanggil setiap kali buffer data siap ditampung dan dikirim ke printer.

Anda dapat menggunakan IPrintOemUni::FilterGraphics untuk mengimplementasikan metode kompresi khusus atau untuk melakukan manipulasi bit pada aliran data yang dikirim ke printer atau keduanya. Dalam situasi apa pun, kode kompresi bawaan driver tidak digunakan. IPrintOemUni::FilterGraphics disajikan dengan blok data dan diperlukan untuk menghasilkan data ini dengan menggunakan fungsi DrvWriteSpoolBuf . Driver inti (Unidrv) tidak akan melakukan pemrosesan lebih lanjut dari data raster setelah memanggil OEMFilterGraphics.

Saat Anda menerapkan metode IPrintOemUni::FilterGraphics di plug-in Anda, metode tersebut akan digunakan untuk mengirim data raster langsung ke printer. Jumlah baris pemindaian dalam blok ditentukan melalui atribut PinsPerPhysPass yang terkait dengan fitur Resolusi Atribut ini opsional, dan jika Anda tidak menentukannya, itu diatur ke 1 (seperti untuk sebagian besar printer inkjet dan halaman). Jika tidak, PinsPerPhysPass harus kelipatan 8. Di IPrintOemUni::FilterGraphics, parameter pBuf menunjuk ke buffer yang berisi data raster baris pemindaian yang akan Anda manipulasi jika perlu (misalnya, untuk kompresi) dan akhirnya dikirim. Parameter dwLen adalah panjang buffer yang dituju pBuf .

Daftar berikut ini menjelaskan beberapa skenario umum untuk menerapkan IPrintOemUni::FilterGraphics:

  • Teknik kompresi khusus

  • Manipulasi bit data raster masuk sebelum mengirimkannya ke printer

IPrintOemUni::FilterGraphics akhirnya mengirim semua data ke printer dengan menggunakan fungsi DrvWriteSpoolBuf . Driver inti (Unidrv) tidak melakukan pemrosesan lagi pada data yang dikirim IPrintOemUni::FilterGraphics . Jika plug-in melakukan kompresi khusus atau manipulasi bit, plug-in harus mengalokasikan buffer yang diperlukan untuk kompresi khusus atau manipulasi bit. Jika plug-in tidak mengalokasikan buffernya sendiri dan jika data terkompresi lebih kecil dari sumbernya, output akan menimpa buffer sumber.

Metode IPrintOemUni::FilterGraphics memberi Anda akses ke data baris pemindaian itu sendiri dan memberi Anda kemampuan untuk pasca-proses data raster.

Jumlah baris pemindaian sama dengan tinggi gambar. Misalnya, ketebalan 1 bit per piksel (bpp) dari setiap baris pemindaian sama dengan lebar 1 piksel, sehingga jumlah baris pemindaian sama dengan tinggi gambar.

Untuk informasi selengkapnya tentang menyesuaikan operasi penyajian Unidrv, lihat Penyajian khusus Unidrv.

Persyaratan

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

Lihat juga

DrvNextBand

DrvSendPage

DrvWriteSpoolBuf

IPrintOemDriverUni::D rvWriteSpoolBuf

IPrintOemUni

IPrintOemUni::GetImplementedMethod

OEMFilterGraphics