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

Mário Zanini Pintor, decorador, ceramista, gravador e professor

10/09 /1907, São Paulo (SP)

16/08/1971, São Paulo (SP)

Da Página 3 Pedagogia & Comunicação

20/08/2005 08h44

Mário Zanini sempre atribuiu grande importância ao embasamento técnico e artesanal de sua obra e ao trabalho constante, na conquista de uma linguagem figurativa pessoal. A temática de obra apresenta uma preocupação social, surgida de uma vivência tipicamente suburbana na cidade de São Paulo.

Zanini iniciou seus estudos de pintura em 1920, na Escola Profissional Masculina do Brás, posteriormente, freqüentou o curso noturno de desenho e artes no Liceu de Artes e Ofícios de São Paulo. No final da década de 1920 conheceu Alfredo Volpi e freqüentou o ateliê de Georg Elpons. Em 1933, ou a trabalhar com Francisco Rebolo, em pintura de interiores.

Na segunda metade da década de 1930, participou da formação do Grupo Santa Helena, do Sindicato dos Artistas Plásticos de São Paulo e do grupo Família Artística Paulista. Em 1939 já era um pintor bastante elogiado pela crítica. Sua primeira exposição individual aconteceu em 1944 na Galeria da Livraria Brasiliense. No mesmo ano suas obras foram exibidas em Londres e em Norwich (Inglaterra).

Entre 1940 e 1958, a convite de Rossi Osir, trabalhou na Osirarte, ateliê especializado na arte do azulejo. Em 1950 viajou à Europa ma companhia de Rossi Osir e Alfredo Volpi. No ano seguinte freqüentou o ateliê de Bruno Giorgi, onde se dedicou à cerâmica. Em 1958 esteve no ateliê de Ângelo e João Simeone e deu aulas de gravura na Associação Paulista de Belas Artes e na Escola Carlos de Campos.

Em 1961 expôs 81 pinturas na Casa do Artista Plástico de São Paulo. Em 1968 foi contratado como professor de xilogravura pela Faculdade de Belas Artes de São Paulo. Faleceu em 1971, aos 64 anos.