Versão Estável
0.46
Baixe Agora!
Como Fazer Extensões
em construção
Existem basicamente 3 tipos de extensões para o Inkscape:
- Entrada ou Input : provendo tradução de um formato qualquer para SVG.
Extensão que dá habilidade ao Inkscape de ler o formato XYZ.
- Saida ou Output : provendo tradução de SVG para um formato qualquer.
Extensão que dá habilidade ao Inkscape de salvar no formato XYZ.
- Efeito ou Filtro : modifica o SVG automatizando processos mais complexos.
Extensão que provê "novas" habilidades de edição ao Inkscape.
Criando Efeitos
Os efeitos são automatizações de processos para transformar ou criar elementos
SVG e como qualquer extenção depende de pelo menos 2 arquivos:
{efeito}.inx e
{efeito}.{ext}
O arquivo
{efeito}.inx é o que define a extensão para o Inkscape e deve seguir essa estrutura:
Saiba mais sobre arquivos INX
<inkscape-extension>
<_name>{Nome Amigável da Extensão}</_name>
<id>{org.domain.sub-domain.extension-name}</id>
<dependency type="executable"
location="[extensions|{outro local}]">{arqivo dependencia}</dependency>
<param name="{nome-do-argumeto}" type="[int|string|boolean|...]"
min="{number}" max="{number}"
_gui-text="{Nome Amigável do Argumento}">{valor padrão}</param>
<effect>
<object-type>[all|{tipo do elemento}]</object-type>
<effects-menu>
<submenu _name="{Nome do Grupo da Extensão}"/>
</effects-menu>
</effect>
<script>
<command reldir="extensions"
interpreter="[python|perl|bash|{outro}]">{program}.{ext}</command>
</script>
</inkscape-extension>
Saiba mais sobre arquivos INX
O arquivo
{efeito}.{ext} é um executável escrito em qualquer linguagem e deve implementar as seguintes funcionalides:
- Receber argumentos enviados pelo Inkscape (linha de comando).
- Limpar arquivos temporários se acaso criar.
- Escrever o SVG modificado completo na saída padrão.
- Não quebrar uma área
xml:space="preserve";
- Enviar error para a saida de erro, possibilitando que o Inkscape os apresente ao usuário.
Vamos entender isso melhor...

Ao iniciar o Inkscape busca por arquivos INX no diretório compartilhado de extensões e no diretórios de extensões do usuário. Cada efeito tem suas dependencias analisadas e se não houver falta, são adicionados na lista de efeitos.
(Saiba qual é o diretório compartilhado com o comando inkscape -x e o diretório do usuário fica em {seu home}/.inkscape/extensions/.)
Quando o usuário clica em um efeito o Inkscape cria uma janela de dialogo
(seguindo as definições do INX) permitindo que o usuário adicione valores personalizados aos argumentos. Ao clicar em Ok o Inkscape salva o estado atual do
SVG em um arquivo temporário para que o executável do efeito possa lê-lo e chama este enviando-lhe os seguintes argumento:
- Identificadores dos elementos selecionados no momento.
- Argumentos definidos no arquivo INX.
- O arquivo SVG a ser modificado.
Com essas informações o executavel poderá fazer o seu trabalho independente do inkscape, ou seja, também pode ser usado via linha de comando quando for interessante, ou por outra aplicação qualquer.
Quando completa seu trabalho o executável escreve o
SVG modificado na saida padrão, que é lida pelo Inkscape. Se o
SVG não contiver erros, ele sobrepõe o estado atual para o usuário continuar seu trabalho.
O que mais eu devo saber?
Além de uma boa noção de programação
(não precisa se um expert), é preciso conhecer o padrão
SVG na unha, ou seja, mexer no XML mesmo. Você vai se sentir um pouco como o pessoal de Matrix, vendo códigos na tela, mas percebendo círculos, degradês, curvas
beizier, ...
Onde saber sobre
SVG? Vá na fonte. A origem de tudo:
http://www.w3.org/TR/SVG/
Não há lugar melhor para conhecer formatos que nas especificações da W3C? , infelizmente nem tudo está no escopo deles nem segue o exemplo deles. Ah! E está em inglês.
Mais sobre extensões:
Codificando em algumas linguagens