;(function() { window.createMeasureObserver = (measureName) => { var markPrefix = `_uol-measure-${measureName}-${new Date().getTime()}`; performance.mark(`${markPrefix}-start`); return { end: function() { performance.mark(`${markPrefix}-end`); performance.measure(`uol-measure-${measureName}`, `${markPrefix}-start`, `${markPrefix}-end`); performance.clearMarks(`${markPrefix}-start`); performance.clearMarks(`${markPrefix}-end`); } } }; /** * Gerenciador de eventos */ window.gevent = { stack: [], RUN_ONCE: true, on: function(name, callback, once) { this.stack.push([name, callback, !!once]); }, emit: function(name, args) { for (var i = this.stack.length, item; i--;) { item = this.stack[i]; if (item[0] === name) { item[1](args); if (item[2]) { this.stack.splice(i, 1); } } } } }; var runningSearch = false; var hadAnEvent = true; var elementsToWatch = window.elementsToWatch = new Map(); var innerHeight = window.innerHeight; // timestamp da última rodada do requestAnimationFrame // É usado para limitar a procura por elementos visíveis. var lastAnimationTS = 0; // verifica se elemento está no viewport do usuário var isElementInViewport = function(el) { var rect = el.getBoundingClientRect(); var clientHeight = window.innerHeight || document.documentElement.clientHeight; // renderizando antes, evitando troca de conteúdo visível no chartbeat-related-content if(el.className.includes('related-content-front')) return true; // garante que usa ao mínimo 280px de margem para fazer o lazyload var margin = clientHeight + Math.max(280, clientHeight * 0.2); // se a base do componente está acima da altura da tela do usuário, está oculto if(rect.bottom < 0 && rect.bottom > margin * -1) { return false; } // se o topo do elemento está abaixo da altura da tela do usuário, está oculto if(rect.top > margin) { return false; } // se a posição do topo é negativa, verifica se a altura dele ainda // compensa o que já foi scrollado if(rect.top < 0 && rect.height + rect.top < 0) { return false; } return true; }; var asynxNextFreeTime = () => { return new Promise((resolve) => { if(window.requestIdleCallback) { window.requestIdleCallback(resolve, { timeout: 5000, }); } else { window.requestAnimationFrame(resolve); } }); }; var asyncValidateIfElIsInViewPort = function(promise, el) { return promise.then(() => { if(el) { if(isElementInViewport(el) == true) { const cb = elementsToWatch.get(el); // remove da lista para não ser disparado novamente elementsToWatch.delete(el); cb(); } } }).then(asynxNextFreeTime); }; // inicia o fluxo de procura de elementos procurados var look = function() { if(window.requestIdleCallback) { window.requestIdleCallback(findByVisibleElements, { timeout: 5000, }); } else { window.requestAnimationFrame(findByVisibleElements); } }; var findByVisibleElements = function(ts) { var elapsedSinceLast = ts - lastAnimationTS; // se não teve nenhum evento que possa alterar a página if(hadAnEvent == false) { return look(); } if(elementsToWatch.size == 0) { return look(); } if(runningSearch == true) { return look(); } // procura por elementos visíveis apenas 5x/seg if(elapsedSinceLast < 1000/5) { return look(); } // atualiza o último ts lastAnimationTS = ts; // reseta status de scroll para não entrar novamente aqui hadAnEvent = false; // indica que está rodando a procura por elementos no viewport runningSearch = true; const done = Array.from(elementsToWatch.keys()).reduce(asyncValidateIfElIsInViewPort, Promise.resolve()); // obtém todos os elementos que podem ter view contabilizados //elementsToWatch.forEach(function(cb, el) { // if(isElementInViewport(el) == true) { // // remove da lista para não ser disparado novamente // elementsToWatch.delete(el); // cb(el); // } //}); done.then(function() { runningSearch = false; }); // reinicia o fluxo de procura look(); }; /** * Quando o elemento `el` entrar no viewport (-20%), cb será disparado. */ window.lazyload = function(el, cb) { if(el.nodeType != Node.ELEMENT_NODE) { throw new Error("element parameter should be a Element Node"); } if(typeof cb !== 'function') { throw new Error("callback parameter should be a Function"); } elementsToWatch.set(el, cb); } var setEvent = function() { hadAnEvent = true; }; window.addEventListener('scroll', setEvent, { capture: true, ive: true }); window.addEventListener('click', setEvent, { ive: true }); window.addEventListener('resize', setEvent, { ive: true }); window.addEventListener('load', setEvent, { once: true, ive: true }); window.addEventListener('DOMContentLoaded', setEvent, { once: true, ive: true }); window.gevent.on('allJSLoadedAndCreated', setEvent, window.gevent.RUN_ONCE); // inicia a validação look(); })();
  • AssineUOL
Topo

William Petersen Ator norte-americano

21 de fevereiro de 1953, Evanston, Illinois (EUA)

Da Página 3 Pedagogia & Comunicação

13/02/2009 14h00

William Louis Petersen, o famoso Gil Grissom, da série "CSI: Crime Scene Investigation", estudou na Universidade de Idaho, EUA, graças a uma bolsa de estudos para jogar futebol americano. Tentando melhorar suas médias, ou a fazer um curso de interpretação teatral, sem imaginar que essa decisão mudaria completamente a sua vida.

Em 1974, deixou a universidade, junto com sua noiva, Joanne Brady, e acompanhou um professor de teatro à Espanha, onde desenvolveu suas habilidades como ator shakespeariano. aram um ano na Universidade de Oñate (Guipúzcoa), onde tiveram uma filha. Ali, Petersen também conheceria Íñigo Barona, que se tornaria seu amigo e conselheiro.

William Petersen regressou, então, a Idaho, com a esperança de se tornar ator profissional, mas teve pouca sorte. Mudou-se para Chicago, a fim de viver com parentes, e nessa cidade iniciou sua carreira, atuando na Companhia de Teatro Steppenwolf, além de ser um dos fundadores do Remains Theater Ensamble, ao lado de Gary Cole e Ted Levine.

Sua estréia no cinema foi com um pequeno papel no filme "Thief", em 1981. Anos depois, em 1986, alcançaria um de seus principais êxitos com "Manhunter". William Petersen recusaria um papel em "Platoon", de Oliver Stone, apenas pelo fato de que as filmagens o manteriam longe de sua família, nas Filipinas.

Em 2000 filmou "The Contender", onde representou o papel do governador Jack Hathway, um político sem escrúpulos. Desde esse ano, Petersen protagoniza a série "CSI: Crime Scene Investigation", atuando como Gil Grissom. Aparentemente por motivos de saúde, Petersen foi substituído - a partir do nono episódio da 10ª temporada - por Laurence Fishburne. Mas continuará a trabalhar na série, como um dos produtores.

Divorciado, Petersen casou-se, em 2003, com Gina Cirone.
 

Folha de S. Paulo; El País