(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
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).