quinta-feira, 24 de janeiro de 2013

Trabalhando com Textos


Fontes definem como será o visual do texto apresentado na tela. Existem muitas fontes, e você também pode criar a sua. Vamos ver um exemplo de como definir a fonte, estilo, tamanho e cor de um texto.

// Declara uma nova fonte
 sf::Font font;
 
 // Carrega a fonte de um arquivo
 font.loadFromFile("arial.ttf");
 
 // Cria um elemento de texto.
 sf::Text text1("Eu sou um texto.");

 // Define a fonte do texto
 text1.setFont(font);

 //Define o tamanho do texto
 text1.setCharacterSize(30);

 //Define o estilo do texto
 text1.setStyle(sf::Text::Italic);

 //Define a cor do texto
 text.setColor(sf::Color::Red);
Para desenhar o texto na tela, usamos:
window.draw(text1);



quarta-feira, 23 de janeiro de 2013

Trabalhando com Cores


A classe sf::Color manipula cores do sistema RGBA. É bem fácil trabalhar com ela:


sf::Color color(255, 0, 0); // vermelho
 color.red = 0;              // fica preto
 color.blue = 128;           // fira azul escuro

Algumas cores comuns já foram definidas pela SFML:

sf::Color black       = sf::Color::Black;
sf::Color white       = sf::Color::White;
sf::Color red         = sf::Color::Red;
sf::Color green       = sf::Color::Green;
sf::Color blue        = sf::Color::Blue;
sf::Color yellow      = sf::Color::Yellow;
sf::Color magenta     = sf::Color::Magenta;
sf::Color cyan        = sf::Color::Cyan;
sf::Color transparent = sf::Color::Transparent;


Esse é um artigo pequeno e fácil de entender. Faça bom proveito.

terça-feira, 22 de janeiro de 2013

Gravando áudio

Gravando para um buffer de som. O áudio capturado deve ser gravado em um buffer (sf::SoundBuffer), para que então possa ser tocado ou gravado em um arquivo.

// primeiro checar se um dispositivo de áudio está disponível
if (!SoundBufferRecorder::isAvailable())
{
}

// criar o gravador
SoundBufferRecorder recorder;

// começar a capturar
recorder.start();

// parar de capturar
recorder.stop();

// recuperar o buffer
const sf::SoundBuffer& buffer = recorder.getBuffer();

A captura ocorre em sua própria thread, o que significa que você pode fazer o que quiser entre o inicio e o fim dela, sem que seja interrompida.
  • Salvar em um arquivo
    buffer.saveToFile("my_record.ogg");
    
  • Tocar
    sf::Sound sound(buffer);
    sound.play();
    
  • Outros
    const sf::Int16* samples = buffer.getSamples();
    std::size_t count = buffer.getSampleCount();
    doSomething(samples, count);
Há também 2 funções adicionaisonStart e onStop. Estas são chamadas quando a captura começa/termina.
Você também pode criar o seu próprio gravador:
class MyRecorder : public sf::SoundRecorder
{
    virtual bool onStart()
    {
        return true;
    }

    virtual bool onProcessSamples(const Int16* samples, std::size_t sampleCount)
    {
        return true;
    }

    virtual void onStop()
    {
    }
}
if (!MyRecorder::isAvailable())
{
}

MyRecorder recorder;
recorder.start();
recorder.stop();