Inkscape Brasil

Versão Estável 0.46 Baixe Agora!

Tópicos Pais: Extensões » ComoExtender

Estendendo o Inkscape com Ruby

Está perdido? Caiu aqui de paraquedas? Melhor ver a página "Como Fazer Extensões".

Uma extensão em Ruby pode ser feita sem nenhuma ajuda extra, mas agora existe o RubyInk e o RubySVG. RubySVG é um Módulo que estende o REXML para facilitar a manipulação de SVG e RubyInk é uma classe que facilita o trabalho específico de criar extensões para o Inkscape.

Para usa-los você deve baixar o pacote RubyInk.tar.gz e abri-lo dentro do seu diretório de extensões do Inkscape. (Ele já carrega o RubySVG consigo)

Não sabe qual o diretório de extensões? Melhor ler a página "Como Fazer Extensões".

Já descompactou? Então mão na massa! Vamos fazer um efeito que muda a cor dos elementos selecionados. (O que você vai criar agora fica no mesmo diretório do RubyInk.rb - seu diretório de extensões)

Crie um arquivo INX chamado muda-cor.inx com:

Agora crie o arquivo muda-cor.rb com esse conteúdo:

#!/usr/bin/ruby

$: << $0.gsub( /[^\/]*$/, '' )

# Inicia a Mágica:
require 'RubyInk'
ink = RubyInk.new

ink.eachSelectedElement {
  |element|
  element.style['fill'] = ink.args['cor']
}

ink.dumpSvgDoc

Explicando:
A linha "$: << $0.gsub( /[^\/]*$/, '' )" (estranha, não?) adiciona o diretório da extensão no path para que seja possível incluir o RubyInk e RubySVG.

Agora é só re-abrir o Inkscape, selecionar alguns elementos, procurar seu efeito no menu "Efeitos" e clicar. wink

Para saber mais, veja essa breve documentação:

Métodos RubyInk

new

Cria o objeto da classe RubyInk que ajudará o seu trabalho.

Exemplo:

ink = RubyInk.new

svgDoc

Referência ao objeto Documento SVG, onde você pode acessar metodos DOM e XPath para localizar todos os elementos SVG.

Exemplo (pega o elemento cujo ID é bola):

bola = ink.svgDoc.getElementById("bola")

args

Array de argumentos enviados pelo Inkscape

Exemplo (pega o valor do argumento cor e aplica como valor do atributo CSS de preenchimento):

bola.style['fill'] = ink.args['cor']

eachSelectedElement

Método que recebe um bloco de código que será executado para cada elemento selecionado na interface do Inkscape. O bloco de código receberá uma referencia a um objeto selecionado em cada interação.

Exemplo (o argumento cor é aplicado como preenchimento em todos os elementos selecionados):

ink.eachSelectedElement {
  |element|
  element.style['fill'] = ink.args['color']
}

dumpSvgDoc

Envia o código SVG modificado para a saída padrão onde o Inkscape o espera.

Exemplo:

ink.dumpSvgDoc

 


 

Classes RubySVG

RubySVG é um Módulo que estende o REXML para facilitar a manipulação de SVG, então para saber o que é possível com RubySVG é necessário ver a documentação do REXML ou tutoriais de REXML. (Tutorial oficial)

SVG::Document

Atributos e Métodos:

SVG::Element

Todo elemento SVG herda de SVG::Element

Atributos e Métodos:

SVG::DrawableElement

Atributos e Métodos:

SVG::CircleElement

Atributos e Métodos:

SVG::GroupElement

Nada ainda...

SVG::InlineStyle

Atributos e Métodos:

SVG::PathElement

Atributos e Métodos:

SVG::RectElement

Atributos e Métodos:

SVG::SVGElement

Elemento <svg>. Nada de especial ainda.

SVG::Path

Atributos e Métodos:



create new tag
rev 1 em 30 Mar 2007 por AurelioAHeckert
Editar Anexar Versões Mais...

Todo material do sítio Inkscape Brasil é propriedade do grupo Inkscape Brasil e pode ser reproduzido livremente, desde que permaneça livre e a fonte seja citada, seguindo os termos da licença Creative Commons (by-sa).

Inkscape é um Software Livre, distribuido sobre Termos GNU-GPL.

eXTReMe Tracker
Inkscape - Open Source vector graphics editor SVG - Scalable Vector Graphics TableLess - Coerência, Simplicidade e Acessibilidade no código HTML Esse documento é XHTML 1.0 Valido! Esse documento contém CSS-2 Valido! Debian - GNU/Linux TWiki - Ambiente Web Colaborativo Colivre - Cooperativa de Tecnologias Livres