조건문

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 항목을 재배치할 수 있습니다.

다음 유형의 GPD 항목은 재배치할 수 없습니다.

*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