SlideShare uma empresa Scribd logo
1 de 15
Baixar para ler offline
1 de 15
INTRODUÇÃO AO FAST LIGHT TOOLKIT - FLTK
The Fast Light ToolKit
Curso de Verão – Instituto de Computação & CA Computação
Michel Alves dos Santos - UFAL
Bolsista do Centro de Pesquisa em Matemática Computacional
6º Impacto
2 de 15
MODELO DE PROCESSAMENTO DE EVENTOS
Processamento de Eventos
Aplicações FLTK são baseadas em um modelo simples de
processamento de eventos.
Ações de usuário (keystrokes, mouse clicks, etc) causam eventos que
são enviados a janela ativa
Idle, timer e file events são disparados internamente
Aplicações FLTK devem “escutar” ativamente eventos de
processamento oriundos da fila de eventos
Fl::check() - checa se existem eventos na fila
Fl::wait() - espera pelo aparecimento de um evento
Fl::run() - estabelece o processamento de um evento
3 de 15
Processamento de Eventos - Exemplo
UTILIZANDO O RELÓGIO DO SISTEMA PARA EXECUÇÃO DE FUNÇÕES PERIÓDICAS
#include <iostream>
#include <FL/Fl.H>
#include <FL/Fl_Window.H>
/*Declaração de namespace para uso das funções de iostream*/
using namespace std;
/*Contador para número de vezes que passou pelo evento ...*/
int Contador = 0;
void MyCallback(void*)
{
cout << "TICK : " << ++Contador << " " << endl;
Fl::repeat_timeout(1.0, MyCallback);
}
/**
* Função principal do programa.
*/
int main(int argc, char* argv[])
{
Fl_Window win(300,150,"Timer Event ...");
win.show();
Fl::add_timeout(1.0, MyCallback);
return(Fl::run());
}
[Manipulando o timeout de eventos]
4 de 15
FLTK Callbacks e Eventos
COMO RESPONDER A EVENTOS DENTRO DO FLTK – USO DE CALLBACKS
Callbacks ligam funções a eventos.
widget->when(event): determina para qual evento uma
função callback será executada. Exemplos:
• widget->when(FL_WHEN_ENTER_KEY)
• widget->when(FL_WHEN_RELEASE)
widget->callback(mycallback,data): estabelece que
função será chamada e que dados serão passados no
momento em que ocorrer um determinado evento.
• Funções callback devem ser estáticas [ static ]
• Funções callback fornecem um ponteiro Fl_Widget [que
aponta para o widget que foi modificado] e um ponteiro do tipo void
5 de 15
Eventos
TIPOS DE EVENTO DO FLTK
Eventos são passados como argumento para o método
virtual Fl_Widget::handle(int). Exemplos :
• Eventos de Mouse : FL_PUSH, FL_RELEASE, FL_MOVE, …
• Eventos de Foco : FL_FOCUS, FL_LEAVE, ...
• Eventos de Teclado : FL_KEYDOWN, FL_KEYUP, ...
Tipos de evento e conteúdo são avaliados via métodos
Fl::event_*(). Exemplos:
• Fl::event_button()
• Fl::event_x()
• Fl::event_key()
6 de 15
Mouse Events
EVENTOS TIPICAMENTE RELACIONADOS AO MOUSE
FL_PUSH: Quando o botão do mouse está pressionado e o
ponteiro continua sobre o widget;
• FL_DRAG: Quando o mouse é movido, sendo que um de seus
botões continua pressionado [ou em estado FL_PUSH];
• FL_RELEASE: Quando o botão do mouse é liberado;
• FL_MOVE: Quando o ponteiro do mouse é movido sem que
nenhum de seus botões esteja pressionado;
• FL_MOUSEWHEEL: Quando o usuário interage com o botão
“scroller” do mouse.
7 de 15
Focus Events
EVENTOS TIPICAMENTE RELACIONADOS AO GANHO OU PERDA DE FOCO
FL_ENTER: Ocorre quando o mouse é movido para o ponto
ou as coordenadas nas quais se encontra um determinado
widget;
FL_LEAVE: Ocorre quando o mouse é movido para fora de
um determinado widget;
• FL_FOCUS: Indica que um determinado widget possui o foco
de ações advindas do teclado, ou seja, nesse momento o
widget pode receber eventos do tipo FL_KEYDOWN, FL_KEYUP e
FL_UNFOCUS;
• FL_UNFOCUS: Ocorre quando um widget perde o foco para
outro ou quando a janela ativa perde o foco;
8 de 15
Keyboard Events
EVENTOS TIPICAMENTE RELACIONADOS AO TECLADO
• FL_KEYDOWN: Ocorre quando uma tecla é pressionada,
porém o evento se passa realmente quando a tecla está em
estado “DOWN” depois disso, se essa tecla continua
pressionada o evento FL_SHORTCUT é “constantemente
testado”;
• FL_KEYUP: Ocorre quando a tecla que anteriormente estava
em estado FL_KEYDOWN é liberada;
• FL_SHORTCUT: Tenta atender aos pedidos de execução de
atalhos via teclado. Se Fl::focus() retornar zero ou ignorar
eventos do tipo FL_KEYBOARD então o FLTK tentará enviar o
evento para todo o widget que poder, até que um deles retorne
algo diferente de zero;
9 de 15
Widget Events
EVENTOS TIPICAMENTE RELACIONADOS AOS COMPOENTES EM GERAL
FL_DEACTIVATE: Ocorre quando um widget ou o seu
“conteiner” é desativado. Widgets nessa situação não podem
receber o foco;
FL_ACTIVATE: Ocorre quando um widget ou o seu
“conteiner” é ativado;
• FL_HIDE: Ocorre quando um widget é “escondido”, ou seja,
quando não pode ser visualizado;
• FL_SHOW: Ocorre quando um widget está visível ou
novamente ganha visibilidade ou ainda quando sua janela-
mestre é restaurada [ganha novamente visibilidade].
10 de 15
Fl::event_*() methods
FUNÇÕES INLINE PARA TRATAMENTO DE EVENTOS
FLTK mantêm informações sobre eventos recentes em
estruturas e variáveis estáticas [static]. Informações que
são válidas dentro dos métodos handle(int) e callback().
Essas funções são todas inline, portanto pequenas e
muito rápidas:
Fl::event_button [FL_LEFT_MOUSE, FL_MIDDLE_MOUSE e FL_RIGHT_MOUSE]
Fl::event_clicks [verifica a existência de um “double click”]
Fl::event_is_click [verifica se ocorreu mesmo um click]
Fl::event_key [FL_Button + n, FL_Tab e as demais teclas ...]
Fl::event_x [retorna a posição x do mouse]
Fl::event_y [retorna a posição y do mouse]
entre outras ...
11 de 15
MANIPULANDO EVENTOS
Manipulando Eventos
• Mudar o estado de um widget;
• Executar Fl_Widget::redraw() se algum widget precisa ser reexibido;
• Executar Fl_Widget::damage(n) se algum widget precisa ser atualizado;
• Executar Fl_Widget::do_callback() se um callback pode ser gerado;
• Executar Fl_Widget::handle(int) para widgets filhos;
O método virtual int Fl_Widget::handle(int event) é chamado
para manipular cada evento passado a um widget. Como
consequência disso ele pode :
Eventos são identificados por argumentos inteiros
[FL_PUSH, FL_RELEASE, FL_MOVE, FL_FOCUS, FL_LEAVE] e tipos de
evento e conteúdo são avaliados via métodos Fl::event_*().
12 de 15
Exemplo de Manipulação de Eventos
MANIPULANDO EVENTOS - EXEMPLO
Este é um simples exemplo
de manipulação de eventos
através do método virtual int
Fl_Widget::handle(int event).
Podemos notar que os únicos
eventos tratados são : PUSH,
RELEASE e SHORTCUT. Os
demais eventos são
redirecionados ao método
manipulador original.
Nesse exemplo quando a tecla ’x’ é
pressionada o callback padrão
associado ao widget é executado.
13 de 15
DÚVIDAS ?
Dúvidas ?
14 de 15
PENSAMENTO DO DIA !
Henry W. Longfellow (1807-1882), poeta americano.
“Gasta-se menos tempo fazendo a coisa certa,
do que explicando por que a fizemos errado.”
15 de 15
FIM !!!

Mais conteúdo relacionado

Destaque

Goya Maristes la Immaculada
Goya Maristes la ImmaculadaGoya Maristes la Immaculada
Goya Maristes la ImmaculadaJordi Sabatés
 
Presentacion del video tutorialde como crear blogs
Presentacion del video tutorialde como crear blogsPresentacion del video tutorialde como crear blogs
Presentacion del video tutorialde como crear blogsManolo Garcìa
 
Presentacion del video tutorialde como crear blogs
Presentacion del video tutorialde como crear blogsPresentacion del video tutorialde como crear blogs
Presentacion del video tutorialde como crear blogsManolo Garcìa
 
Oficios
OficiosOficios
Oficiosxaaloo
 
El famòs truc de la moneda
El famòs truc de la monedaEl famòs truc de la moneda
El famòs truc de la monedacinqueb25
 
Llista provisional d'inscrits ve'12
Llista provisional d'inscrits ve'12Llista provisional d'inscrits ve'12
Llista provisional d'inscrits ve'12Anam
 
Programa al fomento de la energia renovable (FIDE)
Programa al fomento de la energia renovable (FIDE)Programa al fomento de la energia renovable (FIDE)
Programa al fomento de la energia renovable (FIDE)J MARIN Labs
 

Destaque (20)

.
..
.
 
Chayoscli
ChayoscliChayoscli
Chayoscli
 
A garza real
A garza realA garza real
A garza real
 
Extra d biolo
Extra d bioloExtra d biolo
Extra d biolo
 
Imagenes digitales
Imagenes digitalesImagenes digitales
Imagenes digitales
 
Goya Maristes la Immaculada
Goya Maristes la ImmaculadaGoya Maristes la Immaculada
Goya Maristes la Immaculada
 
Promoviatges smp
Promoviatges smpPromoviatges smp
Promoviatges smp
 
Seventhweek
SeventhweekSeventhweek
Seventhweek
 
Presentacion del video tutorialde como crear blogs
Presentacion del video tutorialde como crear blogsPresentacion del video tutorialde como crear blogs
Presentacion del video tutorialde como crear blogs
 
Presentation2
Presentation2Presentation2
Presentation2
 
Arachne FInal 2
Arachne FInal 2Arachne FInal 2
Arachne FInal 2
 
Presentacion del video tutorialde como crear blogs
Presentacion del video tutorialde como crear blogsPresentacion del video tutorialde como crear blogs
Presentacion del video tutorialde como crear blogs
 
Usuarios mas activos de las redes sociales
Usuarios mas activos de las redes socialesUsuarios mas activos de las redes sociales
Usuarios mas activos de las redes sociales
 
Oficios
OficiosOficios
Oficios
 
Livro p de pai
Livro p de paiLivro p de pai
Livro p de pai
 
Excel
ExcelExcel
Excel
 
El famòs truc de la moneda
El famòs truc de la monedaEl famòs truc de la moneda
El famòs truc de la moneda
 
Llista provisional d'inscrits ve'12
Llista provisional d'inscrits ve'12Llista provisional d'inscrits ve'12
Llista provisional d'inscrits ve'12
 
Programa al fomento de la energia renovable (FIDE)
Programa al fomento de la energia renovable (FIDE)Programa al fomento de la energia renovable (FIDE)
Programa al fomento de la energia renovable (FIDE)
 
Trabajo de tic
Trabajo de ticTrabajo de tic
Trabajo de tic
 

Mais de Michel Alves

Texture Synthesis: An Approach Based on GPU Use
Texture Synthesis: An Approach Based on GPU UseTexture Synthesis: An Approach Based on GPU Use
Texture Synthesis: An Approach Based on GPU UseMichel Alves
 
Intelligent Transfer of Thematic Harmonic Color Palettes
Intelligent Transfer of Thematic Harmonic Color PalettesIntelligent Transfer of Thematic Harmonic Color Palettes
Intelligent Transfer of Thematic Harmonic Color PalettesMichel Alves
 
A Framework for Harmonic Color Measures
A Framework for Harmonic Color MeasuresA Framework for Harmonic Color Measures
A Framework for Harmonic Color MeasuresMichel Alves
 
Effectiveness of Image Quality Assessment Indexes
Effectiveness of Image Quality Assessment IndexesEffectiveness of Image Quality Assessment Indexes
Effectiveness of Image Quality Assessment IndexesMichel Alves
 
Introduction to Kernel Functions
Introduction to Kernel FunctionsIntroduction to Kernel Functions
Introduction to Kernel FunctionsMichel Alves
 
About Perception and Hue Histograms in HSV Space
About Perception and Hue Histograms in HSV SpaceAbout Perception and Hue Histograms in HSV Space
About Perception and Hue Histograms in HSV SpaceMichel Alves
 
Color Harmonization - Results
Color Harmonization - ResultsColor Harmonization - Results
Color Harmonization - ResultsMichel Alves
 
Wave Simulation Using Perlin Noise
Wave Simulation Using Perlin NoiseWave Simulation Using Perlin Noise
Wave Simulation Using Perlin NoiseMichel Alves
 
Similarity Maps Using SSIM Index
Similarity Maps Using SSIM IndexSimilarity Maps Using SSIM Index
Similarity Maps Using SSIM IndexMichel Alves
 
Qualifying Exam - Image-Based Reconstruction With Color Harmonization
Qualifying Exam - Image-Based Reconstruction With Color HarmonizationQualifying Exam - Image-Based Reconstruction With Color Harmonization
Qualifying Exam - Image-Based Reconstruction With Color HarmonizationMichel Alves
 
TMS - Schedule of Presentations and Reports
TMS - Schedule of Presentations and ReportsTMS - Schedule of Presentations and Reports
TMS - Schedule of Presentations and ReportsMichel Alves
 
Month Presentations Schedule - March/2015 - LCG/UFRJ
Month Presentations Schedule - March/2015 - LCG/UFRJMonth Presentations Schedule - March/2015 - LCG/UFRJ
Month Presentations Schedule - March/2015 - LCG/UFRJMichel Alves
 
Color Palettes in R
Color Palettes in RColor Palettes in R
Color Palettes in RMichel Alves
 
Hue Wheel Prototype
Hue Wheel PrototypeHue Wheel Prototype
Hue Wheel PrototypeMichel Alves
 
Triangle Mesh Plot
Triangle Mesh PlotTriangle Mesh Plot
Triangle Mesh PlotMichel Alves
 
Capacity-Constrained Point Distributions :: Video Slides
Capacity-Constrained Point Distributions :: Video SlidesCapacity-Constrained Point Distributions :: Video Slides
Capacity-Constrained Point Distributions :: Video SlidesMichel Alves
 
Capacity-Constrained Point Distributions :: Density Function Catalog
Capacity-Constrained Point Distributions :: Density Function CatalogCapacity-Constrained Point Distributions :: Density Function Catalog
Capacity-Constrained Point Distributions :: Density Function CatalogMichel Alves
 

Mais de Michel Alves (20)

Texture Synthesis: An Approach Based on GPU Use
Texture Synthesis: An Approach Based on GPU UseTexture Synthesis: An Approach Based on GPU Use
Texture Synthesis: An Approach Based on GPU Use
 
Intelligent Transfer of Thematic Harmonic Color Palettes
Intelligent Transfer of Thematic Harmonic Color PalettesIntelligent Transfer of Thematic Harmonic Color Palettes
Intelligent Transfer of Thematic Harmonic Color Palettes
 
A Framework for Harmonic Color Measures
A Framework for Harmonic Color MeasuresA Framework for Harmonic Color Measures
A Framework for Harmonic Color Measures
 
Effectiveness of Image Quality Assessment Indexes
Effectiveness of Image Quality Assessment IndexesEffectiveness of Image Quality Assessment Indexes
Effectiveness of Image Quality Assessment Indexes
 
Introduction to Kernel Functions
Introduction to Kernel FunctionsIntroduction to Kernel Functions
Introduction to Kernel Functions
 
About Perception and Hue Histograms in HSV Space
About Perception and Hue Histograms in HSV SpaceAbout Perception and Hue Histograms in HSV Space
About Perception and Hue Histograms in HSV Space
 
Color Harmonization - Results
Color Harmonization - ResultsColor Harmonization - Results
Color Harmonization - Results
 
Wave Simulation Using Perlin Noise
Wave Simulation Using Perlin NoiseWave Simulation Using Perlin Noise
Wave Simulation Using Perlin Noise
 
Similarity Maps Using SSIM Index
Similarity Maps Using SSIM IndexSimilarity Maps Using SSIM Index
Similarity Maps Using SSIM Index
 
Qualifying Exam - Image-Based Reconstruction With Color Harmonization
Qualifying Exam - Image-Based Reconstruction With Color HarmonizationQualifying Exam - Image-Based Reconstruction With Color Harmonization
Qualifying Exam - Image-Based Reconstruction With Color Harmonization
 
TMS - Schedule of Presentations and Reports
TMS - Schedule of Presentations and ReportsTMS - Schedule of Presentations and Reports
TMS - Schedule of Presentations and Reports
 
Month Presentations Schedule - March/2015 - LCG/UFRJ
Month Presentations Schedule - March/2015 - LCG/UFRJMonth Presentations Schedule - March/2015 - LCG/UFRJ
Month Presentations Schedule - March/2015 - LCG/UFRJ
 
Color Palettes in R
Color Palettes in RColor Palettes in R
Color Palettes in R
 
Sigmoid Curve Erf
Sigmoid Curve ErfSigmoid Curve Erf
Sigmoid Curve Erf
 
Hue Wheel Prototype
Hue Wheel PrototypeHue Wheel Prototype
Hue Wheel Prototype
 
Cosine Curve
Cosine CurveCosine Curve
Cosine Curve
 
Triangle Mesh Plot
Triangle Mesh PlotTriangle Mesh Plot
Triangle Mesh Plot
 
Triangle Plot
Triangle PlotTriangle Plot
Triangle Plot
 
Capacity-Constrained Point Distributions :: Video Slides
Capacity-Constrained Point Distributions :: Video SlidesCapacity-Constrained Point Distributions :: Video Slides
Capacity-Constrained Point Distributions :: Video Slides
 
Capacity-Constrained Point Distributions :: Density Function Catalog
Capacity-Constrained Point Distributions :: Density Function CatalogCapacity-Constrained Point Distributions :: Density Function Catalog
Capacity-Constrained Point Distributions :: Density Function Catalog
 

Último

MESTRES DA CULTURA DE ASSARÉ Prof. Francisco Leite.pdf
MESTRES DA CULTURA DE ASSARÉ Prof. Francisco Leite.pdfMESTRES DA CULTURA DE ASSARÉ Prof. Francisco Leite.pdf
MESTRES DA CULTURA DE ASSARÉ Prof. Francisco Leite.pdfprofesfrancleite
 
INTERTEXTUALIDADE atividade muito boa para
INTERTEXTUALIDADE   atividade muito boa paraINTERTEXTUALIDADE   atividade muito boa para
INTERTEXTUALIDADE atividade muito boa paraAndreaPassosMascaren
 
AULÃO de Língua Portuguesa para o Saepe 2022
AULÃO de Língua Portuguesa para o Saepe 2022AULÃO de Língua Portuguesa para o Saepe 2022
AULÃO de Língua Portuguesa para o Saepe 2022LeandroSilva126216
 
19- Pedagogia (60 mapas mentais) - Amostra.pdf
19- Pedagogia (60 mapas mentais) - Amostra.pdf19- Pedagogia (60 mapas mentais) - Amostra.pdf
19- Pedagogia (60 mapas mentais) - Amostra.pdfmarlene54545
 
Pesquisa Ação René Barbier Livro acadêmico
Pesquisa Ação René Barbier Livro  acadêmicoPesquisa Ação René Barbier Livro  acadêmico
Pesquisa Ação René Barbier Livro acadêmicolourivalcaburite
 
P P P 2024 - *CIEJA Santana / Tucuruvi*
P P P 2024  - *CIEJA Santana / Tucuruvi*P P P 2024  - *CIEJA Santana / Tucuruvi*
P P P 2024 - *CIEJA Santana / Tucuruvi*Viviane Moreiras
 
aula de bioquímica bioquímica dos carboidratos.ppt
aula de bioquímica bioquímica dos carboidratos.pptaula de bioquímica bioquímica dos carboidratos.ppt
aula de bioquímica bioquímica dos carboidratos.pptssuser2b53fe
 
O estudo do controle motor nada mais é do que o estudo da natureza do movimen...
O estudo do controle motor nada mais é do que o estudo da natureza do movimen...O estudo do controle motor nada mais é do que o estudo da natureza do movimen...
O estudo do controle motor nada mais é do que o estudo da natureza do movimen...azulassessoria9
 
M0 Atendimento – Definição, Importância .pptx
M0 Atendimento – Definição, Importância .pptxM0 Atendimento – Definição, Importância .pptx
M0 Atendimento – Definição, Importância .pptxJustinoTeixeira1
 
Sistema de Bibliotecas UCS - Cantos do fim do século
Sistema de Bibliotecas UCS  - Cantos do fim do séculoSistema de Bibliotecas UCS  - Cantos do fim do século
Sistema de Bibliotecas UCS - Cantos do fim do séculoBiblioteca UCS
 
E a chuva ... (Livro pedagógico para ser usado na educação infantil e trabal...
E a chuva ...  (Livro pedagógico para ser usado na educação infantil e trabal...E a chuva ...  (Livro pedagógico para ser usado na educação infantil e trabal...
E a chuva ... (Livro pedagógico para ser usado na educação infantil e trabal...andreiavys
 
Camadas da terra -Litosfera conteúdo 6º ano
Camadas da terra -Litosfera  conteúdo 6º anoCamadas da terra -Litosfera  conteúdo 6º ano
Camadas da terra -Litosfera conteúdo 6º anoRachel Facundo
 
Apresentação | Símbolos e Valores da União Europeia
Apresentação | Símbolos e Valores da União EuropeiaApresentação | Símbolos e Valores da União Europeia
Apresentação | Símbolos e Valores da União EuropeiaCentro Jacques Delors
 
atividade-de-portugues-paronimos-e-homonimos-4º-e-5º-ano-respostas.pdf
atividade-de-portugues-paronimos-e-homonimos-4º-e-5º-ano-respostas.pdfatividade-de-portugues-paronimos-e-homonimos-4º-e-5º-ano-respostas.pdf
atividade-de-portugues-paronimos-e-homonimos-4º-e-5º-ano-respostas.pdfAutonoma
 
Slides Lição 6, Betel, Ordenança para uma vida de obediência e submissão.pptx
Slides Lição 6, Betel, Ordenança para uma vida de obediência e submissão.pptxSlides Lição 6, Betel, Ordenança para uma vida de obediência e submissão.pptx
Slides Lição 6, Betel, Ordenança para uma vida de obediência e submissão.pptxLuizHenriquedeAlmeid6
 
Educação Financeira - Cartão de crédito665933.pptx
Educação Financeira - Cartão de crédito665933.pptxEducação Financeira - Cartão de crédito665933.pptx
Educação Financeira - Cartão de crédito665933.pptxMarcosLemes28
 
Apresentação | Dia da Europa 2024 - Celebremos a União Europeia!
Apresentação | Dia da Europa 2024 - Celebremos a União Europeia!Apresentação | Dia da Europa 2024 - Celebremos a União Europeia!
Apresentação | Dia da Europa 2024 - Celebremos a União Europeia!Centro Jacques Delors
 
Polígonos, Diagonais de um Polígono, SOMA DOS ANGULOS INTERNOS DE UM POLÍGON...
Polígonos, Diagonais de um Polígono, SOMA DOS ANGULOS INTERNOS DE UM  POLÍGON...Polígonos, Diagonais de um Polígono, SOMA DOS ANGULOS INTERNOS DE UM  POLÍGON...
Polígonos, Diagonais de um Polígono, SOMA DOS ANGULOS INTERNOS DE UM POLÍGON...marcelafinkler
 
Caderno de exercícios Revisão para o ENEM (1).pdf
Caderno de exercícios Revisão para o ENEM (1).pdfCaderno de exercícios Revisão para o ENEM (1).pdf
Caderno de exercícios Revisão para o ENEM (1).pdfJuliana Barbosa
 
Sopa de letras | Dia da Europa 2024 (nível 2)
Sopa de letras | Dia da Europa 2024 (nível 2)Sopa de letras | Dia da Europa 2024 (nível 2)
Sopa de letras | Dia da Europa 2024 (nível 2)Centro Jacques Delors
 

Último (20)

MESTRES DA CULTURA DE ASSARÉ Prof. Francisco Leite.pdf
MESTRES DA CULTURA DE ASSARÉ Prof. Francisco Leite.pdfMESTRES DA CULTURA DE ASSARÉ Prof. Francisco Leite.pdf
MESTRES DA CULTURA DE ASSARÉ Prof. Francisco Leite.pdf
 
INTERTEXTUALIDADE atividade muito boa para
INTERTEXTUALIDADE   atividade muito boa paraINTERTEXTUALIDADE   atividade muito boa para
INTERTEXTUALIDADE atividade muito boa para
 
AULÃO de Língua Portuguesa para o Saepe 2022
AULÃO de Língua Portuguesa para o Saepe 2022AULÃO de Língua Portuguesa para o Saepe 2022
AULÃO de Língua Portuguesa para o Saepe 2022
 
19- Pedagogia (60 mapas mentais) - Amostra.pdf
19- Pedagogia (60 mapas mentais) - Amostra.pdf19- Pedagogia (60 mapas mentais) - Amostra.pdf
19- Pedagogia (60 mapas mentais) - Amostra.pdf
 
Pesquisa Ação René Barbier Livro acadêmico
Pesquisa Ação René Barbier Livro  acadêmicoPesquisa Ação René Barbier Livro  acadêmico
Pesquisa Ação René Barbier Livro acadêmico
 
P P P 2024 - *CIEJA Santana / Tucuruvi*
P P P 2024  - *CIEJA Santana / Tucuruvi*P P P 2024  - *CIEJA Santana / Tucuruvi*
P P P 2024 - *CIEJA Santana / Tucuruvi*
 
aula de bioquímica bioquímica dos carboidratos.ppt
aula de bioquímica bioquímica dos carboidratos.pptaula de bioquímica bioquímica dos carboidratos.ppt
aula de bioquímica bioquímica dos carboidratos.ppt
 
O estudo do controle motor nada mais é do que o estudo da natureza do movimen...
O estudo do controle motor nada mais é do que o estudo da natureza do movimen...O estudo do controle motor nada mais é do que o estudo da natureza do movimen...
O estudo do controle motor nada mais é do que o estudo da natureza do movimen...
 
M0 Atendimento – Definição, Importância .pptx
M0 Atendimento – Definição, Importância .pptxM0 Atendimento – Definição, Importância .pptx
M0 Atendimento – Definição, Importância .pptx
 
Sistema de Bibliotecas UCS - Cantos do fim do século
Sistema de Bibliotecas UCS  - Cantos do fim do séculoSistema de Bibliotecas UCS  - Cantos do fim do século
Sistema de Bibliotecas UCS - Cantos do fim do século
 
E a chuva ... (Livro pedagógico para ser usado na educação infantil e trabal...
E a chuva ...  (Livro pedagógico para ser usado na educação infantil e trabal...E a chuva ...  (Livro pedagógico para ser usado na educação infantil e trabal...
E a chuva ... (Livro pedagógico para ser usado na educação infantil e trabal...
 
Camadas da terra -Litosfera conteúdo 6º ano
Camadas da terra -Litosfera  conteúdo 6º anoCamadas da terra -Litosfera  conteúdo 6º ano
Camadas da terra -Litosfera conteúdo 6º ano
 
Apresentação | Símbolos e Valores da União Europeia
Apresentação | Símbolos e Valores da União EuropeiaApresentação | Símbolos e Valores da União Europeia
Apresentação | Símbolos e Valores da União Europeia
 
atividade-de-portugues-paronimos-e-homonimos-4º-e-5º-ano-respostas.pdf
atividade-de-portugues-paronimos-e-homonimos-4º-e-5º-ano-respostas.pdfatividade-de-portugues-paronimos-e-homonimos-4º-e-5º-ano-respostas.pdf
atividade-de-portugues-paronimos-e-homonimos-4º-e-5º-ano-respostas.pdf
 
Slides Lição 6, Betel, Ordenança para uma vida de obediência e submissão.pptx
Slides Lição 6, Betel, Ordenança para uma vida de obediência e submissão.pptxSlides Lição 6, Betel, Ordenança para uma vida de obediência e submissão.pptx
Slides Lição 6, Betel, Ordenança para uma vida de obediência e submissão.pptx
 
Educação Financeira - Cartão de crédito665933.pptx
Educação Financeira - Cartão de crédito665933.pptxEducação Financeira - Cartão de crédito665933.pptx
Educação Financeira - Cartão de crédito665933.pptx
 
Apresentação | Dia da Europa 2024 - Celebremos a União Europeia!
Apresentação | Dia da Europa 2024 - Celebremos a União Europeia!Apresentação | Dia da Europa 2024 - Celebremos a União Europeia!
Apresentação | Dia da Europa 2024 - Celebremos a União Europeia!
 
Polígonos, Diagonais de um Polígono, SOMA DOS ANGULOS INTERNOS DE UM POLÍGON...
Polígonos, Diagonais de um Polígono, SOMA DOS ANGULOS INTERNOS DE UM  POLÍGON...Polígonos, Diagonais de um Polígono, SOMA DOS ANGULOS INTERNOS DE UM  POLÍGON...
Polígonos, Diagonais de um Polígono, SOMA DOS ANGULOS INTERNOS DE UM POLÍGON...
 
Caderno de exercícios Revisão para o ENEM (1).pdf
Caderno de exercícios Revisão para o ENEM (1).pdfCaderno de exercícios Revisão para o ENEM (1).pdf
Caderno de exercícios Revisão para o ENEM (1).pdf
 
Sopa de letras | Dia da Europa 2024 (nível 2)
Sopa de letras | Dia da Europa 2024 (nível 2)Sopa de letras | Dia da Europa 2024 (nível 2)
Sopa de letras | Dia da Europa 2024 (nível 2)
 

FLTK Summer Course - Part VI - Sixth Impact

  • 1. 1 de 15 INTRODUÇÃO AO FAST LIGHT TOOLKIT - FLTK The Fast Light ToolKit Curso de Verão – Instituto de Computação & CA Computação Michel Alves dos Santos - UFAL Bolsista do Centro de Pesquisa em Matemática Computacional 6º Impacto
  • 2. 2 de 15 MODELO DE PROCESSAMENTO DE EVENTOS Processamento de Eventos Aplicações FLTK são baseadas em um modelo simples de processamento de eventos. Ações de usuário (keystrokes, mouse clicks, etc) causam eventos que são enviados a janela ativa Idle, timer e file events são disparados internamente Aplicações FLTK devem “escutar” ativamente eventos de processamento oriundos da fila de eventos Fl::check() - checa se existem eventos na fila Fl::wait() - espera pelo aparecimento de um evento Fl::run() - estabelece o processamento de um evento
  • 3. 3 de 15 Processamento de Eventos - Exemplo UTILIZANDO O RELÓGIO DO SISTEMA PARA EXECUÇÃO DE FUNÇÕES PERIÓDICAS #include <iostream> #include <FL/Fl.H> #include <FL/Fl_Window.H> /*Declaração de namespace para uso das funções de iostream*/ using namespace std; /*Contador para número de vezes que passou pelo evento ...*/ int Contador = 0; void MyCallback(void*) { cout << "TICK : " << ++Contador << " " << endl; Fl::repeat_timeout(1.0, MyCallback); } /** * Função principal do programa. */ int main(int argc, char* argv[]) { Fl_Window win(300,150,"Timer Event ..."); win.show(); Fl::add_timeout(1.0, MyCallback); return(Fl::run()); } [Manipulando o timeout de eventos]
  • 4. 4 de 15 FLTK Callbacks e Eventos COMO RESPONDER A EVENTOS DENTRO DO FLTK – USO DE CALLBACKS Callbacks ligam funções a eventos. widget->when(event): determina para qual evento uma função callback será executada. Exemplos: • widget->when(FL_WHEN_ENTER_KEY) • widget->when(FL_WHEN_RELEASE) widget->callback(mycallback,data): estabelece que função será chamada e que dados serão passados no momento em que ocorrer um determinado evento. • Funções callback devem ser estáticas [ static ] • Funções callback fornecem um ponteiro Fl_Widget [que aponta para o widget que foi modificado] e um ponteiro do tipo void
  • 5. 5 de 15 Eventos TIPOS DE EVENTO DO FLTK Eventos são passados como argumento para o método virtual Fl_Widget::handle(int). Exemplos : • Eventos de Mouse : FL_PUSH, FL_RELEASE, FL_MOVE, … • Eventos de Foco : FL_FOCUS, FL_LEAVE, ... • Eventos de Teclado : FL_KEYDOWN, FL_KEYUP, ... Tipos de evento e conteúdo são avaliados via métodos Fl::event_*(). Exemplos: • Fl::event_button() • Fl::event_x() • Fl::event_key()
  • 6. 6 de 15 Mouse Events EVENTOS TIPICAMENTE RELACIONADOS AO MOUSE FL_PUSH: Quando o botão do mouse está pressionado e o ponteiro continua sobre o widget; • FL_DRAG: Quando o mouse é movido, sendo que um de seus botões continua pressionado [ou em estado FL_PUSH]; • FL_RELEASE: Quando o botão do mouse é liberado; • FL_MOVE: Quando o ponteiro do mouse é movido sem que nenhum de seus botões esteja pressionado; • FL_MOUSEWHEEL: Quando o usuário interage com o botão “scroller” do mouse.
  • 7. 7 de 15 Focus Events EVENTOS TIPICAMENTE RELACIONADOS AO GANHO OU PERDA DE FOCO FL_ENTER: Ocorre quando o mouse é movido para o ponto ou as coordenadas nas quais se encontra um determinado widget; FL_LEAVE: Ocorre quando o mouse é movido para fora de um determinado widget; • FL_FOCUS: Indica que um determinado widget possui o foco de ações advindas do teclado, ou seja, nesse momento o widget pode receber eventos do tipo FL_KEYDOWN, FL_KEYUP e FL_UNFOCUS; • FL_UNFOCUS: Ocorre quando um widget perde o foco para outro ou quando a janela ativa perde o foco;
  • 8. 8 de 15 Keyboard Events EVENTOS TIPICAMENTE RELACIONADOS AO TECLADO • FL_KEYDOWN: Ocorre quando uma tecla é pressionada, porém o evento se passa realmente quando a tecla está em estado “DOWN” depois disso, se essa tecla continua pressionada o evento FL_SHORTCUT é “constantemente testado”; • FL_KEYUP: Ocorre quando a tecla que anteriormente estava em estado FL_KEYDOWN é liberada; • FL_SHORTCUT: Tenta atender aos pedidos de execução de atalhos via teclado. Se Fl::focus() retornar zero ou ignorar eventos do tipo FL_KEYBOARD então o FLTK tentará enviar o evento para todo o widget que poder, até que um deles retorne algo diferente de zero;
  • 9. 9 de 15 Widget Events EVENTOS TIPICAMENTE RELACIONADOS AOS COMPOENTES EM GERAL FL_DEACTIVATE: Ocorre quando um widget ou o seu “conteiner” é desativado. Widgets nessa situação não podem receber o foco; FL_ACTIVATE: Ocorre quando um widget ou o seu “conteiner” é ativado; • FL_HIDE: Ocorre quando um widget é “escondido”, ou seja, quando não pode ser visualizado; • FL_SHOW: Ocorre quando um widget está visível ou novamente ganha visibilidade ou ainda quando sua janela- mestre é restaurada [ganha novamente visibilidade].
  • 10. 10 de 15 Fl::event_*() methods FUNÇÕES INLINE PARA TRATAMENTO DE EVENTOS FLTK mantêm informações sobre eventos recentes em estruturas e variáveis estáticas [static]. Informações que são válidas dentro dos métodos handle(int) e callback(). Essas funções são todas inline, portanto pequenas e muito rápidas: Fl::event_button [FL_LEFT_MOUSE, FL_MIDDLE_MOUSE e FL_RIGHT_MOUSE] Fl::event_clicks [verifica a existência de um “double click”] Fl::event_is_click [verifica se ocorreu mesmo um click] Fl::event_key [FL_Button + n, FL_Tab e as demais teclas ...] Fl::event_x [retorna a posição x do mouse] Fl::event_y [retorna a posição y do mouse] entre outras ...
  • 11. 11 de 15 MANIPULANDO EVENTOS Manipulando Eventos • Mudar o estado de um widget; • Executar Fl_Widget::redraw() se algum widget precisa ser reexibido; • Executar Fl_Widget::damage(n) se algum widget precisa ser atualizado; • Executar Fl_Widget::do_callback() se um callback pode ser gerado; • Executar Fl_Widget::handle(int) para widgets filhos; O método virtual int Fl_Widget::handle(int event) é chamado para manipular cada evento passado a um widget. Como consequência disso ele pode : Eventos são identificados por argumentos inteiros [FL_PUSH, FL_RELEASE, FL_MOVE, FL_FOCUS, FL_LEAVE] e tipos de evento e conteúdo são avaliados via métodos Fl::event_*().
  • 12. 12 de 15 Exemplo de Manipulação de Eventos MANIPULANDO EVENTOS - EXEMPLO Este é um simples exemplo de manipulação de eventos através do método virtual int Fl_Widget::handle(int event). Podemos notar que os únicos eventos tratados são : PUSH, RELEASE e SHORTCUT. Os demais eventos são redirecionados ao método manipulador original. Nesse exemplo quando a tecla ’x’ é pressionada o callback padrão associado ao widget é executado.
  • 13. 13 de 15 DÚVIDAS ? Dúvidas ?
  • 14. 14 de 15 PENSAMENTO DO DIA ! Henry W. Longfellow (1807-1882), poeta americano. “Gasta-se menos tempo fazendo a coisa certa, do que explicando por que a fizemos errado.”