Primeiros Passos com a Biblioteca Cairo para C/C++

Projetos como: Polybar, AmigaOS, Synfig e outros foram feitos com a biblioteca Cairo.


Primeiros Passos com a Biblioteca Cairo para C/C++

Cairo é uma biblioteca gráfica de código aberto que fornece uma API independente de dispositivo baseada em gráficos vetoriais para desenvolvedores de software .

Ela fornece primitivas para desenho bidimensional em vários back-ends diferentes . Cairo usa aceleração de hardware quando disponível.

Apesar de ser mais utilizada por programadores C/C++ ela também pode ser aplicada em outras linguagens de programação, tais como: C#, Delphi, Eiffel, Factor, Harbor, Haskell, Julia, Lua , Perl , PHP, Python, Ruby, Rust, Scheme, Smalltalk e vários outros como Gambas (Como o Visual Basic).


Ligações com Toolkits

Como o Cairo é apenas uma biblioteca de desenhos, pode ser bastante útil integrá-lo a um kit de ferramentas de interface gráfica do usuário, como:

  • FLTK tem suporte total para Cairo (através do switch de compilação “--enable-cairo”).
  • GTK começou em 2005, com a versão 2.8, a usar Cairo para renderizar a maioria de seus elementos de controle gráfico , e desde a versão 3.0 toda a renderização é feita através do Cairo.

Muitos projetos famosos utilizam o Cairo

Tais como:


Instalação

Existe a biblioteca cairo para desenvolvimento em C e a cairomm que pode ser usado com POO para C++, apesar de que ambas funcionam com C++ .

Para instalar ambos pacotes na sua distro/sistema veja de acordo com seu gerenciador de pacotes correspondente:

emerge x11-libs/cairo dev-cpp/cairomm # Gentoo, Funtoo,...
sudo apt-get install -y libcairo2-dev libcairomm-1.0-dev # Debian, Ubuntu, Mint, ...
sudo yum install cairo-devel # Fedora, Red Hat, ...
zypper install cairo-devel cairomm-devel # OpenSUSE
sudo port install cairo cairomm # macOS
sudo pacman -S cairo cairomm # Arch Linux, Artix, Manjaro, ...

Você também pode compilar o código fonte direto do GitLab .


Criando seu primeiro códigos com Cairo

Criando uma imagem com cairo.

nvim main.cpp . Leia oscomentários no código para uma maior entendimento.

#include <iostream>
#include <cairommconfig.h>
#include <cairomm/context.h>
#include <cairomm/surface.h>
#include <cmath>

int main(){

    auto surface =
        Cairo::ImageSurface::create(Cairo::Surface::Format::ARGB32, 600, 400);
    auto cr = Cairo::Context::create(surface);

    cr->save(); // salva o estado do contexto
    cr->set_source_rgb(0.86, 0.85, 0.47);
    cr->paint();    // preenche a imagem com a cor
    cr->restore();  // retornar a cor para preto agora
    cr->save();

    // desenha uma borda ao redor da imagem
    cr->set_line_width(20.0);    // faz uma linha mais larga
    cr->rectangle(0.0, 0.0, surface->get_width(), surface->get_height());
    cr->stroke();
    cr->set_source_rgba(0.0, 0.0, 0.0, 0.7);

    // desenha um círculo no centro da imagem
    cr->arc(surface->get_width() / 2.0, surface->get_height() / 2.0, 
            surface->get_height() / 4.0, 0.0, 2.0 * M_PI);
    cr->stroke();

    // desenha uma linha diagonal
    cr->move_to(surface->get_width() / 4.0, surface->get_height() / 4.0);
    cr->line_to(surface->get_width() * 3.0 / 4.0, surface->get_height() * 3.0 / 4.0);
    cr->stroke();
    cr->restore();

#ifdef CAIRO_HAS_PNG_FUNCTIONS
    std::string filename = "imagem.png";
    surface->write_to_png(filename);
    std::cout << "O arquivo PNG: '" << filename << "' foi criado com sucesso!\n";
#else
    std::cout << "Você deve compilar Cairo com suporte PNG para este exemplo.\n";
#endif

}


Para compilar com o G++ rode:

g++ main.cpp `pkg-config --cflags --libs cairomm-1.16` -std=c++17

Esse código irá criar no diretório que você executá-lo essa imagem:

Cairo Example

Você também pode usar o Makefile, CMake, Xmake ou qualquer outra ferramenta do seu toolchain.

Para mais exemplos, clique aqui e aqui.

Veja também:


cpp linguagemc


Compartilhe


Nosso canal no Youtube

Inscreva-se


Marcos Oliveira

Marcos Oliveira

Desenvolvedor de software
https://github.com/terroo


Crie Aplicativos Gráficos para Linux e Windows com C++

Aprenda C++ Moderno e crie Games, Programas CLI, GUI e TUI de forma fácil.

Saiba Mais

Receba as novidades no seu e-mail!

Após cadastro e confirmação do e-mail, enviaremos semanalmente resumos e também sempre que houver novidades por aqui para que você mantenha-se atualizado!