4 - SISTEMA DE JANELAS E EDITORES DE COMPONENTES DE INTERAÇÃO
(Harlen C. Batagelo)

4 - SISTEMA DE JANELAS E EDITORES DE COMPONENTES DE INTERAÇÃO UTILIZADOS
MS Windows 95/98
Site: http://www.microsoft.com/windows98/
O editor foi construído sobre o sistema de janelas MS Windows 95/98, por ser bastante popular e, consequentemente, ser mais acessível aos usuários. Todos os recursos visuais desejados foram suportados nesse sistema.

Linguagem de programação e editor de componentes de interação:
MS Visual C++ 6.0 com MFC
Site: http://msdn.microsoft.com/visualc/
O editor de recursos do VC++ pode criar tabelas de teclas aceleradoras, bitmaps, estilos de cursor, estilos de caixa de diálogos (inclusive com “property sheets”), recursos HTML, ícones, menus e toolbars. Entre os controles para as caixas de diálogos estão disponíveis: bitmap, texto estático, edit box, group box, botão, check box, radio button, combo box, list box, barra de rolagem, spin control, progress control, slider, list control, tree control, tab control, animação, rich text control, date/time picker, calendário, extended combo box, controle de entrada de endereço IP e controles customizáveis. O usuário pode alterar as propriedades de cada controle, designar identificadores, posicioná-los e redimensioná-los convenientemente nas caixas de diálogo.
Todos os recursos desejados foram suportados pelo editor de componentes de interação do VC++. A MFC forneceu a criação automática da funcionalidade básica da interface (tooltips, movimentação das barras de ferramentas, barra de status, etc), além do esqueleto básico do código-fonte.

Biblioteca 2D:
Windows GDI (Graphics Device Interface); Biblioteca 2D padrão da API do Windows. A GDI é rápida e muito fácil de ser utilizada. Por outro lado, carece de recursos mais avançados, como a rotação das primitivas e "ray-picking". Esses procedimentos tiveram que ser criados de forma independente.
Na implementação, as funções da GDI foram chamadas através da classe CDC do MFC. Essa classe define uma classe de objetos do contexto de dispositivo. O objeto CDC fornece funções membro para trabalhar com um contexto de dispositivo como um monitor ou impressora, além de membros para trabalhar com um contexto de visão associado com a área cliente da janela. Todas as funções de desenho da GDI podem ser feitas através de um objeto CDC, entre elas o trabalho com cores e paletas, modificação de atributos de desenho, mapeamento, conversão de coordenadas, trabalho em regiões específicas da área cliente, linhas, formas simples, elipses, polígonos, bitmaps,  texto, scrolling e suporte a arquivos metafile.

Biblioteca 3D:
O projeto não inclui recursos de manipulação de objetos tridimensionais. Entretanto, analisamos algumas bibliotecas 3D que poderiam ser utilizadas para uma possível expansão:

MS Direct3D Retained Mode (D3DRM):
Site: http://msdn.microsoft.com/directx/
Biblioteca de alto nível para gráficos 3D em tempo real na plataforma Windows 95/NT. Tem suporte a hierarquia de frames, animações com interpolação entre quadros, planos de clipping arbitrários, 5 tipos de luzes (ambiente, direcional, paralela, pontual e spotlight) malhas progressivas (i.e: refinamento de LODs), ray-casting para obter os objetos correspondentes a um dado ponto na tela, geração de sombras (somente sombras projetivas), texturas com mip-mapping e wrapping (plano, cilíndrico, esférico e modo "chrome"). O D3DRM também pode ser integrado com o D3D Immediate Mode.

OpenGL (2D/3D):
Site: http://www.opengl.org
API 2D/3D que fornece controle total sobre as operações de gráficos 2D e 3D. É independente de plataforma, fácil de usar, eficiente e muito mais flexível que o D3DRM, embora trabalhe num nível mais primitivo.


Sobre a implementação do protótipo:

Screenshot da última versão - clique na figura para ver uma imagem maior

Código-fonte

Foram implementadas todas as funcionalidades descritas no projeto, exceto aquelas referentes a abertura/salvamento de arquivos e habilitação/desabilitação das barras de ferramentas. Essas funcionalidades poderiam ser implementadas de forma trivial, e só não foram por uma questão de prioridade.

Houve dificuldade na implementação da rotação das primitivas devido ao fato do produto escalar entre o vetor inicial e o vetor final da rotação se repetir a partir de 180 graus. A rotação dos retângulos não foi implementada por causa de uma limitação do tipo de dado utilizado na sua especificação (assumimos no projeto conceitual que as linhas do retângulo são sempre horizontais e verticais).



Retornar à página principal