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

Pinturas feitas à mão hipnotizam na arte de estampas de Calu Fontes

A artista Calu Fontes de São Paulo - Caue Diniz/Divulgação
A artista Calu Fontes de São Paulo
Imagem: Caue Diniz/Divulgação

Carol Scolforo

Colaboração para Nossa

18/05/2020 04h00

Calu Fontes

Calu Fontes

QUEM É

Artista e empresária por trás da marca homônima Calu Fontes, formada em arquitetura, a vida de artista é "trabalho, trabalho, trabalho, pesquisa e muita paixão”

As vozes poderosas de Nina Simone, de Caetano e dos arinhos são no momento as únicas companhias no ateliê da artista Calu Fontes, em Pinheiros, São Paulo. As portas podem estar fechadas, mas ali dentro sua arte pulsa criativa, embora solitária nesses tempos.

Há 17 anos ela produz efusivamente - seus desenhos estampam cerâmicas, vidros, papel de parede, roupa de cama e o que mais vier por aí, inclusive em parceria com grandes marcas. "Mas são os azulejos que vêm à cabeça de todo mundo primeiro", conta, sorrindo.

A pintura à mão se mistura a decalques em criações que falam de brasilidade, de mar, de natureza e nostalgia. "Mesmo com o ateliê fechado, estou trabalhando mais do que sempre. Quando estamos angustiados, a pintura ajuda demais a desfocar", diz ela, que pinta tudo sozinha.

Tenho uma necessidade diária de pintar. Com a quarentena percebi o quanto isso me faz bem."

Inspirada pela natureza

Calu Fontes - Divulgação - Divulgação
Calu se inspira na paz que encontra no jardim, que tem bananeiras, pitangueiras e uma jaqueira
Imagem: Divulgação

Nesses dias têm surgido peças que remetem ao começo da carreira, com pinceladas a bico de pena, formas geométricas e coloridas, além do dourado - um resultado que leva diversas queimas, feitas ali mesmo no forno do ateliê. A inspiração vem da paz que encontra no jardim, que tem bananeiras, pitangueiras e uma jaqueira.

"Só de ar pelo verde, já entro no clima. Desligo o lado racional, ligo uma música e trabalho", diz ela, que vem de família baiana. Os bowls têm sido os itens mais recorrentes entre as porcelanas garimpadas que chegam ao endereço. Depois, ela pinta e faz até quatro queimas a um calor que chega a 850 graus.

Arte aberta a experimentações

Calu Fontes - Caue Diniz/Divulgação - Caue Diniz/Divulgação
Calu tem planos de uma exposição futuramente com suas obras
Imagem: Caue Diniz/Divulgação

Calu, que é Carolina no papel, ama experimentações. Antes da pandemia, se preparava para lançar um livro com criações inéditas. Tudo parou e esse sonho ficou adiado. Entre os planos está uma exposição. A inquietude é imensa, principalmente se derem a ela materiais novos.

"Essa dinâmica de trabalhar com diferentes superfícies é muito rica e inspiradora. Pra mim, inspiração vem de viagens, de ter contato com novas culturas, de cursos e de abrir a cabeça para as ideias aparecerem", diz. Deve ser por isso que elas se multiplicam sem parar, na cabeça e nas mãos dos brasileiros