SlideShare a Scribd company logo
1 of 30
Download to read offline
1 de 30INTRODUÇÃ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
2º Impacto
2 de 30CARACTERÍSTICAS DO FAST LIGHT TOOLKIT
Características do FLTK
• Kit para desenvolvimento de interfaces gráficas em C++
• Disponível para X11 (Unix/LInux), Windows, MAC OS
• Possui uma ferramenta para construção de interfaces [FLUID]
• Suporta OpenGL®
e provê emulação a biblioteca GLUT
• Distribuído sob a licença LGPL
[Exemplo de alguns widgets pertencentes ao pacote fltk]
3 de 30FLTK – BIBLIOTECAS E CABEÇALHOS
Bibliotecas e Cabeçalhos
FLTK provê bibliotecas e cabeçalhos que contêm :
[Bibliotecas fltk compiladas para Microsoft Visual C++ e MinGW]
• Janelas e Classes de widget (botões, caixas, sliders, etc)
• Métodos básicos para criação, exibição e desenho
• Um conjunto de constantes para tipos, eventos, etc ...
• Um conjunto de funções auxiliares [trechos de programação não-visual]
• Nomenclatura associativa através do prefixo Fl_ ou fl_
4 de 30
Hierarquia de objetos do pacote FLTK
HIERARQUIA DAS CLASSES DO PACOTE FLTK
[Ilustração da hierarquia de classes do pacote fltk]
5 de 30MODELO 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
6 de 30
Passos Básicos
PASSOS BÁSICOS PARA CRIAÇÃO DE UMA APLICAÇÃO FLTK
Crie a janela principal do programa [Fl_Window window(W,H,LABEL)]
Crie os widgets necessários [ Ex: Fl_Button botao(X,Y,W,H,LABEL)]
Estabeleça as propriedades de posicionamento e comportamento de
cada widget da sua aplicação
Feche a árvore de associação dos widgets com a janela principal
Exiba a janela principal da sua aplicação [window.show(argc,argv)]
Inicie o laço de processamento de eventos [return Fl::run()]
[Passos básicos para criação de uma simples janela]
7 de 30
Exemplo de Janela em FLTK
#include <FL/Fl.H>
#include <FL/Fl_Box.H>
#include <FL/Fl_Window.H>
int main(int argc, char* argv[])
{
Fl_Window *window = new Fl_Window(300,180);
Fl_Box *box = new Fl_Box(20,40,260,100,“Alô, Mundo!");
box->box(FL_UP_BOX);
box->labelsize(36);
box->labelfont(FL_BOLD+FL_ITALIC);
box->labeltype(FL_SHADOW_LABEL);
window->end();
window->show(argc, argv);
return Fl::run();
}
O CLÁSSICO EXEMPLO HELLO WORLD !
8 de 30
Widgets do FLTK
TIPOS DE WIDGET DO PACOTE FLTK
[Estilos de caixa, borda e schema do FLTK]
9 de 30
Widgets do FLTK
TIPOS DE WIDGET DO PACOTE FLTK
[Valuators e Caixas de Mensagem]
10 de 30
Widgets do FLTK
TIPOS DE WIDGET DO PACOTE FLTK
[Charts, Buttons, Clock, ComboBoxes, Positioner]
11 de 30
Widgets do FLTK
TIPOS DE WIDGET DO PACOTE FLTK
[MenuBars, MenuButtons, SubMenus, TextBoxes, Tabs, InputChoices, Symbols]
12 de 30
Widgets do FLTK
TIPOS DE WIDGET DO PACOTE FLTK
[Colormap, Help_Dialog, Color_Chooser, Tile, Scroll ]
13 de 30
Widget Methods
MÉTODOS COMUNS A MAIORIA DOS WIDGETS DO FLTK
Cada classe de widget dentro do FLTK provê um conjunto
de métodos que manipula o estado/valor das propriedades
dos objetos derivados dessas classes.
– widget->position(x, y)
– widget->resize(x, y, width, height)
– widget->size(width, height)
– widget->color(color) (ex: FL_BLUE)
– widget->labelcolor(color)
– widget->when(event)
– widget->callback(static_function, data)
14 de 30
FLTK Callbacks
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
15 de 30
FLTK Callbacks - Exemplo
COMO RESPONDER A EVENTOS DENTRO DO FLTK – USO DE CALLBACKS - EXEMPLO
#include <cstdlib>
#include <FL/Fl.H>
#include <FL/Fl_ask.H>
#include <FL/Fl_Window.H>
void MyCallback(Fl_Widget* mywidget, void* userdata)
{
fl_message(“Saindo …"); exit(0);
}
int main(int argc, char* argv[])
{
Fl_Window *window = new Fl_Window(300,180);
window->callback(MyCallback,0);
window->show(argc, argv);
return Fl::run();
}
16 de 30
FLTK Callbacks e Classes
COMO RESPONDER A EVENTOS DENTRO DO FLTK – USO DE CALLBACKS E CLASSES
Defina um método estático em sua classe que aceite um
ponteiro para a mesma :
class Foo
{
void MyCallback(Fl_Widget* mywidget, void* userdata);
static void MyStaticCallback(Fl_Widget* w, void* userdata)
{
((Foo*)(w->parent()))->MyCallback(w,userdata);
};
};
Faça com que o widget receba um ponteiro para o método
estático :
widget->callback((Fl_Callback*)MyStaticCallback);
17 de 30
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()
18 de 30
FLUID
The Fast Light User
Interface Designer
FLUID
19 de 30FLUID - FLTK USER INTERFACE DESIGNER/FAST LIGHT USER INTERFACE DESIGNER
FLUID
O FLUID (sigla de FLTK User Interface Designer) é um editor visual de
interfaces gráficas, uma ferramenta integrante do pacote FLTK,
responsável pela geração automática do código fonte (na linguagem
C++) da interface gráfica construída.
20 de 30
FLUID – Arquivos Fonte [.fl ou .fld]
[Estrutura de trabalho da ferramenta FLUID]
FLUID – ARQUIVOS FONTE E FORMA DE TRABALHO
21 de 30
FLUID - Criando uma classe de Janela
FLUID – EXERCÍCIO – PASSO 1
Crie uma sub-classe da
classe Fl_Window que
possua um Fl_Group com
bordas alteradas e um botão
que faça a troca de rótulos
entre o Fl_Group e o botão.
O botão que receberá o
callback de troca de rótulos
deve ser do tipo Toggle ou
ser um LightButton.
22 de 30
FLUID - Criando uma classe de Janela
FLUID – EXERCÍCIO – PASSO 2
Crie a classe MyWindow [do tipo Fl_Window].
new→code→Widget Class
23 de 30
FLUID - Criando uma classe de Janela
FLUID – EXERCÍCIO – PASSO 3
Insira na janela vigente um Fl_Group e um botão da sua
escolha.
new→Group→Group e new→Buttons→[Um botão]
24 de 30
FLUID - Criando uma classe de Janela
FLUID – EXERCÍCIO – PASSO 4
Escreva uma função
callback para o botão.
Olhe atentamente o código
ao lado e não esqueça de
nenhum detalhe. Depois
de terminada essa etapa
visualize o código gerado
automaticamente em
Edit→Show Source Code
25 de 30
FLUID - Criando uma classe de Janela
FLUID – EXERCÍCIO – PASSO 5
Crie a função main.
new→code→Method/Function
26 de 30
FLUID - Criando uma classe de Janela
FLUID – EXERCÍCIO – PASSO 6
Escreva o código para criação e exibição da janela .
new→code→code
27 de 30
FLUID - Criando uma classe de Janela
FLUID – EXERCÍCIO – PASSO 7
Salve o arquivo de especificações do fluid.
File→Save
Gere o código C++ para o seu programa.
File→Write Code
Compile a aplicação e divirta-se !!!
28 de 30DÚVIDAS ?
Dúvidas ?
29 de 30PENSAMENTO DO DIA !
Provérbio chinês
“Pensar não é captar idéias, mas permitir que elas dancem diante
de nós ...”
30 de 30FIM !!!

More Related Content

What's hot

What's hot (9)

Java14
Java14Java14
Java14
 
[CLPE] Design patterns com c#
[CLPE] Design patterns com c#[CLPE] Design patterns com c#
[CLPE] Design patterns com c#
 
Apostila:Curso de java II
Apostila:Curso de java II  Apostila:Curso de java II
Apostila:Curso de java II
 
Android exemplo-calculadora
Android exemplo-calculadoraAndroid exemplo-calculadora
Android exemplo-calculadora
 
Java10
Java10Java10
Java10
 
Java orientação a objetos (associacao, composicao, agregacao)
Java   orientação a objetos (associacao, composicao, agregacao)Java   orientação a objetos (associacao, composicao, agregacao)
Java orientação a objetos (associacao, composicao, agregacao)
 
Introdução ao Java Swing (Interface)
Introdução ao Java Swing (Interface)Introdução ao Java Swing (Interface)
Introdução ao Java Swing (Interface)
 
Lab inf 1_ aula_3
Lab  inf 1_ aula_3Lab  inf 1_ aula_3
Lab inf 1_ aula_3
 
Java interface gráfica swing
Java   interface gráfica swingJava   interface gráfica swing
Java interface gráfica swing
 

Viewers also liked

TMS - Schedule of Presentations and Reports
TMS - Schedule of Presentations and ReportsTMS - Schedule of Presentations and Reports
TMS - Schedule of Presentations and ReportsMichel Alves
 
FLTK Summer Course - Part VII - Seventh Impact
FLTK Summer Course - Part VII  - Seventh ImpactFLTK Summer Course - Part VII  - Seventh Impact
FLTK Summer Course - Part VII - Seventh ImpactMichel Alves
 
EuroPython 2013 - FAST, DOCUMENTED AND RELIABLE JSON BASED WEBSERVICES WITH P...
EuroPython 2013 - FAST, DOCUMENTED AND RELIABLE JSON BASED WEBSERVICES WITH P...EuroPython 2013 - FAST, DOCUMENTED AND RELIABLE JSON BASED WEBSERVICES WITH P...
EuroPython 2013 - FAST, DOCUMENTED AND RELIABLE JSON BASED WEBSERVICES WITH P...Alessandro Molina
 
Git hooks For PHP Developers
Git hooks For PHP DevelopersGit hooks For PHP Developers
Git hooks For PHP DevelopersUmut IŞIK
 
Creating Custom Drupal Modules
Creating Custom Drupal ModulesCreating Custom Drupal Modules
Creating Custom Drupal Modulestanoshimi
 
FLTK Summer Course - Part II - Second Impact - Exercises
FLTK Summer Course - Part II - Second Impact - Exercises FLTK Summer Course - Part II - Second Impact - Exercises
FLTK Summer Course - Part II - Second Impact - Exercises Michel Alves
 
FLTK Summer Course - Part VI - Sixth Impact - Exercises
FLTK Summer Course - Part VI - Sixth Impact - ExercisesFLTK Summer Course - Part VI - Sixth Impact - Exercises
FLTK Summer Course - Part VI - Sixth Impact - ExercisesMichel Alves
 
Introduction to Git Commands and Concepts
Introduction to Git Commands and ConceptsIntroduction to Git Commands and Concepts
Introduction to Git Commands and ConceptsCarl Brown
 
Servicios web con Python
Servicios web con PythonServicios web con Python
Servicios web con PythonManuel Pérez
 
"Git Hooked!" Using Git hooks to improve your software development process
"Git Hooked!" Using Git hooks to improve your software development process"Git Hooked!" Using Git hooks to improve your software development process
"Git Hooked!" Using Git hooks to improve your software development processPolished Geek LLC
 
FLTK Summer Course - Part I - First Impact - Exercises
FLTK Summer Course - Part I - First Impact - ExercisesFLTK Summer Course - Part I - First Impact - Exercises
FLTK Summer Course - Part I - First Impact - ExercisesMichel Alves
 
Manipulating file in Python
Manipulating file in PythonManipulating file in Python
Manipulating file in Pythonshoukatali500
 
Code Refactoring - Live Coding Demo (JavaDay 2014)
Code Refactoring - Live Coding Demo (JavaDay 2014)Code Refactoring - Live Coding Demo (JavaDay 2014)
Code Refactoring - Live Coding Demo (JavaDay 2014)Peter Kofler
 
Blisstering drupal module development ppt v1.2
Blisstering drupal module development ppt v1.2Blisstering drupal module development ppt v1.2
Blisstering drupal module development ppt v1.2Anil Sagar
 
FLTK Summer Course - Part VIII - Eighth Impact
FLTK Summer Course - Part VIII - Eighth ImpactFLTK Summer Course - Part VIII - Eighth Impact
FLTK Summer Course - Part VIII - Eighth ImpactMichel Alves
 
Using Git on the Command Line
Using Git on the Command LineUsing Git on the Command Line
Using Git on the Command LineBrian Richards
 
Internal Anatomy of an Update
Internal Anatomy of an UpdateInternal Anatomy of an Update
Internal Anatomy of an UpdateMongoDB
 

Viewers also liked (20)

TMS - Schedule of Presentations and Reports
TMS - Schedule of Presentations and ReportsTMS - Schedule of Presentations and Reports
TMS - Schedule of Presentations and Reports
 
FLTK Summer Course - Part VII - Seventh Impact
FLTK Summer Course - Part VII  - Seventh ImpactFLTK Summer Course - Part VII  - Seventh Impact
FLTK Summer Course - Part VII - Seventh Impact
 
EuroPython 2013 - FAST, DOCUMENTED AND RELIABLE JSON BASED WEBSERVICES WITH P...
EuroPython 2013 - FAST, DOCUMENTED AND RELIABLE JSON BASED WEBSERVICES WITH P...EuroPython 2013 - FAST, DOCUMENTED AND RELIABLE JSON BASED WEBSERVICES WITH P...
EuroPython 2013 - FAST, DOCUMENTED AND RELIABLE JSON BASED WEBSERVICES WITH P...
 
Git hooks For PHP Developers
Git hooks For PHP DevelopersGit hooks For PHP Developers
Git hooks For PHP Developers
 
Creating Custom Drupal Modules
Creating Custom Drupal ModulesCreating Custom Drupal Modules
Creating Custom Drupal Modules
 
FLTK Summer Course - Part II - Second Impact - Exercises
FLTK Summer Course - Part II - Second Impact - Exercises FLTK Summer Course - Part II - Second Impact - Exercises
FLTK Summer Course - Part II - Second Impact - Exercises
 
Advanced Git
Advanced GitAdvanced Git
Advanced Git
 
FLTK Summer Course - Part VI - Sixth Impact - Exercises
FLTK Summer Course - Part VI - Sixth Impact - ExercisesFLTK Summer Course - Part VI - Sixth Impact - Exercises
FLTK Summer Course - Part VI - Sixth Impact - Exercises
 
Introduction to Git Commands and Concepts
Introduction to Git Commands and ConceptsIntroduction to Git Commands and Concepts
Introduction to Git Commands and Concepts
 
Servicios web con Python
Servicios web con PythonServicios web con Python
Servicios web con Python
 
"Git Hooked!" Using Git hooks to improve your software development process
"Git Hooked!" Using Git hooks to improve your software development process"Git Hooked!" Using Git hooks to improve your software development process
"Git Hooked!" Using Git hooks to improve your software development process
 
FLTK Summer Course - Part I - First Impact - Exercises
FLTK Summer Course - Part I - First Impact - ExercisesFLTK Summer Course - Part I - First Impact - Exercises
FLTK Summer Course - Part I - First Impact - Exercises
 
Manipulating file in Python
Manipulating file in PythonManipulating file in Python
Manipulating file in Python
 
Code Refactoring - Live Coding Demo (JavaDay 2014)
Code Refactoring - Live Coding Demo (JavaDay 2014)Code Refactoring - Live Coding Demo (JavaDay 2014)
Code Refactoring - Live Coding Demo (JavaDay 2014)
 
Blisstering drupal module development ppt v1.2
Blisstering drupal module development ppt v1.2Blisstering drupal module development ppt v1.2
Blisstering drupal module development ppt v1.2
 
FLTK Summer Course - Part VIII - Eighth Impact
FLTK Summer Course - Part VIII - Eighth ImpactFLTK Summer Course - Part VIII - Eighth Impact
FLTK Summer Course - Part VIII - Eighth Impact
 
Using Git on the Command Line
Using Git on the Command LineUsing Git on the Command Line
Using Git on the Command Line
 
Internal Anatomy of an Update
Internal Anatomy of an UpdateInternal Anatomy of an Update
Internal Anatomy of an Update
 
Python Fuse
Python FusePython Fuse
Python Fuse
 
Linux GIT commands
Linux GIT commandsLinux GIT commands
Linux GIT commands
 

Similar to FLTK Summer Course - Part II - Second Impact

Lógica de programação com visu alg
Lógica de programação com visu algLógica de programação com visu alg
Lógica de programação com visu algLeandro Santos
 
Excel Basic com VBA - Macros
Excel Basic com VBA - MacrosExcel Basic com VBA - Macros
Excel Basic com VBA - MacrosJoao Sousa
 
FLTK Summer Course - Part IV - Fourth Impact - Exercises
FLTK Summer Course - Part IV - Fourth Impact - ExercisesFLTK Summer Course - Part IV - Fourth Impact - Exercises
FLTK Summer Course - Part IV - Fourth Impact - ExercisesMichel Alves
 
Mini Curso PHP Twig - PHP Conference 2017
Mini Curso PHP Twig - PHP Conference 2017 Mini Curso PHP Twig - PHP Conference 2017
Mini Curso PHP Twig - PHP Conference 2017 Luis Gustavo Almeida
 
Java - Gestão de componentes curso profissional
Java - Gestão de componentes curso profissionalJava - Gestão de componentes curso profissional
Java - Gestão de componentes curso profissionala41172
 
FLTK Summer Course - Part I - First Impact
FLTK Summer Course - Part I - First ImpactFLTK Summer Course - Part I - First Impact
FLTK Summer Course - Part I - First ImpactMichel Alves
 
Webinar LVGL: Uma poderosa ferramenta GUI para projetos de Sistemas Embarcados
Webinar LVGL: Uma poderosa ferramenta GUI para projetos de Sistemas EmbarcadosWebinar LVGL: Uma poderosa ferramenta GUI para projetos de Sistemas Embarcados
Webinar LVGL: Uma poderosa ferramenta GUI para projetos de Sistemas EmbarcadosEmbarcados
 
Fluxograma de atividades
Fluxograma de atividadesFluxograma de atividades
Fluxograma de atividadesVanessa Barbosa
 
Treze ferramentas/frameworks para desenvolvimento Android
Treze ferramentas/frameworks para desenvolvimento AndroidTreze ferramentas/frameworks para desenvolvimento Android
Treze ferramentas/frameworks para desenvolvimento AndroidAdriano Rocha
 
Treze ferramentas/frameworks para desenvolvimento android
Treze ferramentas/frameworks para desenvolvimento androidTreze ferramentas/frameworks para desenvolvimento android
Treze ferramentas/frameworks para desenvolvimento androidRicardo Longa
 
Fluxograma de atividades
Fluxograma de atividadesFluxograma de atividades
Fluxograma de atividadesLauren Goulart
 
Apostila De Visualg
Apostila De VisualgApostila De Visualg
Apostila De Visualgecompo
 
Apostila De Visualg
Apostila De VisualgApostila De Visualg
Apostila De Visualgecompo
 

Similar to FLTK Summer Course - Part II - Second Impact (20)

Lógica de programação com visu alg
Lógica de programação com visu algLógica de programação com visu alg
Lógica de programação com visu alg
 
Visualg2_manual.pdf
Visualg2_manual.pdfVisualg2_manual.pdf
Visualg2_manual.pdf
 
Excel Basic com VBA - Macros
Excel Basic com VBA - MacrosExcel Basic com VBA - Macros
Excel Basic com VBA - Macros
 
FLTK Summer Course - Part IV - Fourth Impact - Exercises
FLTK Summer Course - Part IV - Fourth Impact - ExercisesFLTK Summer Course - Part IV - Fourth Impact - Exercises
FLTK Summer Course - Part IV - Fourth Impact - Exercises
 
Mini Curso PHP Twig - PHP Conference 2017
Mini Curso PHP Twig - PHP Conference 2017 Mini Curso PHP Twig - PHP Conference 2017
Mini Curso PHP Twig - PHP Conference 2017
 
Java - Gestão de componentes curso profissional
Java - Gestão de componentes curso profissionalJava - Gestão de componentes curso profissional
Java - Gestão de componentes curso profissional
 
FLTK Summer Course - Part I - First Impact
FLTK Summer Course - Part I - First ImpactFLTK Summer Course - Part I - First Impact
FLTK Summer Course - Part I - First Impact
 
Webinar LVGL: Uma poderosa ferramenta GUI para projetos de Sistemas Embarcados
Webinar LVGL: Uma poderosa ferramenta GUI para projetos de Sistemas EmbarcadosWebinar LVGL: Uma poderosa ferramenta GUI para projetos de Sistemas Embarcados
Webinar LVGL: Uma poderosa ferramenta GUI para projetos de Sistemas Embarcados
 
Linguagem c parte 2
Linguagem c parte 2Linguagem c parte 2
Linguagem c parte 2
 
Fluxograma de atividades
Fluxograma de atividadesFluxograma de atividades
Fluxograma de atividades
 
Apostila Visualg
Apostila VisualgApostila Visualg
Apostila Visualg
 
Treze ferramentas/frameworks para desenvolvimento Android
Treze ferramentas/frameworks para desenvolvimento AndroidTreze ferramentas/frameworks para desenvolvimento Android
Treze ferramentas/frameworks para desenvolvimento Android
 
Treze ferramentas/frameworks para desenvolvimento android
Treze ferramentas/frameworks para desenvolvimento androidTreze ferramentas/frameworks para desenvolvimento android
Treze ferramentas/frameworks para desenvolvimento android
 
Fluxograma de atividades
Fluxograma de atividadesFluxograma de atividades
Fluxograma de atividades
 
Simulador de processo logístico - Promodel
Simulador de processo logístico - PromodelSimulador de processo logístico - Promodel
Simulador de processo logístico - Promodel
 
Como Implementar Um Menu Ribbon em C#
Como Implementar Um Menu Ribbon em C#Como Implementar Um Menu Ribbon em C#
Como Implementar Um Menu Ribbon em C#
 
Rs logix 5000
Rs logix 5000Rs logix 5000
Rs logix 5000
 
Python Interface Gráfica Tkinter
Python Interface Gráfica TkinterPython Interface Gráfica Tkinter
Python Interface Gráfica Tkinter
 
Apostila De Visualg
Apostila De VisualgApostila De Visualg
Apostila De Visualg
 
Apostila De Visualg
Apostila De VisualgApostila De Visualg
Apostila De Visualg
 

More from 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
 
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
 
Capacity-Constrained Point Distributions :: Complementary Results
Capacity-Constrained Point Distributions :: Complementary ResultsCapacity-Constrained Point Distributions :: Complementary Results
Capacity-Constrained Point Distributions :: Complementary ResultsMichel Alves
 

More from 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
 
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
 
Capacity-Constrained Point Distributions :: Complementary Results
Capacity-Constrained Point Distributions :: Complementary ResultsCapacity-Constrained Point Distributions :: Complementary Results
Capacity-Constrained Point Distributions :: Complementary Results
 

Recently uploaded

Slide - SAEB. língua portuguesa e matemática
Slide - SAEB. língua portuguesa e matemáticaSlide - SAEB. língua portuguesa e matemática
Slide - SAEB. língua portuguesa e matemáticash5kpmr7w7
 
migração e trabalho 2º ano.pptx fenomenos
migração e trabalho 2º ano.pptx fenomenosmigração e trabalho 2º ano.pptx fenomenos
migração e trabalho 2º ano.pptx fenomenosLucianoPrado15
 
LISTA DE EXERCICIOS envolveto grandezas e medidas e notação cientifica 1 ANO ...
LISTA DE EXERCICIOS envolveto grandezas e medidas e notação cientifica 1 ANO ...LISTA DE EXERCICIOS envolveto grandezas e medidas e notação cientifica 1 ANO ...
LISTA DE EXERCICIOS envolveto grandezas e medidas e notação cientifica 1 ANO ...Francisco Márcio Bezerra Oliveira
 
LENDA DA MANDIOCA - leitura e interpretação
LENDA DA MANDIOCA - leitura e interpretaçãoLENDA DA MANDIOCA - leitura e interpretação
LENDA DA MANDIOCA - leitura e interpretaçãoLidianePaulaValezi
 
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
 
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
 
Responde ou passa na HISTÓRIA - REVOLUÇÃO INDUSTRIAL - 8º ANO.pptx
Responde ou passa na HISTÓRIA - REVOLUÇÃO INDUSTRIAL - 8º ANO.pptxResponde ou passa na HISTÓRIA - REVOLUÇÃO INDUSTRIAL - 8º ANO.pptx
Responde ou passa na HISTÓRIA - REVOLUÇÃO INDUSTRIAL - 8º ANO.pptxAntonioVieira539017
 
PROJETO DE EXTENSÃO I - TECNOLOGIA DA INFORMAÇÃO Relatório Final de Atividade...
PROJETO DE EXTENSÃO I - TECNOLOGIA DA INFORMAÇÃO Relatório Final de Atividade...PROJETO DE EXTENSÃO I - TECNOLOGIA DA INFORMAÇÃO Relatório Final de Atividade...
PROJETO DE EXTENSÃO I - TECNOLOGIA DA INFORMAÇÃO Relatório Final de Atividade...HELENO FAVACHO
 
Conflitos entre: ISRAEL E PALESTINA.pdf
Conflitos entre:  ISRAEL E PALESTINA.pdfConflitos entre:  ISRAEL E PALESTINA.pdf
Conflitos entre: ISRAEL E PALESTINA.pdfjacquescardosodias
 
Recomposiçao em matematica 1 ano 2024 - ESTUDANTE 1ª série.pdf
Recomposiçao em matematica 1 ano 2024 - ESTUDANTE 1ª série.pdfRecomposiçao em matematica 1 ano 2024 - ESTUDANTE 1ª série.pdf
Recomposiçao em matematica 1 ano 2024 - ESTUDANTE 1ª série.pdfFrancisco Márcio Bezerra Oliveira
 
PROJETO DE EXTENSÃO I - TERAPIAS INTEGRATIVAS E COMPLEMENTARES.pdf
PROJETO DE EXTENSÃO I - TERAPIAS INTEGRATIVAS E COMPLEMENTARES.pdfPROJETO DE EXTENSÃO I - TERAPIAS INTEGRATIVAS E COMPLEMENTARES.pdf
PROJETO DE EXTENSÃO I - TERAPIAS INTEGRATIVAS E COMPLEMENTARES.pdfHELENO FAVACHO
 
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
 
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
 
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
 
Os editoriais, reportagens e entrevistas.pptx
Os editoriais, reportagens e entrevistas.pptxOs editoriais, reportagens e entrevistas.pptx
Os editoriais, reportagens e entrevistas.pptxTailsonSantos1
 
Seminário Biologia e desenvolvimento da matrinxa.pptx
Seminário Biologia e desenvolvimento da matrinxa.pptxSeminário Biologia e desenvolvimento da matrinxa.pptx
Seminário Biologia e desenvolvimento da matrinxa.pptxReinaldoMuller1
 
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
 
Plano de aula Nova Escola períodos simples e composto parte 1.pptx
Plano de aula Nova Escola períodos simples e composto parte 1.pptxPlano de aula Nova Escola períodos simples e composto parte 1.pptx
Plano de aula Nova Escola períodos simples e composto parte 1.pptxPaulaYaraDaasPedro
 
PROJETO DE EXTENSÃO I - Radiologia Tecnologia
PROJETO DE EXTENSÃO I - Radiologia TecnologiaPROJETO DE EXTENSÃO I - Radiologia Tecnologia
PROJETO DE EXTENSÃO I - Radiologia TecnologiaHELENO FAVACHO
 

Recently uploaded (20)

Slide - SAEB. língua portuguesa e matemática
Slide - SAEB. língua portuguesa e matemáticaSlide - SAEB. língua portuguesa e matemática
Slide - SAEB. língua portuguesa e matemática
 
migração e trabalho 2º ano.pptx fenomenos
migração e trabalho 2º ano.pptx fenomenosmigração e trabalho 2º ano.pptx fenomenos
migração e trabalho 2º ano.pptx fenomenos
 
LISTA DE EXERCICIOS envolveto grandezas e medidas e notação cientifica 1 ANO ...
LISTA DE EXERCICIOS envolveto grandezas e medidas e notação cientifica 1 ANO ...LISTA DE EXERCICIOS envolveto grandezas e medidas e notação cientifica 1 ANO ...
LISTA DE EXERCICIOS envolveto grandezas e medidas e notação cientifica 1 ANO ...
 
LENDA DA MANDIOCA - leitura e interpretação
LENDA DA MANDIOCA - leitura e interpretaçãoLENDA DA MANDIOCA - leitura e interpretação
LENDA DA MANDIOCA - leitura e interpretação
 
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
 
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
 
Responde ou passa na HISTÓRIA - REVOLUÇÃO INDUSTRIAL - 8º ANO.pptx
Responde ou passa na HISTÓRIA - REVOLUÇÃO INDUSTRIAL - 8º ANO.pptxResponde ou passa na HISTÓRIA - REVOLUÇÃO INDUSTRIAL - 8º ANO.pptx
Responde ou passa na HISTÓRIA - REVOLUÇÃO INDUSTRIAL - 8º ANO.pptx
 
PROJETO DE EXTENSÃO I - TECNOLOGIA DA INFORMAÇÃO Relatório Final de Atividade...
PROJETO DE EXTENSÃO I - TECNOLOGIA DA INFORMAÇÃO Relatório Final de Atividade...PROJETO DE EXTENSÃO I - TECNOLOGIA DA INFORMAÇÃO Relatório Final de Atividade...
PROJETO DE EXTENSÃO I - TECNOLOGIA DA INFORMAÇÃO Relatório Final de Atividade...
 
Conflitos entre: ISRAEL E PALESTINA.pdf
Conflitos entre:  ISRAEL E PALESTINA.pdfConflitos entre:  ISRAEL E PALESTINA.pdf
Conflitos entre: ISRAEL E PALESTINA.pdf
 
Recomposiçao em matematica 1 ano 2024 - ESTUDANTE 1ª série.pdf
Recomposiçao em matematica 1 ano 2024 - ESTUDANTE 1ª série.pdfRecomposiçao em matematica 1 ano 2024 - ESTUDANTE 1ª série.pdf
Recomposiçao em matematica 1 ano 2024 - ESTUDANTE 1ª série.pdf
 
PROJETO DE EXTENSÃO I - TERAPIAS INTEGRATIVAS E COMPLEMENTARES.pdf
PROJETO DE EXTENSÃO I - TERAPIAS INTEGRATIVAS E COMPLEMENTARES.pdfPROJETO DE EXTENSÃO I - TERAPIAS INTEGRATIVAS E COMPLEMENTARES.pdf
PROJETO DE EXTENSÃO I - TERAPIAS INTEGRATIVAS E COMPLEMENTARES.pdf
 
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
 
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
 
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
 
Os editoriais, reportagens e entrevistas.pptx
Os editoriais, reportagens e entrevistas.pptxOs editoriais, reportagens e entrevistas.pptx
Os editoriais, reportagens e entrevistas.pptx
 
Seminário Biologia e desenvolvimento da matrinxa.pptx
Seminário Biologia e desenvolvimento da matrinxa.pptxSeminário Biologia e desenvolvimento da matrinxa.pptx
Seminário Biologia e desenvolvimento da matrinxa.pptx
 
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
 
Plano de aula Nova Escola períodos simples e composto parte 1.pptx
Plano de aula Nova Escola períodos simples e composto parte 1.pptxPlano de aula Nova Escola períodos simples e composto parte 1.pptx
Plano de aula Nova Escola períodos simples e composto parte 1.pptx
 
PROJETO DE EXTENSÃO I - Radiologia Tecnologia
PROJETO DE EXTENSÃO I - Radiologia TecnologiaPROJETO DE EXTENSÃO I - Radiologia Tecnologia
PROJETO DE EXTENSÃO I - Radiologia Tecnologia
 

FLTK Summer Course - Part II - Second Impact

  • 1. 1 de 30INTRODUÇÃ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 2º Impacto
  • 2. 2 de 30CARACTERÍSTICAS DO FAST LIGHT TOOLKIT Características do FLTK • Kit para desenvolvimento de interfaces gráficas em C++ • Disponível para X11 (Unix/LInux), Windows, MAC OS • Possui uma ferramenta para construção de interfaces [FLUID] • Suporta OpenGL® e provê emulação a biblioteca GLUT • Distribuído sob a licença LGPL [Exemplo de alguns widgets pertencentes ao pacote fltk]
  • 3. 3 de 30FLTK – BIBLIOTECAS E CABEÇALHOS Bibliotecas e Cabeçalhos FLTK provê bibliotecas e cabeçalhos que contêm : [Bibliotecas fltk compiladas para Microsoft Visual C++ e MinGW] • Janelas e Classes de widget (botões, caixas, sliders, etc) • Métodos básicos para criação, exibição e desenho • Um conjunto de constantes para tipos, eventos, etc ... • Um conjunto de funções auxiliares [trechos de programação não-visual] • Nomenclatura associativa através do prefixo Fl_ ou fl_
  • 4. 4 de 30 Hierarquia de objetos do pacote FLTK HIERARQUIA DAS CLASSES DO PACOTE FLTK [Ilustração da hierarquia de classes do pacote fltk]
  • 5. 5 de 30MODELO 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
  • 6. 6 de 30 Passos Básicos PASSOS BÁSICOS PARA CRIAÇÃO DE UMA APLICAÇÃO FLTK Crie a janela principal do programa [Fl_Window window(W,H,LABEL)] Crie os widgets necessários [ Ex: Fl_Button botao(X,Y,W,H,LABEL)] Estabeleça as propriedades de posicionamento e comportamento de cada widget da sua aplicação Feche a árvore de associação dos widgets com a janela principal Exiba a janela principal da sua aplicação [window.show(argc,argv)] Inicie o laço de processamento de eventos [return Fl::run()] [Passos básicos para criação de uma simples janela]
  • 7. 7 de 30 Exemplo de Janela em FLTK #include <FL/Fl.H> #include <FL/Fl_Box.H> #include <FL/Fl_Window.H> int main(int argc, char* argv[]) { Fl_Window *window = new Fl_Window(300,180); Fl_Box *box = new Fl_Box(20,40,260,100,“Alô, Mundo!"); box->box(FL_UP_BOX); box->labelsize(36); box->labelfont(FL_BOLD+FL_ITALIC); box->labeltype(FL_SHADOW_LABEL); window->end(); window->show(argc, argv); return Fl::run(); } O CLÁSSICO EXEMPLO HELLO WORLD !
  • 8. 8 de 30 Widgets do FLTK TIPOS DE WIDGET DO PACOTE FLTK [Estilos de caixa, borda e schema do FLTK]
  • 9. 9 de 30 Widgets do FLTK TIPOS DE WIDGET DO PACOTE FLTK [Valuators e Caixas de Mensagem]
  • 10. 10 de 30 Widgets do FLTK TIPOS DE WIDGET DO PACOTE FLTK [Charts, Buttons, Clock, ComboBoxes, Positioner]
  • 11. 11 de 30 Widgets do FLTK TIPOS DE WIDGET DO PACOTE FLTK [MenuBars, MenuButtons, SubMenus, TextBoxes, Tabs, InputChoices, Symbols]
  • 12. 12 de 30 Widgets do FLTK TIPOS DE WIDGET DO PACOTE FLTK [Colormap, Help_Dialog, Color_Chooser, Tile, Scroll ]
  • 13. 13 de 30 Widget Methods MÉTODOS COMUNS A MAIORIA DOS WIDGETS DO FLTK Cada classe de widget dentro do FLTK provê um conjunto de métodos que manipula o estado/valor das propriedades dos objetos derivados dessas classes. – widget->position(x, y) – widget->resize(x, y, width, height) – widget->size(width, height) – widget->color(color) (ex: FL_BLUE) – widget->labelcolor(color) – widget->when(event) – widget->callback(static_function, data)
  • 14. 14 de 30 FLTK Callbacks 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
  • 15. 15 de 30 FLTK Callbacks - Exemplo COMO RESPONDER A EVENTOS DENTRO DO FLTK – USO DE CALLBACKS - EXEMPLO #include <cstdlib> #include <FL/Fl.H> #include <FL/Fl_ask.H> #include <FL/Fl_Window.H> void MyCallback(Fl_Widget* mywidget, void* userdata) { fl_message(“Saindo …"); exit(0); } int main(int argc, char* argv[]) { Fl_Window *window = new Fl_Window(300,180); window->callback(MyCallback,0); window->show(argc, argv); return Fl::run(); }
  • 16. 16 de 30 FLTK Callbacks e Classes COMO RESPONDER A EVENTOS DENTRO DO FLTK – USO DE CALLBACKS E CLASSES Defina um método estático em sua classe que aceite um ponteiro para a mesma : class Foo { void MyCallback(Fl_Widget* mywidget, void* userdata); static void MyStaticCallback(Fl_Widget* w, void* userdata) { ((Foo*)(w->parent()))->MyCallback(w,userdata); }; }; Faça com que o widget receba um ponteiro para o método estático : widget->callback((Fl_Callback*)MyStaticCallback);
  • 17. 17 de 30 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()
  • 18. 18 de 30 FLUID The Fast Light User Interface Designer FLUID
  • 19. 19 de 30FLUID - FLTK USER INTERFACE DESIGNER/FAST LIGHT USER INTERFACE DESIGNER FLUID O FLUID (sigla de FLTK User Interface Designer) é um editor visual de interfaces gráficas, uma ferramenta integrante do pacote FLTK, responsável pela geração automática do código fonte (na linguagem C++) da interface gráfica construída.
  • 20. 20 de 30 FLUID – Arquivos Fonte [.fl ou .fld] [Estrutura de trabalho da ferramenta FLUID] FLUID – ARQUIVOS FONTE E FORMA DE TRABALHO
  • 21. 21 de 30 FLUID - Criando uma classe de Janela FLUID – EXERCÍCIO – PASSO 1 Crie uma sub-classe da classe Fl_Window que possua um Fl_Group com bordas alteradas e um botão que faça a troca de rótulos entre o Fl_Group e o botão. O botão que receberá o callback de troca de rótulos deve ser do tipo Toggle ou ser um LightButton.
  • 22. 22 de 30 FLUID - Criando uma classe de Janela FLUID – EXERCÍCIO – PASSO 2 Crie a classe MyWindow [do tipo Fl_Window]. new→code→Widget Class
  • 23. 23 de 30 FLUID - Criando uma classe de Janela FLUID – EXERCÍCIO – PASSO 3 Insira na janela vigente um Fl_Group e um botão da sua escolha. new→Group→Group e new→Buttons→[Um botão]
  • 24. 24 de 30 FLUID - Criando uma classe de Janela FLUID – EXERCÍCIO – PASSO 4 Escreva uma função callback para o botão. Olhe atentamente o código ao lado e não esqueça de nenhum detalhe. Depois de terminada essa etapa visualize o código gerado automaticamente em Edit→Show Source Code
  • 25. 25 de 30 FLUID - Criando uma classe de Janela FLUID – EXERCÍCIO – PASSO 5 Crie a função main. new→code→Method/Function
  • 26. 26 de 30 FLUID - Criando uma classe de Janela FLUID – EXERCÍCIO – PASSO 6 Escreva o código para criação e exibição da janela . new→code→code
  • 27. 27 de 30 FLUID - Criando uma classe de Janela FLUID – EXERCÍCIO – PASSO 7 Salve o arquivo de especificações do fluid. File→Save Gere o código C++ para o seu programa. File→Write Code Compile a aplicação e divirta-se !!!
  • 28. 28 de 30DÚVIDAS ? Dúvidas ?
  • 29. 29 de 30PENSAMENTO DO DIA ! Provérbio chinês “Pensar não é captar idéias, mas permitir que elas dancem diante de nós ...”
  • 30. 30 de 30FIM !!!