Sistemas de Interfaces com o Usuário

Slides:



Advertisements
Apresentações semelhantes
Sistemas de Interfaces com o Usuário e Glut/OpenGL
Advertisements

Jogos em Lua com LÖVE Hamilton Lima Jr. MediaLab – UFF Lua workshop 2009.
Interações cliente/servidor usando o UDP
Um programa em C Bibliotecas Variáveis globais
Invocação Remota de Procedimentos (RPC) Alexandre Bragança 2001 DEI / ISEP.
Computação Gráfica Mapeamento de textura
ADT – Arvore Binária de Pesquisa
OpenGL Clique para adicionar texto Soraia Musse 6/4/2011.
Manipulação de Arquivos de Dados
Java RMI Alcides Calsavara. Objetivos Permitir que um método de uma classe Java em execução em uma máquina virtual JVM chame um método de um objeto (instância.
Java: Comandos Básicos
1 Java: Tratamento de Exceções Alcides Calsavara.
Programando com Threads em C
Estruturas Fundamentais
Introdução à Computação Gráfica OpenGL Básico
1 Estruturas de Controle Márcia J. N. Rodrigues Lucena Especialização em Técnicas e Ferramentas de Apoio à Decisão Departamento.
Computação Gráfica Interativa - Gattass
OpenGL Conceitos Básicos
Sistemas de Interfaces com o Usuário e OpenGL/Glut
INF2608 – Fundamentos da Computação Gráfica
Rodar Prolog2 no Unix Shell Conectar-se em limoeiro. Incluir /usr/local/prolog2/sys no seu path. Digitar prolog2 no prompt Unix. Digitar consult(" ").
A.4. Trabalhando com elementos de biblioteca STL – Standard Template Libraby Disponibiliza um conjunto de classes templates, provendo algoritmos eficientes.
Funções para serem usadas no exercício de Lab nos dias (11/03/2010 e 17/03/10) Visualização 3D Incluir no FrameWork Básico (na página da disciplina), as.
Callback de Teclado // registro void glutKeyboardFuc(Teclado);
Laboratório de Computação Gráfica OpenGL
Iluminação Para programar um sistema de iluminação, dois passos principais devem ser considerados: c) Que tipo e posição de Iluminação se deseja b) Que.
Implementando um Montador com LEX e YACC
9 Controle de fluxo Seqüenciadores. Jumps. Escapes. Exceções.
Grupo Paralelismo – Unesp RC
SQL Procedural Junho/2006.
Servidores e Programação Web Redes de Computadores.
Templates e Questões de Design Programas são geralmente construídos segundo um design que é relativamente bem mapeado nos mecanismos oferecidos pela linguagem.
Aula 1 – 10/09 Introdução ao Curso Marcelo Paiva
Organização de Sistemas de Computadores
Sistemas Operacionais e Windows XP Aula 04 – DCA0302.
Computação Gráfica MO603/MC930
OpenGL Computação Gráfica. O que é OpenGL? Uma linguagem de programação gráfica de baixo nível Projetada para gráfico interativo 2D e 3D Uma interface.
Introdução Ciência da Computação estudo de algoritmos –ÊNFASE ao estudo de DADOS armazenamento manipulação refinamento (a partir de dados cru) estrutura.
Slides: Prof. João Fabro UTFPR - Curitiba
Slides: Prof. SIMÃO Revisão: Prof. João Fabro
Slides: Prof. João Fabro UTFPR - Curitiba
Renderização de cenas por traçado de raios na Placa Gráfica Fabiano Segadaes Romeiro Sistemas Gráficos 3D IMPA.
Computação Gráfica – Transformações Geométricas
INPE / CAP-315 Airam J. Preto, Celso L. Mendes Aula 27 (1) Programação com MPI Tópicos: Modelo de Programação Funções de Ambiente Funções Básicas.
Instruções condicionais
Análise Sintática – Parte 1
Caio Neves Leila Soriano. Agenda O que é Ginga? SBTVD News NCL API NCLua Exemplos.
Metodologia de Desenvolvimento de Software Hermano Moura Alexandre Vasconcelos, André Santos, Augusto Sampaio, Hermano Moura, Paulo.
Funções ou procedures Professor Esp. Diego André Sant’Ana
Java 2D Marco Antonio. Java2D Conjunto de classes para trabalhar com gráficos e imagens. A principal classe desta API é JComponent. Com esta classe é.
Aula Gráfica de LP2 Professor: André Santos Monitor: José Edson.
Information visualization toolkit.  Framework extensível  Criação de Softwares interativos  Free license.
RT-EXPERT Artis Corp. C calling program RTSUB [rule set subroutine] RTSUB [rule set subroutine] RTSUB [rule set subroutine]... DSL Decision Support Language.
Computação Gráfica Mapeamento de textura
Tipos Especiais de Listas
Computação Gráfica Introdução ao OpenGL.
Introdução à Computação Gráfica OpenGL Básico
Regras de escopo Escopo: trecho de codificação no qual o identificador possui significado Escopo de função: identificador válido dentro do trecho de uma.
Computação Gráfica – Transformações Projetivas
Computação Gráfica – Transformações Geométricas
PCI- Estrutura Condicional Profa. Mercedes Gonzales Márquez.
1 SUIT - Simple User Interface Toolkit Maria Alice Grigas Varella Ferreira EP-USP Abril 2003.
Felipe Cavalcanti Ferreira Fernando Valente Kakimoto
Sistemas de Interfaces com o Usuário (IUP ou GLUT) e Sistemas Gráficos (OpenGL)
Grupo: Antônio Inocêncio Francisco Ícaro Filipe Araújo Guilherme Barreto Leonardo Vilaça Márcio Dias Thiago Gomes.
Fundamentos de Programação 1 Slides 21 Prof.ª Fabiany e Prof. SIMÃO Linguagem C “Lista Encadeada”.
Fundamentos de Programação 1 Slides 22 Prof.ª Fabiany e Prof. SIMÃO Linguagem C “Lista Duplamente Encadeada - Projeto com vários Arquivos”.
Fundamentos de Programação 1 Slides 18 Prof. SIMÃO Jean Marcelo SIMÃO Linguagem C “Arquivos Seqüências ou de Texto ”. 1.
Programador/a de Informática
Programação de Computadores LINGUAGEM C – AULA 05 - PROF. WELLINGTON TELLES.
Transcrição da apresentação:

Sistemas de Interfaces com o Usuário Interfaces Gráficas 3/25/2017 Sistemas de Interfaces com o Usuário Computação Gráfica - Gattass

Proceso de Interação (Eng. Cognitiva) Interfaces Gráficas 3/25/2017 Proceso de Interação (Eng. Cognitiva) Golfo de Execução: formulação da intenção; especificação da ação; execução. Usuário Sistema Golfo de Avaliação: percepção; interpretação; avaliação. Norman, 1986 Computação Gráfica - Gattass

Signos (Semiótica) A Índices Ícones Símbolos Interfaces Gráficas 3/25/2017 Signos (Semiótica) Índices Ícones Símbolos A Computação Gráfica - Gattass

Objetos de comuns interface Interfaces Gráficas 3/25/2017 Objetos de comuns interface Computação Gráfica - Gattass

Modelo de Programação Toolkit de Interface (Motif, SDK, ... ) Programa Interfaces Gráficas 3/25/2017 Modelo de Programação Toolkit de Interface (Motif, SDK, ... ) Programa Gráfico- Interativo Sistema Gráfico (Xlib, GDI, ...) Dispositivos Computador Usuário Computação Gráfica - Gattass

Programação Convencional Interfaces Gráficas 3/25/2017 Programação Convencional inicio Programação Convencional Os comandos são executados segundo uma ordem pré-estabelecida e sequencial. captura dados processa dados fim Computação Gráfica - Gattass

Técnicas de Interação Solicitação (Request) Amostragem (Sample) Interfaces Gráficas 3/25/2017 Técnicas de Interação Solicitação (Request) Amostragem (Sample) Eventos (Event) Computação Gráfica - Gattass

Exemplo de Interação no Modo de Solicitação (Request) Interfaces Gráficas 3/25/2017 Exemplo de Interação no Modo de Solicitação (Request) { Gqloc lc; static Gdlimit area = {0.0, 0.1, 0.0, 0.1}; static Glocrec rec = {{NULL}}; static Gloc init = {0, 0.5, 0.5}; ... Message ("Defina um ponto na tela ( ESC cancela )"); do { ginitloc (1, 1, &init, 3, &area, &rec); lc = greqloc (1, 1); if (lc.status == NONE) return; } while (lc.loc.transform != 1); /* trata as coordenadas utilizando a estrutura lc ( lc.loc.position ) */ } Entrada de um ponto da tela Computação Gráfica - Gattass

Problemas com solicitação Interfaces Gráficas 3/25/2017 Problemas com solicitação Entradas Simultâneas Computação Gráfica - Gattass

Modelo de Eventos Programa de Aplicação Sistema Gráfico Eventos Interfaces Gráficas 3/25/2017 Modelo de Eventos Processa Evento Tipo 1 Eventos Examina eventos, chama os módulos de processamento Processa Evento Tipo 2 Processa Evento Tipo 3 Programa de Aplicação Sistema Gráfico Computação Gráfica - Gattass

Eventos típicos (WIMP) Interfaces Gráficas 3/25/2017 Eventos típicos (WIMP) KeyPress KeyRelease ButtonPress ButtonRelease Motion LeaveNotify EnterNotify WindowExposure Resize Timer Idle Janela A Janela B Janela C Computação Gráfica - Gattass

Xlib/ X Window XEvent report; /* Select event types wanted */ Interfaces Gráficas 3/25/2017 XEvent report; /* Select event types wanted */ XSelectInput(display, win, ExposureMask | KeyPressMask | StructureNotifyMask); while (1) { /* get events, use first to display text and graphics */ XNextEvent(display, &report); switch (report.type) { case Expose: ... break; case ButtonPress: exit(1); case ConfigureNotify: default: } /* end switch */ } /* end while */ Xlib/ X Window Computação Gráfica - Gattass

Interfaces Gráficas 3/25/2017 static int nextevent(EventRecord* theEvent, int* x, int* y) { while (1) if (!WaitNextEvent (everyEvent,theEvent,0,0L)) theEvent->what=idleEvent; switch (theEvent->what) case idleEvent: doIdle( ); return 1; case keyDown: ... return 1 ; case mouseDown: ... return 1; default: return 1; } QuickDraw /Macintosh Computação Gráfica - Gattass

Janelas e tratadores de eventos Interfaces Gráficas 3/25/2017 Janelas e tratadores de eventos Aplicação Janela A Janela B Janela A.1 Janela A.2 Geralmente um tratador de eventos por aplicação Computação Gráfica - Gattass

Janelas e tratadores de eventos Interfaces Gráficas 3/25/2017 Janelas e tratadores de eventos Aplicação Janela A Janela B Janela A.1 Janela A.2 Tratador de eventos I Tratador de eventos II Computação Gráfica - Gattass

MS Windows int PASCAL WinMain (HANDLE hCopia, HANDLE hCopiaAnterior, Interfaces Gráficas 3/25/2017 int PASCAL WinMain (HANDLE hCopia, HANDLE hCopiaAnterior, LPSTR lpszParamCmd, int nCmdMostrar) { if (!hCopiaAnterior) { classejan.lpfnWndProc = ProcJan ; classejan.lpszClassName = szNomeAplic ; . . . RegisterClass (&classejan) ; } hjan = CreateWindow (szNomeAplic,... ) ; ShowWindow (hjan, nCmdMostrar) ; UpdateWindow (hjan) ; while (GetMessage (&msg, NULL, 0, 0)) TranslateMessage (&msg) ; DispatchMessage (&msg) ; return msg.wParam ; MS Windows long FAR PASCAL _export ProcJan ( HWND hjan, UINT mensagem, UINT wParam, LONG lParam) { . . . switch (mensagem) case WM_PAINT: hdc = BeginPaint (hjan, &ps) ; DrawText (hdc, "Ola', Windows!", ... ) ; EndPaint (hjan, &ps) ; return 0 ; case WM_DESTROY: PostQuitMessage (0) ; } ... Computação Gráfica - Gattass

Modelo de Call Backs Motif Visual Basic IUP ... Programa de Aplicação Interfaces Gráficas 3/25/2017 Modelo de Call Backs Processa Evento Tipo 1 Eventos Examina eventos, chama os módulos de processamento Processa Evento Tipo 2 Motif Visual Basic IUP ... Processa Evento Tipo 3 Programa de Aplicação Computação Gráfica - Gattass

Motif static void repaint(Widget widget, char* client, Interfaces Gráficas 3/25/2017 Motif static void repaint(Widget widget, char* client, XmDrawingAreaCallbackStruct *data) { ...} void main(int argc, char *argv[]) { static char *vec[] = {"canvas.uid"}; static MrmRegisterArg regvec[] = { {"a_repaint",(caddr_t)repaint} }; MrmInitialize (); // init UIL toplevel = XtAppInitialize(NULL, "hello", NULL, 0, &argc, argv, NULL, NULL, 0); // init Motif MrmOpenHierarchy (1, vec, NULL, &hier); // load arq MrmRegisterNames (regvec, regnum); // reg callbacks MrmFetchWidget (hier, "main", toplevel, &mainwidget, &class); XtManageChild(mainwidget); // manage main XtRealizeWidget(toplevel); // realize managed child XtAppMainLoop(XtWidgetToApplicationContext(toplevel)); } Computação Gráfica - Gattass

UIL/Motif module canvasuil procedure a_repaint(); Interfaces Gráficas 3/25/2017 module canvasuil procedure a_repaint(); object main : XmBulletinBoard { controls { XmDrawingArea canvas; }; }; object canvas : XmDrawingArea { arguments { XmNx = 15; XmNy = 60; }; callbacks { XmNexposeCallback = procedure a_repaint(); }; end module; UIL/Motif Computação Gráfica - Gattass

IUP/LED canvas.led static int repaint (Ihandle *self) { ... } Interfaces Gráficas 3/25/2017 static int repaint (Ihandle *self) { ... } void main (void) { IupOpen( ); IupLoad ("canvas.led"); IupSetFunction ("a_repaint", (Icallback)repaint); IupShow (IupGetHandle("main")); IupMainLoop( ); IupClose( ); } IUP/LED canvas.led main = dialog [TITLE=“IUP Canvas”] ( canvas (a_repaint) ) Computação Gráfica - Gattass

Visual Basic Interfaces Gráficas 3/25/2017 Computação Gráfica - Gattass

Interfaces Gráficas ToolBook 3/25/2017 Computação Gráfica - Gattass

Nível de abstração e escopo Interfaces Gráficas 3/25/2017 Nível de abstração e escopo ESCOPO MENOR O ToolBook à F A C I L D E Ç VisualBasic A R EDG/vix T S B IUP/lua Motif SDK A ESCOPO MAIOR Computação Gráfica - Gattass

Modelo do IUP/LED Aplicação = conjunto de diálogos Interfaces Gráficas Modelo do IUP/LED 3/25/2017 Aplicação = conjunto de diálogos Diálogos = hierarquia de elementos de interface Especificação de layout Concreto X Abstrato Atributos definem a aparência Computação Gráfica - Gattass

Elementos de Interface Interfaces Gráficas 3/25/2017 Elementos de Interface Primitivos Button, Canvas, Frame, Image, Item, Label, List, Submenu, Text, Toggle,Matrix,Multiline Agrupamento Dialog, Radio, Menu Composição Hbox, Vbox, Zbox Preenchimento Fill Computação Gráfica - Gattass

Composição do layout Texto Centralizado Horizontalmente Interfaces Gráficas Composição do layout 3/25/2017 DIALOG HBOX FILL LABEL Teste Texto Centralizado Horizontalmente Teste Texto Centralizado Horizontalmente Computação Gráfica - Gattass

Centralizando elementos Interfaces Gráficas 3/25/2017 Centralizando elementos DIALOG HBOX FILL LABEL VBOX Teste Texto Centralizado Computação Gráfica - Gattass

Layout abstrato Fill Canvas HBox Vbox the_menu = ... the_canvas = CANVAS[ BUTTON_CB = button_cb, MOTION_CB = motion_cb](repaint_cb) the_dialog = DIALOG[ MENU=the_menu ] ( VBOX( FILL(), HBOX( the_canvas, FILL() ), ) Fill Canvas HBox Vbox

Esqueleto da aplicação void carrega_leds(void) { IupLoad(“triang.led”); } int main(void) { IupOpen(); carrega_leds(); registra_callbacks(); mostra_dialogo(); IupMainLoop(); IupClose(); return 0; } void registra_callbacks(void) { IupSetFunction(“button_cb”, button_cb); ... IupSetFunction(“repaint_cb”, repaint_cb); } void mostra_dialogo(void) { IupShow( IupGetHandle(“the_dialog”) ); }

OpenGL/GLUT #include <glut.h> void main(int argc, char** argv) { /* Standard GLUT initialization */ glutInit(&argc,argv); glutInitDisplayMode (GLUT_SINGLE | GLUT_RGB); /* default, not needed */ glutInitWindowSize(500,500); /* 500 x 500 pixel window */ glutInitWindowPosition(0,0); /* place window top left on display */ glutCreateWindow("Sierpinski Gasket"); /* window title */ glutDisplayFunc(display); /* display callback invoked when window opened */ myinit(); /* set attributes */ glutMainLoop(); /* enter event loop */ }

Exemplo simples da GLUT void myinit(void) { /* attributes */ glClearColor(1.0, 1.0, 1.0, 1.0); /* white background */ /* set up viewing w/ 500 x 500 window with origin lower left */ glMatrixMode(GL_PROJECTION); glLoadIdentity(); gluOrtho2D(0.0, 500.0, 0.0, 500.0); glMatrixMode(GL_MODELVIEW); } void display(void) { glClear(GL_COLOR_BUFFER_BIT); /*clear the window */ glColor3f(1.0, 0.0, 0.0); /* draw in red */ glRectf(0.0,0.0, 500.0, 500.0); }