Computação Gráfica - 06
Prof. Jorge Cavalcanti
jorge.cavalcanti@univasf.edu.br
www.univasf.edu.br/~jorge.cavalcanti www.twitter.com/jorgecav
Universidade Federal do Vale do São Francisco Curso de Engenharia da Computação
Menus, Janelas e Textos
•
A GLUT possui algumas ferramentas de criação e gerenciamento de menus pop-up ´ s ;
•
Para cada opção do menu deve existir uma função de callback separada;
•
Cada opção do menu gera um número diferente, o qual é informado como parâmetro da função quando a opção é escolhida pelo usuário;
•
Cabe ao programador desenvolver a função,
tratando o valor recebido como parâmetro.
Funções para criar/gerenciar menus:
• glutCreateMenu
Cria um menu, definindo que uma função será chamada quando uma opção do menu for selecionada. O menu recém- criado passa a ser o “menu corrente”.
int glutCreateMenu(void(*nome_função)(int valor))
•glutAddMenuEntry
Adiciona uma opção ao menu corrente.
Void glutAddMenuEntry(char *texto_opção, int identificação)
•glutAddSubMenu
Adiciona submenu ao menu corrente.
Void glutAddSubMenu(char *texto_opção, int identificação)
Menus, Janelas e Textos
Funções para criar/gerenciar menus:
•
glutAttachMenu
Faz a ligação do menu corrente com um dos botões do mouse.
Void glutAttachMenu(GLUT_LEFT_BUTTON)
•glutDetachMenu
Interrompe na janela corrente o vínculo do menu corrente com um dos botões do mouse.
Void glutDetachMenu(GLUT_LEFT_BUTTON)
Código fonte exemplo: http://migre.me/1KoRp
Menus, Janelas e Textos
Opções adicionais com o mouse (ver no exemplo)
• glutMotionFunc
Estabelece a função callback que é chamada pela GLUT cada vez que o mouse é movido sobre a janela corrente enquanto um ou mais de seus botões estão pressionados. Parâmetros de entrada da função:
(int x, int y). Os parâmetros x e y indicam a posição do mouse em coordenadas da janela.
Void glutMotionFunc(int x, int y)
•
glutPassiveMotionFunc
Estabelece a função callback que é chamada pela GLUT cada vez que o mouse é movido sobre a janela corrente enquanto nenhum de seus botões está pressionado. Parâmetros de entrada da função callback: (int x, int y).
Void glutPassiveMotionFunc(int x, int y)
Menus, Janelas e Textos
Funções para manipulação de janelas
•
glutFullScreen
– Faz com que a janela ocupe toda a tela.
void glutFullScreen(void)
•
glutPositionWindow
– Redefine a nova posição da janela na tela.
void glutPositionWindow(int x, int y)
•
glutReshapeWindow
– Permite definir o novo tamanho da janela.
void glutReshapeWindow (int width, int height)
Exemplo menu para manipulação de janelas
void Janela(int opcao) {
switch(opcao){
case 0:
glutReshapeWindow(300, 200);
break;
case 1:
glutPositionWindow(250,200);
break;
case 2:
glutFullScreen();
break; }
glutPostRedisplay();
Exemplo menu para manipulação de janelas
void CriarMenu() {
int menu;
menu = glutCreateMenu(Janela);
glutAddMenuEntry("Muda Tamanho", 0);
glutAddMenuEntry("Muda Posição", 1);
glutAddMenuEntry("Tela Cheia", 2);
glutAttachMenu(GLUT_RIGHT_BUTTON);
}
Textos e Fontes
•
A OpenGL não suporta a exibição de textos na tela, mas a GLUT oferece esse recurso;
•
Suporte a dois tipos de fontes de caracteres:
• Fontes formadas por segmentos de retas (Stroke);
• Fontes formadas por imagens que representam os caracteres (Bitmap);
•
Fontes Stroke são mais flexíveis, pois podem ser escaladas e rotacionadas;
•
Fontes Bitmap são mais rápidas de serem exibidas.
Textos e Fontes
•
void glutBitmapCharacter(void *font, int char)
–
Permite a exibição de um caracter do tipo bitmap. O primeiro parâmetro (font) define o tipo de fonte e o segundo (char), o caracter a ser exibido. Os valores válidos para o tipo de fonte são:
Valor Descrição
GLUT_BITMAP_8_BY_13 Fonte padrão 8x13 GLUT_BITMAP_9_BY_15 Fonte padrão 9x15
GLUT_BITMAP_TIMES_ROMAN_10 Fonte times roman tamanho 10 GLUT_BITMAP_TIMES_ROMAN_24 Fonte times roman tamanho 24 GLUT_BITMAP_HELVETICA10 Fonte helvética, tamanho 10
Textos e Fontes
•
void glRasterPos2f, void glRasterPos2i, void glRasterPos2d
–
Modifica a posição matricial corrente utilizada para
desenhar o texto. Define a posição onde o caractere será exibido;
–
Ao ser exibido um caractere, o próximo é
automaticamente exibido à direita do anterior.
•
void glutStrokeCharacter(void *font, int character)
–Exibe fontes Stroke. O primeiro parâmetro (font) define o
tipo de fonte e o segundo (char), o caractere a ser
exibido. Os valores válidos para o tipo de fonte são:
Textos e Fontes
•
Como os caracteres são exibidos usando linhas, as funções que afetam as linhas, também afetam os caracteres exibidos.
– A posição inicial do texto também é afetada por transformações geométricas.
•
As funções para exibição de texto exibem um caractere de cada vez, para desenhar strings, é necessário
desenvolver uma rotina que exiba cada caractere na sequência.
•