Pernyataan Bersyarah
Penting
Platform cetak modern adalah sarana komunikasi pilihan Windows dengan printer. Kami menyarankan agar Anda menggunakan driver kelas kotak masuk IPP Microsoft, bersama dengan Print Support Apps (PSA), untuk menyesuaikan pengalaman cetak di Windows 10 dan 11 untuk pengembangan perangkat printer.
Untuk informasi selengkapnya, lihat Platform cetak modern dan panduan desain aplikasi dukungan Cetak.
Bahasa GPD menyediakan pernyataan kondisional seperti C yang memungkinkan Anda menjelaskan dependensi yang dapat dimiliki beberapa atribut printer pada konfigurasi printer. Misalnya, margin dan asal kursor untuk halaman mungkin bergantung pada orientasi halaman. Pernyataan *Beralih dan *Kasus memungkinkan Anda untuk mengekspresikan dependensi tersebut. Format pernyataan ini adalah sebagai berikut:
*Ganti FeatureName { *Case Option1_Name { } *Case Option2_Name { } dll. *Case OptionN_Name { } *Default { } }
FeatureName harus berupa nama fitur yang ditentukan dalam file GPD dengan entri *Fitur . Nama opsi yang digunakan harus berupa opsi yang terkait dengan fitur yang ditentukan.
Untuk mengekspresikan kasus di mana margin halaman dan asal kursor bergantung pada orientasi halaman, entri berikut dapat digunakan:
*Feature: Orientation
{
*DefaultOption: Portrait
*Option: Portrait
{
*Name: "Portrait"
*rcIconID: =RC_ICON_PORTRAIT
}
*Option: LANDSCAPE_CC90
{
*Name: "Landscape"
*rcIconID: =RC_ICON_LANDSCAPE
}
}
*Feature: PaperSize
{
*DefaultOption: Letter
*Option: Letter
{
*Name: "Letter 8.5 x 11 inch"
*switch: Orientation
{
*case: Portrait
{
*PrintableArea: PAIR(4800, 6324)
*PrintableOrigin: PAIR(150, 150)
*CursorOrigin: PAIR(150,100)
}
*case: LANDSCAPE_CC90
{
*PrintableArea: PAIR(4860, 6360)
*PrintableOrigin: PAIR(120, 120)
*CursorOrigin: PAIR(100,6480)
}
}
}
}
Dalam contoh ini, opsi untuk fitur PaperSize printer bergantung pada opsi yang dipilih untuk fitur Orientasi printer.
Jika Anda tidak mencantumkan semua opsi fitur sebagai *Argumen pernyataan kasus , Anda dapat menyertakan pernyataan *Default , sama seperti dalam bahasa C. Jika Anda tidak menyertakan semua opsi dan tidak menyertakan pernyataan *Default , Anda harus mengevaluasi atribut yang relevan (dalam contoh, *PrintableArea, *PrintableOrigin, dan *CursorOrigin) di tempat lain dalam file GPD, sebelum pernyataan *Switch .
Menentukan Beberapa Dependensi
Anda dapat menyertakan *Beralih pernyataan di dalam *Kasus dan *Pernyataan default . Ini memungkinkan Anda menentukan beberapa dependensi, sebagai berikut:
*Feature: feature1 {*Option: optionA {...} *Option: optionB {...}}
*Feature: feature2 {*Option: optionC {...} *Option: optionD {...}}
*Feature: feature3
{*Option: optionE
{*Switch: feature1
{*Case: optionA
{*Switch: feature2
{*Case: optionD
{AttributeX: ValueX}
*Default
{AttributeX: ValueY}
}
}
*Default
{AttributeX: ValueZ}
}
}
*Option: optionF {...}
}
Dalam contoh ini AttributeX, milik optionE fitur3, bergantung pada fitur1 dan fitur2.
Jika pengguna telah memilih optionA untuk feature1, optionD untuk feature2, dan optionE untuk feature3, maka attributeX diatur ke ValueX.
Jika pengguna telah memilih optionA untuk feature1, optionC untuk feature2, dan optionE untuk feature3, maka attributeX diatur ke ValueY.
Jika pengguna telah memilih optionB untuk feature1 dan optionE untuk feature3, maka attributeX diatur ke ValueZ. Pengaturan untuk Feature2 tidak relevan.
Aturan berikut berlaku saat menentukan beberapa dependensi:
Beberapa dependensi harus ditentukan dalam cakupan entri *Beralih tunggal. Dengan menggunakan contoh, misalnya, Anda tidak dapat menggunakan entri *Beralih untuk menunjukkan bahwa fitur3 bergantung pada fitur1 dan kemudian, dalam pernyataan *Switch berikutnya yang tidak berlapis, menunjukkan bahwa fitur3 bergantung pada fitur2.
Anda tidak dapat menentukan fitur yang sama lebih dari sekali dalam setiap entri berlapis *Beralih .
Tempat Menempatkan *Pernyataan Pengalihan
Anda dapat menempatkan pernyataan *Switch di lokasi berikut dalam file GPD:
Di dalam pernyataan *Opsi
Di dalam pernyataan *Fitur
Di dalam pernyataan *Kasus
Di dalam pernyataan *Default
Pada tingkat atas file (yaitu, tidak di dalam satu set kurung kurawal)
Apa yang Harus Ditempatkan di Dalam *Switch, *Case, dan *Default Statements
Dalam entri *Beralih, Anda hanya dapat menempatkan *Kasing dan *Entri default.
Entri file GPD yang dapat ditempatkan di dalam *Kasus atau *Entri default disebut sebagai entri yang dapat direlokasi. Jenis entri GPD berikut dapat direlokasi:
Sebagian besar atribut printer, kecuali untuk atribut root-level-only. (Atribut umum harus didahului oleh EXTERN_GLOBAL kecuali entri *Beralih berada di tingkat akar - bukan dalam kurung kurawal.)
Berlapis *Beralih entri, yang memungkinkan Anda menentukan beberapa dependensi.
*Entri perintah.
*TTFSEnabled?, yang memungkinkan penggantian font.
Jenis entri GPD berikut ini tidak dapat direlokasi:
Atribut khusus tingkat akar.
*Entri TTFS untuk menentukan font pengganti.
*Batasan, *InvalidCombination, *InvalidInstallableCombination, *NotInstalledConstraints entri yang menentukan kombinasi opsi yang tidak valid, seperti yang dijelaskan dalam Batasan Opsi.
*Entri Fitur dan *Opsi (meskipun atribut fitur dan atribut opsi dapat direlokasi).
Salah satu metode untuk menentukan apakah entri telah ditempatkan dengan benar di dalam *Pernyataan kasus adalah menghapus semua pernyataan *Switch dan *Case . Jika entri di dalam pernyataan *Kasus benar, entri masih benar setelah *Beralih dan *Pernyataan kasus dihapus.
Pengurutan pernyataan switch dalam driver cetak V4 yang berasal dari driver kelas
File GPD driver printer turunan v4 harus mengikuti urutan yang sama dengan driver kelas dasar.
Pertimbangkan skenario berikut. Anda memiliki driver printer v4 yang berasal dari driver kelas v4 dengan mengatur RequiredClass ke driver kelas dalam file *-manifest.ini.
File GPD driver kelas memiliki pohon sakelar berikut:
* Option: A4
1. Switch: Resolution
* Option: Letter
1. Switch: Resolution
2. Switch: InputBin
Driver printer turunan v4 ingin menambahkan sakelar MarginSetting , sehingga file GPD-nya akan memiliki pohon sakelar berikut:
* Option: A4
1. Switch: Resolution
2. Switch: InputBin
3. Switch: MarginSetting
* Option: Letter
1. Switch: Resolution
2. Switch: InputBin
3. Switch: MarginSetting
Perhatikan bahwa Resolusi diatur sebelum InputBin dalam GPD turunan dan MarginSetting diatur setelah keduanya. File GPD driver printer turunan v4 mengikuti urutan yang sama dengan driver kelas dasar dan menambahkan MarginSetting setelahnya.
Misalnya, file GPD yang salah diturunkan mungkin terlihat seperti berikut:
* Option: A4
1. Switch: MarginSetting
2. Switch: InputBin
3. Switch: Resolution
* Option: Letter
1. Switch: MarginSetting
2. Switch: InputBin
3. Switch: Resolution