diff --git a/4chan_x.js b/4chan_x.js index b857d88a9..1fd572de5 100644 --- a/4chan_x.js +++ b/4chan_x.js @@ -1915,14 +1915,6 @@ return _results; } }, - foo: function() { - var bodyWidth, formLeft; - formLeft = $('form[name=delform]').getBoundingClientRect().left; - bodyWidth = d.body.clientWidth; - imgExpand.cw = bodyWidth - formLeft; - imgExpand.ch = d.body.clientHeight; - return imgExpand.type = $('#imageType').value; - }, toggle: function(img) { var thumb; thumb = img.parentNode.firstChild; @@ -1947,25 +1939,30 @@ a.appendChild(img); return imgExpand.resize(img); }, + foo: function() { + imgExpand.formRight = $('form[name=delform]').getBoundingClientRect().right; + imgExpand.maxHeight = d.body.clientHeight; + return imgExpand.type = $('#imageType').value; + }, resize: function(img) { - var ch, cw, ih, iw, ratio, type, _, _ref2; - cw = imgExpand.cw, ch = imgExpand.ch, type = imgExpand.type; - _ref2 = $.x("preceding::span[@class][1]/text()[2]", img).textContent.match(/(\d+)x(\d+)/), _ = _ref2[0], iw = _ref2[1], ih = _ref2[2]; - iw = Number(iw); - ih = Number(ih); - cw = cw - img.getBoundingClientRect().left; + var formRight, imgHeight, imgWidth, maxHeight, maxWidth, ratio, type, _, _ref2; + formRight = imgExpand.formRight, maxHeight = imgExpand.maxHeight, type = imgExpand.type; + _ref2 = $.x("preceding::span[@class][1]/text()[2]", img).textContent.match(/(\d+)x(\d+)/), _ = _ref2[0], imgWidth = _ref2[1], imgHeight = _ref2[2]; + imgWidth = Number(imgWidth); + imgHeight = Number(imgHeight); + maxWidth = formRight - img.getBoundingClientRect().left; switch (type) { case 'full': return img.removeAttribute('style'); case 'fit width': - if (iw > cw) { - return img.style.width = cw; + if (imgWidth > maxWidth) { + return img.style.width = maxWidth; } break; case 'fit screen': - ratio = Math.min(cw / iw, ch / ih); + ratio = Math.min(maxWidth / imgWidth, maxHeight / imgHeight); if (ratio < 1) { - return img.style.width = Math.floor(ratio * iw); + return img.style.width = Math.floor(ratio * imgWidth); } } }, diff --git a/script.coffee b/script.coffee index d0c1ae68a..ddec01074 100644 --- a/script.coffee +++ b/script.coffee @@ -1448,13 +1448,6 @@ imgExpand = for img in $$ 'img[md5] + img' imgExpand.resize img - foo: -> - formLeft = $('form[name=delform]').getBoundingClientRect().left - bodyWidth = d.body.clientWidth - imgExpand.cw = bodyWidth - formLeft - imgExpand.ch = d.body.clientHeight - imgExpand.type = $('#imageType').value - toggle: (img) -> thumb = img.parentNode.firstChild imgExpand.foo() @@ -1476,26 +1469,32 @@ imgExpand = imgExpand.resize img - resize: (img) -> - {cw, ch, type} = imgExpand - [_, iw, ih] = - $.x("preceding::span[@class][1]/text()[2]", img) - .textContent.match(/(\d+)x(\d+)/) - iw = Number iw - ih = Number ih + foo: -> + imgExpand.formRight = $('form[name=delform]').getBoundingClientRect().right + imgExpand.maxHeight = d.body.clientHeight + imgExpand.type = $('#imageType').value - cw = cw - img.getBoundingClientRect().left + resize: (img) -> + {formRight, maxHeight, type} = imgExpand + [_, imgWidth, imgHeight] = $ + .x("preceding::span[@class][1]/text()[2]", img) + .textContent.match(/(\d+)x(\d+)/) + imgWidth = Number imgWidth + imgHeight = Number imgHeight + + # from image's left bound to form's right bound + maxWidth = formRight - img.getBoundingClientRect().left switch type when 'full' img.removeAttribute 'style' when 'fit width' - if iw > cw - img.style.width = cw + if imgWidth > maxWidth + img.style.width = maxWidth when 'fit screen' - ratio = Math.min cw/iw, ch/ih + ratio = Math.min maxWidth/imgWidth, maxHeight/imgHeight if ratio < 1 - img.style.width = Math.floor ratio * iw + img.style.width = Math.floor ratio * imgWidth dialog: -> controls = $.el 'div',