Definições de opção

Este tópico não é atual. Para obter as informações mais atuais, consulte Especificação do esquema de impressão.

A principal consideração ao definir uma Opção é fazer isso de forma que ela possa ser significativamente comparada com outras instâncias de Opção contidas no mesmo Recurso. A comparação deve ser significativa porque a instância option é usada para definir a configuração não apenas do dispositivo, mas do trabalho, independentemente do dispositivo ou printCapabilities que foram usados para criar a configuração. As outras instâncias de Opção no Recurso podem aparecer no mesmo documento PrintCapabilities ou em outro documento PrintCapabilities que representa um dispositivo diferente, um documento PrintCapabilities definido por outra parte trabalhando de forma independente. Depois que um cliente seleciona a configuração do dispositivo a ser usada para renderizar um trabalho ou documento, essa configuração normalmente é salva, juntamente com o trabalho ou documento, na forma de um PrintTicket. O PrintTicket contém um conjunto de instâncias option, normalmente uma para cada Recurso definido no documento PrintCapabilities. As instâncias de opção devem ser portáteis e devem preservar a intenção de impressão, para que a intenção possa ser comunicada quando este PrintTicket for dado a um dispositivo diferente, mesmo que tenha um documento PrintCapabilities diferente que foi escrito por um autor diferente. O principal benefício dessa portabilidade é que, se um dispositivo diferente não der suporte especificamente a uma Opção contida no PrintTicket, o driver ou subsistema do dispositivo poderá identificar e selecionar a Opção que é a mais próxima da funcionalidade.

Uma das funções main PrintTicket do driver é identificar a opção do dispositivo no documento PrintCapabilities que corresponde mais de perto a uma opção específica listada no PrintTicket. Durante esse processo de pontuação definido pelo driver de dispositivo ou correspondente, a Opção no PrintTicket é chamada de Opção de referência , enquanto a opção no documento PrintCapabilities é conhecida como a opção candidata . A métrica de correspondência geral é o número de instâncias ScoredProperty correspondentes nas instâncias de opção de referência e candidata; um número maior de correspondências geralmente indica melhor preservação da intenção de impressão. Em seu processo de pontuação, você pode optar por dar maior peso a alguns elementos ScoredProperty do que a outros.

Você pode tornar as instâncias de opção portáteis, garantindo que todas as instâncias option que pertencem ao mesmo Recurso tenham um ou mais elementos ScoredProperty em comum. Isso significa que há um conjunto de elementos ScoredProperty que aparece em cada instância de Option (pertencente ao mesmo Recurso). Por exemplo, as instâncias de opção para o recurso PageMediaSize poderão ser portáteis se cada instância de Option contiver elementos ScoredProperty que definem as propriedades intrínsecas PageMediaSize: MediaSizeWidth e MediaSizeHeight. O código do driver ou do subsistema do dispositivo pode determinar o quão próximas duas instâncias de Option concordam comparando as diferenças nesses valores ScoredProperty. Se não houver opção no documento PrintCapabilities que corresponda exatamente à do PrintTicket, o driver do dispositivo poderá determinar e selecionar facilmente a opção que tem as dimensões de mídia correspondentes mais próximas.

Dois objetos (instâncias de opção neste caso) têm elementos em comum ou, equivalentemente, têm elementos correspondentes, se as três condições a seguir forem atendidas.

  1. Os dois elementos são do mesmo tipo de elemento.

  2. Os atributos de nome dos dois elementos são idênticos (ou nenhum elemento contém um atributo de nome).

  3. A cadeia de pais dos elementos que estão sendo comparados, até os dois objetos em consideração, deve atender às condições 1 e 2.

Por exemplo, considere uma situação em que há duas instâncias de Opção, em que cada uma contém uma instância de ScoredProperty e que cada uma dessas instâncias do ScoredProperty contém uma instância de Propriedade. Claramente, a primeira condição é atendida (as duas instâncias de propriedade são do mesmo tipo) e parte da terceira condição é atendida (os pais das instâncias de Propriedade são do mesmo tipo, ScoredProperty e os pais desses elementos são as instâncias option, que também são do mesmo tipo). Se os atributos de nome de, respectivamente, as instâncias de Propriedade, as instâncias ScoredProperty e as instâncias option forem idênticas ou não forem fornecidas, as duas instâncias de Opção terão elementos em comum.

A partir do anterior, a primeira etapa na criação de instâncias de opção é definir um conjunto de elementos ScoredProperty que estão presentes na maioria ou em todas as instâncias de Opção. Se o atributo de configuração do dispositivo puder ser representado por um recurso padrão (um listado nas palavras-chave do esquema de impressão), observe os elementos ScoredProperty em comum nas instâncias de opção padrão. Você deve garantir que todas as novas instâncias de Opção que você introduzir também contenham esses elementos ScoredProperty. Você sempre é livre para adicionar elementos ScoredProperty adicionais, conforme necessário, para diferenciar suas instâncias de opção das instâncias de opção padrão. Você pode até mesmo excluir um ou mais dos elementos ScoredProperty em comum se houver um bom motivo, embora isso reduza a portabilidade de tal opção. É claro que as considerações de portabilidade sugerem o uso das instâncias padrão de Opção não modificadas, a menos que haja alguma diferença intrínseca entre sua opção e a instância de opção padrão que deve ser refletida na nova instância de Opção.

O exemplo a seguir ilustra uma situação para a qual talvez você queira adicionar um elemento ScoredProperty a uma instância de Option. Todas as instâncias de Opção padrão para o Recurso PageMediaSize têm os elementos MediaSizeWidth e MediaSizeHeight ScoredProperty em comum. Suponha que seu dispositivo possa dar suporte a um dos tamanhos de mídia de letra padrão alimentando o papel transversalmente (LongEdgeFirst) ou longitudinally (ShortEdgeFirst). Supondo que você não deseja introduzir um novo recurso de direção de feed para expor esse grau de liberdade, você pode modificar as duas instâncias da Opção PageMediaSize para Carta para incorporar a orientação do feed de papel. Para essas duas instâncias de Opção de Letra, comece com a instância padrão da Opção PageMediaSize e adicione um novo elemento ScoredProperty para representar o FeedDirection. Em uma instância de Opção, defina FeedDirection ScoredProperty como LongEdgeFirst; na outra instância de Opção, defina FeedDirection como ShortEdgeFirst. Observe que essas novas instâncias de opção mantêm sua portabilidade. Se a opção que representa Letter, ShortEdgeFirst for salva em um PrintTicket e um dispositivo diferente que dê suporte apenas à Opção Padrão de Letra for selecionado para renderizar o Trabalho, o código de correspondência de opção poderá determinar rapidamente que a Letra de Opção padrão é a melhor correspondência com a Letra de Opção, ShortEdgeFirst. O motivo pelo qual essa é a melhor correspondência é que todas as instâncias do ScoredProperty concordam, com exceção do FeedDirection ScoredProperty, que não existe na opção padrão Carta.

Você também pode encontrar casos em que as modificações na Opção realmente alteram o significado tanto que a Opção modificada não pode mais ser considerada um caso especializado do original. Nesses casos, você deve alterar o nome da Opção para refletir a diferença entre a instância de Opção modificada e a não modificada. Somente o autor do documento PrintCapabilities para um dispositivo específico pode decidir se a opção oferecida pelo dispositivo difere o suficiente de uma instância de opção padrão para garantir uma definição incompatível.

Agora considere o caso em que seu dispositivo tem um atributo de configuração de dispositivo que não corresponde a nenhuma das instâncias de recurso padrão. Nesse caso, você não pode contar com as instâncias de opção padrão para fornecer a lista de elementos ScoredProperty em comum. Quando você cria uma instância do ScoredProperty, seu main objetivo é diferenciar cada Opção das outras no Recurso e descrever por que um usuário selecionaria uma opção em vez de outra. A linha de base é caracterizar cada Opção com um atributo de nome exclusivo e ScoredProperty que contém o atributo name torna-se o usado para determinar elementos em comum.

Depois que um conjunto de elementos ScoredProperty em comum tiver sido estabelecido, é uma questão simples atribuir valores apropriados a cada ScoredProperty para criar cada Opção. Como no exemplo anterior, para determinadas instâncias de opção, talvez seja necessário adicionar instâncias adicionais do ScoredProperty ou excluir alguns dos elementos em comum para criar uma instância de opção apropriada.

Deve-se observar que o Esquema de Impressão exige que o conjunto de instâncias ScoredProperty, seus locais e os valores atribuídos a cada ScoredProperty em uma opção devem permanecer constantes, independentemente da configuração. Todo o conceito do Esquema de Impressão depende de instâncias de opção terem instâncias de Propriedade fixa e identificável e ScoredProperty que são compartilhadas em muitos dispositivos.

Especificação de esquema de impressão