Contenido
‘La promesa de la imagen”, de Isabel Leñero
// ------------------------------------------------------------------------------------------------------------------------------- // PHOTOSWIPE
var initPhotoSwipeFromDOM = function(gallerySelector) {
// parse slide data (url, title, size ...) from DOM elements // (children of gallerySelector) var parseThumbnailElements = function(el) { var thumbElements = el.childNodes, numNodes = thumbElements.length, items = [], figureEl, linkEl, size, item;
for(var i = 0; i < numNodes; i++) {
figureEl = thumbElements[i]; //
// include only element nodes if(figureEl.nodeType !== 1) { continue; }
linkEl = figureEl.children[0]; // element
size = linkEl.getAttribute('data-size').split('x');
// create slide object item = { src: linkEl.getAttribute('href'), w: parseInt(size[0], 10), h: parseInt(size[1], 10) };
if(figureEl.children.length > 1) {
//
if(linkEl.children.length > 0) {
// thumbnail element, retrieving thumbnail url
item.msrc = linkEl.children[0].getAttribute('src');
}
item.el = figureEl; // save link to element for getThumbBoundsFn items.push(item); }
return items; };
// find nearest parent element var closest = function closest(el, fn) { return el && ( fn(el) ? el : closest(el.parentNode, fn) ); };
// triggers when user clicks on thumbnail var onThumbnailsClick = function(e) { e = e || window.event; e.preventDefault ? e.preventDefault() : e.returnValue = false;
var eTarget = e.target || e.srcElement;
// find root element of slide var clickedListItem = closest(eTarget, function(el) { return (el.tagName && el.tagName.toUpperCase() === 'FIGURE'); });
if(!clickedListItem) { return; }
// find index of clicked item by looping through all child nodes // alternatively, you may define index via data- attribute var clickedGallery = clickedListItem.parentNode, childNodes = clickedListItem.parentNode.childNodes, numChildNodes = childNodes.length, nodeIndex = 0, index;
for (var i = 0; i < numChildNodes; i++) { if(childNodes[i].nodeType !== 1) { continue; } if(childNodes[i] === clickedListItem) { index = nodeIndex; break; } nodeIndex++; } if(index >= 0) { // open PhotoSwipe if valid index found openPhotoSwipe( index, clickedGallery ); } return false; };
// parse picture index and gallery index from URL (#&pid=1&gid=2) var photoswipeParseHash = function() { var hash = window.location.hash.substring(1), params = {};
if(hash.length < 5) { return params; } var vars = hash.split('&'); for (var i = 0; i < vars.length; i++) { if(!vars[i]) { continue; } var pair = vars[i].split('='); if(pair.length < 2) { continue; } params[pair[0]] = pair[1]; } if(params.gid) { params.gid = parseInt(params.gid, 10); } return params; }; var openPhotoSwipe = function(index, galleryElement, disableAnimation, fromURL) { var pswpElement = document.querySelectorAll('.pswp')[0], gallery, options, items; items = parseThumbnailElements(galleryElement); // define options (if needed) options = { // define gallery index (for URL) galleryUID: galleryElement.getAttribute('data-pswp-uid'), getThumbBoundsFn: function(index) { // See Options -> getThumbBoundsFn section of documentation for more info var thumbnail = items[index].el.getElementsByTagName('img')[0], // find thumbnail pageYScroll = window.pageYOffset || document.documentElement.scrollTop, rect = thumbnail.getBoundingClientRect();
return {x:rect.left, y:rect.top + pageYScroll, w:rect.width}; }
};
// PhotoSwipe opened from URL if(fromURL) { if(options.galleryPIDs) { // parse real index when custom PIDs are used // http://photoswipe.com/documentation/faq.html#custom-pid-in-url for(var j = 0; j < items.length; j++) { if(items[j].pid == index) { options.index = j; break; } } } else { // in URL indexes start from 1 options.index = parseInt(index, 10) - 1; } } else { options.index = parseInt(index, 10); } // exit if index not found if( isNaN(options.index) ) { return; } if(disableAnimation) { options.showAnimationDuration = 0; } // Pass data to PhotoSwipe and initialize it gallery = new PhotoSwipe( pswpElement, PhotoSwipeUI_Default, items, options); gallery.init(); }; // loop through all gallery elements and bind events var galleryElements = document.querySelectorAll( gallerySelector ); for(var i = 0, l = galleryElements.length; i < l; i++) { galleryElements[i].setAttribute('data-pswp-uid', i+1); galleryElements[i].onclick = onThumbnailsClick; } // Parse URL and open gallery if it contains #&pid=3&gid=1 var hashData = photoswipeParseHash(); if(hashData.pid && hashData.gid) { openPhotoSwipe( hashData.pid , galleryElements[ hashData.gid - 1 ], true, true ); } }; // execute above function initPhotoSwipeFromDOM('.my-gallery'); // ====================================== // FIN SCRIPTS PHOTOSWIPE // ======================================
Apoyada siempre en la estructura visual de hojas, ramas y eventualmente algunos pétalos, la artista nacida en 1962 en la Ciudad de México ha construido un lenguaje que se basa en la deconstrucción de la realidad, la tensión de la mirada y la perplejidad del pensamiento.
Convencida de que la imagen pictórica es un territorio infinito de posibilidades que se impone y se expande a pesar de las modas artísticas –como el predominio del conceptualismo–, la también excelente dibujante se ha centrado en la luz, línea, mancha, volumen y gesto para desarrollar imágenes que se imponen por el contundente protagonismo de su propia pictoricidad.
Concebida como imágenes autónomas y no como un medio para narrar o representar, su pintura, después de haber transitado entre patrones repetitivos de formas florales y geométricas, lenguajes paisajísticos y la compleja búsqueda de presentar el silencio, ha alcanzado una seductora solidez que no sólo atrapa la luz sino también la mente y la mirada del espectador.
La intención creativa de Isabel Leñero es únicamente pictórica, su interés de crear espacios de contemplación no se relaciona con intereses espirituales, místicos o psicológicos. Y en eso radica precisamente lo fascinante de la propuesta, en crear imágenes que se imponen como entes independientes –o espacios posibles, como ella los define– en los que sólo existe el arte y la voluntad artística.
Un aspecto muy interesante en estos espacios posibles es la tensión visual. Trabajadas a partir de veladuras y manchas de sutiles cromatismos que logran chorrear o escurrir la luz, las imágenes son siempre intervenidas con gestos lineales que remiten a las estructuras esenciales de los elementos vegetales. Vigorosos y sin embargo delicados, los rayones se expanden y se enrollan en las composiciones rompiendo y al mismo tiempo reconstruyendo equilibrios.
Con vocabularios que a propósito oscilan entre la abstracción y la figuración, las formas son a la vez orgánicas, geométricas, tangibles y casi imperceptibles. Inmersas, emergiendo o flotando entre la luz, las formas de tonos intensos en colores verdes, ocres, negros, rojos o azules irrumpen evidenciando esa promesa que tiene la imagen cuando es reflexiva, sensible e inteligentemente pintura.
Dividida en un proyecto tripartita bajo el título de La promesa de la imagen, esta serie de pinturas y dibujos realizados por Isabel Leñero entre 2017 y 2019 se presenta en el Museo de Antropología de Xalapa con 32 pinturas, en el Museo de Arte de Sonora con 20 óleos, y en un libro editado por Rotar, Espejo de Obsidiana y el Museo Soumaya, que incluye dos recientes series dibujísticas.
Especialmente atractiva por la poética surrealista de vocabularios lineales y las excelentes atmósferas acuareladas, la serie Herbolario presenta interpretaciones de hojas, tallos, flores y otros vegetales que, con un movimiento constante entre rayones, estructuras geométricas y delicados tonos ocres y grises, manifiesta el interés de la artista por interpretar el tiempo.
Un tiempo paradójicamente atemporal que se convierte en un elemento esencial en la serie Síntesis. Creada a partir de siluetas pintadas en negro con una expresividad plana, gráfica y movimientos sugeridos, la serie parece apuntar a un nuevo inicio.
Este texto se publicó el 6 de octubre de 2019 en la edición 2240 de la revista Proceso
Comentarios
// Obtener todos los elementos con clase .col-md-12 var colElements = document.querySelectorAll('.col-md-12');
// Iterar sobre cada elemento colElements.forEach(function(element) { // Verificar si tiene un hijo inmediato con clase .titulo-region var tituloRegion = element.querySelector('.titulo-region');
if (tituloRegion) { // Agregar la clase .is-sticky al elemento padre element.classList.add('is-sticky'); } });
// Obtener el elemento article dentro de .fila-especial-v2 .p50 var articleElement = document.querySelector('.home .fila-especial-v2 .p50 article');
// Obtener el texto del elemento .z-foto .bajada p var bajadaText = articleElement.querySelector('.z-foto .bajada p').textContent;
// Crear un nuevo elemento para mostrar el texto obtenido var textoElement = document.createElement('p'); textoElement.textContent = bajadaText;
// Obtener el elemento .z-txt .titulo dentro del article var tituloElement = articleElement.querySelector('.z-txt .titulo');
// Insertar el nuevo elemento al final del article articleElement.appendChild(textoElement);
Cortesía de Proceso.
Dejanos un comentario: