# Display PostScript

O Display PostScript (ou DPS) é um sistema de representação em tela. Como o nome sugere, o DPS usa a linguagem de modelagem de imagem PostScript (PS) para gerar gráficos na tela.
A NeXT Computer Inc. projetou o DSP como um sistema de exibição para a sua série de computadores pessoais Unix começando em 1987. Enquanto versões anteriores do sistema PostScript display foram desenvolvidas na Adobe, a implementação completa do Display PostScript foi desenvolvida pela NeXT em cooperação com a Adobe Systems, e tornou-se um produto Adobe oficial com seus próprios padrões, documentação e requisitos de licenciamento.
Para suportar interatividade, o uso em tela com performance razoável, mudanças foram necessárias:
* Múltiplos contextos de execução: Diferente de ambientes de interpretação onde um interpretador PS processa um trabalho por vez, o DSP seria usado em várias Janelas ao mesmo tempo, cada uma com seus próprios atributos (cor, brush settings, escala, etc.). Isso requereu uma modificação no sistema para permitir que ele mantivesse vários "contextos" (conjuntos de dados de estados) ativos, um para cada processo (janela).
* Nomes codificados: Muitos dos procedimentos e estruturas de dados em PostScript são tabelas de consulta por nome. No DPS esses nomes podem ser substituídos por pequenos números, que são muito mais rápidos para um computador buscar.
* Suporte a Interação: Vários procedimentos foram definidos para lidar com interação, incluindo detecção de colisão.
* Halftone phase: Para melhorar a performance de rolagem, a DSP desenha somente uma pequena porção da janela que se torna visível, shifting o resto da imagem ao invés de redesenhá-la. Às vezes isso significa que os meio-toms não serão line up, produzindo linhas e caixas visíveis na exibição dos gráficos. A DSP inclui código adicional para lidar propriamente com esses casos. Os modernos monitores "full-color", sem halftone, tornaram essa ideia, em sua maioria, obsoleta.
* Atualização incremental: Em aplicativos de impressão o código PS é interpretado até it gets a showpage at which point it is actually printed out. Isso não é adequado para uma situação de exibição onde um grande número de pequenas atualizações são necessárias o tempo todo. O DPS inclui modos para permitir exibições quase em tempo real enquanto as instruções são recebidas do programa usuário.
* Suporte a fontes bitmap: O DSP adiciona a habilidade de mapear fontes PS e fontes bitmaps desenhadas a mão e mudanças de uma para outra on the fly. Enquanto a habilidade do PS de exibir fontes em dispositivos de "baixas resoluções" era boa, "baixa resolução" significa algo da ordem de 300dpi, não os 960dpi que a tela da NeXT usava. Ele requeria fontes feitas a mão para um saída razoável.
* Programming language support: O DPS introduz o conceito de um "pswrap", que permite desenvolvedores to wrap código PostScript em uma função em linguagem C que então ser chamadas de uma aplicação.
O DPS, as vezes, não inclui um sistema de janelas. Isso é deixado para ser provido pela implementação, e o DPS é pensado para ser usado em conjunto com o mecanismo de geração de janelas. Ele é geralmente o X Window System, e nessa forma o Display PostScript foi mais tarde adotado por companhias como a IBM e a SGI para suas estações de trabalho. Frequentemente o código necessário de ser pego de uma janela X para o contexto DSP é muito mais complicado que todo o resto da interface DPS. Isso limita em muito a popularidade do DPS quando uma alternativa está disponível.
Os desenvolvedores da NeXT escreveram um mecanismo completamente novo de geração de janelas para tomar vantagem completa do sistema operacional orientado a objetos da NeXT. Uma quantidade de comandos foram adicionados ao DPS para criar as janelas e reagir a eventos, parecido mas mais simples que o NeWS. Uma única API fez a programação em altos níveis, mais fácil e fez o NeXT um dos poucos sistemas a usar extensivamente o DPS. A biblioteca de sistema de janelas de espaço de usuário NeXTStep usa PostScript para desenhar itens como barras de títulos e scrollers. Ele, por sua vez, faz uso extensivo de pswraps, que foi por sua vez mapeados em objetos e apresentados ao programador em forma de objetos.
O sistema operacional Mac OS X da Apple usa um servidor central de janelas (criado inteiramente pela Apple) que caches os gráficos das janelas como bitmaps, ao invés de armazenar e executar código PostScript. Uma biblioteca gráfica chamada Quartz 2D provê PostScript-style imaging usando as primitivas gráficas PDF (um supergrupo, mais tweaks, do modo PostScript), mas isso é usado por aplicações frameworks—there is no PostScript ou PDF presente no servidor de janelas Mac OS X. A Apple escolheu usar esse modelo por várias razões, incluindo evitando as altas táxas de licienciamento impostos pela Adobe para o DPS, e suporte mais eficiente ao legado do código Carbon e p Clássico; aplicações baseadas no QuickDraw usa pintura bitmap exclusivamente. As estipulações de copyright da Adobe para o padrão PDF são muito menos restritivas, garantindo permissão condicional de copyright para toda a gente utilizar em aplicações, sem encargos.