Pause Script de Gary Barton

Como já puderam perceber, é impossível parar um script não editado. Para que pare, você pode cancelar o script, e ele pára de vez, mas não pode dar uma pausa para acrescentar algum efeito ou modificar o que já foi feito, nem mesmo para mudar uma imagem de lugar. Essa foi a maior dificuldade dos pioneiros, até que um programador americano, Gary Barton, criou o Pause Script, que você pode pegar aqui.

Esse snippet possibilita fazermos pausas nos scripts para que se apliquem modificações necessárias, sem as quais alguns tipos de trabalho, como os que aplicam texto, não poderiam ser feitos. Durante as pausas, o usuário pode fazer o que quiser, aplicar qualquer ferramenta, mover textos ou imagens, mudar cores de que não gostou, contanto que, ao clicar no Run Script para o script reiniciar, a layer iluminada seja a mesma que estava selecionada ao se iniciar a pausa e que haja o mesmo número de layers. Se quiser cancelar uma layer, pode deletar tudo que estiver nela, mas não pode tirá-la do lugar.

Não é um snippet fácil de aplicar, pois tem suas manhas. Ao usá-lo, você precisa determinar o nome do script, na linha logo abaixo do cabeçalho e precisa numerar as ações ou grupos de ações em ordem numérica, além de copiar, ao final do script, uma extensa sopa de letrinhas. Exemplo:

1) Nome do script:

from JascApp import *

def ScriptProperties():
return {
'Author': u'Itaci Caldeira',
'Copyright': u'Itaci/2005',
'Description': u'',
'Host': u'Paint Shop Pro 9',
'Host Version': u'9.01'
}

scriptName = "Itaci_Top_Pascoa2006"

2) Numerar cada reinício:

def DoStep1(Environment):
    # Copy
    App.Do( Environment, 'Copy', {
    'GeneralSettings': {
    'ExecutionMode': App.Constants.ExecutionMode.Default,
    'AutoActionMode': App.Constants.AutoActionMode.Match,
    'Version': ((9,0,1),1)
    }
    })

def DoStep2(Environment):
    # LayerMergeDown
    App.Do( Environment, 'LayerMergeDown', {
    'GeneralSettings': {
    'ExecutionMode': App.Constants.ExecutionMode.Default,
    'AutoActionMode': App.Constants.AutoActionMode.Match,
    'Version': ((9,0,1),1)
    }
    })

Observem que tanto o nome do script quanto os defDo estão junto à margem. O que está em amarelo seria o texto do script, os comandos normais utilizados. O texto em vermelho é o que temos que acrescentar para o bom funcionamento desse snippet. Você pode colocar quantas pausas forem necessárias.

Estas palavras mágicas: def Do(Environment): são as palavras que determinam o início do script. Ao acrescentar o step1, step 2- def DoStep1(Environment): , def DoStep2(Environment): Gary Barton apenas numerou os reinícios dos scripts (step=passo, em Inglês). Então, aí, nesses pedacinhos, o PSP vai interpretar: "Se esse script vai recomeçar, vou dar uma paradinha, antes, para poder obedecer o comando"... Então, o PSP pára de rodar o script e temos uma pausa. Durante a pausa, o usuário pode utilizar qualquer ferramenta, fazer as coisas que só o senso artístico individual podem decidir e, ao clicar novamente o Run Script, o script recomeça do próximo passo. Como podemos ver, a pausa se dá então, antes de um novo reinício, antes de um novo step.

Para podermos colocar as pausas, então, é necessário primeiro decidir onde elas são de fato necessárias, isto é, o script tem que parar para que o usuário decida, segundo seu senso artístico, como mover uma imagem, apagar uma sombra ou selecionar alguma coisa que o script por si não pode selecionar. Cada parada tem que ter uma finalidade e vamos colocar mensagens para que o usuário saiba o que fazer, durante a pausa.

No final, teremos a parte mais difícil de se entender e mais fácil de aplicar, pois, apesar de ser um texto grande, a "sopa de letrinhas" em si, é só copiar e colar no final de tudo, após a sua mensagem final. No Snippet que estou colocando zipado já está a mensagem final, você pode copiar tudo junto. A mensagem final precisa dos 4 espaços da indentação.

Exercício

Material

Salve o material na página de masks
não está zipado, é só uma mask.

Você vai gravar um script para o top que está em cima da página:

1 - Escolha um tube. Dê resize para 300 px de altura. adjust / Shapness /Sharpen. Escolha duas cores do tube, uma clara e outra escura.

2 - Clique em Start Script. Dê Copy

3 - Abra uma imagem transparente de 1024 x 400px.

4 - Fill com a cor mais escura.

5 - Adicione outra layer. fill com a cor mais clara.

6 - Aplique a mask Itaci_SianinhaMask. Não há necessidade de deletar a mask, apenas dê Layers / Merge / Merge Group.

7 - Com o Magic Wand, selecione o espaço do ornamento (sianinha). Aqui podemos usar o magic wand pois o trabalho nesta parte terá sempre o mesmo tamanho, não dependendo da imagem ou escolhas utilizadas.

8 - Expand Selection: 1 px.

9 - New Raster Layer. Escolha a mesma cor mais clara do tube, já utilizada ou outra que ache interessante e fill a seleção. Select None.

10 - Effects / Plugins / Texture / Texturizer com as seguintes configurações:

11 - Layers / Duplicate.

12 - Selecione a layer original do ornamento. Aplique: Effects / Distortion Effects / Wave, com as seguintes configurações:

13 - Selecione, novamente a layer de cima da sianinha e Layers / Merge / Merge Down. Assim ficamos com o ornamento numa só layer. Aplique um Inner bevel a seu gosto. Eu usei as seguintes configurações:

14 - Seu tube já está na memória do programa, pois fizemos o copy ao iniciar, lembra-se? Apenas dê edit / Paste / Paste as new layer e ele estará aplicado.

15 - Mova o seu tube para o lugar desejado usando o Move Tool.

16 - Aplique uma sombra em seu tube, com as seguintes configurações:

Preste atenção: a shadow está em new layer. Deixe marcado o quadradinho inferior.

17 - Clique no Eraser Tool e apague a sombra nos lugares onde ela não é desejada, principalmente sob a parte debaixo, onde não existiria sombra, no caso de ser um figura humana ou animal.

16 - Layers / Merge / Merge all. Sempre é inconveniente que se una todas as layer, para possibilitar mudanças, mas, neste caso, vamos fechá-las já que nosso usuário já escolheu o lugar onde ficará a imagem.

19 - Salve seu script. Não esqueça, deve iniciar por seu nome e terminar em .pspscript ou .PspScript. Por enquanto, ainda não colocaremos o texto no script.

 

Edição do Script

Material: Novos Snippets

1 - Em primeiro lugar, delete todos os undos e os comandos que eles anularam. Delete-os sempre de dois em dois: o undo + o comando anulado. Se forem 4 undos seguidos, delete os 4 undos e os 4 comandos logo acima, dependendo do número de undos que precisou usar.

2 - Coloque todos os plugins no interactive mode. Neste caso, apenas o Texturizer. Não colocaremos no interativo nehum outro comando, nem o da mask, pois esta é específica para o trabalho e nenhuma outra poderá ser utilizada em seu lugar, senão o restante do script daria erro. Em seu trabalho, se a mask não for acompanhada de textura como esta, pode colocá-la no interativo, que é sempre mais interessante.

3 - Abra o Text Script. Apague todos aqueles comandos que vc deletou e seu undo, só para deixar o script limpo.

4 - Logo no início do script, depois do Copy, enquanto estiver aberto só o tube, coloque os dois snippets para escolha de material, seguidos. No snippet da escolha da primeira cor aplicada, avise na mensagem que será a cor do top e a segunda cor, o fundo do email, o back.

5 - Procure o outro fill (o do ornamento - sianinha) e coloque, logo antes dele um snippet para escolha de cor. Não esqueça de especificar que a cor será para o ornamento.

6 - Nesta altura, salve o script e teste para ver se seus snippets foram colocados corretamente.

7 - Procure o plugin e coloque mensagem sobre os settings usados. Salve e teste novamente.

8 - Procure o comando da Eraser Tool (borracha). Apague o(s) comando(s) todo(s), deixando apenas o início do primeiro: # Eraser.

9 - Procure o(s) comando(s) do Move e apague tudo, deixando apenas a linha inicial:
# Move. Essas linhas que deixamos, iniciadas pelo sinal # serão apagadas depois, foram deixadas para marcar os lugares onde deverão entrar as pausas. Claro, se eu vou mover a imagem, preciso de uma pausa do script para minha intervenção. Com certeza, aí terei uma pausa.

10 - Abra o seu snippet Pause 03. Selecione o pedacinho com o nome do script (scriptname). Procure o cabeçalho do script e, logo abaixo, junto à margem, cole-o. Modifique o nome do script para o nome que vc escolheu.

11 - Copie o def DoStep1(Environment): Cole-o no lugar do def Do(Environment):, que inicia as ações do script.

12 - Pule duas linhas. Cole o def DoStep2(Environment):. É só copiar essa linha no snippet. Ficará assim:

Entre o defdostep1 e o defdostep2, cole a mensagem inicial.

15 - Vá até o defdoStep1. Abra o snippet "mensagem inicial para pausa com mostrarSOP". Copie e cole o snippet da mensagem inicial entre o defdoStep1 e o defdostep2. Ficará assim:

    # Mostrar ScriptOutput
    App.Do( Environment, 'ShowScriptOutput', {
    'ShowScriptOutput': App.Constants.ShowCommands.Show
    })

    App.Do( Environment, 'ScriptWndClear' )

    print
    print " Abra um tube de sentido vertical e redimensione-o para 110px de altura. "
    print " Escolha uma cor no Foreground para o fundo de seu blinkie. "
    print " Posicione o Script Output de modo que possa ler seu conteúdo."
    print " Clique novamente em Run Script para reiniciar o script. "
    print

    # Mostrar ao usuário o que fazer
     result = App.Do(Environment, 'MsgBox', {
    'Buttons': App.Constants.MsgButtons.OK,
    'Icon': App.Constants.MsgIcons.Info,
    'Text': 'Leia as instruções no Script Output.'
    })

Modifique as mensagens que estão em amarelo, de acordo com seu script. Se necessário, abra novos print.

Observe que essas mensagens estarão antes dos defdo. Vc poderia não usar o popup, mas este torna mais claro a necessidade de interagir com o script, o que é sempre importante para quem não tem muito conhecimento sobre scripts.

Veja o exemplo:

12 - Procure o comando apagado # Move. Ali, junto à margem, cole o def DoStep1(Environment): e mude o número 1 para 3. Ficará assim: def DoStep3(Environment): Ali haverá uma pausa para que o usuário mova a imagem para o lugar que ele acha melhor. Ao reiniciar o script, ele começará a rodar desse step. Apague o restinho do comando (# Move), pois só precisávamos dele para marcar o lugar onde a imagem deveria ser movida. Cole o snippet Mensagem indicando o que fazer, antes do defdostep3.

Veja o exemplo:

13 - Procure o lugar onde está o restinho do comando #Eraser Tool, nossa borrachinha. Cole ali, junto da margem, o mesmo def DoStep1(Environment): e transforme-o para def DoStep4(Environment): Ali será o início da terceira pausa. Cole antes do defdo o snippet Mensagem indicando o que fazer e acerte a mensagem, como no exemplo

14 - Agora, vá ao fim do script. Copie aquele extenso pedaço com a programação do Gary Barton que já vem junto com a mensagem final do script - Snippet da Pausa. Coloque o cursor no último sinal do comando Merge all, pule uma linha, dê 4 espaços e cole tudo. Verifique se a primeira linha entrou com os quatro espaços da endentação. Modifique a mensagem a seu gosto.

15 - Teste seu script. Se estiver certo, continue a edição. Se der mensagem de erro, procure ver o que está errado, antes de continuar. O script deve ser testado sempre, durante a edição.

16 - Envie seu script para a lista. Teste antes de enviar com várias imagens.

20 - Crie um novo top, de sua própria lavra. Não coloque texto ainda. Isso ficará para próximas aulas.

Créditos: O snippet Mensagem Inicial para pausa com mostrarSOP foi originalmente editado em Inglês por nossa amiga Diane G e disponibilizado a vocês com sua autorização. Logo poderão se inscrever na lista dela uma lista americana, Script Creatios todos que o desejarem, com um mínimo de Inglês. O embromation serve.

Bom trabalho!