Francisco Sant'Anna Renato Cerqueira Luiz Fernando Gomes Soares

Documentos relacionados
2 Conceitos Básicos Nested Context Model

Tratamento de Documentos Multimídia/Hipermídia

ISSN Monografias em Ciência da Computação n 17/09. Nested Context Language 3.0

APLICAÇÕES MÓVEIS MASHUP: UTILIZAÇÃO DE SERVIÇOS WEB ATRAVÉS DE UM APLICATIVO MÓVEL DE MENSAGENS

Linguagem NCL. Linguagem NCL. Linguagem NCL. Modelo NCM.

Modelo Hipermídia. Documentos Hipermídia. Entidades Hipermídia. Componentes de um documento hipermídia

Linguagem NCL (Nested. Context Language) Programas de TV Digital Interativa. Modelo Hipermídia. Entidades Hipermídia

5 Implementação de Suporte à Geração Automática de Aplicações para o Ginga-NCL

Tutorial sobre a linguagem de programação NCL (Nested Context Language)

Desenvolvimento de Aplicações para TV Digital em Ginga-NCL

Programando em NCL Modelo Conceitual

Uma Extensão da Visão Estrutural do NCL Composer para Integração de Código Imperativo

Verificação de Códigos Lua Utilizando BMCLua

comum apresentando, em caráter informativo, os três padrões anteriormente mencionados.

4 Representação de Aplicações Hipermídia Declarativas Aplicações NCL

Desenvolvimento de Aplicações Declarativas para TV Digital Interativa

LUA. Deise Miranda Douglas Neves Luane Gomes Naara Soares

Sistemas Multimídia. ð NCL Nested Context Language. ð NCL Versão 1.0 [Antonacci 2000] ð NCL Versão 2.0 [Muchaluat-Saade 2003] ð NCL Versão 3.

Introdução ao middleware de TV Digital brasileiro

4 Middleware Ginga-NCL como Plugin para Navegadores Web

Sistemas Multimídia. ð Linguagens de autoria. Sistemas Multimídia. ð Principal vantagem do HTML é simplicidade => SUCESSO. Sistemas Multimídia

Construção de Sites Aula 6

4 Objetos de mídia tridimensionais em NCL

3 Linguagem NCL versão 2.0

TV Digital com Ginga. NCLua Módulo Canvas

Descrição. Requisitos. Ementa do curso. Duração: 42h divididas em 12 aulas

1.5 PROGRAMAÇÃO DE JOGOS EM AMBIENTE DE REA LIDADE AUMENTADA AMBIENTES INTEGRADOS DE DESENVOLVIMENTO DE JOGOS 19

As múltiplas possibilidades do middleware Ginga

Linguagens de Programação

Tecnologias para Web Design

Tratamento de Documentos Multimídia/Hipermídia

Java: Linguagem de programação (OOP) JavaScipt: Linguagem de scripts (OOP)

2 Linguagens para Descrição de Documentos Hipermídia

Universidade Federal de Pernambuco. TVision Ferramenta Gráfica para Desenvolvimento de Aplicações Para TV Digital no Formato GINGA-NCL

Tópicos. Visão geral do sistema Modelo de referência Algumas demonstrações Requisitos para um middleware Ginga Consideraçõesfinais

Arquitetura do Sistema Brasileiro. Novos Recursos. Aplicações. Middleware

Middleware Ginga. Jean Ribeiro Damasceno. Escola de Engenharia Universidade Federal Fluminense (UFF) RuaPassoda Pátria, 156 Niterói RJ Brasil

ao paradigma imperativo

Manual de Integração Via Gadget. Passo a passo para realizar a integração entre websites e a plataforma Virtual Target.

Aplicações Tv Digital

TV INTERATIVA SE FAZ COM GINGA

Estendendo NCL: objetos NCLua como exibidores para novos tipos de mídia

Linguagem de Programação e Compiladores

Linguagens de Programação

A Linguagem Lua Lua Puc-Rio

Guia de Bolso HTML e XHTML

Programação WEB I DOM (Document Object Manager)

Introdução ao Javascript. Parte 3 Prof. Victor Hugo Lopes

TV Interativa se faz com Ginga

DESENVOLVIMENTO DE UMA APLICAÇÃO PARA TV DIGITAL COM DIVULGAÇÃO DE INFORMAÇÕES SOBRE O TRANSPORTE PÚBLICO

PROGRAMAÇÃO PARA INTERNET RICA DHTML E O DOCUMENT OBJECT MODEL

3 Templates de Documentos

PROGRAMAÇÃO PARA INTERNET RICA FUNDAMENTOS DO JQUERY

Linguagens de Programação Princípios e Paradigmas

PROGRAMAÇÃO PARA INTERNET RICA DHTML E O DOCUMENT OBJECT MODEL

Introdução à linguagem JavaScript

HTML BÁSICO E TEMPLATE VIEW. Gabrielle Amorim Porto

Programação Cliente em. jquery. Fontes: Wendell S. Soares e vinteum.com

Passo a passo para CRIAR E EDITAR CONTEÚDO DOS CURSOS

Heron Vilela de Oliveira e Silva

º SEMESTRE

Tópicos Especiais em Linguagens de Programação

JAVASCRIPT Laboratórios de Informática João Paulo Barraca, André Zúquete, Diogo Gomes

Computação II MAB EPT/EP1. Interface Gráfica - Tkinter. Brunno Goldstein.

AJAX. Prof. Marcos Alexandruk

IEC Banco de Dados I Aula 11 Técnicas de Programação SQL

5 Extensões para Autoria no MPEG-4

5 Requisitos e Formatos de Documentos Multimídia

Desenvolvimento de Sistemas Web Prof. Leandro Roberto. Aula 18 JavaScript: Eventos MySQL PHP (insert, update e delete)

SCE Aula 3 Arquitetura de software na Web atual: processamento de lado cliente. Prof: Dra. Renata Pontin de Mattos Fortes

NCL: Uma Linguagem Declarativa para Especificação de Documentos Hipermídia na Web

PROGRAMAÇÃO PARA INTERNET RICA DHTML E O DOCUMENT OBJECT MODEL

Introdução à HTML Dinámico. O linguagem JavaScript.

Aula 22 Eventos. Desenvolvimento Web I Prof. Filipe Arantes Fernandes

Informática I. Aula 8. Aula 8-19/09/2007 1

Programação de Computadores I

ÍNDICE GERAL PARTE I PROGRAMAÇÃO PROCEDIMENTAL INTRODUÇÃO 3 2 VISÕES (I 39 OBJETIVOS... 39

Introdução Padrão Brasileiro de TV Digital. Desenvolvimento de Aplicações Interativas. Trabalhos em andamento

Volnys Bernal. Introdução à linguagem HTML. Introdução à linguagem HTML. Visão geral. Visão geral. Visão geral. Visão geral.

Aula 17 Introdução ao jquery

Tutorial sobre o uso da ferramenta de autoria A Ferramenta de Autoria - Célula

Introdução ao HTML5 Canvas

Introdução à linguagem HTML. Volnys Borges Bernal

Modularidade. Objetivos: Introduzir noções básicas de modularidade. Funções e procedimentos

Selector API. var lista = document.queryselectorall( seletor ); var elemento = document.queryselector( seletor );

Ferramenta para Desenvolvimentode Sistemas EmbarcadosUtilizando Linguagem de Alto Nível p.1/25

Introdução. Surge em 1995 (Brendan Eich, programador da Netscape) com o nome de Livescript

2 Conceitos Básicos. 2.1.Grafo de Cena

Os componentes HTML possuem a capacidade de configurar eventos

PROGRAMAÇÃO PARA INTERNET RICA FUNDAMENTOS DO JQUERY

LUIS GUSTAVO DE OLIVEIRA MAZZO. Dr. ALMIR ROGÉRIO CAMOLESI

4 Binding entre Charm++ e Lua

Compiladores Análise Semântica

Ederson Luiz da Silva Ciência da Computação. Algoritmos e Programação

Transcrição:

NCLua - Objetos Imperativos Lua na Linguagem Declarativa NCL Francisco Sant'Anna Renato Cerqueira Luiz Fernando Gomes Soares PUC-Rio Laboratório Telemídia

Introdução NCL Linguagem Declarativa Necessidade de uma linguagem de script auxiliar Objetivo: Integração não intrusiva Objetos NCLua

Requisitos 1. As linguagens devem ser alteradas o mínimo possível. 2. Deve ser mantida uma fronteira bem delineada entre os dois modos de programação. 3. A relação entre os dois ambientes deve ser ortogonal.

Trabalhos Relacionados XHTML + ECMAScript SMIL

XHTML + ECMAScript 1. Em XHTML não existe uma abstração única para objetos ECMAScript. 2. Código ECMAScript é escrito dentro de documentos e, até mesmo, atributos XHTML. 3. ECMAScript tem acesso e pode alterar a a rvore DOM do documento XHTML.

XHTML + ECMAScript Fronteira tênue: <input type= button onclick= myfunc(...) /> Efeitos colaterais: document.getelementbyid( myinput ).value =...

SMIL Linguagem com propósitos similares a NCL Versão 2.1 - não possui suporte a scripts Versão 3.0 Módulo State (expressões em XPath) Python previsto <audio src= background.mp3 expr= smil bitrate()>1000000 />

NCL Visão Geral Separação entre conteúdo e estrutura Foco no sincronismo entre mídias: elos Definição em separado sintaxe própria Independente do tipo de mídia <media id= myvideo src= video.mpg /> <media id= mynclua src= script.lua /> <link> <bind role= onbegin component= myvideo /> <bind role= start component= mynclua /> </link>

NCL Visão Geral Objetos se relacionam por suas âncoras Âncoras de conteúdo e propriedade <media id= myvideo src= video.mpg > <area id= personagem begin= 2s end= 10s /> </media> <media id= mynclua src= script.lua /> <property name= contador value= 0 /> </media> <link> <bind role= onbegin component= myvideo interface= personagem /> <bind role= set component= mynclua interface= contador > <bindparam var= 1 /> </bind> </link>

NCL Visão Geral Âncoras de conteúdo: onbegin, onend, onpause start, stop, pause Âncoras de propriedade: onbeginattribution, onendattribution set <link> <bind role= onbegin component= myvideo interface= personagem /> <bind role= set component= mynclua Máquina de Estados NCL </link> interface= contador />

NCLua Objetos Imperativos Objetos de mídia onde src= *.lua <media id=... src= myscript.lua > Semântica das âncoras definidas pelo programador Ciclo de vida controlado pelo documento NCL event-driven Bibliotecas extras: Módulo event Módulo canvas

NCLua Ciclo de Vida 1. O NCLua e os elos em que participa são identificados. 2. Em algum momento o NCLua é carregado, entrando no modo orientado a eventos. 3. O NCLua permanece vivo, recebendo os eventos, enquanto pelo menos uma de suas âncoras não estiver no estado sleeping. 4. Quando todas suas âncoras estiverem no estado sleeping, o NCLua é destruído.

NCLua módulo event Fundamental para a ponte NCL-Lua Sentido NCL Lua function handler (evt) codigo para tratar os eventos end event.register(handler) Sentido Lua NCL evt = {... } definicao do evento event.post(evt)

NCLua módulo event Classes de Eventos: ncl edit key tcp sms si user...

NCLua Classe 'ncl' Campos: type, action, area/property, value function handler (evt) if (evt.class == ncl ) and (evt.type == presentation ) and (evt.action == start ) then evt.action= stop event.post(evt) end end event.register(handler)

NCLua - Exemplo Corrida entre dois atletas. Cada um é representado por um NCLua. Ao chegar ao final, uma imagem correspondente é mostrada. Comunicação nos dois sentidos.

NCLua - Exemplo <body> <port id="entrypoint" component="go"/> <media id="go" src="go.png" descriptor="dsgo"/> <media id="but1" src="but1.png" descriptor="dsbut1"/> <media id="but2" src="but2.png" descriptor="dsbut2"/> <media id="runner1" src="runner.lua" descriptor="dsrunner1"> <area id="arrival"/> </media> <media id="runner2" src="runner.lua" descriptor="dsrunner2"> <area id="arrival"/> </media> <link xconnector="onselectionstopstart"> <bind role="onselection" component="go"/> <bind role="start" component="runner1"/> <bind role="start" component="runner2"/> <bind role="stop" component="go"/> </link> <link xconnector="onbeginstart"> <bind role="onbegin" component="runner1" interface="arrival"/> <bind role="start" component="but1"/> </link> <link xconnector="onbeginstart"> <bind role="onbegin" component="runner2" interface="arrival"/> <bind role="start" component="but2"/> </link> </body>

NCLua - Exemplo dimensoes da regiao NCLua local DX, DY = canvas:attrsize() objeto runner: guarda sua imagem, frame, posicao e tamanho local img = canvas:new('runner.png') local dx, dy = img:attrsize() local runner = { img=img, frame=0, x=0, y=(dy dy)/2, dx=dx/2, dy=dy } funcao de redesenho chamada a cada ciclo de animacao function redraw () fundo canvas:attrcolor('black') canvas:drawrect('fill', 0,0, DX,DY) end corredor local dx = runner.dx canvas:compose(runner.x, runner.y, runner.img, runner.frame*dx,0, dx,runner.dy) canvas:flush() event.register(handler) function handler (evt) a animacao comeca no *start* e eh realimentada por eventos da classe *user* if (evt.class == 'ncl' and evt.type == 'presentation' and evt.action == 'start') or (evt.class == 'user') then local now = event.uptime() movimenta o corredor caso tempo ja tenha passado if evt.time then local dt = now evt.time runner.x = runner.x + dt*math.random(1,7)/100 end muda o frame do corredor a cada 5 pixels runner.frame = math.floor(runner.x/5) % 2 caso nao tenha chegado a linha de chegada, continua dando ciclos a animacao if runner.x < DX runner.dx then event.post('in', { class='user', time=now }) else event.post('out', { class = 'ncl', type = 'presentation', area = 'arrival', end redraw() end end action ='start' })

Trabalhos Futuros Desenvolvimento de frameworks, game engines, etc., com utilidades diferentes sobre a API de NCLua. Desenvolvimento de aplicações nativas, mas portáveis entre plataformas de TV Digital. Desenvolvimento de novos componentes de mídia escritos puramente em Lua.

Conclusão Abordagem intrusiva evitada a todo custo NCLua usa a abstração <media> Comunicação através das tags <link> API de eventos é extensível Separação total de código Diversas aplicações desenvolvidas: Jogos 2D, Aplicações de Rede, Calculadora Alternativa viável aos XLets

FIM Perguntas? Obrigado! PUC-Rio Laboratório Telemídia