Dimensões de slides

Alguém aí já inseriu um arquivo SLD num DCL?
Lá na tile "image" ou image_button?

O slide era retangular, ou quadrado? e como você sabe disso? e image_button tinha a mesma relação de aspecto que o seu slide? E como saber se está?
Mas... O que diabos é relação de aspecto????

Eu explico:
Relação de aspecto: é o valor que obtemos ao dividir a altura pela largura
Num quadrado, temos que esta divisão resulta um, num retângulo, um valor diferente de um.

O que acontece quando tentamos preencher a image_button do dcl com um slide? Mesmo que forcemos as dimensões do slide, assim:
[code](slide_image x1 y1 width height sldname)[/code]
O slide não se deforma, e poderá acontecer de "sobrar" espaço na image_button, certo?
Ai fica meio "feio"... Desproporcional...

Se soubermos qual a relação de aspecto do slide e do image_button poderemos dizer quem é "mais retangular" e assim, calcular x1,y1,width,height que deixem o slide mais bem posicionado, isto é, centralizado

Agora, o comando que cria o slide ( MSLIDE na linha de comando) não pergunta nem diz que tamanho irá ter o slide... Ai complica... Você tem de deixa a área visível do desenho na relação que você precisa...

Mas ainda assim, não saberá qual o tamanho do slide...
Na verdade, ele terá, em pixels, a mesma dimensão dessa área visível, a as propriedades width e height do objeto Window, levam em conta as "bordas" da janela, portanto não são utilizáveis, a não ser que você saiba quantos pixels ela usa...

Com o "print screen" e o paint dá pra contar quantos pixels deu... ( aff ... )

Uma boa dica é, na definição do image_button (ou image), usar o atributo width e o atributo aspect_ratio, ou o atriguto height com o atributo aspect_ratio, pois assim tem-se certeza do tamanho do slide... lembrando que width e height não são dados em pixels, mas em uma proporção do tamanho dos caractéres visualizados no dcl...


Bom, pra encurtar:
É possível "extrair" do slide qual suas dimensões em pixels, para isso temos de ler os BYTES corretos do arquivo e assim, proceder a inserção do slide da melhor maneira, veja a rotina
(defun get-sld-dim (file / tmp l)
  (
setq tmp (open file "r"))
  (
repeat 18 (read-char tmp))
  (
setq l  (list (read-char tmp) (read-char tmp)
                 (
read-char tmp) (read-char tmp)))
  (
close tmp)
  (
list (+ (* 256 (cadr l)) (car l))
        (
+ (* 256 (cadddr l)) (caddr l))))


Para usar, faça (por exemplo):
(get-sld-dim "d:/neyton/expge/expge.sld")

isso irá retornar uma lista, com as dimensões em pixels da largura e da altura do slide, no exemplo, me retornou (721 361), onde 721 é a largura e 361 a altura

Nenhum comentário:

Postar um comentário