quinta-feira, 17 de novembro de 2011

Charset Editor

Olá, programadores.

Esta semana estive desenvolvendo (mais um...) um pequeno aplicativo em Java chamado Charset Editor. Bom, esse programa serve simplesmente para editar conjuntos de 256 caracteres.

"Mas pra quê diabos eu iria querer editar conjuntos de caracteres?" você deve ter se perguntado. Pra quem desenvolve jogos e mexe com gráficos em baixo-nível, o programa pode ser útil. Eu desenvolvi ele especialmente porque eu preciso criar um simulador de "janela de terminal" em celulares que rodam Java. Pra isso eu preciso desenvolver uma engine gráfica que simule essa janela com os caracteres coloridos e bonitinhos ali dentro, igual uma "janela de terminal" de verdade. Mas como os celulares não possuem isso (cada celular tem a sua própria fonte, sua própria forma de desenhar na tela, etc.) eu tenho que criar a minha própria engine. Esse programa que estou divulgando aqui vai me servir pra desenhar os 256 caracteres que a engine vai carregar e usar para escrever o que ela quizer num "terminal" fake.

O legal é que dá pra salvar e carregar arquivos no formato CHR que contém os dados de todos os caracteres, e também dá pra exportar em formato PNG, que nada mais é do que um arquivo de imagem PNG contendo os caracteres desenhados um do ladinho do outro.


Dá pra desenhar um smiley, que é o caractere 0x01 da tabela ASCII




Dá pra mudar as cores de frente e fundo, e desenhar uma letra 'A'




O programa salva arquivos CHR em um formato específico, como demonstrado abaixo no programa HxD que visualiza bytes de arquivos binários







Instruções


Como editar um conjunto de caracteres?

Ao iniciar o programa, ele cria um conjunto em branco com 256 caracteres vazios (isto é, todos os bits de todos os caracteres iniciam zerados). Para editar o conjunto, você deve selecionar um caractere individual, bastando digitar o índice dele (de 0 até 255) dentro do campo de texto que se encontra no painel inferior da janela e pressionando Enter. Ao pressionar Enter o editor mostra na tela o caractere daquele índice. É possível também selecionar sucessivamente os índices do conjunto bastando clicar no botão "<< Prev" para selecionar o caractere anterior ou "Next >>" para selecionar o próximo. O atalho para selecionar caracteres sucessivos é pressionando a tecla de seta esquerda ou direita.

Após selecionar um caractere, é possível editar os bits dele clicando ou arrastando o cursor do mouse sobre eles. Os bits "acesos" do caractere são representados por uma cor diferente da dos bits "apagados". É possível alterar essas cores no menu "Options". Para "acender" um bit, use o botão esquerdo do mouse, e para "apagar" um bit, use o botão direito do mouse.

Como salvar um conjunto de caracteres?

O programa é capaz de gerar um arquivo de formato específico contendo o conjunto completo de 256 caracteres, de forma que seja possível a sua edição e/ou exportação posterior. Os arquivos de conjunto de caracteres gerados pelo programa têm a extensão .CHR e consomem 16 KB. Para salvar, basta selecionar o menu "File" e clicar em "Save CHR...". Ao salvar em formato CHR, o programa não armazena as informações de cor no arquivo.

Qual o formato do arquivo CHR gerado pelo programa?

Ao salvar um arquivo de conjunto de caracteres, o programa envia seqüencialmente cada bit de cada um dos 256 caracteres. Neste arquivo, cada bit "aceso" é salvo como um byte de valor 255 (0xff), e cada bit "apagado" é salvo como um byte de valor 0 (0x00). As cores selecionadas durante a edição não ficam armazenadas neste arquivo, mas são salvas junto com o arquivo PNG ao exportar.

Como carregar um conjunto de caracteres?

Basta selecionar o menu "File" e em seguida clicar em "Load CHR...". O programa lê todos os 256 caracteres do arquivo, sendo possível editá-los normalmente ou exportar como uma imagem comum no formato PNG.

Como exportar um conjunto de caracteres para uma imagem PNG?

É possível exportar um conjunto de caracteres para uma imagem no formato PNG (Portable Network Graphics), um formato gráfico extremamente popular e suportado em praticamente todas as plataformas. Para isso, basta selecionar o menu "File" e clicar em "Export as PNG...". O programa salva uma imagem contendo a representação gráfica dos caracteres. Cada caractere é desenhado na imagem sendo que os bits "acesos" são desenhados na cor preta e os "apagados" na cor branca. É possível alterar estas cores, bastando selecionar o menu "Options" e clicar em "Set color for pixel on..." para alterar a cor dos bits "acesos" e em "Set color for pixel off..." para alterar a cor dos bits "apagados". Uma vez que cada caractere é composto de 64 bits, a representação gráfica contém 64 pixeis, sendo que na imagem eles são desenhados com largura e altura 8, um ao lado do outro, sem espaço entre eles; o tamanho resultante da imagem é 2048x8.

Outras funções do programa:

É possível copiar, recortar e colar caracteres de um índice a outro, bastando para isso selecionar o caractere desejado e pressionar os atalhos típicos (Control-C, Control-X, Control-V para copiar, recortar e colar, respectivamente), ou utilizar o menu "Edit".

O programa permite inverter os bits de um caractere, isto é, os apagados acendem e os acesos apagam. Para isto selecione o caractere e pressione o atalho Control-I ou use o menu "Edit".

Para desabilitar a grade que separa os bits do caractere, pressione o atalho Control-G ou use o menu "Edit."

Para "apagar" todos os bits do caractere selecionado, pressione a tecla Delete (ou Del, em alguns teclados) ou use o menu "Edit".





Caso queira baixar o programa, clique no link abaixo:


Baixar CharsetEditor 1.0 [beta] (15 KB de puro prazer)





Caso queira dar sugestões, criticar construtivamente, denunciar malditos bugs, ou agradecer, é só deixar comentário ou enviar e-mail.