Códigos especiais podem ser utilizados para criar formas geométricas adicionais e especificar determinadas ações.
O segundo caractere da sequência de três caracteres (a especificação do comprimento do vetor) precisa ser 0 ou é possível especificar o número do código especial. Por exemplo, 008 e 8 são especificações válidas.
Código de especificação de bytes |
||
---|---|---|
Código |
Descrição |
|
000 |
Fim da definição de forma |
Desenhar está ativo no início de cada forma. Quando o modo Desenhar está ativo (código 1), os vetores fazem com que as linhas sejam desenhadas. Quando o modo Desenhar está desativado (código 2), os vetores movem-se para uma localização nova sem desenho. |
001 |
Modo Ativar desenho (caneta desativada) |
|
002 |
Modo Desativar desenho (caneta ativa) |
|
003 |
Dividir comprimentos de vetores pelo próximo byte |
A altura especificada com o comando SHAPE é inicialmente considerado o comprimento de um vetor ortogonal simples (direções 0, 4, 8 ou C). O código 3 divide os comprimentos vetoriais pelo próximo byte. O código 4 multiplicar os comprimentos vetoriais pelo próximo byte. Os códigos 3 e 4 são seguidos por um byte de especificação contendo um fator de escala de número inteiro (de 1 a 255). Se você deseja que a altura da forma especifique o tamanho da forma inteira e utiliza 10 comprimentos vetoriais para desenhá-la, você pode utilizar 3,10 para escalar a especificação de altura. O fator de escala é cumulativo na forma, isto é, multiplicar por 2 e novamente por 6 resulta em um fator de escala 12. Normalmente, você deve reverter o efeito dos fatores de escala no final da forma, especialmente para sub-formas e formas de fonte de texto. O programa não redefine o fator de escala para você. |
004 |
Multiplicar comprimentos de vetores pelo próximo byte |
|
005 |
Empurrar a localização atual para a pilha |
Você deve restaurar tudo que salvar. A pilha de posição tem somente quatro localizações. Se a pilha for excedida devido a muitas operações salvar e a poucas operações restaurar, a seguinte mensagem é exibida quando a forma é desenhada. Posicionar o excesso de pilha na forma nnn De modo semelhante, se você tentar restaurar mais localizações que foram salvas na pilha, a seguinte mensagem é exibida quando a forma é desenhada. Posicionar o estouro de pilha na forma nnn |
006 |
Suspender a localização atual da pilha |
|
007 |
Desenhar número de sub-forma fornecida pelo próximo byte |
Para uma fonte diferente de Unicode, o byte de especificação que segue o código 7 é um número de forma entre 1 e 255. Para uma fonte Unicode, o código 7 é seguindo por um número de forma Unicode de 1 a 65535. Os números de forma Unicode devem ser contados como dois bytes. A forma com aquele número (no mesmo arquivo de forma) é desenhada nesse momento. O modo Desenhar não é redefinido para a nova forma. Quando a sub-forma estiver concluída, o desenho da forma atual será retomado. |
008 |
X-Y deslocamento fornecido pelos próximos dois bytes |
Os bytes de especificação de vetor normais desenhos somente em 16 direções predefinidas e o comprimento mais longo é 15. Essas restrições ajudam a tornar as definições de forma eficientes mas, algumas vezes, limitadas. O código 8 especifica o deslocamento X-Y fornecido pelos próximos dois bytes. O código 8 deve ser seguido por dois bytes de especificação no formato: 8,X-displacement,Y-displacement Os deslocamentos X-Y podem variar de –128 a +127. Um sinal de + é opcional e você pode utilizar parênteses para melhorar a leitura. O exemplo a seguir resulta em um vetor que é desenhado (ou movido) 10 unidades à esquerda e três unidades para cima. 8,(-10,3) Seguindo os dois bytes de especificação de deslocamento, a forma retorna para o modo Vetor normal. Você pode utilizar o código 9 para desenhar uma sequência de vetores não-padrão. O código 9 especifica qualquer número de pares de deslocamentos X-Y. A sequência de códigos é terminada pelo par (0,0). O exemplo a seguir desenha três vetores não-padrão e retorna para o modo Vetor normal. 9,(3,1),(3,2),(2,-3),(0,0) Você deve terminar a sequência de pares de deslocamentos X-Y com um par (0,0) para que o programa reconheça os vetores normais ou os códigos especiais que surgirem. |
009 |
Múltiplos deslocamentos X-Y, terminados (0,0) |
|
00A |
Arco oitante definido pelos próximos dois bytes |
Ele é chamado de arco oitante pois possui um ou mais oitantes de 45 graus, iniciando e terminando em um limite oitante. Os oitantes são numerados no sentido anti-horário a partir da posição de 3 horas, como mostrado na ilustração a seguir. ![]() A especificação de arco é 10,radius,(-)0SC O raio pode ser qualquer valor de 1 a 255. O segundo byte de especificação indica a direção do arco (sentido anti-horário se positivo e sentido horário, se negativo); seu oitante inicial ( s , um valor de 0 a 7) e o número de oitantes que ele possui ( c , um valor de 0 a 7, no qual 0 é igual a oito oitantes ou um círculo completo). Você pode utilizar parênteses para melhorar a leitura. Por exemplo, considere o seguinte fragmento de uma definição de forma: ...012,10,(1,-032),01E,... Esse código desenha um vetor de uma unidade para cima e à direita, um arco no sentido horário a partir do oitante 3 (com um raio de uma unidade para dois oitantes) e, em seguida, um vetor de uma unidade para baixo e à direita, como mostrado na ilustração a seguir. ![]() |
00B |
Arco fracional definido pelos próximos cinco bytes |
A definição utiliza cinco bytes de especificação. 11,start_offset,end_offset,high_radius,radius,(-)0SC Os códigos start_offset e end_offset representam a distância de início ou término do arco em relação ao limite oitante. O código high_radius representa os oito bits mais significativos do raio; high radius será 0 exceto se radius for maior que 255 unidades. Multiplique o valor de high_radius por 256 e adicione o valor resultante ao valor do radius para gerar um raio de arco maior que 255. O raio e o byte de especificação de finalização são os mesmos para a especificação de arco de oitante (código 00A, descrito anteriormente). Você determina o deslocamento inicial calculando a diferença em graus entre o limite do oitante inicial (um múltiplo de 45 graus) e o início do arco. Em seguida, você multiplica essa diferença por 256 e divide por 45. Se o arco se iniciar em um limite oitante, seu deslocamento inicial será 0. O end offset é calculado de modo semelhante, mas você utiliza o número de graus do último limite oitante cruzado no final do arco. Se o arco terminar em um limite oitante, seu deslocamento final será 0. Por exemplo, um arco fracional de 55 a 95 graus com um raio de 3 unidades seria codificado como: 11,(56,28,0,3,012) A seguir encontra-se uma explicação: start_offset = 56 because ((55 - 45) * 256 / 45) = 56 end_offset = 28 because ((95 - 90) * 256 / 45) = 28 high_radius = 0 because (radius < 255) radius = 3 starting octant = 1 because arc starts in the 45 degree octant ending octant = 2 because arc ends in the 90 degree octant |
00C |
Arco definido pelo deslocamento e convexidade X-Y |
Eles são semelhantes aos códigos 8 e 9 no que se refere ao seu uso para especificar os deslocamentos X-Y. Contudo, os códigos 00C e 00D desenham arcos aplicando um fator de convexidade ao vetor de deslocamento. O código 00C desenha um segmento de arco, enquanto o código 00D desenha vários segmentos de arco (poliarcos) até que seja terminado por um deslocamento (0,0). O código 00C deve ser seguido por três bytes descrevendo o arco: 0C,X-displacement,Y-displacement,Bulge Os deslocamentos X e Y e a convexidade, que especifica a curvatura do arco, podem variar de -127 a +127. Se o segmento de linha especificado pelo deslocamento tiver um comprimento D e a distância perpendicular do ponto médio desse segmento tiver altura H, a magnitude da convexidade será ((2 * H / D) * 127). O sinal será negativo se o arco da localização atual para a nova localização estiver no sentido horário. ![]() Um semicírculo tem convexidade 127 (ou -127) e é o maior arco que pode ser representado como um segmento de arco simples utilizando esses códigos (use dois segmentos de arco consecutivos para arcos maiores). Uma especificação de convexidade 0 é válida e representa um segmento em linha reta. Entretanto, usar o código 8 para um segmento em linha reta economiza um byte na descrição de forma. O código de poliarco (00D ou 13) é seguido por 0 ou por mais triplos de segmento de arco e é terminado com um deslocamento (0,0). Observe que nenhuma convexidade é especificada após o deslocamento final. Por exemplo, a letra S pode ser definida pela seguinte sequência: 13,(0,5,127),(0,5,-127),(0,0) Segmentos de convexidade zero são úteis em poliarcos para representar os segmentos retos; eles são mais eficientes que terminar o poliarco, inserindo um segmento reto e, em seguida, iniciar outro poliarco. O número -128 não pode ser usado em segmento de arco e definições de poliarco. |
00D |
Múltiplos arcos especificados por convexidade |
|
00E |
Processar próximo comando somente se houver texto vertical |
Quando esse código especial é encontrado em uma definição de caractere, o próximo código é processado ou ignorado, dependendo da orientação. Se a orientação for vertical, o próximo código é processado; se for horizontal, o próximo código é ignorado. Em texto horizontal, o ponto inicial para cada caractere é o final esquerdo da linha de base. Em texto vertical, o ponto inicial deve ser o centro superior do caractere. No final de cada caractere, um segmento pen-up é normalmente desenhado na posição do ponto inicial do próximo caractere. Para texto horizontal, ele está à direita; para texto vertical, ele está abaixo. O código especial 00E (14) é utilizado principalmente para ajustar as diferenças nos pontos inicial e final, permitindo a mesma definição de forma de caractere a ser usada horizontal e verticalmente. Por exemplo, a seguinte definição de um D maiúsculo poderia ser usada em texto horizontal ou vertical. *68,22,ucd 2,14,8,(-2, 6),1,030,012,044,016,038,2,010,1,06C,2,050, 14,8,(-4,-3),0 ![]() |