;(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

Roberto Sadovski

OPINIÃO

Texto em que o autor apresenta e defende suas ideias e opiniões, a partir da interpretação de fatos e dados.

Benedict Cumberbatch vive seu melhor momento no sublime 'Ataque dos Cães'

Colunista do UOL

02/12/2021 12h00

Receba os novos posts desta coluna no seu e-mail

Email inválido

Phil Burbank cheira muito mal. Quando seu irmão, George, vai receber convidados importantes em um jantar, seu único pedido é para que ele tome um banho. Não é simplesmente falta de higiene básica: é também sua armadura. Phil quer manter as pessoas à distância, mas precisa desesperadamente ser notado.

Assim como em seu protagonista, existe muito mais do que a superfície sugere em "Ataque dos Cães", western moderno que a diretora Jane Campion transformou em um sufocante estudo de personagem. Desde que "O Piano" a colocou no mapa em 1993, a cineasta neozelandesa conduzia uma carreira sólida e discreta, pontuada por arroubos de brilhantismo - como na série "Top of the Lake".

Ao adaptar este romance lançado em 1967 por Thomas Savage, contudo, Campion demonstra não só sua absurda habilidade em traduzir em imagens uma obra difícil, como também sensibilidade para aparar suas arestas, concentrando-se no coração da história: um homem que canaliza sua sexualidade reprimida em agressividade, com efeitos devastadores para todos que o cercam.

powerdog phil - Netflix - Netflix
Phil (Benedict Cumberbatch) ensina a Peter (Kodi Smit-Mhee) a vida como ela é
Imagem: Netflix

O maior aliado da diretora na empreitada é Benedict Cumberbatch. No papel de Phil Burbank, o ator inglês atinge o que é seu melhor momento como intérprete. Assumindo um personagem complexo, que se comunica com uma combinação de silêncio, arrogância e explosões de fúria, ele desenha um homem refém de desejos que ele sequer consegue compreender ou externar. É um trabalho de construção de personagem tão doloroso quanto fascinante.

Ambientado no estado de Montana em 1925, "Ataque dos Cães" acompanha dois fazendeiros abastados, George e Phil Burbank. O primeiro (papel de Jesse Plemons) não é versado na rotina de cuidar do gado montado em um cavalo, preferindo abertamente os confortos da vida moderna. O segundo, por sua vez, é irado pelos caubóis que trabalham no rancho.

Capaz de castrar centenas de bezerros com as próprias mãos, aparentemente refratário à dor, Phil se apresenta com uma mistura de austeridade e autoritarismo. Ele não bebe, não frequenta os prostíbulos com os outros vaqueiros. Mas o que o mundo exterior vê como disciplina, ele usa como mortalha para cobrir seus segredos, para nunca revelar quem ele realmente é.

Essa carapaça começa a se estilhaçar quando George se casa com Rose (Kirsten Dunst), dona de uma hospedaria e mãe de um adolescente, Peter (Kodi Smit-Mhee). Quando eles se mudam para o rancho, Phil enxerga nela um símbolo de construção familiar a ele negado. Seu descontento transforma-se em agressividade, sendo a humilhação seu único instrumento de interação, seu único traço de humanidade.

A direção extremamente segura e delicada de Jane Campion nunca deixa que "Ataque dos Cães" transborde pelos extremos. Ao lidar com um tema explosivo - a homossexualidade em uma época e lugar que o termo e suas implicações sequer eram discutidos -, ela materializa suas consequências tanto como descobertas quanto como símbolo de agem de um velho mundo para algo novo e desconhecido.

Para isso ela se concentra no relacionamento entre Phil e Peter, este um estranho ao ambiente bruto do "oeste selvagem". Fisicamente frágil, ele prova sua força ao não se dobrar ao escárnio e às provocações dos caubóis - a atmosfera homoerótica é sutil mas perene. Testemunhar em Peter tamanho conforto em sua própria pele faz com que Phil encare um espelho que até então ele manteve cuidadosamente cerrado.

powerdog jane - Netflix - Netflix
A diretora Jane Campion nas belíssimas locações de 'Ataque dos Cães'
Imagem: Netflix

"Ataque dos Cães" é também um triunfo do poder da sugestão. A certa altura, acompanhamos a trama sob o olhar de Peter, que testemunha, impávido em seu próprio mundo, a fragilidade crescente de sua mãe e o distanciamento omisso de seu padrasto. É também com ele que descobrimos o fantasma que assombra as lembranças de Phil.

Bronco Henry é um nome repetido à exaustão desde a primeira cena de "Ataque dos Cães". É um vaqueiro, morto há muito tempo, que aparentemente ensinou a Phil tudo que ele sabe sobre cabeças de gado, sobre montar um cavalo, sobre sobreviver no relento. Sobre o que seria um "homem de verdade".

Na mente de Phil, traduzida pela interpretação brilhante de Benedict Cumberbatch, seu modelo masculino há muito perdido é também o fantasma que ele precisa encarar para encontrar alguma paz - ou prosseguir com o tormento, seu e de terceiros. Essa dualidade faz de "Ataque dos Cães" um filme fascinante, emoldurado pela produção mais inebriante do ano. Também é, até o momento, o filme a ser batido no Oscar do ano que vem.