|
Na falta de algo mais criativo, QuindiGUI é o nome que dei a um ensaio de motor de interface gráfica escrito em C++ que fiz durante minhas horas livres.
Se você leu com atenção a página sobre o Pixel Pocketknife, pode ter percebido que gosto de polir bits e de ter o domínio dos detalhes do aplicativo.
Na implementação do Pixel Pocketknife há uma hierarquia de classes de componentes visuais que encapsulam objetos oferecidos pelo Windows.
Há também um motor de gerenciamento de posição e tamanho dos componentes visuais (gerenciador de layout).
No código fonte do programa, crio os componentes visuais indicando quais as dependências de cada um deles e quais regras de posição e tamanho eles devem seguir.
Esses recursos me permitem criar janelas completas, complexas e com estética, sem ter de explicitar tamanhos e distâncias literais, pois o motor é que faz as contas.
Mas eu queria mais!
Esse motor de interface gráfica do PixPoc é totalmente dependente do Windows 32 bits.
Eu queria o mesmo conceito de componentes visuais, porém com mais domínio dos eventos que eles disparam e a que estão sujeitos, e com mais controle de como eles são desenhados na tela.
Comecei então a esboçar a QuindiGUI.
A ideia era isolar a dependência do sistema operacional e torná-la tão restrita quanto possível.
A QuindiGUI pede do Windows apenas janelas "cruas" (sem barra de título, sem moldura, sem nada) e inputs básicos como os de mouse e teclado.
O desenho das janelas, bem como a implementação de todos os componentes visuais que vão dentro delas, fica por conta da QuindiGUI.
Em outras palavras, dos componentes visuais oferecidos pela aplicação, apenas as janelas têm um objeto Windows correspondente associado; todos os demais são "virtuais".
Até mesmo o comportamento da janela, como o redimensionamento dela com o mouse, é implementado pela QuindiGUI.
Perceba que essa abordagem me permitiria portar a QuindiGUI para outro sistema operacional com relativa facilidade: assumindo que eu dispusesse de um compilador C++ compatível, somente a porção dependente do SO teria de ser reescrita.
|
|