Calma... Python-Fu não é um novo estilo ninja !!!
Não é atoa que o GIMP é a melhor ferramenta gráfica 2D e open source da atualidade. Ela é perfeita para ser manipulada por artistas e programadores.
Saiba como automatizar aquele efeito especial que você geralmente usa ou criar algum que só é possível através de programação !
» Post Completo...*** GIMP ***
Wikipédia: "O GNU Image Manipulation Program ou GIMP é um editor de imagens raster (ou bitmap, que significa mapa de bits)."
"O GIMP é muito utilizado para processamento de imagens e fotografias. Seus usos incluem criar gráficos e logotipos, redimensionar fotos, alterar cores, combinar imagens utilizando o paradigma de camadas, remover partes indesejadas das imagens e converter arquivos entre diferentes formados de imagem digital."
"Assim como o uso interativo, o GIMP pode ser inserido em scripts e chamadas de sistemas em programas compilados. Para isso pode-se usar, Scheme (ou ScriptFu), Perl, Python, Tcl, Ruby, e programas capazes de executar comandos UNIX."
Não sou profissional, mas digo que o GIMP é completo (ou quase !). Com ele é fácil corrigir fotos, manipular diversos tipos de imagens e criar efeitos especiais.Esta imagem foi produzida com a ajuda do meu plug-in borda cubismo (disponível nos exemplos), mas com poucos cliques é possível reproduzí-lo manualmente utilizando o plug_in_cubism em filtros/Artísticos/Cubismo....
*** Script Scheme ***
Wikipédia: "Scheme é uma linguagem de programação multi-paradigma que suporta programação funcional e procedural. Foi criada por Guy L. Steele e Gerald Jay Sussman nos anos 1970 a partir da linguagem Lisp com o intuito de estudar a teoria dos atores de Carl Hewitt."
"Devido à sua sintaxe completamete aninhada, não existem regras de precedência de operadores e sua notação parentizada é usada para todas as chamadas de função, desta forma não há ambigüidades como as que são encontradas nas linguagens de notação infixa."
Na prática, Scheme não é pra qualquer um !
» Scheme Tutorial
» Script-Fu aula 1
» Script-Fu aula 2
Exemplos no download abaixo.
*** Plug-in Python-Fu ***
Wikipédia: "Python é uma linguagem de programação de alto nível interpretada, interativa, orientada a objetos e de tipagem dinâmica e forte, lançada por Guido van Rossum em 1991."
"A linguagem foi projetada com a filosofia de enfatizar a importância do esforço do programador sobre o esforço computacional. Prioriza a legibilidade do código sobre a velocidade ou expressividade. Combina uma sintaxe concisa e clara com os recursos poderosos de sua biblioteca padrão e por módulos e frameworks desenvolvidos por terceiros."
Em outras palavras, adeus dores de cabeça !
Só não se esqueça que o pacote gimp-python deve estar instalado e que os arquivos devem ser copiados para "/home/usuario/.gimp-x.x/plug-ins" nomeados como "meu_plugin.py" com permição de execução.
» Gimp-Python
» Python-fu para no programadores
Exemplos no download abaixo.
*** Plug-in em C ***
O GIMP é feito em C, logo, penso que escrever plug-ins em C pode ser vantajoso.
A parte inicial é mais complicada de entender, mas depois de superada você estará programando em C como em qualquer outro programa que já tenha feito.
A interface gráfica é feita em GTK, e isto é outra coisa que deve ser estudada. Mas com o básico já se pode criar diálogos para capturar os dados de entrada.
» Compilando (e instalando) plug-in do Gimp para Linux e Windows
» COMO ESCRIBIR UN PLUG-IN PARA GIMP (parte I)
» COMO ESCRIBIR UN PLUG-IN PARA GIMP (parte II)
*** Conclusões ***
Esta foi uma abordagem geral, e por enquanto é tudo que disponho.
Não se trata de escolher a melhor linguagem, há outras variáveis em jogo. Metade dos plug-ins e script's do GIMP são escitos em C e Scheme e existem fortes razões para isto.
Não existe nada que se case melhor ao GIMP do que um plug-in em C, mas podem ocorrer casos em que isto é irrelevante.
Python-Fu é 1000 vezes mais fácil de entender e programar que Scheme, mas isto tem um custo (dependências). Para que um plug-in Python-Fu funcione você precisa ter o pacote gimp-python instalado e funcionando.
O que faz a diferença é saber utilizar instruções complexas e deixar que o próprio GIMP faça o trabalho. Para consultar as instruções disponíveis do GIMP use o Navegador de Plug-ins e o Navegador de Procedimentos que estão localizados no menu Extras.Criar um plug-in para o GIMP é mais simples que escrever um programa para edição de imagens e ainda é mais prático de usar, considerando todas as ferramentas do GIMP que estarão disponíveis.
Era exatamente isto que eu buscava para apresentar em processamento de imagens !!!
*** Link's ***
Download: » Exemplos
» GIMP Plug-In Registry (Repositório oficial)
» Scheme Tutorial
» Processamento Digital de Imagens (Site com muitas referências)
» Gimp-Python
» Python-fu para no programadores
» Compilando (e instalando) plug-in do Gimp para Linux e Windows
» COMO ESCRIBIR UN PLUG-IN PARA GIMP (parte I)
» COMO ESCRIBIR UN PLUG-IN PARA GIMP (parte II)
---
Ainda não tenho experiência com os plug-ins do GIMP, e espero que com este post eu possa ajudar e receber ajuda. Não encontrei muito material na Internet, se alguém tiver algum material sobre o assunto terei o prazer de incluir aos outros.
.:: Menu Rápido ::.
Linux | C/C++ | Downloads | SDL | [×]A melhor maneira de se descobrir uma lib gratuita é nos repositórios do Ubuntu: $apt-cache search lib <palavra_chave> dev
Ou pelo devpaks.org, mas o repositório tem me ajudado mais !!!
- Script's GIMP - Python-Fu !!!
- Dicas Web
- Vídeo Compiz Fusion (Desktop 3D)
- Compilando com gcc e Makefile
- Que tal mudar para Ubuntu ?!
- SDL - A Biblioteca dos Jogos 2D
- Analisador léxico de arquivos script
- Simpatizando com a Libxml2
- AsciiGen - Tabela ASCII em C
- Conexão com API C do MySQL
- Compilando com gcc e Makefile
- DR Tetris 0.3 - Tetris no estilo tradicional !
- DR Quebra-Cabeça disponível para download !!!
- Freeggs - Liberdade aos ovos \o/
Se você quer aprender a programar jogos... SDL !!!
- Carregando mapas 2D no formato TMX
- Controle de tempo e Frame Rate
- SDL em Processamento de Imagens
- SDL_Surface - Introdução detalhada
- Imprimindo texto com SDL_Ttf
- SDL_Collide - Colisão 2D para jogos
- Tocando música e sons com SDL_mixer
- Gerando e carregando mapas 2D em jogos
- SDL - A Biblioteca dos Jogos 2D
sábado, 26 de janeiro de 2008
Script's GIMP - Python-Fu !!!
Calma... Python-Fu não é um novo estilo ninja !!!
Não é atoa que o GIMP é a melhor ferramenta gráfica 2D e open source da atualidade. Ela é perfeita para ser manipulada por artistas e programadores.
Saiba como automatizar aquele efeito especial que você geralmente usa ou criar algum que só é possível através de programação !
» Post Completo...
Postado por
Diogo_RBG
4
comentários
Tópicos: gimp
quarta-feira, 9 de janeiro de 2008
Imprimindo texto com SDL_Ttf
Você já deve ter reparado que a função printf não faz milagres quando se está utilizando SDL. Isso é normal, pois a superfície da SDL não é uma saída padrão. A saída padrão é o console (Linux) ou o arquivo stdout.txt (Windows).
A única maneira de se imprimir texto na superfície da SDL é desenhando letra por letra, mas isso não significa que você tenha que fazer isso na unha !
A forma mais simples de resolver este problema é utilizando a lib SDL_Ttf (SDL True Type Fonts).
Além de mostrar minhas soluções para entrada e saída de texto também abordo um pouco sobre manipulação de argumentos variáveis.
» Post Completo...*** SDL_Ttf ***
Tradução do LazyFoo: "SDL não suporta arquivos *.ttf nativamente e por isso a biblioteca de extensão SDL_Ttf é necessária. SDL_Ttf é uma biblioteca de extensão que lhe permite gerar superfícies a partir de certo tipo de fontes."
Isso significa que a lib SDL_Ttf não carrega a font, mas a converte para uma superfície (SDL_Surface) e após carregada não se pode alterar o tamanho da fonte, por exemplo.
Como sempre você pode baixar do Site do projeto, do Devpaks ou instalar direto do repositório (distribuições derivadas do Debian):
$ sudo apt-get install libsdl-ttf2.0-dev
E para linkar ao seu projeto use -lSDL_ttf
Algumas de suas funções são:
int TTF_Init();
void TTF_Quit();
char *TTF_GetError();
TTF_Font *TTF_OpenFont(const char *file, int ptsize);
void TTF_CloseFont(TTF_Font *font);
int TTF_SizeText(TTF_Font *font, const char *text, int *w, int *h)
SDL_Surface *TTF_RenderText_Solid(TTF_Font *font, const char *text, SDL_Color fg);
...
É importante saber que é preciso inicializar (TTF_Init) e encerrar (TTF_Quit) a biblioteca e também carregar (TTF_OpenFont) e descarregar (TTF_CloseFont) o recurso TTF_Font.
A parte de renderização (impressão de texto) possui alguns conceitos a serem estudados:
» Solid: Rápido e direto. Cria uma nova camada de 8bpp (usa paleta) com o texto impresso em baixa qualidade (2 cores). 0 é o colorkey e 1 é a cor da font. O resultado é rápido, o texto tem cor de transparência mas é serrilhado.
» Shaded: Lento com caixa de cor sólida. Cria uma nova camada de 8bpp (usa paleta) com o texto impresso em alta qualidade (com anti-aliasing). O resultado não é muito rápido, o texto não é serrilhado mas também não tem cor de transparência.
» Blended: Muito lento e com camada de transparência. Cria uma nova camada de 32bpp (usa camada alpha) com o texto impresso em alta qualidade (com anti-aliasing). É o resultado mais lento, o texto não é serrilhado e tem transparência.
A lib SDL_Ttf permite vários tipos de codificação de texto: LATIN1, UTF8, UNICODE text/glyph.
Isto significa que você não terá problemas com acentuação, como é comum acontecer quando você escreve seu código em ISO-8859-1 e o programa imprime num terminal IBM-850.
UTF-8 é a codificação de tamanho variável que pode representar qualquer caracter universal padrão do Unicode, mas para nós do ocidente o LATIN1 é mais do que suficiente.
Um exemplo rápido de como utilizar a lib SDL_Ttf: (Não compile isto !)
TTF_Font *font_16 = NULL;
SDL_Surface *screen=NULL, *aux=NULL;
...
int TTF_Init();
...
font_16 = TTF_OpenFont("free_serif.ttf", 16);
...
SDL_Color cor = {255,255,255,0};
aux = TTF_RenderText_Solid(font_16, "Texto !!!", cor );
SDL_BlitSurface(aux, NULL, screen, NULL);
SDL_FreeSurface(aux);
...
TTF_CloseFont(font_16);
...
void TTF_Quit();
*** O Exemplo ***
No exemplo você vai encontrar os 3 tipos de renderização, um exemplo de texto formatado e um exemplo de leitura de texto.

*** Impressão de texto formatado ***
A função printf sempre foi uma mão na roda, pois ela formata, converte e imprime (Tudo ao mesmo tempo). E o que dizer da quantidade variável de argumentos ?! Ela sempre foi um verdadeiro canivete suíço !!!
Não podemos imprimir direto na tela, mas podemos imprimir para um vetor com sprintf. E melhor ainda, criar nossa função print(x,y,texto,...) com argumentos variáveis com a ajuda da função vsprintf:
void print(int x,int y,const char *format, ...){
SDL_Surface *aux;
SDL_Color cor = {255,255,255,0};
SDL_Rect ret={x,y,0,0};
//- Imprimindo para vetor -//
char buf[256];
va_list args;
va_start (args, format);
vsprintf (buf,format, args);
va_end(args);
aux = TTF_RenderText_Blended(font_16, buf, cor);
SDL_BlitSurface(aux,0,screen,&ret);
SDL_FreeSurface(aux);
}
*** Manipulação de argumentos variáveis ***
Já se perguntou como como é possível declarar: int printf( const char *format, ... ) ?
Samuel Dias Neto: "Uma função pode ser chamada com um número variável de argumentos sendo estes argumentos de diversos tipos. O arquivo de cabeçalho stdarg.h declara um tipo va_list e define três macros (va_start, va_arg e va_end) para manipular uma lista de argumentos cuja quantidade e tipos são desconhecidos pela função."
» va_list: tipo para a listas de argumentos variável.
» va_start: inicializa a listas de argumentos variável.
» va_arg: retira o próximo argumento.
» va_end: finaliza a listas de argumentos variável.
*** Leitura de texto ***
Já sabemos como escrever, agora só falta saber como ler ! Aqui é a parte em que eu tive que improvisar, pois não existe a função SDL_Scanf !!!
Minha função de leitura foi feita para teclados ABNT2 e não aceita acentuação, mas pode quebrar um galho:
std::string str;
bool shift;
void scan(SDLKey key, bool shift){
...
if(key==SDLK_BACKSPACE && !str.empty())
str.erase(str.length()-1);
else if(key==' ')
str += key;
else if(key>=SDLK_KP0 && key<=SDLK_KP9)
str += key - SDLK_KP0 + '0';
else if(key>='a' && key<='z'){
if(shift)
str += key-'a'+'A';
else
str += key;
}else{
...
}
}
*** Link's ***
Download: » código fonte
» Site SDL_Ttf
» LazyFoo (True Type Fonts)
» SDL - A Biblioteca dos Jogos 2D
Postado por
Diogo_RBG
4
comentários
terça-feira, 8 de janeiro de 2008
DR Tetris 0.3 - Tetris no estilo tradicional !
2007 foi um ótimo ano, mas 2008 promete ! E para começar o ano com o pé direito estou lançando a terceira edição do meu jogo de tetris.
DR Tetris 0.3 é um jogo de tetris estilo tradicional que promete matar saudade dos velhos tempo em que se perdiam horas em mini games (Eu sou um exemplo !)
Algumas das características são:
* Roda em Windows e Linux.
* Sons do jogo original (Ou quase !).
* Sombra projetando onde a peça irá cair.
* Placar de recordes com 13 posições (Editável).
* Acumulador de pontos em sequência.
* Níveis diferentes de velocidade.
Você pode baixar no site do jogo: DR Tetris
...que ainda se encontra em construção !
---
DR Teris ==> Diogo Rigo Tetris :)
Este é o motivo do meu sumisso !
Em breve voltarei a postar meus tutorias de SDL.
Postado por
Diogo_RBG
8
comentários
Tópicos: downloads