Pergunta

Os gráficos (direcionados) representam autômatos finitos.Até agora, meu programa de teste estava gravando arquivos de pontos para teste.Isso é muito bom tanto para testes de regressão (mantenha os arquivos de saída verificados no Subversion, pergunte se houve alguma alteração) quanto para visualização.No entanto, existem alguns problemas...

Basicamente, eu quero algo que possa ser chamado de C++ e que planeje um layout para meus estados e transições, mas deixe o desenho para mim - algo que me permitirá desenhar coisas como eu quiser e desenhar em janelas GUI (wxWidgets).

Também quero uma licença que permita o uso comercial - não preciso disso no momento e posso muito bem lançar como código aberto, mas não quero limitar minhas opções de ATM.

Os problemas com o GraphViz são (1) os avisos sobre a construção a partir do código-fonte no Windows, (2) todas as dependências desnecessárias para renderização e análise e (3) a (suposta) falta de uma API documentada específica e puramente para layout.

Basicamente, quero ser capaz de especificar meus estados (com tamanhos de retângulos delimitadores) e transições, e ler as posições dos estados e pontos de referência para cada transição e, em seguida, desenhar com base nessas coordenadas.Eu realmente não descobri como as anotações nas transições devem ser tratadas, mas deveria haver algum tipo de provisão para especificar tamanhos de caixas delimitadoras para elas, associá-las a transições e ler posições.

Alguém conhece uma biblioteca que possa atender a esses requisitos?

Não sou necessariamente contra implementar algo para mim, mas neste caso prefiro evitá-lo, se possível.

Foi útil?

Solução 4

Embora as respostas até agora valessem voto positivo, não posso realmente aceitar nenhuma delas. Eu ainda tenho procurado, no entanto.

Uma coisa que encontrei é AGLO. O código é GPL V1, mas existem documentos que descrevem os algoritmos, por isso deve ser fácil o suficiente para reimplementar do zero, se necessário.

Há também o artigo de Gansner, Koutsofios, North e Vo - "Uma técnica para desenhar gráficos direcionados" - disponível em Aqui no site GraphViz.

Eu também tenho olhado atentamente para o BSD licenciado (mas java) Jgraph.

De uma maneira ou de outra, parece que eu posso estar reimplementando a roda, se não estiver realmente reinventando.

Outras dicas

Hmm, gdtoolkit (ou gdt) parece bom: muitas das imagens no tutorial Parece muito bom e não parece terrivelmente complicado de usar.

EDIT: Mas verificando a licença, parece que é um software comercial :-(. Opa!

OGDF está sob o GPL.

Pigale também está sob a GPL.

Govisual é software comercial, mas parece que começa em US $ 1800 para um desenvolvedor.

Eu estava lidando com um problema semelhante no início deste ano.Um parâmetro de entrada importante para uma decisão, entretanto, é o número esperado de nós.

Decidi usar o navegador como GUI e, portanto, procurei por boas bibliotecas Javascript, uma que encontrei foi fio, é muito adequado para layouts técnicos (e também para edição com arrastar e soltar e layout "on the fly").Você pode facilmente conectar isso ao seu c++ executando um pequeno servidor web em um thread (você precisará de algum tipo de eventloop/thread para GUI de qualquer maneira).

Bem, apenas meus 2 centavos.

Aqui está uma boa coleção de bibliotecas de gráficos com a funcionalidade de comparação e pesquisa:
http://gvsr.polytech.univ-nantes.fr/gvsr/task?action=browse#

Talvez você encontre um Lib que se encaixe para você.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top