조건문
Important
최신 인쇄 플랫폼은 Windows에서 프린터와 통신하는 데 선호되는 수단입니다. 프린터 장치 개발을 위해 Windows 10 및 11의 인쇄 환경을 사용자 지정하려면 MICROSOFT의 IPP 받은 편지함 클래스 드라이버와 PSA(인쇄 지원 앱)를 사용하는 것이 좋습니다.
자세한 내용은 최신 인쇄 플랫폼 및 인쇄 지원 앱 디자인 가이드를 참조하세요.
GPD 언어는 일부 프린터 특성이 프린터의 구성에 가질 수 있는 종속성을 설명할 수 있는 C와 유사한 조건문을 제공합니다. 예를 들어 페이지의 여백과 커서 원본은 페이지의 방향에 따라 달라질 수 있습니다. *Switch 및 *Case 문을 사용하면 이러한 종속성을 표현할 수 있습니다. 이러한 문의 형식은 다음과 같습니다.
*Switch FeatureName { *Case Option1_Name { } *Case Option2_Name { } etc. *Case OptionN_Name { } *Default { } }
FeatureName은 *기능 항목이 있는 GPD 파일 내에 지정된 기능의 이름이어야 합니다. 사용되는 옵션 이름은 지정된 기능과 연결된 옵션이어야 합니다.
페이지 여백과 커서 원본이 페이지 방향에 종속되는 경우를 표현하기 위해 다음 항목을 사용할 수 있습니다.
*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)
}
}
}
}
이 예제에서는 프린터의 PaperSize 기능에 대한 옵션은 프린터 방향 기능에 대해 선택한 옵션에 따라 달라집니다.
기능의 모든 옵션을 *Case 문 인수로 나열하지 않는 경우 C 언어와 마찬가지로 *Default 문을 포함할 수 있습니다. 모든 옵션을 포함하지 않고 *Default 문을 포함하지 않는 경우 GPD 파일의 다른 위치에서 *Switch 문 앞에 있는 관련 특성(예: *PrintableArea, *PrintableOrigin 및 *CursorOrigin)을 평가해야 합니다.
여러 종속성 지정
*Case 및 *Default 문 내에 *Switch 문을 포함할 수 있습니다. 이렇게 하면 다음과 같이 여러 종속성을 지정할 수 있습니다.
*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 {...}
}
이 예제에서 feature3의 optionE에 속하는 AttributeX는 feature1과 feature2 모두에 종속됩니다.
사용자가 feature1의 optionA, feature2의 경우 optionD, feature3의 경우 optionE를 선택한 경우 attributeX는 ValueX로 설정됩니다.
사용자가 feature1에 optionA, feature2의 optionC 및 feature3에 대한 optionE를 선택한 경우 attributeX는 ValueY로 설정됩니다.
사용자가 feature1에 대한 optionB와 feature3에 대한 optionE를 선택한 경우 attributeX는 ValueZ로 설정됩니다. Feature2에 대한 설정은 관련이 없습니다.
여러 종속성을 지정할 때 적용되는 규칙은 다음과 같습니다.
단일 *스위치 항목의 범위 내에서 여러 종속성을 지정해야 합니다. 예를 들어 이 예제에서는 *스위치 항목을 사용하여 feature3이 feature1에 종속됨을 나타내고, 이후의 중첩되지 않은 *Switch 문에서는 feature3이 feature2에 종속됨을 나타낼 수 없습니다.
중첩된 각 *스위치 항목 내에서 동일한 기능을 두 번 이상 지정할 수 없습니다.
*Switch 문을 배치할 위치
GPD 파일 내의 다음 위치에 *Switch 문을 배치할 수 있습니다.
*Option 문 내부
*Feature 문 내부
*Case 문 내부
*Default 문 내부
파일의 최상위 수준(즉, 중괄호 집합 내에 없음)
*Switch, *Case 및 *Default 문 안에 배치할 내용
*스위치 항목 내에서 *사례 및 *기본 항목만 배치할 수 있습니다.
*Case 또는 *Default 항목 내에 배치할 수 있는 GPD 파일 항목을 재배치 가능한 항목이라고 합니다. 다음과 같은 유형의 GPD 항목을 재배치할 수 있습니다.
루트 수준 전용 특성을 제외한 대부분의 프린터 특성입니다. (*Switch 항목이 중괄호가 아닌 루트 수준에 있지 않으면 일반 특성 앞에 EXTERN_GLOBAL 선행되어야 합니다.)
여러 종속성을 지정할 수 있는 중첩 *스위치 항목입니다.
*명령 항목입니다.
*TTFSEnabled?, 글꼴 대체를 사용하도록 설정합니다.
다음 유형의 GPD 항목은 재배치할 수 없습니다.
루트 수준 전용 특성입니다.
대체 글꼴을 지정하기 위한 *TTFS 항목입니다.
*Constraints, *InvalidCombination, *InvalidInstallableCombination, *NotInstalledConstraints 항목은 옵션 제약 조건에 설명된 대로 잘못된 옵션 조합을 정의합니다.
*Case 문 내에 항목이 올바르게 배치되었는지 확인하는 한 가지 방법은 *Switch 및 *Case 문을 모두 제거하는 것입니다. *Case 문 내의 항목이 올바르면 *Switch 및 *Case 문이 제거된 후에도 올바른 항목입니다.
클래스 드라이버에서 파생된 V4 인쇄 드라이버의 switch 문 순서 지정
파생 v4 프린터 드라이버의 GPD 파일은 기본 클래스 드라이버와 동일한 순서를 따라야 합니다.
다음 시나리오를 살펴 보십시오. *-manifest.ini 파일에서 RequiredClass를 클래스 드라이버로 설정하여 v4 클래스 드라이버에서 파생된 v4 프린터 드라이버가 있습니다.
클래스 드라이버의 GPD 파일에는 다음과 같은 스위치 트리가 있습니다.
* Option: A4
1. Switch: Resolution
* Option: Letter
1. Switch: Resolution
2. Switch: InputBin
파생 v4 프린터 드라이버는 MarginSetting 스위치를 추가하려고 하므로 GPD 파일에는 다음 스위치 트리가 있습니다.
* Option: A4
1. Switch: Resolution
2. Switch: InputBin
3. Switch: MarginSetting
* Option: Letter
1. Switch: Resolution
2. Switch: InputBin
3. Switch: MarginSetting
해결 방법은 파생 GPD의 InputBin 앞에 설정되고 MarginSetting은 둘 다 뒤에 설정됩니다. 파생 v4 프린터 드라이버의 GPD 파일은 기본 클래스 드라이버와 동일한 순서를 따르고 MarginSetting을 추가합니다.
예를 들어 잘못 파생된 GPD 파일은 다음과 같을 수 있습니다.
* Option: A4
1. Switch: MarginSetting
2. Switch: InputBin
3. Switch: Resolution
* Option: Letter
1. Switch: MarginSetting
2. Switch: InputBin
3. Switch: Resolution